diff --git a/macro/mvd/qa/mvd_qa4_reco.C b/macro/mvd/qa/mvd_qa4_reco.C index 2b2402669b73e4e89bb7ef29026ccd3af1cf8f2b..991d9cec762a6778459a5dde4d62cb05cabee1ab 100644 --- a/macro/mvd/qa/mvd_qa4_reco.C +++ b/macro/mvd/qa/mvd_qa4_reco.C @@ -43,7 +43,7 @@ void mvd_qa4_reco(const char* setup = "sis100_electron") Int_t iVerbose = 3; FairLogger* logger = FairLogger::GetLogger(); - logger->SetLogScreenLevel("DEBUG4"); + logger->SetLogScreenLevel("INFO"); logger->SetLogVerbosityLevel("LOW"); diff --git a/macro/mvd/qa/mvd_qa4_reco_event.C b/macro/mvd/qa/mvd_qa4_reco_event.C new file mode 100644 index 0000000000000000000000000000000000000000..a19f599813c77673d5cd70e58a1276f92ad359d1 --- /dev/null +++ b/macro/mvd/qa/mvd_qa4_reco_event.C @@ -0,0 +1,168 @@ +/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt + SPDX-License-Identifier: GPL-3.0-only + Authors: Florian [committer] */ + +void mvd_qa4_reco_event(const char* setup = "sis100_electron") +{ + + // ======================================================================== + // Adjust this part according to your requirements + + TString inDir = gSystem->Getenv("VMCWORKDIR"); + + TString outDir = "data/"; + // Input file (MC events) + TString inFile = outDir + "mvd.ev.rawQA.root"; + + // Parameter file name + TString parFile = outDir + "params.root"; + + // Output file + TString outFile = outDir + "mvd.ev.recoQA.root"; + + // MC file + TString traFile = outDir + "mvd.mcQA.root"; + + + // Background file (MC events, for pile-up) + TString bgFile = inFile; + + // Delta file (Au Ions) + TString deltaFile = outDir + "mvd.mcDelta.root"; + + // Number of events to process + Int_t nEvents = 5; + + // Verbosity level (0=quiet, 1=event level, 2=track level, 3=debug) + Int_t iVerbose = 3; + + FairLogger* logger = FairLogger::GetLogger(); + logger->SetLogScreenLevel("INFO"); + logger->SetLogVerbosityLevel("LOW"); + + TString setupFile = inDir + "/geometry/setup/setup_" + setup + ".C"; + TString setupFunct = "setup_"; + setupFunct = setupFunct + setup + "()"; + + gROOT->LoadMacro(setupFile); + gInterpreter->ProcessLine(setupFunct); + + // In general, the following parts need not be touched + // ======================================================================== + + + // ---- Debug option ------------------------------------------------- + gDebug = 0; + // ------------------------------------------------------------------------ + + + // ----- Timer -------------------------------------------------------- + TStopwatch timer; + timer.Start(); + // ------------------------------------------------------------------------ + + // ----- Reconstruction run ------------------------------------------- + FairRunAna* fRun = new FairRunAna(); + + FairFileSource* inputSource = new FairFileSource(inFile); + inputSource->AddFriend(traFile); + // inputSource->AddFriend(rawFile); + + fRun->SetSource(inputSource); + + fRun->SetOutputFile(outFile); + Bool_t hasFairMonitor = Has_Fair_Monitor(); + if (hasFairMonitor) { + FairMonitor::GetMonitor()->EnableMonitor(kTRUE); + } + // ------------------------------------------------------------------------ + + // ----- Mc Data Manager ------------------------------------------------ + CbmMCDataManager* mcManager = new CbmMCDataManager("MCManager", 1); + mcManager->AddFile(traFile); + fRun->AddTask(mcManager); + // ------------------------------------------------------------------------ + + // ----- Raw event building from digis -------------------------------- + FairTask* evBuildRaw = new CbmBuildEventsIdeal(); + fRun->AddTask(evBuildRaw); + + + // ----- MVD Clusterfinder --------------------------------------------- + CbmMvdClusterfinder* mvdCluster = new CbmMvdClusterfinder("MVD Clusterfinder", 0, iVerbose); + mvdCluster->SetMode(ECbmRecoMode::EventByEvent); + fRun->AddTask(mvdCluster); + // ------------------------------------------------------------------------- + + CbmMvdHitfinder* mvd_hit = new CbmMvdHitfinder("MVDFindHits", 0, iVerbose); + mvd_hit->UseClusterfinder(kTRUE); + mvd_hit->SetMode(ECbmRecoMode::EventByEvent); + fRun->AddTask(mvd_hit); + +/* + CbmMatchRecoToMC* match = new CbmMatchRecoToMC(); + fRun->AddTask(match); + + CbmMvdQa* qaTask = new CbmMvdQa("CbmMvdQa"); + qaTask->SetUseHitQa(); + fRun->AddTask(qaTask); +*/ + //---------------------------------------------------------------------------- + // ----- Parameter database ----------------------------------------------- + FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); + FairParRootFileIo* parIo1 = new FairParRootFileIo(); + parIo1->open(parFile.Data()); + + rtdb->setFirstInput(parIo1); + rtdb->setOutput(parIo1); + rtdb->saveOutput(); + rtdb->print(); + // --------------------------------------------------------------------------- + + + // ----- Run initialisation ---------------------------------------------- + fRun->Init(); + // --------------------------------------------------------------------------- + + + // ----- Start run ------------------------------------------------------- + fRun->Run(0, nEvents); + // --------------------------------------------------------------------------- + + + // ----- Finish ---------------------------------------------------------- + timer.Stop(); + Double_t rtime = timer.RealTime(); + Double_t ctime = timer.CpuTime(); + cout << endl << endl; + cout << "Macro finished succesfully." << endl; + cout << "Output file is " << outFile << endl; + cout << "Parameter file is " << parFile << endl; + cout << "Real time " << rtime << " s, CPU time " << ctime << " s" << endl; + cout << endl; + // --------------------------------------------------------------------------- + + if (hasFairMonitor) { + // 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 << "<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">"; + cout << maxMemory; + cout << "</DartMeasurement>" << endl; + + Float_t cpuUsage = ctime / rtime; + cout << "<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">"; + cout << cpuUsage; + cout << "</DartMeasurement>" << endl; + + FairMonitor* tempMon = FairMonitor::GetMonitor(); + tempMon->Print(); + } + // delete run; + + cout << " Test passed" << endl; + cout << " All ok " << endl; + + RemoveGeoManager(); +}