]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVGEN/AliGenPythia.h
Update for change in AliTRDsimple
[u/mrichter/AliRoot.git] / EVGEN / AliGenPythia.h
index f42a7c8f9bb1d057e1bb91b814922efe92725ef2..0860884f097bca08516e586df8609d44e5868865 100644 (file)
@@ -1,62 +1,74 @@
-#ifndef AliGenPythia_H
-#define AliGenPythia_H
-/////////////////////////////////////////////////////////
-//  Manager and hits classes for set:MUON version 0    //
-/////////////////////////////////////////////////////////
-#include "AliGenerator.h"
-#include "TNamed.h"
-#include "TF1.h"
-#include "TArrayF.h"
-#include "TTree.h"
+#ifndef ALIGENPYTHIA_H
+#define ALIGENPYTHIA_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+
+#include "AliGenMC.h"
 #include "AliPythia.h"
-#include "TArrayI.h"
-#include "TParticle.h"
+#include "TArrayF.h"
 
-class AliGenPythia : public AliGenerator
-{
- protected:
-    Process_t   fProcess;
-    StrucFunc_t fStrucFunc;
-    Decay_t     fForceDecay;
-    Float_t     fEnergyCMS;
-    Float_t     fKineBias;
-    Int_t       fTrials;
-    TArrayI     fParentSelect;
-    TArrayI     fChildSelect;
-    Float_t     fXsection;
-    AliPythia   *fPythia;
-    Float_t     fPtHardMin;
-    Float_t     fPtHardMax;    
+class AliPythia;
+class TParticle;
 
- private:
-    // check if particle is selected as parent particle
-    Bool_t ParentSelected(Int_t ip);
-    // check if particle is selected as child particle
-    Bool_t ChildSelected(Int_t ip);
-    // all kinematic selection cuts go here 
-    Bool_t KinematicSelection(TParticle *particle);
-    // adjust the weight from kinematic cuts
-    void   AdjustWeights();
+class AliGenPythia : public AliGenMC
+{
  public:
     AliGenPythia();
     AliGenPythia(Int_t npart);
+    AliGenPythia(const AliGenPythia &Pythia);
     virtual ~AliGenPythia();
     virtual void    Generate();
     virtual void    Init();
+    // set a cut on the Z coord. of the primary vertex (cm)
+    //
+    virtual void    SetEventListRange(Int_t eventFirst=-1, Int_t eventLast=-1);
     // select process type
-    virtual void    SetProcess(Process_t proc=charm) {fProcess=proc;}
+    virtual void    SetProcess(Process_t proc = kPyCharm) {fProcess = proc;}
     // select structure function
-    virtual void    SetStrucFunc(StrucFunc_t func=GRV_HO) {fStrucFunc=func;}
+    virtual void    SetStrucFunc(StrucFunc_t func = kGRV_HO) {fStrucFunc = func;}
     // select pt of hard scattering 
-    virtual void    SetPtHard(Float_t ptmin=0, Float_t ptmax=1.e10)
-       {fPtHardMin=ptmin; fPtHardMax=ptmax; }
+    virtual void    SetPtHard(Float_t ptmin = 0, Float_t ptmax = 1.e10)
+       {fPtHardMin = ptmin; fPtHardMax = ptmax; }
     // set centre of mass energy
-    virtual void    SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
-    // force decay type
-    virtual void    ForceDecay(Decay_t decay=semimuonic) {fForceDecay=decay;}
+    virtual void    SetEnergyCMS(Float_t energy = 5500) {fEnergyCMS = energy;}
+    // treat protons as inside nuclei
+    virtual void    SetNuclei(Int_t a1, Int_t a2);
     // get cross section of process
-    virtual Float_t GetXsection() {return fXsection;}
-    ClassDef(AliGenPythia,1)
+    virtual Float_t GetXsection() {return fXsection;}      
+    virtual void    FinishRun();
+    
+    // Assignment Operator
+    AliGenPythia & operator=(const AliGenPythia & rhs);
+ private:
+    Int_t  GenerateMB();
+    virtual void    MakeHeader();    
+ protected:
+    TClonesArray* fParticles;     //Particle  List
+    
+    Process_t   fProcess;         //Process type
+    StrucFunc_t fStrucFunc;       //Structure Function
+    Float_t     fEnergyCMS;       //Centre of mass energy
+    Float_t     fKineBias;        //!Bias from kinematic selection
+    Int_t       fTrials;          //!Number of trials
+    Int_t       fFlavorSelect;    //Heavy Flavor Selection
+    Float_t     fXsection;        //Cross-section
+    AliPythia   *fPythia;         //!Pythia 
+    Float_t     fPtHardMin;       //lower pT-hard cut 
+    Float_t     fPtHardMax;       //higher pT-hard cut
+    Int_t       fNucA1;           //mass number nucleus side 1
+    Int_t       fNucA2;           //mass number nucleus side 2
+    Bool_t      fFullEvent;       //!Write Full event if true
+    AliDecayer  *fDecayer;        //!Pointer to the decayer instance
+    Int_t       fDebugEventFirst; //!First event to debug
+    Int_t       fDebugEventLast;  //!Last  event to debug
+ private:
+    // adjust the weight from kinematic cuts
+    void   AdjustWeights();
+
+    ClassDef(AliGenPythia,1) // AliGenerator interface to Pythia
 };
 #endif