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 */
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.//
12 //-- Author: Gustavo Conesa (LPSC-CNRS-Grenoble)
18 class TLorentzVector ;
21 #include "AliAnaCaloTrackCorrBaseClass.h"
23 class AliAnaGeneratorKine : public AliAnaCaloTrackCorrBaseClass {
27 AliAnaGeneratorKine() ; // default ctor
29 virtual ~AliAnaGeneratorKine() { delete fFidCutTrigger ; } //virtual dtor
31 enum mcPrimTypes { kmcPrimPhoton = 0, kmcPrimPi0Decay = 1, kmcPrimEtaDecay = 2, kmcPrimOtherDecay = 3,
32 kmcPrimPi0 = 4, kmcPrimEta = 5 } ;
34 static const Int_t fgkNmcPrimTypes = 6;
35 static const Int_t fgkNLead = 2;
36 static const Int_t fgkNIso = 4;
38 Bool_t CorrelateWithPartonOrJet(Int_t indexTrig,
40 Bool_t leading [fgkNIso],
41 Bool_t isolated[fgkNIso],
44 TList * GetCreateOutputObjects() ;
46 void GetPartonsAndJets() ;
48 void GetXE(Int_t indexTrig,
50 Bool_t leading [fgkNIso],
51 Bool_t isolated[fgkNIso],
54 void InitParameters() ;
56 void IsLeadingAndIsolated(Int_t indexTrig,
58 Bool_t leading [fgkNIso],
59 Bool_t isolated[fgkNIso]) ;
61 void MakeAnalysisFillHistograms() ;
63 void SetTriggerDetector( TString & det ) ;
64 void SetTriggerDetector( Int_t det ) ;
66 void SetMinChargedPt ( Float_t pt ) { fMinChargedPt = pt ; }
67 void SetMinNeutralPt ( Float_t pt ) { fMinNeutralPt = pt ; }
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 ; }
77 Int_t fTriggerDetector ; // Detector : EMCAL, PHOS, CTS
78 TString fTriggerDetectorString ; // Detector : EMCAL, PHOS, CTS
80 AliFiducialCut * fFidCutTrigger; //! fiducial cut for the trigger detector
82 Float_t fMinChargedPt; //! Minimum energy for charged particles in correlation
83 Float_t fMinNeutralPt; //! Minimum energy for neutral particles in correlation
85 AliStack * fStack; //! access ESD stack
86 TClonesArray * fAODMCparticles ; //! access AOD stack
88 // TParticle * fParton2; //! Initial state Parton
89 // TParticle * fParton3; //! Initial state Parton
91 TLorentzVector fParton6; //! Final state Parton
92 TLorentzVector fParton7; //! Final state Parton
94 Int_t fParton6PDG; //! Final state Parton PDG
95 Int_t fParton7PDG; //! Final state Parton PDG
97 TLorentzVector fJet6; //! Pythia jet close to parton in position 6
98 TLorentzVector fJet7; //! Pythia jet close to parton in position 7
100 TLorentzVector fTrigger; //! Trigger momentum, avoid generating TLorentzVectors per event
101 TLorentzVector fLVTmp; //! momentum, avoid generating TLorentzVectors per event
103 Int_t fNPrimaries; //! N primaries
104 Float_t fPtHard; //! Generated pT hard
108 TH1F * fhPtHard; //! pt of parton
109 TH1F * fhPtParton; //! pt of parton
110 TH1F * fhPtJet; //! pt of jet
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
116 TH1F * fhPt[fgkNmcPrimTypes]; //! Input particle
118 // Histograms arrays for 4 isolation options and 2 options on leading or not leading particle
120 TH2F * fhPtAcceptedGammaJet [fgkNLead][fgkNIso]; //! gamma-jet pair in acceptance (jet in good eta window)
123 TH1F * fhPtLeading [fgkNmcPrimTypes] [fgkNIso]; //! pT
125 TH2F * fhPtLeadingSumPt [fgkNmcPrimTypes] [fgkNIso]; //! pT vs sum in cone
127 TH1F * fhPtLeadingIsolated [fgkNmcPrimTypes] [fgkNIso]; //! isolated
129 TH2F * fhPtPartonTypeNear [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! particle pt versus originating parton type
131 TH2F * fhPtPartonTypeNearIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus originating parton type
133 TH2F * fhPtPartonTypeAway [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus away side parton type
135 TH2F * fhPtPartonTypeAwayIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, particle pt versus away side parton type
137 TH2F * fhZHard [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
139 TH2F * fhZHardIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
141 TH2F * fhZParton [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
143 TH2F * fhZPartonIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
145 TH2F * fhZJet [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
147 TH2F * fhZJetIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
149 TH2F * fhXE [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
151 TH2F * fhXEIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
153 TH2F * fhXEUE [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
155 TH2F * fhXEUEIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
158 AliAnaGeneratorKine (const AliAnaGeneratorKine & gk) ; // cpy ctor
159 AliAnaGeneratorKine & operator = (const AliAnaGeneratorKine & gk) ; // cpy assignment
161 ClassDef(AliAnaGeneratorKine,6)
166 #endif //ALIANAGENERATORKINE_H