The best is to start with an example. So, build and run the inlib histo.cpp example with :
cd <path to inlib> cd examples/cpp c++ -I../.. histo.cpp ./a.out and on Windows : DOS> <setup VisualC++> DOS> CL.exe /I..\.. /GX /GR histo.cpp DOS> histo.exe
Simple, straight. And the same with the fit example. In the directory, can be found also a "build" shell script to have less typing (well there is no build.bat yet for Windows) :
cd <path to inlib> cd examples/cpp ./build histo.cpp ./inlib_example_histo
You can have a look to histo.cpp and see that the code is rather simple and easy to customize...
// Copyright (C) 2010, Guy Barrand. All rights reserved. // See the file inlib.license for terms. #include <inlib/histo/h1d> #include <inlib/histo/h2d> #include <inlib/histo/p1d> #include <inlib/histo/sliced> #include <inlib/random> #include <iostream> int main(int argc,char** argv) { bool print = true; if(argc==2) { std::string s = argv[1]; if(s=="-noprint") print = false; } unsigned int entries = 1000000; { inlib::random::gauss rg(1,2); inlib::histo::h1d h("Gauss",100,-5,5); for(unsigned int count=0;count<entries;count++) { h.fill(rg.shoot(),1.4); } if(print) h.hprint(std::cout); //std::cout << " mean " << h.mean() << ", rms " << h.rms() << std::endl; } { inlib::random::bw rbw(0,1); inlib::histo::h1d h("BW",100,-5,5); for(unsigned int count=0;count<entries;count++) { h.fill(rbw.shoot(),2.3); } if(print) h.hprint(std::cout); } { inlib::random::gauss rg(1,2); inlib::random::bw rbw(0,1); inlib::histo::p1d h("Profile",100,-5,5,-2,2); for(unsigned int count=0;count<entries;count++) { h.fill(rg.shoot(),rbw.shoot(),1); } if(print) h.hprint(std::cout); } { inlib::random::gauss rg(1,2); inlib::random::bw rbw(0,1); inlib::histo::h2d histogram("Gauss_BW",100,-5,5,100,-2,2); for(unsigned int count=0;count<entries;count++) { histogram.fill(rg.shoot(),rbw.shoot(),0.8); } if(print) histogram.hprint(std::cout); { inlib::histo::h1d* projection = inlib::histo::projection_x(histogram,"SliceX"); if(!projection) return -1; projection->set_title("Gauss_BW_projectionX"); if(print) projection->hprint(std::cout); delete projection; } { inlib::histo::h1d* projection = inlib::histo::projection_y(histogram,"SliceY"); if(!projection) return -1; projection->set_title("Gauss_BW_projectionY"); if(print) projection->hprint(std::cout); delete projection; } { inlib::histo::h1d* slice = inlib::histo::slice_x(histogram,40,60,"SliceX"); if(!slice) return -1; slice->set_title("Gauss_BW_sliceX"); if(print) slice->hprint(std::cout); delete slice; } { inlib::histo::h1d* slice = inlib::histo::slice_x(histogram, inlib::histo::axis<double>::UNDERFLOW_BIN, inlib::histo::axis<double>::UNDERFLOW_BIN,"SliceX"); if(!slice) return -1; slice->set_title("Gauss_BW_sliceX_UNDER"); if(print) slice->hprint(std::cout); delete slice; } { inlib::histo::h1d* slice = inlib::histo::slice_x(histogram, inlib::histo::axis<double>::OVERFLOW_BIN, inlib::histo::axis<double>::OVERFLOW_BIN,"SliceX"); if(!slice) return -1; slice->set_title("Gauss_BW_sliceX_OVER"); if(print) slice->hprint(std::cout); delete slice; } { inlib::histo::h1d* slice = inlib::histo::slice_y(histogram,30,50,"SliceY"); if(!slice) return -1; slice->set_title("Gauss_BW_sliceY"); if(print) slice->hprint(std::cout); delete slice; } { using namespace inlib::histo; //playing with namespaces. h1d* slice = slice_y(histogram, axis<double>::UNDERFLOW_BIN, axis<double>::UNDERFLOW_BIN,"SliceY"); if(!slice) return -1; slice->set_title("Gauss_BW_sliceY_UNDER"); if(print) slice->hprint(std::cout); delete slice; } { namespace tools = inlib::histo; //playing with namespaces. tools::h1d* slice = slice_y(histogram, tools::axis<double>::OVERFLOW_BIN, tools::axis<double>::OVERFLOW_BIN,"SliceY"); if(!slice) return -1; slice->set_title("Gauss_BW_sliceY_OVER"); if(print) slice->hprint(std::cout); delete slice; } } return 0; }