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