void build_events(Int_t nEvents = 1, UInt_t uRunId = 0, TString fileName="", TString outDir="data/") { // ======================================================================== // Adjust this part according to your requirements // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug) Int_t iVerbose = 1; // --- Set log output levels FairLogger::GetLogger(); gLogger->SetLogScreenLevel("INFO"); // gLogger->SetLogScreenLevel("DEBUG"); gLogger->SetLogVerbosityLevel("MEDIUM"); // MC file TString srcDir = gSystem->Getenv("VMCWORKDIR"); // ----- Timer -------------------------------------------------------- TStopwatch timer; timer.Start(); // ------------------------------------------------------------------------ // ----- Analysis run -------------------------------------------------- FairRunAna *fRun= new FairRunAna(); fRun->SetEventHeaderPersistence(kFALSE); FairFileSource* inputSource = new FairFileSource(fileName); fRun->SetSource(inputSource); TString runId = TString::Format("%u", uRunId); TString outFile = outDir + "/events_" + runId + ".root"; FairRootFileSink* outputSink = new FairRootFileSink(outFile); fRun->SetSink(outputSink); // Define output file for FairMonitor histograms // TString monitorFile{outFile}; // monitorFile.ReplaceAll("qa","qa.monitor"); FairMonitor::GetMonitor()->EnableMonitor(kFALSE); // ------------------------------------------------------------------------ CbmMcbm2018EventBuilder* eventBuilder = new CbmMcbm2018EventBuilder(); // eventBuilder->SetEventBuilderAlgo(EventBuilderAlgo::MaximumTimeGap); // eventBuilder->SetMaximumTimeGap(100.); eventBuilder->SetEventBuilderAlgo(EventBuilderAlgo::FixedTimeWindow); eventBuilder->SetFixedTimeWindow(50.); eventBuilder->SetTriggerMinNumberT0(1); eventBuilder->SetTriggerMinNumberSts(0); eventBuilder->SetTriggerMinNumberMuch(0); eventBuilder->SetTriggerMinNumberTof(1); fRun->AddTask(eventBuilder); // ----- Parameter database -------------------------------------------- // FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); // FairParRootFileIo* parIo1 = new FairParRootFileIo(); // parIo1->open(parFile.Data(),"UPDATE"); // rtdb->setFirstInput(parIo1); // ------------------------------------------------------------------------ // ----- Intialise and run -------------------------------------------- fRun->Init(); // rtdb->setOutput(parIo1); // rtdb->saveOutput(); // rtdb->print(); cout << "Starting run" << endl; if ( 0 == nEvents) { fRun->Run(nEvents, 0); // run until end of input file } else { fRun->Run(0, nEvents); // process 2000 Events } // ------------------------------------------------------------------------ // ----- Finish ------------------------------------------------------- timer.Stop(); Double_t rtime = timer.RealTime(); Double_t ctime = timer.CpuTime(); cout << endl << endl; cout << "Macro finished succesfully." << endl; cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl; cout << endl; // ------------------------------------------------------------------------ // Extract the maximal used memory an add is as Dart measurement // This line is filtered by CTest and the value send to CDash FairSystemInfo sysInfo; Float_t maxMemory=sysInfo.GetMaxMemory(); cout << ""; cout << maxMemory; cout << "" << endl; Float_t cpuUsage=ctime/rtime; cout << ""; cout << cpuUsage; cout << "" << endl; FairMonitor* tempMon = FairMonitor::GetMonitor(); tempMon->Print(); // RemoveGeoManager(); cout << " Test passed" << endl; cout << " All ok " << endl; }