Bool_t AliCFSingleTrackTask(
const Bool_t useGrid = 1,
+ const Bool_t readAOD = 0,
+ const Bool_t readTPCTracks = 0,
const char * kTagXMLFile="wn.xml" // XML file containing tags
)
{
// Create an AliTagAnalysis Object and chain the tags
AliTagAnalysis *tagAna = new AliTagAnalysis();
- tagAna->SetType("ESD"); //for aliroot > v4-05
+ if (readAOD) tagAna->SetType("AOD"); //for aliroot > v4-05
+ else tagAna->SetType("ESD"); //for aliroot > v4-05
TAlienCollection *coll = TAlienCollection::Open(kTagXMLFile);
TGridResult *tagResult = coll->GetGridResult("",0,0);
tagResult->Print();
}
else {// local data
- analysisChain = new TChain("esdTree");
//here put your input data path
printf("\n\nRunning on local file, please check the path\n\n");
- analysisChain->Add("AliESDs.root");
+
+ if (readAOD) {
+ analysisChain = new TChain("aodTree");
+ analysisChain->Add("your_data_path/001/AliAOD.root");
+ analysisChain->Add("your_data_path/002/AliAOD.root");
+ }
+ else {
+ analysisChain = new TChain("esdTree");
+ analysisChain->Add("your_data_path/001/AliESDs.root");
+ analysisChain->Add("your_data_path/002/AliESDs.root");
+ }
}
//setting the bin limits
container -> SetBinLimits(ipt,binLim1);
container -> SetBinLimits(iy,binLim2);
-
+ container -> SetVarTitle(ipt,"pt");
+ container -> SetVarTitle(iy, "y");
+ container -> SetStepTitle(0, "generated");
+ container -> SetStepTitle(1, "in acceptance");
+ container -> SetStepTitle(2, "reconstructed");
+ container -> SetStepTitle(3, "after PID");
// SET TLIST FOR QA HISTOS
TList* qaList = new TList();
//CREATE THE CUTS -----------------------------------------------
+ //Event-level cuts:
+ AliCFEventRecCuts* evtRecCuts = new AliCFEventRecCuts("evtRecCuts","Rec-event cuts");
+// evtRecCuts->SetUseTPCVertex();
+// evtRecCuts->SetRequireVtxCuts(kTRUE);
+// evtRecCuts->SetVertexNContributors(-2,5);
+ evtRecCuts->SetQAOn(qaList);
+
// Gen-Level kinematic cuts
AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
mcKineCuts->SetPtRange(ptmin,ptmax);
//Particle-Level cuts:
AliCFParticleGenCuts* mcGenCuts = new AliCFParticleGenCuts("mcGenCuts","MC particle generation cuts");
mcGenCuts->SetRequireIsPrimary();
- mcGenCuts->SetRequirePdgCode(PDG);
+ mcGenCuts->SetRequirePdgCode(PDG,/*absolute=*/kTRUE);
mcGenCuts->SetQAOn(qaList);
//Acceptance Cuts
recKineCuts->SetQAOn(qaList);
AliCFTrackQualityCuts *recQualityCuts = new AliCFTrackQualityCuts("recQualityCuts","rec-level quality cuts");
- recQualityCuts->SetMinNClusterTPC(minclustersTPC);
- recQualityCuts->SetRequireITSRefit(kTRUE);
+ if (!readAOD) {
+// recQualityCuts->SetMinNClusterTRD(0);
+// recQualityCuts->SetMaxChi2PerClusterTRD(10.);
+ }
+ recQualityCuts->SetStatus(AliESDtrack::kTPCrefit);
recQualityCuts->SetQAOn(qaList);
AliCFTrackIsPrimaryCuts *recIsPrimaryCuts = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
- recIsPrimaryCuts->SetMaxNSigmaToVertex(3);
+ if (readAOD) recIsPrimaryCuts->SetAODType(AliAODTrack::kPrimary);
+ else recIsPrimaryCuts->SetMaxNSigmaToVertex(3);
recIsPrimaryCuts->SetQAOn(qaList);
AliCFTrackCutPid* cutPID = new AliCFTrackCutPid("cutPID","ESD_PID") ;
cutPID->SetPriors(prior);
cutPID->SetProbabilityCut(0.0);
- cutPID->SetDetectors("TPC TOF");
+ if (readTPCTracks) cutPID->SetDetectors("TPC");
+ else cutPID->SetDetectors("ALL");
+ if (readAOD) cutPID->SetAODmode(kTRUE );
+ else cutPID->SetAODmode(kFALSE);
switch(TMath::Abs(PDG)) {
case 11 : cutPID->SetParticleType(AliPID::kElectron, kTRUE); break;
case 13 : cutPID->SetParticleType(AliPID::kMuon , kTRUE); break;
}
cutPID->SetQAOn(qaList);
+ printf("CREATE EVENT LEVEL CUTS\n");
+ TObjArray* evtList = new TObjArray(0) ;
+// evtList->AddLast(evtRecCuts);
+
printf("CREATE MC KINE CUTS\n");
TObjArray* mcList = new TObjArray(0) ;
mcList->AddLast(mcKineCuts);
//CREATE THE INTERFACE TO CORRECTION FRAMEWORK USED IN THE TASK
printf("CREATE INTERFACE AND CUTS\n");
AliCFManager* man = new AliCFManager() ;
- man->SetParticleContainer (container);
- man->SetParticleCutsList(AliCFManager::kPartGenCuts,mcList);
- man->SetParticleCutsList(AliCFManager::kPartAccCuts,accList);
- man->SetParticleCutsList(AliCFManager::kPartRecCuts,recList);
- man->SetParticleCutsList(AliCFManager::kPartSelCuts,fPIDCutList);
+
+ man->SetNStepEvent(1);
+ man->SetEventCutsList(0,evtList);
+
+ man->SetParticleContainer(container);
+ man->SetParticleCutsList(0,mcList);
+ man->SetParticleCutsList(1,accList);
+ man->SetParticleCutsList(2,recList);
+ man->SetParticleCutsList(3,fPIDCutList);
//CREATE THE TASK
AliCFSingleTrackTask *task = new AliCFSingleTrackTask("AliSingleTrackTask");
task->SetCFManager(man); //here is set the CF manager
task->SetQAList(qaList);
+ if (readAOD) task->SetReadAODData() ;
+ if (readTPCTracks) task->SetReadTPCTracks();
//SETUP THE ANALYSIS MANAGER TO READ INPUT CHAIN AND WRITE DESIRED OUTPUTS
printf("CREATE ANALYSIS MANAGER\n");
if (useGrid) mgr->SetAnalysisType(AliAnalysisManager::kGridAnalysis);
else mgr->SetAnalysisType(AliAnalysisManager::kLocalAnalysis);
+
AliMCEventHandler* mcHandler = new AliMCEventHandler();
- AliESDInputHandler* esdHandler = new AliESDInputHandler();
mgr->SetMCtruthEventHandler(mcHandler);
- mgr->SetInputEventHandler(esdHandler);
+
+ AliInputEventHandler* dataHandler ;
+
+ if (readAOD) dataHandler = new AliAODInputHandler();
+ else dataHandler = new AliESDInputHandler();
+ mgr->SetInputEventHandler(dataHandler);
// Create and connect containers for input/output
cinput0->SetData(analysisChain);
mgr->AddTask(task);
- mgr->ConnectInput(task,0,cinput0);
+ mgr->ConnectInput(task,0,mgr->GetCommonInputContainer());
mgr->ConnectOutput(task,0,coutput0);
mgr->ConnectOutput(task,1,coutput1);
mgr->ConnectOutput(task,2,coutput2);
//load the required aliroot libraries
gSystem->Load("libANALYSIS") ;
gSystem->Load("libANALYSISalice") ;
- gSystem->Load("libCORRFW.so") ;
+ gSystem->Load("libCORRFW") ;
//compile online the task class
gSystem->SetIncludePath("-I. -I$ALICE_ROOT/include -I$ROOTSYS/include");
- gROOT->LoadMacro("./AliCFSingleTrackTask.cxx+");
+ gROOT->LoadMacro("./AliCFSingleTrackTask.cxx++g");
}