100 TString dstFileName =
"$VMCWORKDIR/macro/run/bmndst.root",
101 Int_t nStartEvent = 0,
110 FairLogger::GetLogger()->SetLogScreenLevel(
"info");
121 FairRunAna* fRunAna =
new FairRunAna();
133 Int_t run_period = 8, run_number = -1;
136 fFileSource =
new FairFileSource(inFileName);
140 fFileSource =
new BmnFileSource(inFileName, run_period, run_number);
147 cout <<
"ERROR: could not load geometry '" << setupTag <<
"' from the Geometry Database" << endl;
153 if (pCurrentRun == 0)
156 if (field_voltage == NULL) {
157 cout <<
"ERROR: no field voltage was found for run " << run_period <<
":" << run_number << endl;
160 Double_t map_current = (run_period == 8) ? 112.0 : (run_period == 7) ? 55.87 : 0.0;
161 if (*field_voltage < 10) {
164 fieldScale = (*field_voltage) / map_current;
169 fRunAna->SetField(magField);
181 cout <<
"\n\n|||||||||||||||| EXPERIMENTAL RUN SUMMARY ||||||||||||||||" << endl;
182 cout <<
"||\t\t\t\t\t\t\t||" << endl;
183 cout <<
"||\t\tPeriod:\t\t" << run_period <<
"\t\t\t||" << endl;
184 cout <<
"||\t\tNumber:\t\t" << run_number <<
"\t\t\t||" << endl;
185 cout <<
"||\t\tBeam:\t\t" << beam <<
"\t\t\t||" << endl;
186 cout <<
"||\t\tTarget:\t\t" << targ <<
"\t\t\t||" << endl;
187 cout <<
"||\t\tField scale:\t" << setprecision(4) << fieldScale <<
"\t\t\t||" << endl;
188 cout <<
"||\t\t\t\t\t\t\t||" << endl;
189 cout <<
"||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n" << endl;
190 remove(geoFileName.Data());
193 fRunAna->SetSource(fFileSource);
195 if (dstFileName ==
"")
196 dstFileName =
"bmndst.root";
200 fRunAna->SetSink(
new FairRootFileSink(dstFileName));
201 fRunAna->SetGenerateRunInfo(
false);
216 if (run_period >= 8 && isExp) {
218 eventSelector->
SetRunId(run_number);
219 eventSelector->
SetInputFileName(
"$VMCWORKDIR/input/eventSelector_calib_run8.root");
220 fRunAna->AddTask(eventSelector);
227 fRunAna->AddTask(trig);
232 if (run_period >= 8) {
235 fRunAna->AddTask(sibtHM);
240 fRunAna->AddTask(mwpcHP);
243 fRunAna->AddTask(mwpcHM);
252 fRunAna->AddTask(siliconHM);
260 fRunAna->AddTask(gemHM);
270 fRunAna->AddTask(cscHM);
277 fRunAna->AddTask(tof1HP);
282 BmnTof701HitProducer* tof701HP =
new BmnTof701HitProducer(
"TOF701", !isExp, iVerbose,
kFALSE);
283 tof701HP->SetPeriodRun(run_period, run_number);
284 fRunAna->AddTask(tof701HP);
297 bool IsGlobalCoordinates =
true;
298 if (run_period >= 8) {
302 fRunAna->AddTask(fhcalReco);
305 fRunAna->AddTask(zdcAna);
311 IsGlobalCoordinates =
true;
314 fRunAna->AddTask(scwallReco);
322 fRunAna->AddTask(hodoReco);
327 IsGlobalCoordinates =
true;
330 fRunAna->AddTask(ndetReco);
337 fRunAna->AddTask(vacReco);
344 innerTrackBranchName =
"StsTrack";
346 innerTrackBranchName =
"StsVector";
347 if (run_period >= 8) {
352 fRunAna->AddTask(hitConverter);
355 fRunAna->AddTask(kalman);
360 fRunAna->AddTask(l1);
364 fRunAna->AddTask(stsFindTracks);
369 fRunAna->AddTask(vf);
374 fRunAna->AddTask(stsMatchTracks);
379 fRunAna->AddTask(innerTF);
385 if (run_period >= 8) {
388 fRunAna->AddTask(beamTF);
392 fRunAna->AddTask(mwpcTF);
409 fRunAna->AddTask(findVertex);
413 fRunAna->AddTask(pvMPD);
416 fRunAna->AddTask(combPV);
429 fRunAna->AddTask(glTF);
440 fRunAna->AddTask(mcMatching);
447 fRunAna->AddTask(pid_analyser);
452 if (run_period < 8) {
454 fRunAna->AddTask(res);
461 fRunAna->AddTask(cclusterizer);
465 fRunAna->AddTask(dst_task);
468 FairRuntimeDb* rtdb = fRunAna->GetRuntimeDb();
469 FairParRootFileIo* parIo1 =
new FairParRootFileIo();
470 FairParAsciiFileIo* parIo2 =
new FairParAsciiFileIo();
471 parIo1->open(inFileName.Data());
472 parIo2->open(parFileNameList,
"in");
473 rtdb->setFirstInput(parIo1);
474 rtdb->setSecondInput(parIo2);
478 fRunAna->GetMainTask()->SetVerbose(iVerbose);
483 FairParRootFileIo* parOut =
new FairParRootFileIo(
kTRUE);
486 rtdb->setOutput(parOut);
487 rtdb->writeContainer(rtdb->getContainer(
"FairGeoParSet"), rtdb->getCurrentRun());
493 fRunAna->Run(nStartEvent, nStartEvent + nEvents);
499 delete parFileNameList;
511 cout << endl << endl;
512 cout <<
"Macro finished successfully." << endl;
513 cout <<
"Input file is " + inFileName << endl;
514 cout <<
"Output file is " + dstFileName << endl;
515 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;