20 TString dstFileName =
"$VMCWORKDIR/macro/run/bmndst.root",
21 Int_t nStartEvent = 0,
31 FairLogger::GetLogger()->SetLogScreenLevel(
"info");
48 FairRunAna* fRunAna =
new FairRunAna();
58 Int_t run_period = 9, run_number = 9865;
64 bool srcInitResult = fFileSource->Init();
66 cout <<
"ERROR: Online digi source init failed!" << endl;
74 fFileSource =
new FairFileSource(inputFileName);
79 fFileSource =
new BmnFileSource(inFileName, run_period, run_number);
85 cout <<
"ERROR: Geometry not loaded. Error status " << errStatus << endl;
98 int prev_mag_period = run_period, prev_mag_run = run_number;
100 if ((field_voltage == 0) and (prev_mag_run == run_number) and (prev_mag_period == run_period)) {
101 cout <<
"ERROR: no any field voltage was found for run " << run_period <<
":" << run_number << endl;
105 cout <<
"ERROR: no field voltage was found for run " << run_period <<
":" << run_number << endl;
109 Double_t map_voltage = (run_period < 8) ? 55.87 : 112.0;
110 if (field_voltage < 10) {
113 fieldScale = (field_voltage) / map_voltage;
122 fRunAna->SetField(magField);
134 cout <<
"\n\n|||||||||||||||| EXPERIMENTAL RUN SUMMARY ||||||||||||||||" << endl;
135 cout <<
"||\t\t\t\t\t\t\t||" << endl;
136 cout <<
"||\t\tPeriod:\t\t" << run_period <<
"\t\t\t||" << endl;
137 cout <<
"||\t\tNumber:\t\t" << run_number <<
"\t\t\t||" << endl;
138 cout <<
"||\t\tBeam:\t\t" << beam <<
"\t\t\t||" << endl;
139 cout <<
"||\t\tTarget:\t\t" << targ <<
"\t\t\t||" << endl;
140 cout <<
"||\t\tField scale:\t" << setprecision(4) << fieldScale <<
"\t\t\t||" << endl;
141 cout <<
"||\t\t\t\t\t\t\t||" << endl;
142 cout <<
"||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n" << endl;
144 remove(geoFileName.Data());
148 fRunAna->SetSource(fFileSource);
155 fRunAna->SetSink(
new FairRootFileSink(bmndstFileName));
161 fRunAna->SetGenerateRunInfo(
false);
183 fRunAna->AddTask(trig);
188 if (run_period >= 8) {
191 fRunAna->AddTask(sibtHM);
196 fRunAna->AddTask(mwpcHP);
199 fRunAna->AddTask(mwpcHM);
208 fRunAna->AddTask(vspHM);
216 fRunAna->AddTask(siliconHM);
224 fRunAna->AddTask(gemHM);
234 fRunAna->AddTask(cscHM);
241 fRunAna->AddTask(tof400HP);
248 fRunAna->AddTask(tof700HP);
261 bool IsGlobalCoordinates =
true;
262 if (run_period >= 8) {
266 fRunAna->AddTask(fhcalReco);
269 fRunAna->AddTask(zdcAna);
275 IsGlobalCoordinates =
true;
278 fRunAna->AddTask(scwallReco);
287 fRunAna->AddTask(hodoReco);
292 IsGlobalCoordinates =
true;
295 fRunAna->AddTask(ndetReco);
302 fRunAna->AddTask(vacReco);
312 innerTrackBranchName =
"StsTrack";
314 innerTrackBranchName =
"StsVector";
315 if (run_period >= 8) {
321 if (run_period > 8) {
327 fRunAna->AddTask(hitConverter);
330 fRunAna->AddTask(kalman);
339 fRunAna->AddTask(stsFindTracks);
346 fRunAna->AddTask(vf);
351 fRunAna->AddTask(stsMatchTracks);
356 fRunAna->AddTask(innerTF);
362 if (run_period >= 8) {
365 fRunAna->AddTask(beamTF);
369 fRunAna->AddTask(mwpcTF);
386 fRunAna->AddTask(findVertex);
390 fRunAna->AddTask(pvMPD);
393 fRunAna->AddTask(combPV);
406 fRunAna->AddTask(glTF);
417 fRunAna->AddTask(mcMatching);
424 fRunAna->AddTask(pid_analyser);
442 fRunAna->AddTask(dst_task);
446 FairRuntimeDb* rtdb = fRunAna->GetRuntimeDb();
447 FairParRootFileIo* parIo1 =
new FairParRootFileIo();
448 FairParAsciiFileIo* parIo2 =
new FairParAsciiFileIo();
449 parIo1->open(inFileName.Data());
450 parIo2->open(parFileNameList,
"in");
451 rtdb->setFirstInput(parIo1);
452 rtdb->setSecondInput(parIo2);
457 fRunAna->GetMainTask()->SetVerbose(iVerbose);
459 cout <<
"Starting run" << endl;
461 fRunAna->Run(-1, -1);
463 fRunAna->Run(nStartEvent, nStartEvent + nEvents);
473 cout << endl << endl;
474 cout <<
"Macro finished successfully." << endl;
475 cout <<
"Input file is " + inFileName << endl;
476 cout <<
"Output file is " + dstFileName << endl;
477 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;