]>
Commit | Line | Data |
---|---|---|
699a38d6 | 1 | void 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 |
60c2149d | 16 | gROOT->LoadMacro("$ALICE_ROOT/PWG3/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 |
60c2149d | 107 | gROOT->LoadMacro("$ALICE_ROOT/PWG3/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 |