80d99b1e3210b10aa0e45098014140bdd79c0bac
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskJetSpectrum.h
1 #ifndef ALIANALYSISTASKJETSPECTRUM_H
2 #define ALIANALYSISTASKJETSPECTRUM_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 // Task used for the correction of determiantion of reconstructed jet spectra
9 // Compares input (gen) and output (rec) jets   
10 // *******************************************
11
12 #include "AliAnalysisTaskSE.h"
13 #include  "THnSparse.h" // cannot forward declare ThnSparseF
14
15 ////////////////
16 class AliJetHeader;
17 class AliESDEvent;
18 class AliAODEvent;
19 class AliAODJet;
20 class AliGenPythiaEventHeader;
21
22 class TList;
23 class TChain;
24 class TH2F;
25 class TH3F;
26 class TProfile;
27
28
29
30 class AliAnalysisTaskJetSpectrum : public AliAnalysisTaskSE
31 {
32  public:
33     AliAnalysisTaskJetSpectrum();
34     AliAnalysisTaskJetSpectrum(const char* name);
35     virtual ~AliAnalysisTaskJetSpectrum() {;}
36     // Implementation of interface methods
37     virtual void UserCreateOutputObjects();
38     virtual void Init();
39     virtual void LocalInit() { Init(); }
40     virtual void UserExec(Option_t *option);
41     virtual void Terminate(Option_t *option);
42     virtual Bool_t Notify();
43
44
45     virtual void SetExternalWeight(Float_t f){fExternalWeight = f;}
46     virtual void SetUseExternalWeightOnly(Bool_t b){fUseExternalWeightOnly = b;}
47     virtual void SetAODInput(Bool_t b){fUseAODInput = b;}
48     virtual void SetLimitGenJetEta(Bool_t b){fLimitGenJetEta = b;}
49     virtual void SetAnalysisType(Int_t i){fAnalysisType = i;}
50     virtual void SetBranchGen(const char* c){fBranchGen = c;}
51     virtual void SetBranchRec(const char* c){fBranchRec = c;}
52
53     // Helper
54     static void GetClosestJets(AliAODJet *genJets,const Int_t &nGenJets,
55                                AliAODJet *recJets,const Int_t &nRecJets,
56                                Int_t *iGenIndex,Int_t *iRecIndex,Int_t iDebug = 0);
57
58   //
59
60     enum {kAnaMC =  0x1};
61     enum {kMaxJets =  5};
62     enum {kMaxCorrelation =  3};
63
64  private:
65
66     AliAnalysisTaskJetSpectrum(const AliAnalysisTaskJetSpectrum&);
67     AliAnalysisTaskJetSpectrum& operator=(const AliAnalysisTaskJetSpectrum&);
68     
69     static const Float_t fgkJetNpartCut[kMaxCorrelation];
70
71
72     AliJetHeader *fJetHeaderRec;
73     AliJetHeader *fJetHeaderGen;
74     AliAODEvent  *fAOD; // where we take the jets from can be input or output AOD
75
76     TString       fBranchRec;  // AOD branch name for reconstructed
77     TString       fConfigRec;  // Name of the Config file 
78     TString       fBranchGen;  // AOD brnach for genereated
79     TString       fConfigGen;  // Name of the Config file (if any)
80
81     Bool_t        fUseAODInput;
82     Bool_t        fUseExternalWeightOnly;
83     Bool_t        fLimitGenJetEta;
84     Int_t         fAnalysisType;
85     Float_t       fExternalWeight;    
86
87     TProfile*     fh1Xsec;   // pythia cross section and trials
88     TH1F*         fh1Trials; // trials are added
89     TH1F*         fh1PtHard;  // Pt har of the event...       
90     TH1F*         fh1PtHardNoW;  // Pt har of the event...       
91     TH1F*         fh1PtHardTrials;  // Number of trials 
92     TH1F*         fh1NGenJets;
93     TH1F*         fh1NRecJets;
94     TH1F*         fh1E[kMaxJets];       // Jet Energy       
95     TH1F*         fh1PtRecIn[kMaxJets];       // Jet pt for all      
96     TH1F*         fh1PtRecOut[kMaxJets];      // Jet pt with corellated generated jet    
97     TH1F*         fh1PtGenIn[kMaxJets];       // Detection efficiency for given p_T.gen
98     TH1F*         fh1PtGenOut[kMaxJets];      // gen pT of found jets
99
100
101     
102     TH2F*         fh2PtFGen[kMaxJets];   // correlation betwen genreated and found  jet pT
103     TH2F*         fh2PhiFGen[kMaxJets];  // correlation betwen genreated and found  jet phi
104     TH2F*         fh2EtaFGen[kMaxJets];  // correlation betwen genreated and found  jet eta
105     TH2F*         fh2Frag[kMaxJets];    // fragmentation function
106     TH2F*         fh2FragLn[kMaxJets];  // fragmetation in xi
107     TH2F*         fh2PtGenDeltaPhi[kMaxJets];  // difference between generated and found  jet phi
108     TH2F*         fh2PtGenDeltaEta[kMaxJets];  // difference between generated and found  jet eta
109
110     TH3F*         fh3PtRecGenHard[kMaxJets];      // correlation beetwen pt hard, rec and gen                             
111     TH3F*         fh3PtRecGenHardNoW[kMaxJets];  // correlation beetwen pt hard, rec and gen no weight                                              
112     TH3F*         fh3RecEtaPhiPt[kMaxJets]; // correlation between eta phi and rec pt                                              
113     TH3F*         fh3RecEtaPhiPtNoGen[kMaxJets]; // correlation between eta phi and rec pt of jets without a partner                    
114     TH3F*         fh3GenEtaPhiPtNoFound[kMaxJets]; // correlation between eta phi and gen pt of jets without a partner
115     TH3F*         fh3GenEtaPhiPt[kMaxJets]; // correlation between eta phi and gen pt of jets without a partner                              
116     // ========= Multiplicity dependence ======
117
118     // ==========TODO , flavaor dependence ========                           
119     // ============================================                       
120                                      
121
122     // ============= TODO , phi dependence ========
123     // ============================================                            
124   
125     TList *fHistList; // Output list
126     
127     ///////// For 2 dimensional unfolding //////////////////
128     TH1F*         fh1JetMultiplicity;   // JetMultiplicity
129     TH2F*         fh2ERecZRec;          // rec e and z
130     TH2F*         fh2EGenZGen;          // gen e and z
131     TH2F*         fh2Efficiency;        // 2 dimensional efficiency
132     TH3F*         fh3EGenERecN;         // correlation rec energy, gen energy N particles 
133     THnSparseF*   fhnCorrelation[kMaxCorrelation]; // 4d Correllation for unfolding
134     ///////////////////////////////////////////////////////
135
136
137     ClassDef(AliAnalysisTaskJetSpectrum, 1) // Analysis task for standard jet analysis
138 };
139  
140 #endif