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();
+}