]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TRD/AliTRDcheckESD.h
using AliCDBConnect task in test train of TRD
[u/mrichter/AliRoot.git] / PWG1 / TRD / AliTRDcheckESD.h
CommitLineData
1ee39b3a 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//
15//////////////////////////////////////////////////////
16
17#ifndef ALIANALYSISTASK_H
f8f46e4d 18#include "AliAnalysisTaskSE.h"
1ee39b3a 19#endif
20
21class AliESDEvent;
22class AliMCEvent;
fb65de21 23class AliESDpid;
7698e7a4 24class AliCFContainer;
25class AliAnalysisCuts;
1ee39b3a 26class TH1;
f2e89a4c 27class TH2;
64d57299 28class TH1F;
7698e7a4 29class TH1D;
64d57299 30class TH2F;
31class TH3F;
bd97a050 32class TH3;
1ee39b3a 33class TObjArray;
34class TGraph;
35class TGraphErrors;
33d501fa 36class TAxis;
7698e7a4 37
f8f46e4d 38class AliTRDcheckESD : public AliAnalysisTaskSE {
1ee39b3a 39public:
40 enum ETRDcheckESDstatus {
36d21092 41 kMC = BIT(0) // use MC info
97d0ccba 42 ,kCollision = BIT(1) //
1ee39b3a 43 };
44 enum ETRDcheckESDhistos {
2bf6d80c 45 kNCl = 1 // number of clusters per track
f76b8071 46 ,kTRDstat // TRD tracks status
47 ,kTRDmom // TRD track momentum
48 ,kPtRes // Pt resolution @ vertex for TRD
49 ,kTPCVertex // event vertex from TPC
50 ,kEventVertex // event vertex
51 ,kNTracksAll // ntracks - all
52 ,kNTracksAcc // ntracks - inside acc. and DCA cut
53 ,kNTracksTPC // additional cut on number of TPC clusters
54 ,kDCAxy // transverse DCA
55 ,kDCAz // z - DCA
56 ,kPt1 // Pt distribution, eta and ptmin cuts
57 ,kPt2 // Pt distribution, cuts from kPt1 and DCA cuts
58 ,kPt3pos // Pt distribution, cuts from kPt2 and cut on TPC clusters for positives (>100)
59 ,kPt3neg // Pt distribution, cuts from kPt2 and cut on TPC clusters for negatives (>100)
60 ,kPt4pos // Pt distribution, cuts from kPt3pos and at least one TRD tracklet
61 ,kPt4neg // Pt distribution, cuts from kPt3neg and at least one TRD tracklet
62 ,kTheta // distribution of theta for tracks passing the cuts from kPt4pos and kPt4neg
63 ,kPhi // distribution of phi for tracks passing the cuts from kPt4pos and kPt4neg
64 ,kNTPCCl // number of TPC clusters, cuts from kPt2
65 ,kNTPCCl2 // number of TPC clusters, cuts from kPt2 + pt>1 GeV/c
66 ,kTPCDedx // TPC dE/dx, cuts from kPt3pos or kPt3neg
67 ,kEtaPhi // (eta,phi) distrib. for tracks after the cuts from kPt3pos or kPt3neg
68 ,kEtaNclsTPC // (TPC_Ncls,eta) distrib. for tracks after the cuts from kPt3pos or kPt3neg
69 ,kPhiNclsTPC // (TPC_Ncls,phi) distrib. for tracks after the cuts from kPt3pos or kPt3neg
2bf6d80c 70 ,kSPDMult // SPD multiplicity
f76b8071 71 ,kNTrackletsTRD // (TRD tracklets per track, P) distribution, after cuts from kPt4pos or kPt4neg
2bf6d80c 72 ,kNClsTrackTRD=kNTrackletsTRD+6 // (TRD clusters per track, P) distribution, after cuts from kPt4pos or kPt4neg
73 ,kPHSlice=kNClsTrackTRD+6 // (slicePH,sliceNo) distribution, after cuts from kPt4pos or kPt4neg
74 ,kPHSliceTPCpions=kPHSlice+6 // (slicePH,sliceNo) distribution for TPC pions, after cuts from kPt4pos or kPt4neg
75 ,kTPCdedxPions=kPHSliceTPCpions+6 // (TPC dedx,P) for selected TPC pions
76 ,kPHSliceTPCelectrons=kTPCdedxPions+6 // (slicePH,sliceNo) distribution for TPC electrons, after cuts from kPt4pos or kPt4neg
77 ,kTPCdedxElectrons=kPHSliceTPCelectrons+6 // (TPC dedx,P) for selected TPC electrons
78 ,kQtotP=kTPCdedxElectrons+6 // (total Q from slices, momentum) distribution, after cuts from kPt4pos or kPt4neg
79 ,kPropagXYvsP=kQtotP+6 // (X,Y,momentum) distribution after AliESDtrack::PropagateTo(r=300.)
f76b8071 80 ,kPropagRZvsP // (R,Z,momentum) distribution after AliESDtrack::PropagateTo(r=300.)
bd97a050 81 ,kTPCRefTracksPos // (eta,detector phi,Pt) distribution of reference TPC positive tracks (fulfill cuts from kPt3pos)
2bf6d80c 82 ,kTPCRefTracksNeg=kTPCRefTracksPos+6 // (eta,detector phi,Pt) distribution of reference TPC negative tracks (fulfill cuts from kPt3neg)
83 ,kTRDRefTracksPos=kTPCRefTracksNeg+6 // (eta,detector phi,Pt) distribution of reference TRD positive tracks (fulfill cuts from kPt4pos)
84 ,kTRDRefTracksNeg=kTRDRefTracksPos+6 // (eta,detector phi,Pt) distribution of reference TRD negative tracks (fulfill cuts from kPt4neg)
85 ,kTRDRefTracksPos4=kTRDRefTracksNeg+6 // (eta,detector phi,Pt) distribution of reference TRD positive tracks with 4 tracklets (fulfill cuts from kPt4pos)
86 ,kTRDRefTracksNeg4=kTRDRefTracksPos4+6 // (eta,detector phi,Pt) distribution of reference TRD negative tracks with 4 tracklets (fulfill cuts from kPt4neg)
87 ,kTRDRefTracksPos5=kTRDRefTracksNeg4+6
88 ,kTRDRefTracksNeg5=kTRDRefTracksPos5+6
89 ,kTRDRefTracksPos6=kTRDRefTracksNeg5+6
90 ,kTRDRefTracksNeg6=kTRDRefTracksPos6+6
91 ,kTRDEtaPhiAvNtrkl=kTRDRefTracksNeg6+6 // (eta, detector phi) profile of average number of tracklets
92 ,kTRDEtaDeltaPhiAvNtrkl=kTRDEtaPhiAvNtrkl+6 // (eta, delta-phi) profile of average number of tracklets
93 // delta-phi is the angle made by the track with the normal to the chamber entrance plane
94 ,kTRDEtaPhiAvQtot=kTRDEtaDeltaPhiAvNtrkl+6 // (eta, detector phi) profile of total tracklet charge from slices
95 ,kNhistos = kTRDEtaPhiAvQtot+36 // number of histograms
96 ,kNrefs = 4 // number of reference plots
1ee39b3a 97 };
7698e7a4 98 enum ETrdCfVariables {
99 kEventVtxZ=0,
100 kEventMult,
101 kEventBC,
102 kTrackTOFdeltaBC,
33d501fa 103 kTrackTOFBC,
104 kTrackDCAxy,
105 kTrackDCAz,
7698e7a4 106 kTrackCharge,
107 kTrackPhi,
108 kTrackEta,
109 kTrackPt,
110 kTrackP,
111 kTrackTrdTracklets,
112 kTrackTrdClusters,
113 kTrackQtot,
114 kNTrdCfVariables=kTrackQtot+6
115 };
1ee39b3a 116 enum ETRDcheckESDbits {
117 kTPCout = 1 // track left TPC
118 ,kTRDin // track reach TRD fiducial volume
119 ,kTRDout // track reconstructed in TRD
120 ,kTRDpid // PID calculated in TRD
121 ,kTRDref // track refitted in TRD
1ee39b3a 122 };
123 AliTRDcheckESD();
f8f46e4d 124 AliTRDcheckESD(char* name);
1ee39b3a 125 virtual ~AliTRDcheckESD();
126
f8f46e4d 127 void UserCreateOutputObjects();
e2e3cec2 128 Bool_t GetRefFigure(Int_t ifig);
36d21092 129 Int_t GetNRefFigures() const { return fNRefFigures; }
f8f46e4d 130 void UserExec(Option_t *);
1ee39b3a 131
7698e7a4 132 void SetRefTrackFilter(AliAnalysisCuts* const filter) {fReferenceTrackFilter = filter;}
133
1ee39b3a 134 Bool_t HasMC() const { return TESTBIT(fStatus, kMC);}
36d21092 135 Bool_t IsCollision() const {return TESTBIT(fStatus, kCollision);}
136 void SetCollision(Bool_t set=kTRUE) {set ? SETBIT(fStatus, kCollision) : CLRBIT(fStatus, kCollision);}
1ee39b3a 137 TObjArray* Histos();
7698e7a4 138 AliCFContainer* GetCFContainer() {return fCfContainer;}
97d0ccba 139 Bool_t Load(const Char_t *fn="AnalysisResults.root", const Char_t *dir="TRD_Performance", const Char_t *name=NULL);
1ee39b3a 140 void SetMC(Bool_t mc = kTRUE) { mc ? SETBIT(fStatus, kMC) : CLRBIT(fStatus, kMC);}
141 Bool_t PutTrendValue(const Char_t *name, Double_t val);
142 void Terminate(Option_t *);
33d501fa 143 void MakeSummary(Double_t* trendValues=0x0);
144 void MakeSummaryFromCF(Double_t* trendValues=0x0, Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE);
1ee39b3a 145
146private:
147 static const Float_t fgkxTPC; // end radial position of TPC
148 static const Float_t fgkxTOF; // start radial position of TOF
629ae9b8 149 static const UChar_t fgkNgraph[kNrefs]; // number of graphs/ref plot
1ee39b3a 150
33d501fa 151 Bool_t PlotTrackingSummary(Int_t centralityClass=1, Double_t* trendValues=0x0); // 1 <= centralityClass <= 5; 0-all centrality classes together
152 Bool_t PlotPidSummary(Int_t centralityClass=1, Double_t* trendValues=0x0); // 1 <= centralityClass <= 5; 0-all centrality classes together
153 Bool_t PlotCentSummary(Double_t* trendValues=0x0); // centrality dependent plots
2bf6d80c 154
33d501fa 155 void PlotTrackingSummaryFromCF(Int_t centralityClass=1, Double_t* trendValues=0x0,
156 Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together
157 void PlotPidSummaryFromCF(Int_t centralityClass=1, Double_t* trendValues=0x0,
158 Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // 1 <= centralityClass <= 5; 0-all centrality classes together
159 void PlotCentSummaryFromCF(Double_t* trendValues=0x0,
160 Bool_t useIsolatedBC=kFALSE, Bool_t cutTOFbc=kFALSE); // centrality dependent plots
7698e7a4 161
1ee39b3a 162 AliTRDcheckESD(const AliTRDcheckESD&);
163 AliTRDcheckESD& operator=(const AliTRDcheckESD&);
f3ef94fc 164 Int_t Pdg2Idx(Int_t pdg) const;
1ee39b3a 165 void Process(TH1 **h, TGraphErrors *g);
629ae9b8 166 void Process2D(TH2 * const h, TGraphErrors **g);
1ee39b3a 167 void PrintStatus(ULong_t s);
7698e7a4 168 TH2F* Proj3D(TH3* hist, TH2* accMap, Int_t binLow, Int_t binHigh, Float_t &entries);
169 TH1D* Proj2D(TH2* hist);
170 TH1F* EfficiencyTRD(TH3* tpc3D, TH3* trd3D, Bool_t useAcceptance=kTRUE);
171 void DrawTRDGrid();
33d501fa 172 void SetStyle(TH1* hist, Int_t lineStyle, Int_t lineColor, Int_t lineWidth,
4114abc1 173 Int_t markerStyle, Int_t markerColor, Int_t markerSize);
33d501fa 174 void SetStyle(TAxis* axis, const Char_t* title, Float_t titleSize, Float_t titleOffset, Bool_t centerTitle,
175 Float_t labelSize);
7698e7a4 176 void CheckActiveSM(TH1D* phiProj, Bool_t activeSM[18]);
33d501fa 177 void FindIsolatedBCs(TH1D* bcHist, Bool_t isIsolated[3500]);
bd97a050 178
1ee39b3a 179 Int_t fStatus; // bit mask for controlling the task
629ae9b8 180 Int_t fNRefFigures; // number of current ref plots
a96ac33a 181 AliESDEvent *fESD; //! ESD event
182 AliMCEvent *fMC; //! MC event
fb65de21 183 AliESDpid *fESDpid; // ESD pid object
a96ac33a 184 TObjArray *fHistos; //! QA histos
1ee39b3a 185 TObjArray *fResults; // QA graphs
629ae9b8 186 static FILE *fgFile; //! trend file streamer
7698e7a4 187
188 AliCFContainer* fCfContainer; // CF container for computing efficiencies
189 AliAnalysisCuts* fReferenceTrackFilter; // reference track filter
190
36d21092 191 // Vertex selection
192 static const Float_t fgkEvVertexZ;// cm
193 static const Int_t fgkEvVertexN;// cm
194 // Track selection
195 static const Float_t fgkTrkDCAxy; // cm
196 static const Float_t fgkTrkDCAz; // cm
197 static const Int_t fgkNclTPC; // N clusters TPC
198 static const Float_t fgkPt; // min. pt
199 static const Float_t fgkEta; // eta range
f76b8071 200
201 static const Float_t fgkQs; // scale for the total charge
97d0ccba 202
7698e7a4 203 ClassDef(AliTRDcheckESD, 7) // user oriented TRD analysis based on ESD-MC data
1ee39b3a 204};
02281b83 205#endif