%%cpp -d #include #include #include #include #include #include #include "TUnfoldBinningXML.h" using std::cout, std::vector, std::map, std::setw; void PrintBinMap(TUnfoldBinning *binning,const char * where, const Int_t *binMap); %%cpp -d void PrintBinMap(TUnfoldBinning *binning,const char * where, const Int_t *binMap) { cout<<"\n"<GetEndBin()+1;i++) { cout<GetEndBin()+1;i++) { cout< > destBin; for(int i=0;iGetEndBin()+1;i++) { destBin[binMap[i]].push_back(i); } bool printed=false; for(map >::const_iterator i=destBin.begin();i!=destBin.end();i++) { if((*i).first>=0) { if(!printed) { cout<<"\ndest |contributing bins\n" <<"=====+======================================\n"; printed=true; } for(size_t j=0;j<(*i).second.size();j++) { cout<GetBinName((*i).second[j])<<"\n"; } cout<<"=====+======================================\n"; } } } TDOMParser parser; ofstream dtdFile("tunfoldbinning.dtd"); TUnfoldBinningXML::WriteDTD(dtdFile); dtdFile.close(); TString dir = gSystem->UnixPathName(gSystem->GetDirName(__FILE__)); Int_t error=parser.ParseFile(dir+"/testUnfold6binning.xml"); if(error) cout<<"error="<PrintStream(cout); Int_t *binMap = binning->CreateEmptyBinMap(); PrintBinMap(binning,"CreateEmptyBinMap",binMap); TUnfoldBinning const *branch1 = binning->FindNode("branch1"); branch1->FillBinMap1D(binMap,"y[C]",2); PrintBinMap(binning,"branch1->FillBinMap1D(...,\"y[C]\",...,2)",binMap); delete [] binMap; binMap = binning->CreateEmptyBinMap(); TUnfoldBinning const *branch2=binning->FindNode("branch2"); branch2->FillBinMap1D(binMap,"x[C]",7); PrintBinMap(binning,"branch2->FillBinMap1D(...,\"x[C]\",...,7)",binMap); delete [] binMap; binMap = binning->CreateEmptyBinMap(); binning->FillBinMap1D(binMap,"y[C]",1); PrintBinMap(binning,"binning->FillBinMap1D(...,\"y[C]\",...,1)",binMap); binning->ExportXML("testUnfold6.out.xml"); delete [] binMap; } gROOT->GetListOfCanvases()->Draw()