]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/TRD/AliTRDcheckESD.h
minor indentation change
[u/mrichter/AliRoot.git] / PWGPP / TRD / AliTRDcheckESD.h
CommitLineData
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
22class AliESDEvent;
23class AliMCEvent;
24class AliESDpid;
25class AliCFContainer;
26class AliAnalysisCuts;
694247e5 27class AliESDtrack;
69656036
AB
28class TH1;
29class TH2;
30class TH1F;
31class TH1D;
32class TH2F;
33class TH3F;
34class TH3;
35class TObjArray;
36class TGraph;
37class TGraphErrors;
38class TAxis;
39
40class AliTRDcheckESD : public AliAnalysisTaskSE {
41public:
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
122private:
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