Merging with Davids changes, updating HadEt alien handler and runHadEt.C to include...
[u/mrichter/AliRoot.git] / PWG4 / totEt / AliAnalysisHadEt.h
1 //_________________________________________________________________________
2 //Created by Christine Nattrass, Rebecca Scott, Irakli Martashvili
3 //University of Tennessee at Knoxville
4 //
5 // This class is designed for the analysis of the hadronic component of 
6 // transverse energy.  It is used by AliAnalysisTaskHadEt.
7 //_________________________________________________________________________
8 #ifndef ALIANALYSISHADET_H
9 #define ALIANALYSISHADET_H
10
11 #include "TString.h"
12
13 class TH2F;
14 class TH1F;
15 class AliVEvent;
16 class TList;
17 class AliESDtrackCuts;
18 class Rtypes;
19 class TParticle;
20 class TDatabasePDG;
21 class AliAnalysisEtCuts;
22
23 class AliAnalysisHadEt
24 {
25 public:
26    
27   AliAnalysisHadEt();
28     virtual ~AliAnalysisHadEt();
29
30     /** Analyse the event! */
31     virtual Int_t AnalyseEvent(AliVEvent *event);
32
33     /** Fill the objects you want to output, classes which add new histograms should overload this. */
34     virtual void FillOutputList();
35
36     /** Initialise the analysis, must be overloaded. */
37     virtual void Init();
38
39     /** 
40     * Creates the histograms, must be overloaded if you want to add your own. 
41     * Uses the fHistogramNameSuffix to create proper histogram names
42     */
43     virtual void CreateHistograms();
44     
45     /** Fills the histograms, must be overloaded if you want to add your own */
46     virtual void FillHistograms();
47
48     /** Reset event specific values (Et etc.) */
49     virtual void ResetEventValues();
50
51     /** Set Particle codes/mass */
52     virtual void SetParticleCodes();
53
54     /** Cuts info */
55     AliAnalysisEtCuts * GetCuts() const { return fCuts; } 
56     virtual void SetCuts(const AliAnalysisEtCuts *cuts) 
57     { fCuts = (AliAnalysisEtCuts *) cuts; } 
58     
59     /** Sum of the total Et for all events */
60     Double_t GetSumEt() const { return fSumEt; }
61
62     /** Sum of the total Et within our acceptance for all events */
63     Double_t GetSumEtAcc() const { return fSumEtAcc; }
64
65     /** Total Et in the event (without acceptance cuts) */
66     Double_t GetTotEt() const { return fTotEt; }
67
68     /** Total Et in the event within the acceptance cuts */
69     Double_t GetTotEtAcc() const { return fTotEtAcc; }
70
71    /** Total neutral Et in the event (without acceptance cuts) */
72     Double_t GetTotNeutralEt() const { return fTotNeutralEt; }
73
74     /** Total neutral Et in the event within the acceptance cuts */
75     Double_t GetTotNeutralEtAcc() const { return fTotNeutralEtAcc; }
76     
77     /** Total charged Et in the event (without acceptance cuts) */
78     Double_t GetTotChargedEt() const { return fTotChargedEt; }
79
80     /** Total charged Et in the event within the acceptance cuts */
81     Double_t GetTotChargedEtAcc() const { return fTotChargedEtAcc; }
82
83
84     void SetHistoList(const TList *mylist){fhistoList = (TList *) mylist;}
85
86     void SetTPCITSTrackCuts(const AliESDtrackCuts *cuts){ fEsdtrackCutsITSTPC = (AliESDtrackCuts *) cuts;}
87     void SetTPCOnlyTrackCuts(const AliESDtrackCuts *cuts){ fEsdtrackCutsTPC = (AliESDtrackCuts *) cuts;}
88     void SetITSTrackCuts(const AliESDtrackCuts *cuts){ fEsdtrackCutsITS = (AliESDtrackCuts *) cuts;}
89
90 protected:   
91     
92     TString fHistogramNameSuffix; /** The suffix for the histogram names */
93
94     AliAnalysisEtCuts *fCuts; // keeper of basic cuts
95
96     /** PDG Database */
97     TDatabasePDG *fPdgDB;//data base used for looking up pdg codes
98     //these codes are stored as variables because otherwise there were issues using this with the plugin
99     Int_t fPiPlusCode;//pdg pi plus code
100     Int_t fPiMinusCode;//pdg pi minus code
101     Int_t fKPlusCode;// pdg k plus code
102     Int_t fKMinusCode;//pdg k minus code
103     Int_t fProtonCode;//pdg proton code
104     Int_t fAntiProtonCode;//pdg antiproton code
105     Int_t fLambdaCode;// pdg lambda code
106     Int_t fAntiLambdaCode;//pdg antilambda code
107     Int_t fK0SCode;//pdg k0 short code
108     Int_t fOmegaCode;//pdg omega code
109     Int_t fAntiOmegaCode;//pdg anti-omega code
110     Int_t fXi0Code;//pdg xi-0 code
111     Int_t fAntiXi0Code;//pdg anti-xi0 code
112     Int_t fXiCode;//pdg xi code
113     Int_t fAntiXiCode;//pdg anti-xi code
114     Int_t fSigmaCode;//pdg sigma code
115     Int_t fAntiSigmaCode;//pdg anti-sigma code
116     Int_t fK0LCode;//pdg k0 long code
117     Int_t fNeutronCode;//pdg neutron code
118     Int_t fAntiNeutronCode;//pdg anti-neutron code
119     Int_t fEPlusCode;//pdg positron code
120     Int_t fEMinusCode;//pdg electron code
121     Int_t fGammaCode;//pdg gamma code
122     Int_t fPi0Code;//pdg neutral pion code
123     Int_t fEtaCode;//pdg eta code
124     Float_t fPionMass;//pdg pion mass
125
126     
127     Double_t fSumEt;/** Sum of the total Et for all events */
128     Double_t fSumEtAcc;/** Sum of the total Et within our acceptance for all events */
129     Double_t fTotEt;/** Total Et in the event (without acceptance cuts) */
130     Double_t fTotEtAcc;/** Total Et in the event within the acceptance cuts */
131     
132     Double_t fTotNeutralEt;/** Total neutral Et in the event */
133     Double_t fTotNeutralEtAcc;/** Total neutral Et in the event within the acceptance cuts */
134     Double_t fTotChargedEt;/** Total charged Et in the event */
135     Double_t fTotChargedEtAcc;/** Total charged Et in the event within the acceptance cuts */
136
137     Int_t fMultiplicity;/** Multiplicity of particles in the event */
138     Int_t fChargedMultiplicity;/** Multiplicity of charged particles in the event */
139     Int_t fNeutralMultiplicity; /** Multiplicity of neutral particles in the event */
140         
141     void CreateEtaPtHisto2D(TString name, TString title);
142     void CreateEtaHisto1D(TString name, TString title);
143     void CreateHisto2D(TString name, TString title, TString xtitle, TString ytitle,Int_t xbins, Float_t xlow,Float_t xhigh,Int_t ybins,Float_t ylow,Float_t yhigh);
144     void CreateHisto1D(TString name, TString title, TString xtitle, TString ytitle,Int_t xbins, Float_t xlow,Float_t xhigh);
145     void CreateIntHisto1D(TString name, TString title, TString xtitle, TString ytitle,Int_t xbins, Int_t xlow,Int_t xhigh);
146     void CreateIntHisto2D(TString name, TString title, TString xtitle, TString ytitle,Int_t xbins, Int_t xlow,Int_t xhigh,Int_t ybins,Int_t ylow,Int_t yhigh);
147     void FillHisto1D(TString histname, Float_t x, Float_t weight);
148     void FillHisto2D(TString histname, Float_t x, Float_t y, Float_t weight);
149
150     Float_t Et(TParticle *part, float mass = -1000);
151     AliESDtrackCuts* fEsdtrackCutsITSTPC;//esd track cuts for ITS+TPC tracks
152     AliESDtrackCuts* fEsdtrackCutsTPC;//esd track cuts for TPC tracks (which may also contain ITS hits)
153     AliESDtrackCuts* fEsdtrackCutsITS;//esd track cuts for ITS stand alone tracks
154
155     TList *fhistoList;//list of histograms saved out to file
156     static Float_t fgEtaAxis[47];//bins for eta axis of histograms
157     static Int_t fgnumOfEtaBins;//number of eta bins
158     static Float_t fgPtAxis[117];//bins for pt axis of histograms
159     static Int_t fgNumOfPtBins;//number of pt bins
160     
161  private:
162     //Declare it private to avoid compilation warning
163     AliAnalysisHadEt & operator = (const AliAnalysisHadEt & g) ;//cpy assignment
164     AliAnalysisHadEt(const AliAnalysisHadEt & g) ; // cpy ctor
165
166     ClassDef(AliAnalysisHadEt, 0);
167 };
168
169 #endif // ALIANALYSISHADET_H