]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaGeneratorKine.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaGeneratorKine.h
1 #ifndef ALIANAGENERATORKINE_H
2 #define ALIANAGENERATORKINE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 //___________________________________________________________________________
7 // Do direct photon/decay photon (eta, pi0, other)/pi0/eta isolation
8 // and correlation with partons/jets/hadrons analysis at the generator level.
9 // For MC kinematics at ESD and AOD level
10 // Jets only considered in the case of Pythia, check what to do with others.//
11 //
12 //-- Author: Gustavo Conesa (LPSC-CNRS-Grenoble)
13
14 // --- ROOT ---
15 class TH2F ;
16 class TParticle ;
17 class AliStack ;
18 class TLorentzVector ;
19
20 // --- ANALYSIS ---
21 #include "AliAnaCaloTrackCorrBaseClass.h"
22
23 class AliAnaGeneratorKine : public AliAnaCaloTrackCorrBaseClass {
24        
25 public:
26   
27   AliAnaGeneratorKine() ; // default ctor
28
29   virtual ~AliAnaGeneratorKine() { delete fFidCutTrigger ; } //virtual dtor
30   
31   enum mcPrimTypes { kmcPrimPhoton = 0, kmcPrimPi0Decay = 1, kmcPrimEtaDecay  = 2, kmcPrimOtherDecay  = 3,
32                      kmcPrimPi0    = 4, kmcPrimEta      = 5                                               } ;
33   
34   static const Int_t fgkNmcPrimTypes = 6;
35   static const Int_t fgkNLead = 2;
36   static const Int_t fgkNIso  = 4;
37
38   Bool_t CorrelateWithPartonOrJet(Int_t   indexTrig,
39                                   Int_t   pdgTrig,
40                                   Bool_t  leading [fgkNIso],
41                                   Bool_t  isolated[fgkNIso],
42                                   Int_t & iparton) ; 
43   
44   TList * GetCreateOutputObjects() ;
45   
46   void    GetPartonsAndJets() ;
47     
48   void    GetXE(Int_t   indexTrig,
49                 Int_t   pdgTrig,
50                 Bool_t  leading [fgkNIso],
51                 Bool_t  isolated[fgkNIso],
52                 Int_t   iparton) ;
53   
54   void    InitParameters() ;
55   
56   void    IsLeadingAndIsolated(Int_t  indexTrig,
57                                Int_t  pdgTrig,
58                                Bool_t leading [fgkNIso],     
59                                Bool_t isolated[fgkNIso]) ;
60     
61   void    MakeAnalysisFillHistograms() ;
62   
63   void    SetTriggerDetector( TString & det ) ;
64   void    SetTriggerDetector( Int_t  det )    ;
65   
66   void    SetMinChargedPt   ( Float_t pt )   { fMinChargedPt    = pt   ; }
67   void    SetMinNeutralPt   ( Float_t pt )   { fMinNeutralPt    = pt   ; }
68   
69   // Detector for trigger particles acceptance
70   AliFiducialCut * GetFiducialCutForTrigger()
71   { if(!fFidCutTrigger)  fFidCutTrigger  = new AliFiducialCut(); return  fFidCutTrigger  ; }
72   virtual void     SetFiducialCut(AliFiducialCut * fc)
73   { delete fFidCutTrigger;  fFidCutTrigger  = fc      ; }
74   
75 private:
76
77   Int_t            fTriggerDetector ;       // Detector : EMCAL, PHOS, CTS
78   TString          fTriggerDetectorString ; // Detector : EMCAL, PHOS, CTS
79
80   AliFiducialCut * fFidCutTrigger;          //! fiducial cut for the trigger detector
81   
82   Float_t          fMinChargedPt;           //! Minimum energy for charged particles in correlation
83   Float_t          fMinNeutralPt;           //! Minimum energy for neutral particles in correlation
84   
85   AliStack       * fStack;                  //! access ESD stack
86   TClonesArray   * fAODMCparticles ;        //! access AOD stack
87
88 //  TParticle      * fParton2;              //! Initial state Parton
89 //  TParticle      * fParton3;              //! Initial state Parton
90   
91   TLorentzVector   fParton6;                //! Final state Parton
92   TLorentzVector   fParton7;                //! Final state Parton
93   
94   Int_t            fParton6PDG;             //! Final state Parton PDG
95   Int_t            fParton7PDG;             //! Final state Parton PDG
96   
97   TLorentzVector   fJet6;                   //! Pythia jet close to parton in position 6
98   TLorentzVector   fJet7;                   //! Pythia jet close to parton in position 7
99
100   TLorentzVector   fTrigger;                //! Trigger momentum, avoid generating TLorentzVectors per event
101   TLorentzVector   fLVTmp;                  //! momentum, avoid generating TLorentzVectors per event
102   
103   Int_t            fNPrimaries;             //! N primaries
104   Float_t          fPtHard;                 //! Generated pT hard
105   
106   // Histograms
107   
108   TH1F      * fhPtHard;                     //! pt of parton
109   TH1F      * fhPtParton;                   //! pt of parton  
110   TH1F      * fhPtJet;                      //! pt of jet 
111   
112   TH2F      * fhPtPartonPtHard;             //! pt of parton divided to pt hard, trigger is photon 
113   TH2F      * fhPtJetPtHard;                //! pt of jet divided to pt hard, trigger is photon 
114   TH2F      * fhPtJetPtParton;              //! pt of parton divided to pt parton, trigger is photon 
115
116   TH1F      * fhPt[fgkNmcPrimTypes];        //! Input particle
117   
118   // Histograms arrays for 4 isolation options and 2 options on leading or not leading particle
119
120   TH2F      * fhPtAcceptedGammaJet                      [fgkNLead][fgkNIso]; //! gamma-jet pair in acceptance (jet in good eta window)
121
122   
123   TH1F      * fhPtLeading               [fgkNmcPrimTypes]          [fgkNIso]; //! pT
124
125   TH2F      * fhPtLeadingSumPt          [fgkNmcPrimTypes]          [fgkNIso]; //! pT vs sum in cone
126   
127   TH1F      * fhPtLeadingIsolated       [fgkNmcPrimTypes]          [fgkNIso]; //! isolated
128
129   TH2F      * fhPtPartonTypeNear        [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! particle pt versus originating parton type
130   
131   TH2F      * fhPtPartonTypeNearIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus originating parton type
132
133   TH2F      * fhPtPartonTypeAway        [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus away side parton type
134
135   TH2F      * fhPtPartonTypeAwayIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, particle pt versus away side parton type
136   
137   TH2F      * fhZHard                   [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
138  
139   TH2F      * fhZHardIsolated           [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
140   
141   TH2F      * fhZParton                 [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
142
143   TH2F      * fhZPartonIsolated         [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
144
145   TH2F      * fhZJet                    [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
146
147   TH2F      * fhZJetIsolated            [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
148   
149   TH2F      * fhXE                      [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
150
151   TH2F      * fhXEIsolated              [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
152   
153   TH2F      * fhXEUE                    [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
154
155   TH2F      * fhXEUEIsolated            [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
156   
157   
158   AliAnaGeneratorKine              (const AliAnaGeneratorKine & gk) ; // cpy ctor
159   AliAnaGeneratorKine & operator = (const AliAnaGeneratorKine & gk) ; // cpy assignment
160   
161   ClassDef(AliAnaGeneratorKine,6)
162   
163 } ;
164
165
166 #endif //ALIANAGENERATORKINE_H
167
168
169