]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/TRD/AliTRDcheckESD.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[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;
27class TH1;
28class TH2;
29class TH1F;
30class TH1D;
31class TH2F;
32class TH3F;
33class TH3;
34class TObjArray;
35class TGraph;
36class TGraphErrors;
37class TAxis;
38
39class AliTRDcheckESD : public AliAnalysisTaskSE {
40public:
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
116private:
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