AliPhysics  e59a9ba (e59a9ba)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliJetContainer.h
Go to the documentation of this file.
1 #ifndef ALIJETCONTAINER_H
2 #define ALIJETCONTAINER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 class TClonesArray;
7 class TString;
8 
9 class AliEMCALGeometry;
10 class AliEmcalJet;
11 class AliVEvent;
15 
16 #include <TMath.h>
17 #include <TLorentzVector.h>
18 #include "AliRhoParameter.h"
19 #include "AliParticleContainer.h"
20 #include "AliLog.h"
21 #include "AliVEvent.h"
22 #include "AliEmcalJet.h"
23 
24 #if !(defined(__CINT__) || defined(__MAKECINT__))
27 #endif
28 
38  public:
39 
40  enum EJetType_t {
44  };
45 
46  enum EJetAlgo_t {
55  };
56 
58  E_scheme = 0,
59  pt_scheme = 1,
61  Et_scheme = 3,
66  };
67 
69  kTPC , // TPC acceptance
70  kTPCfid , // TPC fiducial acceptance
71  kEMCAL , // EMCal acceptance
72  kEMCALfid , // EMCal fiducial acceptance
73  kDCAL , // DCal acceptance
74  kDCALfid , // DCal fiducial acceptance
75  kUser // User defined acceptance
76  };
77 
79  AliJetContainer(const char *name);
80  AliJetContainer(EJetType_t jetType, EJetAlgo_t jetAlgo, ERecoScheme_t recoScheme, Double_t radius, AliParticleContainer* partCont, AliClusterContainer* clusCont, TString tag);
81  virtual ~AliJetContainer() {;}
82 
83  void LoadRho(const AliVEvent *event);
84  void LoadLocalRho(const AliVEvent *event);
85  void LoadRhoMass(const AliVEvent *event);
86 
88  void PrintCuts();
89  void ResetCuts();
90  void SetJetEtaLimits(Float_t min, Float_t max) { SetEtaLimits(min, max) ; }
91  void SetJetPhiLimits(Float_t min, Float_t max) { SetPhiLimits(min, max) ; }
92  void SetJetPtCut(Float_t cut) { SetMinPt(cut) ; }
93  void SetJetPtCutMax(Float_t cut) { SetMaxPt(cut) ; }
94  void SetJetEtaPhiEMCAL(Double_t r=0.) ;
95  void SetJetEtaPhiDCAL(Double_t r=0.) ;
96  void SetJetEtaPhiTPC(Double_t r=0.) ;
97  void SetRunNumber(Int_t r) { fRunNumber = r; }
98  void SetJetRadius(Float_t r) { fJetRadius = r ; }
99  void SetJetAreaCut(Float_t cut) { fJetAreaCut = cut ; }
100  void SetPercAreaCut(Float_t p) { if(fJetRadius==0.) AliWarning("JetRadius not set. Area cut will be 0");
101  fJetAreaCut = p*TMath::Pi()*fJetRadius*fJetRadius; }
102  void SetAreaEmcCut(Double_t a = 0.99) { fAreaEmcCut = a ; }
103  void SetZLeadingCut(Float_t zemc, Float_t zch) { fZLeadingEmcCut = zemc; fZLeadingChCut = zch ; }
104  void SetNEFCut(Float_t min = 0., Float_t max = 1.) { fNEFMinCut = min; fNEFMaxCut = max; }
105  void SetFlavourCut(Int_t myflavour) { fFlavourSelection = myflavour;}
106  void SetMinClusterPt(Float_t b) { fMinClusterPt = b ; }
107  void SetMaxClusterPt(Float_t b) { fMaxClusterPt = b ; }
108  void SetMinTrackPt(Float_t b) { fMinTrackPt = b ; }
109  void SetMaxTrackPt(Float_t b) { fMaxTrackPt = b ; }
110  void SetPtBiasJetClus(Float_t b) { SetMinClusterPt(b) ; }
111  void SetNLeadingJets(Int_t t) { fNLeadingJets = t ; }
112  void SetMinNConstituents(Int_t n) { fMinNConstituents = n ; }
113  void SetPtBiasJetTrack(Float_t b) { SetMinTrackPt(b) ; }
114  void SetLeadingHadronType(Int_t t) { fLeadingHadronType = t ; }
115  void SetJetTrigger(UInt_t t=AliVEvent::kEMCEJE) { fJetTrigger = t ; }
116  void SetTagStatus(Int_t i) { fTagStatus = i ; }
117 
118  void SetRhoName(const char *n) { fRhoName = n ; }
119  void SetLocalRhoName(const char *n) { fLocalRhoName = n ; }
120  void SetRhoMassName(const char *n) { fRhoMassName = n ; }
121 
122  void SetTpcHolePos(Double_t b) {fTpcHolePos = b ;}
123  void SetTpcHoleWidth(Double_t b) {fTpcHoleWidth = b ;}
124 
125 
128 
129  AliEmcalJet *GetLeadingJet(const char* opt="") ;
130  AliEmcalJet *GetJet(Int_t i) const;
131  AliEmcalJet *GetAcceptJet(Int_t i) const;
134  Bool_t GetMomentumFromJet(TLorentzVector &mom, const AliEmcalJet* jet, Double_t mass) const;
135  Bool_t GetMomentumFromJet(TLorentzVector &mom, const AliEmcalJet* jet) const;
136  Bool_t GetMomentum(TLorentzVector &mom, Int_t i) const;
137  Bool_t GetAcceptMomentum(TLorentzVector &mom, Int_t i) const;
138  Bool_t GetNextMomentum(TLorentzVector &mom);
139  Bool_t GetNextAcceptMomentum(TLorentzVector &mom);
140  virtual Bool_t AcceptObject(Int_t i, UInt_t &rejectionReason) const { return AcceptJet(i, rejectionReason);}
141  virtual Bool_t AcceptObject(const TObject* obj, UInt_t &rejectionReason) const { return AcceptJet(dynamic_cast<const AliEmcalJet*>(obj), rejectionReason);}
142  virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const;
143  virtual Bool_t AcceptJet(const AliEmcalJet* jet, UInt_t &rejectionReason) const;
144  virtual Bool_t ApplyJetCuts(const AliEmcalJet* clus, UInt_t &rejectionReason) const;
145  virtual Bool_t CheckTpcHolesOverlap(const AliEmcalJet* clus,UInt_t &rejectionReason) const;
146  Int_t GetFlavourCut() const {return fFlavourSelection;}
147  Int_t GetNJets() const {return GetNEntries();}
148  Int_t GetNAcceptedJets() ;
149 
150  Double_t GetLeadingHadronPt(const AliEmcalJet* jet) const;
151  void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet* jet) const;
152  Double_t GetZ(const AliEmcalJet *jet, const TLorentzVector& mom) const;
153  Double_t GetZLeadingEmc(const AliEmcalJet *jet) const;
154  Double_t GetZLeadingCharged(const AliEmcalJet *jet) const;
156  Double_t GetRhoVal() const {if (fRho) return fRho->GetVal(); else return 0;}
157  const TString& GetRhoName() const {return fRhoName;}
159  const TString& GetLocalRhoName() const {return fLocalRhoName;}
161  Double_t GetRhoMassVal() const {if (fRhoMass) return fRhoMass->GetVal(); else return 0;}
162  const TString& GetRhoMassName() const {return fRhoMassName;}
163  Double_t GetJetPtCorr(Int_t i) const;
164  Double_t GetJetPtCorrLocal(Int_t i) const;
165  Float_t GetJetRadius() const {return fJetRadius ; }
166  Double_t GetJetEtaMin() const {return GetMinEta(); }
167  Double_t GetJetEtaMax() const {return GetMaxEta(); }
168  Double_t GetJetPhiMin() const {return GetMinPhi(); }
169  Double_t GetJetPhiMax() const {return GetMaxPhi(); }
170  Double_t GetJetPtCut() const {return GetMinPt() ; }
171  Double_t GetJetPtCutMax() const {return GetMaxPt() ; }
172 
173  void SetArray(const AliVEvent *event);
176  Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2 = 0x0) const;
177 
178  const char* GetTitle() const;
179 
180  static TString GenerateJetName(EJetType_t jetType, EJetAlgo_t jetAlgo, ERecoScheme_t recoScheme, Double_t radius, AliParticleContainer* partCont, AliClusterContainer* clusCont, TString tag);
181 
182 #if !(defined(__CINT__) || defined(__MAKECINT__))
183  const AliJetIterableContainer all() const;
184  const AliJetIterableContainer accepted() const;
185 
188 #endif
189 
190  protected:
191  void SetEMCALGeometry();
192  void SetAcceptanceCuts();
193 
195  Float_t fJetRadius;
196  TString fRhoName;
197  TString fLocalRhoName;
198  TString fRhoMassName;
200  Float_t fJetAreaCut;
201  Float_t fAreaEmcCut;
202  Float_t fMinClusterPt;
203  Float_t fMaxClusterPt;
204  Float_t fMinTrackPt;
205  Float_t fMaxTrackPt;
206  Float_t fZLeadingEmcCut;
207  Float_t fZLeadingChCut;
208  Float_t fNEFMinCut;
209  Float_t fNEFMaxCut;
213  UInt_t fJetTrigger;
214  Int_t fTagStatus;
220  AliEMCALGeometry *fGeom;
221  Int_t fRunNumber;
222  Double_t fTpcHolePos;
223  Double_t fTpcHoleWidth;
224  private:
225  AliJetContainer(const AliJetContainer& obj); // copy constructor
226  AliJetContainer& operator=(const AliJetContainer& other); // assignment
227 
229 };
230 
231 #endif
void SetAreaEmcCut(Double_t a=0.99)
UInt_t fJetTrigger
minimum number of constituents in jet
Float_t fMinTrackPt
maximum cluster constituent pt to accept the jet
Float_t fJetAreaCut
selection on jet flavour
Double_t GetRhoVal() const
Float_t fJetRadius
acceptance type
const TString & GetRhoName() const
void LoadRho(const AliVEvent *event)
Double_t GetJetEtaMin() const
AliRhoParameter * fRhoMass
! event rho mass for these jets
virtual Bool_t ApplyJetCuts(const AliEmcalJet *clus, UInt_t &rejectionReason) const
AliRhoParameter * fRho
cluster container (jet constituents)
Double_t GetJetPhiMax() const
void SetLeadingHadronType(Int_t t)
JetAcceptanceType fJetAcceptanceType
Double_t mass
void SetPtBiasJetTrack(Float_t b)
void SetMinNConstituents(Int_t n)
const TString & GetLocalRhoName() const
Float_t fNEFMinCut
maximum z,leading charged
Double_t GetJetEtaMax() const
AliClusterContainer * GetClusterContainer() const
Double_t GetJetPtCorrLocal(Int_t i) const
AliJetContainer & operator=(const AliJetContainer &other)
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
Double_t GetJetPtCutMax() const
void LoadRhoMass(const AliVEvent *event)
void SetPercAreaCut(Float_t p)
AliParticleContainer * fParticleContainer
jet tag status
virtual Bool_t CheckTpcHolesOverlap(const AliEmcalJet *clus, UInt_t &rejectionReason) const
void SetPtBiasJetClus(Float_t b)
Bool_t GetMomentum(TLorentzVector &mom, Int_t i) const
static TString GenerateJetName(EJetType_t jetType, EJetAlgo_t jetAlgo, ERecoScheme_t recoScheme, Double_t radius, AliParticleContainer *partCont, AliClusterContainer *clusCont, TString tag)
Container for particles within the EMCAL framework.
const AliJetIterableMomentumContainer all_momentum() const
AliLocalRhoParameter * fLocalRho
! event local rho for these jets
Float_t fAreaEmcCut
cut on jet area
const TString & GetRhoMassName() const
void SetRhoName(const char *n)
Int_t fLeadingHadronType
maximum NEF in a jet
AliParticleContainer * GetParticleContainer() const
Double_t fTpcHoleWidth
position(in radians) of the malfunctioning TPC sector
AliEmcalJet * GetLeadingJet(const char *opt="")
void GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet *jet) const
Bool_t GetAcceptMomentum(TLorentzVector &mom, Int_t i) const
void SetMinTrackPt(Float_t b)
Double_t GetJetPhiMin() const
const AliJetIterableMomentumContainer accepted_momentum() const
ClassDef(AliJetContainer, 16)
Int_t fRunNumber
! run number
void SetJetRadius(Float_t r)
void SetJetPtCut(Float_t cut)
Double_t GetLeadingHadronPt(const AliEmcalJet *jet) const
void SetNLeadingJets(Int_t t)
void SetJetPhiLimits(Float_t min, Float_t max)
Float_t fMaxClusterPt
maximum cluster constituent pt to accept the jet
Bool_t GetNextAcceptMomentum(TLorentzVector &mom)
const char * GetTitle() const
Int_t GetNJets() const
void SetMinClusterPt(Float_t b)
Float_t fMinClusterPt
minimum cut on jet emcal area
void SetRhoMassName(const char *n)
TString fLocalRhoName
Name of rho object.
void SetTpcHolePos(Double_t b)
Double_t GetJetPtCut() const
Double_t GetRhoMassVal() const
Float_t fZLeadingChCut
maximum z,leading neutral
virtual Bool_t AcceptObject(Int_t i, UInt_t &rejectionReason) const
void SetJetAcceptanceType(JetAcceptanceType type)
AliEmcalJet * GetNextAcceptJet()
AliRhoParameter * GetRhoParameter()
virtual ~AliJetContainer()
void SetJetEtaPhiDCAL(Double_t r=0.)
void ConnectParticleContainer(AliParticleContainer *c)
AliEmcalJet * GetNextJet()
AliEMCALGeometry * fGeom
! emcal geometry
Float_t GetJetRadius() const
Int_t fNLeadingJets
0 = charged, 1 = neutral, 2 = both
TString fRhoMassName
Name of local rho object.
Double_t GetZLeadingCharged(const AliEmcalJet *jet) const
Int_t GetFlavourCut() const
AliLocalRhoParameter * GetLocalRhoParameter() const
EMCALIterableContainer::AliEmcalIterableContainerT< AliEmcalJet, EMCALIterableContainer::operator_star_object< AliEmcalJet > > AliJetIterableContainer
void SetArray(const AliVEvent *event)
void LoadLocalRho(const AliVEvent *event)
Int_t fTagStatus
jet trigger
EMCALIterableContainer::AliEmcalIterableContainerT< AliEmcalJet, EMCALIterableContainer::operator_star_pair< AliEmcalJet > > AliJetIterableMomentumContainer
void SetJetTrigger(UInt_t t=AliVEvent::kEMCEJE)
void SetLocalRhoName(const char *n)
Float_t fZLeadingEmcCut
maximum track constituent pt to accept the jet
void SetTagStatus(Int_t i)
AliEmcalJet * GetAcceptJet(Int_t i) const
void SetRunNumber(Int_t r)
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Double_t GetZLeadingEmc(const AliEmcalJet *jet) const
Float_t fMaxTrackPt
maximum track constituent pt to accept the jet
void SetJetEtaPhiTPC(Double_t r=0.)
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
void SetJetEtaPhiEMCAL(Double_t r=0.)
void SetMaxClusterPt(Float_t b)
void SetTpcHoleWidth(Double_t b)
AliRhoParameter * GetRhoMassParameter()
const AliJetIterableContainer accepted() const
Float_t fNEFMaxCut
minimum NEF in a jet
Bool_t GetMomentumFromJet(TLorentzVector &mom, const AliEmcalJet *jet, Double_t mass) const
void ConnectClusterContainer(AliClusterContainer *c)
void SetMaxTrackPt(Float_t b)
void SetJetEtaLimits(Float_t min, Float_t max)
AliClusterContainer * fClusterContainer
particle container (jet constituents)
Bool_t GetNextMomentum(TLorentzVector &mom)
Container structure for EMCAL clusters.
void SetZLeadingCut(Float_t zemc, Float_t zch)
Int_t fMinNConstituents
how many jets are to be considered the leading jet(s)
Container for jet within the EMCAL jet framework.
void SetFlavourCut(Int_t myflavour)
void SetJetPtCutMax(Float_t cut)
Double_t GetZ(const AliEmcalJet *jet, const TLorentzVector &mom) const
void SetJetAreaCut(Float_t cut)
void SetNEFCut(Float_t min=0., Float_t max=1.)
TString fRhoName
jet radius
virtual Bool_t AcceptObject(const TObject *obj, UInt_t &rejectionReason) const
AliEmcalJet * GetJet(Int_t i) const
const AliJetIterableContainer all() const
Double_t GetJetPtCorr(Int_t i) const
Int_t fFlavourSelection
Name of rho mass object.