4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
9 //////////////////////////////////////////////////////////////////////////
13 // This class implements an interface to the MevSim event generator. //
15 //////////////////////////////////////////////////////////////////////////
17 #include "TGenerator.h"
19 class TMevSimPartTypeParams;
21 class TMevSim : public TGenerator {
24 // Constructors and destructors
26 TMevSim(Int_t nEvents = 1, Int_t modelType=1, Int_t reacPlaneCntrl=4,
27 Float_t psiRMean=0.0, Float_t psiRStDev=0.0, Float_t multFacMean=1.0, Float_t multFacStDev=0.05,
28 Float_t ptCutMin = 0.01, Float_t ptCutMax = 3.0, Float_t etaCutMin=(-4.5), Float_t etaCutMax = 4.5,
29 Float_t phiCutMin=0.0, Float_t phiCutMax=360.0, Int_t irand=87266);
31 TMevSim(TMevSim& mevsim); // copy constructor
32 TMevSim& operator=(const TMevSim& mevsim);
35 // Mandatory TGenerator functions
37 virtual void Initialize();
39 virtual void GenerateEvent();
41 virtual Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
43 //Parameters for the generation:
45 virtual void SetNEvents(Int_t nEvents );
46 virtual Int_t GetNEvents() const;
48 virtual Int_t GetNPidTypes() const;
50 virtual void SetModelType(Int_t modelType);
51 virtual Int_t GetModelType() const;
53 virtual void SetReacPlaneCntrl(Int_t reacPlaneCntrl);
54 virtual Int_t GetReacPlaneCntrl() const;
56 virtual void SetPsiRParams(Float_t psiRMean, Float_t psiRStDev);
57 virtual Float_t GetPsiRMean() const;
58 virtual Float_t GetPsiRStDev() const;
60 virtual void SetMultFacParams(Float_t multFacMean, Float_t multFacStDev);
61 virtual Float_t GetMultFacMean() const;
62 virtual Float_t GetMultFacStDev() const;
64 // Pt and geometry cut
66 virtual void SetPtCutRange(Float_t ptCutMin, Float_t ptCutMax);
67 virtual Float_t GetPtCutMin() const;
68 virtual Float_t GetPtCutMax() const;
70 virtual void SetEtaCutRange(Float_t etaCutMin, Float_t etaCutMax);
71 virtual Float_t GetEtaCutMin() const;
72 virtual Float_t GetEtaCutMax() const;
74 virtual void SetPhiCutRange(Float_t phiCutMin, Float_t phiCutMax);
75 virtual Float_t GetPhiCutMin() const;
76 virtual Float_t GetPhiCutMax() const;
80 virtual void SetNStDevMult(Float_t nStDevMult);
81 virtual Float_t GetNStDevMult() const;
83 virtual void SetNStDevTemp(Float_t nStDevTemp);
84 virtual Float_t GetNStDevTemp() const;
86 virtual void SetNStDevSigma(Float_t nStDevSigma);
87 virtual Float_t GetNStDevSigma() const;
89 virtual void SetNStDevExpVel(Float_t nStDevExpVel);
90 virtual Float_t GetNStDevExpVel() const;
92 virtual void SetNStDevPSIr(Float_t nStDevPSIr);
93 virtual Float_t GetNStDevPSIr() const;
95 virtual void SetNStDevVn(Float_t nStDevVn);
96 virtual Float_t GetNStDevVn() const;
98 virtual void SetNStDevMultFac(Float_t nStDevMultFac);
99 virtual Float_t GetNStDevMultFac() const;
103 virtual void SetNIntegPts(Int_t nIntegPts);
104 virtual Int_t GetNintegPts() const;
106 virtual void SetNScanPts(Int_t nScanPts);
107 virtual Int_t GetNScanPts() const;
111 virtual void AddPartTypeParams(TMevSimPartTypeParams *params);
112 virtual void SetPartTypeParams(Int_t index, TMevSimPartTypeParams *params);
113 virtual void GetPartTypeParamsByIndex(Int_t index, TMevSimPartTypeParams *params) const;
114 virtual void GetPartTypeParamsByGPid(Int_t gpid, TMevSimPartTypeParams *params) const;
118 virtual Int_t PDGFromId(Int_t gpid) const;
119 virtual void DefineParticles();
123 Int_t fNEvents; // number of events to generate
124 Int_t fModelType;// type of the model (see class descr at .cxx)
125 Int_t fReacPlaneCntrl;//reaction plane constrol switch (see class descr at .cxx)
126 Float_t fPsiRMean; //Reaction plane angle mean (degrees) (see class descr at .cxx)
127 Float_t fPsiRStDev;//Reaction plane angle variance (degrees) (see class descr at .cxx)
128 Float_t fMultFacMean;// Mean of Overall multiplicity scaling factor (see class descr at .cxx)
129 Float_t fMultFacStDev;//Variance of Overall multiplicity scaling factor (see class descr at .cxx)
130 Float_t fPtCutMin; //Min Range of transverse momentum in GeV/c (see class descr at .cxx)
131 Float_t fPtCutMax;//Max Range of transverse momentum in GeV/c (see class descr at .cxx)
132 Float_t fEtaCutMin; //Min Pseudorapidity range(see class descr at .cxx)
133 Float_t fEtaCutMax;//Max Pseudorapidity range(see class descr at .cxx)
134 Float_t fPhiCutMin; //Min of Azimuthal angular range in degrees.(see class descr at .cxx)
135 Float_t fPhiCutMax;//Max of Azimuthal angular range in degrees. (see class descr at .cxx)
136 Float_t fNStDevMult; //Number of standard deviations the mean value of multiplicity(see class descr at .cxx)
137 Float_t fNStDevTemp; //Number of standard deviations the mean value of temperature
138 Float_t fNStDevSigma; //Number of standard deviations the mean value of rapidity
139 Float_t fNStDevExpVel; //Number of standard deviations the mean value of expansion velocity
140 Float_t fNStdDevPSIr; //Number of standard deviations the mean value of reaction plane angle
141 Float_t fNStDevVn; ////Number of standard deviations the mean value of
142 Float_t fNStDevMultFac;////Number of standard deviations the mean value of multiplicity scaling factor
143 Int_t fNIntegPts;//Number of mesh points to use in the random model
144 Int_t fNScanPts;//Number of mesh points to use to scan the (pt,y)
145 Int_t firand; //seed of RNG
146 TClonesArray *fParticleTypeParameters;//pointer to particle parameters
148 // Copied from AliGeant
149 enum {kMaxParticles = 35};
151 Int_t fNPDGCodes; // Number of PDG codes known by G3
153 Int_t fPDGCode[kMaxParticles]; // Translation table of PDG codes
155 ClassDef(TMevSim,1) //Interface to MevSim Event Generator