ROOT logo
// *************************************************************************************
// * Task for Jetproperties and jet shape analysis in PWG4 Jet Task Force Train for pp *
// *************************************************************************************

#ifndef ALIANALYSISTASKJETPROPERTIES_H
#define ALIANALYSISTASKJETPROPERTIES_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

class AliESDEvent;
class AliAODEvent;
class AliAODExtension;
class TList;
class TH1F;
class TH2F;
class TH3F;
class TProfile;
class THnSparse; 
class TRandom3;
class TArrayS;

#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskJetProperties : public AliAnalysisTaskSE {
  
 public:
  AliAnalysisTaskJetProperties(); 
  AliAnalysisTaskJetProperties(const char *name);
  virtual ~AliAnalysisTaskJetProperties();
  
  virtual Bool_t Notify();
  virtual void   UserCreateOutputObjects();
  virtual void   Init();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t* );
  
  virtual void   SetJetBranch(const char* c){fBranchJets = c;}
  virtual void   SetNonStdFile(char* c){fNonStdFile = c;}
  virtual void   SetTrackType(Int_t i){fTrackType = i;}
  virtual void   SetEventCuts(Float_t VtxZ=10.,Int_t nContributors=2)
  {fMaxVertexZ = VtxZ; fNContributors = nContributors;}
  virtual void   SetTrackCuts(Float_t trackPt = 0.15, Float_t trackEtaMin = -0.9, Float_t trackEtaMax = 0.9)
  {fTrackPtCut = trackPt; fTrackEtaMin = trackEtaMin; fTrackEtaMax = trackEtaMax;}
  virtual void   SetPileupRejection(Bool_t IsPileupReject){fRejectPileup = IsPileupReject;}
  virtual void   SetJetCuts(Float_t jetPt = 5., Float_t jetEtaMin = -0.5, Float_t jetEtaMax = 0.5) 
  {fJetPtCut = jetPt; fJetEtaMin = jetEtaMin; fJetEtaMax = jetEtaMax;}
  virtual void   SetJetRejectType(Int_t i){fJetRejectType = i;}
  virtual void   SetFilterMask(UInt_t i) {fFilterMask = i;}
  virtual void   UsePhysicsSelection(Bool_t b) {fUsePhysicsSelection = b;}
  virtual void   SetJetRadius(Float_t r){fJetRadius = r;}
  
  enum {kTrackUndef=0, kTrackAOD, kTrackKine,kTrackAODMC};//for track selection
  enum {kNoReject=0, kReject1Track};//for jet rejection
  enum {kRejectPileup=1};//for pileup rejection
 protected:
  Int_t	   GetListOfJetTracks(TList* l, const AliAODJet* j);
  Int_t	   GetListOfJets(TList* list);
  void     FillJetProperties(TList *jetlist);
  void     FillJetShape(TList *jetlist);
  void     FillJetShapeUE(TList *jetlist);
  void     FillFFCorr(TList *jetlist);

  void     GetTracksTiltedwrpJetAxis(Float_t alpha, TList* inputlist, TList* outputlist, const AliAODJet* jet, Double_t radius,Double_t& sumPt);
  Int_t    GetListOfTracks(TList *list, Int_t type);
  
  AliESDEvent*     fESD;          // ESD event
  AliAODEvent*     fAOD;          // AOD event
  AliAODEvent*     fAODJets;      // AOD event with jet branch (case we have AOD both in input and output)
  AliAODExtension* fAODExtension; //! where we take the jets from can be input or output AOD
  //AliMCEvent*  fMCEvent;  // MC event
  
  TString fNonStdFile;          // name of delta aod file to catch the extension
  TString fBranchJets;          // branch name for reconstructed jets
  Int_t   fTrackType;           // type of generated tracks
  Int_t   fJetRejectType;       // type of jets rejected
  Bool_t  fRejectPileup;        // pileup rejection
  Bool_t  fUseAODInputJets;     // take jets from in/output - only relevant if AOD event both in input AND output and we want to use output
  UInt_t  fFilterMask;	        // filter bit for selected tracks
  Bool_t  fUsePhysicsSelection; // switch for event selection
  Float_t fMaxVertexZ;          // maximum abs(z) position of primiary vertex [cm]
  Int_t   fNContributors;       // contributors to primary vertex
  // track cuts
  Float_t fTrackPtCut;          // track transverse momentum cut
  Float_t fTrackEtaMin;         // track eta cut
  Float_t fTrackEtaMax;         // track eta cut
  // jet cuts
  Float_t fJetPtCut;            // jet transverse momentum cut
  Float_t fJetEtaMin;           // jet eta cut
  Float_t fJetEtaMax;           // jet eta cut
  Float_t fAvgTrials;           // average number of trials per event
  Float_t fJetRadius;
  
  TList	    *fJetList;                //! List of jets
  TList	    *fTrackList;              //! List of selected tracks
  TList	    *fTrackListUE;            //! List of tracks in jet cone UE
  TList	    *fTrackListJet;           //! List of tracks in a jet
  TList	    *fCommonHistList;         //! List of common histos
  TH1F      *fh1EvtSelection;         //! event cuts 
  TH1F	    *fh1VertexNContributors;  //! NContributors to prim vertex
  TH1F	    *fh1VertexZ;              //! prim vertex z distribution
  TProfile  *fh1Xsec;                 //! pythia cross section and trials
  TH1F*     fh1Trials;                //! sum of trials
  TH1F*     fh1PtHard;                //! pt hard of the event
  TH1F*     fh1PtHardTrials;          //! pt hard of the event
 
  TH2F*     fh2EtaJet;                //!jet eta distribution
  TH2F*     fh2PhiJet;                //!jet phi distribution
  TH2F*     fh2PtJet;                 //!jet pt distribution
  TH1F*     fh1PtJet;                 //!jet pt distribution 1D
  TH2F*     fh2NtracksJet;            //!number of tracks in jet
  TProfile* fProNtracksJet;           //!number of tracks in jet
  TH2F*     fh2EtaTrack;              //!track eta distribution
  TH2F*     fh2PhiTrack;              //!track phi distribution
  TH2F*     fh2PtTrack;               //!track pt distribution
  TH2F*     fh2FF;                    //!fragmentation function (z)
  TH2F*     fh2Ksi;                   //!fragmentation function (Ksi)
  TH2F*     fh2DelEta;                //!delta eta distribution
  TH2F*     fh2DelPhi;                //!delta phi distribution
  TH2F*     fh2DelR;                  //!delta R distribution
  
  TH1F*     fh1PtLeadingJet;          //!highest jet pt
  TH2F*     fh2NtracksLeadingJet;     //!number of tracks in jet
  TProfile* fProNtracksLeadingJet;    //!number of tracks in jet
  TH2F*     fh2DelR80pcNch;           //!R containing 80% of Nch vs jet pt
  TProfile* fProDelR80pcNch;          //!R containing 80% of Nch vs jet pt
  TH2F*     fh2DelR80pcPt;            //!R containing 80% of pT vs jet pt
  TProfile* fProDelR80pcPt;           //!R containing 80% of pT vs jet pt
  TH2F*     fh2AreaCh;                //!charged jet area vs jet pT
  TProfile* fProAreaCh;               //!charged jet area vs jet pT
  TH3F*     fh3PtDelRNchSum;          //!Nch sum vs R
  TH3F*     fh3PtDelRPtSum;           //!Pt sum vs R
  TProfile* fProDiffJetShape;         //!Diff jet shape pT=20-100
  TProfile* fProIntJetShape;          //!Int jet shape pT=20-100
  TProfile* fProDelRNchSum[13];        //!Nch sum vs R
  TProfile* fProDelRPtSum[13];         //!Pt sum vs R
  TProfile* fProDiffJetShapeA[13];     //!Diff jet shape pT
  TProfile* fProIntJetShapeA[13];      //!Int jet shape pT

  TH1F*     fh1PtSumInJetConeUE;        //!pt sum of UE in cone R
  TH2F*     fh2NtracksLeadingJetUE;     //!number of tracks in jet (UE)
  TProfile* fProNtracksLeadingJetUE;    //!number of tracks in jet (UE)
  TH2F*     fh2DelR80pcNchUE;           //!R containing 80% of Nch vs jet pt (UE)
  TProfile* fProDelR80pcNchUE;          //!R containing 80% of Nch vs jet pt (UE)
  TH2F*     fh2DelR80pcPtUE;            //!R containing 80% of pT vs jet pt (UE)
  TProfile* fProDelR80pcPtUE;           //!R containing 80% of pT vs jet pt (UE)
  TH2F*     fh2AreaChUE;                //!charged jet area vs jet pT (UE)
  TProfile* fProAreaChUE;               //!charged jet area vs jet pT (UE)
  TH3F*     fh3PtDelRNchSumUE;          //!Nch sum vs R (UE)
  TH3F*     fh3PtDelRPtSumUE;           //!Pt sum vs R (UE)
  TProfile* fProDiffJetShapeUE;         //!Diff jet shape pT=20-100 (UE)
  TProfile* fProIntJetShapeUE;          //!Int jet shape pT=20-100 (UE)
  TProfile* fProDelRNchSumUE[13];        //!Nch sum vs R (UE)
  TProfile* fProDelRPtSumUE[13];         //!Pt sum vs R (UE)
  TProfile* fProDiffJetShapeAUE[13];     //!Diff jet shape pT (UE)
  TProfile* fProIntJetShapeAUE[13];      //!Int jet shape pT (UE)

  TH1F* fh1CorrJetPt;                    //!jet pt in FillCorr
  TH2F* fh2CorrPtTrack1;                 //!trk pt in FillCorr
  TH2F* fh2CorrFF1;                      //!FF in FillCorr
  TH2F* fh2CorrKsi1;                     //!Ksi in FillCorr
  TH2F* fh2CorrjT1;                      //!jT in FillCorr
  TH1F* fh1JetPtvsTrkSum;                //!QA plots to check jetPt-trkPtsum
  TH2F* fh2CorrPt1Pt2[6];                //!pt1-pt2 in FillCorr
  TH2F* fh2CorrZ1Z2[6];                  //!z1-z2 in FillCorr
  TH2F* fh2CorrKsi1Ksi2[6];              //!ksi1-ksi2 in FillCorr
  TH2F* fh2CorrjT1jT2[6];                //!jt1-jt2 in FillCorr
  
  AliAnalysisTaskJetProperties(const AliAnalysisTaskJetProperties&);// not implemented
  AliAnalysisTaskJetProperties& operator=(const AliAnalysisTaskJetProperties&);// not implemented
  ClassDef(AliAnalysisTaskJetProperties, 2);
};

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