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

//___________________________________________________________________________
// Do photon/pi0 analysis for isolation and correlation
// at the generator level. Only for kine stack (ESDs)
//
//
//-- Author: Gustavo Conesa (LPSC-CNRS-Grenoble)

// --- ROOT ---
class TH2F ;
class TParticle ;
class AliStack ;
class TLorentzVector ;

// --- ANALYSIS ---
#include "AliAnaCaloTrackCorrBaseClass.h"

class AliAnaGeneratorKine : public AliAnaCaloTrackCorrBaseClass {
       
public:
  
  AliAnaGeneratorKine() ; // default ctor
  virtual ~AliAnaGeneratorKine() { delete fFidCutTrigger ; } //virtual dtor
  
  Bool_t CorrelateWithPartonOrJet(Int_t   indexTrig,
                                  Int_t   pdgTrig,
                                  Bool_t  leading[4],
                                  Bool_t  isolated[4],
                                  Int_t & iparton) ; 
  
  TList * GetCreateOutputObjects() ;
  
  void    GetPartonsAndJets() ;
    
  void    GetXE(Int_t   indexTrig,
                Int_t   pdgTrig,
                Bool_t  leading[4],
                Bool_t  isolated[4],
                Int_t   iparton) ;
  
  void    InitParameters() ;
  
  void    IsLeadingAndIsolated(Int_t  indexTrig,
                               Int_t  pdgTrig,
                               Bool_t leading[4],     
                               Bool_t isolated[4]) ;
    
  void    MakeAnalysisFillHistograms() ;
  
  void    SetTriggerDetector( TString & det ) ;
  void    SetTriggerDetector( Int_t  det )    ;
  
  void    SetMinChargedPt   ( Float_t pt )   { fMinChargedPt    = pt   ; }
  void    SetMinNeutralPt   ( Float_t pt )   { fMinNeutralPt    = pt   ; }
  
  // Detector for trigger particles acceptance
  AliFiducialCut * GetFiducialCutForTrigger()
  { if(!fFidCutTrigger)  fFidCutTrigger  = new AliFiducialCut(); return  fFidCutTrigger  ; }
  virtual void     SetFiducialCut(AliFiducialCut * fc)
  { delete fFidCutTrigger;  fFidCutTrigger  = fc      ; }
  
private:

  Int_t       fTriggerDetector ;            // Detector : EMCAL, PHOS, CTS
  TString     fTriggerDetectorString ;      // Detector : EMCAL, PHOS, CTS

  AliFiducialCut* fFidCutTrigger;           //! fiducial cut for the trigger detector
  
  Float_t     fMinChargedPt;                //! Minimum energy for charged particles in correlation
  Float_t     fMinNeutralPt;                //! Minimum energy for neutral particles in correlation
  
  AliStack  * fStack;                       //! access stack
  
  TParticle * fParton2;                     //! Initial state Parton
  TParticle * fParton3;                     //! Initial state Parton
  
  TParticle * fParton6;                     //! Final state Parton
  TParticle * fParton7;                     //! Final state Parton
  
  TLorentzVector fJet6;                     //! Pythia jet close to parton in position 6
  TLorentzVector fJet7;                     //! Pythia jet close to parton in position 7

  TLorentzVector fTrigger;                  //! Trigger momentum, avoid generating TLorentzVectors per event
  TLorentzVector fLVTmp;                    //! momentum, avoid generating TLorentzVectors per event
  
  Float_t     fPtHard;                      //! Generated pT hard

  TH1F      * fhPtHard;                     //! pt of parton 
  TH1F      * fhPtParton;                   //! pt of parton  
  TH1F      * fhPtJet;                      //! pt of jet 
  
  TH2F      * fhPtPartonPtHard;             //! pt of parton divided to pt hard, trigger is photon 
  TH2F      * fhPtJetPtHard;                //! pt of jet divided to pt hard, trigger is photon 
  TH2F      * fhPtJetPtParton;              //! pt of parton divided to pt parton, trigger is photon 

  TH1F      * fhPtPhoton;                   //! Input photon
  TH1F      * fhPtPi0;                      //! Input pi0
  
  // Histograms arrays for 4 isolation options and 2 options on leading or not leading particle
  
  TH1F      * fhPtPhotonLeading[4];         //! Leading photon pT
  TH1F      * fhPtPi0Leading[4];            //! Leading pi0 pT

  TH2F      * fhPtPhotonLeadingSumPt[4];    //! Leading photon pT vs sum in cone
  TH2F      * fhPtPi0LeadingSumPt[4];       //! Leading pi0 pT vs sum in cone
  
  TH1F      * fhPtPhotonLeadingIsolated[4]; //! Leading photon, isolated
  TH1F      * fhPtPi0LeadingIsolated[4];    //! Leading pi0, isolated

  TH2F      * fhPtPartonTypeNearPhoton[2][4];           //! Leading photon, particle pt versus originating parton type
  TH2F      * fhPtPartonTypeNearPi0[2][4];              //! Leading pi0, particle pt versus originating parton type
  TH2F      * fhPtPartonTypeNearPhotonIsolated[2][4];   //! Leading photon, particle pt versus originating parton type
  TH2F      * fhPtPartonTypeNearPi0Isolated[2][4];      //! Leading pi0, particle pt versus originating parton type
  
  TH2F      * fhPtPartonTypeAwayPhoton[2][4];           //! Leading photon, particle pt versus away side parton type
  TH2F      * fhPtPartonTypeAwayPi0[2][4];              //! Leading pi0, particle pt versus away side parton type
  TH2F      * fhPtPartonTypeAwayPhotonIsolated[2][4];   //! Leading photon, isolated, particle pt versus away side parton type 
  TH2F      * fhPtPartonTypeAwayPi0Isolated[2][4];      //! Leading pi0, isolated, particle pt versus away side parton type
  
  TH2F      * fhZHardPhoton[2][4];           //! Leading photon, zHard
  TH2F      * fhZHardPi0[2][4];              //! Leading pi0, zHard
  TH2F      * fhZHardPhotonIsolated[2][4];   //! Leading photon, isolated, zHard
  TH2F      * fhZHardPi0Isolated[2][4];      //! Leading pi0, isolated, zHard
  
  TH2F      * fhZPartonPhoton[2][4];         //! Leading photon, zHard
  TH2F      * fhZPartonPi0[2][4];            //! Leading pi0, zHard
  TH2F      * fhZPartonPhotonIsolated[2][4]; //! Leading photon, isolated, zHard
  TH2F      * fhZPartonPi0Isolated[2][4];    //! Leading pi0, isolated, zHard

  TH2F      * fhZJetPhoton[2][4];            //! Leading photon, zHard
  TH2F      * fhZJetPi0[2][4];               //! Leading pi0, zHard
  TH2F      * fhZJetPhotonIsolated[2][4];    //! Leading photon, isolated, zHard
  TH2F      * fhZJetPi0Isolated[2][4];       //! Leading pi0, isolated, zHard
  
  TH2F      * fhXEPhoton[2][4];              //! Leading photon, xE away side
  TH2F      * fhXEPi0[2][4];                 //! Leading pi0, xE away side
  TH2F      * fhXEPhotonIsolated[2][4];      //! Leading photon, xE away side
  TH2F      * fhXEPi0Isolated[2][4];         //! Leading pi0, isolated, xE away side
  
  TH2F      * fhXEUEPhoton[2][4];            //! Leading photon, xE away side
  TH2F      * fhXEUEPi0[2][4];               //! Leading pi0, xE away side
  TH2F      * fhXEUEPhotonIsolated[2][4];    //! Leading photon, xE away side
  TH2F      * fhXEUEPi0Isolated[2][4];       //! Leading pi0, isolated, xE away side
  
  TH2F      * fhPtAcceptedGammaJet[2][4];    //! gamma-jet pair in acceptance (jet in good eta window)
  
  AliAnaGeneratorKine              (const AliAnaGeneratorKine & gk) ; // cpy ctor
  AliAnaGeneratorKine & operator = (const AliAnaGeneratorKine & gk) ; // cpy assignment
  
  ClassDef(AliAnaGeneratorKine,4)
  
} ;


#endif //ALIANAGENERATORKINE_H



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