17 TString dstFileName =
"/home/igor/data.cache/Run9compare/rc_default.run_Top_9555_ev0_p0.root",
18 Int_t nStartEvent = 0,
29 FairLogger::GetLogger()->SetLogScreenLevel(
"info");
41 FairRunAna* fRunAna =
new FairRunAna();
50 Int_t run_period = -1, run_number = -1;
52 fFileSource =
new FairFileSource(inFileName);
59 fFileSource =
new BmnFileSource(inFileName, run_period, run_number);
67 LOG(fatal) <<
"Geometry '" << geometryTag <<
"' not loaded. Error status: " << errStatus << endl;
68 LOG(info) <<
"Geometry with '" << geometryTag <<
"' tag is chosen";
80 int prev_mag_period = run_period, prev_mag_run = run_number;
82 if ((field_voltage == 0) and (prev_mag_run == run_number) and (prev_mag_period == run_period))
83 LOG(fatal) <<
"no any field voltage was found for run " << run_period <<
":" << run_number << endl;
85 LOG(fatal) <<
"no field voltage was found for run " << run_period <<
":" << run_number << endl;
87 Double_t map_voltage = (run_period < 8) ? 55.87 : 112.0;
89 if (field_voltage < 10) {
92 fieldScale = (field_voltage) / map_voltage;
95 if (beam_energy ==
nullptr)
96 LOG(warning) <<
"no beam energy was found for run " << run_period <<
":" << run_number
97 <<
", the field map scale is not corrected";
108 fRunAna->SetField(magField);
120 cout <<
"\n\n|||||||||||||||| EXPERIMENTAL RUN SUMMARY ||||||||||||||||" << endl;
121 cout <<
"||\t\t\t\t\t\t\t||" << endl;
122 cout <<
"||\t\tPeriod:\t\t" << run_period <<
"\t\t\t||" << endl;
123 cout <<
"||\t\tNumber:\t\t" << run_number <<
"\t\t\t||" << endl;
124 cout <<
"||\t\tBeam:\t\t" << beam <<
"\t\t\t||" << endl;
125 cout <<
"||\t\tTarget:\t\t" << targ <<
"\t\t\t||" << endl;
126 cout <<
"||\t\tField scale:\t" << setprecision(4) << fieldScale <<
"\t\t\t||" << endl;
127 cout <<
"||\t\t\t\t\t\t\t||" << endl;
128 cout <<
"||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n" << endl;
132 fRunAna->SetSource(fFileSource);
134 if (dstFileName ==
"")
135 dstFileName =
"bmndst.root";
139 fRunAna->SetSink(
new FairRootFileSink(dstFileName));
140 fRunAna->SetGenerateRunInfo(
false);
153 if (run_period == 8 && isExp) {
155 eventSelector->
SetRunId(run_number);
156 eventSelector->
SetInputFileName(
"$VMCWORKDIR/input/eventSelector_calib_run8.root");
157 fRunAna->AddTask(eventSelector);
164 fRunAna->AddTask(trig);
169 if (run_period >= 8) {
172 fRunAna->AddTask(sibtHM);
177 fRunAna->AddTask(mwpcHP);
180 fRunAna->AddTask(mwpcHM);
189 fRunAna->AddTask(vspHM);
197 fRunAna->AddTask(siliconHM);
205 fRunAna->AddTask(gemHM);
213 fRunAna->AddTask(cscHM);
220 fRunAna->AddTask(tof400HP);
227 fRunAna->AddTask(tof700HP);
240 bool IsGlobalCoordinates =
true;
241 if (run_period >= 8) {
245 fRunAna->AddTask(fhcalReco);
248 fRunAna->AddTask(zdcAna);
254 IsGlobalCoordinates =
true;
257 fRunAna->AddTask(scwallReco);
265 fRunAna->AddTask(hodoReco);
272 fRunAna->AddTask(ndetReco);
279 fRunAna->AddTask(vacReco);
289 innerTrackBranchName =
"StsTrack";
291 innerTrackBranchName =
"StsVector";
292 if (run_period >= 8) {
298 if (run_period > 8) {
304 fRunAna->AddTask(hitConverter);
307 fRunAna->AddTask(kalman);
316 fRunAna->AddTask(stsFindTracks);
322 if (run_period > 8) {
325 fRunAna->AddTask(vf);
330 fRunAna->AddTask(stsMatchTracks);
336 if (run_period >= 8) {
339 fRunAna->AddTask(beamTF);
343 fRunAna->AddTask(mwpcTF);
360 fRunAna->AddTask(findVertex);
364 fRunAna->AddTask(pvMPD);
367 fRunAna->AddTask(combPV);
380 fRunAna->AddTask(glTF);
391 fRunAna->AddTask(mcMatching);
400 if (run_period == 8) {
402 fRunAna->AddTask(dedx);
408 if (run_period < 8) {
410 fRunAna->AddTask(res);
417 fRunAna->AddTask(cclusterizer);
421 fRunAna->AddTask(dst_task);
424 FairRuntimeDb* rtdb = fRunAna->GetRuntimeDb();
425 FairParRootFileIo* parIo1 =
new FairParRootFileIo();
427 parIo1->open(inFileName.Data());
429 rtdb->setFirstInput(parIo1);
434 fRunAna->GetMainTask()->SetVerbose(iVerbose);
439 FairParRootFileIo* parOut =
new FairParRootFileIo(
kTRUE);
442 rtdb->setOutput(parOut);
444 rtdb->getContainer(
"FairGeoParSet")->setDescription(geometryTag.Data());
445 rtdb->writeContainer(rtdb->getContainer(
"FairGeoParSet"), rtdb->getCurrentRun());
451 fRunAna->Run(nStartEvent, nStartEvent + nEvents);
460 cout << endl << endl;
461 cout <<
"Macro finished successfully." << endl;
462 cout <<
"Input file is " + inFileName << endl;
463 cout <<
"Output file is " + dstFileName << endl;
464 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime <<
" s" << endl;