]>
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 | |
26 | // gSystem->Load("libPWG1.so");\r | |
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 | |
66 | #include "PWG1/TRD/macros/AddTRDcheckESD.C"\r | |
67 | #include "PWG1/TRD/macros/AddTRDinfoGen.C"\r | |
68 | #include "PWG1/TRD/macros/AddTRDcheckDET.C"\r | |
69 | #include "PWG1/TRD/macros/AddTRDefficiency.C"\r | |
70 | #include "PWG1/TRD/macros/AddTRDresolution.C"\r | |
71 | #include "PWG1/TRD/macros/AddTRDcheckPID.C"\r | |
72 | #include "PWG1/TRD/macros/AddTRDv0Monitor.C"\r | |
73 | #endif\r | |
74 | \r | |
75 | TString opt("");\r | |
76 | 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 | |
77 | Bool_t AddTrainPerformanceTRD(Char_t *trd="ALL", const Char_t *addMacroPath = "$ALICE_ROOT/PWG1/TRD/macros")\r | |
78 | {\r | |
79 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r | |
80 | if(!mgr) { \r | |
81 | Error("AddTrainPerformanceTRD", "AliAnalysisManager not set!");\r | |
82 | return kFALSE;\r | |
83 | }\r | |
84 | \r | |
85 | // TRD data containers\r | |
86 | AliAnalysisDataContainer *ci[AliTRDpwg1Helper::kNOutSlots];\r | |
87 | AliAnalysisDataContainer *ce[5];\r | |
88 | \r | |
89 | Info("AddTrainPerformanceTRD", Form("Add Macros taken from %s", addMacroPath));\r | |
90 | Info("AddTrainPerformanceTRD", Form("TRD wagons \"%s\"", trd));\r | |
91 | Int_t bitmap = AliTRDpwg1Helper::ParseOptions(trd);\r | |
92 | for(Int_t it=0; it<AliTRDpwg1Helper::kNTRDQATASKS; it++){\r | |
93 | if(gROOT->LoadMacro(Form("%s/Add%s.C+", addMacroPath, TString(AliTRDpwg1Helper::TaskClassName(it))(3,20).Data()))) {\r | |
94 | Error("AddTrainPerformanceTRD()", Form("Error loading %s task.", AliTRDpwg1Helper::TaskClassName(it)));\r | |
95 | return kFALSE;\r | |
96 | } \r | |
97 | if(!AliTRDpwg1Helper::DoTask(it, bitmap)) continue;\r | |
98 | \r | |
99 | switch(it){\r | |
100 | case AliTRDpwg1Helper::kCheckESD:\r | |
101 | AddTRDcheckESD(mgr); break;\r | |
102 | case AliTRDpwg1Helper::kInfoGen:\r | |
103 | AddTRDinfoGen(mgr, 0, NULL, ci); break;\r | |
104 | case AliTRDpwg1Helper::kCheckDET:\r | |
105 | // map slots\r | |
106 | ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r | |
107 | ce[1]=ci[AliTRDpwg1Helper::kTracksSA];\r | |
108 | ce[2]=ci[AliTRDpwg1Helper::kTracksKink];\r | |
109 | ce[3]=ci[AliTRDpwg1Helper::kEventInfo];\r | |
110 | AddTRDcheckDET(mgr, bitmap, ce);\r | |
111 | break;\r | |
112 | case AliTRDpwg1Helper::kEfficiency:\r | |
113 | // map slots\r | |
114 | ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r | |
115 | ce[1]=ci[AliTRDpwg1Helper::kTracksSA];\r | |
116 | ce[2]=ci[AliTRDpwg1Helper::kTracksKink];\r | |
117 | ce[3]=ci[AliTRDpwg1Helper::kEventInfo];\r | |
118 | AddTRDefficiency(mgr, bitmap, ce);\r | |
119 | break;\r | |
120 | case AliTRDpwg1Helper::kResolution:\r | |
121 | // map slots\r | |
122 | ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r | |
123 | ce[1]=ci[AliTRDpwg1Helper::kTracksSA];\r | |
124 | ce[2]=ci[AliTRDpwg1Helper::kTracksKink];\r | |
125 | ce[3]=ci[AliTRDpwg1Helper::kEventInfo];\r | |
126 | AddTRDresolution(mgr, bitmap, ce); \r | |
127 | break;\r | |
128 | case AliTRDpwg1Helper::kCheckPID:\r | |
129 | // map slots\r | |
130 | ce[0]=ci[AliTRDpwg1Helper::kTracksBarrel];\r | |
131 | ce[1]=ci[AliTRDpwg1Helper::kEventInfo];\r | |
132 | ce[2]=ci[AliTRDpwg1Helper::kV0List];\r | |
133 | AddTRDcheckPID(mgr, bitmap, ce, &ce[3]);\r | |
134 | break;\r | |
135 | case AliTRDpwg1Helper::kV0Monitor:\r | |
136 | // slots already mapped by checkPID\r | |
137 | AddTRDv0Monitor(mgr, 0, ce);\r | |
138 | break;\r | |
139 | default:\r | |
140 | Warning("AddTrainPerformanceTRD()", Form("No performance task registered at slot %d.", it)); \r | |
141 | }\r | |
142 | }\r | |
143 | return kTRUE;\r | |
144 | }\r | |
145 | \r | |
146 | const Char_t* Translate(Bool_t doCheckESD, Bool_t doCheckDET, Bool_t doEffic, Bool_t doResolution, Bool_t doCheckPID, Bool_t doCheckV0)\r | |
147 | {\r | |
148 | opt.Clear();\r | |
149 | if( doCheckESD==kTRUE &&\r | |
150 | doCheckDET==kTRUE &&\r | |
151 | doEffic==kTRUE &&\r | |
152 | doResolution==kTRUE &&\r | |
153 | doCheckPID==kTRUE &&\r | |
154 | doCheckV0==kTRUE\r | |
155 | ){\r | |
156 | opt="ALL";\r | |
157 | } else {\r | |
158 | Bool_t kINDENT(kFALSE);\r | |
159 | if(doCheckESD){ \r | |
160 | opt.Append("ESD");\r | |
161 | kINDENT=kTRUE;\r | |
162 | }\r | |
163 | if(doCheckDET){ \r | |
164 | if(kINDENT) opt.Append(" ");\r | |
165 | opt.Append("DET"); \r | |
166 | kINDENT = kTRUE;\r | |
167 | }\r | |
168 | if(doEffic){ \r | |
169 | if(kINDENT) opt.Append(" ");\r | |
170 | opt.Append("EFF");\r | |
171 | kINDENT=kTRUE;\r | |
172 | }\r | |
173 | if(doResolution){ \r | |
174 | if(kINDENT) opt.Append(" ");\r | |
175 | opt.Append("RES");\r | |
176 | kINDENT=kTRUE;\r | |
177 | }\r | |
178 | if(doCheckPID){ \r | |
179 | if(kINDENT) opt.Append(" ");\r | |
180 | opt.Append("PID");\r | |
181 | kINDENT=kTRUE;\r | |
182 | }\r | |
183 | if(doCheckV0){ \r | |
184 | if(kINDENT) opt.Append(" ");\r | |
185 | opt.Append("V0");\r | |
186 | kINDENT=kTRUE;\r | |
187 | }\r | |
188 | }\r | |
189 | \r | |
190 | return (const Char_t*)opt.Data();\r | |
191 | }\r | |
192 | \r | |
193 | \r |