new macro for processing calibration tasks
[u/mrichter/AliRoot.git] / TRD / qaRec / macros / AliTRDperformanceTrain.h
CommitLineData
6da3eee3 1#ifndef ALITRDPERFORMANCETRAIN_H
2#define ALITRDPERFORMANCETRAIN_H
3
4#define BIT(n) (1 << (n))
5#define SETBIT(n,i) ((n) |= BIT(i))
6#define TSTBIT(n,i) ((Bool_t)(((n) & BIT(i)) != 0))
7#define CLRBIT(n,i) ((n) &= ~BIT(i))
8
9#define NTRDQATASKS 6
0fe3fa87 10#define NTRDCALIBTASKS 7
6da3eee3 11const Int_t NTRDTASKS = NTRDQATASKS+NTRDCALIBTASKS;
12
13enum AliTRDrecoTasks{
14 kCheckESD = 0
15 ,kInfoGen = 1
16 ,kCheckDET = 2
17 ,kEfficiency = 3
18 ,kResolution = 4
19 ,kCheckPID = 5
20 ,kCalibration = 6
21 ,kEfficiencyMC = 7
22 ,kAlignment = 8
0fe3fa87 23 ,kPIDRefMakerLQ = 9
24 ,kPIDRefMakerNN =10
25 ,kClErrParam =11
26 ,kMultiplicity =12
6da3eee3 27};
28
29const Char_t* fgkTRDtaskClassName[NTRDTASKS] = {
30 "AliTRDcheckESD"
31 ,"AliTRDinfoGen"
32 ,"AliTRDcheckDET"
33 ,"AliTRDefficiency"
34 ,"AliTRDresolution"
35 ,"AliTRDcheckPID"
36 ,"AliTRDcalibration"
37 ,"AliTRDefficiencyMC"
38 ,"AliTRDalignmentTask"
0fe3fa87 39 ,"AliTRDpidRefMakerLQ"
40 ,"AliTRDpidRefMakerNN"
6da3eee3 41 ,"AliTRDclusterResolution"
42 ,"AliTRDmultiplicity"
43};
44
45const Char_t *fgkTRDtaskOpt[NTRDTASKS+1] = {
46 ""
47 ,"GEN"
48 ,"DET"
49 ,"EFF"
50 ,"RES"
51 ,"PID"
52 ,"CAL"
53 ,"EFFC"
54 ,"ALGN"
0fe3fa87 55 ,"LQR"
56 ,"NNR"
6da3eee3 57 ,"CLRES"
58 ,"MULT"
59 ,"ALL"
60};
61
62#if ! defined (__CINT__) || defined (__MAKECINT__)
0fe3fa87 63#include "TFileMerger.h"
64#include "TSystem.h"
6da3eee3 65#include "TString.h"
66#include "TObjString.h"
67#include "TObjArray.h"
68#include "TError.h"
69#endif
70
d797b5bb 71#include <cstring>
72
0fe3fa87 73//____________________________________________
74Bool_t HasReadMCData(Char_t *opt){
75 return !(Bool_t)strstr(opt, "NOMC");
76}
77
78//____________________________________________
79Bool_t HasReadFriendData(Char_t *opt){
80 return !(Bool_t)strstr(opt, "NOFR");
81}
82
6da3eee3 83//____________________________________________
84Int_t ParseOptions(Char_t *trd)
85{
86 Int_t fSteerTask = 1;
87 TObjArray *tasksArray = TString(trd).Tokenize(" ");
88 for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){
89 TString s = (dynamic_cast<TObjString *>(tasksArray->UncheckedAt(isel)))->String();
90 if(s.CompareTo("ALL") == 0){
91 for(Int_t itask = 0; itask < NTRDQATASKS; itask++) SETBIT(fSteerTask, itask);
92 continue;
93 } else {
94 Bool_t foundOpt = kFALSE;
95 for(Int_t itask = 2; itask < NTRDTASKS; itask++){
96 if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue;
97 SETBIT(fSteerTask, itask); SETBIT(fSteerTask, kInfoGen);
98 foundOpt = kTRUE;
99 break;
100 }
101 if(!foundOpt) Info("run.C", Form("TRD task %s not implemented (yet).", s.Data()));
102 }
103 }
104 // extra rules for calibration tasks
0fe3fa87 105// if(TSTBIT(fSteerTask, kCalibration)) SETBIT(fSteerTask, kCheckDET);
106// if(TSTBIT(fSteerTask, kMultiplicity)) SETBIT(fSteerTask, kEfficiency);
107// if(TSTBIT(fSteerTask, kEfficiencyMC)) SETBIT(fSteerTask, kEfficiency);
108// if(TSTBIT(fSteerTask, kClErrParam)) SETBIT(fSteerTask, kResolution);
109// if(TSTBIT(fSteerTask, kAlignment)) SETBIT(fSteerTask, kResolution);
110// if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBIT(fSteerTask, kCheckPID);
6da3eee3 111
112 return fSteerTask;
113}
114
0fe3fa87 115//______________________________________________________
116void mergeProd(const Char_t *mark, const Char_t *files)
117{
118 const Int_t kBatch = 20;
6da3eee3 119
0fe3fa87 120 TFileMerger *fFM = new TFileMerger(1);
121 fFM->OutputFile(Form("%s/0_%s", gSystem->ExpandPathName("$PWD"), mark));
122
123 Int_t jbatch = 0, nbatch = 0;
124 string filename;
125 ifstream file(files);
126 while(getline(file, filename)){
127 if(Int_t(filename.find(mark)) < 0) continue;
128 fFM->AddFile(filename.c_str()); nbatch++;
129 if(nbatch==kBatch){
130 //printf("MERGE BATCH %d [%d]\n", jbatch, nbatch);
131 fFM->Merge(); jbatch++;
132 new(fFM) TFileMerger(kTRUE);
133 fFM->OutputFile(Form("%s/%d_%s", gSystem->ExpandPathName("$PWD"), jbatch, mark));
134 nbatch=0;
135 }
136 }
137 if(nbatch){
138 //printf("MERGE BATCH %d[%d]\n", jbatch, nbatch);
139 fFM->Merge();
140 jbatch++;
141 }
142 if(!jbatch){
143 delete fFM;
144 return;
145 }
146
147 new(fFM) TFileMerger(kTRUE);
148 fFM->OutputFile(Form("%s/%s", gSystem->ExpandPathName("$PWD"), mark));
149 for(Int_t ib=jbatch; ib--;){
150 fFM->AddFile(Form("%s/%d_%s", gSystem->ExpandPathName("$PWD"), ib, mark));
151 gSystem->Exec(Form("rm -f %s/%d_%s", gSystem->ExpandPathName("$PWD"), ib, mark));
152 }
153 fFM->Merge();
154 delete fFM;
d797b5bb 155}
0fe3fa87 156
6da3eee3 157#endif
158