// Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing\r
// A.Dainese, andrea.dainese@lnl.infn.it\r
//\r
- Bool_t inputAOD=kTRUE; // otherwise, ESD\r
+\r
+ Bool_t inputAOD=kFALSE; // otherwise, ESD\r
+ Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing\r
+ // kFALSE: use ESD as input to vertexing\r
+ Bool_t writeKineToAOD = kFALSE;\r
TString mode="local"; // otherwise, "grid" \r
+ Bool_t useParFiles=kFALSE;\r
\r
- gSystem->Load("libTree.so");\r
- gSystem->Load("libGeom.so");\r
- gSystem->Load("libPhysics.so");\r
- gSystem->Load("libVMC.so");\r
- gSystem->Load("libSTEERBase.so");\r
- gSystem->Load("libESD.so");\r
- gSystem->Load("libAOD.so"); \r
- gSystem->Load("libANALYSIS.so");\r
- gSystem->Load("libANALYSISalice.so");\r
- gSystem->Load("libPWG3base.so");\r
- gSystem->Load("libPWG3vertexingHF.so");\r
+ gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/macros/LoadLibraries.C");\r
+ LoadLibraries(useParFiles);\r
\r
TChain *chain = 0;\r
\r
\r
// Output \r
AliAODHandler *aodHandler = new AliAODHandler();\r
- aodHandler->SetOutputFileName("AliAOD.VertexingHF.root");\r
- aodHandler->SetCreateNonStandardAOD();\r
+ const char* deltaAODfname="AliAOD.VertexingHF.root";\r
+ if(createAOD) {\r
+ aodHandler->SetOutputFileName("AliAOD.root");\r
+ } else {\r
+ aodHandler->SetFillAOD(kFALSE);\r
+ aodHandler->SetOutputFileName(deltaAODfname);\r
+ aodHandler->SetCreateNonStandardAOD();\r
+ }\r
mgr->SetOutputEventHandler(aodHandler);\r
- \r
+ mgr->RegisterExtraFile(deltaAODfname); \r
+\r
+ if(!inputAOD && createAOD) {\r
+ // MC Truth\r
+ AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
+ if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);\r
+ AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");\r
+ if(writeKineToAOD) mgr->AddTask(kinefilter); \r
+ // Barrel Tracks\r
+ AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter");\r
+ mgr->AddTask(filter);\r
+\r
+ AliESDtrackCuts* esdTrackCutsHF = new AliESDtrackCuts("AliESDtrackCuts", "Heavy flavour");\r
+ esdTrackCutsHF->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);\r
+ \r
+ AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
+ trackFilter->AddCuts(esdTrackCutsHF);\r
+\r
+ filter->SetTrackFilter(trackFilter);\r
+ \r
+ // Pipelining\r
+ mgr->ConnectInput(filter,0,mgr->GetCommonInputContainer());\r
+ mgr->ConnectOutput(filter,0,mgr->GetCommonOutputContainer());\r
+ if(writeKineToAOD) {\r
+ mgr->ConnectInput(kinefilter,0,mgr->GetCommonInputContainer());\r
+ mgr->ConnectOutput(kinefilter,0,mgr->GetCommonOutputContainer());\r
+ }\r
+ \r
+ }\r
+\r
// Vertexing analysis task \r
- AliAnalysisTaskSEVertexingHF *hfTask = new AliAnalysisTaskSEVertexingHF("VertexingHFAnalysis");\r
- hfTask->SetDebugLevel(2);\r
+ gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/macros/AddTaskVertexingHF.C");\r
+ AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);\r
\r
- mgr->AddTask(hfTask);\r
\r
- //\r
- // Create containers for input/output\r
- AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain",TChain::Class(), \r
- AliAnalysisManager::kInputContainer);\r
- AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(),\r
- AliAnalysisManager::kOutputContainer, \r
- "default");\r
- mgr->ConnectInput(hfTask,0,cinput1);\r
- mgr->ConnectOutput(hfTask,0,coutput1);\r
-\r
//\r
// Run the analysis\r
// \r
\r
mgr->PrintStatus();\r
\r
+ TStopwatch watch;\r
+ watch.Start();\r
mgr->StartAnalysis(mode.Data(),chain);\r
+ watch.Stop();\r
+ watch.Print();\r
\r
return;\r
}\r