Root interface to MevSim code as TGenerator realisation (Sylwester Radomski et al.)
[u/mrichter/AliRoot.git] / TMEVSIM / TMevSim.h
1 #ifndef ROOT_TMevSim
2 #define ROOT_TMevSim
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //////////////////////////////////////////////////////////////////////////
10 //                                                                      //
11 // TMevSim                                                              //
12 //                                                                      //
13 // This class implements an interface to the MevSim event generator.    //
14 //                                                                      //
15 //////////////////////////////////////////////////////////////////////////
16
17 #include "TGenerator.h"
18 #include "MevSimCommon.h"
19 #include "TMevSimPartTypeParams.h"
20 #include "TObjArray.h"
21
22 class TMevSim : public TGenerator {
23
24 protected:
25
26   Int_t fNEvents;
27   Int_t fModelType;
28   Int_t fReacPlaneCntrl;
29   Float_t fPsiRMean, fPsiRStDev;
30   Float_t fMultFacMean, fMultFacStDev;
31   Float_t fPtCutMin, fPtCutMax;
32   Float_t fEtaCutMin, fEtaCutMax;
33   Float_t fPhiCutMin, fPhiCutMax;
34   Float_t fNStDevMult, fNStDevTemp, fNStDevSigma, fNStDevExpVel, fNStdDevPSIr, fNStDevVn, fNStDevMultFac;
35   Int_t fNIntegPts;
36   Int_t fNScanPts;
37   Int_t firand;  
38   TClonesArray *fParticleTypeParameters;
39    
40 // Copied from AliGeant
41   enum {kMaxParticles = 35};
42
43   Int_t fNPDGCodes;               // Number of PDG codes known by G3
44
45   Int_t fPDGCode[kMaxParticles];  // Translation table of PDG codes
46
47  public:   
48    // Constructors and destructors
49    
50    TMevSim(Int_t nEvents = 1, Int_t modelType=1, Int_t reacPlaneCntrl=4,
51            Float_t psiRMean=0.0, Float_t psiRStDev=0.0, Float_t multFacMean=1.0, Float_t multFacStDev=0.05,
52            Float_t ptCutMin = 0.01, Float_t ptCutMax = 3.0, Float_t etaCutMin=(-4.5), Float_t etaCutMax = 4.5, 
53            Float_t phiCutMin=0.0, Float_t phiCutMax=360.0, Int_t irand=87266);
54
55    TMevSim(TMevSim& mevsim);                    // copy constructor
56
57    virtual            ~TMevSim();
58    
59    // Assignment operator
60   
61    virtual TMevSim& operator=(TMevSim& mevsim);
62
63    // Mandatory TGenerator functions
64    
65    virtual void        Initialize();
66
67    virtual void        GenerateEvent();
68
69    virtual Int_t       ImportParticles(TClonesArray *particles, Option_t *option="");
70
71    //Parameters for the generation:
72    
73    virtual void        SetNEvents(Int_t nEvents );
74    virtual Int_t       GetNEvents() const;
75
76    virtual Int_t       GetNPidTypes() const;
77  
78    virtual void        SetModelType(Int_t modelType);
79    virtual Int_t       GetModelType() const;
80
81    virtual void        SetReacPlaneCntrl(Int_t reacPlaneCntrl);
82    virtual Int_t       GetReacPlaneCntrl() const;
83
84    virtual void        SetPsiRParams(Float_t psiRMean,  Float_t psiRStDev);
85    virtual Float_t     GetPsiRMean() const;
86     virtual Float_t     GetPsiRStDev() const;
87
88    virtual void        SetMultFacParams(Float_t multFacMean,  Float_t multFacStDev);
89    virtual Float_t     GetMultFacMean() const;
90    virtual Float_t     GetMultFacStDev() const;
91
92    // Pt and geometry cut
93
94    virtual void        SetPtCutRange(Float_t ptCutMin,  Float_t ptCutMax);
95    virtual Float_t     GetPtCutMin() const;
96    virtual Float_t     GetPtCutMax() const;
97
98    virtual void        SetEtaCutRange(Float_t etaCutMin,  Float_t etaCutMax);
99    virtual Float_t     GetEtaCutMin() const;
100    virtual Float_t     GetEtaCutMax() const;
101
102    virtual void        SetPhiCutRange(Float_t phiCutMin,  Float_t phiCutMax);
103    virtual Float_t     GetPhiCutMin() const;
104    virtual Float_t     GetPhiCutMax() const;
105
106    // StDev
107
108    virtual void        SetNStDevMult(Float_t nStDevMult);
109    virtual Float_t       GetNStDevMult() const;
110
111    virtual void        SetNStDevTemp(Float_t nStDevTemp);
112    virtual Float_t       GetNStDevTemp() const;
113
114    virtual void        SetNStDevSigma(Float_t nStDevSigma);
115    virtual Float_t       GetNStDevSigma() const;
116
117    virtual void        SetNStDevExpVel(Float_t nStDevExpVel);
118    virtual Float_t       GetNStDevExpVel() const;
119
120    virtual void        SetNStDevPSIr(Float_t nStDevPSIr);
121    virtual Float_t       GetNStDevPSIr() const;
122
123    virtual void        SetNStDevVn(Float_t nStDevVn);
124    virtual Float_t       GetNStDevVn() const;
125
126    virtual void        SetNStDevMultFac(Float_t nStDevMultFac);
127    virtual Float_t       GetNStDevMultFac() const;
128
129    // grid
130
131    virtual void        SetNIntegPts(Int_t nIntegPts);
132    virtual Int_t       GetNintegPts() const;
133
134    virtual void        SetNScanPts(Int_t nScanPts);
135    virtual Int_t       GetNScanPts() const;
136
137    // adding particles
138
139    virtual void        AddPartTypeParams(TMevSimPartTypeParams *params);
140    virtual void        SetPartTypeParams(Int_t index, TMevSimPartTypeParams *params);
141    virtual void        GetPartTypeParamsByIndex(Int_t index, TMevSimPartTypeParams *params);
142    virtual void        GetPartTypeParamsByGPid(Int_t gpid, TMevSimPartTypeParams *params);
143
144    // conversion   
145
146    virtual Int_t       PDGFromId(Int_t gpid) const;
147    virtual void        DefineParticles();
148    
149
150    ClassDef(TMevSim,1)  //Interface to MevSim Event Generator
151      
152 };
153
154 #endif
155
156
157
158
159
160