fix memory leak and funny multiplicity
[u/mrichter/AliRoot.git] / JETAN / AliJetAnalysis.h
CommitLineData
62567a80 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 */
83a444b1 6
62567a80 7//---------------------------------------------------------------------
8// JetAnalysis class
83a444b1 9// Perform Jet Analysis on already found jets
10// Author: andreas.morsch@cern.ch, jgcn@mail.cern.ch
11// mercedes.lopez.noriega@cern.ch
62567a80 12//---------------------------------------------------------------------
83a444b1 13
62567a80 14#include <TObject.h>
83a444b1 15class AliLeading;
16class AliJet;
17class TH1;
18class TH1F;
19class TH2F;
20class TProfile;
21class TLorentzVector;
22
62567a80 23class AliJetAnalysis : public TObject
24{
25 public:
26
27 AliJetAnalysis();
83a444b1 28 virtual ~AliJetAnalysis();
62567a80 29
83a444b1 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
c202e52e 78 void SetDirectory(const char* directory)
83a444b1 79 {fDirectory = directory;} // directory where file with jets is
c202e52e 80 void SetBkgdDirectory(const char* directory)
83a444b1 81 {fBkgdDirectory = directory;} // directory where file with background is
a6e0ebfe 82 void SetOutputFile(const char* file) {fFile = file;} // file where plots will be saved
83a444b1 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;
c202e52e 104 void SetReaderHeader(const char *s="AliJetKineReaderHeader"){fReaderHeader = s;}
83a444b1 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
62567a80 113 private:
c202e52e 114 const char* fReaderHeader; // Reader header
115 const char* fDirectory; // Directory
116 const char* fBkgdDirectory; // Directory for background
a6e0ebfe 117 const char* fFile; // Output file name
83a444b1 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
62567a80 153
83a444b1 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
1b7d5d7e 197 // correlation histogramswhen one particle
198 // has more than 50% of the energy of the jet
83a444b1 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
1b7d5d7e 239protected:
240 AliJetAnalysis(const AliJetAnalysis& rJetA);
241 AliJetAnalysis& operator = (const AliJetAnalysis& rhsa);
242
243
62567a80 244 ClassDef(AliJetAnalysis,1)
245};
246
247#endif