* See cxx source for full Copyright notice */
//___________________________________________________________________________
-// Do photon/pi0 analysis for isolation and correlation
-// at the generator level. Only for kine stack (ESDs)
-//
+// Do direct photon/decay photon (eta, pi0, other)/pi0/eta isolation
+// and correlation with partons/jets/hadrons analysis at the generator level.
+// For MC kinematics at ESD and AOD level
+// Jets only considered in the case of Pythia, check what to do with others.//
//
//-- Author: Gustavo Conesa (LPSC-CNRS-Grenoble)
public:
AliAnaGeneratorKine() ; // default ctor
- virtual ~AliAnaGeneratorKine() { ; } //virtual dtor
+
+ virtual ~AliAnaGeneratorKine() { delete fFidCutTrigger ; } //virtual dtor
- Bool_t CorrelateWithPartonOrJet(const TLorentzVector trigger,
- const Int_t indexTrig,
- const Int_t pdgTrig,
- const Bool_t leading[4],
- const Bool_t isolated[4],
+ enum mcPrimTypes { kmcPrimPhoton = 0, kmcPrimPi0Decay = 1, kmcPrimEtaDecay = 2, kmcPrimOtherDecay = 3,
+ kmcPrimPi0 = 4, kmcPrimEta = 5 } ;
+
+ static const Int_t fgkNmcPrimTypes = 6;
+ static const Int_t fgkNLead = 2;
+ static const Int_t fgkNIso = 4;
+
+ Bool_t CorrelateWithPartonOrJet(Int_t indexTrig,
+ Int_t pdgTrig,
+ Bool_t leading [fgkNIso],
+ Bool_t isolated[fgkNIso],
Int_t & iparton) ;
TList * GetCreateOutputObjects() ;
void GetPartonsAndJets() ;
- void GetXE(const TLorentzVector trigger,
- const Int_t indexTrig,
- const Int_t pdgTrig,
- const Bool_t leading[4],
- const Bool_t isolated[4],
- const Int_t iparton) ;
+ void GetXE(Int_t indexTrig,
+ Int_t pdgTrig,
+ Bool_t leading [fgkNIso],
+ Bool_t isolated[fgkNIso],
+ Int_t iparton) ;
void InitParameters() ;
- void IsLeadingAndIsolated(const TLorentzVector trigger,
- const Int_t indexTrig,
- const Int_t pdgTrig,
- Bool_t leading[4],
- Bool_t isolated[4]) ;
+ void IsLeadingAndIsolated(Int_t indexTrig,
+ Int_t pdgTrig,
+ Bool_t leading [fgkNIso],
+ Bool_t isolated[fgkNIso]) ;
+
+ void MakeAnalysisFillHistograms() ;
- void MakeAnalysisFillAOD() { ; }
+ 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 ; }
- void MakeAnalysisFillHistograms() ;
-
private:
+
+ Int_t fTriggerDetector ; // Detector : EMCAL, PHOS, CTS
+ TString fTriggerDetectorString ; // Detector : EMCAL, PHOS, CTS
+
+ AliFiducialCut * fFidCutTrigger; //! fiducial cut for the trigger detector
- AliStack * fStack; //! access stack
+ Float_t fMinChargedPt; //! Minimum energy for charged particles in correlation
+ Float_t fMinNeutralPt; //! Minimum energy for neutral particles in correlation
- TParticle * fParton2; //! Initial state Parton
- TParticle * fParton3; //! Initial state Parton
+ AliStack * fStack; //! access ESD stack
+ TClonesArray * fAODMCparticles ; //! access AOD stack
+
+// TParticle * fParton2; //! Initial state Parton
+// TParticle * fParton3; //! Initial state Parton
+
+ TLorentzVector fParton6; //! Final state Parton
+ TLorentzVector fParton7; //! Final state Parton
- TParticle * fParton6; //! Final state Parton
- TParticle * fParton7; //! Final state Parton
+ Int_t fParton6PDG; //! Final state Parton PDG
+ Int_t fParton7PDG; //! Final state Parton PDG
- TLorentzVector fJet6; //! Pythia jet close to parton in position 6
- TLorentzVector fJet7; //! Pythia jet close to parton in position 7
+ TLorentzVector fJet6; //! Pythia jet close to parton in position 6
+ TLorentzVector fJet7; //! Pythia jet close to parton in position 7
- Float_t fPtHard; //! Generated pT hard
+ TLorentzVector fTrigger; //! Trigger momentum, avoid generating TLorentzVectors per event
+ TLorentzVector fLVTmp; //! momentum, avoid generating TLorentzVectors per event
+
+ Int_t fNPrimaries; //! N primaries
+ Float_t fPtHard; //! Generated pT hard
- TH1F * fhPtHard; //! pt of parton
+ // Histograms
+
+ TH1F * fhPtHard; //! pt of parton
TH1F * fhPtParton; //! pt of parton
TH1F * fhPtJet; //! pt of jet
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
+ TH1F * fhPt[fgkNmcPrimTypes]; //! Input particle
+
+ // Histograms arrays for 4 isolation options and 2 options on leading or not leading particle
+
+ TH2F * fhPtAcceptedGammaJet [fgkNLead][fgkNIso]; //! gamma-jet pair in acceptance (jet in good eta window)
+
+
+ TH1F * fhPtLeading [fgkNmcPrimTypes] [fgkNIso]; //! pT
+
+ TH2F * fhPtLeadingSumPt [fgkNmcPrimTypes] [fgkNIso]; //! pT vs sum in cone
- TH1F * fhPtPhotonLeading[4]; //! Leading photon
- TH1F * fhPtPi0Leading[4]; //! Leading pi0
+ TH1F * fhPtLeadingIsolated [fgkNmcPrimTypes] [fgkNIso]; //! isolated
+
+ TH2F * fhPtPartonTypeNear [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! particle pt versus originating parton type
- TH1F * fhPtPhotonLeadingIsolated[4]; //! Leading photon, isolated
- TH1F * fhPtPi0LeadingIsolated[4]; //! Leading pi0, isolated
+ TH2F * fhPtPartonTypeNearIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus originating parton type
+
+ TH2F * fhPtPartonTypeAway [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! pt versus away side parton type
- TH2F * fhPtPartonTypeNearPhotonLeading[4]; //! Leading photon, particle pt versus originating parton type
- TH2F * fhPtPartonTypeNearPi0Leading[4]; //! Leading pi0, particle pt versus originating parton type
- TH2F * fhPtPartonTypeNearPhotonLeadingIsolated[4]; //! Leading photon, particle pt versus originating parton type
- TH2F * fhPtPartonTypeNearPi0LeadingIsolated[4]; //! Leading pi0, particle pt versus originating parton type
+ TH2F * fhPtPartonTypeAwayIsolated[fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, particle pt versus away side parton type
- TH2F * fhPtPartonTypeAwayPhotonLeading[4]; //! Leading photon, particle pt versus away side parton type
- TH2F * fhPtPartonTypeAwayPi0Leading[4]; //! Leading pi0, particle pt versus away side parton type
- TH2F * fhPtPartonTypeAwayPhotonLeadingIsolated[4]; //! Leading photon, isolated, particle pt versus away side parton type
- TH2F * fhPtPartonTypeAwayPi0LeadingIsolated[4]; //! Leading pi0, isolated, particle pt versus away side parton type
+ TH2F * fhZHard [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
+
+ TH2F * fhZHardIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
- TH2F * fhZHardPhotonLeading[4]; //! Leading photon, zHard
- TH2F * fhZHardPi0Leading[4]; //! Leading pi0, zHard
- TH2F * fhZHardPhotonLeadingIsolated[4]; //! Leading photon, isolated, zHard
- TH2F * fhZHardPi0LeadingIsolated[4]; //! Leading pi0, isolated, zHard
+ TH2F * fhZParton [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
+
+ TH2F * fhZPartonIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
+
+ TH2F * fhZJet [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! zHard
+
+ TH2F * fhZJetIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! isolated, zHard
- TH2F * fhZPartonPhotonLeading[4]; //! Leading photon, zHard
- TH2F * fhZPartonPi0Leading[4]; //! Leading pi0, zHard
- TH2F * fhZPartonPhotonLeadingIsolated[4]; //! Leading photon, isolated, zHard
- TH2F * fhZPartonPi0LeadingIsolated[4]; //! Leading pi0, isolated, zHard
+ TH2F * fhXE [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
- TH2F * fhZJetPhotonLeading[4]; //! Leading photon, zHard
- TH2F * fhZJetPi0Leading[4]; //! Leading pi0, zHard
- TH2F * fhZJetPhotonLeadingIsolated[4]; //! Leading photon, isolated, zHard
- TH2F * fhZJetPi0LeadingIsolated[4]; //! Leading pi0, isolated, zHard
+ TH2F * fhXEIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
- TH2F * fhXEPhotonLeading[4]; //! Leading photon, xE away side
- TH2F * fhXEPi0Leading[4]; //! Leading pi0, xE away side
- TH2F * fhXEPhotonLeadingIsolated[4]; //! Leading photon, xE away side
- TH2F * fhXEPi0LeadingIsolated[4]; //! Leading pi0, isolated, xE away side
+ TH2F * fhXEUE [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
+
+ TH2F * fhXEUEIsolated [fgkNmcPrimTypes][fgkNLead][fgkNIso]; //! xE away side
- TH2F * fhXEUEPhotonLeading[4]; //! Leading photon, xE away side
- TH2F * fhXEUEPi0Leading[4]; //! Leading pi0, xE away side
- TH2F * fhXEUEPhotonLeadingIsolated[4]; //! Leading photon, xE away side
- TH2F * fhXEUEPi0LeadingIsolated[4]; //! Leading pi0, isolated, xE away side
AliAnaGeneratorKine (const AliAnaGeneratorKine & gk) ; // cpy ctor
AliAnaGeneratorKine & operator = (const AliAnaGeneratorKine & gk) ; // cpy assignment
- ClassDef(AliAnaGeneratorKine,1)
+ ClassDef(AliAnaGeneratorKine,6)
} ;