30 TString expFile =
"bmn_run4649_digi.root",
31 TString inFile =
"$VMCWORKDIR/macro/run/Filtered_ArAl_3.2AGeV.root",
33 TString outFile =
"$VMCWORKDIR/macro/run/evetest.root",
34 Int_t nStartEvent = 0,
50 fRun->SetName(
"TGeant3");
52 fRun->SetName(
"TGeant4");
63 FairPrimaryGenerator* primGen =
new FairPrimaryGenerator();
64 fRun->SetGenerator(primGen);
68 primGen->SetBeam(0.0, 0.0, 0.0, 0.0);
69 primGen->SetTarget(0.0, 0.0);
70 primGen->SmearVertexZ(
kFALSE);
71 primGen->SmearVertexXY(
kFALSE);
74 pvg->SetVerbose(fVerbose);
77 switch (generatorName) {
85 primGen->AddGenerator(urqmdGen);
97 FairParticleGenerator* partGen =
new FairParticleGenerator(211, 10, 1, 0, 3, 1, 0, 0);
98 primGen->AddGenerator(partGen);
105 FairIonGenerator* fIongen =
new FairIonGenerator(6, 12, 6, 1, 0., 0., 4.4, 0., 0., -647.);
106 primGen->AddGenerator(fIongen);
113 FairBoxGenerator* boxGen =
114 new FairBoxGenerator(3122, 1);
115 boxGen->SetPRange(2.5, 3.);
116 boxGen->SetPhiRange(0, 360);
117 boxGen->SetThetaRange(5, 15);
118 primGen->AddGenerator(boxGen);
131 primGen->AddGenerator(hsdGen);
149 primGen->AddGenerator(guGen);
154 cout <<
"ERROR: Generator name was not pre-defined: " << generatorName << endl;
164 fRun->SetSink(
new FairRootFileSink(outFile.Data()));
165 fRun->SetIsMT(
false);
171 fRun->SetField(magField);
173 fRun->SetStoreTraj(
kTRUE);
174 fRun->SetRadLenRegister(
kFALSE);
178 checker->SetVerbose(fVerbose);
180 fRun->AddTask(checker);
189 siliconDigit->SetVerbose(fVerbose);
190 fRun->AddTask(siliconDigit);
202 gemDigit->SetVerbose(fVerbose);
203 fRun->AddTask(gemDigit);
211 cscDigit->SetVerbose(fVerbose);
212 fRun->AddTask(cscDigit);
218 FairTrajFilter* trajFilter = FairTrajFilter::Instance();
220 trajFilter->SetStepSizeCut(0.01);
221 trajFilter->SetVertexCut(-200., -200., -150., 200., 200., 1100.);
222 trajFilter->SetMomentumCutP(10e-3);
223 trajFilter->SetEnergyCut(0., 4.);
224 trajFilter->SetStorePrimaries(
kTRUE);
225 trajFilter->SetStoreSecondaries(
kTRUE);
228 FairRuntimeDb* rtdb = fRun->GetRuntimeDb();
232 fieldPar->setChanged();
233 fieldPar->setInputVersion(fRun->GetRunId(), 1);
235 FairParRootFileIo* output =
new FairParRootFileIo(kParameterMerged);
238 rtdb->setOutput(output);
244 Int_t doNEvents = (generatorName ==
QGSM || generatorName ==
BOX) ? INT32_MAX : nEvents;
245 fRun->Run(doNEvents);
251 if ((generatorName ==
QGSM) || (generatorName ==
DQGSM)) {
253 TString::Format(
"%s%s%c%s",
gSystem->BaseName(inFile.Data()),
".g", (fRun->GetName())[6],
".pdg_table.dat");
259 printf(
"RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime);
260 cout <<
"Macro finished successfully." << endl;
void run_sim_filter(TString expFile="bmn_run4649_digi.root", TString inFile="$VMCWORKDIR/macro/run/Filtered_ArAl_3.2AGeV.root", TString outFile="$VMCWORKDIR/macro/run/evetest.root", Int_t nStartEvent=0, Int_t nEvents=10, enumGenerators generatorName=QGSM, Bool_t useRealEffects=kTRUE, Int_t selPDG=3122, Int_t fMinHitsR=4)