Fixed violations
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetFinder.h
CommitLineData
471f69dc 1#ifndef ALIEMCALJETFINDER_H
2#define ALIEMCALJETFINDER_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/* $Id$ */
8//*-- Author:
9//*-- Andreas Morsch (CERN)
10
11#include <TTask.h>
12#include "AliEMCALJet.h"
f6ada3ae 13#include <TString.h>
471f69dc 14
15class TClonesArray;
16class TH2F;
c44ecd4c 17class TH1F;
18class TCanvas;
b561574c 19class TList;
20class AliEMCALHadronCorrection;
471f69dc 21
22class AliEMCALJetFinder : public TTask {
ee6b678f 23 friend class AliEMCALJetMicroDst; //PH Temporary solution
471f69dc 24 public:
3bc109a9 25 AliEMCALJetFinder();
26 AliEMCALJetFinder(const char* name, const char *title);
27 virtual ~AliEMCALJetFinder();
08a3fb06 28 virtual void Init();
a942c029 29 virtual void Find(Int_t ncell, Int_t ncell_tot, Float_t etc[30000],
3bc109a9 30 Float_t etac[30000], Float_t phic[30000],
31 Float_t min_move, Float_t max_move, Int_t mode,
32 Float_t prec_bg, Int_t ierror);
a942c029 33 virtual void Find();
759ae494 34 virtual void FindChargedJet();
a942c029 35 virtual void FindTracksInJetCone();
36 virtual void Test();
d594b22e 37 virtual void BuildTrackFlagTable();
38 virtual Int_t SetTrackFlag(Float_t radius, Int_t pdgCode, Double_t charge);
3bc109a9 39 // Geometry
40 virtual void SetCellSize(Float_t eta, Float_t phi);
41 // Parameters
d594b22e 42 virtual void SetDebug(Int_t flag = 0) {fDebug = flag;}
3bc109a9 43 virtual void SetConeRadius(Float_t par);
44 virtual void SetEtSeed(Float_t par);
45 virtual void SetMinJetEt(Float_t par);
46 virtual void SetMinCellEt(Float_t par);
d594b22e 47 virtual void SetPtCut(Float_t par = 1.);
48 virtual void SetMomentumSmearing(Bool_t flag = kFALSE) {fSmear = flag;}
49 virtual void SetEfficiencySim(Bool_t flag = kFALSE) {fEffic = flag;}
5649a778 50 virtual void SetSamplingFraction(Float_t par) {fSamplingF = par;}
7deee4ae 51 virtual void SetEnergyWeightingFlag(Bool_t flag) {fWeightingMethod = flag;}
52 virtual void SetEMCALWeight(Float_t par) {fEMCALWeight = par;}
53 virtual void SetTrackWeight(Float_t par) {fTrackWeight = par;}
d53b7b0b 54 virtual void SetIncludeK0andN(Bool_t flag = kFALSE) {fK0N = flag;}
d594b22e 55 // Correction of hadronic energy
56 virtual void SetHadronCorrector(AliEMCALHadronCorrection* corr)
57 {fHadronCorrector = corr;}
58 virtual void SetHadronCorrection(Int_t flag = 1) {fHCorrection = flag;}
b7a73953 59 // PAI
60 void SetWriteKey(Bool_t flag = kFALSE) {fWrite = flag;}
61 void SetMode(Int_t mode = 0) {fMode = mode;}
62 void SetMinMove(Float_t minMove = 0.05) {fMinMove = minMove;}
63 void SetMaxMove(Float_t maxMove = 0.15) {fMaxMove = maxMove;}
64 void SetPrecBg (Float_t precBg = 0.035) {fPrecBg = precBg;}
65 void SetParametersForBgSubtraction
66 (Int_t mode=0, Float_t minMove=0.05, Float_t maxMove=0.15, Float_t precBg=0.035);
67 // virtual void Print(Option_t* option="") const; // *MENU*
0ebe858d 68 void SetRandomBg(Bool_t flag) {fRandomBg = flag;}
3fb730f8 69 Bool_t GetWriteKey() const {return fWrite;}
668c80d5 70 //AliEMCALJet* GetJetT() {return fJetT[0];}
71 AliEMCALJet* GetJetT(Int_t n = 0) {return fJetT[n];}
c44ecd4c 72 virtual void DrawHistsForTuning(Int_t mode=0); // *MENU*
73 virtual void PrintParameters(Int_t mode=0); // *MENU*
74 virtual const Char_t* GetFileNameForParameters(Char_t* dir="RES/");
b7a73953 75
a942c029 76 // Access to Results
3fb730f8 77 virtual Int_t Njets() const;
78 virtual Float_t JetEnergy(Int_t count);
79 virtual Float_t JetPhiL(Int_t count);
80 virtual Float_t JetPhiW(Int_t count);
81 virtual Float_t JetEtaL(Int_t count);
82 virtual Float_t JetEtaW(Int_t count);
83 TH2F* GetLego() const {return fLego;}
84 TH2F* GetLegoB() const {return fLegoB;}
85 TH2F* GetLegoEMCAL() const {return fhLegoEMCAL;}
86 TH2F* GetLegoTracks() const {return fhLegoTracks;}
87 TH2F* GethEff() const {return fhEff;}
88 TH1F* GetCellEt() const {return fhCellEt;}
89 TH1F* GetCellEMCALEt() const {return fhCellEMCALEt;}
90 TH1F* GetTrackPt() const {return fhTrackPt;}
91 TH1F* GetTrackPtBcut() const {return fhTrackPtBcut;}
92 TList* GetHistsList() const {return fHistsList;}
93 Int_t GetNChTpc() const {return fNChTpc;}
94 Bool_t GetEnergyWeightingFlag() const {return fWeightingMethod ;}
95 Float_t GetEMCALWeight() const {return fEMCALWeight;}
96 Float_t GetTrackWeight() const {return fTrackWeight;}
c44ecd4c 97 void DrawLego(Char_t *opt="lego"); // *MENU*
98 void DrawLegoEMCAL(Char_t *opt="lego"); // *MENU*
99 void DrawLegos(); // *MENU*
f6ada3ae 100 void DrawLegoBackground(Char_t *opt="lego"); // *MENU*
b561574c 101 Bool_t IsThisPartonsOrDiQuark(Int_t pdg);
3bc109a9 102 // I/O
08a3fb06 103 virtual void SetOutputFileName(char* name) {fOutFileName = name;}
3bc109a9 104 virtual void FillFromHits(Int_t flag = 0);
d594b22e 105 virtual void FillFromHitFlaggedTracks(Int_t flag = 0);
106 virtual void FillFromDigits(Int_t flag = 0);
3bc109a9 107 virtual void FillFromTracks(Int_t flag = 0, Int_t ich = 0);
c44ecd4c 108 virtual void FillFromParticles();
b7a73953 109 virtual void FillFromPartons();
110
f6ada3ae 111 virtual void SaveBackgroundEvent(Char_t *name="");
a942c029 112 virtual void InitFromBackground();
3bc109a9 113 virtual void AddJet(const AliEMCALJet& jet);
114 virtual void WriteJets();
115 virtual void ResetJets();
3fb730f8 116 virtual TClonesArray* Jets() const {return fJets;}
f6ada3ae 117 const Char_t* GetNameOfVariant();
118
119 virtual Bool_t IsFolder() const;
120 virtual void Browse(TBrowser* b);
3fb730f8 121
122 TString fBGFileName; // file name for background
123 Float_t fEMCALWeight; // EMCal energy weighting
124 Float_t fTrackWeight; // Track energy weighting
125 Bool_t fRandomBg; // Flag for Random Background
126
127
128
471f69dc 129 protected:
b7a73953 130 Bool_t fWrite; // Key for writing
7deee4ae 131 Bool_t fWeightingMethod; // Key for writing
d594b22e 132 TClonesArray* fJets; //! List of Jets
133 TH2F* fLego; //! Lego Histo
c44ecd4c 134 TH2F* fLegoB; //! Lego Histo Backg
135 TH2F* fhLegoTracks; //! Lego for Tracks
136 TH2F* fhLegoEMCAL; //! Lego for EMCAL itself
137 TH2F* fhLegoHadrCorr; //! Lego for hadron correction
138 TH2F* fhEff; //! Hist. for controling eff.
139 TH1F* fhCellEt; //! Et distr. for cells from fLego
140 TH1F* fhCellEMCALEt; //! Et distr. for cells from fLegoEMCAL
141 TH1F* fhTrackPt; //! Pt distr. for charge particles
142 TH1F* fhTrackPtBcut; //! Pt distr. for charge particles + cut due to magnetic field
b561574c 143 TH1F* fhChPartMultInTpc;//! Ch. part. multiplicity in TPC acceptance
f6ada3ae 144 TH1F* fhSinTheta; //! sin(theta)
c44ecd4c 145 TCanvas* fC1; //! first canvas for drawing
b561574c 146 TList* fHistsList; //! List of hists - 4-mar-2002
d594b22e 147 AliEMCALJet* fJetT[10]; //! Jet temporary storage
148 AliEMCALHadronCorrection* fHadronCorrector; //! Pointer to hadronic correction
149 Int_t fHCorrection; // Hadron correction flag
150 Int_t fDebug; //! Debug flag
a942c029 151 Int_t fBackground; //! Background flag
d594b22e 152 Float_t fConeRadius; // Cone radius
153 Float_t fPtCut; // Pt cut on charged tracks
154 Float_t fEtSeed; // Min. Et for seed
155 Float_t fMinJetEt; // Min Et of jet
156 Float_t fMinCellEt; // Min Et in one cell
a942c029 157 Float_t fSamplingF; // Sampling Fraction
d594b22e 158 Bool_t fSmear; // Flag for momentum smearing
159 Bool_t fEffic; // Flag for efficiency simulation
d53b7b0b 160 Bool_t fK0N; // Flag for efficiency simulation
b561574c 161 Int_t fNjets; //! Number of Jetsp
d594b22e 162 Float_t fDeta; //! eta cell size
163 Float_t fDphi; //! phi cell size
164 Int_t fNcell; //! number of cells
165 Int_t fNtot; //! total number of cells
166 Int_t fNbinEta; //! number of cells in eta
167 Int_t fNbinPhi; //! number of cells in phi
be9787fe 168 Float_t fEtaMin; //! minimum eta
169 Float_t fEtaMax; //! maximum eta
170 Float_t fPhiMin; //! minimun phi
171 Float_t fPhiMax; //! maximum phi
d594b22e 172 Float_t fEtCell[30000]; //! Cell Energy
173 Float_t fEtaCell[30000]; //! Cell eta
174 Float_t fPhiCell[30000]; //! Cell phi
d594b22e 175 Int_t fNt; //! number of tracks
b561574c 176 Int_t fNChTpc; //! number of ch.part in TPC
177
a942c029 178 Int_t fNtS; //! number of tracks selected
b561574c 179 Int_t* fTrackList; //! List of selected tracks
a942c029 180 Float_t* fPtT; //! Pt of tracks
181 Float_t* fEtaT; //! Eta of tracks
182 Float_t* fPhiT; //! Phi of tracks
975127ed 183 Int_t* fPdgT; //! PDG code of tracks
184
a942c029 185 Int_t fNtB; //! number of tracks in Bg
b561574c 186 Int_t* fTrackListB; //! List of selected tracks in Bg
a942c029 187 Float_t* fPtB; //! Pt of tracks in Bg
188 Float_t* fEtaB; //! Eta of tracks in Bg
189 Float_t* fPhiB; //! Phi of tracks in Bg
975127ed 190 Int_t* fPdgB; //! PDG of tracks in Bg
b7a73953 191
192 // parameter for jet_finder_ua1
c44ecd4c 193 Int_t fMode; // key for BG subtraction
b7a73953 194 Float_t fMinMove; // min cone move
195 Float_t fMaxMove; // max cone move
b7a73953 196 Float_t fPrecBg; // max value of change for BG (in %)
197 Int_t fError; // error variables
198
08a3fb06 199 char* fOutFileName; //! Output file name
200 TFile* fOutFile; //! Output file
201 TFile* fInFile; //! Output file
202 Int_t fEvent; //! Processed event
3fb730f8 203 private:
204 virtual void BookLego();
205 Float_t WeightedJetEnergy(Float_t eta, Float_t phi);
206 Float_t EMCALConeEnergy(Float_t eta, Float_t phi);
207 Float_t TrackConeEnergy(Float_t eta, Float_t phi);
208 Float_t HCConeEnergy(Float_t eta, Float_t phi);
209 virtual void DumpLego();
210 virtual void ResetMap();
211 virtual Float_t PropagatePhi(Float_t pt, Float_t charge, Bool_t& curls);
212 virtual void RearrangeParticlesMemory(Int_t npart);
f6ada3ae 213
3fb730f8 214 ClassDef(AliEMCALJetFinder,4) // JetFinder for EMCAL
3bc109a9 215}
216;
471f69dc 217#endif // ALIEMCALJetFinder_H