%%cpp -d #include #include #include #include "TUnfoldBinningXML.h" #include using std::ofstream; TFile *binningSchemes=new TFile("testUnfold5_binning.root","recreate"); #define NBIN_PT_FINE 8 #define NBIN_ETA_FINE 10 #define NBIN_DISCR 4 #define NBIN_PT_COARSE 3 #define NBIN_ETA_COARSE 3 Double_t ptBinsFine[NBIN_PT_FINE+1]= {3.5,4.0,4.5,5.0,6.0,7.0,8.0,10.0,13.0}; Double_t ptBinsCoarse[NBIN_PT_COARSE+1]= { 4.0, 5.0, 7.0, 10.0}; Double_t etaBinsFine[NBIN_ETA_FINE+1]= {-3.,-2.5,-2.0,-1.,-0.5,0.0,0.5,1.,2.,2.5,3.}; Double_t etaBinsCoarse[NBIN_ETA_COARSE+1]= { -2.0, -0.5, 0.5, 2. }; Double_t discrBins[NBIN_DISCR+1]={0.,0.15,0.5,0.85,1.0}; TUnfoldBinning *detectorBinning=new TUnfoldBinning("detector"); TUnfoldBinning *detectorDistribution= detectorBinning->AddBinning("detectordistribution"); detectorDistribution->AddAxis("pt",NBIN_PT_FINE,ptBinsFine, false, // no underflow bin (not reconstructed) true // overflow bin ); detectorDistribution->AddAxis("eta",NBIN_ETA_FINE,etaBinsFine, false, // no underflow bin (not reconstructed) false // no overflow bin (not reconstructed) ); detectorDistribution->AddAxis("discriminator",NBIN_DISCR,discrBins, false, // no underflow bin (empty) false // no overflow bin (empty) ); /* TUnfoldBinning *detectorExtra= detectorBinning->AddBinning("detectorextra",7,"one;zwei;three"); detectorBinning->PrintStream(cout); */ TUnfoldBinning *generatorBinning=new TUnfoldBinning("generator"); TUnfoldBinning *signalBinning = generatorBinning->AddBinning("signal"); signalBinning->AddAxis("ptgen",NBIN_PT_COARSE,ptBinsCoarse, true, // underflow bin true // overflow bin ); signalBinning->AddAxis("etagen",NBIN_ETA_COARSE,etaBinsCoarse, true, // underflow bin true // overflow bin ); TF2 *userFunc=new TF2("userfunc","1./x+0.2*y^2",ptBinsCoarse[0], ptBinsCoarse[NBIN_PT_COARSE], etaBinsCoarse[0],etaBinsCoarse[NBIN_ETA_COARSE]); signalBinning->SetBinFactorFunction(1.0,userFunc); TUnfoldBinning *bgrBinning = generatorBinning->AddBinning("background"); bgrBinning->AddAxis("ptrec",NBIN_PT_FINE,ptBinsFine, false, // no underflow bin (not reconstructed) true // overflow bin ); bgrBinning->AddAxis("etarec",NBIN_ETA_FINE,etaBinsFine, false, // no underflow bin (not reconstructed) false // no overflow bin (not reconstructed) ); generatorBinning->PrintStream(cout); detectorBinning->Write(); generatorBinning->Write(); ofstream xmlOut("testUnfold5binning.xml"); TUnfoldBinningXML::ExportXML(*detectorBinning,xmlOut,kTRUE,kFALSE); TUnfoldBinningXML::ExportXML(*generatorBinning,xmlOut,kFALSE,kTRUE); TUnfoldBinningXML::WriteDTD(); xmlOut.close(); delete binningSchemes; gROOT->GetListOfCanvases()->Draw()