1 #ifndef AliJetContainer_H
2 #define AliJetContainer_H
9 class AliEMCALGeometry;
12 class AliParticleContainer;
13 class AliClusterContainer;
14 class AliLocalRhoParameter;
15 class AliStackPartonInfo;
17 #include "AliRhoParameter.h"
19 #include "AliEmcalContainer.h"
21 class AliJetContainer : public AliEmcalContainer {
24 enum JetAcceptanceType {
25 kTPC = 0, // TPC acceptance
26 kEMCAL = 1, // EMCal acceptance
27 kUser = 2 // User defined acceptance
32 AliJetContainer(const char *name);
33 virtual ~AliJetContainer() {;}
35 void SetEMCALGeometry();
36 void SetEMCALGeometry(AliEMCALGeometry *p) {fGeom = p;}
37 void LoadRho(AliVEvent *event);
38 void LoadLocalRho(AliVEvent *event);
39 void LoadRhoMass(AliVEvent *event);
40 void LoadPartonsInfo(AliVEvent *event);
42 void SetJetAcceptanceType(JetAcceptanceType type) { fJetAcceptanceType = type ; }
45 void SetJetEtaPhiEMCAL() ;
46 void SetJetEtaPhiTPC() ;
47 void SetRunNumber(Int_t r) { fRunNumber = r; }
48 void SetJetEtaLimits(Float_t min, Float_t max) { fJetMinEta = min, fJetMaxEta = max ; }
49 void SetJetPhiLimits(Float_t min, Float_t max) { fJetMinPhi = min, fJetMaxPhi = max ; }
50 void SetJetPtCut(Float_t cut) { fJetPtCut = cut ; }
51 void SetJetRadius(Float_t r) { fJetRadius = r ; }
52 void SetJetAreaCut(Float_t cut) { fJetAreaCut = cut ; }
53 void SetPercAreaCut(Float_t p) { if(fJetRadius==0.) AliWarning("JetRadius not set. Area cut will be 0");
54 fJetAreaCut = p*TMath::Pi()*fJetRadius*fJetRadius; }
55 void SetAreaEmcCut(Double_t a = 0.99) { fAreaEmcCut = a ; }
56 void SetZLeadingCut(Float_t zemc, Float_t zch) { fZLeadingEmcCut = zemc; fZLeadingChCut = zch ; }
57 void SetNEFCut(Float_t min = 0., Float_t max = 1.) { fNEFMinCut = min; fNEFMaxCut = max; }
58 void SetFlavourCut(Int_t myflavour) { fFlavourSelection = myflavour;}
59 void SetMaxClusterPt(Float_t b) { fMaxClusterPt = b ; }
60 void SetMaxTrackPt(Float_t b) { fMaxTrackPt = b ; }
61 void SetPtBiasJetClus(Float_t b) { fPtBiasJetClus = b ; }
62 void SetNLeadingJets(Int_t t) { fNLeadingJets = t ; }
63 void SetPtBiasJetTrack(Float_t b) { fPtBiasJetTrack = b ; }
64 void SetLeadingHadronType(Int_t t) { fLeadingHadronType = t ; }
65 void SetJetBitMap(UInt_t m) { fJetBitMap = m ; }
66 void SetJetTrigger(UInt_t t=AliVEvent::kEMCEJE) { fJetTrigger = t ; }
67 void SetTagStatus(Int_t i) { fTagStatus = i ; }
69 virtual void SetRhoName(const char *n) { fRhoName = n ; }
70 virtual void SetLocalRhoName(const char *n) { fLocalRhoName = n ; }
71 virtual void SetRhoMassName(const char *n) { fRhoMassName = n ; }
72 virtual void SetPartonInfoName(const char *n) { fPartonInfoName = n; }
74 void ConnectParticleContainer(AliParticleContainer *c) { fParticleContainer = c ; }
75 void ConnectClusterContainer(AliClusterContainer *c) { fClusterContainer = c ; }
77 AliEmcalJet *GetLeadingJet(const char* opt="") ;
78 AliEmcalJet *GetJet(Int_t i) const;
79 AliEmcalJet *GetAcceptJet(Int_t i) ;
80 AliEmcalJet *GetJetWithLabel(Int_t lab) const;
81 AliEmcalJet *GetAcceptJetWithLabel(Int_t lab) ;
82 AliEmcalJet *GetNextAcceptJet(Int_t i=-1) ;
83 AliEmcalJet *GetNextJet(Int_t i=-1) ;
84 void GetMomentum(TLorentzVector &mom, Int_t i) const;
85 Bool_t AcceptJet(const AliEmcalJet* jet) ;
86 Bool_t AcceptBiasJet(const AliEmcalJet* jet) ;
87 Int_t GetFlavourCut() const {return fFlavourSelection;}
88 Int_t GetNJets() const {return GetNEntries();}
89 Double_t GetLeadingHadronPt(const AliEmcalJet* jet) const;
90 void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet* jet) const;
91 Double_t GetZ(const AliEmcalJet *jet, TLorentzVector mom) const;
92 Double_t GetZLeadingEmc(const AliEmcalJet *jet) const;
93 Double_t GetZLeadingCharged(const AliEmcalJet *jet) const;
94 AliRhoParameter *GetRhoParameter() {return fRho;}
95 Double_t GetRhoVal() const {if (fRho) return fRho->GetVal(); else return 0;}
96 const TString& GetRhoName() const {return fRhoName;}
97 AliLocalRhoParameter *GetLocalRhoParameter() const {return fLocalRho;}
98 const TString& GetLocalRhoName() const {return fLocalRhoName;}
99 AliRhoParameter *GetRhoMassParameter() {return fRhoMass;}
100 Double_t GetRhoMassVal() const {if (fRhoMass) return fRhoMass->GetVal(); else return 0;}
101 const TString& GetRhoMassName() const {return fRhoMassName;}
102 const TString& GetPartonInfoName() const {return fPartonInfoName;}
103 AliStackPartonInfo *GetStackPartonInfo() const {return fPartonsInfo;}
104 Double_t GetJetPtCorr(Int_t i) const;
105 Double_t GetJetPtCorrLocal(Int_t i) const;
106 Float_t GetJetRadius() const {return fJetRadius;}
107 Float_t GetJetEtaMin() const {return fJetMinEta;}
108 Float_t GetJetEtaMax() const {return fJetMaxEta;}
109 Float_t GetJetPhiMin() const {return fJetMinPhi;}
110 Float_t GetJetPhiMax() const {return fJetMaxPhi;}
111 Float_t GetJetPtCut() const {return fJetPtCut;}
112 void SetClassName(const char *clname);
113 void SetArray(AliVEvent *event);
114 AliParticleContainer *GetParticleContainer() const {return fParticleContainer;}
115 AliClusterContainer *GetClusterContainer() const {return fClusterContainer;}
116 Double_t GetFractionSharedPt(AliEmcalJet *jet) const;
120 JetAcceptanceType fJetAcceptanceType; // acceptance type
121 Float_t fJetRadius; // jet radius
122 TString fRhoName; // Name of rho object
123 TString fLocalRhoName; // Name of local rho object
124 TString fRhoMassName; // Name of rho mass object
125 TString fPartonInfoName; // Name of parton info object
126 Int_t fFlavourSelection; // selection on jet flavour
127 Float_t fPtBiasJetTrack; // select jets with a minimum pt track
128 Float_t fPtBiasJetClus; // select jets with a minimum pt cluster
129 Float_t fJetPtCut; // cut on jet pt
130 Float_t fJetAreaCut; // cut on jet area
131 Float_t fAreaEmcCut; // minimum cut on jet emcal area
132 Float_t fJetMinEta; // minimum eta jet acceptance
133 Float_t fJetMaxEta; // maximum eta jet acceptance
134 Float_t fJetMinPhi; // minimum phi jet acceptance
135 Float_t fJetMaxPhi; // maximum phi jet acceptance
136 Float_t fMaxClusterPt; // maximum cluster constituent pt to accept the jet
137 Float_t fMaxTrackPt; // maximum track constituent pt to accept the jet
138 Float_t fZLeadingEmcCut; // maximum z,leading neutral
139 Float_t fZLeadingChCut; // maximum z,leading charged
140 Float_t fNEFMinCut; // minimum NEF in a jet
141 Float_t fNEFMaxCut; // maximum NEF in a jet
142 Int_t fLeadingHadronType; // 0 = charged, 1 = neutral, 2 = both
143 Int_t fNLeadingJets; // how many jets are to be considered the leading jet(s)
144 UInt_t fJetBitMap; // bit map of accepted jets
145 UInt_t fJetTrigger; // jet trigger
146 Int_t fTagStatus; // jet tag status
147 AliParticleContainer *fParticleContainer; // particle container (jet constituents)
148 AliClusterContainer *fClusterContainer; // cluster container (jet constituents)
149 AliRhoParameter *fRho; //! event rho for these jets
150 AliLocalRhoParameter *fLocalRho; //! event local rho for these jets
151 AliRhoParameter *fRhoMass; //! event rho mass for these jets
152 AliStackPartonInfo *fPartonsInfo; //! event parton info
153 AliEMCALGeometry *fGeom; //! emcal geometry
154 Int_t fRunNumber; //! run number
157 AliJetContainer(const AliJetContainer& obj); // copy constructor
158 AliJetContainer& operator=(const AliJetContainer& other); // assignment
160 ClassDef(AliJetContainer,10);