]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliGenPythia.h
Put TR photons above 15keV on the stack, change by A. Bercuci
[u/mrichter/AliRoot.git] / PYTHIA6 / AliGenPythia.h
index 2c28671921cc7f7c1f0ea54a22f5da0f10fae2f9..5a21ddd206f746d0f628ec6db7063ad9a6f88229 100644 (file)
@@ -46,7 +46,7 @@ class AliGenPythia : public AliGenMC
     // select process type
     virtual void    SetProcess(Process_t proc = kPyCharm) {fProcess = proc;}
     // select structure function
-    virtual void    SetStrucFunc(StrucFunc_t func = kGRVHO) {fStrucFunc = func;}
+    virtual void    SetStrucFunc(StrucFunc_t func =  kCTEQ5L) {fStrucFunc = func;}
     // select pt of hard scattering 
     virtual void    SetPtHard(Float_t ptmin = 0, Float_t ptmax = 1.e10)
        {fPtHardMin = ptmin; fPtHardMax = ptmax; }
@@ -57,6 +57,10 @@ class AliGenPythia : public AliGenMC
        {fGinit = iIn; fGfinal = iFin;}
     virtual void    SetPtKick(Float_t kt = 1.)
        {fPtKick = kt;}
+    // Use the Pythia 6.3 new multiple interations scenario
+    virtual void    UseNewMultipleInteractionsScenario() {fNewMIS = kTRUE;}
+    // Switch off heavy flavors
+    virtual void    SwitchHFOff() {fHFoff = kTRUE;}
     // set centre of mass energy
     virtual void    SetEnergyCMS(Float_t energy = 5500) {fEnergyCMS = energy;}
     // treat protons as inside nuclei
@@ -72,6 +76,10 @@ class AliGenPythia : public AliGenMC
        {fEtaMinGamma = etamin; fEtaMaxGamma = etamax;}
     virtual void    SetGammaPhiRange(Float_t phimin = 0., Float_t phimax = 360.)
        {fPhiMinGamma = TMath::Pi()*phimin/180.; fPhiMaxGamma = TMath::Pi()*phimax/180.;}
+
+    // Trigger on a particle
+    virtual void    SetTriggerParticle(Int_t particle = 0, Float_t etamax = 0.9) 
+       {fTriggerParticle = particle; fTriggerEta = etamax;}
     // Set option for feed down from higher family
     virtual void SetFeedDownHigherFamily(Bool_t opt) {
       fFeedDownOpt = opt;
@@ -99,7 +107,7 @@ class AliGenPythia : public AliGenMC
     // get cross section of process
     virtual Float_t GetXsection() const {return fXsection;}
     // get triggered jets
-    void GetJets(Int_t& njets, Int_t& ntrig, Float_t[4][10]);
+    void GetJets(Int_t& njets, Int_t& ntrig, Float_t jets[4][10]);
     void RecJetsUA1(Int_t& njets, Float_t jets[4][50]);
     void SetPycellParameters(Float_t etamax = 2., Int_t neta = 274, Int_t nphi = 432,
                             Float_t thresh = 0., Float_t etseed = 4.,
@@ -107,25 +115,29 @@ class AliGenPythia : public AliGenMC
     
     void LoadEvent(AliStack* stack, Int_t flag = 0, Int_t reHadr = 0);
     // Getters
-    virtual Process_t    GetProcess() {return fProcess;}
-    virtual StrucFunc_t  GetStrucFunc() {return fStrucFunc;}
-    virtual void         GetPtHard(Float_t& ptmin, Float_t& ptmax)
+    virtual Process_t    GetProcess() const {return fProcess;}
+    virtual StrucFunc_t  GetStrucFunc() const {return fStrucFunc;}
+    virtual void         GetPtHard(Float_t& ptmin, Float_t& ptmax) const
        {ptmin = fPtHardMin; ptmax = fPtHardMax;}
-    virtual Float_t      GetEnergyCMS() {return fEnergyCMS;}
-    virtual void         GetNuclei(Int_t&  a1, Int_t& a2)
+    virtual Float_t      GetEnergyCMS() const {return fEnergyCMS;}
+    virtual void         GetNuclei(Int_t&  a1, Int_t& a2) const
        {a1 = fAProjectile; a2 = fATarget;}
-    virtual void         GetJetEtRange(Float_t& etamin, Float_t& etamax)
+    virtual void         GetJetEtRange(Float_t& etamin, Float_t& etamax) const
        {etamin = fEtaMinJet; etamax = fEtaMaxJet;}
-    virtual void         GetJetPhiRange(Float_t& phimin, Float_t& phimax)
+    virtual void         GetJetPhiRange(Float_t& phimin, Float_t& phimax) const
        {phimin = fPhiMinJet*180./TMath::Pi(); phimax = fPhiMaxJet*180/TMath::Pi();}
-    virtual void         GetGammaEtaRange(Float_t& etamin, Float_t& etamax)
+    virtual void         GetGammaEtaRange(Float_t& etamin, Float_t& etamax) const
        {etamin = fEtaMinGamma; etamax = fEtaMaxGamma;}
-    virtual void         GetGammaPhiRange(Float_t& phimin, Float_t& phimax)
+    virtual void         GetGammaPhiRange(Float_t& phimin, Float_t& phimax) const
        {phimin = fPhiMinGamma*180./TMath::Pi(); phimax = fPhiMaxGamma*180./TMath::Pi();}
     //
     virtual void FinishRun();
     Bool_t CheckTrigger(TParticle* jet1, TParticle* jet2);
+
+    //Used in some processes to selected child properties
+    Bool_t CheckKinematicsOnChild();
     
+
     // Assignment Operator
     AliGenPythia & operator=(const AliGenPythia & rhs);
     void     GetSubEventTime();
@@ -133,7 +145,7 @@ class AliGenPythia : public AliGenMC
     
  protected:
     // adjust the weight from kinematic cuts
-    void     AdjustWeights();
+    void     AdjustWeights() const;
     Int_t    GenerateMB();
     void     MakeHeader();    
     void     GeneratePileup();
@@ -193,10 +205,13 @@ class AliGenPythia : public AliGenMC
                                     // parents and their decays
     Bool_t fFeedDownOpt;            // Option to set feed down from higher
                                     // quark families (e.g. b->c)
-    Bool_t fFragmentation;          // Option to activate fragmentation by Pythia
-    Bool_t fSetNuclei;              // Flag indicating that SetNuclei has been called
+    Bool_t  fFragmentation;          // Option to activate fragmentation by Pythia
+    Bool_t  fSetNuclei;              // Flag indicating that SetNuclei has been called
+    Bool_t  fNewMIS;                 // Flag for the new multipple interactions scenario
+    Bool_t  fHFoff;                  // Flag for switching heafy flavor production off
+    Int_t   fTriggerParticle;        // Trigger on this particle ...
+    Float_t fTriggerEta;             // .. within |eta| < fTriggerEta
     //
-
     CountMode_t fCountMode;            // Options for counting when the event will be finished.
     AliGenPythiaEventHeader* fHeader;  //! Event header
     AliRunLoader*            fRL;      //! Run Loader