FairRoot/PandaRoot
Functions
macro/examples/fastsim/runMC.C File Reference

Go to the source code of this file.

Functions

int runMC (TString fname="dsdsj20k_4291.evt", int nEvents=10)
 

Function Documentation

int runMC ( TString  fname = "dsdsj20k_4291.evt",
int  nEvents = 10 
)

Definition at line 3 of file macro/examples/fastsim/runMC.C.

References Bool_t, Cave, ctime, Double_t, Emc, evtGen, fieldPar, fMagField, fRun, gDebug, kParameterMerged, Mvd, nEvents, output, Pipe, PndTpc, primGen, printf(), rootlogon(), rtdb, rtime, PndConstField::SetField(), PndConstField::SetFieldRegion(), PndEmc::SetGeometryFileNameDouble(), PndConstPar::SetParameters(), timer, and TString.

4 {
5  TStopwatch timer;
6  timer.Start();
7  gDebug=0;
8  // Load basic libraries
9  gROOT->LoadMacro("$VMCWORKDIR/gconfig/rootlogon.C");
10  rootlogon();
11 
12  //Int_t nEvents = 2000;
13 
14  FairRunSim *fRun = new FairRunSim();
15 
16  // set the MC version used
17  // ------------------------
18 
19  fRun->SetName("TGeant3");
20  // Choose the Geant Navigation System
21  // fRun->SetGeoModel("G3Native");
22 
23  TString outfilename=fname+".mc.root";
24  TString paramfilename=fname+".param.root";
25 
26  fRun->SetOutputFile(outfilename.Data());
27 
28  // Set Material file Name
29  //-----------------------
30 
31  fRun->SetMaterials("media_pnd.geo");
32 
33 
34  std::cout<< "Materials set" << std::endl;
35 
36 
37  // Create and add detectors
38  //-------------------------
39 
40  FairModule *Cave= new PndCave("CAVE");
41  Cave->SetGeometryFileName("pndcave.geo");
42  fRun->AddModule(Cave);
43 
44  FairModule *Pipe= new PndPipe("PIPE");
45  Pipe->SetGeometryFileName("pipe.geo");
46  //fRun->AddModule(Pipe);
47 
48 
49  //FairModule *Magnet= new PndMagnet("MAGNET");
50  //Magnet->SetGeometryFileName("magnet.geo");
51  //fRun->AddModule(Magnet);
52 
53  FairDetector *PndTpc = new PndTpcDetector("TPC", kTRUE);
54  PndTpc->SetGeometryFileName("tpc.geo");
55  fRun->AddModule(PndTpc);
56 
57  PndEmc *Emc = new PndEmc("EMC",kTRUE);
58  //Emc->SetGeometryFileName("emc_module12345.dat"); // if you want to use old geometry for FwEndCap
59  Emc->SetGeometryFileNameDouble("emc_module1245.dat","emc_module3new.root"); // if you want to use new geometry for FwEndCap
60  fRun->AddModule(Emc);
61 
62  FairDetector *Mvd = new PndMvdDetector("MVD", kTRUE);
63  Mvd->SetGeometryFileName("MVD14.root");
64  fRun->AddModule(Mvd);
65 
66 
67  // Create and Set Event Generator
68  //-------------------------------
69 
70  FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
71  fRun->SetGenerator(primGen);
72 
73  // Urqmd Generator
74 // FairUrqmdGenerator* urqmdGen = new FairUrqmdGenerator("../../input/00-03fm.100ev.f14");
75 // primGen->AddGenerator(urqmdGen);
76 
77  // Particle Generator
78  //FairParticleGenerator* partGen = new FairParticleGenerator(211, 10, 1, 0,3,kTRUE);
79  //primGen->AddGenerator(partGen);
80 
81  // Ion Generator
82  // FairIonGenerator *fIongen= new FairIonGenerator(79, 197,79,1, 0.,0., 25, 0.,0.,-1.);
83  // primGen->AddGenerator(fIongen);
84  // Box Generator
85 
86 
87  FairEvtGenGenerator* evtGen = new FairEvtGenGenerator(fname.Data());//infile.Data());
88  primGen->AddGenerator(evtGen);
89 
90 
91  // Box Generator
92  /*
93  FairBoxGenerator* boxGen = new FairBoxGenerator(3122, 1); // 13 = muon; 1 = multipl.
94  boxGen->SetPRange(0.5,0.5); // GeV/c //setPRange vs setPtRange
95  boxGen->SetPhiRange(35, 35); // Azimuth angle range [degree]
96  boxGen->SetThetaRange(60,60); // Polar angle in lab system range [degree]
97  boxGen->SetXYZ(0., 0., 0.); // mm o cm ??
98  primGen->AddGenerator(boxGen);
99  */
100  //FairPrimaryGenerator* primGen = new FairPrimaryGenerator();
101  //fRun->SetGenerator(primGen);
102 
103  // PndDpmGenerator* dpmGen = new PndDpmGenerator("pgenerators/DpmEvtGen/Background-micro.root");
104  //primGen->AddGenerator(dpmGen);
105 
106  // Field Map Definition
107  // --------------------
108  // 1- Reading the new field map in the old format
109 
110  // FairFieldMap *fMagField= new FairFieldMap("FIELD.v04_pavel.map");
111  // Constant Field
113  fMagField->SetField(0, 0 ,20. ); // values are in kG
114  // MinX=-75, MinY=-40,MinZ=-12 ,MaxX=75, MaxY=40 ,MaxZ=124 ); // values are in cm
115  fMagField->SetFieldRegion(-500, 500,-500, 500, -200, 200);
116 
117  // 2- Reading the new field map in the new format
118 
119 // FairField *fMagField= new FairFieldMapSym3("FieldActive");
120  // Active Shielding
121 
122  fRun->SetField(fMagField);
123 
124  //fRun->SetStoreTraj(kTRUE);
125 
126 
127  fRun->Init();
128 
129 
130  // -Trajectories Visualization (TGeoManager Only )
131  // -----------------------------------------------
132 
133 ;
134  // Set cuts for storing the trajectpries
135 // FairTrajFilter* trajFilter = FairTrajFilter::Instance();
136 // trajFilter->SetStepSizeCut(0.01); // 1 cm
137 // trajFilter->SetVertexCut(-2000., -2000., 4., 2000., 2000., 100.);
138 // trajFilter->SetMomentumCutP(10e-3); // p_lab > 10 MeV
139 // trajFilter->SetEnergyCut(0., 1.02); // 0 < Etot < 1.04 GeV
140 // trajFilter->SetStorePrimaries(kTRUE);
141 // trajFilter->SetStoreSecondaries(kTRUE);
142 
143 
144  // Fill the Parameter containers for this run
145  //-------------------------------------------
146 
147  FairRuntimeDb *rtdb=fRun->GetRuntimeDb();
148  Bool_t kParameterMerged=kTRUE;
149  FairParRootFileIo* output=new FairParRootFileIo(kParameterMerged);
150  output->open(paramfilename.Data());
151  rtdb->setOutput(output);
152 
153  PndConstPar* fieldPar = (PndConstPar*) rtdb->getContainer("PndConstPar");
154  if ( fMagField ) { fieldPar->SetParameters(fMagField); }
155  fieldPar->setInputVersion(fRun->GetRunId(),1);
156  fieldPar->setChanged(kTRUE);
157 
158  rtdb->saveOutput();
159  rtdb->print();
160 
161  // Transport nEvents
162  // -----------------
163 
164 
165  fRun->Run(nEvents);
166 
167  timer.Stop();
168  Double_t rtime = timer.RealTime();
169  Double_t ctime = timer.CpuTime();
170  printf("RealTime=%f seconds, CpuTime=%f seconds\n",rtime,ctime);
171  return 0;
172 }
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
Bool_t kParameterMerged
Definition: sim_emc_apd.C:113
PndEmc * Emc
Definition: sim_emc_apd.C:55
FairDetector * PndTpc
Definition: run_DpmSim.C:46
FairDetector * Mvd
Definition: sim_emc_apd.C:51
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
void SetFieldRegion(Double_t xMin, Double_t xMax, Double_t yMin, Double_t yMax, Double_t zMin, Double_t zMax)
Simulation of EMC.
Definition: PndEmc.h:26
FairPrimaryGenerator * primGen
Definition: sim_emc_apd.C:81
FairRunAna * fRun
Definition: hit_dirc.C:58
PndConstField * fMagField
Definition: runSimHF_ptr.C:154
Double_t
FairModule * Cave
Definition: sim_emc_apd.C:32
void SetField(Double_t bX, Double_t bY, Double_t bZ)
Int_t nEvents
Definition: hit_dirc.C:11
PndMultiFieldPar * fieldPar
Definition: sim_ftof.C:102
TStopwatch timer
Definition: hit_dirc.C:51
void SetParameters(FairField *field)
Definition: PndConstPar.cxx:54
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
gDebug
Definition: sim_emc_apd.C:6
Double_t ctime
Definition: hit_dirc.C:114
FairEvtGenGenerator * evtGen
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
Definition: PndCave.h:8