]>
Commit | Line | Data |
---|---|---|
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 | |
76 | TString opt("");\r | |
77 | const 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 | 78 | Bool_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 | |
157 | const 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 |