]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PYTHIA6/AliGenPythia.h
Method SetTriggerParticle added.
[u/mrichter/AliRoot.git] / PYTHIA6 / AliGenPythia.h
index c91fea1d8d877a1797453ae8f4a902158e3cd71b..a8d3f24cfd5807dab694acbb8395ac8b044932f2 100644 (file)
@@ -3,6 +3,7 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
+
 /* $Id$ */
 
 //
@@ -21,6 +22,7 @@
 class AliPythia;
 class TParticle;
 class AliGenPythiaEventHeader;
+class AliGenEventHeader;
 class AliStack;
 class AliRunLoader;
 
@@ -55,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
@@ -70,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;
@@ -91,7 +101,9 @@ class AliGenPythia : public AliGenMC
     virtual void SetQuench(Int_t flag = 0) {fQuench = flag;}
     virtual void SetHadronisation(Int_t flag = 1) {fHadronisation = flag;}
     virtual void SetReadFromFile(const Text_t *filname) {fFileName = filname;  fReadFromFile = 1;}    
-           
+    // Get interaction rate for pileup studies
+    virtual void    SetInteractionRate(Float_t rate,Float_t timewindow = 90.e-6);
+    virtual Float_t GetInteractionRate() const {return fInteractionRate;}
     // get cross section of process
     virtual Float_t GetXsection() const {return fXsection;}
     // get triggered jets
@@ -121,16 +133,22 @@ class AliGenPythia : public AliGenMC
     //
     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();
+    void     AddHeader(AliGenEventHeader* header);
+    
  protected:
     // adjust the weight from kinematic cuts
-    void   AdjustWeights();
-    Int_t  GenerateMB();
-    void   MakeHeader();    
-
-    
+    void     AdjustWeights();
+    Int_t    GenerateMB();
+    void     MakeHeader();    
+    void     GeneratePileup();
     Process_t   fProcess;           //Process type
     StrucFunc_t fStrucFunc;         //Structure Function
     Float_t     fEnergyCMS;         //Centre of mass energy
@@ -140,6 +158,11 @@ class AliGenPythia : public AliGenMC
     Float_t     fQ;                 //Mean Q
     Float_t     fX1;                //Mean x1
     Float_t     fX2;                //Mean x2
+    Float_t     fEventTime;         //Time of the subevent
+    Float_t     fInteractionRate;   //Interaction rate (set by user)
+    Float_t     fTimeWindow;        //Time window for pileup events (set by user)
+    Int_t       fCurSubEvent;       //Index of the current sub-event
+    TArrayF     *fEventsTime;       //Subevents time for pileup
     Int_t       fNev;               //Number of events 
     Int_t       fFlavorSelect;      //Heavy Flavor Selection
     Float_t     fXsection;          //Cross-section
@@ -182,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