]>
Commit | Line | Data |
---|---|---|
69656036 AB |
1 | #ifndef ALITRDCHECKESD_H |
2 | #define ALITRDCHECKESD_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id: AliTRDcheckESD.h 27496 2008-07-22 08:35:45Z cblume $ */ | |
7 | ||
8 | ///////////////////////////////////////////////////// | |
9 | // | |
10 | // Check basic detector results at ESD level | |
11 | // | |
12 | // Author | |
13 | // Alex Bercuci <A.Bercuci@gsi.de> | |
14 | // Ionut Arsene <iarsene@cern.ch> | |
15 | // | |
16 | ////////////////////////////////////////////////////// | |
17 | ||
18 | #ifndef ALIANALYSISTASK_H | |
19 | #include "AliAnalysisTaskSE.h" | |
20 | #endif | |
21 | ||
22 | class AliESDEvent; | |
23 | class AliMCEvent; | |
24 | class AliESDpid; | |
25 | class AliCFContainer; | |
26 | class AliAnalysisCuts; | |
694247e5 | 27 | class AliESDtrack; |
69656036 AB |
28 | class TH1; |
29 | class TH2; | |
30 | class TH1F; | |
31 | class TH1D; | |
32 | class TH2F; | |
33 | class TH3F; | |
34 | class TH3; | |
35 | class TObjArray; | |
36 | class TGraph; | |
37 | class TGraphErrors; | |
38 | class TAxis; | |
39 | ||
40 | class AliTRDcheckESD : public AliAnalysisTaskSE { | |
41 | public: | |
42 | enum ETRDcheckESDstatus { | |
43 | kMC = BIT(0) // use MC info | |
44 | ,kCollision = BIT(1) // | |
45 | }; | |
46 | ||
47 | enum ETrdCfVariables { | |
c2c78193 | 48 | // Event wise variables |
69656036 AB |
49 | kEventVtxZ=0, // event vtx. Z --- |
50 | kEventMult, // event multiplicity --- | |
51 | kEventTrigger, // trigger class | |
52 | kEventBC, // event BC --- | |
c2c78193 | 53 | // Track wise variables |
69656036 AB |
54 | kTrackTOFBC, // track TOF BC --- |
55 | kTrackDCAxy, // dca xy --- | |
56 | kTrackDCAz, // dca z --- | |
57 | kTrackCharge, // charge --- | |
58 | kTrackOuterParamRadius, // outer param radius | |
59 | kTrackPhi, // phi at the vertex --- | |
60 | kTrackPhiTRD, // phi at the entrance of TRD --- | |
61 | kTrackEta, // eta at the vertex --- | |
62 | kTrackEtaTRD, // eta at the entrance of TRD --- | |
63 | kTrackPt, // pt at the vertex --- | |
64 | kTrackPtTRD, // pt at the entrance of TRD --- | |
65 | kTrackP, // p at the vertex --- | |
66 | kTrackPTRD, // p at the entrance of TRD --- | |
67 | kTrackTrdChi2, // TRD track chi2 --- | |
68 | kTrackTrdTracklets, // number of TRD tracklets --- | |
69 | kTrackTrdClusters, // number of TRD clusters --- | |
70 | kTrackTrdQuality, // TRD quality for TOF | |
71 | kTrackTRDBudget, // TRD material budget | |
c2c78193 | 72 | kTrackTOFchi2, // TOF chi2 |
73 | // Tracklets wise variables | |
69656036 AB |
74 | kTrackletQtot, // tracklet qtot in each layer |
75 | kTrackletClustersVsRows, // clusters / crossed rows | |
76 | kTrackletClusters, // number of clusters per tracklet | |
77 | kTrackletP, // tracklet p in each layer | |
78 | kTrackPlossTRDlayer, // p loss at each layer | |
79 | kTrackletLayer, // layer of the current tracklet | |
c2c78193 | 80 | // Tracklet slice variables |
69656036 AB |
81 | kTrackletSlice, // tracklet slice number |
82 | kTrackletPHslice, // charge per tracklet slice | |
83 | kNTrdCfVariables, | |
84 | kNMaxAssignedTriggers = 200 | |
85 | }; | |
86 | ||
87 | enum ETrdCfSteps { | |
88 | kTPCreference=0, | |
89 | kTRD, | |
90 | kTOF, | |
91 | kTOFin, | |
92 | kTOFout, | |
93 | kNSteps | |
94 | }; | |
95 | ||
96 | AliTRDcheckESD(); | |
97 | AliTRDcheckESD(char* name); | |
98 | virtual ~AliTRDcheckESD(); | |
99 | ||
100 | void UserCreateOutputObjects(); | |
101 | void UserExec(Option_t *); | |
102 | ||
103 | void SetRefTrackFilter(AliAnalysisCuts* const filter) {fReferenceTrackFilter = filter;} | |
104 | ||
105 | Bool_t HasMC() const { return TESTBIT(fStatus, kMC);} | |
106 | Bool_t IsCollision() const {return TESTBIT(fStatus, kCollision);} | |
107 | void SetCollision(Bool_t set=kTRUE) {set ? SETBIT(fStatus, kCollision) : CLRBIT(fStatus, kCollision);} | |
108 | TObjArray* Histos(); | |
109 | Int_t GetTriggerCounter(const Char_t* triggerName) const; | |
110 | void PrintTriggers() const; | |
111 | Bool_t Load(const Char_t *fn="AnalysisResults.root", const Char_t *dir="TRD_Performance", const Char_t *name=NULL); | |
112 | void SetMC(Bool_t mc = kTRUE) { mc ? SETBIT(fStatus, kMC) : CLRBIT(fStatus, kMC);} | |
113 | Bool_t PutTrendValue(const Char_t *name, Double_t val); | |
114 | void Terminate(Option_t *); | |
115 | void MakeSummaryFromCF(Double_t* trendValues=0x0, const Char_t* triggerName="", Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); | |
116 | Int_t GetNAssignedTriggers(); | |
117 | void AddUserTrigger(const Char_t* name) {fUserEnabledTriggers += name; fUserEnabledTriggers += ";";} | |
118 | ||
119 | void AddCFContainer(const Char_t* name, const Char_t* title, Int_t nSteps, Int_t* steps, | |
120 | Int_t nVars, UInt_t* vars, TArrayD* binLimits); | |
121 | ||
122 | private: | |
123 | static const Float_t fgkxTPC; // end radial position of TPC | |
124 | static const Float_t fgkxTOF; // start radial position of TOF | |
125 | static const Char_t* fgkVarNames[kNTrdCfVariables]; | |
126 | static const Char_t* fgkStepNames[kNSteps]; | |
127 | ||
128 | void PlotTrackingSummaryFromCF(Double_t* trendValues=0x0, | |
129 | const Char_t* triggerName="", | |
130 | Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together | |
131 | void PlotPidSummaryFromCF(Double_t* trendValues=0x0, | |
132 | const Char_t* triggerName="", | |
133 | Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together | |
134 | void PlotCentSummaryFromCF(Double_t* trendValues=0x0, const Char_t* triggerName="", | |
135 | Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // centrality dependent plots | |
136 | void PlotOtherSummaryFromCF(Double_t* trendValues); | |
137 | ||
138 | AliTRDcheckESD(const AliTRDcheckESD&); | |
139 | AliTRDcheckESD& operator=(const AliTRDcheckESD&); | |
140 | Int_t Pdg2Idx(Int_t pdg) const; | |
141 | void Process(TH1 **h, TGraphErrors *g); | |
142 | void Process2D(TH2 * const h, TGraphErrors **g); | |
143 | void PrintStatus(ULong_t s); | |
144 | TH2F* Proj3D(TH3* hist, TH2* accMap, Int_t binLow, Int_t binHigh, Float_t &entries); | |
145 | TH1D* Proj2D(TH2* hist, TH1* mpvErr=0x0, TH1* widthErr=0x0, TH1* chi2=0x0); | |
146 | TH1F* EfficiencyTRD(TH3* tpc3D, TH3* trd3D, Bool_t useAcceptance=kTRUE); | |
147 | TH1F* EfficiencyFromPhiPt(AliCFContainer* cf, Int_t minNtrkl, Int_t maxNtrkl, Int_t stepNom, Int_t stepDenom, Int_t var=kTrackPt); | |
148 | void DrawTRDGrid(); | |
149 | void SetStyle(TH1* hist, Int_t lineStyle, Int_t lineColor, Int_t lineWidth, | |
150 | Int_t markerStyle, Int_t markerColor, Int_t markerSize); | |
151 | void SetStyle(TAxis* axis, const Char_t* title, Float_t titleSize, Float_t titleOffset, Bool_t centerTitle, | |
152 | Float_t labelSize); | |
153 | void CheckActiveSM(TH1D* phiProj, Bool_t activeSM[18]); | |
154 | void FindIsolatedBCs(TH1D* bcHist, Bool_t isIsolated[3500]); | |
155 | void InitializeCFContainers(); | |
156 | Int_t GetTriggerIndex(const Char_t* name, Bool_t createNew=kTRUE); | |
157 | void FillEventInfo(Double_t* values); | |
158 | void FillTrackInfo(Double_t* values, AliESDtrack* esdTrack); | |
159 | void FillTrackletInfo(Double_t* values, AliESDtrack* esdTrack, Int_t iPlane, | |
160 | Double_t* localSagitaPhi, Double_t localMom[][3], Bool_t* localMomGood); | |
161 | void FillTrackletSliceInfo(Double_t* values, AliESDtrack* esdTrack, Int_t iSlice); | |
162 | //void FillCFContainer(AliCFContainer* cf, Double_t* values, Int_t step); | |
163 | void FillCFContainer(AliCFContainer* cf, Double_t* values, Bool_t* stepSelections); | |
164 | Bool_t IsTrackSelected(AliESDtrack* track, Double_t* values, Int_t step); | |
165 | void FillGlobalTrackContainers(Double_t* values, Bool_t* stepSelections, Int_t itrig); | |
166 | void FillTrdTrackletContainers(Double_t* values, Bool_t* stepSelections, Int_t itrig); | |
167 | void FillTrdSliceContainers(Double_t* values, Bool_t* stepSelections, Int_t itrig); | |
168 | ||
169 | Int_t fStatus; // bit mask for controlling the task | |
170 | Int_t fNRefFigures; // number of current ref plots | |
171 | AliESDEvent *fESD; //! ESD event | |
172 | AliMCEvent *fMC; //! MC event | |
173 | AliESDpid *fESDpid; // ESD pid object | |
174 | static FILE *fgFile; //! trend file streamer | |
175 | TObjArray* fHistos; //! QA histograms | |
176 | ||
177 | AliAnalysisCuts* fReferenceTrackFilter; // reference track filter | |
178 | Bool_t fPhysSelTriggersEnabled; // flag wheter physics selection triggers were enabled | |
179 | TString fUserEnabledTriggers; // list of user enabled triggers | |
180 | Int_t fNAssignedTriggers; // number of assigned triggers | |
181 | ||
182 | ClassDef(AliTRDcheckESD, 10) // user oriented TRD analysis based on ESD-MC data | |
183 | }; | |
184 | #endif |