Stupid bug fix in new superlight mode (from Zurich airport)
[u/mrichter/AliRoot.git] / PWGPP / AliAnalysisTaskQASym.h
1 // Analysis task for basic QA exploiting symmetries
2 //of global, TPC, and ITS tracks
3
4 #ifndef ALIANALYSISTASKQASYM_H
5 #define ALIANALYSISTASKQASYM_H
6  
7
8 class TH1F;
9 class TH2F;
10 class TH3F;
11 class TList;
12
13 class AliESDEvent;
14 class AliESDtrack;
15 class AliESDtrackCuts;
16
17
18 #include "AliAnalysisTaskSE.h"
19 #include "TFile.h"
20
21 class AliAnalysisTaskQASym : public AliAnalysisTaskSE {
22  public:
23   AliAnalysisTaskQASym(const char *name = "AliAnalysisTaskQASym");
24   virtual ~AliAnalysisTaskQASym() {}
25   
26   virtual void   UserCreateOutputObjects();
27   virtual void   UserExec(Option_t *option);
28   virtual void   Terminate(Option_t *);
29   virtual void   SetTrackType(Int_t type) {fTrackType = type;}  // set the track type: global, its and tpc
30   virtual void   SetStandAloneTrack(Bool_t standAlone = kFALSE) {fStandAlone = standAlone;}  //needed for ITS tracks
31
32   virtual void   SetNChargedRange(Int_t low = 0, Int_t high=1.0*1e7)//set multiplicity region of analysis
33                                                                     // in order to compare different trigger settings
34   {
35     fLow  = low;
36     fHigh = high;
37   } 
38   
39   virtual void   SetCuts(AliESDtrackCuts* cuts)
40      {fCuts = cuts;}
41
42   virtual void   SetFieldOn(Bool_t b = kTRUE){fFieldOn = b;} 
43
44   
45  private:
46
47   Int_t       fTrackType;       // track type
48   Bool_t      fStandAlone;      // needed for ITS tracks
49   Int_t       fLow;             // low Ncharges cut
50   Int_t       fHigh;            // high Ncharges cut
51   Bool_t      fFieldOn;         // field status
52
53   TList       *fHists;          // List of histos
54
55   //old
56   TH1F        *fHistRECpt;      // pt 
57   TH1F        *fEta;            // eta
58
59   TH1F        *fEtaWidth;       // eta of tracks in Nch range (fLow <= Ncharged <= fHigh)
60   TH1F        *fPhiWidth;       // phi of tracks in Nch range (fLow <= Ncharged <= fHigh)
61   TH1F        *fDcaWidth;       // dca of tracks in Nch range (fLow <= Ncharged <= fHigh)
62   TH1F        *fPtWidth;        // pt of tracks in Nch range (fLow <= Ncharged <= fHigh)
63
64   TH2F        *fEtaPhi;         // eta-phi
65   TH1F        *fEtaPt;          // eta over pt 
66   TH1F        *fQPt;            // charge over pt 
67   TH1F        *fDca;            // distance of closest approach
68   TH1F        *fDcaZ;            // distance of closest approach
69   TH1F        *fqRec;           // reconstrcuted charge
70   TH1F        *fSigmaPtHist;    // sigma_pT
71
72    //positive und negative tracks
73   TH1F        *fRecPtPos;      // pt of pos tracks
74   TH1F        *fRecPtNeg;      // pt of neg tracks
75   TH1F        *fRecPhiPos;     // phi of pos. tracks
76   TH1F        *fRecPhiNeg;     // phi of neg. tracks
77   TH1F        *fRecEtaPos;     // eta of neg. tracks
78   TH1F        *fRecEtaNeg;     // eta of neg. tracks
79   TH1F        *fRecEtaPtPos;   // eta over pt of neg. tracks
80   TH1F        *fRecEtaPtNeg;   // eta over pt of neg. tracks
81   TH1F        *fRecDcaPos;     // distance of closest approach of neg. tracks
82   TH1F        *fRecDcaNeg;     // distance of closest of neg. tracks
83   TH1F        *fRecDcaNegInv;  // invers dca of neg. tracks
84   TH1F        *fRecDPos;       // impact parameter of neg. tracks
85   TH1F        *fRecDNeg;       // impact parameter of neg. tracks
86
87   // two sides of TPC -> Eta/Theta
88   TH1F        *fRecQPtPosEta;   //charge/pT for pos. eta
89   TH1F        *fRecQPtNegEta;   //charge/pT for neg. eta
90   TH1F        *fRecPtPosEta;    //pT        for pos. eta
91   TH1F        *fRecPtNegEta;    //pT        for neg. eta
92   TH1F        *fRecPhiPosEta;   //phi       for pos. eta
93   TH1F        *fRecPhiNegEta;   //phi       for neg. eta
94   TH1F        *fRecDcaPosEta;   //dca       for pos. eta
95   TH1F        *fRecDcaNegEta;   //dca       for neg. eta
96   TH1F        *fRecDPosEta;     //d         for pos. eta
97   TH1F        *fRecDNegEta;     //d         for neg. eta
98
99   // 2D: all measures as function of z of first trackpoint 
100   TH2F        *fRecPtPosVz;     //pt-zfirst of pos tracks
101   TH2F        *fRecPtNegVz;     //pt-zfirst of neg tracks
102   TH2F        *fRecEtaPosVz;    //eta-zfirst of pos tracks
103   TH2F        *fRecEtaNegVz;    //eta-zfirst of neg tracks
104   TH2F        *fRecPhiPosVz;    //phi-zfirst of pos tracks
105   TH2F        *fRecPhiNegVz;    //phi-zfirst of neg tracks
106   TH2F        *fSignedDcaPosVz; //dca-zfirst of pos tracks
107   TH2F        *fSignedDcaNegVz; //dca-zfirst of neg tracks
108   TH2F        *fRecQPtPosEtaVz; //charge/pT-zfirst of pos tracks
109   TH2F        *fRecQPtNegEtaVz; //charge/pT-zfirst of neg tracks
110   TH2F        *fRecEtaPtPosVz;  //eta/pT-zfirst of pos tracks
111   TH2F        *fRecEtaPtNegVz;  //eta/pT-zfirst of neg tracks
112
113
114   //high
115   TH1F * fDeltaPhiAll;         // phiLeaingTracks-phiOthers
116   TH2F * fDeltaPhiLeading;     // phiLeaingTracks-phiOthers vs. phiLeading
117   TH1F * fDiffDcaD;            // d-dca
118
119   //sim
120   TH1F * fPhiRec;              //phi
121   TH1F * fThetaRec;            //theta
122   TH1F * fNumber;              //Number of tracks per event
123   TH1F * fNumberAfterCut;      //Number of tracks per event after cuts
124   TH1F * fVx;                  // x of first track point
125   TH1F * fVy;                  // y of first track point
126   TH1F * fVz;                  // z of first track point
127   TH1F * fNVertexSPD;          //number of vertices SPD
128   TH1F * fNVertexTracks;       //number of vertices of Tracks
129
130   //new
131   TH2F        *fRecDcaPosPhi;     //dca-phi for pos.
132   TH2F        *fRecDcaNegPhi;     //dca-phi for neg.
133   TH2F        *fRecPtPosPhi;      //pt-phi for pos.
134   TH2F        *fRecPtNegPhi;      //pt-phi for neg.
135   TH2F        *fRecEtaPosPhi;     //eta-phi for pos.
136   TH2F        *fRecEtaNegPhi;     //eta-phi for neg.
137   TH2F        *fRecQPtPhi;        //charge/pt-phi
138   TH2F        *fRecEtaPtPosPhi;   //eta/pt-phi for neg.
139   TH2F        *fRecEtaPtNegPhi;   //eta/pt-phi for pos.
140
141   TH1F        *fRecPtPosEtaPos;   //pt for pos tracks and pos eta
142   TH1F        *fRecPtNegEtaPos;   //pt for neg tracks and pos eta
143   TH1F        *fRecPtPosEtaNeg;   //pt for pos tracks and neg eta
144   TH1F        *fRecPtNegEtaNeg;   //pt for neg tracks and neg eta
145
146   TH1F        *fRec1PtPosEtaPos;   //1/pt for pos tracks and pos eta
147   TH1F        *fRec1PtNegEtaPos;   //1/pt for neg tracks and pos eta
148   TH1F        *fRec1PtPosEtaNeg;   //1/pt for pos tracks and neg eta
149   TH1F        *fRec1PtNegEtaNeg;   //1/pt for neg tracks and neg eta
150
151   TH1F        *fRecPhiPosEtaPos;   //phi for pos tracks and pos eta
152   TH1F        *fRecPhiNegEtaPos;   //phi for neg tracks and pos eta
153   TH1F        *fRecPhiPosEtaNeg;   //phi for pos tracks and neg eta
154   TH1F        *fRecPhiNegEtaNeg;   //phi for neg tracks and neg eta
155
156   TH2F        *fRecDcaPosPhiEtaPos;  //dca-phi for pos tracks and pos eta
157   TH2F        *fRecDcaNegPhiEtaPos;  //dca-phi for neg tracks and pos eta
158   TH2F        *fRecDcaPosPhiEtaNeg;  //dca-phi for pos tracks and neg eta
159   TH2F        *fRecDcaNegPhiEtaNeg;  //dca-phi for neg tracks and neg eta
160
161   TH2F        *fRecDcaPosPtEtaPos;  //dca-pt for pos tracks and pos eta
162   TH2F        *fRecDcaNegPtEtaPos;  //dca-pt for neg tracks and pos eta
163   TH2F        *fRecDcaPosPtEtaNeg;  //dca-pt for pos tracks and neg eta
164   TH2F        *fRecDcaNegPtEtaNeg;  //dca-pt for neg tracks and neg eta
165
166   TH2F        *fRecPtPosPhiEtaPos;  //pt-phi for pos tracks and pos eta
167   TH2F        *fRecPtNegPhiEtaPos;  //pt-phi for neg tracks and pos eta 
168   TH2F        *fRecPtPosPhiEtaNeg;  //pt-phi for pos tracks and neg eta
169   TH2F        *fRecPtNegPhiEtaNeg;  //pt-phi for neg tracks and neg eta
170
171   //  TH3F        *fRecDcaPhiPtPosEtaPos; //dca-pt-phi for pos tracks and pos eta
172   //  TH3F        *fRecDcaPhiPtNegEtaPos; //dca-pt-phi for neg tracks and pos eta
173   //  TH3F        *fRecDcaPhiPtPosEtaNeg; //dca-pt-phi for pos tracks and neg eta
174   //  TH3F        *fRecDcaPhiPtNegEtaNeg; //dca-pt-phi for neg tracks and neg eta
175
176   TH2F        *fEtavPt;                 // eta vs pt 
177   TH2F        *fPhivPt;                 // phi vs pt 
178
179   TH2F        *fCompareTPCparam;        // TPC param
180
181   TH1F        *fITSlayer;               // ITS layer
182   TH2F        *fITSlayerEta;            // ITS layer vs eta
183   TH2F        *fITSlayerPhi;            // ITS layer vs phi
184
185   AliESDtrackCuts* fCuts;               // List of cuts
186
187   // four different vertex types: primary, spd, tracks, tpc
188   TH1F * fVertexX[4];             // x of vertex
189   TH1F * fVertexY[4];             // y of vertex
190   TH1F * fVertexZ[4];             // z of vertex
191
192   // sectors of TPC 
193   TH1F        *fRecPtTpcSector[18];     //pt for TPC sectors
194   TH1F        *fRecEtaTpcSector[18];    //eta for TPC sectors
195   TH1F        *fRecQPtTpcSector[18];    //charge/pt for TPC sectors
196   TH1F        *fRecEtaPtTpcSector[18];  //eta/pt for TPC sectors
197   TH1F        *fSignedDcaTpcSector[18]; //dca for TPC sectors
198
199
200   // 7 different case of hit in ITS ladders
201   TH1F        *fRecPtPosLadder[7];  //pt for pos tracks
202   TH1F        *fRecPtNegLadder[7];  //pt for neg tracks
203   TH1F        *fRecPhiPosLadder[7]; //phi for pos tracks
204   TH1F        *fRecPhiNegLadder[7]; //phi for neg tracks
205   TH1F        *fRecEtaPosLadder[7]; //eta for pos tracks
206   TH1F        *fRecEtaNegLadder[7]; //eta for neg tracks
207   TH1F        *fSignDcaPos[7];      //dca for pos tracks
208   TH1F        *fSignDcaNeg[7];      //dca for neg tracks
209   TH1F        *fSignDcaNegInv[7];   //-dca for neg tracks
210   TH1F        *fPtSigmaPos[7];      //sigma_pT for pos tracks
211   TH1F        *fPtSigmaNeg[7];      //sigma_pT for neg tracks
212   TH1F        *fqPtRec[7];          // charge/pt 
213   TH2F        *fDcaSigmaPos[7];     // dca - sigma_pT for pos tracks
214   TH2F        *fDcaSigmaNeg[7];     // dca - sigma_pT for neg tracks
215
216   TH1F        *fEtaBinPt[3][2];      // eta histogram for different pt bins and different charges
217   TH1F        *fPhiBinPt[3][2];      // phi histogram for different pt bins and different charges
218   TH1F        *fDcaBinPt[3][2];      // dca histogram for different pt bins and different charges
219   TH2F        *fEtaPhiBinPt[3][2];   // eta-phi histogram for different pt bins and different charges
220
221   
222   
223
224
225   AliAnalysisTaskQASym(const AliAnalysisTaskQASym&); // not implemented
226   AliAnalysisTaskQASym& operator=(const AliAnalysisTaskQASym&); // not implemented
227   
228   ClassDef(AliAnalysisTaskQASym, 1); // Basic QA exploiting symmetries
229 };
230
231 #endif