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 photon/pi0 analysis for isolation and correlation
8 // at the generator level. Only for kine stack (ESDs)
11 //-- Author: Gustavo Conesa (LPSC-CNRS-Grenoble)
17 class TLorentzVector ;
20 #include "AliAnaCaloTrackCorrBaseClass.h"
22 class AliAnaGeneratorKine : public AliAnaCaloTrackCorrBaseClass {
26 AliAnaGeneratorKine() ; // default ctor
28 virtual ~AliAnaGeneratorKine() { delete fFidCutTrigger ; } //virtual dtor
30 enum mcPrimTypes { kmcPrimPhoton = 0, kmcPrimPi0Decay = 1, kmcPrimEtaDecay = 2, kmcPrimOtherDecay = 3,
31 kmcPrimPi0 = 4, kmcPrimEta = 5 } ;
33 static const Int_t fgkNmcPrimTypes = 6;
34 static const Int_t fgkNLead = 2;
35 static const Int_t fgkNIso = 4;
37 Bool_t CorrelateWithPartonOrJet(Int_t indexTrig,
39 Bool_t leading [fgkNIso],
40 Bool_t isolated[fgkNIso],
43 TList * GetCreateOutputObjects() ;
45 void GetPartonsAndJets() ;
47 void GetXE(Int_t indexTrig,
49 Bool_t leading [fgkNIso],
50 Bool_t isolated[fgkNIso],
53 void InitParameters() ;
55 void IsLeadingAndIsolated(Int_t indexTrig,
57 Bool_t leading [fgkNIso],
58 Bool_t isolated[fgkNIso]) ;
60 void MakeAnalysisFillHistograms() ;
62 void SetTriggerDetector( TString & det ) ;
63 void SetTriggerDetector( Int_t det ) ;
65 void SetMinChargedPt ( Float_t pt ) { fMinChargedPt = pt ; }
66 void SetMinNeutralPt ( Float_t pt ) { fMinNeutralPt = pt ; }
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 ; }
76 Int_t fTriggerDetector ; // Detector : EMCAL, PHOS, CTS
77 TString fTriggerDetectorString ; // Detector : EMCAL, PHOS, CTS
79 AliFiducialCut* fFidCutTrigger; //! fiducial cut for the trigger detector
81 Float_t fMinChargedPt; //! Minimum energy for charged particles in correlation
82 Float_t fMinNeutralPt; //! Minimum energy for neutral particles in correlation
84 AliStack * fStack; //! access stack
86 TParticle * fParton2; //! Initial state Parton
87 TParticle * fParton3; //! Initial state Parton
89 TParticle * fParton6; //! Final state Parton
90 TParticle * fParton7; //! Final state Parton
92 TLorentzVector fJet6; //! Pythia jet close to parton in position 6
93 TLorentzVector fJet7; //! Pythia jet close to parton in position 7
95 TLorentzVector fTrigger; //! Trigger momentum, avoid generating TLorentzVectors per event
96 TLorentzVector fLVTmp; //! momentum, avoid generating TLorentzVectors per event
98 Float_t fPtHard; //! Generated pT hard
102 TH1F * fhPtHard; //! pt of parton
103 TH1F * fhPtParton; //! pt of parton
104 TH1F * fhPtJet; //! pt of jet
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
110 TH1F * fhPt[fgkNmcPrimTypes]; //! Input particle
112 // Histograms arrays for 4 isolation options and 2 options on leading or not leading particle
114 TH2F * fhPtAcceptedGammaJet [fgkNLead][fgkNIso]; //! gamma-jet pair in acceptance (jet in good eta window)
117 TH1F * fhPtLeading [fgkNmcPrimTypes] [fgkNIso]; //! pT
119 TH2F * fhPtLeadingSumPt [fgkNmcPrimTypes] [fgkNIso]; //! pT vs sum in cone
121 TH1F * fhPtLeadingIsolated [fgkNmcPrimTypes] [fgkNIso]; //! isolated
123 TH2F * fhPtPartonTypeNear [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! particle pt versus originating parton type
125 TH2F * fhPtPartonTypeNearIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus originating parton type
127 TH2F * fhPtPartonTypeAway [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus away side parton type
129 TH2F * fhPtPartonTypeAwayIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, particle pt versus away side parton type
131 TH2F * fhZHard [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
133 TH2F * fhZHardIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
135 TH2F * fhZParton [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
137 TH2F * fhZPartonIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
139 TH2F * fhZJet [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
141 TH2F * fhZJetIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
143 TH2F * fhXE [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
145 TH2F * fhXEIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
147 TH2F * fhXEUE [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
149 TH2F * fhXEUEIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
152 AliAnaGeneratorKine (const AliAnaGeneratorKine & gk) ; // cpy ctor
153 AliAnaGeneratorKine & operator = (const AliAnaGeneratorKine & gk) ; // cpy assignment
155 ClassDef(AliAnaGeneratorKine,5)
160 #endif //ALIANAGENERATORKINE_H