X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=EVGEN%2FAliGenMC.h;h=b8adea6129ff1110d51f6823db1324a5e400527d;hb=170950c346b33b09a3a32e5d2cd15cdb1386e712;hp=28dd0d7b0b54972f190692d9a024681b88dfc0b7;hpb=a06092311433e1e1bad5da4c7f23180fcc65d34b;p=u%2Fmrichter%2FAliRoot.git diff --git a/EVGEN/AliGenMC.h b/EVGEN/AliGenMC.h index 28dd0d7b0b5..b8adea6129f 100644 --- a/EVGEN/AliGenMC.h +++ b/EVGEN/AliGenMC.h @@ -6,9 +6,18 @@ /* $Id$ */ +// Base class for generators using external MC generators. +// For example AliGenPythia using Pythia. +// Provides basic functionality: setting of kinematic cuts on +// decay products and particle selection. +// andreas.morsch@cern.ch + #include "AliGenerator.h" #include "AliDecayer.h" -#include +#include "AliGeometry.h" +#include +#include +#include class TParticle; @@ -19,7 +28,7 @@ class AliGenMC : public AliGenerator AliGenMC(Int_t npart); AliGenMC(const AliGenMC &MC); virtual ~AliGenMC(); - void Init(); + virtual void Init(); virtual void SetForceDecay(Decay_t decay = kAll) {fForceDecay = decay;} AliGenMC & operator=(const AliGenMC & rhs); virtual void SetCutOnChild(Int_t flag = 0) {fCutOnChild = flag;} @@ -27,7 +36,7 @@ class AliGenMC : public AliGenerator {fChildPMin = pmin; fChildPMax = pmax;} virtual void SetChildPtRange(Float_t ptmin = 0, Float_t ptmax = 20.) {fChildPtMin = ptmin; fChildPtMax = ptmax;} - virtual void SetChildPhiRange(Float_t phimin = -180., Float_t phimax = 180) + virtual void SetChildPhiRange(Float_t phimin = 0., Float_t phimax = 360.) {fChildPhiMin = TMath::Pi()*phimin/180; fChildPhiMax = TMath::Pi()*phimax/180;} virtual void SetChildThetaRange(Float_t thetamin = 0, Float_t thetamax = 180) @@ -36,19 +45,34 @@ class AliGenMC : public AliGenerator virtual void SetChildYRange(Float_t ymin = -12, Float_t ymax = 12) {fChildYMin = ymin; fChildYMax = ymax;} + virtual void SetMaximumLifetime(Float_t time = 1.e-15) {fMaxLifeTime = time;} + + virtual void SetGeometryAcceptance(AliGeometry * GeometryAcceptance=0) {fGeometryAcceptance = GeometryAcceptance;} + + virtual void SetPdgCodeParticleforAcceptanceCut(Int_t PdgCodeParticleforAcceptanceCut=0) {fPdgCodeParticleforAcceptanceCut = PdgCodeParticleforAcceptanceCut;} + + virtual void SetNumberOfAcceptedParticles(Int_t NumberOfAcceptedParticles=2) {fNumberOfAcceptedParticles = NumberOfAcceptedParticles;} + + virtual Bool_t CheckAcceptanceGeometry(Int_t np, TClonesArray* particles); + virtual void SetProjectile(TString proj="P", Int_t a = 1, Int_t z = 1) + {fProjectile = proj; fAProjectile = a; fZProjectile = z;} + virtual void SetTarget(TString tar="P", Int_t a = 1, Int_t z = 1) + {fTarget = tar; fATarget = a; fZTarget = z;} + virtual void Boost(); protected: // check if particle is selected as parent particle - Bool_t ParentSelected(Int_t ip); + Bool_t ParentSelected(Int_t ip) const; // check if particle is selected as child particle - Bool_t ChildSelected(Int_t ip); + Bool_t ChildSelected(Int_t ip) const; // all kinematic selection cuts go here - Bool_t KinematicSelection(TParticle *particle, Int_t flag); - Int_t CheckPDGCode(Int_t pdgcode); - + Bool_t KinematicSelection(TParticle *particle, Int_t flag) const; + Int_t CheckPDGCode(Int_t pdgcode) const; + void Copy(TObject&) const; protected: - TArrayI fParentSelect; // Parent particles to be selected - TArrayI fChildSelect; // Decay products to be selected + TClonesArray* fParticles; //!Particle List + TArrayI fParentSelect; //!Parent particles to be selected + TArrayI fChildSelect; //!Decay products to be selected Int_t fCutOnChild; // Cuts on decay products (children) are enabled/disabled Float_t fChildPtMin; // Children minimum pT Float_t fChildPtMax; // Children maximum pT @@ -61,8 +85,19 @@ class AliGenMC : public AliGenerator Float_t fChildYMin; // Children minimum y Float_t fChildYMax; // Children maximum y Decay_t fForceDecay; // Decay channel forced - - ClassDef(AliGenMC,1) // AliGenerator implementation for generators using MC methods + Float_t fMaxLifeTime; // Maximum lifetime for unstable particles + Int_t fAProjectile; // Projectile A + Int_t fZProjectile; // Projectile Z + Int_t fATarget; // Target A + Int_t fZTarget; // Target Z + TString fProjectile; // Projectile + TString fTarget; // Target + Double_t fDyBoost; // dy for boost into lab frame + AliGeometry * fGeometryAcceptance; // Geometry to which particles must be simulated + Int_t fPdgCodeParticleforAcceptanceCut; // Abs(PDG Code) of the particle to which the GeometryAcceptance must be applied + Int_t fNumberOfAcceptedParticles; // Number of accepted particles in GeometryAcceptance with the right Abs(PdgCode) + + ClassDef(AliGenMC,5) // AliGenerator implementation for generators using MC methods }; #endif