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