]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAnalysisTaskSEVertexingHFTest.C
Transition PWG3 --> PWGHF
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSEVertexingHFTest.C
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
7 \r
8   Bool_t inputAOD=kFALSE; // otherwise, ESD\r
9   Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing\r
10                           // kFALSE: use ESD as input to vertexing\r
11   Bool_t writeKineToAOD = kFALSE;\r
12   TString mode="local"; // otherwise, "grid" \r
13   Bool_t useParFiles=kFALSE;\r
14   Bool_t doCentrality=kTRUE;\r
15 \r
16   gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/macros/LoadLibraries.C");\r
17   LoadLibraries(useParFiles);\r
18   gSystem->Load("libPWG3muon");\r
19   TChain *chain = 0;\r
20 \r
21   if(mode=="local") {\r
22     // Local files \r
23     TString treeName,fileName;\r
24     if(inputAOD) {\r
25       treeName="aodTree"; \r
26       fileName="AliAOD.root";\r
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
58   } else {\r
59     printf("ERROR: mode has to be \"local\" or \"grid\" \n");\r
60     return;\r
61   }\r
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
69   AliInputEventHandler *inputHandler = 0;\r
70   if(inputAOD) {\r
71     inputHandler = new AliAODInputHandler();\r
72   } else {\r
73     inputHandler = new AliESDInputHandler();\r
74   }\r
75   mgr->SetInputEventHandler(inputHandler);\r
76   \r
77   // Output \r
78   AliAODHandler *aodHandler = new AliAODHandler();\r
79   const char* deltaAODfname="AliAOD.VertexingHF.root";\r
80   if(createAOD) {\r
81     aodHandler->SetOutputFileName("AliAOD.root");\r
82   } else {\r
83     aodHandler->SetOutputFileName(deltaAODfname);\r
84     aodHandler->SetAODExtensionMode();\r
85   }\r
86   mgr->SetOutputEventHandler(aodHandler);\r
87   mgr->RegisterExtraFile(deltaAODfname);  \r
88 \r
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
95     // Centrality\r
96     if(doCentrality){\r
97       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");\r
98       AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();\r
99     }\r
100 \r
101     gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");\r
102     AliAnalysisTaskESDfilter *filter = AddTaskESDFilter(writeKineToAOD);\r
103    \r
104   }\r
105 \r
106   // Vertexing analysis task    \r
107   gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/macros/AddTaskVertexingHF.C");\r
108   AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);\r
109   \r
110   \r
111   //\r
112   // Run the analysis\r
113   //    \r
114   printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());\r
115   if(!mgr->InitAnalysis()) return;\r
116 \r
117   mgr->PrintStatus();\r
118 \r
119   TStopwatch watch;\r
120   watch.Start();\r
121   mgr->StartAnalysis(mode.Data(),chain);\r
122   watch.Stop();\r
123   watch.Print();\r
124 \r
125   return;\r
126 }\r