EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FairPrimaryGenerator.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file FairPrimaryGenerator.h
1 
16 #ifndef FAIRPRIMARYGENERATOR_H
17 #define FAIRPRIMARYGENERATOR_H
18 
19 #include "FairGenerator.h"
20 #include "FairLogger.h"
21 
22 #include "TNamed.h"
23 #include "TObjArray.h"
24 #include "TVector3.h"
25 
26 #include <iostream>
27 
28 class TF1;
29 class FairGenericStack;
30 class FairMCEventHeader;
31 //class FairGenerator;
32 
33 class FairPrimaryGenerator : public TNamed
34 
35 {
36 
37  public:
38 
41 
42 
44  FairPrimaryGenerator(const char* name, const char* title="FAIR Generator");
45 
46 
48  virtual ~FairPrimaryGenerator();
49 
51  virtual Bool_t Init();
52 
55  if ( ! fGenList ) {
56  std::cout << "Empty fGenList pointer ! " << std::endl;
57  return;
58  }
59  fGenList->Add(generator);
60  }
61 
62 
70  virtual Bool_t GenerateEvent(FairGenericStack* pStack);
71 
72 
80  virtual void AddTrack(Int_t pdgid, Double_t px, Double_t py, Double_t pz,
81  Double_t vx, Double_t vy, Double_t vz, Int_t parent=-1,Bool_t wanttracking=true,Double_t e=-9e9);
82 
83 
90  void SetBeam(Double_t beamX0, Double_t beamY0,
91  Double_t beamSigmaX, Double_t beamSigmaY);
92 
93 
98  void SetTarget(Double_t targetZ, Double_t targetDz);
99 
106  void SetMultTarget(Int_t nroftargets, Double_t* targetZ, Double_t targetDz);
107 
108 
110  void SmearVertexZ(Bool_t flag) { fSmearVertexZ = flag; };
111  void SmearGausVertexZ(Bool_t flag) { fSmearGausVertexZ = flag; };
112  void SmearVertexXY(Bool_t flag) { fSmearVertexXY = flag; };
113 
114  TObjArray* GetListOfGenerators() { return fGenList;}
115 
116 
118  void SetEvent(FairMCEventHeader* event) { fEvent = event; };
119 
120 
123 
126  void DoTracking(Bool_t doTracking= kTRUE) {fdoTracking=doTracking ;}
127 
129  void SetEventTimeInterval(Double_t min, Double_t max);
130 
132  void SetEventMeanTime(Double_t mean);
133 
135  void SetEventTime(TF1* timeProb);
136 
137  Int_t GetTotPrimary() { return fTotPrim;}
138 
139 
140 
141 
142  protected:
144  Double_t fBeamX0;
146  Double_t fBeamY0;
148  Double_t fBeamSigmaX;
150  Double_t fBeamSigmaY;
152  Double_t* fTargetZ;
153 
154  Int_t fNrTargets;
156  Double_t fTargetDz;
158  TVector3 fVertex;
160  Int_t fNTracks;
169 
170  TObjArray* fGenList;
172  TIterator* fListIter;
173 
175 
176  Bool_t fdoTracking;
177 
178  Double_t fEventTimeMin;
179 
180  Double_t fEventTimeMax;
181 
182  Double_t fEventTime;
183 
184  Double_t fEventMeanTime;
185 
186  TF1* fTimeProb;
187 
189 
191 
192  static Int_t fTotPrim;
193 
196  Int_t fEventNr;
197 
207  void MakeVertex();
208 
209  private:
212 
214 
215 };
216 
217 #endif
218 
219