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