Skip to content
Snippets Groups Projects
readTsaFexOffline.C 3.51 KiB
/* Copyright (C) 2017 Institute for Computer Science, Goethe-Universitaet Frankfurt, Frankfurt
   SPDX-License-Identifier: GPL-3.0-only
   Authors:  Cruz de Jesus Garcia Chavez [committer] */


void readTsaFexOffline(TString inFile =
                         //"data/43_sps2016.tsa"
                       //"/Users/fairbanks/fairbanks/dev/data/tsa/14_debug_spadic1p1.tsa"
                       "/Volumes/fairbanksNAS-1/iri/data/testbeams/2016/sps/118_sps2016.tsa",
                       Bool_t highP = false)
{

  // --- Specify input file name (this is just an example)
  //TString inFile = "spadic_dlm_trigger_2014-11-15_noepoch.tsa";
  //TString inFile1 = "spadic_noise_trigger_2014-11-15_withepoch.tsa";

  // --- Specify number of events to be produced.
  // --- -1 means run until the end of the input file.
  Int_t nEvents = -1;

  // --- Specify output file name (this is just an example)
  TString outFile = inFile;  //"data/test_online.root";
  outFile.ReplaceAll(".tsa", ".root");

  // --- Set log output levels
  FairLogger::GetLogger()->SetLogScreenLevel("INFO");
  FairLogger::GetLogger()->SetLogVerbosityLevel("LOW");

  // --- Set debug level
  gDebug = 0;

  std::cout << std::endl;
  std::cout << ">>> readTsa:  input file is " << inFile << std::endl;
  std::cout << ">>> readTsa: output file is " << outFile << std::endl;

  // ========================================================================
  // ========================================================================

  std::cout << std::endl;
  std::cout << ">>> readTsa: Initialising..." << std::endl;

  // Spadic Unpacker
  //CbmTSUnpackSpadic11OnlineMonitor* spadic_unpacker = new CbmTSUnpackSpadic11OnlineMonitor(highP);
  CbmTSUnpackSpadicOnlineFex* spadic_unpacker = new CbmTSUnpackSpadicOnlineFex(highP);

  // NXyter Unpacker
  CbmTSUnpackNxyter* nxyter_unpacker = new CbmTSUnpackNxyter();

  CbmTSUnpackTrb* trb_unpacker = new CbmTSUnpackTrb();

  // --- Source task
  CbmFlibFileSourceNew* source = new CbmFlibFileSourceNew();
  //source->SetHostName("cbmflib01");
  source->SetFileName(inFile);
  //source->AddFile(inFile1);
  source->AddUnpacker(trb_unpacker, 0xE0);  // RICH + REF
  //source->AddUnpacker(nxyter_unpacker, 0x10);//fhodo or cherenkov or pb glass???
  source->AddUnpacker(nxyter_unpacker, 0xE1);  //HODO 1 + 2
  source->AddUnpacker(spadic_unpacker, 0x40);  // test beam 2014
  //source->AddUnpacker(spadic_unpacker, 0xE0);  // Lab muenster

  // --- Event header
  //  FairEventHeader* event = new CbmTbEvent();
  //  event->SetRunId(260);

  // --- Run
  FairRunOnline* run = new FairRunOnline(source);
  run->SetOutputFile(outFile);
  run->ActivateHttpServer(100);
  run->SetAutoFinish(kFALSE);
  //  run->SetEventHeader(event);

  //  gDebug=2;
  //FairTask* spadicRawBeam = new CbmTrdTimeCorrel();
  //run->AddTask(spadicRawBeam);

  run->Init();


  // --- Start run
  TStopwatch timer;
  timer.Start();
  std::cout << ">>> readTsa: Starting run..." << std::endl;
  run->Run(nEvents, 0);  // run until end of input file
  timer.Stop();

  // --- End-of-run info
  Double_t rtime = timer.RealTime();
  Double_t ctime = timer.CpuTime();
  std::cout << std::endl << std::endl;
  std::cout << ">>> readTsa: Macro finished successfully." << std::endl;
  std::cout << ">>> readTsa: Output file is " << outFile << std::endl;
  std::cout << ">>> readTsa: Real time " << rtime << " s, CPU time " << ctime << " s" << std::endl;
  std::cout << std::endl;

  /// --- Screen output for automatic tests
  std::cout << " Test passed" << std::endl;
  std::cout << " All ok " << std::endl;
}