]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/vertexingHF/AliAnalysisTaskSEVertexingHFTest.C
Wrong header file names.
[u/mrichter/AliRoot.git] / PWG3 / 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=kTRUE; // otherwise, ESD\r
9   Bool_t createAOD=kFALSE; // kTRUE: create AOD and use it as input to vertexing\r
10                           // kFALSE: use ESD as input to vertexing\r
11   Bool_t writeKineToAOD = kTRUE;\r
12   TString mode="local"; // otherwise, "grid" \r
13   Bool_t useParFiles=kFALSE;\r
14 \r
15   gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/LoadLibraries.C");\r
16   LoadLibraries(useParFiles);\r
17 \r
18   TChain *chain = 0;\r
19 \r
20   if(mode=="local") {\r
21     // Local files \r
22     TString treeName,fileName;\r
23     if(inputAOD) {\r
24       treeName="aodTree"; \r
25       fileName="AliAODs.root";\r
26     } else {\r
27       treeName="esdTree"; \r
28       fileName="AliESDs.root";\r
29     }\r
30     chain = new TChain(treeName.Data());\r
31     chain->Add(fileName.Data());\r
32 \r
33   } else if (mode=="grid") {\r
34     //Fetch files with AliEn :\r
35     const char *collectionfile = "Collection.xml";\r
36     TGrid::Connect("alien://") ;\r
37     TAlienCollection *coll   = TAlienCollection::Open(collectionfile);\r
38     if(inputAOD) { // input AOD\r
39       chain = new TChain("aodTree");\r
40       while(coll->Next()) chain->Add(coll->GetTURL(""));\r
41     } else { // input ESD\r
42       //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria\r
43       AliRunTagCuts      *runCuts   = new AliRunTagCuts();\r
44       AliEventTagCuts    *eventCuts = new AliEventTagCuts();\r
45       AliLHCTagCuts      *lhcCuts   = new AliLHCTagCuts();\r
46       AliDetectorTagCuts *detCuts   = new AliDetectorTagCuts();\r
47       eventCuts->SetMultiplicityRange(0,20000);\r
48       //Create an AliTagAnalysis Object and chain the tags\r
49       AliTagAnalysis   *tagAna = new AliTagAnalysis();\r
50       tagAna->SetType("ESD");\r
51       TGridResult      *tagResult = coll->GetGridResult("",0,0);\r
52       tagResult->Print();\r
53       tagAna->ChainGridTags(tagResult);\r
54       //Create a new esd chain and assign the chain that is returned by querying the tags\r
55       chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);\r
56     }\r
57   } else {\r
58     printf("ERROR: mode has to be \"local\" or \"grid\" \n");\r
59     return;\r
60   }\r
61 \r
62 \r
63   // Create the analysis manager\r
64   AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager","My Manager");\r
65   mgr->SetDebugLevel(10);\r
66   \r
67   // Input Handler\r
68   AliInputEventHandler *inputHandler = 0;\r
69   if(inputAOD) {\r
70     inputHandler = new AliAODInputHandler();\r
71   } else {\r
72     inputHandler = new AliESDInputHandler();\r
73   }\r
74   mgr->SetInputEventHandler(inputHandler);\r
75   \r
76   // Output \r
77   AliAODHandler *aodHandler = new AliAODHandler();\r
78   if(createAOD) {\r
79     aodHandler->SetOutputFileName("AliAODs.root");\r
80   } else {\r
81     aodHandler->SetOutputFileName("AliAOD.VertexingHF.root");\r
82     aodHandler->SetCreateNonStandardAOD();\r
83   }\r
84   mgr->SetOutputEventHandler(aodHandler);\r
85   \r
86   if(!inputAOD && createAOD) {\r
87     // MC Truth\r
88     AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
89     if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);\r
90     AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");\r
91     if(writeKineToAOD) mgr->AddTask(kinefilter);  \r
92     // Barrel Tracks\r
93     AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter");\r
94     mgr->AddTask(filter);\r
95 \r
96     AliESDtrackCuts* esdTrackCutsHF = new AliESDtrackCuts("AliESDtrackCuts", "Heavy flavour");\r
97     esdTrackCutsHF->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);\r
98     \r
99     AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");\r
100     trackFilter->AddCuts(esdTrackCutsHF);\r
101 \r
102     filter->SetTrackFilter(trackFilter);\r
103    \r
104     // Pipelining\r
105     mgr->ConnectInput(filter,0,mgr->GetCommonInputContainer());\r
106     mgr->ConnectOutput(filter,0,mgr->GetCommonOutputContainer());\r
107     if(writeKineToAOD) {\r
108       mgr->ConnectInput(kinefilter,0,mgr->GetCommonInputContainer());\r
109       mgr->ConnectOutput(kinefilter,0,mgr->GetCommonOutputContainer());\r
110     }\r
111  \r
112   }\r
113 \r
114   // Vertexing analysis task    \r
115   gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/AddTaskVertexingHF.C");\r
116   AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF();\r
117   \r
118   \r
119   //\r
120   // Run the analysis\r
121   //    \r
122   printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());\r
123   if(!mgr->InitAnalysis()) return;\r
124 \r
125   mgr->PrintStatus();\r
126 \r
127   TStopwatch watch;\r
128   watch.Start();\r
129   mgr->StartAnalysis(mode.Data(),chain);\r
130   watch.Stop();\r
131   watch.Print();\r
132 \r
133   return;\r
134 }\r