Class moved to STEERBase.
[u/mrichter/AliRoot.git] / JETAN / AliJetAnalysis.h
1 #ifndef ALIJETANALYSIS_H
2 #define ALIJETANALYSIS_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //---------------------------------------------------------------------
8 // JetAnalysis class 
9 // Perform Jet Analysis on already found jets
10 // Author: andreas.morsch@cern.ch, jgcn@mail.cern.ch
11 //         mercedes.lopez.noriega@cern.ch
12 //---------------------------------------------------------------------
13
14 #include <TObject.h> 
15 class AliLeading;
16 class AliJet;
17 class TH1;
18 class TH1F;
19 class TH2F;
20 class TProfile;
21 class TLorentzVector;
22
23 class AliJetAnalysis : public TObject
24 {
25  public:
26  
27     AliJetAnalysis();
28     virtual ~AliJetAnalysis();
29
30     void Analyze();
31     // define histograms
32     void DefineHistograms();
33     void DefineKineH();
34     void DefineCorrH();
35     void DefineCorr50H();
36     void DefineShapH();
37     void DefineFragH();
38     void DefineTrigH();
39     void DefineJtH();
40     void DefinedNdxiH();
41     // fill histograms
42     void FillHistograms();
43     void FillKineH();
44     void FillCorrH();
45     void FillCorr50H();
46     void FillShapH(Float_t r);
47     void FillFragH();
48     void FillTrigH();
49     void FillJtH();
50     void FilldNdxiH();
51     void FillBkgd(Int_t eventN, Int_t runN);
52     // normalize histograms
53     void NormHistograms();
54     // plot histograms
55     void PlotHistograms();
56     void PlotKineH() const;
57     void PlotCorrH() const;
58     void PlotCorr50H() const;
59     void PlotShapH() const;
60     void PlotFragH() const;
61     void PlotTrigH();
62     // save histograms
63     void SaveHistograms();
64     void SaveKineH();
65     void SaveCorrH();
66     void SaveCorr50H();
67     void SaveShapH();
68     void SaveFragH();
69     void SaveTrigH();
70     void SaveJtH();
71     void SavedNdxiH();
72     // other functions
73     void Shape(AliJet *j,TH1F* hs, TH1F* hr, TH1F* ha, TH2F* hd, TH2F* hp, TH1F* wd, Float_t r);
74     void FragFun(AliJet *j,TH1F* hs, TH1F* hr, TH1F* ha);
75     void Correlation(TLorentzVector *lv1,TLorentzVector *lv2,TH2F *h1, TH2F *h2, TH2F *h3, TH2F *h4);
76     void Correlation50(AliJet *j,TLorentzVector *lv1,TLorentzVector *lv2,TH2F *h1, TH2F *h2, TH2F *h3, TH2F *h4);
77     // setters
78     void SetDirectory(char* directory) 
79       {fDirectory = directory;}                      // directory where file with jets is
80     void SetBkgdDirectory(char* directory) 
81       {fBkgdDirectory = directory;}                  // directory where file with background is
82     void SetOutputFile(char* file) {fFile = file;}   // file where plots will be saved
83     void SetPercentage(Float_t p) {fPercentage = p;} // minimum percentage of tracks coming from pythia (very aprox.)
84     void SetEventRange(Int_t imin, Int_t imax) 
85       {fEventMin = imin; fEventMax = imax;}           // first and last event
86     void SetRunRange(Int_t imin, Int_t imax) 
87       {fRunMin = imin; fRunMax = imax;}               // first and last run
88     void SetMinimumMult(Int_t m){fminMult = m;}       // minimum multiplicity cut  
89     void SetPythia(Bool_t f = kFALSE){fPythia = f;}   // If only pythia, to save everything...  
90     void SetDoJt(Bool_t f = kTRUE){fDoJt = f;}        // To get j_T distribution
91     void SetDodNdxi(Bool_t f = kTRUE){fDodNdxi = f;}  // To get #xi distribution
92     void SetDoBkgd(Bool_t f = kTRUE) {fDoBkgd = f;}   // To get the bkgd for j_T, xi and dEdr in a hijing event
93     void SetDoLeadPart(Bool_t f = kTRUE){fDoPart = f;}// To make plots for leading particle
94     void SetDoGenJet(Bool_t f = kTRUE){fDoGenJ = f;}  // To make plots for generated jets
95     void SetDoRecJet(Bool_t f = kTRUE){fDoRecJ = f;}  // To make plots for reconstructed jets
96     void SetDoKinematics(Bool_t f = kTRUE){fDoKine = f;}       // To make the kine plots
97     void SetDoCorrelations(Bool_t f = kTRUE){fDoCorr = f;}     // Correlation histograms 
98     void SetDoCorr50(Bool_t f = kFALSE){fDoCorr50 = f;}        // Correlation histograms when one particle has more than 50% E
99     void SetDoShape(Bool_t f = kTRUE){fDoShap = f;}            // Shape plots
100     void SetDoFragmentations(Bool_t f = kTRUE){fDoFrag = f;}   // Fragmentation
101     void SetDoTriggerBias(Bool_t f = kTRUE){fDoTrig = f;}      // Trigger bias plots
102     void SetDivideEnergy(Float_t Efactor){fEfactor = Efactor;} // Divides E of rec.jet by Efactor
103     void SetProperties(TH1* h,const char* x, const char* y) const;
104     void SetReaderHeader(char *s="AliJetKineReaderHeader"){fReaderHeader = s;}
105     void SetdEdrWeight();
106     void SetPartPtCut(Float_t c){fPartPtCut = c;}
107     void SetdrJt(Float_t r){fdrJt = r;}
108     void SetdrdNdxi(Float_t r){fdrdNdxi = r;}
109     void SetdrdEdr(Float_t r){fdrdEdr = r;}
110     // getters
111     Float_t GetdEdrWeight(Float_t eta, Float_t r);
112     
113  private:
114     char*  fReaderHeader;    // Reader header
115     char*  fDirectory;       // Directory
116     char*  fBkgdDirectory;   // Directory for background
117     char*  fFile;            // Output file name
118     Int_t  fEventMin;        // Minimum event number
119     Int_t  fEventMax;        // Maximum event number
120     Int_t  fRunMin;          // Minimum run number 
121     Int_t  fRunMax;          // Maximum run number
122     Int_t  fminMult;         // Minimum multiplicity for events
123     Float_t fPercentage;     // percentage of pt from signal particles to accept a jet
124     Float_t fPartPtCut;      // cut in the pt of particles in histos
125     Float_t fdrJt;          // maximum dr for Jt plot
126     Float_t fdrdNdxi;       // maximum dr for dN/dxi plot
127     Float_t fdrdEdr;        // maximum dr for dE/dr plot
128     Float_t fEfactor;        // factor by which energy the reconstructed jet will be divided
129
130     Float_t fp0;    // percentage of tracks in reconstructed jet coming from pythia
131                     // so far calculated in aprox. way, it needs to be improved!
132     // for background from hijing events:
133     Float_t fPtJ;     // P_T of the pythia jet
134     Float_t fEJ;      // Energy of the pythia jet
135     Float_t fEtaJ;    // Eta of the pythia jet
136     Float_t fPhiJ;    // Phi of the pythia jet
137     Float_t fjv3X, fjv3Y, fjv3Z;     // x,y,z of the pythia jet
138
139     // user options    
140     Bool_t fPythia;      // if pythia events
141     Bool_t fDoPart;      // do analysis of leading particle
142     Bool_t fDoGenJ;      // do analysis of leading generated jet
143     Bool_t fDoRecJ;      // do analysis of leading rec jet
144     Bool_t fDoKine;      // do kinematic plots
145     Bool_t fDoCorr;      // do correlation plots
146     Bool_t fDoCorr50;    // do correlation plots when one track more than 50% of jet energy
147     Bool_t fDoShap;      // do shape plots
148     Bool_t fDoFrag;      // do fragmentation plots 
149     Bool_t fDoTrig;      // do trigger bias plots
150     Bool_t fDoJt;        // do jt histo
151     Bool_t fDodNdxi;     // do dN/dxi histo
152     Bool_t fDoBkgd;      // get dN/dxi bkgd using hijing tracks only
153     
154     // weights
155     Float_t fWeight;             // event weight
156     Float_t fWShapR;             // weighted number of jets 
157     Float_t fWFragR;             // weighted number of jets 
158     Float_t fWeightdEdr[10][20]; // weight for acceptance of dE/dr histo
159     Float_t fWdEdr;              // weighted number of events for dEdr histo
160     Float_t fWJt;                // weight for Jt
161     Float_t fWdNdxi;             // weight fro dNd#xi
162     
163     // leading hets and particles
164     AliLeading* fPart;   // pointer to leading particle
165     AliJet* fGenJ;       // pointer to leading generated jet
166     AliJet* fRecJ;       // pointer to leading reconstructed jet
167     AliJet* fRecB;       // pointer to leading reconstructed jet for background
168
169     // kine histos
170     TH1F *fRKineEneH;  // Reconstructed energy histo
171     TH1F *fRKinePtH;   // Reconstructed Pt histo
172     TH1F *fRKinePhiH;  // Reconstructed phi histo
173     TH1F *fRKineEtaH;  // Reconstructed eta histo
174     TH1F *fGKineEneH;  // Generated energy histo
175     TH1F *fGKinePtH;   // Generated Pt histo
176     TH1F *fGKinePhiH;  // Generated phi histo
177     TH1F *fGKineEtaH;  // Generated eta histo
178     TH1F *fPKineEneH;  // Pythia energy histo
179     TH1F *fPKinePtH;   // Pythia Pt histo
180     TH1F *fPKinePhiH;  // Pythia phi histo
181     TH1F *fPKineEtaH;  // Pythia eta histo
182
183     // correlation histograms
184     TH2F *fPGCorrEneH;  // Energy correlation part-gen jet
185     TH2F *fPGCorrPtH;   // Pt correlation part-gen jet
186     TH2F *fPGCorrEtaH;  // Pseudorapidity correlation part-gen jet
187     TH2F *fPGCorrPhiH;  // Azimuthal angle correlation part-gen jet
188     TH2F *fPRCorrEneH;  // Energy correlation part-rec jet
189     TH2F *fPRCorrPtH;   // Pt correlation part-rec jet
190     TH2F *fPRCorrEtaH;  // Pseudorapidity correlation part-rec jet
191     TH2F *fPRCorrPhiH;  // Azimuthal angle correlation part-rec jet
192     TH2F *fRGCorrEneH;  // Energy correlation rec jet-gen jet
193     TH2F *fRGCorrPtH;   // Pt correlation rec jet-gen jet
194     TH2F *fRGCorrEtaH;  // Pseudorapidity correlation rec jet-gen jet
195     TH2F *fRGCorrPhiH;  // Azimuthal angle correlation rec jet-gen jet
196    
197     // correlation histogramswhen one particle 
198     // has more than 50% of the energy of the jet
199     TH2F *fPRCorr50EneH;  // Energy correlation part-rec jet
200     TH2F *fPRCorr50PtH;   // Pt correlation part-rec jet
201     TH2F *fPRCorr50EtaH;  // Pseudorapidity correlation part-rec jet
202     TH2F *fPRCorr50PhiH;  // Azimuthal angle correlation part-rec jet
203     TH2F *fRGCorr50EneH;  // Energy correlation rec jet-gen jet
204     TH2F *fRGCorr50PtH;   // Pt correlation rec jet-gen jet
205     TH2F *fRGCorr50EtaH;  // Pseudorapidity correlation rec jet-gen jet
206     TH2F *fRGCorr50PhiH;  // Azimuthal angle correlation rec jet-gen jet
207    
208     // fragmentation function and shape histos
209     TH1F *fRFragSelH;  // Frag Fun of reconstructed jets (sel part)
210     TH1F *fRFragRejH;  // Frag Fun of reconstructed jets (rej part)
211     TH1F *fRFragAllH;  // Frag Fun of reconstructed jets (all part)
212     TH1F *fRShapSelH;  // Shape of generated jets (sel part)
213     TH1F *fRShapRejH;  // Shape of generated jets (rej part)
214     TH1F *fRShapAllH;  // Shape of generated jets (all part)
215     
216     // trigger bias histos 
217     TProfile *fGTriggerEneH;  // Generated energy (trigger bias)
218     TProfile *fRTriggerEneH;  // Reconstructed energy (trigger bias)
219     TProfile *fGPTriggerEneH; // Generated energy (trigger bias)
220     TProfile *fPTriggerEneH;  // Leading particle energy (trigger bias)
221
222     // dE/dr histo
223     TH2F* fdEdrH;  // dE/dr histo
224     TH2F* fdEdrB;  // dE/dr bkgdhisto
225     TH2F* fPtEneH2;// fPtEneH2
226     TH1F* fdEdrW;  // weights for dE/dr
227
228     // Jt histo
229     TH2F* fJtH;  // J_{T} histogram
230     TH2F* fJtB;  // J_{T} bkgd histogram
231     TH1F* fJtW;  // J_{T} weight
232
233     // dN/dxi histo
234     TH2F* fdNdxiH;  // dN/d#xi histo
235     TH2F* fdNdxiB;  // dN/d#xi bkgd histo
236     TH1F* fdNdxiW;  // dN/d#xi weight histo
237     TH2F* fPtEneH;  // fPtEneH
238
239 protected:
240     AliJetAnalysis(const AliJetAnalysis& rJetA);
241     AliJetAnalysis& operator = (const AliJetAnalysis& rhsa);
242
243
244     ClassDef(AliJetAnalysis,1)
245 };
246  
247 #endif