]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/EMCALTasks/AliAnalysisTaskPi0V2.h
changes from fzhou
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskPi0V2.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 /* $Id: AliAnalysisTaskPi0V2.h 45956 2010-12-10 12:55:37Z agheata $ */
5 /* AliAnalysisTaskPi0V2.h
6  *
7  * Template task producing a P_t spectrum and pseudorapidity distribution.
8  * Includes explanations of physics and primary track selections
9  *
10  * Based on tutorial example from offline pages
11  * Edited by Arvinder Palaha
12  */
13 #ifndef ALIANALYSISTASKPI0V2_H
14 #define ALIANALYSISTASKPI0V2_H
15
16 class TH1F;
17 class TH2F;
18 class TH3F;
19 class TList;
20 class AliESDCaloCluster;
21 class AliVCluster;
22 class AliESDtrackCuts;
23 class AliESDEvent;
24 class THnSparse;
25 class TClonesArray;
26 class TString;
27 class AliCaloPID;
28 class AliCalorimeterUtils;
29 class AliCaloTrackReader;
30
31
32 #ifndef ALIANALYSISTASKSE_H
33 #include "AliAnalysisTaskSE.h"
34 #endif
35
36 class AliAnalysisTaskPi0V2 : public AliAnalysisTaskSE {
37  public:
38     AliAnalysisTaskPi0V2();
39     AliAnalysisTaskPi0V2(const char *name);
40     virtual ~AliAnalysisTaskPi0V2();
41     
42     virtual void     UserCreateOutputObjects();
43     virtual void     UserExec(Option_t *option);
44     virtual void     Terminate(Option_t *);
45     Double_t            GetCrossEnergy(const AliVCluster *cluster, Short_t &idmax) const;
46     Double_t            GetMaxCellEnergy(const AliVCluster *cluster, Short_t &id) const;
47     Bool_t              IsWithinFiducialVolume(Short_t id) const;
48     Bool_t              IsGoodCluster(const AliVCluster *c) const;
49     Bool_t              IsGoodClusterV1(const AliVCluster *c) const;
50     Bool_t              IsGoodPion(const TLorentzVector& p1, const TLorentzVector& p2) const;
51     void                FillPion(const TLorentzVector& p1, const TLorentzVector& p2, Double_t EPV0r, Double_t EPV0A, Double_t EPV0C, Double_t EPTPC);
52     void                FillCluster(const TLorentzVector& p1, Double_t EPV0r, Double_t EPV0A, Double_t EPV0C, Double_t EPTPC, AliVCluster *c);
53     void                GetMom(TLorentzVector& p, const AliVCluster *c, Double_t *vertex);              
54     void                SetEventMethod(Double_t e )     { fEvtSelect  =e ;}
55     void                SetVtxCut(Double_t v )          { fVtxCut     =v ;}
56     void                SetClusNcell(Double_t c )       { fNcellCut   =c ;}
57     void                SetClusE(Double_t e )           { fECut       =e ;}
58     void                SetClusEta(Double_t e )         { fEtaCut     =e ;}
59     void                SetClusM02(Double_t m )         { fM02Cut     =m ;}
60     void                SetDrCut(Double_t m )           { fDrCut      =m ;}
61     void                SetPi0Asy(Double_t a )          { fPi0AsyCut  =a ;}
62     void                SetTracksName(const char *n)    { fTracksName =n ;}
63     void                SetTrigClass(const char *n)     { fTrigClass  =n ;} 
64     void                SetV1ClusName(const char *n)    { fV1ClusName =n ;} 
65     void                SetV2ClusName(const char *n)    { fV2ClusName =n ;} 
66     Int_t               ConvertToInternalRunNumber(Int_t n);
67     void                FillEPQA();
68     void                SetIsV1Clus(Bool_t e)           { isV1Clus   =e  ;}
69     
70
71     
72  private:
73     TList                       *fOutput;               //! Output list
74     AliESDEvent                 *fESD;                  //!ESD object
75     TString                     fTracksName;            // name of track collection
76     TString                     fV1ClusName;            // name of V1 Clus collection
77     TString                     fV2ClusName;            // name of V1 Clus collection
78     TString                     fTrigClass;             // trigger class name for event selection
79     TClonesArray                *fTracks;               //! pico tracks specific for Skim ESD
80     TClonesArray                *fV1Clus;               //! Cluster Array for V1
81     TClonesArray                *fV2Clus;               //! Cluster Array for V2
82     Int_t                       fRunNumber;             //! Run numbers
83     Double_t                    fEvtSelect;             // 1 = MB+Semi+Central, 2 = MB+Semi, 3 = MB;
84     Double_t                    fVtxCut;                // vertex cut
85     Double_t                    fNcellCut;              // N cells Cut
86     Double_t                    fECut;                  // Cluster E cut
87     Double_t                    fEtaCut;                // Cluster Eta Cut
88     Double_t                    fM02Cut;                // Cluster long axis cut
89     Double_t                    fDrCut;         // Cluster long axis cut
90     Bool_t                      fPi0AsyCut;             // pion Asymetry cut 0=off 1=on
91     Bool_t                      isV1Clus;               // pion Asymetry cut 0=off 1=on
92     Double_t                    fCentrality;            //! Centrality
93     Double_t                    fEPTPC;                 //! Evt plane TPC
94     Double_t                    fEPTPCreso;             //! resolution of TPC method
95     Double_t                    fEPV0;                  //! EP V0
96     Double_t                    fEPV0A;                 //! EP V0A
97     Double_t                    fEPV0C;                 //! EP V0C
98     Double_t                    fEPV0Ar;                //! EP V0A reduced
99     Double_t                    fEPV0Cr;                //! EP V0C reduced
100     Double_t                    fEPV0r;                 //! EP V0 reduced
101     Double_t                    fEPV0AR4;               //! EP V0A ring4 only
102     Double_t                    fEPV0AR5;               //! EP V0A ring5 only
103     Double_t                    fEPV0AR6;               //! EP V0A ring6 only
104     Double_t                    fEPV0AR7;               //! EP V0A ring7 only
105     Double_t                    fEPV0CR0;               //! EP V0C ring0 only   
106     Double_t                    fEPV0CR1;               //! EP V0C ring1 only   
107     Double_t                    fEPV0CR2;               //! EP V0C ring2 only   
108     Double_t                    fEPV0CR3;               //! EP V0C ring3 only   
109
110     TH1F                        *hEvtCount;             //!
111     TH1F                        *hAllcentV0;            //!
112     TH1F                        *hAllcentV0r;           //!
113     TH1F                        *hAllcentV0A;           //!
114     TH1F                        *hAllcentV0C;           //!
115     TH1F                        *hAllcentTPC;           //!
116   
117     TH2F                        *h2DcosV0r;             //! QA for cos(Phi) V0r vs Run NUmber
118     TH2F                        *h2DsinV0r;             //! QA for cos(Phi) V0r vs Run NUmber
119     TH2F                        *h2DcosV0A;             //!
120     TH2F                        *h2DsinV0A;             //!
121     TH2F                        *h2DcosV0C;             //!
122     TH2F                        *h2DsinV0C;             //!
123     TH2F                        *h2DcosTPC;             //!
124     TH2F                        *h2DsinTPC;             //!
125
126     TH2F                        *hEPTPC;                //! 2-D histo EPTPC  vs cent
127     TH2F                        *hresoTPC;              //! 2-D histo TPC resolution vs cent
128     TH2F                        *hEPV0;                 //! 2-D histo EPV0   vs cent
129     TH2F                        *hEPV0A;                //! 2-D histo EPV0A  vs cent
130     TH2F                        *hEPV0C;                //! 2-D histo EPV0C  vs cent
131     TH2F                        *hEPV0Ar;               //! 2-D histo EPV0Ar vs cent
132     TH2F                        *hEPV0Cr;               //! 2-D histo EPV0Cr vs cent
133     TH2F                        *hEPV0r;                //! 2-D histo EPV0r  vs cent
134     TH2F                        *hEPV0AR4;              //! 2-D histo EPV0AR4 vs cent
135     TH2F                        *hEPV0AR7;              //! 2-D histo EPV0AR7 vs cent
136     TH2F                        *hEPV0CR0;              //! 2-D histo EPV0AR0 vs cent
137     TH2F                        *hEPV0CR3;              //! 2-D histo EPV0AR3 vs cent
138
139     TH2F                        *hdifV0Ar_V0Cr;         //! 2-D histo diff V0Ar, V0Cr vs cent
140     TH2F                        *hdifV0A_V0CR0;         //! 2-D histo diff V0A, V0CR0 vs cent
141     TH2F                        *hdifV0A_V0CR3;         //! 2-D histo diff V0A, V0CR3 vs cent
142     TH2F                        *hdifV0ACR0_V0CR3;      //! 2-D histo diff V0CR0, V0CR3 vs cent
143     TH2F                        *hdifV0C_V0AR4;         //! 2-D histo diff V0C, V0AR4 vs cent
144     TH2F                        *hdifV0C_V0AR7;         //! 2-D histo diff V0C, V0AR7 vs cent
145     TH2F                        *hdifV0AR4_V0AR7;       //! 2-D histo diff V0AR7, V0AR4 vs cent
146
147     TH2F                        *hdifV0A_V0C;           //! 2-D histo diff V0A - V0C
148     TH2F                        *hdifV0A_TPC;           //! 2-D histo diff V0A - TPC
149     TH2F                        *hdifV0C_TPC;           //! 2-D histo diff V0C - TPC
150     TH2F                        *hdifV0C_V0A;           //! 2-D histo diff V0C - V0A
151
152     TH2F                        *hM02vsPtA;             //! 2-D histo clus M02 vs Pt before cut
153     TH2F                        *hM02vsPtB;             //! 2-D histo clus M02 vs Pt after cut
154     TH2F                        *hClusDxDZA;            //! 2-D histo clus Dx vs Dz before
155     TH2F                        *hClusDxDZB;            //! 2-D histo clus Dx vs Dz after
156
157     TH3F                        *hdifEMC_EPV0;          //! 3-D histo dif phi in EMC with EPV0
158     TH3F                        *hdifEMC_EPV0A;         //! 3-D histo dif phi in EMC with EPV0A
159     TH3F                        *hdifEMC_EPV0C;         //! 3-D histo dif phi in EMC with EPV0C
160
161     TH3F                        *hdifful_EPV0;          //! 3-D histo dif phi in full with EPV0
162     TH3F                        *hdifful_EPV0A;         //! 3-D histo dif phi in full with EPV0A
163     TH3F                        *hdifful_EPV0C;         //! 3-D histo dif phi in full with EPV0C
164
165     TH3F                        *hdifout_EPV0;          //! 3-D histo dif phi out EMC with EPV0
166     TH3F                        *hdifout_EPV0A;         //! 3-D histo dif phi out EMC with EPV0A
167     TH3F                        *hdifout_EPV0C;         //! 3-D histo dif phi out EMC with EPV0C
168
169     TH3F                        *hdifEMC_EPTPC;         //! 3-D histo dif phi in EMC with EPTPC
170     TH3F                        *hdifful_EPTPC;         //! 3-D histo dif phi in full with EPTPC
171     TH3F                        *hdifout_EPTPC;         //! 3-D histo dif phi out EMC with EPTPC
172
173     THnSparse                   *fClusterPbV0;
174     THnSparse                   *fClusterPbV0A;
175     THnSparse                   *fClusterPbV0C;
176     THnSparse                    *fClusterPbTPC;
177
178     THnSparse                   *fHEPV0r;               //! Flow 4-D Histo
179     THnSparse                   *fHEPV0A;               //! Flow 4-D Histo
180     THnSparse                   *fHEPV0C;               //! Flow 4-D Histo
181     THnSparse                   *fHEPTPC;               //! Flow 4-D Histo
182
183     
184     
185     AliAnalysisTaskPi0V2(const AliAnalysisTaskPi0V2&); // not implemented
186     AliAnalysisTaskPi0V2& operator=(const AliAnalysisTaskPi0V2&); // not implemented
187     
188     ClassDef(AliAnalysisTaskPi0V2, 5); // example of analysis
189 };
190
191 #endif
192