Ensure vacuum inside the beam pipe for upgrade (Mario)
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskJetClusterKine.h
1 #ifndef ALIANALYSISTASKJETCLUSTERKINE_H
2 #define ALIANALYSISTASKJETCLUSTERKINE_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // *******************************************
8 // Jet Finding in the Kine train
9 // *******************************************
10
11 #include "AliAnalysisTaskSE.h"
12 #include "THnSparse.h" // cannot forward declare ThnSparseF
13 #include "AliVParticle.h" //FK//
14 #ifndef __CINT__
15 # include "fastjet/ClusterSequenceArea.hh"
16 # include "fastjet/AreaDefinition.hh"
17 # include "fastjet/JetDefinition.hh"
18 #else
19 namespace fastjet {
20   enum JetAlgorithm;
21   enum Strategy;
22   enum RecombinationScheme;
23   enum AreaType;
24 }
25 #endif
26
27 ////////////////
28 class AliJetHeader;
29 class AliESDEvent;
30 class AliAODEvent;
31 class AliAODExtension;
32 class AliAODJet;
33 class AliGenPythiaEventHeader;
34 class AliJetFinder;
35 class AliAODMCParticle;
36 class AliMCEvent;    //FK//
37 class AliMCEventHandler; //FK//
38 class AliVParticle; //FK//
39 class AliGenEventHeader; //FK//
40 class TList;
41 class TChain;
42 class TH2F;
43 class TH1F;
44 class TH3F;
45 class TRefArray;
46 class TClonesArray;
47 class TF1;
48 class TProfile;
49
50 class AliAnalysisTaskJetClusterKine : public AliAnalysisTaskSE
51 {
52  public:
53     AliAnalysisTaskJetClusterKine();
54     AliAnalysisTaskJetClusterKine(const char* name);
55     virtual ~AliAnalysisTaskJetClusterKine();
56     // Implementation of interface methods
57     virtual void UserCreateOutputObjects();
58     virtual void Init();  //FK//
59     virtual void LocalInit();
60     virtual void UserExec(Option_t *option);
61     virtual void Terminate(Option_t *option);
62     virtual Bool_t Notify();
63     
64     
65     virtual void SetTrackEtaWindow(Float_t f){fTrackEtaWindow = f;}
66     virtual void SetTrackTypeGen(Int_t i){fTrackTypeGen = i;}
67     virtual void SetTrackPtCut(Float_t x){fTrackPtCut = x;}
68     virtual void SetVtxCuts(Float_t z){fVtxZCut = z;}
69
70     virtual void SetJetOutputBranch(const char *c){fNonStdBranch = c;}
71     virtual void SetJetOutputContainer(Int_t c){fOutContainer = c;} //FF//
72     virtual const char* GetJetOutputBranch(){return fNonStdBranch.Data();}
73     virtual void SetJetOutputFile(const char *c){fNonStdFile = c;}
74     virtual const char* GetJetOutputFile(){return fNonStdFile.Data();}
75     virtual void SetMaxTrackPtInJet(Float_t x){fMaxTrackPtInJet = x;}
76     virtual void SetJetOutputMinPt(Float_t x){fJetOutputMinPt = x;}
77
78
79
80     // for Fast Jet
81     fastjet::JetAlgorithm        GetAlgorithm()         const {return fAlgorithm;}
82     fastjet::Strategy            GetStrategy()          const {return fStrategy;}
83     fastjet::RecombinationScheme GetRecombScheme()      const {return fRecombScheme;}
84     fastjet::AreaType            GetAreaType()          const {return fAreaType;}
85     // Setters
86     void SetRparam(Double_t f)                           {fRparam = f;}
87     // Temporary change to integer; problem with dictionary generation?
88     //void SetAlgorithm(fastjet::JetAlgorithm f)           {fAlgorithm = f;}
89     void SetAlgorithm(Int_t f)                           {fAlgorithm = (fastjet::JetAlgorithm) f;}
90     void SetStrategy(fastjet::Strategy f)                {fStrategy = f;}
91     void SetRecombScheme(fastjet::RecombinationScheme f) {fRecombScheme = f;}
92     void SetAreaType(fastjet::AreaType f)                {fAreaType = f;}
93     void SetGhostArea(Double_t f)                        {fGhostArea = f;}
94     void SetActiveAreaRepeats(Int_t f)                   {fActiveAreaRepeats = f;}
95     void SetGhostEtamax(Double_t f)                      {fGhostEtamax = f;}
96
97
98
99     // Helper
100     //
101
102     // we have different cases
103     // AOD reading -> MC from AOD
104     // ESD reading -> MC from Kinematics
105     // this has to match with our selection of input events
106     enum {kTrackKineAll=0, kTrackKineCharged};
107     enum { kNoOutput=0, kAODBranch=1, kExchCont=2 }; //FF//
108     
109
110  private:
111
112     AliAnalysisTaskJetClusterKine(const AliAnalysisTaskJetClusterKine&);
113     AliAnalysisTaskJetClusterKine& operator=(const AliAnalysisTaskJetClusterKine&);
114
115     Int_t GetListOfTracks(TList *list,Int_t type);
116         
117     AliMCEvent*              fMcEvent;    //! MC event                       //FK//   FFF
118     AliInputEventHandler*    fMcHandler;  //! MCEventHandler                 //FK//   FFF
119     TRefArray       *fRef;                // ! trefarray for track references within the jet  FFF
120     Int_t         fTrackTypeGen;          // type of tracks used for 0=full, 1=charged         FFF 
121     Float_t       fAvgTrials;             // Average nimber of trials
122     Float_t       fTrackEtaWindow;        // eta window used for corraltion plots between rec and gen  FFF 
123     Float_t       fTrackPtCut;            // minimum track pt to be accepted    FFF
124     Float_t       fJetOutputMinPt;        // minimum p_t for jets to be written out  FFF
125     Float_t       fMaxTrackPtInJet;       // maximum track pt within a jet for flagging... FFF
126     Float_t       fVtxZCut;               // zvtx cut
127
128     // output configurartion
129     TString       fNonStdBranch;      // the name of the non-std branch name, if empty no branch is filled  FFF
130     Int_t         fOutContainer;    //FF//output container 1=AOD Branch   2=Exchange container 
131     TString       fNonStdFile;        // The optional name of the output file the non-std branch is written to FFF
132
133
134
135     // Fast jet
136     Double_t fRparam;                  // fastjet distance parameter  FFF
137     fastjet::JetAlgorithm fAlgorithm; //fastjet::kt_algorithm  FFF
138     fastjet::Strategy fStrategy;  //= fastjet::Best;    FFF
139     fastjet::RecombinationScheme fRecombScheme; // = fastjet::BIpt_scheme;   FFF
140     fastjet::AreaType fAreaType;  // fastjet area type
141     Double_t fGhostArea;          // fasjet ghost area               FFF
142     Int_t fActiveAreaRepeats;     // fast jet active area repeats   FFF
143     Double_t fGhostEtamax;        // fast jet ghost area     FFF
144
145     TClonesArray  *fTCAJetsOut;   //! TCA of output jets     FFF
146
147     TProfile*     fh1Xsec;   //! pythia cross section and trials
148     TH1F*         fh1Trials; //! trials are added                         FFF
149     TH1F*         fh1PtHard;  //! Pt har of the event...       
150     TH1F*         fh1PtHardNoW;  //! Pt har of the event without weigt       
151     TH1F*         fh1PtHardTrials;  //! Number of trials 
152
153     TH1F*         fh1NJetsGen; //! number of generator level jets            FFF
154     TH1F*         fh1NConstGen;//! number of constiutens in leading jet   FFF
155     TH1F*         fh1NConstLeadingGen;//! number of constiutens in leading jet  FFF
156     TH1F*         fh1PtJetsGenIn;  //! Jet pt for all jets               FFF
157     TH1F*         fh1PtJetsLeadingGenIn;  //! Jet pt for the leading jets   FFF
158     TH1F*         fh1PtJetConstGen;//! pt of constituents               FFF
159     TH1F*         fh1PtJetConstLeadingGen;// pt of constituents    FFF
160     TH1F*         fh1PtTracksGenIn;  //! track pt for all tracks  FFF
161
162     TH1F*         fh1Nch;            //! (charged) particle mult      FFF
163     TH1F*         fh1Z;                // ! centrality of anaylsed events   FFF 
164
165
166     TH2F*         fh2NConstPt;           //! number of constituents vs. pt  FFF
167     TH2F*         fh2NConstLeadingPt;           //! number of constituents vs. pt FFF
168     TH2F*         fh2JetPhiEta;             //! jet phi eta FFF
169     TH2F*         fh2LeadingJetPhiEta;      //! leading jet phi eta  FFF
170     TH2F*         fh2JetEtaPt;              //! leading jet eta FFF
171     TH2F*         fh2LeadingJetEtaPt;              //! leading jet eta  FFF
172     TH2F*         fh2TrackEtaPt;              //! track eta for all tracks  FFF
173     TH2F*         fh2JetsLeadingPhiEta;     //! jet delta phi delta eta w.r.t. leading jet  FFF
174     TH2F*         fh2JetsLeadingPhiPt;      //! jet correlation with leading jet FFF
175     TH2F*         fh2JetsLeadingPhiPtW;      //! jet correlation with leading jet FFF
176
177     TList *fHistList; //!leading tracks to be skipped in the randomized event Output list
178    
179
180     ClassDef(AliAnalysisTaskJetClusterKine, 1) 
181 };
182  
183 #endif