]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/AliJetContainer.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetContainer.h
CommitLineData
421b12a3 1#ifndef AliJetContainer_H
2#define AliJetContainer_H
3
9239b066 4// $Id$
421b12a3 5
421b12a3 6class TClonesArray;
7class TString;
6421eeb0 8
421b12a3 9class AliEMCALGeometry;
10class AliEmcalJet;
11class AliVEvent;
6421eeb0 12class AliParticleContainer;
13class AliClusterContainer;
9e5eee5d 14class AliLocalRhoParameter;
b929303d 15class AliPythiaInfo;
421b12a3 16
b4d8a739 17#include <TMath.h>
421b12a3 18#include "AliRhoParameter.h"
6421eeb0 19#include "AliEmcalContainer.h"
b4d8a739 20#include "AliLog.h"
21#include "AliVEvent.h"
421b12a3 22
23class AliJetContainer : public AliEmcalContainer {
24 public:
6421eeb0 25
421b12a3 26 enum JetAcceptanceType {
27 kTPC = 0, // TPC acceptance
28 kEMCAL = 1, // EMCal acceptance
4c9493a7 29 kUser = 2 // User defined acceptance
421b12a3 30 };
31
32
33 AliJetContainer();
34 AliJetContainer(const char *name);
6421eeb0 35 virtual ~AliJetContainer() {;}
421b12a3 36
421b12a3 37 void SetEMCALGeometry();
38 void SetEMCALGeometry(AliEMCALGeometry *p) {fGeom = p;}
39 void LoadRho(AliVEvent *event);
9e5eee5d 40 void LoadLocalRho(AliVEvent *event);
4d3b366f 41 void LoadRhoMass(AliVEvent *event);
b929303d 42 void LoadPythiaInfo(AliVEvent *event);
421b12a3 43
44 void SetJetAcceptanceType(JetAcceptanceType type) { fJetAcceptanceType = type ; }
6c3dc2d6 45 void PrintCuts();
421b12a3 46 void ResetCuts();
421b12a3 47 void SetJetEtaPhiEMCAL() ;
48 void SetJetEtaPhiTPC() ;
56f370b0 49 void SetRunNumber(Int_t r) { fRunNumber = r; }
421b12a3 50 void SetJetEtaLimits(Float_t min, Float_t max) { fJetMinEta = min, fJetMaxEta = max ; }
51 void SetJetPhiLimits(Float_t min, Float_t max) { fJetMinPhi = min, fJetMaxPhi = max ; }
7a615dc4 52 void SetJetPtCut(Float_t cut) { fJetPtCut = cut ; }
53 void SetJetRadius(Float_t r) { fJetRadius = r ; }
421b12a3 54 void SetJetAreaCut(Float_t cut) { fJetAreaCut = cut ; }
9239b066 55 void SetPercAreaCut(Float_t p) { if(fJetRadius==0.) AliWarning("JetRadius not set. Area cut will be 0");
56 fJetAreaCut = p*TMath::Pi()*fJetRadius*fJetRadius; }
7a615dc4 57 void SetAreaEmcCut(Double_t a = 0.99) { fAreaEmcCut = a ; }
413ab3a3 58 void SetZLeadingCut(Float_t zemc, Float_t zch) { fZLeadingEmcCut = zemc; fZLeadingChCut = zch ; }
9e5eee5d 59 void SetNEFCut(Float_t min = 0., Float_t max = 1.) { fNEFMinCut = min; fNEFMaxCut = max; }
3c9775d9 60 void SetFlavourCut(Int_t myflavour) { fFlavourSelection = myflavour;}
421b12a3 61 void SetMaxClusterPt(Float_t b) { fMaxClusterPt = b ; }
62 void SetMaxTrackPt(Float_t b) { fMaxTrackPt = b ; }
63 void SetPtBiasJetClus(Float_t b) { fPtBiasJetClus = b ; }
64 void SetNLeadingJets(Int_t t) { fNLeadingJets = t ; }
65 void SetPtBiasJetTrack(Float_t b) { fPtBiasJetTrack = b ; }
421b12a3 66 void SetLeadingHadronType(Int_t t) { fLeadingHadronType = t ; }
67 void SetJetBitMap(UInt_t m) { fJetBitMap = m ; }
6421eeb0 68 void SetJetTrigger(UInt_t t=AliVEvent::kEMCEJE) { fJetTrigger = t ; }
7a615dc4 69 void SetTagStatus(Int_t i) { fTagStatus = i ; }
70
71 virtual void SetRhoName(const char *n) { fRhoName = n ; }
72 virtual void SetLocalRhoName(const char *n) { fLocalRhoName = n ; }
4d3b366f 73 virtual void SetRhoMassName(const char *n) { fRhoMassName = n ; }
b929303d 74 virtual void SetPythiaInfoName(const char *n) { fPythiaInfoName = n; }
cfa7b4df 75
7cd832c7 76 void ConnectParticleContainer(AliParticleContainer *c) { fParticleContainer = c ; }
77 void ConnectClusterContainer(AliClusterContainer *c) { fClusterContainer = c ; }
ba7663ad 78
b6f970ad 79 AliEmcalJet *GetLeadingJet(const char* opt="") ;
6421eeb0 80 AliEmcalJet *GetJet(Int_t i) const;
6504c17f 81 AliEmcalJet *GetAcceptJet(Int_t i) ;
7cd832c7 82 AliEmcalJet *GetJetWithLabel(Int_t lab) const;
6504c17f 83 AliEmcalJet *GetAcceptJetWithLabel(Int_t lab) ;
b6f970ad 84 AliEmcalJet *GetNextAcceptJet(Int_t i=-1) ;
7cd832c7 85 AliEmcalJet *GetNextJet(Int_t i=-1) ;
6421eeb0 86 void GetMomentum(TLorentzVector &mom, Int_t i) const;
983c25fc 87 Bool_t AcceptJet(const AliEmcalJet* jet) ;
88 Bool_t AcceptBiasJet(const AliEmcalJet* jet) ;
3c9775d9 89 Int_t GetFlavourCut() const {return fFlavourSelection;}
421b12a3 90 Int_t GetNJets() const {return GetNEntries();}
983c25fc 91 Double_t GetLeadingHadronPt(const AliEmcalJet* jet) const;
92 void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet* jet) const;
93 Double_t GetZ(const AliEmcalJet *jet, TLorentzVector mom) const;
94 Double_t GetZLeadingEmc(const AliEmcalJet *jet) const;
95 Double_t GetZLeadingCharged(const AliEmcalJet *jet) const;
421b12a3 96 AliRhoParameter *GetRhoParameter() {return fRho;}
3c9775d9 97 Double_t GetRhoVal() const {if (fRho) return fRho->GetVal(); else return 0;}
421b12a3 98 const TString& GetRhoName() const {return fRhoName;}
9e5eee5d 99 AliLocalRhoParameter *GetLocalRhoParameter() const {return fLocalRho;}
100 const TString& GetLocalRhoName() const {return fLocalRhoName;}
4d3b366f 101 AliRhoParameter *GetRhoMassParameter() {return fRhoMass;}
102 Double_t GetRhoMassVal() const {if (fRhoMass) return fRhoMass->GetVal(); else return 0;}
103 const TString& GetRhoMassName() const {return fRhoMassName;}
b929303d 104 const TString& GetPythiaInfoName() const {return fPythiaInfoName;}
105 AliPythiaInfo *GetPythiaInfo() const {return fPythiaInfo;}
421b12a3 106 Double_t GetJetPtCorr(Int_t i) const;
9e5eee5d 107 Double_t GetJetPtCorrLocal(Int_t i) const;
56f370b0 108 Float_t GetJetRadius() const {return fJetRadius;}
4c9493a7 109 Float_t GetJetEtaMin() const {return fJetMinEta;}
110 Float_t GetJetEtaMax() const {return fJetMaxEta;}
111 Float_t GetJetPhiMin() const {return fJetMinPhi;}
112 Float_t GetJetPhiMax() const {return fJetMaxPhi;}
b48964d0 113 Float_t GetJetPtCut() const {return fJetPtCut;}
b6f970ad 114 void SetClassName(const char *clname);
115 void SetArray(AliVEvent *event);
3617787b 116 AliParticleContainer *GetParticleContainer() const {return fParticleContainer;}
117 AliClusterContainer *GetClusterContainer() const {return fClusterContainer;}
1705bab1 118 Double_t GetFractionSharedPt(const AliEmcalJet *jet) const;
cfa7b4df 119
421b12a3 120
121 protected:
122 JetAcceptanceType fJetAcceptanceType; // acceptance type
123 Float_t fJetRadius; // jet radius
124 TString fRhoName; // Name of rho object
9e5eee5d 125 TString fLocalRhoName; // Name of local rho object
4d3b366f 126 TString fRhoMassName; // Name of rho mass object
b929303d 127 TString fPythiaInfoName; // Name of pythia info object
3c9775d9 128 Int_t fFlavourSelection; // selection on jet flavour
421b12a3 129 Float_t fPtBiasJetTrack; // select jets with a minimum pt track
130 Float_t fPtBiasJetClus; // select jets with a minimum pt cluster
131 Float_t fJetPtCut; // cut on jet pt
132 Float_t fJetAreaCut; // cut on jet area
133 Float_t fAreaEmcCut; // minimum cut on jet emcal area
134 Float_t fJetMinEta; // minimum eta jet acceptance
135 Float_t fJetMaxEta; // maximum eta jet acceptance
136 Float_t fJetMinPhi; // minimum phi jet acceptance
137 Float_t fJetMaxPhi; // maximum phi jet acceptance
138 Float_t fMaxClusterPt; // maximum cluster constituent pt to accept the jet
139 Float_t fMaxTrackPt; // maximum track constituent pt to accept the jet
413ab3a3 140 Float_t fZLeadingEmcCut; // maximum z,leading neutral
141 Float_t fZLeadingChCut; // maximum z,leading charged
9e5eee5d 142 Float_t fNEFMinCut; // minimum NEF in a jet
143 Float_t fNEFMaxCut; // maximum NEF in a jet
421b12a3 144 Int_t fLeadingHadronType; // 0 = charged, 1 = neutral, 2 = both
145 Int_t fNLeadingJets; // how many jets are to be considered the leading jet(s)
146 UInt_t fJetBitMap; // bit map of accepted jets
6421eeb0 147 UInt_t fJetTrigger; // jet trigger
7a615dc4 148 Int_t fTagStatus; // jet tag status
7cd832c7 149 AliParticleContainer *fParticleContainer; // particle container (jet constituents)
150 AliClusterContainer *fClusterContainer; // cluster container (jet constituents)
6421eeb0 151 AliRhoParameter *fRho; //! event rho for these jets
9e5eee5d 152 AliLocalRhoParameter *fLocalRho; //! event local rho for these jets
4d3b366f 153 AliRhoParameter *fRhoMass; //! event rho mass for these jets
b929303d 154 AliPythiaInfo *fPythiaInfo; //! event parton info
6421eeb0 155 AliEMCALGeometry *fGeom; //! emcal geometry
156 Int_t fRunNumber; //! run number
421b12a3 157
158 private:
159 AliJetContainer(const AliJetContainer& obj); // copy constructor
160 AliJetContainer& operator=(const AliJetContainer& other); // assignment
161
51e5aebd 162 ClassDef(AliJetContainer,10);
421b12a3 163
164};
165
166#endif