1 #ifndef ALITRDPERFORMANCETRAIN_H
2 #define ALITRDPERFORMANCETRAIN_H
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))
10 #define NTRDCALIBTASKS 6
11 const Int_t NTRDTASKS = NTRDQATASKS+NTRDCALIBTASKS;
28 const Char_t* fgkTRDtaskClassName[NTRDTASKS] = {
37 ,"AliTRDalignmentTask"
39 ,"AliTRDclusterResolution"
43 const Char_t *fgkTRDtaskOpt[NTRDTASKS+1] = {
59 #if ! defined (__CINT__) || defined (__MAKECINT__)
61 #include "TObjString.h"
62 #include "TObjArray.h"
68 //____________________________________________
69 Int_t ParseOptions(Char_t *trd)
72 TObjArray *tasksArray = TString(trd).Tokenize(" ");
73 for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){
74 TString s = (dynamic_cast<TObjString *>(tasksArray->UncheckedAt(isel)))->String();
75 if(s.CompareTo("ALL") == 0){
76 for(Int_t itask = 0; itask < NTRDQATASKS; itask++) SETBIT(fSteerTask, itask);
79 Bool_t foundOpt = kFALSE;
80 for(Int_t itask = 2; itask < NTRDTASKS; itask++){
81 if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue;
82 SETBIT(fSteerTask, itask); SETBIT(fSteerTask, kInfoGen);
86 if(!foundOpt) Info("run.C", Form("TRD task %s not implemented (yet).", s.Data()));
89 // extra rules for calibration tasks
90 if(TSTBIT(fSteerTask, kCalibration)) SETBIT(fSteerTask, kCheckDET);
91 if(TSTBIT(fSteerTask, kMultiplicity)) SETBIT(fSteerTask, kEfficiency);
92 if(TSTBIT(fSteerTask, kEfficiencyMC)) SETBIT(fSteerTask, kEfficiency);
93 if(TSTBIT(fSteerTask, kClErrParam)) SETBIT(fSteerTask, kResolution);
94 if(TSTBIT(fSteerTask, kAlignment)) SETBIT(fSteerTask, kResolution);
95 if(TSTBIT(fSteerTask, kPIDRefMaker)) SETBIT(fSteerTask, kCheckPID);
100 //____________________________________________
101 Bool_t HasReadMCData(Char_t *opt){
102 return !(Bool_t)strstr(opt, "NOMC");
105 //____________________________________________
106 Bool_t HasReadFriendData(Char_t *opt){
107 return !(Bool_t)strstr(opt, "NOFR");