]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/totEt/AliAnalysisEtCommon.h
7b61ef10697396ad4f2906b0a692685b26697584
[u/mrichter/AliRoot.git] / PWG4 / totEt / AliAnalysisEtCommon.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 ALIANALYSISETCOMMON_H
9 #define ALIANALYSISETCOMMON_H
10
11 #include "TString.h"
12 #include "TMath.h"
13 #include "TObject.h"
14
15 class TH2F;
16 class TH1F;
17 class TF1;
18 class AliVEvent;
19 class TList;
20 class AliESDtrackCuts;
21 class Rtypes;
22 class TParticle;
23 class TDatabasePDG;
24 class AliAnalysisEtCuts;
25
26 #ifndef ALIANALYSISLEVYPT_H
27 #define ALIANALYSISLEVYPT_H
28 class AliAnalysisLevyPt{
29  public:
30   virtual ~AliAnalysisLevyPt(){;};
31   Double_t Evaluate(const Double_t *pt, const Double_t *par) const
32   {
33     Double_t lMass  = par[3];
34     Double_t ldNdy  = par[0];
35     Double_t l2pi   = 2*TMath::Pi();
36     Double_t lTemp = par[1];
37     Double_t lPower = par[2];
38
39     Double_t lBigCoef = ((lPower-1)*(lPower-2)) / (l2pi*lPower*lTemp*(lPower*lTemp+lMass*(lPower-2)));
40     Double_t lInPower = 1 + (TMath::Sqrt(pt[0]*pt[0]+lMass*lMass)-lMass) / (lPower*lTemp);
41
42     return ldNdy * pt[0] * lBigCoef * TMath::Power(lInPower,(-1)*lPower);
43   };
44   ClassDef(AliAnalysisLevyPt, 1);
45 };
46
47 #endif // ALIANALYSISLEVYPT_H
48
49 class AliAnalysisEtCommon  : public TObject
50 {
51 public:
52    
53   AliAnalysisEtCommon();
54     virtual ~AliAnalysisEtCommon();
55
56     /** Analyse the event! */
57     virtual Int_t AnalyseEvent(AliVEvent *event);
58
59
60     /** Initialise the analysis, must be overloaded. */
61     virtual void Init();
62
63
64     /** Reset event specific values (Et etc.) */
65     virtual void ResetEventValues();
66
67     /** Cuts info */
68     AliAnalysisEtCuts * GetCuts() const { return fCuts; } 
69     virtual void SetCuts(const AliAnalysisEtCuts *cuts) 
70     { fCuts = (AliAnalysisEtCuts *) cuts; } 
71
72
73     void SetTPCITSTrackCuts(const AliESDtrackCuts *cuts){ fEsdtrackCutsITSTPC = (AliESDtrackCuts *) cuts;}
74     void SetTPCOnlyTrackCuts(const AliESDtrackCuts *cuts){ fEsdtrackCutsTPC = (AliESDtrackCuts *) cuts;}
75     void SetITSTrackCuts(const AliESDtrackCuts *cuts){ fEsdtrackCutsITS = (AliESDtrackCuts *) cuts;}
76     void SetCentralityMethod(char *method){ fCentralityMethod = TString(method);}
77     void SetNumberOfCentralityBins(Int_t bins){fNCentBins = bins;}
78     void SetDataSet(Int_t val){fDataSet = val;}
79     Int_t DataSet()const {return fDataSet;}
80
81 protected:   
82     
83     TString fHistogramNameSuffix; /** The suffix for the histogram names */
84
85     AliAnalysisEtCuts *fCuts; // keeper of basic cuts
86
87     Int_t fDataSet;//Integer corresponding to data set.  Used as a switch to set appropriate track cuts.  By default set to 2010 p+p
88     //2009 = 900 GeV p+p data from 2009
89     //2010 = 7 TeV p+p data from 2010
90     //20100 = 2.76 TeV Pb+Pb data from 2010
91
92     /** PDG Database */
93     //TDatabasePDG *fPdgDB;//data base used for looking up pdg codes
94     //these codes are stored as variables because otherwise there were issues using this with the plugin
95
96     static Int_t fgPiPlusCode;//pdg pi plus code
97     static Int_t fgPiMinusCode;//pdg pi minus code
98     static Int_t fgKPlusCode;// pdg k plus code
99     static Int_t fgKMinusCode;//pdg k minus code
100     static Int_t fgProtonCode;//pdg proton code
101     static Int_t fgAntiProtonCode;//pdg antiproton code
102     static Int_t fgLambdaCode;// pdg lambda code
103     static Int_t fgAntiLambdaCode;//pdg antilambda code
104     static Int_t fgK0SCode;//pdg k0 short code
105     static Int_t fgOmegaCode;//pdg omega code
106     static Int_t fgAntiOmegaCode;//pdg anti-omega code
107     static Int_t fgXi0Code;//pdg xi-0 code
108     static Int_t fgAntiXi0Code;//pdg anti-xi0 code
109     static Int_t fgXiCode;//pdg xi code
110     static Int_t fgAntiXiCode;//pdg anti-xi code
111     static Int_t fgSigmaCode;//pdg sigma code
112     static Int_t fgAntiSigmaCode;//pdg anti-sigma code
113     static Int_t fgK0LCode;//pdg k0 long code
114     static Int_t fgNeutronCode;//pdg neutron code
115     static Int_t fgAntiNeutronCode;//pdg anti-neutron code
116     static Int_t fgEPlusCode;//pdg positron code
117     static Int_t fgEMinusCode;//pdg electron code
118     static Int_t fgMuPlusCode;//pdg positron code
119     static Int_t fgMuMinusCode;//pdg electron code
120     static Int_t fgGammaCode;//pdg gamma code
121     static Int_t fgPi0Code;//pdg neutral pion code
122     static Int_t fgEtaCode;//pdg eta code
123     static Int_t fgOmega0Code;//pdg eta code
124     static Float_t fgPionMass;//pdg pion mass
125     static Float_t fgKaonMass;//pdg kaon mass
126     static Float_t fgProtonMass;//pdg proton mass
127     static Float_t fgElectronMass;//pdg electron mass
128
129
130     Float_t Et(TParticle *part, float mass = -1000);
131     Float_t Et(Float_t p, Float_t theta, Int_t pid, Short_t charge) const;
132     AliESDtrackCuts* fEsdtrackCutsITSTPC;//esd track cuts for ITS+TPC tracks
133     AliESDtrackCuts* fEsdtrackCutsTPC;//esd track cuts for TPC tracks (which may also contain ITS hits)
134     AliESDtrackCuts* fEsdtrackCutsITS;//esd track cuts for ITS stand alone tracks
135
136     static Float_t fgPtTPCCutOff;//cut off for tracks in TPC
137     static Float_t fgPtITSCutOff;//cut off for tracks in ITS
138     
139     //Set by default to the D6T scales
140     Float_t K0Weight(Float_t pt);//Function which gives the factor to reweigh a K0 so it roughly matches the data
141     Float_t LambdaWeight(Float_t pt);//Function which gives the factor to reweigh a Lambda so it roughly matches the data
142     Float_t AntiLambdaWeight(Float_t pt);//Function which gives the factor to reweigh a Lambda so it roughly matches the data
143     TF1 *fK0PythiaD6T;//function with Levy fit parameters for K0S in PYTHIA D6T
144     TF1 *fLambdaPythiaD6T;//function with Levy fit parameters for Lambda in PYTHIA D6T
145     TF1 *fAntiLambdaPythiaD6T;//function with Levy fit parameters for AntiLambda in PYTHIA D6T
146     TF1 *fK0Data;//function with Levy fit parameters for K0S in data
147     TF1 *fLambdaData;//function with Levy fit parameters for Lambda in data
148     TF1 *fAntiLambdaData;//function with Levy fit parameters for AntiLambda in data
149
150     TF1 *fLambdaEnhancement;//function to describe lambda enhancement
151     TF1 *fProtonEnhancement;//function to describe anti-lambda enhancement
152     Float_t LambdaBaryonEnhancement(Float_t pt);//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC
153     Float_t ProtonBaryonEnhancement(Float_t pt);//Function which gives the factor to reweigh a lambda or antilambda so it roughly matches baryon enhancement seen at RHIC
154     TString fCentralityMethod;//string specifying the centrality method, see https://twiki.cern.ch/twiki/bin/viewauth/ALICE/CentStudies
155     Int_t fNCentBins;//number of centrality bins (10 or 20)
156     Int_t fCentBin;//current centrality bin
157
158
159  private:
160     //Declare it private to avoid compilation warning
161     AliAnalysisEtCommon & operator = (const AliAnalysisEtCommon & g) ;//cpy assignment
162     AliAnalysisEtCommon(const AliAnalysisEtCommon & g) ; // cpy ctor
163
164     ClassDef(AliAnalysisEtCommon, 1);
165 };
166
167 #endif // ALIANALYSISETCOMMON_H