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