]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/macros/AddTrainPerformanceTRD.C
comply with the framework conventions for running on the lego train
[u/mrichter/AliRoot.git] / PWGPP / macros / AddTrainPerformanceTRD.C
CommitLineData
94b94be0 1// Steer TRD QA train for Reconstruction (Clusterizer, Tracking and PID).\r
2// \r
3// Usage:\r
4// AddTrainPerformanceTRD.C(MC, friends, tasks)\r
5// tasks : "ALL" or one/more of the following:\r
6// "EFF" : TRD Tracking Efficiency \r
7// "EFFC" : TRD Tracking Efficiency Combined (barrel + stand alone) - only in case of simulations\r
8// "MULT" : TRD single track selection\r
9// "RES" : TRD tracking Resolution\r
10// "CLRES": clusters Resolution\r
11// "CAL" : TRD calibration\r
12// "ALGN" : TRD alignment\r
13// "PID" : TRD PID - pion efficiency \r
14// "PIDR" : TRD PID - reference data\r
15// "DET" : Basic TRD Detector checks\r
16// "NOFR" : Data set does not have AliESDfriends.root \r
17// "NOMC" : Data set does not have Monte Carlo Informations (real data), so all tasks which rely\r
18// on MC information are switched off\r
19//\r
20// In compiled mode : \r
21// Don't forget to load first the libraries\r
22// gSystem->Load("libMemStat.so")\r
23// gSystem->Load("libMemStatGui.so")\r
24// gSystem->Load("libANALYSIS.so")\r
25// gSystem->Load("libANALYSISalice.so")\r
2bfe5463 26// gSystem->Load("libPWGPP.so");\r
94b94be0 27//\r
28// Authors:\r
29// Alex Bercuci (A.Bercuci@gsi.de) \r
30// Markus Fasel (m.Fasel@gsi.de) \r
31\r
32#if ! defined (__CINT__) || defined (__MAKECINT__)\r
33//#ifndef __CINT__\r
34#include <Riostream.h>\r
35\r
36#include "TStopwatch.h"\r
37#include "TMemStat.h"\r
38#include "TMemStatViewerGUI.h"\r
39\r
40#include "TROOT.h"\r
41#include "TClass.h"\r
42#include "TSystem.h"\r
43#include "TString.h"\r
44#include "TError.h"\r
45#include "TChain.h"\r
46#include "TGrid.h"\r
47#include "TAlienCollection.h"\r
48#include "TGridCollection.h"\r
49#include "TGridResult.h"\r
50#include "TGeoGlobalMagField.h"\r
51\r
52#include "AliMagF.h"\r
53#include "AliTracker.h"\r
54#include "AliLog.h"\r
55#include "AliCDBManager.h"\r
56#include "AliGRPManager.h"\r
57#include "AliGeomManager.h"\r
58#include "AliAnalysisManager.h"\r
59#include "AliAnalysisDataContainer.h"\r
60#include "AliMCEventHandler.h"\r
61#include "AliESDInputHandler.h"\r
62\r
63#include "TRD/AliTRDtrackerV1.h"\r
64#include "TRD/AliTRDcalibDB.h"\r
65\r
2bfe5463 66#include "PWGPP/TRD/macros/AddTRDcheckESD.C"\r
67#include "PWGPP/TRD/macros/AddTRDinfoGen.C"\r
68#include "PWGPP/TRD/macros/AddTRDcheckDET.C"\r
69#include "PWGPP/TRD/macros/AddTRDefficiency.C"\r
70#include "PWGPP/TRD/macros/AddTRDresolution.C"\r
71#include "PWGPP/TRD/macros/AddTRDcheckPID.C"\r
72#include "PWGPP/TRD/macros/AddTRDcheckTRK.C"\r
73#include "PWGPP/TRD/macros/AddTRDv0Monitor.C"\r
94b94be0 74#endif\r
75\r
76TString opt("");\r
77const Char_t* Translate(Bool_t doCheckESD=kTRUE, Bool_t doCheckDET=kTRUE, Bool_t doEffic=kTRUE, Bool_t doResolution=kTRUE, Bool_t doCheckPID=kTRUE, Bool_t doV0Monitor=kTRUE);\r
2bfe5463 78Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL", const Char_t *addMacroPath = "$ALICE_ROOT/PWGPP/TRD/macros")\r
94b94be0 79{\r
80 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
81 if(!mgr) { \r
82 Error("AddTrainPerformanceTRD", "AliAnalysisManager not set!");\r
83 return kFALSE;\r
84 }\r
85\r
86 // TRD data containers\r
2bfe5463 87 AliAnalysisDataContainer *ci[AliTRDpwgppHelper::kNOutSlots];\r
94b94be0 88 AliAnalysisDataContainer *ce[5];\r
89\r
90 Info("AddTrainPerformanceTRD", Form("Add Macros taken from %s", addMacroPath));\r
91 Info("AddTrainPerformanceTRD", Form("TRD wagons \"%s\"", trd));\r
2bfe5463 92 Int_t bitmap = AliTRDpwgppHelper::ParseOptions(trd);\r
93 for(Int_t it=0; it<AliTRDpwgppHelper::kNTRDQATASKS; it++){\r
94 if(gROOT->LoadMacro(Form("%s/Add%s.C+", addMacroPath, TString(AliTRDpwgppHelper::TaskClassName(it))(3,20).Data()))) {\r
95 Error("AddTrainPerformanceTRD()", Form("Error loading %s task.", AliTRDpwgppHelper::TaskClassName(it)));\r
94b94be0 96 return kFALSE;\r
97 } \r
2bfe5463 98 if(!AliTRDpwgppHelper::DoTask(it, bitmap)) continue;\r
94b94be0 99\r
100 switch(it){\r
2bfe5463 101 case AliTRDpwgppHelper::kCheckESD:\r
94b94be0 102 AddTRDcheckESD(mgr); break;\r
2bfe5463 103 case AliTRDpwgppHelper::kInfoGen:\r
94b94be0 104 AddTRDinfoGen(mgr, 0, NULL, ci); break;\r
2bfe5463 105 case AliTRDpwgppHelper::kCheckDET:\r
94b94be0 106 // map slots\r
2bfe5463 107 ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
108 ce[1]=ci[AliTRDpwgppHelper::kTracksSA];\r
109 ce[2]=ci[AliTRDpwgppHelper::kTracksKink];\r
110 ce[3]=ci[AliTRDpwgppHelper::kEventInfo];\r
111 ce[4]=ci[AliTRDpwgppHelper::kClusters];\r
94b94be0 112 AddTRDcheckDET(mgr, bitmap, ce);\r
113 break;\r
2bfe5463 114 case AliTRDpwgppHelper::kEfficiency:\r
94b94be0 115 // map slots\r
2bfe5463 116 ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
117 ce[1]=ci[AliTRDpwgppHelper::kTracksSA];\r
118 ce[2]=ci[AliTRDpwgppHelper::kTracksKink];\r
119 ce[3]=ci[AliTRDpwgppHelper::kEventInfo];\r
120 ce[4]=ci[AliTRDpwgppHelper::kClusters];\r
94b94be0 121 AddTRDefficiency(mgr, bitmap, ce);\r
122 break;\r
2bfe5463 123 case AliTRDpwgppHelper::kResolution:\r
94b94be0 124 // map slots\r
2bfe5463 125 ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
126 ce[1]=ci[AliTRDpwgppHelper::kTracksSA];\r
127 ce[2]=ci[AliTRDpwgppHelper::kTracksKink];\r
128 ce[3]=ci[AliTRDpwgppHelper::kEventInfo];\r
129 ce[4]=ci[AliTRDpwgppHelper::kClusters];\r
94b94be0 130 AddTRDresolution(mgr, bitmap, ce); \r
131 break;\r
2bfe5463 132 case AliTRDpwgppHelper::kCheckPID:\r
94b94be0 133 // map slots\r
2bfe5463 134 ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
135 ce[1]=ci[AliTRDpwgppHelper::kEventInfo];\r
136 ce[2]=ci[AliTRDpwgppHelper::kV0List];\r
94b94be0 137 AddTRDcheckPID(mgr, bitmap, ce, &ce[3]);\r
138 break;\r
2bfe5463 139 case AliTRDpwgppHelper::kCheckTRK:\r
3ceb45ae 140 // map slots\r
2bfe5463 141 ce[0]=ci[AliTRDpwgppHelper::kTracksBarrel];\r
142 ce[1]=ci[AliTRDpwgppHelper::kEventInfo];\r
143 ce[2]=ci[AliTRDpwgppHelper::kClusters];\r
3ceb45ae 144 AddTRDcheckTRK(mgr, 0, ce);\r
145 break;\r
2bfe5463 146 case AliTRDpwgppHelper::kV0Monitor:\r
94b94be0 147 // slots already mapped by checkPID\r
148 AddTRDv0Monitor(mgr, 0, ce);\r
149 break;\r
150 default:\r
151 Warning("AddTrainPerformanceTRD()", Form("No performance task registered at slot %d.", it)); \r
152 }\r
153 }\r
154 return kTRUE;\r
155}\r
156\r
157const Char_t* Translate(Bool_t doCheckESD, Bool_t doCheckDET, Bool_t doEffic, Bool_t doResolution, Bool_t doCheckPID, Bool_t doCheckV0)\r
158{\r
159 opt.Clear();\r
160 if( doCheckESD==kTRUE &&\r
161 doCheckDET==kTRUE &&\r
162 doEffic==kTRUE &&\r
163 doResolution==kTRUE &&\r
164 doCheckPID==kTRUE &&\r
165 doCheckV0==kTRUE\r
166 ){\r
167 opt="ALL";\r
168 } else {\r
169 Bool_t kINDENT(kFALSE);\r
170 if(doCheckESD){ \r
171 opt.Append("ESD");\r
172 kINDENT=kTRUE;\r
173 }\r
174 if(doCheckDET){ \r
175 if(kINDENT) opt.Append(" ");\r
176 opt.Append("DET"); \r
177 kINDENT = kTRUE;\r
178 }\r
179 if(doEffic){ \r
180 if(kINDENT) opt.Append(" ");\r
181 opt.Append("EFF");\r
182 kINDENT=kTRUE;\r
183 }\r
184 if(doResolution){ \r
185 if(kINDENT) opt.Append(" ");\r
186 opt.Append("RES");\r
187 kINDENT=kTRUE;\r
188 }\r
189 if(doCheckPID){ \r
190 if(kINDENT) opt.Append(" ");\r
191 opt.Append("PID");\r
192 kINDENT=kTRUE;\r
193 }\r
194 if(doCheckV0){ \r
195 if(kINDENT) opt.Append(" ");\r
196 opt.Append("V0");\r
197 kINDENT=kTRUE;\r
198 }\r
199 }\r
200\r
201 return (const Char_t*)opt.Data();\r
202}\r
203\r
204\r