]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/vertexingHF/AliAnalysisTaskSEVertexingHFTest.C
New task to do D2H QA checks on MC productions
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEVertexingHFTest.C
CommitLineData
699a38d6 1void AliAnalysisTaskSEVertexingHFTest()\r
2{\r
3 //\r
4 // Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing\r
5 // A.Dainese, andrea.dainese@lnl.infn.it\r
6 //\r
98a12f96 7\r
62921f9d 8 Bool_t inputAOD=kFALSE; // otherwise, ESD\r
9 Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing\r
60c07aba 10 // kFALSE: use ESD as input to vertexing\r
62921f9d 11 Bool_t writeKineToAOD = kFALSE;\r
2d0da4bb 12 TString mode="local"; // otherwise, "grid" \r
0345b950 13 Bool_t useParFiles=kFALSE;\r
1a53fb2a 14 Bool_t doCentrality=kTRUE;\r
699a38d6 15\r
5e07077d 16 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");\r
f68c41dc 17 LoadLibraries(useParFiles);\r
40a0a69c 18 gSystem->Load("libPWGmuon");\r
2d0da4bb 19 TChain *chain = 0;\r
699a38d6 20\r
2d0da4bb 21 if(mode=="local") {\r
22 // Local files \r
23 TString treeName,fileName;\r
24 if(inputAOD) {\r
25 treeName="aodTree"; \r
a8b951a4 26 fileName="AliAOD.root";\r
2d0da4bb 27 } else {\r
28 treeName="esdTree"; \r
29 fileName="AliESDs.root";\r
30 }\r
31 chain = new TChain(treeName.Data());\r
32 chain->Add(fileName.Data());\r
33\r
34 } else if (mode=="grid") {\r
35 //Fetch files with AliEn :\r
36 const char *collectionfile = "Collection.xml";\r
37 TGrid::Connect("alien://") ;\r
38 TAlienCollection *coll = TAlienCollection::Open(collectionfile);\r
39 if(inputAOD) { // input AOD\r
40 chain = new TChain("aodTree");\r
41 while(coll->Next()) chain->Add(coll->GetTURL(""));\r
42 } else { // input ESD\r
43 //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria\r
44 AliRunTagCuts *runCuts = new AliRunTagCuts();\r
45 AliEventTagCuts *eventCuts = new AliEventTagCuts();\r
46 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();\r
47 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();\r
48 eventCuts->SetMultiplicityRange(0,20000);\r
49 //Create an AliTagAnalysis Object and chain the tags\r
50 AliTagAnalysis *tagAna = new AliTagAnalysis();\r
51 tagAna->SetType("ESD");\r
52 TGridResult *tagResult = coll->GetGridResult("",0,0);\r
53 tagResult->Print();\r
54 tagAna->ChainGridTags(tagResult);\r
55 //Create a new esd chain and assign the chain that is returned by querying the tags\r
56 chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);\r
57 }\r
dcb444c9 58 } else {\r
2d0da4bb 59 printf("ERROR: mode has to be \"local\" or \"grid\" \n");\r
60 return;\r
dcb444c9 61 }\r
699a38d6 62\r
63\r
64 // Create the analysis manager\r
65 AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");\r
66 mgr->SetDebugLevel(10);\r
67 \r
68 // Input Handler\r
dcb444c9 69 AliInputEventHandler *inputHandler = 0;\r
70 if(inputAOD) {\r
71 inputHandler = new AliAODInputHandler();\r
72 } else {\r
73 inputHandler = new AliESDInputHandler();\r
74 }\r
699a38d6 75 mgr->SetInputEventHandler(inputHandler);\r
76 \r
77 // Output \r
78 AliAODHandler *aodHandler = new AliAODHandler();\r
a9b75906 79 const char* deltaAODfname="AliAOD.VertexingHF.root";\r
60c07aba 80 if(createAOD) {\r
e6c84ee3 81 aodHandler->SetOutputFileName("AliAOD.root");\r
60c07aba 82 } else {\r
a9b75906 83 aodHandler->SetOutputFileName(deltaAODfname);\r
dd10f924 84 aodHandler->SetAODExtensionMode();\r
60c07aba 85 }\r
699a38d6 86 mgr->SetOutputEventHandler(aodHandler);\r
a9b75906 87 mgr->RegisterExtraFile(deltaAODfname); \r
2894dc72 88\r
60c07aba 89 if(!inputAOD && createAOD) {\r
90 // MC Truth\r
91 AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
92 if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);\r
93 AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");\r
94 if(writeKineToAOD) mgr->AddTask(kinefilter); \r
1a53fb2a 95 // Centrality\r
96 if(doCentrality){\r
97 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");\r
98 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();\r
99 }\r
60c07aba 100\r
1a53fb2a 101 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");\r
102 AliAnalysisTaskESDfilter *filter = AddTaskESDFilter(writeKineToAOD);\r
60c07aba 103 \r
60c07aba 104 }\r
105\r
699a38d6 106 // Vertexing analysis task \r
5e07077d 107 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/AddTaskVertexingHF.C");\r
a9b75906 108 AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);\r
699a38d6 109 \r
699a38d6 110 \r
699a38d6 111 //\r
112 // Run the analysis\r
113 // \r
114 printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());\r
2d0da4bb 115 if(!mgr->InitAnalysis()) return;\r
116\r
117 mgr->PrintStatus();\r
118\r
29f884f0 119 TStopwatch watch;\r
120 watch.Start();\r
2d0da4bb 121 mgr->StartAnalysis(mode.Data(),chain);\r
29f884f0 122 watch.Stop();\r
123 watch.Print();\r
699a38d6 124\r
125 return;\r
126}\r