ROOT logo
#ifndef ALIANALYSISTASKEMCALJET_H
#define ALIANALYSISTASKEMCALJET_H

// $Id$

class TClonesArray;
class TList;
class TString;
class AliEmcalJet;
class AliRhoParameter;
class AliLocalRhoParameter;
class AliVCluster;
class AliVParticle;
class AliJetContainer;

#include "AliAnalysisTaskEmcal.h"

class AliAnalysisTaskEmcalJet : public AliAnalysisTaskEmcal {
 public:
  AliAnalysisTaskEmcalJet();
  AliAnalysisTaskEmcalJet(const char *name, Bool_t histo=kFALSE); 
  virtual ~AliAnalysisTaskEmcalJet();

  //these should all point to the jet container
  void                        SetAnaType(UInt_t t, Int_t c = 0) { SetJetAcceptanceType(t,c); }
  void                        SetJetAcceptanceType(UInt_t t, Int_t c = 0);
  void                        SetJetAcceptanceType(TString cutType, Int_t c = 0);
  void                        SetJetEtaLimits(Float_t min, Float_t max, Int_t c = 0);
  void                        SetJetPhiLimits(Float_t min, Float_t max, Int_t c = 0);
  void                        SetJetAreaCut(Float_t cut, Int_t c = 0);
  void                        SetPercAreaCut(Float_t p, Int_t c = 0);
  void                        SetZLeadingCut(Float_t zemc, Float_t zch, Int_t c = 0);
  void                        SetNEFCut(Float_t min, Float_t max, Int_t c = 0);
  void                        SetAreaEmcCut(Double_t a = 0.99, Int_t c = 0);
  void                        SetJetPtCut(Float_t cut, Int_t c = 0);
  void                        SetJetRadius(Float_t r, Int_t c = 0);
  void                        SetMaxClusterPt(Float_t b, Int_t c = 0);
  void                        SetMaxTrackPt(Float_t b, Int_t c = 0);
  void                        SetPtBiasJetClus(Float_t b, Int_t c = 0);
  void                        SetPtBiasJetTrack(Float_t b, Int_t c = 0);
  void                        SetLeadingHadronType(Int_t t, Int_t c = 0);
  void                        SetNLeadingJets(Int_t t, Int_t c = 0);
  void                        SetJetBitMap(UInt_t m, Int_t c = 0);
  void                        SetJetTrigger(UInt_t t, Int_t c = 0);
  void                        SetIsParticleLevel(Bool_t b, Int_t c = 0);
  void                        SetJetsName(const char *n)                   { AddJetContainer(n); }
  virtual void                SetRhoName(const char *n, Int_t c = 0);
  virtual void                SetLocalRhoName(const char *n)               { fLocalRhoName   = n; }
  const TString&              GetRhoName(Int_t c = 0) const;
  AliJetContainer            *AddJetContainer(const char *n, TString defaultCutType = "", Float_t jetRadius = 0.4);
  void                        RemoveJetContainer(Int_t i)                        { fJetCollArray.RemoveAt(i);} 
  AliJetContainer            *GetJetContainer(Int_t i=0)                                               const;
  AliJetContainer            *GetJetContainer(const char* name)                                        const;

 protected:
  virtual Bool_t              AcceptJet(AliEmcalJet* jet, Int_t c =0);
  Bool_t                      AcceptBiasJet(AliEmcalJet* jet, Int_t c =0);
  Double_t                    GetLeadingHadronPt(AliEmcalJet* jet, Int_t c =0);
  void                        ExecOnce()                                                                    ;

  AliRhoParameter            *GetRhoFromEvent(const char *name)                                             ;
  AliLocalRhoParameter       *GetLocalRhoFromEvent(const char *name)                                        ;
  Bool_t                      IsJetTrack(AliEmcalJet* jet, Int_t itrack, Bool_t sorted = kFALSE)       const;
  Bool_t                      IsJetCluster(AliEmcalJet* jet, Int_t iclus, Bool_t sorted = kFALSE)      const;
  Bool_t                      RetrieveEventObjects()                                                        ;
  Double_t                    GetJetRadius(Int_t i=0)                                                  const;
  TClonesArray               *GetJetArray(Int_t i=0)                                                   const;
  AliEmcalJet                *GetJetFromArray(Int_t j, Int_t c=0)                                      const;
  AliEmcalJet                *GetAcceptJetFromArray(Int_t j, Int_t c=0)                                const;
  Int_t                       GetNJets(Int_t i=0)                                                      const;
  Double_t                    GetRhoVal(Int_t i=0)                                                     const;

  TString                     fRhoName;                    // rho name
  TString                     fLocalRhoName;               // name for local rho
  TObjArray                   fJetCollArray;               // jet collection array

  TClonesArray               *fJets;                       //!jets
  AliRhoParameter            *fRho;                        //!event rho
  AliLocalRhoParameter       *fLocalRho;                   //!local event rho
  Double_t                    fRhoVal;                     //!event rho value, same for local rho

 private:
  AliAnalysisTaskEmcalJet(const AliAnalysisTaskEmcalJet&);            // not implemented
  AliAnalysisTaskEmcalJet &operator=(const AliAnalysisTaskEmcalJet&); // not implemented

  ClassDef(AliAnalysisTaskEmcalJet, 3) // EMCAL Jet base analysis task
};
#endif
 AliAnalysisTaskEmcalJet.h:1
 AliAnalysisTaskEmcalJet.h:2
 AliAnalysisTaskEmcalJet.h:3
 AliAnalysisTaskEmcalJet.h:4
 AliAnalysisTaskEmcalJet.h:5
 AliAnalysisTaskEmcalJet.h:6
 AliAnalysisTaskEmcalJet.h:7
 AliAnalysisTaskEmcalJet.h:8
 AliAnalysisTaskEmcalJet.h:9
 AliAnalysisTaskEmcalJet.h:10
 AliAnalysisTaskEmcalJet.h:11
 AliAnalysisTaskEmcalJet.h:12
 AliAnalysisTaskEmcalJet.h:13
 AliAnalysisTaskEmcalJet.h:14
 AliAnalysisTaskEmcalJet.h:15
 AliAnalysisTaskEmcalJet.h:16
 AliAnalysisTaskEmcalJet.h:17
 AliAnalysisTaskEmcalJet.h:18
 AliAnalysisTaskEmcalJet.h:19
 AliAnalysisTaskEmcalJet.h:20
 AliAnalysisTaskEmcalJet.h:21
 AliAnalysisTaskEmcalJet.h:22
 AliAnalysisTaskEmcalJet.h:23
 AliAnalysisTaskEmcalJet.h:24
 AliAnalysisTaskEmcalJet.h:25
 AliAnalysisTaskEmcalJet.h:26
 AliAnalysisTaskEmcalJet.h:27
 AliAnalysisTaskEmcalJet.h:28
 AliAnalysisTaskEmcalJet.h:29
 AliAnalysisTaskEmcalJet.h:30
 AliAnalysisTaskEmcalJet.h:31
 AliAnalysisTaskEmcalJet.h:32
 AliAnalysisTaskEmcalJet.h:33
 AliAnalysisTaskEmcalJet.h:34
 AliAnalysisTaskEmcalJet.h:35
 AliAnalysisTaskEmcalJet.h:36
 AliAnalysisTaskEmcalJet.h:37
 AliAnalysisTaskEmcalJet.h:38
 AliAnalysisTaskEmcalJet.h:39
 AliAnalysisTaskEmcalJet.h:40
 AliAnalysisTaskEmcalJet.h:41
 AliAnalysisTaskEmcalJet.h:42
 AliAnalysisTaskEmcalJet.h:43
 AliAnalysisTaskEmcalJet.h:44
 AliAnalysisTaskEmcalJet.h:45
 AliAnalysisTaskEmcalJet.h:46
 AliAnalysisTaskEmcalJet.h:47
 AliAnalysisTaskEmcalJet.h:48
 AliAnalysisTaskEmcalJet.h:49
 AliAnalysisTaskEmcalJet.h:50
 AliAnalysisTaskEmcalJet.h:51
 AliAnalysisTaskEmcalJet.h:52
 AliAnalysisTaskEmcalJet.h:53
 AliAnalysisTaskEmcalJet.h:54
 AliAnalysisTaskEmcalJet.h:55
 AliAnalysisTaskEmcalJet.h:56
 AliAnalysisTaskEmcalJet.h:57
 AliAnalysisTaskEmcalJet.h:58
 AliAnalysisTaskEmcalJet.h:59
 AliAnalysisTaskEmcalJet.h:60
 AliAnalysisTaskEmcalJet.h:61
 AliAnalysisTaskEmcalJet.h:62
 AliAnalysisTaskEmcalJet.h:63
 AliAnalysisTaskEmcalJet.h:64
 AliAnalysisTaskEmcalJet.h:65
 AliAnalysisTaskEmcalJet.h:66
 AliAnalysisTaskEmcalJet.h:67
 AliAnalysisTaskEmcalJet.h:68
 AliAnalysisTaskEmcalJet.h:69
 AliAnalysisTaskEmcalJet.h:70
 AliAnalysisTaskEmcalJet.h:71
 AliAnalysisTaskEmcalJet.h:72
 AliAnalysisTaskEmcalJet.h:73
 AliAnalysisTaskEmcalJet.h:74
 AliAnalysisTaskEmcalJet.h:75
 AliAnalysisTaskEmcalJet.h:76
 AliAnalysisTaskEmcalJet.h:77
 AliAnalysisTaskEmcalJet.h:78
 AliAnalysisTaskEmcalJet.h:79
 AliAnalysisTaskEmcalJet.h:80
 AliAnalysisTaskEmcalJet.h:81
 AliAnalysisTaskEmcalJet.h:82
 AliAnalysisTaskEmcalJet.h:83
 AliAnalysisTaskEmcalJet.h:84
 AliAnalysisTaskEmcalJet.h:85
 AliAnalysisTaskEmcalJet.h:86
 AliAnalysisTaskEmcalJet.h:87
 AliAnalysisTaskEmcalJet.h:88