FairRoot/PandaRoot
run_fast.C
Go to the documentation of this file.
1 
4 run_fast(Int_t nEvents = 1000 )
5 {
6  TString BaseDir = gSystem->Getenv("VMCWORKDIR");
7 
8  //-----User Settings:-----------------------------------------------
9  TString OutputFile ="sim_fast.root";
10  gDebug = 0;
11 
12  // choose your event generator
13  Bool_t UseEvtGen = kTRUE;
14  Bool_t UseDpm = kFALSE;
15  Bool_t UseFtf = kFALSE;
16  Bool_t UseBoxGenerator = kFALSE;
17 
18  TString EvtInput = BaseDir + "/input/psi2s_jpsi2pi_1k.evt"; // Input EvtGen
19 
20  Double_t MomDpm = 7.24; // pbar momentum for DPM generator; matches psi(2S) energy
21 
22  Double_t MomMin = 0.5; // minimum momentum for box generator
23  Double_t MomMax = 2.0; // maximum " "
24 
25  TStopwatch timer;
26  timer.Start();
27  gDebug=0;
28 
29  // Create the Simulation run manager--------------------------------
30  FairRunSim *fRun = new FairRunSim();
31  fRun->SetOutputFile(OutputFile.Data());
32 
33  // Create and Set Event Generator
34  //-------------------------------
35  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
36  fRun->SetGenerator(primGen);
37  fRun->SetName("TGeant3");
38 
39  if(UseBoxGenerator){ // Box Generator
40  FairBoxGenerator* boxGen = new FairBoxGenerator(211, 5); // 211 = pion; 1 = multipl.
41  boxGen->SetPtRange(MomMin,MomMax); // GeV/c
42  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
43  boxGen->SetThetaRange(0., 90.); // Polar angle in lab system range [degree]
44  boxGen->SetXYZ(0., 0., 0.); // mm o cm ??
45  primGen->AddGenerator(boxGen);
46  }
47  if(UseDpm){
48  PndDpmDirect *Dpm= new PndDpmDirect(MomDpm,0);
49  primGen->AddGenerator(Dpm);
50  }
51  if(UseFtf){
52  // TString macfile = gSystem->Getenv("VMCWORKDIR");
53  // macfile += "/pgenerators/FtfEvtGen/PbarP.mac";
54  // PndFtfDirect *Ftf = new PndFtfDirect(macfile.Data());
55  PndFtfDirect *Ftf = new PndFtfDirect("anti_proton", "G4_H", 1, "ftfp", MomDpm, 123456);
56  primGen->AddGenerator(Ftf);
57  }
58  if(UseEvtGen){
59  FairEvtGenGenerator* evtGen = new FairEvtGenGenerator(EvtInput.Data());
60  primGen->AddGenerator(evtGen);
61  }
62 
63  // ------------- switch off the transport of particles
64  primGen->DoTracking(kFALSE);
65 
66 
67  //---------------------Create and Set the Field(s)----------
68  PndMultiField *fField= new PndMultiField("FULL");
69  fRun->SetField(fField);
70 
71  //-------- Setup the Fast Simulation Task --------------
72  //-------------------------------------------------------
73  PndFastSim* fastSim = new PndFastSim();
74  fastSim->SetVerbosity(0);
75  fastSim->AddDetector("CmpDet");
76  fastSim->EnablePropagation();
77 
78  fRun->AddTask(fastSim);
79 
80 
81  //------------------------- Initialize the RUN -----------------
82  fRun->Init();
83  //------------------------- Run the Simulation -----------------
84  fRun->Run(nEvents);
85  //------------------------Print some info and exit----------------
86  timer.Stop();
87 
88  Double_t rtime = timer.RealTime();
89  Double_t ctime = timer.CpuTime();
90  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
91 }
92 
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
bool AddDetector(std::string name, std::string params="")
Definition: PndFastSim.cxx:313
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
Double_t
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
run_fast(Int_t nEvents=1000)
Definition: run_fast.C:4
gDebug
Definition: sim_emc_apd.C:6
Double_t ctime
Definition: hit_dirc.C:114
FairBoxGenerator * boxGen
Definition: sim_emc_apd.C:85
void SetVerbosity(int vb)
Definition: PndFastSim.h:59
FairEvtGenGenerator * evtGen
Double_t rtime
Definition: hit_dirc.C:113
void EnablePropagation(bool propagate=true, bool tostartvtx=true, bool usecovmatrix=true, double tolerance=0.0)
Definition: PndFastSim.cxx:303