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