90 TString outFile =
"$VMCWORKDIR/macro/run/srcsim.root",
91 Int_t nStartEvent = 0,
93 Bool_t useRealEffects = kFALSE)
100 FairRunSim* fRun =
new FairRunSim();
105 fRun->SetName(
"TGeant3");
107 fRun->SetName(
"TGeant4");
110 fRun->SetMaterials(
"media.geo");
113 FairModule* cave =
new FairCave(
"CAVE");
114 cave->SetGeometryFileName(
"cave.geo");
115 fRun->AddModule(cave);
117 FairModule* magnet =
new FairMagnet(
"MAGNET");
118 magnet->SetGeometryFileName(
"magnet_modified.root");
119 fRun->AddModule(magnet);
121 FairModule* magnetSP57 =
new FairMagnet(
"MAGNET_SP57");
122 magnetSP57->SetGeometryFileName(
"magnetSP57_1.root");
123 fRun->AddModule(magnetSP57);
127 FairDetector* mwpc =
new BmnMwpc(
"MWPC", kTRUE);
128 mwpc->SetGeometryFileName(
"MWPC_RunSRCSpring2018.root");
129 fRun->AddModule(mwpc);
131 FairDetector* silicon =
new BmnSilicon(
"SILICON", kTRUE);
132 silicon->SetGeometryFileName(
"Silicon_RunSRCSpring2018.root");
133 fRun->AddModule(silicon);
135 FairDetector* sts =
new CbmSts(
"STS", kTRUE);
136 sts->SetGeometryFileName(
"GEMS_RunSRCSpring2018.root");
137 fRun->AddModule(sts);
139 FairDetector* csc =
new BmnCSC(
"CSC", kTRUE);
140 csc->SetGeometryFileName(
"CSC_RunSRCSpring2018.root");
141 fRun->AddModule(csc);
143 FairDetector* tof1 =
new BmnTOF1(
"TOF1", kTRUE);
144 tof1->SetGeometryFileName(
"TOF400_RUN7_SRC_AllignmentZY_v3.root");
145 fRun->AddModule(tof1);
147 FairDetector* tof =
new BmnTOF(
"TOF", kTRUE);
148 tof->SetGeometryFileName(
"tof700_run7_with_support.root");
149 fRun->AddModule(tof);
151 FairDetector* dch =
new BmnDch(
"DCH", kTRUE);
152 dch->SetGeometryFileName(
"DCH_RunSpring2018.root");
153 fRun->AddModule(dch);
156 zdc->SetGeometryFileName(
"ZDC_RunSpring2018.root");
157 fRun->AddModule(zdc);
159 FairDetector* arm =
new BmnArmTrig(
"SRCArmTriggers", kTRUE);
160 arm->SetGeometryFileName(
"SRCArmTriggers_Spring2018.root");
161 fRun->AddModule(arm);
163 FairDetector* bc =
new BmnBC(
"BC", kTRUE);
164 bc->SetGeometryFileName(
"BC_RunSRCSpring2018.root");
168 FairPrimaryGenerator* primGen =
new FairPrimaryGenerator();
169 fRun->SetGenerator(primGen);
173 primGen->SetBeam(0.5, -4.6, 0.0, 0.0);
174 primGen->SetTarget(-647.5, 0.0);
175 primGen->SmearVertexZ(kFALSE);
176 primGen->SmearVertexXY(kFALSE);
185 primGen->AddGenerator(urqmdGen);
196 FairParticleGenerator* partGen =
new FairParticleGenerator(211, 10, 1, 0, 3, 1, 0, 0);
197 primGen->AddGenerator(partGen);
203 FairIonGenerator* fIongen =
new FairIonGenerator(6, 12, 6, 1, 0., 0., 4., 0., 0., -647.);
204 primGen->AddGenerator(fIongen);
210 FairBoxGenerator* boxGen =
new FairBoxGenerator(2212, 10);
211 boxGen->SetPRange(2., 2.);
212 boxGen->SetPhiRange(0, 360);
213 boxGen->SetThetaRange(0., 40.);
214 primGen->AddGenerator(boxGen);
224 primGen->AddGenerator(hsdGen);
239 primGen->AddGenerator(guGen);
254 fRun->SetSink(
new FairRootFileSink(outFile.Data()));
255 fRun->SetIsMT(
false);
258 Double_t fieldScale = 1800. / 900.;
261 fRun->SetField(magField);
263 fRun->SetStoreTraj(kTRUE);
264 fRun->SetRadLenRegister(kFALSE);
271 fRun->AddTask(siliconDigit);
282 fRun->AddTask(gemDigit);
290 fRun->AddTask(cscDigit);
296 FairTrajFilter* trajFilter = FairTrajFilter::Instance();
298 trajFilter->SetStepSizeCut(0.01);
299 trajFilter->SetVertexCut(-200., -200., -150., 200., 200., 1100.);
300 trajFilter->SetMomentumCutP(10e-3);
301 trajFilter->SetEnergyCut(0., 4.);
302 trajFilter->SetStorePrimaries(kTRUE);
303 trajFilter->SetStoreSecondaries(kTRUE);
306 FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
310 fieldPar->setChanged();
311 fieldPar->setInputVersion(fRun->GetRunId(), 1);
312 Bool_t kParameterMerged = kTRUE;
313 FairParRootFileIo* output =
new FairParRootFileIo(kParameterMerged);
316 rtdb->setOutput(output);
329 TString Pdg_table_name =
330 TString::Format(
"%s%s%c%s", gSystem->BaseName(inFile.Data()),
".g", (fRun->GetName())[6],
".pdg_table.dat");
331 (TDatabasePDG::Instance())->WritePDGTable(Pdg_table_name.Data());
335 Double_t rtime = timer.RealTime(), ctime = timer.CpuTime();
336 printf(
"RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime);
337 cout <<
"Macro finished successfully." << endl;