void printCutflowData(string s) { TFile* f = TFile::Open(s.c_str()); TList * AllKeys=f->GetListOfKeys(); int NKeys = AllKeys->GetEntries(); //cout << NKeys << endl; TIter next(AllKeys); TKey *key; vector<TKey* > cutflowKeys; for(int i =0 ; i < NKeys ; i++) { key=(TKey*)next(); string name = key->GetTitle(); if(name.find("CutFlow") != std::string::npos) { cutflowKeys.push_back(key); //cout << name << endl; } } TCanvas * c1 = new TCanvas; TH1F *h = (TH1F*)cutflowKeys[0]->ReadObj(); for(int i=1; i<cutflowKeys.size();i++) { TH1F *temp = (TH1F*)cutflowKeys[i]->ReadObj(); h->Add(temp); } int Ndecimals = 2; enum CutEnum { NxAOD=0, NDxAOD=1, ALLEVTS=2, DUPLICATE=3, TRIGGER=4, GRL=5, DQ=6, VERTEX=7, TWO_LOOSE_GAM=8, AMBIGUITY=9, TRIG_MATCH=10, GAM_TIGHTID=11, GAM_ISOLATION=12, RELPTCUTS=13, MASSCUT=14, PASSALL=15 }; TString format(" %-24s%10."); format+=Ndecimals; format+="f%11.2f%%%11.2f%%\n"; int all_bin = h->FindBin(ALLEVTS); printf(" %-24s%10s%12s%12s\n","Event selection","Nevents","Cut rej.","Tot. eff."); for (int bin=1;bin<=h->GetNbinsX();++bin) { double ntot=h->GetBinContent(all_bin), n=h->GetBinContent(bin), nprev=h->GetBinContent(bin-1); TString cutName(h->GetXaxis()->GetBinLabel(bin)); cutName.ReplaceAll("#it{m}_{#gamma#gamma}","m_yy"); if (bin==1||nprev==0||n==nprev) printf(format.Data(),cutName.Data(),n,-1e-10,n/ntot*100); else // if the cut does something, print more information printf(format.Data(),cutName.Data(),n,(n-nprev)/nprev*100,n/ntot*100); } }
void AddTask_GammaConvDalitzV1_pp( Int_t trainConfig = 1, //change different set of cuts Bool_t isMC = kFALSE, //run MC TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input Int_t enableMatBudWeightsPi0 = 0, // 1 = three radial bins, 2 = 10 radial bins TString filenameMatBudWeights = "MCInputFileMaterialBudgetWeights.root" ) { Int_t isHeavyIon = 0; // ================== GetAnalysisManager =============================== AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { Error(Form("AddTask_GammaConvDalitzV1_%i",trainConfig), "No analysis manager found."); return ; } // ================== GetInputEventHandler ============================= AliVEventHandler *inputHandler=mgr->GetInputEventHandler(); //========= Add PID Reponse to ANALYSIS manager ==== if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C"); AddTaskPIDResponse(isMC); } //========= Set Cutnumber for V0Reader ================================ //TString cutnumber = "00000000000840010015000000"; TString cutnumberPhoton = "06000008400100007500000000"; TString cutnumberEvent = "00000103"; AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer(); //========= Add V0 Reader to ANALYSIS manager if not yet existent ===== TString V0ReaderName = Form("V0ReaderV1_%s_%s",cutnumberEvent.Data(),cutnumberPhoton.Data()); if( !(AliV0ReaderV1*)mgr->GetTask(V0ReaderName.Data()) ){ AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1(V0ReaderName.Data()); fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE); fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output fV0ReaderV1->SetUseAODConversionPhoton(kTRUE); AliConvEventCuts *fEventCuts=NULL; if(cutnumberEvent!=""){ fEventCuts= new AliConvEventCuts(cutnumberEvent.Data(),cutnumberEvent.Data()); fEventCuts->SetPreSelectionCutFlag(kTRUE); fEventCuts->SetV0ReaderName(V0ReaderName); if(fEventCuts->InitializeCutsFromCutString(cutnumberEvent.Data())){ fV0ReaderV1->SetEventCuts(fEventCuts); fEventCuts->SetFillCutHistograms("",kTRUE); } } // Set AnalysisCut Number AliConversionPhotonCuts *fCuts=NULL; if(cutnumberPhoton!=""){ fCuts= new AliConversionPhotonCuts(cutnumberPhoton.Data(),cutnumberPhoton.Data()); fCuts->SetPreSelectionCutFlag(kTRUE); fCuts->SetIsHeavyIon(isHeavyIon); fCuts->SetV0ReaderName(V0ReaderName); if(fCuts->InitializeCutsFromCutString(cutnumberPhoton.Data())){ fV0ReaderV1->SetConversionCuts(fCuts); fCuts->SetFillCutHistograms("",kTRUE); } } if(inputHandler->IsA()==AliAODInputHandler::Class()){ // AOD mode fV0ReaderV1->AliV0ReaderV1::SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data())); } fV0ReaderV1->Init(); AliLog::SetGlobalLogLevel(AliLog::kInfo); //connect input V0Reader mgr->AddTask(fV0ReaderV1); mgr->ConnectInput(fV0ReaderV1,0,cinput); } if( !(AliDalitzElectronSelector*)mgr->GetTask("ElectronSelector") ){ AliDalitzElectronSelector *fElectronSelector = new AliDalitzElectronSelector("ElectronSelector"); //ConfigV0ReaderV1(fV0ReaderV1,ConvCutnumber,IsHeavyIon); // Set AnalysisCut Number AliDalitzElectronCuts *fElecCuts=0; TString ElecCuts = "30105400000003300000"; if( ElecCuts!=""){ fElecCuts= new AliDalitzElectronCuts(ElecCuts.Data(),ElecCuts.Data()); if(fElecCuts->InitializeCutsFromCutString(ElecCuts.Data())){ fElectronSelector->SetDalitzElectronCuts(fElecCuts); fElecCuts->SetFillCutHistograms("",kTRUE); } } fElectronSelector->Init(); mgr->AddTask(fElectronSelector); //connect input fElectronSelector mgr->ConnectInput (fElectronSelector,0,cinput); } //================================================ //========= Add task to the ANALYSIS manager ===== // find input container AliAnalysisTaskGammaConvDalitzV1 *task=NULL; task= new AliAnalysisTaskGammaConvDalitzV1(Form("GammaConvDalitzV1_%i",trainConfig)); task->SetIsHeavyIon(0); task->SetIsMC(isMC); task->SetV0ReaderName(V0ReaderName); CutHandlerConvDalitz cuts; if(trainConfig == 1){ cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253202221710"); // standard cut number for pp7TeV cuts.AddCut("00000113", "00200009360300007800004000", "0163103100900000", "20475400253202221710"); // train configs 2 to 4 for estimation of systematics of standard cut number pp7TeV } else if (trainConfig == 2) { cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "10475400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "30475400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253201221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253203221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253202121710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253202321710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253302221710"); } else if (trainConfig == 3) { cuts.AddCut("00000113", "00200009360300007900004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300007200004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300007100004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300001800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300002800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200049360300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200019360300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20475400253202222710"); } else if (trainConfig == 4) { cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20575400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20775400253202221710"); cuts.AddCut("00000113", "00200009260300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009660300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20425400253202221710"); cuts.AddCut("00000113", "00200009360300007800004000", "0263103100900000", "20407200253202221710"); cuts.AddCut("00000113", "00200009320300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00000113", "00200009305100007800004000", "0263103100900000", "20475400253202221710"); } else if (trainConfig == 102) { cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "10475400253202221710"); cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "30475400253202221710"); cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "20475400253201221710"); cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "20475400253203221710"); cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "20475400253202121710"); cuts.AddCut("00010113", "00200009360300007800004000", "0263103100900000", "20475400253202321710"); } else if (trainConfig == 103) { cuts.AddCut("00010113", "00200009266300008854404000", "0263103100900000", "20475400253202321710"); cuts.AddCut("00010113", "00200009266300008854404000", "0263103100900000", "20475400253202301710"); } else if (trainConfig == 104) { // to be used with MBW cuts.AddCut("00010113", "00200009266300008854404000", "0263103100900000", "20475400253202321710"); cuts.AddCut("00010113", "00200009266300008854404000", "0263103100900000", "20475400253202301710"); } else if (trainConfig == 202) { cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "20475400253202221710"); cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "10475400253202221710"); cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "30475400253202221710"); cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "20475400253201221710"); cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "20475400253203221710"); cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "20475400253202121710"); cuts.AddCut("00074113", "00200009360300007800004000", "0263103100900000", "20475400253202321710"); } else { Error(Form("GammaConvV1_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration"); return; } if(!cuts.AreValid()){ cout << "\n\n****************************************************" << endl; cout << "ERROR: No valid cuts stored in CutHandlerConvDalitz! Returning..." << endl; cout << "****************************************************\n\n" << endl; return; } Int_t numberOfCuts = cuts.GetNCuts(); TList *EventCutList = new TList(); TList *ConvCutList = new TList(); TList *MesonCutList = new TList(); TList *ElecCutList = new TList(); TList *HeaderList = new TList(); TObjString *Header2 = new TObjString("BOX"); HeaderList->Add(Header2); EventCutList->SetOwner(kTRUE); AliConvEventCuts **analysisEventCuts = new AliConvEventCuts*[numberOfCuts]; ConvCutList->SetOwner(kTRUE); AliConversionPhotonCuts **analysisCuts = new AliConversionPhotonCuts*[numberOfCuts]; MesonCutList->SetOwner(kTRUE); AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts]; ElecCutList->SetOwner(kTRUE); AliDalitzElectronCuts **analysisElecCuts = new AliDalitzElectronCuts*[numberOfCuts]; Bool_t initializedMatBudWeigths_existing = kFALSE; for(Int_t i = 0; i<numberOfCuts; i++){ TString cutName( Form("%s_%s_%s_%s",(cuts.GetEventCut(i)).Data(),(cuts.GetPhotonCut(i)).Data(),(cuts.GetElecCut(i)).Data(),(cuts.GetMesonCut(i)).Data() ) ); analysisEventCuts[i] = new AliConvEventCuts(); analysisEventCuts[i]->SetV0ReaderName(V0ReaderName); analysisEventCuts[i]->InitializeCutsFromCutString((cuts.GetEventCut(i)).Data()); EventCutList->Add(analysisEventCuts[i]); analysisEventCuts[i]->SetFillCutHistograms("",kFALSE); analysisCuts[i] = new AliConversionPhotonCuts(); if (enableMatBudWeightsPi0 > 0){ if (isMC > 0){ if (analysisCuts[i]->InitializeMaterialBudgetWeights(enableMatBudWeightsPi0,filenameMatBudWeights)){ initializedMatBudWeigths_existing = kTRUE;} else {cout << "ERROR The initialization of the materialBudgetWeights did not work out." << endl;} } else {cout << "ERROR 'enableMatBudWeightsPi0'-flag was set > 0 even though this is not a MC task. It was automatically reset to 0." << endl;} } analysisCuts[i]->SetV0ReaderName(V0ReaderName); analysisCuts[i]->InitializeCutsFromCutString((cuts.GetPhotonCut(i)).Data()); ConvCutList->Add(analysisCuts[i]); analysisCuts[i]->SetFillCutHistograms("",kFALSE); analysisMesonCuts[i] = new AliConversionMesonCuts(); analysisMesonCuts[i]->InitializeCutsFromCutString((cuts.GetMesonCut(i)).Data()); MesonCutList->Add(analysisMesonCuts[i]); analysisMesonCuts[i]->SetFillCutHistograms(""); analysisElecCuts[i] = new AliDalitzElectronCuts(); analysisElecCuts[i]->InitializeCutsFromCutString((cuts.GetElecCut(i)).Data()); ElecCutList->Add(analysisElecCuts[i]); analysisElecCuts[i]->SetFillCutHistograms("",kFALSE,cutName); analysisEventCuts[i]->SetAcceptedHeader(HeaderList); } task->SetEventCutList(numberOfCuts,EventCutList); task->SetConversionCutList(numberOfCuts,ConvCutList); task->SetMesonCutList(MesonCutList); task->SetElectronCutList(ElecCutList); task->SetMoveParticleAccordingToVertex(kTRUE); if (initializedMatBudWeigths_existing) { task->SetDoMaterialBudgetWeightingOfGammasForTrueMesons(kTRUE); } //task->SetDoMesonAnalysis(kTRUE); //if (enableQAMesonTask) task->SetDoMesonQA(kTRUE); //Attention new switch for Pi0 QA //if (enableQAMesonTask) task->SetDoPhotonQA(kTRUE); //Attention new switch small for Photon QA //connect containers AliAnalysisDataContainer *coutput = mgr->CreateContainer(Form("GammaConvDalitzV1_%i",trainConfig), TList::Class(), AliAnalysisManager::kOutputContainer,Form("GammaConvDalitzV1_%i.root",trainConfig)); mgr->AddTask(task); mgr->ConnectInput(task,0,cinput); mgr->ConnectOutput(task,1,coutput); return; }