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

// *******************************************
// Jet Finding in the Kine train
// *******************************************

#include "AliAnalysisTaskSE.h"
#include "THnSparse.h" // cannot forward declare ThnSparseF
#include "AliVParticle.h" //FK//
#ifndef __CINT__
# include "fastjet/ClusterSequenceArea.hh"
# include "fastjet/AreaDefinition.hh"
# include "fastjet/JetDefinition.hh"
#else
namespace fastjet {
  enum JetAlgorithm;
  enum Strategy;
  enum RecombinationScheme;
  enum AreaType;
}
#endif

////////////////
class AliJetHeader;
class AliESDEvent;
class AliAODEvent;
class AliAODExtension;
class AliAODJet;
class AliGenPythiaEventHeader;
class AliJetFinder;
class AliAODMCParticle;
class AliMCEvent;    //FK//
class AliMCEventHandler; //FK//
class AliVParticle; //FK//
class AliGenEventHeader; //FK//
class TList;
class TChain;
class TH2F;
class TH1F;
class TH3F;
class TRefArray;
class TClonesArray;
class TF1;
class TProfile;

class AliAnalysisTaskJetClusterKine : public AliAnalysisTaskSE
{
 public:
    AliAnalysisTaskJetClusterKine();
    AliAnalysisTaskJetClusterKine(const char* name);
    virtual ~AliAnalysisTaskJetClusterKine();
    // Implementation of interface methods
    virtual void UserCreateOutputObjects();
    virtual void Init();  //FK//
    virtual void LocalInit();
    virtual void UserExec(Option_t *option);
    virtual void Terminate(Option_t *option);
    virtual Bool_t Notify();
    
    
    virtual void SetTrackEtaWindow(Float_t f){fTrackEtaWindow = f;}
    virtual void SetTrackTypeGen(Int_t i){fTrackTypeGen = i;}
    virtual void SetTrackPtCut(Float_t x){fTrackPtCut = x;}
    virtual void SetVtxCuts(Float_t z){fVtxZCut = z;}

    virtual void SetJetOutputBranch(const char *c){fNonStdBranch = c;}
    virtual void SetJetOutputContainer(Int_t c){fOutContainer = c;} //FF//
    virtual const char* GetJetOutputBranch(){return fNonStdBranch.Data();}
    virtual void SetJetOutputFile(const char *c){fNonStdFile = c;}
    virtual const char* GetJetOutputFile(){return fNonStdFile.Data();}
    virtual void SetMaxTrackPtInJet(Float_t x){fMaxTrackPtInJet = x;}
    virtual void SetJetOutputMinPt(Float_t x){fJetOutputMinPt = x;}



    // for Fast Jet
    fastjet::JetAlgorithm        GetAlgorithm()         const {return fAlgorithm;}
    fastjet::Strategy            GetStrategy()          const {return fStrategy;}
    fastjet::RecombinationScheme GetRecombScheme()      const {return fRecombScheme;}
    fastjet::AreaType            GetAreaType()          const {return fAreaType;}
    // Setters
    void SetRparam(Double_t f)                           {fRparam = f;}
    // Temporary change to integer; problem with dictionary generation?
    //void SetAlgorithm(fastjet::JetAlgorithm f)           {fAlgorithm = f;}
    void SetAlgorithm(Int_t f)                           {fAlgorithm = (fastjet::JetAlgorithm) f;}
    void SetStrategy(fastjet::Strategy f)                {fStrategy = f;}
    void SetRecombScheme(fastjet::RecombinationScheme f) {fRecombScheme = f;}
    void SetAreaType(fastjet::AreaType f)                {fAreaType = f;}
    void SetGhostArea(Double_t f)                        {fGhostArea = f;}
    void SetActiveAreaRepeats(Int_t f)                   {fActiveAreaRepeats = f;}
    void SetGhostEtamax(Double_t f)                      {fGhostEtamax = f;}



    // Helper
    //

    // we have different cases
    // AOD reading -> MC from AOD
    // ESD reading -> MC from Kinematics
    // this has to match with our selection of input events
    enum {kTrackKineAll=0, kTrackKineCharged};
    enum { kNoOutput=0, kAODBranch=1, kExchCont=2 }; //FF//
    

 private:

    AliAnalysisTaskJetClusterKine(const AliAnalysisTaskJetClusterKine&);
    AliAnalysisTaskJetClusterKine& operator=(const AliAnalysisTaskJetClusterKine&);

    Int_t GetListOfTracks(TList *list,Int_t type);
	
    AliMCEvent*              fMcEvent;    //! MC event                       //FK//   FFF
    AliInputEventHandler*    fMcHandler;  //! MCEventHandler                 //FK//   FFF
    TRefArray       *fRef;                // ! trefarray for track references within the jet  FFF
    Int_t         fTrackTypeGen;          // type of tracks used for 0=full, 1=charged         FFF 
    Float_t       fAvgTrials;             // Average nimber of trials
    Float_t       fTrackEtaWindow;        // eta window used for corraltion plots between rec and gen  FFF 
    Float_t       fTrackPtCut;            // minimum track pt to be accepted    FFF
    Float_t       fJetOutputMinPt;        // minimum p_t for jets to be written out  FFF
    Float_t       fMaxTrackPtInJet;       // maximum track pt within a jet for flagging... FFF
    Float_t       fVtxZCut;               // zvtx cut

    // output configurartion
    TString       fNonStdBranch;      // the name of the non-std branch name, if empty no branch is filled  FFF
    Int_t         fOutContainer;    //FF//output container 1=AOD Branch   2=Exchange container 
    TString       fNonStdFile;        // The optional name of the output file the non-std branch is written to FFF



    // Fast jet
    Double_t fRparam;                  // fastjet distance parameter  FFF
    fastjet::JetAlgorithm fAlgorithm; //fastjet::kt_algorithm  FFF
    fastjet::Strategy fStrategy;  //= fastjet::Best;    FFF
    fastjet::RecombinationScheme fRecombScheme; // = fastjet::BIpt_scheme;   FFF
    fastjet::AreaType fAreaType;  // fastjet area type
    Double_t fGhostArea;          // fasjet ghost area               FFF
    Int_t fActiveAreaRepeats;     // fast jet active area repeats   FFF
    Double_t fGhostEtamax;        // fast jet ghost area     FFF

    TClonesArray  *fTCAJetsOut;   //! TCA of output jets     FFF

    TProfile*     fh1Xsec;   //! pythia cross section and trials
    TH1F*         fh1Trials; //! trials are added                         FFF
    TH1F*         fh1PtHard;  //! Pt har of the event...       
    TH1F*         fh1PtHardNoW;  //! Pt har of the event without weigt       
    TH1F*         fh1PtHardTrials;  //! Number of trials 

    TH1F*         fh1NJetsGen; //! number of generator level jets            FFF
    TH1F*         fh1NConstGen;//! number of constiutens in leading jet   FFF
    TH1F*         fh1NConstLeadingGen;//! number of constiutens in leading jet  FFF
    TH1F*         fh1PtJetsGenIn;  //! Jet pt for all jets               FFF
    TH1F*         fh1PtJetsLeadingGenIn;  //! Jet pt for the leading jets   FFF
    TH1F*         fh1PtJetConstGen;//! pt of constituents               FFF
    TH1F*         fh1PtJetConstLeadingGen;// pt of constituents    FFF
    TH1F*         fh1PtTracksGenIn;  //! track pt for all tracks  FFF

    TH1F*         fh1Nch;            //! (charged) particle mult      FFF
    TH1F*         fh1Z;                // ! centrality of anaylsed events   FFF 


    TH2F*         fh2NConstPt;           //! number of constituents vs. pt  FFF
    TH2F*         fh2NConstLeadingPt;           //! number of constituents vs. pt FFF
    TH2F*         fh2JetPhiEta;             //! jet phi eta FFF
    TH2F*         fh2LeadingJetPhiEta;      //! leading jet phi eta  FFF
    TH2F*         fh2JetEtaPt;              //! leading jet eta FFF
    TH2F*         fh2LeadingJetEtaPt;              //! leading jet eta  FFF
    TH2F*         fh2TrackEtaPt;              //! track eta for all tracks  FFF
    TH2F*         fh2JetsLeadingPhiEta;     //! jet delta phi delta eta w.r.t. leading jet  FFF
    TH2F*         fh2JetsLeadingPhiPt;      //! jet correlation with leading jet FFF
    TH2F*         fh2JetsLeadingPhiPtW;      //! jet correlation with leading jet FFF

    TList *fHistList; //!leading tracks to be skipped in the randomized event Output list
   

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