FairRoot/PandaRoot
Mrun_sim1_PndFlatGen.C
Go to the documentation of this file.
1 // Macro for running Cbm with Geant3 or Geant4 (M. Al-Turany , D. Bertini)
2 // Modified 22/06/2005 D.Bertini
3 
4 Mrun_sim1_PndFlatGen(Int_t numevents, TString basefile)
5 {
6  TStopwatch timer;
7  timer.Start();
8  gDebug=0;
9  // Load basic libraries
10  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
11  rootlogon();
12 
13  CbmRunSim *fRun = new CbmRunSim();
14 
15  // set the MC version used
16  // ------------------------
17 
18  fRun->SetName("TGeant4");
19  // Choose the Geant Navigation System
20  // fRun->SetGeoModel("G3Native");
21 
22  //fRun->SetOutputFile("testsimu10.root");
23  fRun->SetOutputFile(basefile);
24 
25 
26  // Set Material file Name
27  //-----------------------
28 
29  fRun->SetMaterials("media_pnd.geo");
30 
31  // Create and add detectors
32  //-------------------------
33 
34  CbmModule *Cave= new PndCave("CAVE");
35  Cave->SetGeometryFileName("pndcave.geo");
36  fRun->AddModule(Cave);
37 
38  CbmModule *Magnet= new PndMagnet("MAGNET");
39  Magnet->SetGeometryFileName("FullSolenoid.root");
40  fRun->AddModule(Magnet);
41 
42  CbmModule *Dipole= new PndMagnet("MAGNET");
43  Dipole->SetGeometryFileName("dipole.geo");
44  fRun->AddModule(Dipole);
45 
46 
47  CbmModule *Pipe= new PndPipe("PIPE");
48  //Pipe->SetGeometryFileName("pipebeamtarget.geo");
49  fRun->AddModule(Pipe);
50 
51  /*
52  CbmDetector *Stt = new CbmStt("STT",kTRUE);
53  Stt->SetGeometryFileName("stt24.geo"); // 14 = 1 solo 2layer pablo01.geo 3 layers stt24
54  fRun->AddModule(Stt);
55  */
56  /*
57  CbmDetector *Stt= new CbmStt("STT", kTRUE);
58  Stt->SetGeometryFileName("straws_axial.geo");
59  fRun->AddModule(Stt);
60  */
61 /*
62  CbmDetector *Stt= new PndStt("STT", kTRUE);
63  Stt->SetGeometryFileName("straws_skewed_blocks_35cm.geo");
64  fRun->AddModule(Stt);
65 */
66 
67  CbmDetector *Tpc = new PndTpcDetector("TPC", kTRUE);
68  Tpc->SetGeometryFileName("tpc.geo");
69  fRun->AddModule(Tpc);
70 
71  CbmDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
72  //Mvd->SetGeometryFileName("MVD_v1.0_woPassiveTraps.root");
73  Mvd->SetGeometryFileName("MVD_v1_2addDisks.root");
74 
75  fRun->AddModule(Mvd);
76 
77  PndEmc *Emc = new PndEmc("EMC",kTRUE);
78  Emc->SetGeometryFileNameDouble("emc_module1245.dat","emc_module3new.root"); // if you want to use new geometry for FwEndCap
79  fRun->AddModule(Emc);
80 
81  CbmDetector *Tof = new PndTof("TOF",kTRUE);
82  Tof->SetGeometryFileName("tofbarrel.geo");
83  fRun->AddModule(Tof);
84 
85  CbmDetector *Drc = new PndDrc("DIRC", kTRUE);
86  Drc->SetGeometryFileName("dirc.geo");
87  fRun->AddModule(Drc);
88 
89 /*
90  CbmDetector *Muo = new PndMdt("MDT",kTRUE);
91  Muo->SetGeometryFileName("muopars.root");
92  fRun->AddModule(Muo);
93 */
94 
95  CbmDetector *Dch = new PndDchDetector("DCH", kTRUE);
96  Dch->SetGeometryFileName("dch.root");
97  fRun->AddModule(Dch);
98 
99  // Create and Set Event Generator
100  //-------------------------------
101 
102  CbmPrimaryGenerator* primGen = new CbmPrimaryGenerator();
103  fRun->SetGenerator(primGen);
104 
105  PndFixStepParticleGun pndFlatGen;
106 pndFlatGen.SetPDGType(211);
107 //pndFlatGen.SetMultiplicity(10);
108 pndFlatGen.SetPRange(1, 1, 1);
109 pndFlatGen.SetPhiRange(0, 359.8, 0.1);
110 pndFlatGen.SetThetaRange(20, 20, 1);
111 
112 primGen->AddGenerator(&pndFlatGen);
113 
114 
115 /*
116  //EvtGen Generator
117  CbmEvtGenGenerator* evtGen = new
118  //CbmEvtGenGenerator("/home/ralfk/Pandaroot/pandaroot/macro/mvd/output.evt");
119  //CbmEvtGenGenerator("/private/mertens/fairsoft/cbmsoft/pandaroot/pgenerators/EvtGen/lambdalambdabar_15gev_100k.evt");
120  CbmEvtGenGenerator(eventfile);
121  primGen->AddGenerator(evtGen);
122 */
123 
124  /* // Box Generator
125  CbmBoxGenerator* boxGen = new CbmBoxGenerator(13, 200); // 13 = muon; 1 = multipl.
126  // boxGen->SetPRange(1.,1.1); // GeV/c
127  boxGen->SetPtRange(1.,1.); // GeV/c
128  boxGen->SetPhiRange(0., 360.); // Azimuth angle range [degree]
129  boxGen->SetThetaRange(0., 90.); // Polar angle in lab system range [degree]
130  boxGen->SetXYZ(0., 0., 0.); // mm o cm ??
131  primGen->AddGenerator(boxGen);
132  */
133  /*
134  // proton 2212 pi+ 211 pi- -211
135  Double_t randx, randy;
136  for (Int_t n =0; n<10; n++){
137  randx= gRandom->Gaus(0,1);
138  randy= gRandom->Gaus(0,1);
139  CbmParticleGenerator* partGen = new CbmParticleGenerator(2212, 1, 0.3*randx, 0.3*randy, 0.3);
140  primGen->AddGenerator(partGen);
141  }
142  */
143 
144 
145  // Ion Generator
146  //CbmIonGenerator *fIongen= new CbmIonGenerator(79, 197,79,1, 0.,0., 25, 0.,0.,-1.);
147  // primGen->AddGenerator(fIongen);
148 
149 
150  //
151  fRun->SetStoreTraj(kFALSE);
152 
153  PndMultiField *fField= new PndMultiField("FULL");
154  fRun->SetField(fField);
155 
156  fRun->Init();
157 /*
158  // -Trajectories Visualization
159  // ----------------------------
160  CbmTrajFilter* trajFilter = CbmTrajFilter::Instance();
161  // Set cuts for storing the trajectpries
162  trajFilter->SetStepSizeCut(0.01); // 1 cm
163  // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
164  // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
165  // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
166  trajFilter->SetStorePrimaries(kTRUE);
167  trajFilter->SetStoreSecondaries(kTRUE);
168 */
169  //
170  // // Fill the Parameter containers for this run
171  // //-------------------------------------------
172  //
173  CbmRuntimeDb *rtdb=fRun->GetRuntimeDb();
174  Bool_t kParameterMerged=kTRUE;
175 
176  CbmParRootFileIo* output=new CbmParRootFileIo(kParameterMerged);
177  output->open("testparams.root");
178  rtdb->setOutput(output);
179  rtdb->saveOutput();
180  rtdb->print();
181  // Transport nEvents
182  // -----------------1
183 
184  Int_t nEvents = numevents;
185  fRun->Run(nEvents);
186 
187  timer.Stop();
188 
189  Double_t rtime = timer.RealTime();
190  Double_t ctime = timer.CpuTime();
191  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
192 
193  cout << " Test passed" << endl;
194  cout << " All ok " << endl;
195  exit(0);
196 
197 }
198 
PndDrc * Drc
Definition: sim_emc_apd.C:75
PndMultiField * fField
Definition: sim_emc_apd.C:97
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
void SetPhiRange(Double32_t phimin=0, Double32_t phimax=360, Double32_t phistep=1)
exit(0)
void SetThetaRange(Double32_t thetamin=0, Double32_t thetamax=90, Double32_t thetastep=1)
PndEmc * Emc
Definition: sim_emc_apd.C:55
FairDetector * Dch
Definition: runJohan.C:66
void SetPRange(Double32_t pmin=0, Double32_t pmax=10, Double32_t pstep=1)
FairDetector * Mvd
Definition: sim_emc_apd.C:51
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
Mrun_sim1_PndFlatGen(Int_t numevents, TString basefile)
Double_t
FairModule * Dipole
Definition: sim_emc_apd.C:40
FairModule * Cave
Definition: sim_emc_apd.C:32
Definition: PndDrc.h:31
Int_t nEvents
Definition: hit_dirc.C:11
TStopwatch timer
Definition: hit_dirc.C:51
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
Double_t ctime
Definition: hit_dirc.C:114
FairDetector * Tof
Definition: sim_emc_apd.C:63
FairDetector * Tpc
virtual void SetGeometryFileNameDouble(TString fname, TString fname2, Int_t fwbwchoice=0, TString geoVer="0")
Definition: PndEmc.cxx:1096
FairModule * Pipe
Definition: sim_emc_apd.C:44
Double_t rtime
Definition: hit_dirc.C:113
FairModule * Magnet
Definition: sim_emc_apd.C:36
Definition: PndCave.h:8