From: snelling Date: Fri, 13 Feb 2009 13:57:27 +0000 (+0000) Subject: combined local and PROOF analysis into one macro X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=d00947f5e9dec07a569855c0c28495771ff6526f;p=u%2Fmrichter%2FAliRoot.git combined local and PROOF analysis into one macro --- diff --git a/PWG2/FLOW/macros/runAliAnalysisTaskFlow.C b/PWG2/FLOW/macros/runAliAnalysisTaskFlow.C index e3e56186443..25205d04805 100644 --- a/PWG2/FLOW/macros/runAliAnalysisTaskFlow.C +++ b/PWG2/FLOW/macros/runAliAnalysisTaskFlow.C @@ -1,38 +1,43 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// HOW TO USE THIS MACRO: -// -// With this macro several flow analysis can be run. -// SP = Scalar Product (for PbPb or pp) -// LYZ1 = Lee Yang Zeroes first run (for PbPb) -// LYZ2 = Lee Yang Zeroes second run (for PbPb) -// LYZEP = Lee Yang Zeroes Event Plane (for PbPb) -// GFC = Generating Function Cumulants (for PbPb) -// QC = Q-cumulants (for PbPb) -// FQD = Fitting q-distribution (for PbPb) -// MCEP = Flow calculated from the real MC event plane (for PbPb only!) -// -// The LYZ analysis should be done in the following order; -// LYZ1 -> LYZ2 -> LYZEP, -// because LYZ2 depends on the outputfile of LYZ1 and LYZEP on the outputfile -// of LYZ2. -// -// The MCEP method is a reference method. -// It can only be run when MC information (kinematics.root & galice.root file) is available -// in which the reaction plane is stored. -// -// One can run on ESD, AOD or MC. -// Additional options are ESDMC0, ESDMC1. In these options the ESD and MC -// information is combined. Tracks are selected in the ESD, the PID information -// is taken from the MC (perfect PID). For ESDMC0 the track kinematics is taken -// from the ESD and for ESDMC1 it is taken from the MC information. -// -/////////////////////////////////////////////////////////////////////////////////// - +///////////////////////////////////////////////////////////////////////////////// +// +// HOW TO USE THIS MACRO: +// +// With this macro several flow analysis can be run. +// SP = Scalar Product (for PbPb or pp) +// LYZ1 = Lee Yang Zeroes first run (for PbPb) +// LYZ2 = Lee Yang Zeroes second run (for PbPb) +// LYZEP = Lee Yang Zeroes Event Plane (for PbPb) +// GFC = Cumulants (for PbPb) +// QC = Q-cumulants (for PbPb or pp) +// FQD = Fitting q-distribution (for PbPb) +// MCEP = Flow calculated from the real MC event plane (for PbPb only) +// +// The LYZ analysis should be done in the following order; +// LYZ1 -> LYZ2 -> LYZEP, +// because LYZ2 depends on the outputfile of LYZ1 and LYZEP on the outputfile +// of LYZ2. +// +// The MCEP method is a reference method. +// It can only be run when MC information (kinematics.root & galice.root file) +// is available in which the reaction plane is stored. +// +// One can run on ESD, AOD or MC. +// Additional options are ESDMC0, ESDMC1. In these options the ESD and MC +// information is combined. Tracks are selected in the ESD, the PID information +// is taken from the MC (perfect PID). For ESDMC0 the track kinematics is taken +// from the ESD and for ESDMC1 it is taken from the MC information. +// +// the macro can be used to run local in aliroot or root, on the grid and on caf +/////////////////////////////////////////////////////////////////////////////////// -// SETTING THE ANALYSIS +enum anaModes {mLocal, mLocalPAR,mPROOF,mGRID}; +//mLocal: Analyze locally files in your computer using aliroot +//mLocalPAR: Analyze locally files in your computer using root + PAR files +//mPROOF: Analyze CAF files with PROOF -// Flow analysis methods can be: (set to kTRUE or kFALSE) +// RUN SETTINGS + +// Flow analysis method can be:(set to kTRUE or kFALSE) Bool_t SP = kTRUE; Bool_t LYZ1 = kTRUE; Bool_t LYZ2 = kFALSE; @@ -42,21 +47,19 @@ Bool_t QC = kTRUE; Bool_t FQD = kTRUE; Bool_t MCEP = kTRUE; - -// Type of analysis can be: -// ESD, AOD, MC, ESDMC0, ESDMC1 +// Analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1 const TString type = "ESD"; // Boolean to fill/not fill the QA histograms -Bool_t QA = kFALSE; +Bool_t QA = kFALSE; - -// WEIGHTS SETTINGS: -// to use weigths for the Q vector +// Weights +//Use weights for Q vector Bool_t usePhiWeights = kFALSE; //Phi Bool_t usePtWeights = kFALSE; //v'(pt) Bool_t useEtaWeights = kFALSE; //v'(eta) -Bool_t useWeights = usePhiWeights||usePtWeights||usePtWeights; +Bool_t useWeights = usePhiWeights||usePtWeights||useEtaWeights; + // SETTING THE CUTS @@ -86,97 +89,48 @@ const Int_t PDG2 = 211; const Int_t minclustersTPC2 = 50; const Int_t maxnsigmatovertex2 = 3; -//void runAliAnalysisTaskFlow(Int_t nRuns = 50, const Char_t* dataDir="/data/alice2/kolk/Therminator_midcentral", Int_t offset = 0) -void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snelling/alice_data/Therminator_midcentral", Int_t offset = 0) +// ESD data on PROOF cluster +void runAliAnalysisTaskFlow(Int_t mode=mPROOF, const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nRuns=-1, Int_t offset=0) + +// AOD data on PROOF cluster +//void runAliAnalysisTaskFlow(Int_t mode=mPROOF, const Char_t* data="/PWG2/nkolk/myDataSet", Int_t nRuns=-1, Int_t offset=0) { +//void runAliAnalysisTaskFlow(Int_t mode=mPROOF, const Char_t* data="/PWG2/akisiel/Therminator_midcentral_AOD", Int_t nRuns=44, Int_t offset=0) { + +// Data at Nikhef +//void runAliAnalysisTaskFlow(Int_t mode=mLocal, Int_t nRuns = 50, const Char_t* dataDir="/data/alice2/kolk/Therminator_midcentral", Int_t offset = 0) + +// Data on my mac +//void runAliAnalysisTaskFlow(Int_t mode=mLocal, Int_t nRuns = -1, const Char_t* dataDir="/Users/snelling/alice_data/Therminator_midcentral", Int_t offset = 0) +//void runAliAnalysisTaskFlow(Int_t mode=mLocalPAR, Int_t nRuns = -1, const Char_t* dataDir="/Users/snelling/alice_data/Therminator_midcentral", Int_t offset = 0) { + TStopwatch timer; timer.Start(); - + if (LYZ1 && LYZ2) {cout<<"WARNING: you cannot run LYZ1 and LYZ2 at the same time! LYZ2 needs the output from LYZ1."<AddIncludePath("-I$ROOTSYS/include") ; - - // Load needed root libraries - gSystem->Load("libTree.so"); - gSystem->Load("libGeom.so"); - gSystem->Load("libVMC.so"); - gSystem->Load("libPhysics.so"); - - // For using root and par files - SetupPar("PWG2flowCommon"); - cerr<<"PWG2flowCommon.par loaded..."<AddIncludePath("-I$ALICE_ROOT/include") ; + //Create cuts using correction framework - gSystem->Load("libESD.so"); - cerr<<"libESD loaded..."<Load("libANALYSIS.so"); - cerr<<"libANALYSIS.so loaded..."<Load("libANALYSISRL.so"); - cerr<<"libANALYSISRL.so loaded..."<Load("libCORRFW.so"); - cerr<<"libCORRFW.so loaded..."<Load("libPWG2flowCommon.so"); - cerr<<"libPWG2flowCommon.so loaded..."<Load("libPWG2flowTasks.so"); - cerr<<"libPWG2flowTasks.so loaded..."<SetRequireIsPrimary(); if (UsePIDIntegratedFlow) {mcGenCuts1->SetRequirePdgCode(PDG1);} @@ -223,7 +177,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { mcGenCuts1->SetQAOn(qaIntFQD); } if (MCEP) { mcGenCuts1->SetQAOn(qaIntMCEP); } } - + AliCFParticleGenCuts* mcGenCuts2 = new AliCFParticleGenCuts("mcGenCuts2","MC particle generation cuts for differential flow"); mcGenCuts2->SetRequireIsPrimary(); if (UsePIDDifferentialFlow) {mcGenCuts2->SetRequirePdgCode(PDG2);} @@ -238,7 +192,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (MCEP) { mcGenCuts2->SetQAOn(qaDiffMCEP); } } - //############# Acceptance Cuts + //############# Acceptance Cuts AliCFAcceptanceCuts *mcAccCuts1 = new AliCFAcceptanceCuts("mcAccCuts1","MC acceptance cuts"); mcAccCuts1->SetMinNHitITS(mintrackrefsITS1); mcAccCuts1->SetMinNHitTPC(mintrackrefsTPC1); @@ -252,7 +206,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { mcAccCuts1->SetQAOn(qaIntFQD); } if (MCEP) { mcAccCuts1->SetQAOn(qaIntMCEP); } } - + AliCFAcceptanceCuts *mcAccCuts2 = new AliCFAcceptanceCuts("mcAccCuts2","MC acceptance cuts"); mcAccCuts2->SetMinNHitITS(mintrackrefsITS2); mcAccCuts2->SetMinNHitTPC(mintrackrefsTPC2); @@ -263,7 +217,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (LYZEP){ mcAccCuts2->SetQAOn(qaDiffLYZEP); } if (GFC) { mcAccCuts2->SetQAOn(qaDiffGFC); } if (QC) { mcAccCuts2->SetQAOn(qaDiffQC); } - if (FQD) { mcAccCuts2->SetQAOn(qaDiffFQD); } + if (FQD) { mcAccCuts2->SetQAOn(qaDiffFQD); } if (MCEP) { mcAccCuts2->SetQAOn(qaDiffMCEP); } } @@ -282,7 +236,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { recKineCuts1->SetQAOn(qaIntFQD); } if (MCEP) { recKineCuts1->SetQAOn(qaIntMCEP); } } - + AliCFTrackKineCuts *recKineCuts2 = new AliCFTrackKineCuts("recKineCuts2","rec-level kine cuts"); recKineCuts2->SetPtRange(ptmin2,ptmax2); recKineCuts2->SetRapidityRange(ymin2,ymax2); @@ -311,7 +265,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { recQualityCuts1->SetQAOn(qaIntFQD); } if (MCEP) { recQualityCuts1->SetQAOn(qaIntMCEP); } } - + AliCFTrackQualityCuts *recQualityCuts2 = new AliCFTrackQualityCuts("recQualityCuts2","rec-level quality cuts"); recQualityCuts2->SetMinNClusterTPC(minclustersTPC2); recQualityCuts2->SetStatus(AliESDtrack::kITSrefit); @@ -325,7 +279,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { recQualityCuts2->SetQAOn(qaDiffFQD); } if (MCEP) { recQualityCuts2->SetQAOn(qaDiffMCEP); } } - + AliCFTrackIsPrimaryCuts *recIsPrimaryCuts1 = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts1","rec-level isPrimary cuts"); recIsPrimaryCuts1->SetMaxNSigmaToVertex(maxnsigmatovertex1); if (QA) { @@ -338,7 +292,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { recIsPrimaryCuts1->SetQAOn(qaIntFQD); } if (MCEP) { recIsPrimaryCuts1->SetQAOn(qaIntMCEP); } } - + AliCFTrackIsPrimaryCuts *recIsPrimaryCuts2 = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts2","rec-level isPrimary cuts"); recIsPrimaryCuts2->SetMaxNSigmaToVertex(maxnsigmatovertex2); if (QA) { @@ -351,8 +305,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (FQD) { recIsPrimaryCuts2->SetQAOn(qaDiffFQD); } if (MCEP) { recIsPrimaryCuts2->SetQAOn(qaDiffMCEP); } } - - + int n_species = AliPID::kSPECIES ; Double_t* prior = new Double_t[n_species]; @@ -361,7 +314,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel prior[2] = 0.805747 ; prior[3] = 0.0928785 ; prior[4] = 0.0625243 ; - + AliCFTrackCutPid* cutPID1 = NULL; if(UsePIDIntegratedFlow) { AliCFTrackCutPid* cutPID1 = new AliCFTrackCutPid("cutPID1","ESD_PID for integrated flow") ; @@ -413,7 +366,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel if (MCEP) {cutPID2->SetQAOn(qaIntMCEP);} } } - + printf("CREATE MC KINE CUTS\n"); TObjArray* mcList1 = new TObjArray(0); mcList1->AddLast(mcKineCuts1); @@ -448,17 +401,16 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel TObjArray* fPIDCutList2 = new TObjArray(0) ; if (UsePIDDifferentialFlow) {fPIDCutList2->AddLast(cutPID2);} - printf("CREATE INTERFACE AND CUTS FOR INTEGRATED FLOW\n"); + printf("CREATE INTERFACE AND CUTS\n"); AliCFManager* cfmgr1 = new AliCFManager(); - // cfmgr1->SetNStepParticle(4); // needed for trunk not in 4.16 - cfmgr1->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList1); //on MC - cfmgr1->SetParticleCutsList(AliCFManager::kPartAccCuts,accList1); //on MC - cfmgr1->SetParticleCutsList(AliCFManager::kPartRecCuts,recList1); //on ESD - cfmgr1->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList1); //on ESD + // cfmgr1->SetNStepParticle(4); //05nov08 + cfmgr1->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList1); + cfmgr1->SetParticleCutsList(AliCFManager::kPartAccCuts,accList1); + cfmgr1->SetParticleCutsList(AliCFManager::kPartRecCuts,recList1); + cfmgr1->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList1); - printf("CREATE INTERFACE AND CUTS FOR DIFFERENTIAL FLOW\n"); AliCFManager* cfmgr2 = new AliCFManager(); - // cfmgr2->SetNStepParticle(4); // needed for trunk not in 4.16 + // cfmgr2->SetNStepParticle(4); //05nov08 cfmgr2->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList2); cfmgr2->SetParticleCutsList(AliCFManager::kPartAccCuts,accList2); cfmgr2->SetParticleCutsList(AliCFManager::kPartRecCuts,recList2); @@ -467,21 +419,21 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel //weights: TFile *weightsFile = NULL; TList *weightsList = NULL; - - if(useWeights) - { - //open the file with the weights: - weightsFile = TFile::Open("weights.root","READ"); - if(weightsFile) { - //access the list which holds the histos with weigths: - weightsList = (TList*)weightsFile->Get("weights"); - } - else { - cout<<" WARNING: the file with weights from the previous run was not available."<Get("weights"); + } + else { + cout<<" WARNING: the file with weights from the previous run was not available."<IsZombie()) { cerr << " ERROR: NO First Run file... " << endl ; } - else { - TList* fInputListLYZ2 = (TList*)fInputFileLYZ2->Get("cobjLYZ1"); + else { + TList* fInputListLYZ2 = (TList*)fInputFileLYZ2->Get("cobjLYZ1"); if (!fInputListLYZ2) {cout<<"list is NULL pointer!"<IsZombie()) { cerr << " ERROR: NO First Run file... " << endl ; } + if(!fInputFileLYZEP || fInputFileLYZEP->IsZombie()) { + cerr << " ERROR: NO First Run file... " << endl ; } else { - TList* fInputListLYZEP = (TList*)fInputFileLYZEP->Get("cobjLYZ2"); + TList* fInputListLYZEP = (TList*)fInputFileLYZEP->Get("cobjLYZ2"); if (!fInputListLYZEP) {cout<<"list is NULL pointer!"<SetInputEventHandler(esdH); + mgr->SetInputEventHandler(esdH); if (MCEP) { AliMCEventHandler *mc = new AliMCEventHandler(); mgr->SetMCtruthEventHandler(mc);} } if (type == "AOD"){ AliVEventHandler* aodH = new AliAODInputHandler; - mgr->SetInputEventHandler(aodH); + mgr->SetInputEventHandler(aodH); if (MCEP) { AliMCEventHandler *mc = new AliMCEventHandler(); mgr->SetMCtruthEventHandler(mc);} } @@ -540,8 +492,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel mgr->SetMCtruthEventHandler(mc); } //____________________________________________// - // Task - + // tasks if (SP){ if (QA) { AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",kTRUE); } else { AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",kFALSE); } @@ -645,84 +596,73 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel // Create containers for input/output AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer); - - - if(useWeights) - { - AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer("cobjWeights",TList::Class(),AliAnalysisManager::kInputContainer); - } + if (useWeights) { + AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer("cobjWeights",TList::Class(),AliAnalysisManager::kInputContainer); + } + if (LYZ2){ - AliAnalysisDataContainer *cinputLYZ2 = - mgr->CreateContainer("cobjLYZ2in",TList::Class(),AliAnalysisManager::kInputContainer); } + AliAnalysisDataContainer *cinputLYZ2 = mgr->CreateContainer("cobjLYZ2in",TList::Class(),AliAnalysisManager::kInputContainer); } if (LYZEP){ - AliAnalysisDataContainer *cinputLYZEP = - mgr->CreateContainer("cobjLYZEPin",TList::Class(),AliAnalysisManager::kInputContainer); } + AliAnalysisDataContainer *cinputLYZEP = mgr->CreateContainer("cobjLYZEPin",TList::Class(),AliAnalysisManager::kInputContainer); } if(SP) { TString outputSP = "outputSPanalysis"; outputSP+= type; outputSP+= ".root"; - AliAnalysisDataContainer *coutputSP = - mgr->CreateContainer("cobjSP", TList::Class(),AliAnalysisManager::kOutputContainer,outputSP); + AliAnalysisDataContainer *coutputSP = mgr->CreateContainer("cobjSP", TList::Class(),AliAnalysisManager::kOutputContainer,outputSP); } if(LYZ1) { TString outputLYZ1 = "outputLYZ1analysis"; outputLYZ1+= type; - outputLYZ1+= ".root"; - AliAnalysisDataContainer *coutputLYZ1 = - mgr->CreateContainer("cobjLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1); + outputLYZ1+= "_firstrun.root"; + AliAnalysisDataContainer *coutputLYZ1 = mgr->CreateContainer("cobjLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1); } if(LYZ2) { TString outputLYZ2 = "outputLYZ2analysis"; outputLYZ2+= type; - outputLYZ2+= ".root"; - AliAnalysisDataContainer *coutputLYZ2 = - mgr->CreateContainer("cobjLYZ2", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2); + outputLYZ2+= "_secondrun.root"; + AliAnalysisDataContainer *coutputLYZ2 = mgr->CreateContainer("cobjLYZ2", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2); } if(LYZEP) { TString outputLYZEP = "outputLYZEPanalysis"; outputLYZEP+= type; outputLYZEP+= ".root"; - AliAnalysisDataContainer *coutputLYZEP = - mgr->CreateContainer("cobjLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZEP); + AliAnalysisDataContainer *coutputLYZEP = mgr->CreateContainer("cobjLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZEP); } if(GFC) { TString outputGFC = "outputGFCanalysis"; outputGFC+= type; outputGFC+= ".root"; - AliAnalysisDataContainer *coutputGFC = - mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC); + AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC); } if(QC) { TString outputQC = "outputQCanalysis"; outputQC+= type; outputQC+= ".root"; - AliAnalysisDataContainer *coutputQC = - mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC); + AliAnalysisDataContainer *coutputQC = mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC); } if(FQD) { TString outputFQD = "outputFQDanalysis"; outputFQD+= type; outputFQD+= ".root"; - AliAnalysisDataContainer *coutputFQD = - mgr->CreateContainer("cobjFQD", TList::Class(),AliAnalysisManager::kOutputContainer,outputFQD); - } + AliAnalysisDataContainer *coutputFQD = mgr->CreateContainer("cobjFQD", TList::Class(),AliAnalysisManager::kOutputContainer,outputFQD); + } if(MCEP) { TString outputMCEP = "outputMCEPanalysis"; outputMCEP+= type; outputMCEP+= ".root"; - AliAnalysisDataContainer *coutputMCEP = - mgr->CreateContainer("cobjMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP); + AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer("cobjMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP); } + if (QA) { if(SP) { TString qaNameIntSP = "QAforInt_SP_"; @@ -749,7 +689,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel qaNameDiffLYZ1 += ".root"; AliAnalysisDataContainer *coutputQA2LYZ1 = mgr->CreateContainer("QAdiffLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffLYZ1); - } + } if(LYZ2) { TString qaNameIntLYZ2 = "QAforInt_LYZ2_"; qaNameIntLYZ2 += type; @@ -802,7 +742,7 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel AliAnalysisDataContainer *coutputQA2QC = mgr->CreateContainer("QAdiffQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffQC); } - if(FQD) { + if(FQQ) { TString qaNameIntFQD = "QAforInt_FQD_"; qaNameIntFQD += type; qaNameIntFQD += ".root"; @@ -828,7 +768,8 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel AliAnalysisDataContainer *coutputQA2MCEP = mgr->CreateContainer("QAdiffMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffMCEP); } - } + } + //____________________________________________// @@ -870,34 +811,204 @@ void runAliAnalysisTaskFlow(Int_t nRuns = -1, const Char_t* dataDir="/Users/snel mgr->ConnectInput(taskQC,0,cinput1); mgr->ConnectOutput(taskQC,0,coutputQC); if (QA) { mgr->ConnectOutput(taskQC,1,coutputQA1QC); - mgr->ConnectOutput(taskQC,2,coutputQA2QC); } - if (useWeights) { mgr->ConnectInput(taskQC,1,cinputWeights); - cinputWeights->SetData(weightsList);} + mgr->ConnectOutput(taskQC,2,coutputQA2QC); } + if (useWeights) { + mgr->ConnectInput(taskQC,1,cinputWeights); + cinputWeights->SetData(weightsList); + } } if (FQD) { mgr->ConnectInput(taskFQD,0,cinput1); mgr->ConnectOutput(taskFQD,0,coutputFQD); if (QA) { mgr->ConnectOutput(taskFQD,1,coutputQA1FQD); - mgr->ConnectOutput(taskFQD,2,coutputQA2FQD); } - if (useWeights) { mgr->ConnectInput(taskFQD,1,cinputWeights); - cinputWeights->SetData(weightsList);} + mgr->ConnectOutput(taskFQD,2,coutputQA2FQD); } + if(useWeights) { + mgr->ConnectInput(taskFQD,1,cinputWeights); + cinputWeights->SetData(weightsList); + } } if (MCEP) { mgr->ConnectInput(taskMCEP,0,cinput1); mgr->ConnectOutput(taskMCEP,0,coutputMCEP); if (QA) { mgr->ConnectOutput(taskMCEP,1,coutputQA1MCEP); - mgr->ConnectOutput(taskMCEP,2,coutputQA2MCEP); } + mgr->ConnectOutput(taskMCEP,2,coutputQA2MCEP); } } - + + + + //---------------------------------------------------------- + // Run the analysis + //---------------------------------------------------------- + if (!mgr->InitAnalysis()) return; mgr->PrintStatus(); - mgr->StartAnalysis("local",chain); - + + if (mode==mLocal || mode == mLocalPAR) { + mgr->StartAnalysis("local",chain); + } + else if (mode==mPROOF) { + // mgr->StartAnalysis("proof",chain); + mgr->StartAnalysis("proof",data,nRuns,offset); + } + else if (mode==mGRID) { + mgr->StartAnalysis("local",chain); + } + timer.Stop(); timer.Print(); } +void LoadLibraries(const anaModes mode) { + + //-------------------------------------- + // Load the needed libraries most of them already loaded by aliroot + //-------------------------------------- + gSystem->Load("libTree.so"); + gSystem->Load("libGeom.so"); + gSystem->Load("libVMC.so"); + gSystem->Load("libXMLIO.so"); + gSystem->Load("libPhysics.so"); + + //---------------------------------------------------------- + // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< + //---------------------------------------------------------- + if (mode==mLocal) { + //-------------------------------------------------------- + // If you want to use already compiled libraries + // in the aliroot distribution + //-------------------------------------------------------- + gSystem->Load("libSTEERBase"); + gSystem->Load("libESD"); + gSystem->Load("libAOD"); + gSystem->Load("libANALYSIS"); + gSystem->Load("libANALYSISalice"); + gSystem->Load("libCORRFW.so"); + cerr<<"libCORRFW.so loaded..."<Load("libPWG2flowCommon.so"); + cerr<<"libPWG2flowCommon.so loaded..."<Load("libPWG2flowTasks.so"); + cerr<<"libPWG2flowTasks.so loaded..."<>>>>>>>>>>> + //--------------------------------------------------------- + else if (mode==mPROOF) { + // + + // set to debug root versus if needed + // TProof::Mgr("alicecaf")->SetROOTVersion("v5-21-01-alice_dbg"); + // TProof::Mgr("alicecaf")->SetROOTVersion("v5-21-01-alice"); + + // Connect to proof + // Put appropriate username here + // TProof::Reset("proof://snelling@alicecaf.cern.ch"); + printf("*** Connect to PROOF ***\n"); + // TProof::Open("abilandz@alicecaf.cern.ch"); + TProof::Open("snelling@localhost"); + + // Enable the STEERBase Package + gProof->UploadPackage("STEERBase.par"); + gProof->EnablePackage("STEERBase"); + // Enable the ESD Package + gProof->UploadPackage("ESD.par"); + gProof->EnablePackage("ESD"); + // Enable the AOD Package + gProof->UploadPackage("AOD.par"); + gProof->EnablePackage("AOD"); + // Enable the Analysis Package + gProof->UploadPackage("ANALYSIS.par"); + gProof->EnablePackage("ANALYSIS"); + // Enable the Analysis Package alice + gProof->UploadPackage("ANALYSISalice.par"); + gProof->EnablePackage("ANALYSISalice"); + // Load the PWG2 AOD + gProof->UploadPackage("PWG2AOD.par"); + gProof->EnablePackage("PWG2AOD"); + // Enable the Correction Framework + gProof->ClearPackage("CORRFW.par"); + gProof->UploadPackage("CORRFW.par"); + gProof->EnablePackage("CORRFW"); + // Enable Flow Analysis + gProof->ClearPackage("PWG2flowCommon"); + gProof->UploadPackage("PWG2flowCommon.par"); + gProof->EnablePackage("PWG2flowCommon"); + gProof->ClearPackage("PWG2flowTasks"); + gProof->UploadPackage("PWG2flowTasks.par"); + gProof->EnablePackage("PWG2flowTasks"); + // + gProof->ShowEnabledPackages(); + } + +} + +void SetupPar(char* pararchivename) { + //Load par files, create analysis libraries + //For testing, if par file already decompressed and modified + //classes then do not decompress. + + TString cdir(Form("%s", gSystem->WorkingDirectory() )) ; + TString parpar(Form("%s.par", pararchivename)) ; + if ( gSystem->AccessPathName(parpar.Data()) ) { + gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ; + TString processline(Form(".! make %s", parpar.Data())) ; + gROOT->ProcessLine(processline.Data()) ; + gSystem->ChangeDirectory(cdir) ; + processline = Form(".! mv /tmp/%s .", parpar.Data()) ; + gROOT->ProcessLine(processline.Data()) ; + } + if ( gSystem->AccessPathName(pararchivename) ) { + TString processline = Form(".! tar xvzf %s",parpar.Data()) ; + gROOT->ProcessLine(processline.Data()); + } + + TString ocwd = gSystem->WorkingDirectory(); + gSystem->ChangeDirectory(pararchivename); + + // check for BUILD.sh and execute + if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) { + printf("*******************************\n"); + printf("*** Building PAR archive ***\n"); + cout<Exec("PROOF-INF/BUILD.sh")) { + Error("runProcess","Cannot Build the PAR Archive! - Abort!"); + return -1; + } + } + // check for SETUP.C and execute + if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) { + printf("*******************************\n"); + printf("*** Setup PAR archive ***\n"); + cout<Macro("PROOF-INF/SETUP.C"); + } + + gSystem->ChangeDirectory(ocwd.Data()); + printf("Current dir: %s\n", ocwd.Data()); +} + + // Helper macros for creating chains // from: CreateESDChain.C,v 1.10 jgrosseo Exp @@ -1077,53 +1188,3 @@ TChain* CreateAODChain(const char* aDataDir, Int_t aRuns, Int_t offset) return chain; } - -void SetupPar(char* pararchivename) -{ - //Load par files, create analysis libraries - //For testing, if par file already decompressed and modified - //classes then do not decompress. - - TString cdir(Form("%s", gSystem->WorkingDirectory() )) ; - TString parpar(Form("%s.par", pararchivename)) ; - if ( gSystem->AccessPathName(parpar.Data()) ) { - gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ; - TString processline(Form(".! make %s", parpar.Data())) ; - gROOT->ProcessLine(processline.Data()) ; - gSystem->ChangeDirectory(cdir) ; - processline = Form(".! mv /tmp/%s .", parpar.Data()) ; - gROOT->ProcessLine(processline.Data()) ; - } - if ( gSystem->AccessPathName(pararchivename) ) { - TString processline = Form(".! tar xvzf %s",parpar.Data()) ; - gROOT->ProcessLine(processline.Data()); - } - - TString ocwd = gSystem->WorkingDirectory(); - gSystem->ChangeDirectory(pararchivename); - - // check for BUILD.sh and execute - if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) { - printf("*******************************\n"); - printf("*** Building PAR archive ***\n"); - cout<Exec("PROOF-INF/BUILD.sh")) { - Error("runProcess","Cannot Build the PAR Archive! - Abort!"); - return -1; - } - } - // check for SETUP.C and execute - if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) { - printf("*******************************\n"); - printf("*** Setup PAR archive ***\n"); - cout<Macro("PROOF-INF/SETUP.C"); - } - - gSystem->ChangeDirectory(ocwd.Data()); - printf("Current dir: %s\n", ocwd.Data()); -} - diff --git a/PWG2/FLOW/macros/runProofFlow.C b/PWG2/FLOW/macros/runProofFlow.C deleted file mode 100644 index 1517bf874c9..00000000000 --- a/PWG2/FLOW/macros/runProofFlow.C +++ /dev/null @@ -1,882 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// HOW TO USE THIS MACRO: -// -// With this macro several flow analysis can be run. -// SP = Scalar Product (for PbPb or pp) -// LYZ1 = Lee Yang Zeroes first run (for PbPb) -// LYZ2 = Lee Yang Zeroes second run (for PbPb) -// LYZEP = Lee Yang Zeroes Event Plane (for PbPb) -// GFC = Cumulants (for PbPb) -// QC = Q-cumulants (for PbPb or pp) -// FQD = Fitting q-distribution (for PbPb) -// MCEP = Flow calculated from the real MC event plane (for PbPb only) -// -// The LYZ analysis should be done in the following order; -// LYZ1 -> LYZ2 -> LYZEP, -// because LYZ2 depends on the outputfile of LYZ1 and LYZEP on the outputfile -// of LYZ2. -// -// The MCEP method is a reference method. -// It can only be run when MC information (kinematics.root & galice.root file) -// is available in which the reaction plane is stored. -// -// One can run on ESD, AOD or MC. -// Additional options are ESDMC0, ESDMC1. In these options the ESD and MC -// information is combined. Tracks are selected in the ESD, the PID information -// is taken from the MC (perfect PID). For ESDMC0 the track kinematics is taken -// from the ESD and for ESDMC1 it is taken from the MC information. -// -/////////////////////////////////////////////////////////////////////////////////// - - -// RUN SETTINGS - -// Flow analysis method can be:(set to kTRUE or kFALSE) -Bool_t SP = kTRUE; -Bool_t LYZ1 = kTRUE; -Bool_t LYZ2 = kFALSE; -Bool_t LYZEP = kFALSE; -Bool_t GFC = kTRUE; -Bool_t QC = kTRUE; -Bool_t FQD = kTRUE; -Bool_t MCEP = kTRUE; - -// Analysis type can be ESD, AOD, MC, ESDMC0, ESDMC1 -const TString type = "ESD"; - -// Boolean to fill/not fill the QA histograms -Bool_t QA = kFALSE; - -// Weights -//Use weights for Q vector -Bool_t usePhiWeights = kFALSE; //Phi -Bool_t usePtWeights = kFALSE; //v'(pt) -Bool_t useEtaWeights = kFALSE; //v'(eta) -Bool_t useWeights = usePhiWeights||usePtWeights||useEtaWeights; - - -// SETTING THE CUTS - -// For integrated flow -const Double_t ptmin1 = 0.0; -const Double_t ptmax1 = 10.0; -const Double_t ymin1 = -1.; -const Double_t ymax1 = 1.; -const Int_t mintrackrefsTPC1 = 2; -const Int_t mintrackrefsITS1 = 3; -const Int_t charge1 = 1; -Bool_t UsePIDIntegratedFlow = kFALSE; -const Int_t PDG1 = 211; -const Int_t minclustersTPC1 = 50; -const Int_t maxnsigmatovertex1 = 3; - -// For differential flow -const Double_t ptmin2 = 0.0; -const Double_t ptmax2 = 10.0; -const Double_t ymin2 = -1.; -const Double_t ymax2 = 1.; -const Int_t mintrackrefsTPC2 = 2; -const Int_t mintrackrefsITS2 = 3; -const Int_t charge2 = 1; -Bool_t UsePIDDifferentialFlow = kFALSE; -const Int_t PDG2 = 211; -const Int_t minclustersTPC2 = 50; -const Int_t maxnsigmatovertex2 = 3; - -//ESD (pp) -//void runProofFlow(const Char_t* data="/COMMON/COMMON/LHC08c11_10TeV_0.5T", Int_t nRuns=-1, Int_t offset=0) { -//void runProofFlow(const Char_t* data="/COMMON/COMMON/LHC08c18_0.9TeV_0T_Phojet", Int_t nRuns=-1, Int_t offset=0) { - -//ESD (therminator) -//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral_ESD", Int_t nRuns=-1, Int_t offset=0) { - -void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_c2030", Int_t nRuns=-1, Int_t offset=0) { -//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_central", Int_t nRuns=-1, Int_t offset=0) { -//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral", Int_t nRuns=-1, Int_t offset=0) { - -//AOD -//void runProofFlow(const Char_t* data="/PWG2/nkolk/myDataSet", Int_t nRuns=-1, Int_t offset=0) { -//void runProofFlow(const Char_t* data="/PWG2/akisiel/Therminator_midcentral_AOD", Int_t nRuns=44, Int_t offset=0) { - - TStopwatch timer; - timer.Start(); - - if (LYZ1 && LYZ2) {cout<<"WARNING: you cannot run LYZ1 and LYZ2 at the same time! LYZ2 needs the output from LYZ1."<SetROOTVersion("v5-21-01-alice_dbg"); - // TProof::Mgr("alicecaf")->SetROOTVersion("v5-21-01-alice"); - - printf("*** Connect to PROOF ***\n"); - // TProof::Open("abilandz@alicecaf.cern.ch"); - TProof::Open("snelling@localhost"); - - //gProof->UploadPackage("AF-v4-15"); - //gProof->EnablePackage("AF-v4-15"); - gProof->UploadPackage("STEERBase.par"); - gProof->EnablePackage("STEERBase"); - gProof->UploadPackage("ESD.par"); - gProof->EnablePackage("ESD"); - gProof->UploadPackage("AOD.par"); - gProof->EnablePackage("AOD"); - gProof->UploadPackage("ANALYSIS.par"); - gProof->EnablePackage("ANALYSIS"); - gProof->UploadPackage("ANALYSISalice.par"); - gProof->EnablePackage("ANALYSISalice"); - gProof->UploadPackage("PWG2AOD.par"); - gProof->EnablePackage("PWG2AOD"); - gProof->ClearPackage("CORRFW.par"); - gProof->UploadPackage("CORRFW.par"); - gProof->EnablePackage("CORRFW"); - gProof->ClearPackage("PWG2flowCommon"); - gProof->UploadPackage("PWG2flowCommon.par"); - gProof->EnablePackage("PWG2flowCommon"); - gProof->ClearPackage("PWG2flowTasks"); - gProof->UploadPackage("PWG2flowTasks.par"); - gProof->EnablePackage("PWG2flowTasks"); - - - //____________________________________________// - //Create cuts using correction framework - - //Set TList for the QA histograms - if (QA) { - if (SP){ - TList* qaIntSP = new TList(); - TList* qaDiffSP = new TList(); } - if (LYZ1) { - TList* qaIntLYZ1 = new TList(); - TList* qaDiffLYZ1 = new TList(); } - if (LYZ2) { - TList* qaIntLYZ2 = new TList(); - TList* qaDiffLYZ2 = new TList(); } - if (LYZEP) { - TList* qaIntLYZEP = new TList(); - TList* qaDiffLYZEP = new TList(); } - if (GFC) { - TList* qaIntGFC = new TList(); - TList* qaDiffGFC = new TList(); } - if (QC) { - TList* qaIntQC = new TList(); - TList* qaDiffQC = new TList(); } - if (FQD) { - TList* qaIntFQD = new TList(); - TList* qaDiffFQD = new TList(); } - if (MCEP) { - TList* qaIntMCEP = new TList(); - TList* qaDiffMCEP = new TList(); } - } - - //############# cuts on MC - AliCFTrackKineCuts* mcKineCuts1 = new AliCFTrackKineCuts("mcKineCuts1","MC-level kinematic cuts"); - mcKineCuts1->SetPtRange(ptmin1,ptmax1); - mcKineCuts1->SetRapidityRange(ymin1,ymax1); - mcKineCuts1->SetChargeMC(charge1); - if (QA) { - if (SP) { mcKineCuts1->SetQAOn(qaIntSP); } - if (LYZ1) { mcKineCuts1->SetQAOn(qaIntLYZ1); } - if (LYZ2) { mcKineCuts1->SetQAOn(qaIntLYZ2); } - if (LYZEP){ mcKineCuts1->SetQAOn(qaIntLYZEP); } - if (GFC) { mcKineCuts1->SetQAOn(qaIntGFC); } - if (QC) { mcKineCuts1->SetQAOn(qaIntQC); } - if (FQD) { mcKineCuts1->SetQAOn(qaIntFQD); } - if (MCEP) { mcKineCuts1->SetQAOn(qaIntMCEP); } - } - - AliCFTrackKineCuts* mcKineCuts2 = new AliCFTrackKineCuts("mcKineCuts2","MC-level kinematic cuts"); - mcKineCuts2->SetPtRange(ptmin2,ptmax2); - mcKineCuts2->SetRapidityRange(ymin2,ymax2); - mcKineCuts2->SetChargeMC(charge2); - if (QA) { - if (SP) { mcKineCuts2->SetQAOn(qaDiffSP); } - if (LYZ1) { mcKineCuts2->SetQAOn(qaDiffLYZ1); } - if (LYZ2) { mcKineCuts2->SetQAOn(qaDiffLYZ2); } - if (LYZEP){ mcKineCuts2->SetQAOn(qaDiffLYZEP); } - if (GFC) { mcKineCuts2->SetQAOn(qaDiffGFC); } - if (QC) { mcKineCuts2->SetQAOn(qaDiffQC); } - if (FQD) { mcKineCuts2->SetQAOn(qaDiffFQD); } - if (MCEP) { mcKineCuts2->SetQAOn(qaDiffMCEP); } - } - - AliCFParticleGenCuts* mcGenCuts1 = new AliCFParticleGenCuts("mcGenCuts1","MC particle generation cuts for integrated flow"); - mcGenCuts1->SetRequireIsPrimary(); - if (UsePIDIntegratedFlow) {mcGenCuts1->SetRequirePdgCode(PDG1);} - if (QA) { - if (SP) { mcGenCuts1->SetQAOn(qaIntSP); } - if (LYZ1) { mcGenCuts1->SetQAOn(qaIntLYZ1); } - if (LYZ2) { mcGenCuts1->SetQAOn(qaIntLYZ2); } - if (LYZEP){ mcGenCuts1->SetQAOn(qaIntLYZEP); } - if (GFC) { mcGenCuts1->SetQAOn(qaIntGFC); } - if (QC) { mcGenCuts1->SetQAOn(qaIntQC); } - if (FQD) { mcGenCuts1->SetQAOn(qaIntFQD); } - if (MCEP) { mcGenCuts1->SetQAOn(qaIntMCEP); } - } - - AliCFParticleGenCuts* mcGenCuts2 = new AliCFParticleGenCuts("mcGenCuts2","MC particle generation cuts for differential flow"); - mcGenCuts2->SetRequireIsPrimary(); - if (UsePIDDifferentialFlow) {mcGenCuts2->SetRequirePdgCode(PDG2);} - if (QA) { - if (SP) { mcGenCuts2->SetQAOn(qaDiffSP); } - if (LYZ1) { mcGenCuts2->SetQAOn(qaDiffLYZ1); } - if (LYZ2) { mcGenCuts2->SetQAOn(qaDiffLYZ2); } - if (LYZEP){ mcGenCuts2->SetQAOn(qaDiffLYZEP); } - if (GFC) { mcGenCuts2->SetQAOn(qaDiffGFC); } - if (QC) { mcGenCuts2->SetQAOn(qaDiffQC); } - if (FQD) { mcGenCuts2->SetQAOn(qaDiffFQD); } - if (MCEP) { mcGenCuts2->SetQAOn(qaDiffMCEP); } - } - - //############# Acceptance Cuts - AliCFAcceptanceCuts *mcAccCuts1 = new AliCFAcceptanceCuts("mcAccCuts1","MC acceptance cuts"); - mcAccCuts1->SetMinNHitITS(mintrackrefsITS1); - mcAccCuts1->SetMinNHitTPC(mintrackrefsTPC1); - if (QA) { - if (SP) { mcAccCuts1->SetQAOn(qaIntSP); } - if (LYZ1) { mcAccCuts1->SetQAOn(qaIntLYZ1); } - if (LYZ2) { mcAccCuts1->SetQAOn(qaIntLYZ2); } - if (LYZEP){ mcAccCuts1->SetQAOn(qaIntLYZEP); } - if (GFC) { mcAccCuts1->SetQAOn(qaIntGFC); } - if (QC) { mcAccCuts1->SetQAOn(qaIntQC); } - if (FQD) { mcAccCuts1->SetQAOn(qaIntFQD); } - if (MCEP) { mcAccCuts1->SetQAOn(qaIntMCEP); } - } - - AliCFAcceptanceCuts *mcAccCuts2 = new AliCFAcceptanceCuts("mcAccCuts2","MC acceptance cuts"); - mcAccCuts2->SetMinNHitITS(mintrackrefsITS2); - mcAccCuts2->SetMinNHitTPC(mintrackrefsTPC2); - if (QA) { - if (SP) { mcAccCuts2->SetQAOn(qaDiffSP); } - if (LYZ1) { mcAccCuts2->SetQAOn(qaDiffLYZ1); } - if (LYZ2) { mcAccCuts2->SetQAOn(qaDiffLYZ2); } - if (LYZEP){ mcAccCuts2->SetQAOn(qaDiffLYZEP); } - if (GFC) { mcAccCuts2->SetQAOn(qaDiffGFC); } - if (QC) { mcAccCuts2->SetQAOn(qaDiffQC); } - if (FQD) { mcAccCuts2->SetQAOn(qaDiffFQD); } - if (MCEP) { mcAccCuts2->SetQAOn(qaDiffMCEP); } - } - - //############# Rec-Level kinematic cuts - AliCFTrackKineCuts *recKineCuts1 = new AliCFTrackKineCuts("recKineCuts1","rec-level kine cuts"); - recKineCuts1->SetPtRange(ptmin1,ptmax1); - recKineCuts1->SetRapidityRange(ymin1,ymax1); - recKineCuts1->SetChargeRec(charge1); - if (QA) { - if (SP) { recKineCuts1->SetQAOn(qaIntSP); } - if (LYZ1) { recKineCuts1->SetQAOn(qaIntLYZ1); } - if (LYZ2) { recKineCuts1->SetQAOn(qaIntLYZ2); } - if (LYZEP){ recKineCuts1->SetQAOn(qaIntLYZEP); } - if (GFC) { recKineCuts1->SetQAOn(qaIntGFC); } - if (QC) { recKineCuts1->SetQAOn(qaIntQC); } - if (FQD) { recKineCuts1->SetQAOn(qaIntFQD); } - if (MCEP) { recKineCuts1->SetQAOn(qaIntMCEP); } - } - - AliCFTrackKineCuts *recKineCuts2 = new AliCFTrackKineCuts("recKineCuts2","rec-level kine cuts"); - recKineCuts2->SetPtRange(ptmin2,ptmax2); - recKineCuts2->SetRapidityRange(ymin2,ymax2); - recKineCuts2->SetChargeRec(charge2); - if (QA) { - if (SP) { recKineCuts2->SetQAOn(qaDiffSP); } - if (LYZ1) { recKineCuts2->SetQAOn(qaDiffLYZ1); } - if (LYZ2) { recKineCuts2->SetQAOn(qaDiffLYZ2); } - if (LYZEP){ recKineCuts2->SetQAOn(qaDiffLYZEP); } - if (GFC) { recKineCuts2->SetQAOn(qaDiffGFC); } - if (QC) { recKineCuts2->SetQAOn(qaDiffQC); } - if (FQD) { recKineCuts2->SetQAOn(qaDiffFQD); } - if (MCEP) { recKineCuts2->SetQAOn(qaDiffMCEP); } - } - - AliCFTrackQualityCuts *recQualityCuts1 = new AliCFTrackQualityCuts("recQualityCuts1","rec-level quality cuts"); - recQualityCuts1->SetMinNClusterTPC(minclustersTPC1); - recQualityCuts1->SetStatus(AliESDtrack::kITSrefit); - if (QA) { - if (SP) { recQualityCuts1->SetQAOn(qaIntSP); } - if (LYZ1) { recQualityCuts1->SetQAOn(qaIntLYZ1); } - if (LYZ2) { recQualityCuts1->SetQAOn(qaIntLYZ2); } - if (LYZEP){ recQualityCuts1->SetQAOn(qaIntLYZEP); } - if (GFC) { recQualityCuts1->SetQAOn(qaIntGFC); } - if (QC) { recQualityCuts1->SetQAOn(qaIntQC); } - if (FQD) { recQualityCuts1->SetQAOn(qaIntFQD); } - if (MCEP) { recQualityCuts1->SetQAOn(qaIntMCEP); } - } - - AliCFTrackQualityCuts *recQualityCuts2 = new AliCFTrackQualityCuts("recQualityCuts2","rec-level quality cuts"); - recQualityCuts2->SetMinNClusterTPC(minclustersTPC2); - recQualityCuts2->SetStatus(AliESDtrack::kITSrefit); - if (QA) { - if (SP) { recQualityCuts2->SetQAOn(qaDiffSP); } - if (LYZ1) { recQualityCuts2->SetQAOn(qaDiffLYZ1); } - if (LYZ2) { recQualityCuts2->SetQAOn(qaDiffLYZ2); } - if (LYZEP){ recQualityCuts2->SetQAOn(qaDiffLYZEP); } - if (GFC) { recQualityCuts2->SetQAOn(qaDiffGFC); } - if (QC) { recQualityCuts2->SetQAOn(qaDiffQC); } - if (FQD) { recQualityCuts2->SetQAOn(qaDiffFQD); } - if (MCEP) { recQualityCuts2->SetQAOn(qaDiffMCEP); } - } - - AliCFTrackIsPrimaryCuts *recIsPrimaryCuts1 = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts1","rec-level isPrimary cuts"); - recIsPrimaryCuts1->SetMaxNSigmaToVertex(maxnsigmatovertex1); - if (QA) { - if (SP) { recIsPrimaryCuts1->SetQAOn(qaIntSP); } - if (LYZ1) { recIsPrimaryCuts1->SetQAOn(qaIntLYZ1); } - if (LYZ2) { recIsPrimaryCuts1->SetQAOn(qaIntLYZ2); } - if (LYZEP){ recIsPrimaryCuts1->SetQAOn(qaIntLYZEP); } - if (GFC) { recIsPrimaryCuts1->SetQAOn(qaIntGFC); } - if (QC) { recIsPrimaryCuts1->SetQAOn(qaIntQC); } - if (FQD) { recIsPrimaryCuts1->SetQAOn(qaIntFQD); } - if (MCEP) { recIsPrimaryCuts1->SetQAOn(qaIntMCEP); } - } - - AliCFTrackIsPrimaryCuts *recIsPrimaryCuts2 = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts2","rec-level isPrimary cuts"); - recIsPrimaryCuts2->SetMaxNSigmaToVertex(maxnsigmatovertex2); - if (QA) { - if (SP) { recIsPrimaryCuts2->SetQAOn(qaDiffSP); } - if (LYZ1) { recIsPrimaryCuts2->SetQAOn(qaDiffLYZ1); } - if (LYZ2) { recIsPrimaryCuts2->SetQAOn(qaDiffLYZ2); } - if (LYZEP){ recIsPrimaryCuts2->SetQAOn(qaDiffLYZEP); } - if (GFC) { recIsPrimaryCuts2->SetQAOn(qaDiffGFC); } - if (QC) { recIsPrimaryCuts2->SetQAOn(qaDiffQC); } - if (FQD) { recIsPrimaryCuts2->SetQAOn(qaDiffFQD); } - if (MCEP) { recIsPrimaryCuts2->SetQAOn(qaDiffMCEP); } - } - - int n_species = AliPID::kSPECIES ; - Double_t* prior = new Double_t[n_species]; - - prior[0] = 0.0244519 ; - prior[1] = 0.0143988 ; - prior[2] = 0.805747 ; - prior[3] = 0.0928785 ; - prior[4] = 0.0625243 ; - - AliCFTrackCutPid* cutPID1 = NULL; - if(UsePIDIntegratedFlow) { - AliCFTrackCutPid* cutPID1 = new AliCFTrackCutPid("cutPID1","ESD_PID for integrated flow") ; - cutPID1->SetPriors(prior); - cutPID1->SetProbabilityCut(0.0); - cutPID1->SetDetectors("TPC TOF"); - switch(TMath::Abs(PDG1)) { - case 11 : cutPID1->SetParticleType(AliPID::kElectron, kTRUE); break; - case 13 : cutPID1->SetParticleType(AliPID::kMuon , kTRUE); break; - case 211 : cutPID1->SetParticleType(AliPID::kPion , kTRUE); break; - case 321 : cutPID1->SetParticleType(AliPID::kKaon , kTRUE); break; - case 2212 : cutPID1->SetParticleType(AliPID::kProton , kTRUE); break; - default : printf("UNDEFINED PID\n"); break; - } - if (QA) { - if (SP) {cutPID1->SetQAOn(qaIntSP);} - if (LYZ1) {cutPID1->SetQAOn(qaIntLYZ1);} - if (LYZ2) {cutPID1->SetQAOn(qaIntLYZ2);} - if (LYZEP){cutPID1->SetQAOn(qaIntLYZEP);} - if (GFC) {cutPID1->SetQAOn(qaIntGFC);} - if (QC) {cutPID1->SetQAOn(qaIntQC);} - if (FQD) {cutPID1->SetQAOn(qaIntFQD);} - if (MCEP) {cutPID1->SetQAOn(qaIntMCEP);} - } - } - - AliCFTrackCutPid* cutPID2 = NULL; - if (UsePIDDifferentialFlow) { - AliCFTrackCutPid* cutPID2 = new AliCFTrackCutPid("cutPID2","ESD_PID for differential flow") ; - cutPID2->SetPriors(prior); - cutPID2->SetProbabilityCut(0.0); - cutPID2->SetDetectors("TPC TOF"); - switch(TMath::Abs(PDG2)) { - case 11 : cutPID2->SetParticleType(AliPID::kElectron, kTRUE); break; - case 13 : cutPID2->SetParticleType(AliPID::kMuon , kTRUE); break; - case 211 : cutPID2->SetParticleType(AliPID::kPion , kTRUE); break; - case 321 : cutPID2->SetParticleType(AliPID::kKaon , kTRUE); break; - case 2212 : cutPID2->SetParticleType(AliPID::kProton , kTRUE); break; - default : printf("UNDEFINED PID\n"); break; - } - if (QA) { - if (SP) {cutPID2->SetQAOn(qaIntSP);} - if (LYZ1) {cutPID2->SetQAOn(qaIntLYZ1);} - if (LYZ2) {cutPID2->SetQAOn(qaIntLYZ2);} - if (LYZEP){cutPID2->SetQAOn(qaIntLYZEP);} - if (GFC) {cutPID2->SetQAOn(qaIntGFC);} - if (QC) {cutPID2->SetQAOn(qaIntQC);} - if (FQD) {cutPID2->SetQAOn(qaIntFQD);} - if (MCEP) {cutPID2->SetQAOn(qaIntMCEP);} - } - } - - printf("CREATE MC KINE CUTS\n"); - TObjArray* mcList1 = new TObjArray(0); - mcList1->AddLast(mcKineCuts1); - mcList1->AddLast(mcGenCuts1); - - TObjArray* mcList2 = new TObjArray(0); - mcList2->AddLast(mcKineCuts2); - mcList2->AddLast(mcGenCuts2); - - printf("CREATE ACCEPTANCE CUTS\n"); - TObjArray* accList1 = new TObjArray(0) ; - accList1->AddLast(mcAccCuts1); - - TObjArray* accList2 = new TObjArray(0) ; - accList2->AddLast(mcAccCuts2); - - printf("CREATE RECONSTRUCTION CUTS\n"); - TObjArray* recList1 = new TObjArray(0) ; - recList1->AddLast(recKineCuts1); - recList1->AddLast(recQualityCuts1); - recList1->AddLast(recIsPrimaryCuts1); - - TObjArray* recList2 = new TObjArray(0) ; - recList2->AddLast(recKineCuts2); - recList2->AddLast(recQualityCuts2); - recList2->AddLast(recIsPrimaryCuts2); - - printf("CREATE PID CUTS\n"); - TObjArray* fPIDCutList1 = new TObjArray(0) ; - if(UsePIDIntegratedFlow) {fPIDCutList1->AddLast(cutPID1);} - - TObjArray* fPIDCutList2 = new TObjArray(0) ; - if (UsePIDDifferentialFlow) {fPIDCutList2->AddLast(cutPID2);} - - printf("CREATE INTERFACE AND CUTS\n"); - AliCFManager* cfmgr1 = new AliCFManager(); - // cfmgr1->SetNStepParticle(4); //05nov08 - cfmgr1->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList1); - cfmgr1->SetParticleCutsList(AliCFManager::kPartAccCuts,accList1); - cfmgr1->SetParticleCutsList(AliCFManager::kPartRecCuts,recList1); - cfmgr1->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList1); - - AliCFManager* cfmgr2 = new AliCFManager(); - // cfmgr2->SetNStepParticle(4); //05nov08 - cfmgr2->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList2); - cfmgr2->SetParticleCutsList(AliCFManager::kPartAccCuts,accList2); - cfmgr2->SetParticleCutsList(AliCFManager::kPartRecCuts,recList2); - cfmgr2->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList2); - - //weights: - TFile *weightsFile = NULL; - TList *weightsList = NULL; - - if(useWeights) { - //open the file with the weights: - weightsFile = TFile::Open("weights.root","READ"); - if(weightsFile) { - //access the list which holds the histos with weigths: - weightsList = (TList*)weightsFile->Get("weights"); - } - else { - cout<<" WARNING: the file with weights from the previous run was not available."<IsZombie()) { - cerr << " ERROR: NO First Run file... " << endl ; } - else { - TList* fInputListLYZ2 = (TList*)fInputFileLYZ2->Get("cobjLYZ1"); - if (!fInputListLYZ2) {cout<<"list is NULL pointer!"<IsZombie()) { - cerr << " ERROR: NO First Run file... " << endl ; } - else { - TList* fInputListLYZEP = (TList*)fInputFileLYZEP->Get("cobjLYZ2"); - if (!fInputListLYZEP) {cout<<"list is NULL pointer!"<SetInputEventHandler(esdH); - if (MCEP) { - AliMCEventHandler *mc = new AliMCEventHandler(); - mgr->SetMCtruthEventHandler(mc);} } - - if (type == "AOD"){ - AliVEventHandler* aodH = new AliAODInputHandler; - mgr->SetInputEventHandler(aodH); - if (MCEP) { - AliMCEventHandler *mc = new AliMCEventHandler(); - mgr->SetMCtruthEventHandler(mc);} } - - if (type == "MC" || type == "ESDMC0" || type == "ESDMC1"){ - AliVEventHandler* esdH = new AliESDInputHandler; - mgr->SetInputEventHandler(esdH); - - AliMCEventHandler *mc = new AliMCEventHandler(); - mgr->SetMCtruthEventHandler(mc); } - - //____________________________________________// - // tasks - if (SP){ - if (QA) { AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",kTRUE); } - else { AliAnalysisTaskScalarProduct *taskSP = new AliAnalysisTaskScalarProduct("TaskScalarProduct",kFALSE); } - taskSP->SetAnalysisType(type); - taskSP->SetCFManager1(cfmgr1); - taskSP->SetCFManager2(cfmgr2); - if (QA) { - taskSP->SetQAList1(qaIntSP); - taskSP->SetQAList2(qaDiffSP); } - mgr->AddTask(taskSP); - } - if (LYZ1){ - if (QA) { AliAnalysisTaskLeeYangZeros *taskLYZ1 = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZeros",kTRUE,kTRUE);} - else { AliAnalysisTaskLeeYangZeros *taskLYZ1 = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZeros",kTRUE,kFALSE);} - taskLYZ1->SetAnalysisType(type); - taskLYZ1->SetFirstRunLYZ(kTRUE); - taskLYZ1->SetUseSumLYZ(kTRUE); - taskLYZ1->SetCFManager1(cfmgr1); - taskLYZ1->SetCFManager2(cfmgr2); - if (QA) { - taskLYZ1->SetQAList1(qaIntLYZ1); - taskLYZ1->SetQAList2(qaDiffLYZ1);} - mgr->AddTask(taskLYZ1); - } - if (LYZ2){ - if (QA) { AliAnalysisTaskLeeYangZeros *taskLYZ2 = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZeros",kFALSE,kTRUE);} - else { AliAnalysisTaskLeeYangZeros *taskLYZ2 = new AliAnalysisTaskLeeYangZeros("TaskLeeYangZeros",kFALSE,kFALSE); } - taskLYZ2->SetAnalysisType(type); - taskLYZ2->SetFirstRunLYZ(kFALSE); - taskLYZ2->SetUseSumLYZ(kTRUE); - taskLYZ2->SetCFManager1(cfmgr1); - taskLYZ2->SetCFManager2(cfmgr2); - if (QA) { - taskLYZ2->SetQAList1(qaIntLYZ2); - taskLYZ2->SetQAList2(qaDiffLYZ2); } - mgr->AddTask(taskLYZ2); - } - if (LYZEP){ - if (QA) { AliAnalysisTaskLYZEventPlane *taskLYZEP = new AliAnalysisTaskLYZEventPlane("TaskLYZEventPlane",kTRUE); } - else { AliAnalysisTaskLYZEventPlane *taskLYZEP = new AliAnalysisTaskLYZEventPlane("TaskLYZEventPlane",kFALSE); } - taskLYZEP->SetAnalysisType(type); - taskLYZEP->SetCFManager1(cfmgr1); - taskLYZEP->SetCFManager2(cfmgr2); - if (QA) { - taskLYZEP->SetQAList1(qaIntLYZEP); - taskLYZEP->SetQAList2(qaDiffLYZEP); } - mgr->AddTask(taskLYZEP); - } - if (GFC){ - if (QA) { AliAnalysisTaskCumulants *taskGFC = new AliAnalysisTaskCumulants("TaskCumulants",kTRUE);} - else { AliAnalysisTaskCumulants *taskGFC = new AliAnalysisTaskCumulants("TaskCumulants",kFALSE);} - taskGFC->SetAnalysisType(type); - taskGFC->SetCFManager1(cfmgr1); - taskGFC->SetCFManager2(cfmgr2); - if (QA) { - taskGFC->SetQAList1(qaIntGFC); - taskGFC->SetQAList2(qaDiffGFC); } - mgr->AddTask(taskGFC); - } - if (QC){ - if (QA) { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kTRUE,useWeights);} - else { AliAnalysisTaskQCumulants *taskQC = new AliAnalysisTaskQCumulants("TaskQCumulants",kFALSE,useWeights);} - taskQC->SetAnalysisType(type); - taskQC->SetUsePhiWeights(usePhiWeights); - taskQC->SetUsePtWeights(usePtWeights); - taskQC->SetUseEtaWeights(useEtaWeights); - taskQC->SetCFManager1(cfmgr1); - taskQC->SetCFManager2(cfmgr2); - if (QA) { - taskQC->SetQAList1(qaIntQC); - taskQC->SetQAList2(qaDiffQC); } - mgr->AddTask(taskQC); - } - if (FQD){ - if (QA) { AliAnalysisTaskFittingQDistribution *taskFQD = new AliAnalysisTaskFittingQDistribution("TaskFittingQDistribution",kTRUE,useWeights);} - else { AliAnalysisTaskFittingQDistribution *taskFQD = new AliAnalysisTaskFittingQDistribution("TaskFittingQDistribution",kFALSE,useWeights);} - taskFQD->SetAnalysisType(type); - taskFQD->SetUsePhiWeights(usePhiWeights); - taskFQD->SetUsePtWeights(usePtWeights); - taskFQD->SetUseEtaWeights(useEtaWeights); - taskFQD->SetCFManager1(cfmgr1); - taskFQD->SetCFManager2(cfmgr2); - if (QA) { - taskFQD->SetQAList1(qaIntFQD); - taskFQD->SetQAList2(qaDiffFQD); } - mgr->AddTask(taskFQD); - } - if (MCEP){ - if (QA) { AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane",kTRUE);} - else { AliAnalysisTaskMCEventPlane *taskMCEP = new AliAnalysisTaskMCEventPlane("TaskMCEventPlane",kFALSE);} - taskMCEP->SetAnalysisType(type); - taskMCEP->SetCFManager1(cfmgr1); - taskMCEP->SetCFManager2(cfmgr2); - if (QA) { - taskMCEP->SetQAList1(qaIntMCEP); - taskMCEP->SetQAList2(qaDiffMCEP); } - mgr->AddTask(taskMCEP); - } - - - // Create containers for input/output - AliAnalysisDataContainer *cinput1 = - mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer); - - if (useWeights) { - AliAnalysisDataContainer *cinputWeights = mgr->CreateContainer("cobjWeights",TList::Class(),AliAnalysisManager::kInputContainer); - } - - if (LYZ2){ - AliAnalysisDataContainer *cinputLYZ2 = mgr->CreateContainer("cobjLYZ2in",TList::Class(),AliAnalysisManager::kInputContainer); } - if (LYZEP){ - AliAnalysisDataContainer *cinputLYZEP = mgr->CreateContainer("cobjLYZEPin",TList::Class(),AliAnalysisManager::kInputContainer); } - - if(SP) { - TString outputSP = "outputSPanalysis"; - outputSP+= type; - outputSP+= ".root"; - AliAnalysisDataContainer *coutputSP = mgr->CreateContainer("cobjSP", TList::Class(),AliAnalysisManager::kOutputContainer,outputSP); - } - - if(LYZ1) { - TString outputLYZ1 = "outputLYZ1analysis"; - outputLYZ1+= type; - outputLYZ1+= "_firstrun.root"; - AliAnalysisDataContainer *coutputLYZ1 = mgr->CreateContainer("cobjLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ1); - } - - if(LYZ2) { - TString outputLYZ2 = "outputLYZ2analysis"; - outputLYZ2+= type; - outputLYZ2+= "_secondrun.root"; - AliAnalysisDataContainer *coutputLYZ2 = mgr->CreateContainer("cobjLYZ2", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZ2); - } - - if(LYZEP) { - TString outputLYZEP = "outputLYZEPanalysis"; - outputLYZEP+= type; - outputLYZEP+= ".root"; - AliAnalysisDataContainer *coutputLYZEP = mgr->CreateContainer("cobjLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputLYZEP); - } - - if(GFC) { - TString outputGFC = "outputGFCanalysis"; - outputGFC+= type; - outputGFC+= ".root"; - AliAnalysisDataContainer *coutputGFC = mgr->CreateContainer("cobjGFC", TList::Class(),AliAnalysisManager::kOutputContainer,outputGFC); - } - - if(QC) { - TString outputQC = "outputQCanalysis"; - outputQC+= type; - outputQC+= ".root"; - AliAnalysisDataContainer *coutputQC = mgr->CreateContainer("cobjQC", TList::Class(),AliAnalysisManager::kOutputContainer,outputQC); - } - - if(FQD) { - TString outputFQD = "outputFQDanalysis"; - outputFQD+= type; - outputFQD+= ".root"; - AliAnalysisDataContainer *coutputFQD = mgr->CreateContainer("cobjFQD", TList::Class(),AliAnalysisManager::kOutputContainer,outputFQD); - } - - if(MCEP) { - TString outputMCEP = "outputMCEPanalysis"; - outputMCEP+= type; - outputMCEP+= ".root"; - AliAnalysisDataContainer *coutputMCEP = mgr->CreateContainer("cobjMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,outputMCEP); - } - - - if (QA) { - if(SP) { - TString qaNameIntSP = "QAforInt_SP_"; - qaNameIntSP += type; - qaNameIntSP += ".root"; - AliAnalysisDataContainer *coutputQA1SP = - mgr->CreateContainer("QAintSP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntSP); - - TString qaNameDiffSP = "QAforDiff_SP_"; - qaNameDiffSP += type; - qaNameDiffSP += ".root"; - AliAnalysisDataContainer *coutputQA2SP = - mgr->CreateContainer("QAdiffSP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffSP); - } - if(LYZ1) { - TString qaNameIntLYZ1 = "QAforInt_LYZ1_"; - qaNameIntLYZ1 += type; - qaNameIntLYZ1 += ".root"; - AliAnalysisDataContainer *coutputQA1LYZ1 = - mgr->CreateContainer("QAintLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntLYZ1); - - TString qaNameDiffLYZ1 = "QAforDiff_LYZ1_"; - qaNameDiffLYZ1 += type; - qaNameDiffLYZ1 += ".root"; - AliAnalysisDataContainer *coutputQA2LYZ1 = - mgr->CreateContainer("QAdiffLYZ1", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffLYZ1); - } - if(LYZ2) { - TString qaNameIntLYZ2 = "QAforInt_LYZ2_"; - qaNameIntLYZ2 += type; - qaNameIntLYZ2 += ".root"; - AliAnalysisDataContainer *coutputQA1LYZ2 = - mgr->CreateContainer("QAintLYZ2", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntLYZ2); - - TString qaNameDiffLYZ2 = "QAforDiff_LYZ2_"; - qaNameDiffLYZ2 += type; - qaNameDiffLYZ2 += ".root"; - AliAnalysisDataContainer *coutputQA2LYZ2 = - mgr->CreateContainer("QAdiffLYZ2", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffLYZ2); - } - if(LYZEP) { - TString qaNameIntLYZEP = "QAforInt_LYZEP_"; - qaNameIntLYZEP += type; - qaNameIntLYZEP += ".root"; - AliAnalysisDataContainer *coutputQA1LYZEP = - mgr->CreateContainer("QAintLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntLYZEP); - - TString qaNameDiffLYZEP = "QAforDiff_LYZEP_"; - qaNameDiffLYZEP += type; - qaNameDiffLYZEP += ".root"; - AliAnalysisDataContainer *coutputQA2LYZEP = - mgr->CreateContainer("QAdiffLYZEP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffLYZEP); - } - if(GFC) { - TString qaNameIntGFC = "QAforInt_GFC_"; - qaNameIntGFC += type; - qaNameIntGFC += ".root"; - AliAnalysisDataContainer *coutputQA1GFC = - mgr->CreateContainer("QAintGFC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntGFC); - - TString qaNameDiffGFC = "QAforDiff_GFC_"; - qaNameDiffGFC += type; - qaNameDiffGFC += ".root"; - AliAnalysisDataContainer *coutputQA2GFC = - mgr->CreateContainer("QAdiffGFC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffGFC); - } - if(QC) { - TString qaNameIntQC = "QAforInt_QC_"; - qaNameIntQC += type; - qaNameIntQC += ".root"; - AliAnalysisDataContainer *coutputQA1QC = - mgr->CreateContainer("QAintQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntQC); - - TString qaNameDiffQC = "QAforDiff_QC_"; - qaNameDiffQC += type; - qaNameDiffQC += ".root"; - AliAnalysisDataContainer *coutputQA2QC = - mgr->CreateContainer("QAdiffQC", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffQC); - } - if(FQQ) { - TString qaNameIntFQD = "QAforInt_FQD_"; - qaNameIntFQD += type; - qaNameIntFQD += ".root"; - AliAnalysisDataContainer *coutputQA1FQD = - mgr->CreateContainer("QAintFQD", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntFQD); - - TString qaNameDiffFQD = "QAforDiff_FQD_"; - qaNameDiffFQD += type; - qaNameDiffFQD += ".root"; - AliAnalysisDataContainer *coutputQA2FQD = - mgr->CreateContainer("QAdiffFQD", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffFQD); - } - if(MCEP) { - TString qaNameIntMCEP = "QAforInt_MCEP_"; - qaNameIntMCEP += type; - qaNameIntMCEP += ".root"; - AliAnalysisDataContainer *coutputQA1MCEP = - mgr->CreateContainer("QAintMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameIntMCEP); - - TString qaNameDiffMCEP = "QAforDiff_MCEP_"; - qaNameDiffMCEP += type; - qaNameDiffMCEP += ".root"; - AliAnalysisDataContainer *coutputQA2MCEP = - mgr->CreateContainer("QAdiffMCEP", TList::Class(),AliAnalysisManager::kOutputContainer,qaNameDiffMCEP); - } - } - - - //____________________________________________// - - if (SP) { - mgr->ConnectInput(taskSP,0,cinput1); - mgr->ConnectOutput(taskSP,0,coutputSP); - if (QA) { mgr->ConnectOutput(taskSP,1,coutputQA1SP); - mgr->ConnectOutput(taskSP,2,coutputQA2SP); } - } - if (LYZ1) { - mgr->ConnectInput(taskLYZ1,0,cinput1); - mgr->ConnectOutput(taskLYZ1,0,coutputLYZ1); - if (QA) { mgr->ConnectOutput(taskLYZ1,1,coutputQA1LYZ1); - mgr->ConnectOutput(taskLYZ1,2,coutputQA2LYZ1); } - } - if (LYZ2) { - mgr->ConnectInput(taskLYZ2,0,cinput1); - mgr->ConnectInput(taskLYZ2,1,cinputLYZ2); - mgr->ConnectOutput(taskLYZ2,0,coutputLYZ2); - if (QA) { mgr->ConnectOutput(taskLYZ2,1,coutputQA1LYZ2); - mgr->ConnectOutput(taskLYZ2,2,coutputQA2LYZ2); } - cinputLYZ2->SetData(fInputListLYZ2); - } - if (LYZEP) { - mgr->ConnectInput(taskLYZEP,0,cinput1); - mgr->ConnectInput(taskLYZEP,1,cinputLYZEP); - mgr->ConnectOutput(taskLYZEP,0,coutputLYZEP); - if (QA) { mgr->ConnectOutput(taskLYZEP,1,coutputQA1LYZEP); - mgr->ConnectOutput(taskLYZEP,2,coutputQA2LYZEP); } - cinputLYZEP->SetData(fInputListLYZEP); - } - if (GFC) { - mgr->ConnectInput(taskGFC,0,cinput1); - mgr->ConnectOutput(taskGFC,0,coutputGFC); - if (QA) { mgr->ConnectOutput(taskGFC,1,coutputQA1GFC); - mgr->ConnectOutput(taskGFC,2,coutputQA2GFC); } - } - if (QC) { - mgr->ConnectInput(taskQC,0,cinput1); - mgr->ConnectOutput(taskQC,0,coutputQC); - if (QA) { mgr->ConnectOutput(taskQC,1,coutputQA1QC); - mgr->ConnectOutput(taskQC,2,coutputQA2QC); } - if (useWeights) { - mgr->ConnectInput(taskQC,1,cinputWeights); - cinputWeights->SetData(weightsList); - } - } - if (FQD) { - mgr->ConnectInput(taskFQD,0,cinput1); - mgr->ConnectOutput(taskFQD,0,coutputFQD); - if (QA) { mgr->ConnectOutput(taskFQD,1,coutputQA1FQD); - mgr->ConnectOutput(taskFQD,2,coutputQA2FQD); } - if(useWeights) { - mgr->ConnectInput(taskFQD,1,cinputWeights); - cinputWeights->SetData(weightsList); - } - } - if (MCEP) { - mgr->ConnectInput(taskMCEP,0,cinput1); - mgr->ConnectOutput(taskMCEP,0,coutputMCEP); - if (QA) { mgr->ConnectOutput(taskMCEP,1,coutputQA1MCEP); - mgr->ConnectOutput(taskMCEP,2,coutputQA2MCEP); } - } - - if (!mgr->InitAnalysis()) return; - mgr->PrintStatus(); - // old way with a chain - // mgr->StartAnalysis("proof",chain); - mgr->StartAnalysis("proof",data,nRuns,offset); - - timer.Stop(); - timer.Print(); -}