ROOT logo
#ifndef AliJetContainer_H
#define AliJetContainer_H

// $Id$

class TClonesArray;
class TString;

class AliEMCALGeometry;
class AliEmcalJet;
class AliVEvent;
class AliParticleContainer;
class AliClusterContainer;
class AliLocalRhoParameter;
class AliPythiaInfo;

#include <TMath.h>
#include "AliRhoParameter.h"
#include "AliEmcalContainer.h"
#include "AliLog.h"
#include "AliVEvent.h"

class AliJetContainer : public AliEmcalContainer {
 public:
 
  enum JetAcceptanceType {
    kTPC       = 0,     // TPC acceptance
    kEMCAL     = 1,     // EMCal acceptance
    kUser      = 2      // User defined acceptance
  };


  AliJetContainer();
  AliJetContainer(const char *name); 
  virtual ~AliJetContainer() {;}

  void SetEMCALGeometry();
  void SetEMCALGeometry(AliEMCALGeometry *p) {fGeom = p;}
  void LoadRho(AliVEvent *event);
  void LoadLocalRho(AliVEvent *event);
  void LoadRhoMass(AliVEvent *event);
  void LoadPythiaInfo(AliVEvent *event);

  void                        SetJetAcceptanceType(JetAcceptanceType type)         { fJetAcceptanceType          = type ; }
  void                        PrintCuts();
  void                        ResetCuts();
  void                        SetJetEtaPhiEMCAL() ;
  void                        SetJetEtaPhiTPC()   ;
  void                        SetRunNumber(Int_t r)                                { fRunNumber = r;                      }
  void                        SetJetEtaLimits(Float_t min, Float_t max)            { fJetMinEta = min, fJetMaxEta = max ; }
  void                        SetJetPhiLimits(Float_t min, Float_t max)            { fJetMinPhi = min, fJetMaxPhi = max ; }
  void                        SetJetPtCut(Float_t cut)                             { fJetPtCut       = cut              ; }
  void                        SetJetRadius(Float_t r)                              { fJetRadius      = r                ; } 
  void                        SetJetAreaCut(Float_t cut)                           { fJetAreaCut     = cut              ; }
  void                        SetPercAreaCut(Float_t p)                            { if(fJetRadius==0.) AliWarning("JetRadius not set. Area cut will be 0"); 
                                                                                     fJetAreaCut = p*TMath::Pi()*fJetRadius*fJetRadius; }
  void                        SetAreaEmcCut(Double_t a = 0.99)                     { fAreaEmcCut     = a                ; }
  void                        SetZLeadingCut(Float_t zemc, Float_t zch)            { fZLeadingEmcCut = zemc; fZLeadingChCut = zch ; }
  void                        SetNEFCut(Float_t min = 0., Float_t max = 1.)        { fNEFMinCut = min; fNEFMaxCut = max;  }
  void                        SetFlavourCut(Int_t myflavour)                       { fFlavourSelection = myflavour;}
  void                        SetMaxClusterPt(Float_t b)                           { fMaxClusterPt   = b                ; }
  void                        SetMaxTrackPt(Float_t b)                             { fMaxTrackPt     = b                ; }
  void                        SetPtBiasJetClus(Float_t b)                          { fPtBiasJetClus  = b                ; }
  void                        SetNLeadingJets(Int_t t)                             { fNLeadingJets   = t                ; }
  void                        SetPtBiasJetTrack(Float_t b)                         { fPtBiasJetTrack = b                ; }
  void                        SetLeadingHadronType(Int_t t)                        { fLeadingHadronType = t             ; }
  void                        SetJetBitMap(UInt_t m)                               { fJetBitMap      = m                ; }
  void                        SetJetTrigger(UInt_t t=AliVEvent::kEMCEJE)           { fJetTrigger     = t                ; }
  void                        SetTagStatus(Int_t i)                                { fTagStatus      = i                ; }

  virtual void                SetRhoName(const char *n)                            { fRhoName        = n                ; }
  virtual void                SetLocalRhoName(const char *n)                       { fLocalRhoName   = n                ; }
  virtual void                SetRhoMassName(const char *n)                        { fRhoMassName    = n                ; }
  virtual void                SetPythiaInfoName(const char *n)                      { fPythiaInfoName    = n; }
    
  void                        ConnectParticleContainer(AliParticleContainer *c)    { fParticleContainer = c             ; }
  void                        ConnectClusterContainer(AliClusterContainer *c)      { fClusterContainer  = c             ; }

  AliEmcalJet                *GetLeadingJet(const char* opt="")          ;
  AliEmcalJet                *GetJet(Int_t i)                       const;
  AliEmcalJet                *GetAcceptJet(Int_t i)                      ;
  AliEmcalJet                *GetJetWithLabel(Int_t lab)            const;
  AliEmcalJet                *GetAcceptJetWithLabel(Int_t lab)           ;
  AliEmcalJet                *GetNextAcceptJet(Int_t i=-1)               ;
  AliEmcalJet                *GetNextJet(Int_t i=-1)                     ;
  void                        GetMomentum(TLorentzVector &mom, Int_t i) const;
  Bool_t                      AcceptJet(const AliEmcalJet* jet)          ;
  Bool_t                      AcceptBiasJet(const AliEmcalJet* jet)      ;
  Int_t                       GetFlavourCut()                       const    {return fFlavourSelection;}
  Int_t                       GetNJets()                            const    {return GetNEntries();}
  Double_t                    GetLeadingHadronPt(const AliEmcalJet* jet)  const;
  void                        GetLeadingHadronMomentum(TLorentzVector &mom, const AliEmcalJet* jet)  const;
  Double_t                    GetZ(const AliEmcalJet *jet, TLorentzVector mom) const;
  Double_t                    GetZLeadingEmc(const AliEmcalJet *jet)      const;
  Double_t                    GetZLeadingCharged(const AliEmcalJet *jet)  const;
  AliRhoParameter            *GetRhoParameter()                              {return fRho;}
  Double_t                    GetRhoVal()                           const    {if (fRho) return fRho->GetVal(); else return 0;}
  const TString&              GetRhoName()                          const    {return fRhoName;}
  AliLocalRhoParameter       *GetLocalRhoParameter()                const    {return fLocalRho;}
  const TString&              GetLocalRhoName()                     const    {return fLocalRhoName;}
  AliRhoParameter            *GetRhoMassParameter()                          {return fRhoMass;}
  Double_t                    GetRhoMassVal()                       const    {if (fRhoMass) return fRhoMass->GetVal(); else return 0;}
  const TString&              GetRhoMassName()                      const    {return fRhoMassName;}
  const TString&              GetPythiaInfoName()                   const    {return fPythiaInfoName;}
  AliPythiaInfo         *GetPythiaInfo()                  const    {return fPythiaInfo;}
  Double_t                    GetJetPtCorr(Int_t i)                 const;
  Double_t                    GetJetPtCorrLocal(Int_t i)            const;
  Float_t                     GetJetRadius()                        const    {return fJetRadius;}
  Float_t                     GetJetEtaMin()                        const    {return fJetMinEta;}
  Float_t                     GetJetEtaMax()                        const    {return fJetMaxEta;}
  Float_t                     GetJetPhiMin()                        const    {return fJetMinPhi;}
  Float_t                     GetJetPhiMax()                        const    {return fJetMaxPhi;}
  Float_t                     GetJetPtCut()                         const    {return fJetPtCut;}
  void                        SetClassName(const char *clname);
  void                        SetArray(AliVEvent *event);
  AliParticleContainer       *GetParticleContainer() const                   {return fParticleContainer;}
  AliClusterContainer        *GetClusterContainer() const                    {return fClusterContainer;}
  Double_t                    GetFractionSharedPt(const AliEmcalJet *jet) const;
 

 protected:
  JetAcceptanceType           fJetAcceptanceType;    //  acceptance type
  Float_t                     fJetRadius;            //  jet radius
  TString                     fRhoName;              //  Name of rho object
  TString                     fLocalRhoName;         //  Name of local rho object
  TString                     fRhoMassName;          //  Name of rho mass object
  TString                     fPythiaInfoName;       //  Name of pythia info object
  Int_t                       fFlavourSelection;     //  selection on jet flavour
  Float_t                     fPtBiasJetTrack;       //  select jets with a minimum pt track
  Float_t                     fPtBiasJetClus;        //  select jets with a minimum pt cluster
  Float_t                     fJetPtCut;             //  cut on jet pt
  Float_t                     fJetAreaCut;           //  cut on jet area
  Float_t                     fAreaEmcCut;           //  minimum cut on jet emcal area
  Float_t                     fJetMinEta;            //  minimum eta jet acceptance
  Float_t                     fJetMaxEta;            //  maximum eta jet acceptance
  Float_t                     fJetMinPhi;            //  minimum phi jet acceptance
  Float_t                     fJetMaxPhi;            //  maximum phi jet acceptance  
  Float_t                     fMaxClusterPt;         //  maximum cluster constituent pt to accept the jet
  Float_t                     fMaxTrackPt;           //  maximum track constituent pt to accept the jet
  Float_t                     fZLeadingEmcCut;       //  maximum z,leading neutral
  Float_t                     fZLeadingChCut;        //  maximum z,leading charged
  Float_t                     fNEFMinCut;            //  minimum NEF in a jet
  Float_t                     fNEFMaxCut;            //  maximum NEF in a jet
  Int_t                       fLeadingHadronType;    //  0 = charged, 1 = neutral, 2 = both
  Int_t                       fNLeadingJets;         //  how many jets are to be considered the leading jet(s)
  UInt_t                      fJetBitMap;            //  bit map of accepted jets
  UInt_t                      fJetTrigger;           //  jet trigger
  Int_t                       fTagStatus;            //  jet tag status
  AliParticleContainer       *fParticleContainer;    //  particle container (jet constituents)
  AliClusterContainer        *fClusterContainer;     //  cluster container (jet constituents)
  AliRhoParameter            *fRho;                  //! event rho for these jets
  AliLocalRhoParameter       *fLocalRho;             //! event local rho for these jets
  AliRhoParameter            *fRhoMass;              //! event rho mass for these jets
  AliPythiaInfo         *fPythiaInfo;          //! event parton info
  AliEMCALGeometry           *fGeom;                 //! emcal geometry
  Int_t                       fRunNumber;            //! run number

 private:
  AliJetContainer(const AliJetContainer& obj); // copy constructor
  AliJetContainer& operator=(const AliJetContainer& other); // assignment

  ClassDef(AliJetContainer,10);

};

#endif
 AliJetContainer.h:1
 AliJetContainer.h:2
 AliJetContainer.h:3
 AliJetContainer.h:4
 AliJetContainer.h:5
 AliJetContainer.h:6
 AliJetContainer.h:7
 AliJetContainer.h:8
 AliJetContainer.h:9
 AliJetContainer.h:10
 AliJetContainer.h:11
 AliJetContainer.h:12
 AliJetContainer.h:13
 AliJetContainer.h:14
 AliJetContainer.h:15
 AliJetContainer.h:16
 AliJetContainer.h:17
 AliJetContainer.h:18
 AliJetContainer.h:19
 AliJetContainer.h:20
 AliJetContainer.h:21
 AliJetContainer.h:22
 AliJetContainer.h:23
 AliJetContainer.h:24
 AliJetContainer.h:25
 AliJetContainer.h:26
 AliJetContainer.h:27
 AliJetContainer.h:28
 AliJetContainer.h:29
 AliJetContainer.h:30
 AliJetContainer.h:31
 AliJetContainer.h:32
 AliJetContainer.h:33
 AliJetContainer.h:34
 AliJetContainer.h:35
 AliJetContainer.h:36
 AliJetContainer.h:37
 AliJetContainer.h:38
 AliJetContainer.h:39
 AliJetContainer.h:40
 AliJetContainer.h:41
 AliJetContainer.h:42
 AliJetContainer.h:43
 AliJetContainer.h:44
 AliJetContainer.h:45
 AliJetContainer.h:46
 AliJetContainer.h:47
 AliJetContainer.h:48
 AliJetContainer.h:49
 AliJetContainer.h:50
 AliJetContainer.h:51
 AliJetContainer.h:52
 AliJetContainer.h:53
 AliJetContainer.h:54
 AliJetContainer.h:55
 AliJetContainer.h:56
 AliJetContainer.h:57
 AliJetContainer.h:58
 AliJetContainer.h:59
 AliJetContainer.h:60
 AliJetContainer.h:61
 AliJetContainer.h:62
 AliJetContainer.h:63
 AliJetContainer.h:64
 AliJetContainer.h:65
 AliJetContainer.h:66
 AliJetContainer.h:67
 AliJetContainer.h:68
 AliJetContainer.h:69
 AliJetContainer.h:70
 AliJetContainer.h:71
 AliJetContainer.h:72
 AliJetContainer.h:73
 AliJetContainer.h:74
 AliJetContainer.h:75
 AliJetContainer.h:76
 AliJetContainer.h:77
 AliJetContainer.h:78
 AliJetContainer.h:79
 AliJetContainer.h:80
 AliJetContainer.h:81
 AliJetContainer.h:82
 AliJetContainer.h:83
 AliJetContainer.h:84
 AliJetContainer.h:85
 AliJetContainer.h:86
 AliJetContainer.h:87
 AliJetContainer.h:88
 AliJetContainer.h:89
 AliJetContainer.h:90
 AliJetContainer.h:91
 AliJetContainer.h:92
 AliJetContainer.h:93
 AliJetContainer.h:94
 AliJetContainer.h:95
 AliJetContainer.h:96
 AliJetContainer.h:97
 AliJetContainer.h:98
 AliJetContainer.h:99
 AliJetContainer.h:100
 AliJetContainer.h:101
 AliJetContainer.h:102
 AliJetContainer.h:103
 AliJetContainer.h:104
 AliJetContainer.h:105
 AliJetContainer.h:106
 AliJetContainer.h:107
 AliJetContainer.h:108
 AliJetContainer.h:109
 AliJetContainer.h:110
 AliJetContainer.h:111
 AliJetContainer.h:112
 AliJetContainer.h:113
 AliJetContainer.h:114
 AliJetContainer.h:115
 AliJetContainer.h:116
 AliJetContainer.h:117
 AliJetContainer.h:118
 AliJetContainer.h:119
 AliJetContainer.h:120
 AliJetContainer.h:121
 AliJetContainer.h:122
 AliJetContainer.h:123
 AliJetContainer.h:124
 AliJetContainer.h:125
 AliJetContainer.h:126
 AliJetContainer.h:127
 AliJetContainer.h:128
 AliJetContainer.h:129
 AliJetContainer.h:130
 AliJetContainer.h:131
 AliJetContainer.h:132
 AliJetContainer.h:133
 AliJetContainer.h:134
 AliJetContainer.h:135
 AliJetContainer.h:136
 AliJetContainer.h:137
 AliJetContainer.h:138
 AliJetContainer.h:139
 AliJetContainer.h:140
 AliJetContainer.h:141
 AliJetContainer.h:142
 AliJetContainer.h:143
 AliJetContainer.h:144
 AliJetContainer.h:145
 AliJetContainer.h:146
 AliJetContainer.h:147
 AliJetContainer.h:148
 AliJetContainer.h:149
 AliJetContainer.h:150
 AliJetContainer.h:151
 AliJetContainer.h:152
 AliJetContainer.h:153
 AliJetContainer.h:154
 AliJetContainer.h:155
 AliJetContainer.h:156
 AliJetContainer.h:157
 AliJetContainer.h:158
 AliJetContainer.h:159
 AliJetContainer.h:160
 AliJetContainer.h:161
 AliJetContainer.h:162
 AliJetContainer.h:163
 AliJetContainer.h:164
 AliJetContainer.h:165
 AliJetContainer.h:166