Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • le.koch/cbmroot
  • patrick.pfistner_AT_kit.edu/cbmroot
  • lena.rossel_AT_stud.uni-frankfurt.de/cbmroot
  • i.deppner/cbmroot
  • fweig/cbmroot
  • karpushkin_AT_inr.ru/cbmroot
  • v.akishina/cbmroot
  • rishat.sultanov_AT_cern.ch/cbmroot
  • l_fabe01_AT_uni-muenster.de/cbmroot
  • pwg-c2f/cbmroot
  • j.decuveland/cbmroot
  • a.toia/cbmroot
  • i.vassiliev/cbmroot
  • n.herrmann/cbmroot
  • o.lubynets/cbmroot
  • se.gorbunov/cbmroot
  • cornelius.riesen_AT_physik.uni-giessen.de/cbmroot
  • zhangqn17_AT_mails.tsinghua.edu.cn/cbmroot
  • bartosz.sobol/cbmroot
  • ajit.kumar/cbmroot
  • computing/cbmroot
  • a.agarwal_AT_vecc.gov.in/cbmroot
  • osingh/cbmroot
  • wielanek_AT_if.pw.edu.pl/cbmroot
  • malgorzata.karabowicz.stud_AT_pw.edu.pl/cbmroot
  • m.shiroya/cbmroot
  • s.roy/cbmroot
  • p.-a.loizeau/cbmroot
  • a.weber/cbmroot
  • ma.beyer/cbmroot
  • d.klein/cbmroot
  • d.smith/cbmroot
  • mvdsoft/cbmroot
  • d.spicker/cbmroot
  • y.h.leung/cbmroot
  • aksharma/cbmroot
  • m.deveaux/cbmroot
  • mkunold/cbmroot
  • h.darwish/cbmroot
  • pk.sharma_AT_vecc.gov.in/cbmroot
  • f_fido01_AT_uni-muenster.de/cbmroot
  • g.kozlov/cbmroot
  • d.emschermann/cbmroot
  • evgeny.lavrik/cbmroot
  • v.friese/cbmroot
  • f.uhlig/cbmroot
  • ebechtel_AT_ikf.uni-frankfurt.de/cbmroot
  • a.senger/cbmroot
  • praisig/cbmroot
  • s.lebedev/cbmroot
  • redelbach_AT_compeng.uni-frankfurt.de/cbmroot
  • p.subramani/cbmroot
  • a_meye37_AT_uni-muenster.de/cbmroot
  • om/cbmroot
  • o.golosov/cbmroot
  • l.chlad/cbmroot
  • a.bercuci/cbmroot
  • d.ramirez/cbmroot
  • v.singhal/cbmroot
  • h.schiller/cbmroot
  • apuntke/cbmroot
  • f.zorn/cbmroot
  • rubio_AT_physi.uni-heidelberg.de/cbmroot
  • p.chudoba/cbmroot
  • apuntke/mcbmroot
  • r.karabowicz/cbmroot
66 results
Show changes
Showing
with 281 additions and 382 deletions
...@@ -49,7 +49,7 @@ protected: ...@@ -49,7 +49,7 @@ protected:
private: private:
/// Constants /// Constants
static constexpr std::uint16_t fkFlesBmon = static_cast<std::uint16_t>(fles::SubsystemIdentifier::T0); static constexpr std::uint16_t fkFlesBmon = static_cast<std::uint16_t>(fles::Subsystem::BMON);
/// Control flags /// Control flags
...@@ -223,10 +223,10 @@ private: ...@@ -223,10 +223,10 @@ private:
std::clock_t cpuendtime = std::clock(); std::clock_t cpuendtime = std::clock();
auto wallendtime = std::chrono::high_resolution_clock::now(); auto wallendtime = std::chrono::high_resolution_clock::now();
// Cpu time in [µs] // Cpu time in [mus]
auto cputime = 1e6 * (cpuendtime - cpustarttime) / CLOCKS_PER_SEC; auto cputime = 1e6 * (cpuendtime - cpustarttime) / CLOCKS_PER_SEC;
algo->AddCpuTime(cputime); algo->AddCpuTime(cputime);
// Real time in [µs] // Real time in [mus]
auto walltime = std::chrono::duration<double, std::micro>(wallendtime - wallstarttime).count(); auto walltime = std::chrono::duration<double, std::micro>(wallendtime - wallstarttime).count();
algo->AddWallTime(walltime); algo->AddWallTime(walltime);
...@@ -234,7 +234,7 @@ private: ...@@ -234,7 +234,7 @@ private:
// Check some numbers from this timeslice // Check some numbers from this timeslice
size_t nDigis = digivec.size(); size_t nDigis = digivec.size();
LOG(debug) << "Component " << icomp << " connected to config " << config->GetName() << " n-Digis " << nDigis LOG(debug) << "Component " << icomp << " connected to config " << config->GetName() << " n-Digis " << nDigis
<< " processed in walltime(cputime) = " << walltime << "(" << cputime << cputime << ") µs" << " processed in walltime(cputime) = " << walltime << "(" << cputime << cputime << ") micro s"
<< "this timeslice."; << "this timeslice.";
if (fDoPerfProf) { if (fDoPerfProf) {
......
...@@ -336,7 +336,7 @@ try { ...@@ -336,7 +336,7 @@ try {
/* clang-format on */ /* clang-format on */
/// Create input vectors /// Create input vectors
fvDigiT0 = new std::vector<CbmTofDigi>(1000000); fvDigiBmon = new std::vector<CbmBmonDigi>(1000000);
fvDigiSts = new std::vector<CbmStsDigi>(1000000); fvDigiSts = new std::vector<CbmStsDigi>(1000000);
fvDigiMuch = new std::vector<CbmMuchDigi>(1000000); fvDigiMuch = new std::vector<CbmMuchDigi>(1000000);
fvDigiTrd = new std::vector<CbmTrdDigi>(1000000); fvDigiTrd = new std::vector<CbmTrdDigi>(1000000);
...@@ -347,7 +347,7 @@ try { ...@@ -347,7 +347,7 @@ try {
fCbmTsEventHeader = new CbmTsEventHeader(); fCbmTsEventHeader = new CbmTsEventHeader();
/// Digis storage /// Digis storage
fpAlgo->SetT0Digis(fvDigiT0); fpAlgo->SetDigis(fvDigiBmon);
fpAlgo->SetDigis(fvDigiSts); fpAlgo->SetDigis(fvDigiSts);
fpAlgo->SetDigis(fvDigiMuch); fpAlgo->SetDigis(fvDigiMuch);
fpAlgo->SetDigis(fvDigiTrd); fpAlgo->SetDigis(fvDigiTrd);
...@@ -399,7 +399,7 @@ RawEventBuilderDetector CbmDeviceBuildDigiEvents::GetDetectorBuilderCfg(std::str ...@@ -399,7 +399,7 @@ RawEventBuilderDetector CbmDeviceBuildDigiEvents::GetDetectorBuilderCfg(std::str
{ {
/// FIXME: Disable clang formatting for now as it corrupts all alignment /// FIXME: Disable clang formatting for now as it corrupts all alignment
/* clang-format off */ /* clang-format off */
RawEventBuilderDetector cfgDet = ("kT0" == detName ? kRawEventBuilderDetT0 RawEventBuilderDetector cfgDet = ("kBmon" == detName ? kRawEventBuilderDetBmon
: ("kSts" == detName ? kRawEventBuilderDetSts : ("kSts" == detName ? kRawEventBuilderDetSts
: ("kMuch" == detName ? kRawEventBuilderDetMuch : ("kMuch" == detName ? kRawEventBuilderDetMuch
: ("kTrd" == detName ? kRawEventBuilderDetTrd : ("kTrd" == detName ? kRawEventBuilderDetTrd
...@@ -417,7 +417,7 @@ ECbmModuleId CbmDeviceBuildDigiEvents::GetDetectorId(std::string detName) ...@@ -417,7 +417,7 @@ ECbmModuleId CbmDeviceBuildDigiEvents::GetDetectorId(std::string detName)
{ {
/// FIXME: Disable clang formatting for now as it corrupts all alignment /// FIXME: Disable clang formatting for now as it corrupts all alignment
/* clang-format off */ /* clang-format off */
ECbmModuleId detId = ("kT0" == detName ? ECbmModuleId::kT0 ECbmModuleId detId = ("kBmon" == detName ? ECbmModuleId::kBmon
: ("kSts" == detName ? ECbmModuleId::kSts : ("kSts" == detName ? ECbmModuleId::kSts
: ("kMuch" == detName ? ECbmModuleId::kMuch : ("kMuch" == detName ? ECbmModuleId::kMuch
: ("kTrd" == detName ? ECbmModuleId::kTrd : ("kTrd" == detName ? ECbmModuleId::kTrd
...@@ -492,12 +492,12 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -492,12 +492,12 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/)
RootSerializer().Deserialize(*parts.At(uPartIdx), fCbmTsEventHeader); RootSerializer().Deserialize(*parts.At(uPartIdx), fCbmTsEventHeader);
++uPartIdx; ++uPartIdx;
/// T0 /// Bmon
if (0 < (parts.At(uPartIdx))->GetSize()) { if (0 < (parts.At(uPartIdx))->GetSize()) {
std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrBmon(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issT0(msgStrT0); std::istringstream issBmon(msgStrBmon);
boost::archive::binary_iarchive inputArchiveT0(issT0); boost::archive::binary_iarchive inputArchiveBmon(issBmon);
inputArchiveT0 >> *fvDigiT0; inputArchiveBmon >> *fvDigiBmon;
} }
++uPartIdx; ++uPartIdx;
...@@ -528,7 +528,7 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -528,7 +528,7 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/)
} }
++uPartIdx; ++uPartIdx;
/// T0F /// BmonF
if (0 < (parts.At(uPartIdx))->GetSize()) { if (0 < (parts.At(uPartIdx))->GetSize()) {
std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issTof(msgStrTof); std::istringstream issTof(msgStrTof);
...@@ -562,7 +562,7 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -562,7 +562,7 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/)
TimesliceMetaData(std::move(*fTsMetaData)); TimesliceMetaData(std::move(*fTsMetaData));
++uPartIdx; ++uPartIdx;
LOG(debug) << "T0 Vector size: " << fvDigiT0->size(); LOG(debug) << "Bmon Vector size: " << fvDigiBmon->size();
LOG(debug) << "STS Vector size: " << fvDigiSts->size(); LOG(debug) << "STS Vector size: " << fvDigiSts->size();
LOG(debug) << "MUCH Vector size: " << fvDigiMuch->size(); LOG(debug) << "MUCH Vector size: " << fvDigiMuch->size();
LOG(debug) << "TRD Vector size: " << fvDigiTrd->size(); LOG(debug) << "TRD Vector size: " << fvDigiTrd->size();
...@@ -592,7 +592,7 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -592,7 +592,7 @@ bool CbmDeviceBuildDigiEvents::HandleData(FairMQParts& parts, int /*index*/)
fTimeSliceMetaDataArray->Clear(); fTimeSliceMetaDataArray->Clear();
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
...@@ -698,13 +698,14 @@ bool CbmDeviceBuildDigiEvents::SendDigiEvents(FairMQParts& partsIn) ...@@ -698,13 +698,14 @@ bool CbmDeviceBuildDigiEvents::SendDigiEvents(FairMQParts& partsIn)
/// for each detector, find the data in the Digi vectors and copy them /// for each detector, find the data in the Digi vectors and copy them
/// TODO: Template + loop on list of data types? /// TODO: Template + loop on list of data types?
/// ==> T0 /// ==> Bmon
uint32_t uNbDigis = (0 < event->GetNofData(ECbmDataType::kT0Digi) ? event->GetNofData(ECbmDataType::kT0Digi) : 0); uint32_t uNbDigis =
(0 < event->GetNofData(ECbmDataType::kBmonDigi) ? event->GetNofData(ECbmDataType::kBmonDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
auto startIt = fvDigiT0->begin() + event->GetIndex(ECbmDataType::kT0Digi, 0); auto startIt = fvDigiBmon->begin() + event->GetIndex(ECbmDataType::kBmonDigi, 0);
auto stopIt = fvDigiT0->begin() + event->GetIndex(ECbmDataType::kT0Digi, uNbDigis - 1); auto stopIt = fvDigiBmon->begin() + event->GetIndex(ECbmDataType::kBmonDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fT0.fDigis.assign(startIt, stopIt); selEvent.fData.fBmon.fDigis.assign(startIt, stopIt);
} }
/// ==> STS /// ==> STS
...@@ -877,7 +878,7 @@ CbmDeviceBuildDigiEvents::~CbmDeviceBuildDigiEvents() ...@@ -877,7 +878,7 @@ CbmDeviceBuildDigiEvents::~CbmDeviceBuildDigiEvents()
if (fCbmTsEventHeader) delete fCbmTsEventHeader; if (fCbmTsEventHeader) delete fCbmTsEventHeader;
/// Clear vectors /// Clear vectors
if (fvDigiT0) fvDigiT0->clear(); if (fvDigiBmon) fvDigiBmon->clear();
if (fvDigiSts) fvDigiSts->clear(); if (fvDigiSts) fvDigiSts->clear();
if (fvDigiMuch) fvDigiMuch->clear(); if (fvDigiMuch) fvDigiMuch->clear();
if (fvDigiTrd) fvDigiTrd->clear(); if (fvDigiTrd) fvDigiTrd->clear();
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
/// CBM headers /// CBM headers
#include "CbmAlgoBuildRawEvents.h" #include "CbmAlgoBuildRawEvents.h"
#include "CbmBmonDigi.h"
#include "CbmMuchDigi.h" #include "CbmMuchDigi.h"
#include "CbmPsdDigi.h" #include "CbmPsdDigi.h"
#include "CbmRichDigi.h" #include "CbmRichDigi.h"
...@@ -58,7 +59,7 @@ private: ...@@ -58,7 +59,7 @@ private:
/// User settings parameters /// User settings parameters
/// Algo enum settings /// Algo enum settings
std::string fsEvtOverMode = "NoOverlap"; std::string fsEvtOverMode = "NoOverlap";
std::string fsRefDet = "kT0"; std::string fsRefDet = "kBmon";
std::vector<std::string> fvsAddDet = {}; std::vector<std::string> fvsAddDet = {};
std::vector<std::string> fvsDelDet = {}; std::vector<std::string> fvsDelDet = {};
std::vector<std::string> fvsSetTrigWin = {}; std::vector<std::string> fvsSetTrigWin = {};
...@@ -102,7 +103,7 @@ private: ...@@ -102,7 +103,7 @@ private:
/// TS information in header /// TS information in header
CbmTsEventHeader* fCbmTsEventHeader = nullptr; CbmTsEventHeader* fCbmTsEventHeader = nullptr;
/// Digis storage /// Digis storage
std::vector<CbmTofDigi>* fvDigiT0 = nullptr; std::vector<CbmBmonDigi>* fvDigiBmon = nullptr;
std::vector<CbmStsDigi>* fvDigiSts = nullptr; std::vector<CbmStsDigi>* fvDigiSts = nullptr;
std::vector<CbmMuchDigi>* fvDigiMuch = nullptr; std::vector<CbmMuchDigi>* fvDigiMuch = nullptr;
std::vector<CbmTrdDigi>* fvDigiTrd = nullptr; std::vector<CbmTrdDigi>* fvDigiTrd = nullptr;
......
...@@ -111,7 +111,7 @@ try { ...@@ -111,7 +111,7 @@ try {
: EOverlapModeRaw::NoOverlap))); : EOverlapModeRaw::NoOverlap)));
fpAlgo->SetEventOverlapMode(mode); fpAlgo->SetEventOverlapMode(mode);
/// Extract refdet /// Extract refdet
RawEventBuilderDetector refDet = ("kT0" == fsRefDet ? kRawEventBuilderDetT0 RawEventBuilderDetector refDet = ("kBmon" == fsRefDet ? kRawEventBuilderDetBmon
: ("kSts" == fsRefDet ? kRawEventBuilderDetSts : ("kSts" == fsRefDet ? kRawEventBuilderDetSts
: ("kMuch" == fsRefDet ? kRawEventBuilderDetMuch : ("kMuch" == fsRefDet ? kRawEventBuilderDetMuch
: ("kTrd" == fsRefDet ? kRawEventBuilderDetTrd : ("kTrd" == fsRefDet ? kRawEventBuilderDetTrd
...@@ -121,7 +121,7 @@ try { ...@@ -121,7 +121,7 @@ try {
: kRawEventBuilderDetUndef))))))); : kRawEventBuilderDetUndef)))))));
if (kRawEventBuilderDetUndef != refDet) { if (kRawEventBuilderDetUndef != refDet) {
fpAlgo->SetReferenceDetector(refDet); fpAlgo->SetReferenceDetector(refDet);
} }
else { else {
LOG(info) << "CbmDeviceBuildRawEvents::InitTask => Trying to change " LOG(info) << "CbmDeviceBuildRawEvents::InitTask => Trying to change "
"reference to unsupported detector, ignored! " "reference to unsupported detector, ignored! "
...@@ -132,7 +132,7 @@ try { ...@@ -132,7 +132,7 @@ try {
for (std::vector<std::string>::iterator itStrAdd = fvsAddDet.begin(); for (std::vector<std::string>::iterator itStrAdd = fvsAddDet.begin();
itStrAdd != fvsAddDet.end(); itStrAdd != fvsAddDet.end();
++itStrAdd) { ++itStrAdd) {
RawEventBuilderDetector addDet = ("kT0" == *itStrAdd ? kRawEventBuilderDetT0 RawEventBuilderDetector addDet = ("kBmon" == *itStrAdd ? kRawEventBuilderDetBmon
: ("kSts" == *itStrAdd ? kRawEventBuilderDetSts : ("kSts" == *itStrAdd ? kRawEventBuilderDetSts
: ("kMuch" == *itStrAdd ? kRawEventBuilderDetMuch : ("kMuch" == *itStrAdd ? kRawEventBuilderDetMuch
: ("kTrd" == *itStrAdd ? kRawEventBuilderDetTrd : ("kTrd" == *itStrAdd ? kRawEventBuilderDetTrd
...@@ -142,20 +142,20 @@ try { ...@@ -142,20 +142,20 @@ try {
: kRawEventBuilderDetUndef))))))); : kRawEventBuilderDetUndef)))))));
if (kRawEventBuilderDetUndef != addDet) { if (kRawEventBuilderDetUndef != addDet) {
fpAlgo->AddDetector(addDet); fpAlgo->AddDetector(addDet);
} }
else { else {
LOG(info) << "CbmDeviceBuildRawEvents::InitTask => Trying to add " LOG(info) << "CbmDeviceBuildRawEvents::InitTask => Trying to add "
"unsupported detector, ignored! " "unsupported detector, ignored! "
<< (*itStrAdd); << (*itStrAdd);
continue; continue;
} }
} }
/// Extract detector to remove if any /// Extract detector to remove if any
for (std::vector<std::string>::iterator itStrRem = fvsDelDet.begin(); for (std::vector<std::string>::iterator itStrRem = fvsDelDet.begin();
itStrRem != fvsDelDet.end(); itStrRem != fvsDelDet.end();
++itStrRem) { ++itStrRem) {
RawEventBuilderDetector remDet = ("kT0" == *itStrRem ? kRawEventBuilderDetT0 RawEventBuilderDetector remDet = ("kBmon" == *itStrRem ? kRawEventBuilderDetBmon
: ("kSts" == *itStrRem ? kRawEventBuilderDetSts : ("kSts" == *itStrRem ? kRawEventBuilderDetSts
: ("kMuch" == *itStrRem ? kRawEventBuilderDetMuch : ("kMuch" == *itStrRem ? kRawEventBuilderDetMuch
: ("kTrd" == *itStrRem ? kRawEventBuilderDetTrd : ("kTrd" == *itStrRem ? kRawEventBuilderDetTrd
...@@ -165,14 +165,14 @@ try { ...@@ -165,14 +165,14 @@ try {
: kRawEventBuilderDetUndef))))))); : kRawEventBuilderDetUndef)))))));
if (kRawEventBuilderDetUndef != remDet) { if (kRawEventBuilderDetUndef != remDet) {
fpAlgo->RemoveDetector(remDet); fpAlgo->RemoveDetector(remDet);
} }
else { else {
LOG(info) << "CbmDeviceBuildRawEvents::InitTask => Trying to remove " LOG(info) << "CbmDeviceBuildRawEvents::InitTask => Trying to remove "
"unsupported detector, ignored! " "unsupported detector, ignored! "
<< (*itStrRem); << (*itStrRem);
continue; continue;
} }
} }
/// Extract Trigger window to add if any /// Extract Trigger window to add if any
for (std::vector<std::string>::iterator itStrTrigWin = fvsSetTrigWin.begin(); for (std::vector<std::string>::iterator itStrTrigWin = fvsSetTrigWin.begin();
itStrTrigWin != fvsSetTrigWin.end(); itStrTrigWin != fvsSetTrigWin.end();
...@@ -185,11 +185,11 @@ try { ...@@ -185,11 +185,11 @@ try {
<< " (Should be ECbmModuleId,dWinBeg,dWinEnd but instead found " << " (Should be ECbmModuleId,dWinBeg,dWinEnd but instead found "
<< (*itStrTrigWin) << " )"; << (*itStrTrigWin) << " )";
continue; continue;
} }
/// Detector Enum Tag /// Detector Enum Tag
std::string sSelDet = (*itStrTrigWin).substr(0, charPosDel); std::string sSelDet = (*itStrTrigWin).substr(0, charPosDel);
ECbmModuleId selDet = ("kT0" == sSelDet ? ECbmModuleId::kT0 ECbmModuleId selDet = ("kBmon" == sSelDet ? ECbmModuleId::kBmon
: ("kSts" == sSelDet ? ECbmModuleId::kSts : ("kSts" == sSelDet ? ECbmModuleId::kSts
: ("kMuch" == sSelDet ? ECbmModuleId::kMuch : ("kMuch" == sSelDet ? ECbmModuleId::kMuch
: ("kTrd" == sSelDet ? ECbmModuleId::kTrd : ("kTrd" == sSelDet ? ECbmModuleId::kTrd
...@@ -203,7 +203,7 @@ try { ...@@ -203,7 +203,7 @@ try {
<< "Trying to set trigger window for unsupported detector, ignored! " << "Trying to set trigger window for unsupported detector, ignored! "
<< sSelDet; << sSelDet;
continue; continue;
} }
/// Window beginning /// Window beginning
charPosDel++; charPosDel++;
...@@ -216,7 +216,7 @@ try { ...@@ -216,7 +216,7 @@ try {
<< " (Should be ECbmModuleId,dWinBeg,dWinEnd but instead found " << " (Should be ECbmModuleId,dWinBeg,dWinEnd but instead found "
<< (*itStrTrigWin) << " )"; << (*itStrTrigWin) << " )";
continue; continue;
} }
Double_t dWinBeg = std::stod(sNext.substr(0, charPosDel)); Double_t dWinBeg = std::stod(sNext.substr(0, charPosDel));
/// Window end /// Window end
...@@ -224,7 +224,7 @@ try { ...@@ -224,7 +224,7 @@ try {
Double_t dWinEnd = std::stod(sNext.substr(charPosDel)); Double_t dWinEnd = std::stod(sNext.substr(charPosDel));
fpAlgo->SetTriggerWindow(selDet, dWinBeg, dWinEnd); fpAlgo->SetTriggerWindow(selDet, dWinBeg, dWinEnd);
} }
/// Extract MinNb for trigger if any /// Extract MinNb for trigger if any
for (std::vector<std::string>::iterator itStrMinNb = fvsSetTrigMinNb.begin(); for (std::vector<std::string>::iterator itStrMinNb = fvsSetTrigMinNb.begin();
itStrMinNb != fvsSetTrigMinNb.end(); itStrMinNb != fvsSetTrigMinNb.end();
...@@ -241,7 +241,7 @@ try { ...@@ -241,7 +241,7 @@ try {
/// Detector Enum Tag /// Detector Enum Tag
std::string sSelDet = (*itStrMinNb).substr(0, charPosDel); std::string sSelDet = (*itStrMinNb).substr(0, charPosDel);
ECbmModuleId selDet = ("kT0" == sSelDet ? ECbmModuleId::kT0 ECbmModuleId selDet = ("kBmon" == sSelDet ? ECbmModuleId::kBmon
: ("kSts" == sSelDet ? ECbmModuleId::kSts : ("kSts" == sSelDet ? ECbmModuleId::kSts
: ("kMuch" == sSelDet ? ECbmModuleId::kMuch : ("kMuch" == sSelDet ? ECbmModuleId::kMuch
: ("kTrd" == sSelDet ? ECbmModuleId::kTrd : ("kTrd" == sSelDet ? ECbmModuleId::kTrd
...@@ -262,13 +262,13 @@ try { ...@@ -262,13 +262,13 @@ try {
UInt_t uMinNb = std::stoul((*itStrMinNb).substr(charPosDel)); UInt_t uMinNb = std::stoul((*itStrMinNb).substr(charPosDel));
fpAlgo->SetTriggerMinNumber(selDet, uMinNb); fpAlgo->SetTriggerMinNumber(selDet, uMinNb);
} }
/// FIXME: Re-enable clang formatting after formatted lines /// FIXME: Re-enable clang formatting after formatted lines
/* clang-format on */ /* clang-format on */
/// Create input vectors /// Create input vectors
fvDigiT0 = new std::vector<CbmTofDigi>(); fvDigiBmon = new std::vector<CbmBmonDigi>();
fvDigiSts = new std::vector<CbmStsDigi>(); fvDigiSts = new std::vector<CbmStsDigi>();
fvDigiMuch = new std::vector<CbmMuchBeamTimeDigi>(); fvDigiMuch = new std::vector<CbmMuchBeamTimeDigi>();
fvDigiTrd = new std::vector<CbmTrdDigi>(); fvDigiTrd = new std::vector<CbmTrdDigi>();
...@@ -281,7 +281,7 @@ try { ...@@ -281,7 +281,7 @@ try {
fpAlgo->SetTimeSliceMetaDataArray(fTimeSliceMetaDataArray); fpAlgo->SetTimeSliceMetaDataArray(fTimeSliceMetaDataArray);
/// Digis storage /// Digis storage
fpAlgo->SetT0Digis(fvDigiT0); fpAlgo->SetDigis(fvDigiBmon);
fpAlgo->SetDigis(fvDigiSts); fpAlgo->SetDigis(fvDigiSts);
fpAlgo->SetDigis(fvDigiMuch); fpAlgo->SetDigis(fvDigiMuch);
fpAlgo->SetDigis(fvDigiTrd); fpAlgo->SetDigis(fvDigiTrd);
...@@ -395,11 +395,11 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -395,11 +395,11 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/)
TimesliceMetaData(std::move(*fTsMetaData)); TimesliceMetaData(std::move(*fTsMetaData));
++uPartIdx; ++uPartIdx;
/// T0 /// Bmon
std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrBmon(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issT0(msgStrT0); std::istringstream issBmon(msgStrBmon);
boost::archive::binary_iarchive inputArchiveT0(issT0); boost::archive::binary_iarchive inputArchiveBmon(issBmon);
inputArchiveT0 >> *fvDigiT0; inputArchiveBmon >> *fvDigiBmon;
++uPartIdx; ++uPartIdx;
/// STS /// STS
...@@ -423,7 +423,7 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -423,7 +423,7 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/)
inputArchiveTrd >> *fvDigiTrd; inputArchiveTrd >> *fvDigiTrd;
++uPartIdx; ++uPartIdx;
/// T0F /// BmonF
std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issTof(msgStrTof); std::istringstream issTof(msgStrTof);
boost::archive::binary_iarchive inputArchiveTof(issTof); boost::archive::binary_iarchive inputArchiveTof(issTof);
...@@ -454,7 +454,7 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/) ...@@ -454,7 +454,7 @@ bool CbmDeviceBuildRawEvents::HandleData(FairMQParts& parts, int /*index*/)
fTimeSliceMetaDataArray->Clear(); fTimeSliceMetaDataArray->Clear();
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
...@@ -541,7 +541,7 @@ CbmDeviceBuildRawEvents::~CbmDeviceBuildRawEvents() ...@@ -541,7 +541,7 @@ CbmDeviceBuildRawEvents::~CbmDeviceBuildRawEvents()
delete fTsMetaData; delete fTsMetaData;
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
/// CBM headers /// CBM headers
#include "CbmAlgoBuildRawEvents.h" #include "CbmAlgoBuildRawEvents.h"
#include "CbmBmonDigi.h"
#include "CbmMuchBeamTimeDigi.h" #include "CbmMuchBeamTimeDigi.h"
#include "CbmPsdDigi.h" #include "CbmPsdDigi.h"
#include "CbmRichDigi.h" #include "CbmRichDigi.h"
...@@ -58,7 +59,7 @@ private: ...@@ -58,7 +59,7 @@ private:
/// User settings parameters /// User settings parameters
/// Algo enum settings /// Algo enum settings
std::string fsEvtOverMode = "NoOverlap"; std::string fsEvtOverMode = "NoOverlap";
std::string fsRefDet = "kT0"; std::string fsRefDet = "kBmon";
std::vector<std::string> fvsAddDet = {}; std::vector<std::string> fvsAddDet = {};
std::vector<std::string> fvsDelDet = {}; std::vector<std::string> fvsDelDet = {};
std::vector<std::string> fvsSetTrigWin = {}; std::vector<std::string> fvsSetTrigWin = {};
...@@ -99,7 +100,7 @@ private: ...@@ -99,7 +100,7 @@ private:
TClonesArray* fTimeSliceMetaDataArray = nullptr; //! TClonesArray* fTimeSliceMetaDataArray = nullptr; //!
TimesliceMetaData* fTsMetaData = nullptr; TimesliceMetaData* fTsMetaData = nullptr;
/// Digis storage /// Digis storage
std::vector<CbmTofDigi>* fvDigiT0 = nullptr; std::vector<CbmBmonDigi>* fvDigiBmon = nullptr;
std::vector<CbmStsDigi>* fvDigiSts = nullptr; std::vector<CbmStsDigi>* fvDigiSts = nullptr;
std::vector<CbmMuchBeamTimeDigi>* fvDigiMuch = nullptr; std::vector<CbmMuchBeamTimeDigi>* fvDigiMuch = nullptr;
std::vector<CbmTrdDigi>* fvDigiTrd = nullptr; std::vector<CbmTrdDigi>* fvDigiTrd = nullptr;
......
...@@ -55,7 +55,7 @@ struct InitTaskError : std::runtime_error { ...@@ -55,7 +55,7 @@ struct InitTaskError : std::runtime_error {
using namespace std; using namespace std;
//Bool_t bMcbm2018MonitorTaskT0ResetHistos = kFALSE; //Bool_t bMcbm2018MonitorTaskBmonResetHistos = kFALSE;
CbmDeviceDigiEventSink::CbmDeviceDigiEventSink() {} CbmDeviceDigiEventSink::CbmDeviceDigiEventSink() {}
...@@ -75,6 +75,7 @@ try { ...@@ -75,6 +75,7 @@ try {
fbDisableCompression = fConfig->GetValue<bool>("DisableCompression"); fbDisableCompression = fConfig->GetValue<bool>("DisableCompression");
fiTreeFileMaxSize = fConfig->GetValue<int64_t>("TreeFileMaxSize"); fiTreeFileMaxSize = fConfig->GetValue<int64_t>("TreeFileMaxSize");
fbDigiEventInput = fConfig->GetValue<bool>("DigiEventInput"); fbDigiEventInput = fConfig->GetValue<bool>("DigiEventInput");
fbExclusiveTrdExtract = fConfig->GetValue<bool>("ExclusiveTrdExtract");
fbFillHistos = fConfig->GetValue<bool>("FillHistos"); fbFillHistos = fConfig->GetValue<bool>("FillHistos");
fuPublishFreqTs = fConfig->GetValue<uint32_t>("PubFreqTs"); fuPublishFreqTs = fConfig->GetValue<uint32_t>("PubFreqTs");
...@@ -155,7 +156,7 @@ try { ...@@ -155,7 +156,7 @@ try {
/// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!) /// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!)
if (fbStoreFullTs) { if (fbStoreFullTs) {
fvDigiT0 = new std::vector<CbmTofDigi>(); fvDigiBmon = new std::vector<CbmBmonDigi>();
fvDigiSts = new std::vector<CbmStsDigi>(); fvDigiSts = new std::vector<CbmStsDigi>();
fvDigiMuch = new std::vector<CbmMuchDigi>(); fvDigiMuch = new std::vector<CbmMuchDigi>();
fvDigiTrd = new std::vector<CbmTrdDigi>(); fvDigiTrd = new std::vector<CbmTrdDigi>();
...@@ -163,13 +164,13 @@ try { ...@@ -163,13 +164,13 @@ try {
fvDigiRich = new std::vector<CbmRichDigi>(); fvDigiRich = new std::vector<CbmRichDigi>();
fvDigiPsd = new std::vector<CbmPsdDigi>(); fvDigiPsd = new std::vector<CbmPsdDigi>();
fpFairRootMgr->RegisterAny("T0Digi", fvDigiT0, kTRUE); fpFairRootMgr->RegisterAny(CbmBmonDigi::GetBranchName(), fvDigiBmon, kTRUE);
fpFairRootMgr->RegisterAny("StsDigi", fvDigiSts, kTRUE); fpFairRootMgr->RegisterAny(CbmStsDigi::GetBranchName(), fvDigiSts, kTRUE);
fpFairRootMgr->RegisterAny("MuchDigi", fvDigiMuch, kTRUE); fpFairRootMgr->RegisterAny(CbmMuchDigi::GetBranchName(), fvDigiMuch, kTRUE);
fpFairRootMgr->RegisterAny("TrdDigi", fvDigiTrd, kTRUE); fpFairRootMgr->RegisterAny(CbmTrdDigi::GetBranchName(), fvDigiTrd, kTRUE);
fpFairRootMgr->RegisterAny("TofDigi", fvDigiTof, kTRUE); fpFairRootMgr->RegisterAny(CbmTofDigi::GetBranchName(), fvDigiTof, kTRUE);
fpFairRootMgr->RegisterAny("RichDigi", fvDigiRich, kTRUE); fpFairRootMgr->RegisterAny(CbmRichDigi::GetBranchName(), fvDigiRich, kTRUE);
fpFairRootMgr->RegisterAny("PsdDigi", fvDigiPsd, kTRUE); fpFairRootMgr->RegisterAny(CbmPsdDigi::GetBranchName(), fvDigiPsd, kTRUE);
} }
fpFairRootMgr->WriteFolder(); fpFairRootMgr->WriteFolder();
...@@ -623,7 +624,7 @@ void CbmDeviceDigiEventSink::PrepareTreeEntry(CbmEventTimeslice unpTs) ...@@ -623,7 +624,7 @@ void CbmDeviceDigiEventSink::PrepareTreeEntry(CbmEventTimeslice unpTs)
/// Extract CbmEvent vector from input message /// Extract CbmEvent vector from input message
// FU, 29.06.22 Remove std::move to allow copy ellision // FU, 29.06.22 Remove std::move to allow copy ellision
(*fEventsSel) = unpTs.GetSelectedData(); (*fEventsSel) = unpTs.GetSelectedData(fbExclusiveTrdExtract);
if (kTRUE == fbFillHistos) { if (kTRUE == fbFillHistos) {
/// Accumulated counts, will show rise + plateau pattern in spill /// Accumulated counts, will show rise + plateau pattern in spill
fulProcessedEvents += fEventsSel->size(); fulProcessedEvents += fEventsSel->size();
...@@ -631,7 +632,7 @@ void CbmDeviceDigiEventSink::PrepareTreeEntry(CbmEventTimeslice unpTs) ...@@ -631,7 +632,7 @@ void CbmDeviceDigiEventSink::PrepareTreeEntry(CbmEventTimeslice unpTs)
/// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!) /// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!)
if (fbStoreFullTs) { if (fbStoreFullTs) {
if (0 < unpTs.fvDigiT0.size()) fvDigiT0->assign(unpTs.fvDigiT0.begin(), unpTs.fvDigiT0.end()); if (0 < unpTs.fvDigiBmon.size()) fvDigiBmon->assign(unpTs.fvDigiBmon.begin(), unpTs.fvDigiBmon.end());
if (0 < unpTs.fvDigiSts.size()) fvDigiSts->assign(unpTs.fvDigiSts.begin(), unpTs.fvDigiSts.end()); if (0 < unpTs.fvDigiSts.size()) fvDigiSts->assign(unpTs.fvDigiSts.begin(), unpTs.fvDigiSts.end());
if (0 < unpTs.fvDigiMuch.size()) fvDigiMuch->assign(unpTs.fvDigiMuch.begin(), unpTs.fvDigiMuch.end()); if (0 < unpTs.fvDigiMuch.size()) fvDigiMuch->assign(unpTs.fvDigiMuch.begin(), unpTs.fvDigiMuch.end());
if (0 < unpTs.fvDigiTrd.size()) fvDigiTrd->assign(unpTs.fvDigiTrd.begin(), unpTs.fvDigiTrd.end()); if (0 < unpTs.fvDigiTrd.size()) fvDigiTrd->assign(unpTs.fvDigiTrd.begin(), unpTs.fvDigiTrd.end());
...@@ -668,7 +669,7 @@ void CbmDeviceDigiEventSink::DumpTreeEntry() ...@@ -668,7 +669,7 @@ void CbmDeviceDigiEventSink::DumpTreeEntry()
fEventsSel->clear(); fEventsSel->clear();
/// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!) /// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!)
if (fbStoreFullTs) { if (fbStoreFullTs) {
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
...@@ -759,6 +760,16 @@ bool CbmDeviceDigiEventSink::SendHistograms() ...@@ -759,6 +760,16 @@ bool CbmDeviceDigiEventSink::SendHistograms()
return true; return true;
} }
//--------------------------------------------------------------------//
void CbmDeviceDigiEventSink::PostRun()
{
// Needed to avoid due to other end of ZMQ channel being already gone if called during Finish/destructor
if (kTRUE == fbFillHistos) {
SendHistograms();
fLastPublishTime = std::chrono::system_clock::now();
} // if( kTRUE == fbFillHistos )
}
//--------------------------------------------------------------------// //--------------------------------------------------------------------//
CbmDeviceDigiEventSink::~CbmDeviceDigiEventSink() CbmDeviceDigiEventSink::~CbmDeviceDigiEventSink()
{ {
...@@ -787,14 +798,12 @@ void CbmDeviceDigiEventSink::Finish() ...@@ -787,14 +798,12 @@ void CbmDeviceDigiEventSink::Finish()
LOG(info) << "Still buffered TS " << fmFullTsStorage.size() << " and still buffered empties " LOG(info) << "Still buffered TS " << fmFullTsStorage.size() << " and still buffered empties "
<< fvulMissedTsIndices.size(); << fvulMissedTsIndices.size();
if (kTRUE == fbFillHistos) { if (fair::mq::State::Running == GetCurrentState()) {
SendHistograms(); /// Force state transitions only if not already done by ODC/DDS!
fLastPublishTime = std::chrono::system_clock::now(); ChangeState(fair::mq::Transition::Stop);
} // if( kTRUE == fbFillHistos ) std::this_thread::sleep_for(std::chrono::milliseconds(3000));
ChangeState(fair::mq::Transition::End);
ChangeState(fair::mq::Transition::Stop); }
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
ChangeState(fair::mq::Transition::End);
fbFinishDone = kTRUE; fbFinishDone = kTRUE;
} }
...@@ -867,11 +876,11 @@ CbmEventTimeslice::CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput) ...@@ -867,11 +876,11 @@ CbmEventTimeslice::CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput)
} }
++uPartIdx; ++uPartIdx;
/// (2) T0 /// (2) Bmon
std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrBmon(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issT0(msgStrT0); std::istringstream issBmon(msgStrBmon);
boost::archive::binary_iarchive inputArchiveT0(issT0); boost::archive::binary_iarchive inputArchiveBmon(issBmon);
inputArchiveT0 >> fvDigiT0; inputArchiveBmon >> fvDigiBmon;
++uPartIdx; ++uPartIdx;
/// (3) STS /// (3) STS
...@@ -895,7 +904,7 @@ CbmEventTimeslice::CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput) ...@@ -895,7 +904,7 @@ CbmEventTimeslice::CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput)
inputArchiveTrd >> fvDigiTrd; inputArchiveTrd >> fvDigiTrd;
++uPartIdx; ++uPartIdx;
/// (6) T0F /// (6) BmonF
std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issTof(msgStrTof); std::istringstream issTof(msgStrTof);
boost::archive::binary_iarchive inputArchiveTof(issTof); boost::archive::binary_iarchive inputArchiveTof(issTof);
...@@ -947,7 +956,7 @@ CbmEventTimeslice::CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput) ...@@ -947,7 +956,7 @@ CbmEventTimeslice::CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput)
CbmEventTimeslice::~CbmEventTimeslice() CbmEventTimeslice::~CbmEventTimeslice()
{ {
fvDigiT0.clear(); fvDigiBmon.clear();
fvDigiSts.clear(); fvDigiSts.clear();
fvDigiMuch.clear(); fvDigiMuch.clear();
fvDigiTrd.clear(); fvDigiTrd.clear();
...@@ -958,7 +967,7 @@ CbmEventTimeslice::~CbmEventTimeslice() ...@@ -958,7 +967,7 @@ CbmEventTimeslice::~CbmEventTimeslice()
fvDigiEvents.clear(); fvDigiEvents.clear();
} }
void CbmEventTimeslice::ExtractSelectedData() void CbmEventTimeslice::ExtractSelectedData(bool bExclusiveTrdExtract)
{ {
fvDigiEvents.reserve(fvEvents.size()); fvDigiEvents.reserve(fvEvents.size());
...@@ -968,10 +977,11 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -968,10 +977,11 @@ void CbmEventTimeslice::ExtractSelectedData()
selEvent.fTime = event.GetStartTime(); selEvent.fTime = event.GetStartTime();
selEvent.fNumber = event.GetNumber(); selEvent.fNumber = event.GetNumber();
/// FIXME: for pure digi based event, we select "continuous slices of digis" /// For pure digi based event, we select "continuous slices of digis"
/// => Copy block of [First Digi index, last digi index] with assign(it_start, it_stop) /// => Copy block of [First Digi index, last digi index] with assign(it_start, it_stop)
/// FIXME: Keep TRD1D + TRD2D support, may lead to holes in the digi sequence! /// => No data increase for most detectors as we use time window selection
/// => Would need to keep the loop /// Keep TRD1D + TRD2D support as single det, otherwise may lead to holes in the digi sequence!
/// => Need option to keep the loop to avoid adding extra digis if comparison to CbmEvents wanted
/// Get the proper order for block selection as TRD1D and TRD2D may insert indices in separate loops /// Get the proper order for block selection as TRD1D and TRD2D may insert indices in separate loops
/// => Needed to ensure that the start and stop of the block copy do not trigger a vector size exception /// => Needed to ensure that the start and stop of the block copy do not trigger a vector size exception
...@@ -979,29 +989,13 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -979,29 +989,13 @@ void CbmEventTimeslice::ExtractSelectedData()
/// for each detector, find the data in the Digi vectors and copy them /// for each detector, find the data in the Digi vectors and copy them
/// TODO: Template + loop on list of data types? /// TODO: Template + loop on list of data types?
/// ==> T0 /// ==> Bmon
uint32_t uNbDigis = (0 < event.GetNofData(ECbmDataType::kT0Digi) ? event.GetNofData(ECbmDataType::kT0Digi) : 0); uint32_t uNbDigis = (0 < event.GetNofData(ECbmDataType::kBmonDigi) ? event.GetNofData(ECbmDataType::kBmonDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
auto startIt = fvDigiT0.begin() + event.GetIndex(ECbmDataType::kT0Digi, 0); auto startIt = fvDigiBmon.begin() + event.GetIndex(ECbmDataType::kBmonDigi, 0);
auto stopIt = fvDigiT0.begin() + event.GetIndex(ECbmDataType::kT0Digi, uNbDigis - 1); auto stopIt = fvDigiBmon.begin() + event.GetIndex(ECbmDataType::kBmonDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fT0.fDigis.assign(startIt, stopIt); selEvent.fData.fBmon.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kT0Digi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fT0.fDigis.push_back(fvDigiT0[event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kT0Digi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the T0 block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> STS /// ==> STS
...@@ -1011,22 +1005,6 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -1011,22 +1005,6 @@ void CbmEventTimeslice::ExtractSelectedData()
auto stopIt = fvDigiSts.begin() + event.GetIndex(ECbmDataType::kStsDigi, uNbDigis - 1); auto stopIt = fvDigiSts.begin() + event.GetIndex(ECbmDataType::kStsDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fSts.fDigis.assign(startIt, stopIt); selEvent.fData.fSts.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kStsDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fSts.fDigis.push_back(fvDigiSts[event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kStsDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the STS block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> MUCH /// ==> MUCH
...@@ -1036,49 +1014,30 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -1036,49 +1014,30 @@ void CbmEventTimeslice::ExtractSelectedData()
auto stopIt = fvDigiMuch.begin() + event.GetIndex(ECbmDataType::kMuchDigi, uNbDigis - 1); auto stopIt = fvDigiMuch.begin() + event.GetIndex(ECbmDataType::kMuchDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fMuch.fDigis.assign(startIt, stopIt); selEvent.fData.fMuch.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kMuchDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fMuch.fDigis.push_back(fvDigiMuch[event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kMuchDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the MUCH block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> TRD + TRD2D /// ==> TRD + TRD2D
uNbDigis = (0 < event.GetNofData(ECbmDataType::kTrdDigi) ? event.GetNofData(ECbmDataType::kTrdDigi) : 0); uNbDigis = (0 < event.GetNofData(ECbmDataType::kTrdDigi) ? event.GetNofData(ECbmDataType::kTrdDigi) : 0);
if (uNbDigis) { if (uNbDigis) {
auto startIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, 0); if (bExclusiveTrdExtract) {
auto stopIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, uNbDigis - 1); for (uint32_t uDigiInEvt = 0; uDigiInEvt < uNbDigis; ++uDigiInEvt) {
++stopIt; /// Copy each digi in the event by itself to make sure we skip ones outside their own selection window but
selEvent.fData.fTrd.fDigis.assign(startIt, stopIt); /// inside the selection window of the other TRD subsystem, effectively enforcing differetn windows:
/// [t, t+dt](TRD) = [t, t+dt](TRD1D) + [t, t+dt](TRD2D)
/* /// => Exclusive but slower
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kTrdDigi, 0); selEvent.fData.fTrd.fDigis.push_back(fvDigiTrd[event.GetIndex(ECbmDataType::kTrdDigi, uDigiInEvt)]);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fTrd.fDigis.push_back(fvDigiTrd[event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx) - (uPrevIdx + 1);
LOG(info) << "Extra TRD digi: prev is " << uPrevIdx << " vs new " << event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx)
<< " index " << uDigiIdx << " out of " << uNbDigis;
} }
uPrevIdx = event.GetIndex(ECbmDataType::kTrdDigi, uDigiIdx);
} }
if (0 < uNbExtra) { else {
LOG(info) << "In event " << event.GetNumber() << " the TRD block selection added " << uNbExtra /// Block copy of all TRD digis, has feature that it may include digis which are not matching the selection
<< " extra digis compared to the loop one"; /// window of a given TRD subsystem, effectively making a larger selection window:
/// [t, t+dt](TRD) = [t, t+dt](TRD1D) U [t, t+dt](TRD2D)
/// => Faster but inclusive, will lead to more TRD hits and tracks than expected
auto startIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, 0);
auto stopIt = fvDigiTrd.begin() + event.GetIndex(ECbmDataType::kTrdDigi, uNbDigis - 1);
++stopIt;
selEvent.fData.fTrd.fDigis.assign(startIt, stopIt);
} }
*/
} }
/// ==> TOF /// ==> TOF
...@@ -1088,22 +1047,6 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -1088,22 +1047,6 @@ void CbmEventTimeslice::ExtractSelectedData()
auto stopIt = fvDigiTof.begin() + event.GetIndex(ECbmDataType::kTofDigi, uNbDigis - 1); auto stopIt = fvDigiTof.begin() + event.GetIndex(ECbmDataType::kTofDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fTof.fDigis.assign(startIt, stopIt); selEvent.fData.fTof.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kTofDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fTof.fDigis.push_back(fvDigiTof[event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kTofDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the TOF block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> RICH /// ==> RICH
...@@ -1113,22 +1056,6 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -1113,22 +1056,6 @@ void CbmEventTimeslice::ExtractSelectedData()
auto stopIt = fvDigiRich.begin() + event.GetIndex(ECbmDataType::kRichDigi, uNbDigis - 1); auto stopIt = fvDigiRich.begin() + event.GetIndex(ECbmDataType::kRichDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fRich.fDigis.assign(startIt, stopIt); selEvent.fData.fRich.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kRichDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fRich.fDigis.push_back(fvDigiRich[event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kRichDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the RICH block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
/// ==> PSD /// ==> PSD
...@@ -1138,22 +1065,6 @@ void CbmEventTimeslice::ExtractSelectedData() ...@@ -1138,22 +1065,6 @@ void CbmEventTimeslice::ExtractSelectedData()
auto stopIt = fvDigiPsd.begin() + event.GetIndex(ECbmDataType::kPsdDigi, uNbDigis - 1); auto stopIt = fvDigiPsd.begin() + event.GetIndex(ECbmDataType::kPsdDigi, uNbDigis - 1);
++stopIt; ++stopIt;
selEvent.fData.fPsd.fDigis.assign(startIt, stopIt); selEvent.fData.fPsd.fDigis.assign(startIt, stopIt);
/*
uint32_t uPrevIdx = event.GetIndex(ECbmDataType::kPsdDigi, 0);
uint32_t uNbExtra = 0;
for (uint32_t uDigiIdx = 1; uDigiIdx < uNbDigis; ++uDigiIdx) {
// selEvent.fData.fPsd.fDigis.push_back(fvDigiPsd[event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx)]);
if (uPrevIdx + 1 != event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx)) {
uNbExtra += event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx) - (uPrevIdx + 1);
}
uPrevIdx = event.GetIndex(ECbmDataType::kPsdDigi, uDigiIdx);
}
if (0 < uNbExtra) {
LOG(info) << "In event " << event.GetNumber() << " the PSD block selection added " << uNbExtra
<< " extra digis compared to the loop one";
}
*/
} }
fvDigiEvents.push_back(selEvent); fvDigiEvents.push_back(selEvent);
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#define CBMDEVICEDIGIEVTSINK_H_ #define CBMDEVICEDIGIEVTSINK_H_
/// CBM headers /// CBM headers
#include "CbmBmonDigi.h"
#include "CbmDigiEvent.h" #include "CbmDigiEvent.h"
#include "CbmEvent.h" #include "CbmEvent.h"
#include "CbmMqTMessage.h" #include "CbmMqTMessage.h"
...@@ -55,10 +56,10 @@ public: ...@@ -55,10 +56,10 @@ public:
CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput = false); CbmEventTimeslice(FairMQParts& parts, bool bDigiEvtInput = false);
~CbmEventTimeslice(); ~CbmEventTimeslice();
void ExtractSelectedData(); void ExtractSelectedData(bool bExclusiveTrdExtract = true);
std::vector<CbmDigiEvent>& GetSelectedData() std::vector<CbmDigiEvent>& GetSelectedData(bool bExclusiveTrdExtract = true)
{ {
if (!fbDigiEvtInput) ExtractSelectedData(); if (!fbDigiEvtInput) ExtractSelectedData(bExclusiveTrdExtract);
return fvDigiEvents; return fvDigiEvents;
} }
...@@ -67,7 +68,7 @@ public: ...@@ -67,7 +68,7 @@ public:
/// TS information in header /// TS information in header
CbmTsEventHeader fCbmTsEventHeader; CbmTsEventHeader fCbmTsEventHeader;
/// Raw data /// Raw data
std::vector<CbmTofDigi> fvDigiT0; std::vector<CbmBmonDigi> fvDigiBmon;
std::vector<CbmStsDigi> fvDigiSts; std::vector<CbmStsDigi> fvDigiSts;
std::vector<CbmMuchDigi> fvDigiMuch; std::vector<CbmMuchDigi> fvDigiMuch;
std::vector<CbmTrdDigi> fvDigiTrd; std::vector<CbmTrdDigi> fvDigiTrd;
...@@ -92,6 +93,7 @@ protected: ...@@ -92,6 +93,7 @@ protected:
bool HandleMissTsData(FairMQMessagePtr&, int); bool HandleMissTsData(FairMQMessagePtr&, int);
bool HandleData(FairMQParts&, int); bool HandleData(FairMQParts&, int);
bool HandleCommand(FairMQMessagePtr&, int); bool HandleCommand(FairMQMessagePtr&, int);
virtual void PostRun();
private: private:
/// Constants /// Constants
...@@ -102,6 +104,7 @@ private: ...@@ -102,6 +104,7 @@ private:
bool fbWriteMissingTs = false; //! Switch ON/OFF writing of empty TS to file for the missing ones (if no bypass) bool fbWriteMissingTs = false; //! Switch ON/OFF writing of empty TS to file for the missing ones (if no bypass)
bool fbDisableCompression = false; //! Switch ON/OFF the ROOT file compression bool fbDisableCompression = false; //! Switch ON/OFF the ROOT file compression
bool fbDigiEventInput = false; //! Switch ON/OFF the input of CbmDigiEvents instead of raw data + CbmEvents bool fbDigiEventInput = false; //! Switch ON/OFF the input of CbmDigiEvents instead of raw data + CbmEvents
bool fbExclusiveTrdExtract = true; //! Switch ON/OFF loop based extraction of TRD digis due to 1D/2D
bool fbFillHistos = false; //! Switch ON/OFF filling of histograms bool fbFillHistos = false; //! Switch ON/OFF filling of histograms
bool fbInitDone = false; //! Keep track of whether the Init was already fully completed bool fbInitDone = false; //! Keep track of whether the Init was already fully completed
bool fbFinishDone = false; //! Keep track of whether the Finish was already called bool fbFinishDone = false; //! Keep track of whether the Finish was already called
...@@ -156,7 +159,7 @@ private: ...@@ -156,7 +159,7 @@ private:
/// CbmEvents /// CbmEvents
std::vector<CbmDigiEvent>* fEventsSel = nullptr; //! output container of CbmEvents std::vector<CbmDigiEvent>* fEventsSel = nullptr; //! output container of CbmEvents
/// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!) /// Full TS Digis storage (optional usage, controlled by fbStoreFullTs!)
std::vector<CbmTofDigi>* fvDigiT0 = nullptr; std::vector<CbmBmonDigi>* fvDigiBmon = nullptr;
std::vector<CbmStsDigi>* fvDigiSts = nullptr; std::vector<CbmStsDigi>* fvDigiSts = nullptr;
std::vector<CbmMuchDigi>* fvDigiMuch = nullptr; std::vector<CbmMuchDigi>* fvDigiMuch = nullptr;
std::vector<CbmTrdDigi>* fvDigiTrd = nullptr; std::vector<CbmTrdDigi>* fvDigiTrd = nullptr;
......
...@@ -52,7 +52,7 @@ struct InitTaskError : std::runtime_error { ...@@ -52,7 +52,7 @@ struct InitTaskError : std::runtime_error {
using namespace std; using namespace std;
//Bool_t bMcbm2018MonitorTaskT0ResetHistos = kFALSE; //Bool_t bMcbm2018MonitorTaskBmonResetHistos = kFALSE;
CbmDeviceMcbmEventBuilderWin::CbmDeviceMcbmEventBuilderWin() { fpAlgo = new CbmMcbm2019TimeWinEventBuilderAlgo(); } CbmDeviceMcbmEventBuilderWin::CbmDeviceMcbmEventBuilderWin() { fpAlgo = new CbmMcbm2019TimeWinEventBuilderAlgo(); }
...@@ -116,7 +116,7 @@ try { ...@@ -116,7 +116,7 @@ try {
: EOverlapMode::NoOverlap))); : EOverlapMode::NoOverlap)));
fpAlgo->SetEventOverlapMode(mode); fpAlgo->SetEventOverlapMode(mode);
/// Extract refdet /// Extract refdet
EventBuilderDetector refDet = ("kT0" == fsRefDet ? kEventBuilderDetT0 EventBuilderDetector refDet = ("kBmon" == fsRefDet ? kEventBuilderDetBmon
: ("kSts" == fsRefDet ? kEventBuilderDetSts : ("kSts" == fsRefDet ? kEventBuilderDetSts
: ("kMuch" == fsRefDet ? kEventBuilderDetMuch : ("kMuch" == fsRefDet ? kEventBuilderDetMuch
: ("kTrd" == fsRefDet ? kEventBuilderDetTrd : ("kTrd" == fsRefDet ? kEventBuilderDetTrd
...@@ -137,7 +137,7 @@ try { ...@@ -137,7 +137,7 @@ try {
for (std::vector<std::string>::iterator itStrAdd = fvsAddDet.begin(); for (std::vector<std::string>::iterator itStrAdd = fvsAddDet.begin();
itStrAdd != fvsAddDet.end(); itStrAdd != fvsAddDet.end();
++itStrAdd) { ++itStrAdd) {
EventBuilderDetector addDet = ("kT0" == *itStrAdd ? kEventBuilderDetT0 EventBuilderDetector addDet = ("kBmon" == *itStrAdd ? kEventBuilderDetBmon
: ("kSts" == *itStrAdd ? kEventBuilderDetSts : ("kSts" == *itStrAdd ? kEventBuilderDetSts
: ("kMuch" == *itStrAdd ? kEventBuilderDetMuch : ("kMuch" == *itStrAdd ? kEventBuilderDetMuch
: ("kTrd" == *itStrAdd ? kEventBuilderDetTrd : ("kTrd" == *itStrAdd ? kEventBuilderDetTrd
...@@ -160,7 +160,7 @@ try { ...@@ -160,7 +160,7 @@ try {
for (std::vector<std::string>::iterator itStrRem = fvsDelDet.begin(); for (std::vector<std::string>::iterator itStrRem = fvsDelDet.begin();
itStrRem != fvsDelDet.end(); itStrRem != fvsDelDet.end();
++itStrRem) { ++itStrRem) {
EventBuilderDetector remDet = ("kT0" == *itStrRem ? kEventBuilderDetT0 EventBuilderDetector remDet = ("kBmon" == *itStrRem ? kEventBuilderDetBmon
: ("kSts" == *itStrRem ? kEventBuilderDetSts : ("kSts" == *itStrRem ? kEventBuilderDetSts
: ("kMuch" == *itStrRem ? kEventBuilderDetMuch : ("kMuch" == *itStrRem ? kEventBuilderDetMuch
: ("kTrd" == *itStrRem ? kEventBuilderDetTrd : ("kTrd" == *itStrRem ? kEventBuilderDetTrd
...@@ -194,7 +194,7 @@ try { ...@@ -194,7 +194,7 @@ try {
/// Detector Enum Tag /// Detector Enum Tag
std::string sSelDet = (*itStrTrigWin).substr(0, charPosDel); std::string sSelDet = (*itStrTrigWin).substr(0, charPosDel);
ECbmModuleId selDet = ("kT0" == sSelDet ? ECbmModuleId::kT0 ECbmModuleId selDet = ("kBmon" == sSelDet ? ECbmModuleId::kBmon
: ("kSts" == sSelDet ? ECbmModuleId::kSts : ("kSts" == sSelDet ? ECbmModuleId::kSts
: ("kMuch" == sSelDet ? ECbmModuleId::kMuch : ("kMuch" == sSelDet ? ECbmModuleId::kMuch
: ("kTrd" == sSelDet ? ECbmModuleId::kTrd : ("kTrd" == sSelDet ? ECbmModuleId::kTrd
...@@ -246,7 +246,7 @@ try { ...@@ -246,7 +246,7 @@ try {
/// Detector Enum Tag /// Detector Enum Tag
std::string sSelDet = (*itStrMinNb).substr(0, charPosDel); std::string sSelDet = (*itStrMinNb).substr(0, charPosDel);
ECbmModuleId selDet = ("kT0" == sSelDet ? ECbmModuleId::kT0 ECbmModuleId selDet = ("kBmon" == sSelDet ? ECbmModuleId::kBmon
: ("kSts" == sSelDet ? ECbmModuleId::kSts : ("kSts" == sSelDet ? ECbmModuleId::kSts
: ("kMuch" == sSelDet ? ECbmModuleId::kMuch : ("kMuch" == sSelDet ? ECbmModuleId::kMuch
: ("kTrd" == sSelDet ? ECbmModuleId::kTrd : ("kTrd" == sSelDet ? ECbmModuleId::kTrd
...@@ -273,7 +273,7 @@ try { ...@@ -273,7 +273,7 @@ try {
/* clang-format on */ /* clang-format on */
/// Create input vectors /// Create input vectors
fvDigiT0 = new std::vector<CbmTofDigi>(); fvDigiBmon = new std::vector<CbmTofDigi>();
fvDigiSts = new std::vector<CbmStsDigi>(); fvDigiSts = new std::vector<CbmStsDigi>();
fvDigiMuch = new std::vector<CbmMuchBeamTimeDigi>(); fvDigiMuch = new std::vector<CbmMuchBeamTimeDigi>();
fvDigiTrd = new std::vector<CbmTrdDigi>(); fvDigiTrd = new std::vector<CbmTrdDigi>();
...@@ -290,7 +290,7 @@ try { ...@@ -290,7 +290,7 @@ try {
if (NULL == fTimeSliceMetaDataArray) { throw InitTaskError("Failed creating the TS meta data TClonesarray "); } if (NULL == fTimeSliceMetaDataArray) { throw InitTaskError("Failed creating the TS meta data TClonesarray "); }
ioman->Register("TimesliceMetaData", "TS Meta Data", fTimeSliceMetaDataArray, kFALSE); ioman->Register("TimesliceMetaData", "TS Meta Data", fTimeSliceMetaDataArray, kFALSE);
/// Digis storage /// Digis storage
ioman->RegisterAny("T0Digi", fvDigiT0, kFALSE); ioman->RegisterAny("BmonDigi", fvDigiBmon, kFALSE);
ioman->RegisterAny("StsDigi", fvDigiSts, kFALSE); ioman->RegisterAny("StsDigi", fvDigiSts, kFALSE);
ioman->RegisterAny("MuchBeamTimeDigi", fvDigiMuch, kFALSE); ioman->RegisterAny("MuchBeamTimeDigi", fvDigiMuch, kFALSE);
ioman->RegisterAny("TrdDigi", fvDigiTrd, kFALSE); ioman->RegisterAny("TrdDigi", fvDigiTrd, kFALSE);
...@@ -492,11 +492,11 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/) ...@@ -492,11 +492,11 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/)
]) TimesliceMetaData(std::move(*fTsMetaData)); ]) TimesliceMetaData(std::move(*fTsMetaData));
++uPartIdx; ++uPartIdx;
/// T0 /// BMON
std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrBmon(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issT0(msgStrT0); std::istringstream issBmon(msgStrBmon);
boost::archive::binary_iarchive inputArchiveT0(issT0); boost::archive::binary_iarchive inputArchiveBmon(issBmon);
inputArchiveT0 >> *fvDigiT0; inputArchiveBmon >> *fvDigiBmon;
++uPartIdx; ++uPartIdx;
/// STS /// STS
...@@ -520,7 +520,7 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/) ...@@ -520,7 +520,7 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/)
inputArchiveTrd >> *fvDigiTrd; inputArchiveTrd >> *fvDigiTrd;
++uPartIdx; ++uPartIdx;
/// T0F /// TOF
std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issTof(msgStrTof); std::istringstream issTof(msgStrTof);
boost::archive::binary_iarchive inputArchiveTof(issTof); boost::archive::binary_iarchive inputArchiveTof(issTof);
...@@ -552,7 +552,7 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/) ...@@ -552,7 +552,7 @@ bool CbmDeviceMcbmEventBuilderWin::HandleData(FairMQParts& parts, int /*index*/)
// delete fTsMetaData; // delete fTsMetaData;
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
...@@ -660,7 +660,7 @@ CbmDeviceMcbmEventBuilderWin::~CbmDeviceMcbmEventBuilderWin() ...@@ -660,7 +660,7 @@ CbmDeviceMcbmEventBuilderWin::~CbmDeviceMcbmEventBuilderWin()
delete fTsMetaData; delete fTsMetaData;
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
......
...@@ -59,7 +59,7 @@ private: ...@@ -59,7 +59,7 @@ private:
/// User settings parameters /// User settings parameters
/// Algo enum settings /// Algo enum settings
std::string fsEvtOverMode = "NoOverlap"; std::string fsEvtOverMode = "NoOverlap";
std::string fsRefDet = "kT0"; std::string fsRefDet = "kBmon";
std::vector<std::string> fvsAddDet = {}; std::vector<std::string> fvsAddDet = {};
std::vector<std::string> fvsDelDet = {}; std::vector<std::string> fvsDelDet = {};
std::vector<std::string> fvsSetTrigWin = {}; std::vector<std::string> fvsSetTrigWin = {};
...@@ -104,7 +104,7 @@ private: ...@@ -104,7 +104,7 @@ private:
TClonesArray* fTimeSliceMetaDataArray = nullptr; //! TClonesArray* fTimeSliceMetaDataArray = nullptr; //!
TimesliceMetaData* fTsMetaData = nullptr; TimesliceMetaData* fTsMetaData = nullptr;
/// Digis storage /// Digis storage
std::vector<CbmTofDigi>* fvDigiT0 = nullptr; std::vector<CbmTofDigi>* fvDigiBmon = nullptr;
std::vector<CbmStsDigi>* fvDigiSts = nullptr; std::vector<CbmStsDigi>* fvDigiSts = nullptr;
std::vector<CbmMuchBeamTimeDigi>* fvDigiMuch = nullptr; std::vector<CbmMuchBeamTimeDigi>* fvDigiMuch = nullptr;
std::vector<CbmTrdDigi>* fvDigiTrd = nullptr; std::vector<CbmTrdDigi>* fvDigiTrd = nullptr;
......
...@@ -54,7 +54,7 @@ struct InitTaskError : std::runtime_error { ...@@ -54,7 +54,7 @@ struct InitTaskError : std::runtime_error {
using namespace std; using namespace std;
//Bool_t bMcbm2018MonitorTaskT0ResetHistos = kFALSE; //Bool_t bMcbm2018MonitorTaskBmonResetHistos = kFALSE;
CbmDeviceMcbmEventSink::CbmDeviceMcbmEventSink() {} CbmDeviceMcbmEventSink::CbmDeviceMcbmEventSink() {}
...@@ -105,7 +105,7 @@ try { ...@@ -105,7 +105,7 @@ try {
// InitContainers(); // InitContainers();
/// Create input vectors /// Create input vectors
fvDigiT0 = new std::vector<CbmTofDigi>(); fvDigiBmon = new std::vector<CbmTofDigi>();
fvDigiSts = new std::vector<CbmStsDigi>(); fvDigiSts = new std::vector<CbmStsDigi>();
fvDigiMuch = new std::vector<CbmMuchBeamTimeDigi>(); fvDigiMuch = new std::vector<CbmMuchBeamTimeDigi>();
fvDigiTrd = new std::vector<CbmTrdDigi>(); fvDigiTrd = new std::vector<CbmTrdDigi>();
...@@ -151,7 +151,7 @@ try { ...@@ -151,7 +151,7 @@ try {
/// TS MetaData /// TS MetaData
fpFairRootMgr->Register("TimesliceMetaData", "TS Meta Data", fTimeSliceMetaDataArray, kTRUE); fpFairRootMgr->Register("TimesliceMetaData", "TS Meta Data", fTimeSliceMetaDataArray, kTRUE);
/// Digis storage /// Digis storage
fpFairRootMgr->RegisterAny("T0Digi", fvDigiT0, kTRUE); fpFairRootMgr->RegisterAny("BmonDigi", fvDigiBmon, kTRUE);
fpFairRootMgr->RegisterAny("StsDigi", fvDigiSts, kTRUE); fpFairRootMgr->RegisterAny("StsDigi", fvDigiSts, kTRUE);
fpFairRootMgr->RegisterAny("MuchBeamTimeDigi", fvDigiMuch, kTRUE); fpFairRootMgr->RegisterAny("MuchBeamTimeDigi", fvDigiMuch, kTRUE);
fpFairRootMgr->RegisterAny("TrdDigi", fvDigiTrd, kTRUE); fpFairRootMgr->RegisterAny("TrdDigi", fvDigiTrd, kTRUE);
...@@ -541,15 +541,15 @@ void CbmDeviceMcbmEventSink::PrepareTreeEntry(CbmUnpackedTimeslice unpTs) ...@@ -541,15 +541,15 @@ void CbmDeviceMcbmEventSink::PrepareTreeEntry(CbmUnpackedTimeslice unpTs)
/* /*
/// Explicit copy version: safe but slow /// Explicit copy version: safe but slow
/// T0 /// Bmon
fvDigiT0->insert( fvDigiT0->end(), unpTs.fvDigiT0.begin(), unpTs.fvDigiT0.end() ); fvDigiBmon->insert( fvDigiBmon->end(), unpTs.fvDigiBmon.begin(), unpTs.fvDigiBmon.end() );
/// STS /// STS
fvDigiSts->insert( fvDigiSts->end(), unpTs.fvDigiSts.begin(), unpTs.fvDigiSts.end() ); fvDigiSts->insert( fvDigiSts->end(), unpTs.fvDigiSts.begin(), unpTs.fvDigiSts.end() );
/// MUCH /// MUCH
fvDigiMuch->insert( fvDigiMuch->end(), unpTs.fvDigiMuch.begin(), unpTs.fvDigiMuch.end() ); fvDigiMuch->insert( fvDigiMuch->end(), unpTs.fvDigiMuch.begin(), unpTs.fvDigiMuch.end() );
/// TRD /// TRD
fvDigiTrd->insert( fvDigiTrd->end(), unpTs.fvDigiTrd.begin(), unpTs.fvDigiTrd.end() ); fvDigiTrd->insert( fvDigiTrd->end(), unpTs.fvDigiTrd.begin(), unpTs.fvDigiTrd.end() );
/// T0F /// BmonF
fvDigiTof->insert( fvDigiTof->end(), unpTs.fvDigiTof.begin(), unpTs.fvDigiTof.end() ); fvDigiTof->insert( fvDigiTof->end(), unpTs.fvDigiTof.begin(), unpTs.fvDigiTof.end() );
/// RICH /// RICH
fvDigiRich->insert( fvDigiRich->end(), unpTs.fvDigiRich.begin(), unpTs.fvDigiRich.end() ); fvDigiRich->insert( fvDigiRich->end(), unpTs.fvDigiRich.begin(), unpTs.fvDigiRich.end() );
...@@ -557,15 +557,15 @@ void CbmDeviceMcbmEventSink::PrepareTreeEntry(CbmUnpackedTimeslice unpTs) ...@@ -557,15 +557,15 @@ void CbmDeviceMcbmEventSink::PrepareTreeEntry(CbmUnpackedTimeslice unpTs)
fvDigiPsd->insert( fvDigiPsd->end(), unpTs.fvDigiPsd.begin(), unpTs.fvDigiPsd.end() ); fvDigiPsd->insert( fvDigiPsd->end(), unpTs.fvDigiPsd.begin(), unpTs.fvDigiPsd.end() );
*/ */
/// move version: safe but slow /// move version: safe but slow
/// T0 /// Bmon
(*fvDigiT0) = std::move(unpTs.fvDigiT0); (*fvDigiBmon) = std::move(unpTs.fvDigiBmon);
/// STS /// STS
(*fvDigiSts) = std::move(unpTs.fvDigiSts); (*fvDigiSts) = std::move(unpTs.fvDigiSts);
/// MUCH /// MUCH
(*fvDigiMuch) = std::move(unpTs.fvDigiMuch); (*fvDigiMuch) = std::move(unpTs.fvDigiMuch);
/// TRD /// TRD
(*fvDigiTrd) = std::move(unpTs.fvDigiTrd); (*fvDigiTrd) = std::move(unpTs.fvDigiTrd);
/// T0F /// BmonF
(*fvDigiTof) = std::move(unpTs.fvDigiTof); (*fvDigiTof) = std::move(unpTs.fvDigiTof);
/// RICH /// RICH
(*fvDigiRich) = std::move(unpTs.fvDigiRich); (*fvDigiRich) = std::move(unpTs.fvDigiRich);
...@@ -597,7 +597,7 @@ void CbmDeviceMcbmEventSink::DumpTreeEntry() ...@@ -597,7 +597,7 @@ void CbmDeviceMcbmEventSink::DumpTreeEntry()
fTimeSliceMetaDataArray->Clear(); fTimeSliceMetaDataArray->Clear();
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
...@@ -645,7 +645,7 @@ CbmDeviceMcbmEventSink::~CbmDeviceMcbmEventSink() ...@@ -645,7 +645,7 @@ CbmDeviceMcbmEventSink::~CbmDeviceMcbmEventSink()
delete fTsMetaData; delete fTsMetaData;
/// Clear vectors /// Clear vectors
fvDigiT0->clear(); fvDigiBmon->clear();
fvDigiSts->clear(); fvDigiSts->clear();
fvDigiMuch->clear(); fvDigiMuch->clear();
fvDigiTrd->clear(); fvDigiTrd->clear();
...@@ -703,11 +703,11 @@ CbmUnpackedTimeslice::CbmUnpackedTimeslice(FairMQParts& parts) : fEventsArray("C ...@@ -703,11 +703,11 @@ CbmUnpackedTimeslice::CbmUnpackedTimeslice(FairMQParts& parts) : fEventsArray("C
fTsMetaData = *(static_cast<TimesliceMetaData*>(tempObjectMeta)); fTsMetaData = *(static_cast<TimesliceMetaData*>(tempObjectMeta));
} // if( TString( tempObject->ClassName() ).EqualTo( "TClonesArray") ) } // if( TString( tempObject->ClassName() ).EqualTo( "TClonesArray") )
/// T0 /// Bmon
std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrBmon(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issT0(msgStrT0); std::istringstream issBmon(msgStrBmon);
boost::archive::binary_iarchive inputArchiveT0(issT0); boost::archive::binary_iarchive inputArchiveBmon(issBmon);
inputArchiveT0 >> fvDigiT0; inputArchiveBmon >> fvDigiBmon;
++uPartIdx; ++uPartIdx;
/// STS /// STS
...@@ -731,7 +731,7 @@ CbmUnpackedTimeslice::CbmUnpackedTimeslice(FairMQParts& parts) : fEventsArray("C ...@@ -731,7 +731,7 @@ CbmUnpackedTimeslice::CbmUnpackedTimeslice(FairMQParts& parts) : fEventsArray("C
inputArchiveTrd >> fvDigiTrd; inputArchiveTrd >> fvDigiTrd;
++uPartIdx; ++uPartIdx;
/// T0F /// BmonF
std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrTof(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issTof(msgStrTof); std::istringstream issTof(msgStrTof);
boost::archive::binary_iarchive inputArchiveTof(issTof); boost::archive::binary_iarchive inputArchiveTof(issTof);
...@@ -767,7 +767,7 @@ CbmUnpackedTimeslice::CbmUnpackedTimeslice(FairMQParts& parts) : fEventsArray("C ...@@ -767,7 +767,7 @@ CbmUnpackedTimeslice::CbmUnpackedTimeslice(FairMQParts& parts) : fEventsArray("C
CbmUnpackedTimeslice::~CbmUnpackedTimeslice() CbmUnpackedTimeslice::~CbmUnpackedTimeslice()
{ {
fvDigiT0.clear(); fvDigiBmon.clear();
fvDigiSts.clear(); fvDigiSts.clear();
fvDigiMuch.clear(); fvDigiMuch.clear();
fvDigiTrd.clear(); fvDigiTrd.clear();
......
...@@ -51,7 +51,7 @@ public: ...@@ -51,7 +51,7 @@ public:
~CbmUnpackedTimeslice(); ~CbmUnpackedTimeslice();
TimesliceMetaData fTsMetaData; TimesliceMetaData fTsMetaData;
std::vector<CbmTofDigi> fvDigiT0; std::vector<CbmTofDigi> fvDigiBmon;
std::vector<CbmStsDigi> fvDigiSts; std::vector<CbmStsDigi> fvDigiSts;
std::vector<CbmMuchBeamTimeDigi> fvDigiMuch; std::vector<CbmMuchBeamTimeDigi> fvDigiMuch;
std::vector<CbmTrdDigi> fvDigiTrd; std::vector<CbmTrdDigi> fvDigiTrd;
...@@ -120,7 +120,7 @@ private: ...@@ -120,7 +120,7 @@ private:
TClonesArray* fTimeSliceMetaDataArray = nullptr; //! TClonesArray* fTimeSliceMetaDataArray = nullptr; //!
TimesliceMetaData* fTsMetaData = nullptr; TimesliceMetaData* fTsMetaData = nullptr;
/// Digis storage /// Digis storage
std::vector<CbmTofDigi>* fvDigiT0 = nullptr; std::vector<CbmTofDigi>* fvDigiBmon = nullptr;
std::vector<CbmStsDigi>* fvDigiSts = nullptr; std::vector<CbmStsDigi>* fvDigiSts = nullptr;
std::vector<CbmMuchBeamTimeDigi>* fvDigiMuch = nullptr; std::vector<CbmMuchBeamTimeDigi>* fvDigiMuch = nullptr;
std::vector<CbmTrdDigi>* fvDigiTrd = nullptr; std::vector<CbmTrdDigi>* fvDigiTrd = nullptr;
......
...@@ -272,10 +272,10 @@ bool CbmDeviceMcbmMonitorPulser::HandleData(FairMQParts& parts, int /*index*/) ...@@ -272,10 +272,10 @@ bool CbmDeviceMcbmMonitorPulser::HandleData(FairMQParts& parts, int /*index*/)
RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData); RootSerializer().Deserialize(*parts.At(uPartIdx), fTsMetaData);
++uPartIdx; ++uPartIdx;
std::string msgStrT0(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrBmon(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
std::istringstream issT0(msgStrT0); std::istringstream issBmon(msgStrBmon);
boost::archive::binary_iarchive inputArchiveT0(issT0); boost::archive::binary_iarchive inputArchiveBmon(issBmon);
inputArchiveT0 >> fvDigiT0; inputArchiveBmon >> fvDigiBmon;
++uPartIdx; ++uPartIdx;
std::string msgStrSts(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize()); std::string msgStrSts(static_cast<char*>(parts.At(uPartIdx)->GetData()), (parts.At(uPartIdx))->GetSize());
...@@ -318,7 +318,7 @@ bool CbmDeviceMcbmMonitorPulser::HandleData(FairMQParts& parts, int /*index*/) ...@@ -318,7 +318,7 @@ bool CbmDeviceMcbmMonitorPulser::HandleData(FairMQParts& parts, int /*index*/)
/// Clear vectors /// Clear vectors
delete fTsMetaData; delete fTsMetaData;
fvDigiT0.clear(); fvDigiBmon.clear();
fvDigiSts.clear(); fvDigiSts.clear();
fvDigiMuch.clear(); fvDigiMuch.clear();
fvDigiTrd.clear(); fvDigiTrd.clear();
......
...@@ -91,7 +91,7 @@ private: ...@@ -91,7 +91,7 @@ private:
/// TS MetaData storage /// TS MetaData storage
TimesliceMetaData* fTsMetaData = nullptr; TimesliceMetaData* fTsMetaData = nullptr;
/// Digis storage /// Digis storage
std::vector<CbmTofDigi> fvDigiT0 = {}; std::vector<CbmTofDigi> fvDigiBmon = {};
std::vector<CbmStsDigi> fvDigiSts = {}; std::vector<CbmStsDigi> fvDigiSts = {};
std::vector<CbmMuchBeamTimeDigi> fvDigiMuch = {}; std::vector<CbmMuchBeamTimeDigi> fvDigiMuch = {};
std::vector<CbmTrdDigi> fvDigiTrd = {}; std::vector<CbmTrdDigi> fvDigiTrd = {};
...@@ -128,7 +128,7 @@ private: ...@@ -128,7 +128,7 @@ private:
void CreateHistos(); void CreateHistos();
/// Variables to store the previous digi time /// Variables to store the previous digi time
Double_t fPrevTimeT0 = 0.; Double_t fPrevTimeBmon = 0.;
Double_t fPrevTimeSts = 0.; Double_t fPrevTimeSts = 0.;
Double_t fPrevTimeMuch = 0.; Double_t fPrevTimeMuch = 0.;
Double_t fPrevTimeTrd = 0.; Double_t fPrevTimeTrd = 0.;
...@@ -136,19 +136,19 @@ private: ...@@ -136,19 +136,19 @@ private:
Double_t fPrevTimeRich = 0.; Double_t fPrevTimeRich = 0.;
Double_t fPrevTimePsd = 0.; Double_t fPrevTimePsd = 0.;
/// Variables to store the first digi fitting the previous T0 hits /// Variables to store the first digi fitting the previous Bmon hits
/// => Time-order means the time window for following one can only be in a later digi /// => Time-order means the time window for following one can only be in a later digi
Int_t fPrevT0FirstDigiSts = 0; Int_t fPrevBmonFirstDigiSts = 0;
Int_t fPrevT0FirstDigiMuch = 0; Int_t fPrevBmonFirstDigiMuch = 0;
Int_t fPrevT0FirstDigiTrd = 0; Int_t fPrevBmonFirstDigiTrd = 0;
Int_t fPrevT0FirstDigiTof = 0; Int_t fPrevBmonFirstDigiTof = 0;
Int_t fPrevT0FirstDigiRich = 0; Int_t fPrevBmonFirstDigiRich = 0;
Int_t fPrevT0FirstDigiPsd = 0; Int_t fPrevBmonFirstDigiPsd = 0;
/// User settings: Data correction parameters /// User settings: Data correction parameters
/// Charge cut /// Charge cut
UInt_t fuMinTotPulserT0 = 182; UInt_t fuMinTotPulserBmon = 182;
UInt_t fuMaxTotPulserT0 = 190; UInt_t fuMaxTotPulserBmon = 190;
UInt_t fuMinAdcPulserSts = 90; UInt_t fuMinAdcPulserSts = 90;
UInt_t fuMaxAdcPulserSts = 100; UInt_t fuMaxAdcPulserSts = 100;
UInt_t fuMinAdcPulserMuch = 5; UInt_t fuMinAdcPulserMuch = 5;
...@@ -184,37 +184,37 @@ private: ...@@ -184,37 +184,37 @@ private:
Int_t fBinWidth = 1; Int_t fBinWidth = 1;
TH1* fT0StsDiff = nullptr; TH1* fBmonStsDiff = nullptr;
TH1* fT0MuchDiff = nullptr; TH1* fBmonMuchDiff = nullptr;
TH1* fT0TrdDiff = nullptr; TH1* fBmonTrdDiff = nullptr;
TH1* fT0TofDiff = nullptr; TH1* fBmonTofDiff = nullptr;
TH1* fT0RichDiff = nullptr; TH1* fBmonRichDiff = nullptr;
TH1* fT0PsdDiff = nullptr; TH1* fBmonPsdDiff = nullptr;
TH2* fT0PsdDiffCharge = nullptr; TH2* fBmonPsdDiffCharge = nullptr;
TH2* fT0StsDiffEvo = nullptr; TH2* fBmonStsDiffEvo = nullptr;
TH2* fT0MuchDiffEvo = nullptr; TH2* fBmonMuchDiffEvo = nullptr;
TH2* fT0TrdDiffEvo = nullptr; TH2* fBmonTrdDiffEvo = nullptr;
TH2* fT0TofDiffEvo = nullptr; TH2* fBmonTofDiffEvo = nullptr;
TH2* fT0RichDiffEvo = nullptr; TH2* fBmonRichDiffEvo = nullptr;
TH2* fT0PsdDiffEvo = nullptr; TH2* fBmonPsdDiffEvo = nullptr;
TH2* fT0StsDiffEvoLong = nullptr; TH2* fBmonStsDiffEvoLong = nullptr;
TH2* fT0MuchDiffEvoLong = nullptr; TH2* fBmonMuchDiffEvoLong = nullptr;
TH2* fT0TrdDiffEvoLong = nullptr; TH2* fBmonTrdDiffEvoLong = nullptr;
TH2* fT0TofDiffEvoLong = nullptr; TH2* fBmonTofDiffEvoLong = nullptr;
TH2* fT0RichDiffEvoLong = nullptr; TH2* fBmonRichDiffEvoLong = nullptr;
TH2* fT0PsdDiffEvoLong = nullptr; TH2* fBmonPsdDiffEvoLong = nullptr;
Double_t fdStartTime = -1; Double_t fdStartTime = -1;
TProfile* fT0StsMeanEvo = nullptr; TProfile* fBmonStsMeanEvo = nullptr;
TProfile* fT0MuchMeanEvo = nullptr; TProfile* fBmonMuchMeanEvo = nullptr;
TProfile* fT0TrdMeanEvo = nullptr; TProfile* fBmonTrdMeanEvo = nullptr;
TProfile* fT0TofMeanEvo = nullptr; TProfile* fBmonTofMeanEvo = nullptr;
TProfile* fT0RichMeanEvo = nullptr; TProfile* fBmonRichMeanEvo = nullptr;
TProfile* fT0PsdMeanEvo = nullptr; TProfile* fBmonPsdMeanEvo = nullptr;
TH1* fT0T0Diff = nullptr; TH1* fBmonBmonDiff = nullptr;
TH1* fStsStsDiff = nullptr; TH1* fStsStsDiff = nullptr;
TH1* fMuchMuchDiff = nullptr; TH1* fMuchMuchDiff = nullptr;
TH1* fTrdTrdDiff = nullptr; TH1* fTrdTrdDiff = nullptr;
...@@ -222,14 +222,14 @@ private: ...@@ -222,14 +222,14 @@ private:
TH1* fRichRichDiff = nullptr; TH1* fRichRichDiff = nullptr;
TH1* fPsdPsdDiff = nullptr; TH1* fPsdPsdDiff = nullptr;
TH2* fT0StsNb = nullptr; TH2* fBmonStsNb = nullptr;
TH2* fT0MuchNb = nullptr; TH2* fBmonMuchNb = nullptr;
TH2* fT0TrdNb = nullptr; TH2* fBmonTrdNb = nullptr;
TH2* fT0TofNb = nullptr; TH2* fBmonTofNb = nullptr;
TH2* fT0RichNb = nullptr; TH2* fBmonRichNb = nullptr;
TH2* fT0PsdNb = nullptr; TH2* fBmonPsdNb = nullptr;
Int_t fiT0Nb = 0; Int_t fiBmonNb = 0;
Int_t fiStsNb = 0; Int_t fiStsNb = 0;
Int_t fiMuchNb = 0; Int_t fiMuchNb = 0;
Int_t fiTrdNb = 0; Int_t fiTrdNb = 0;
...@@ -237,25 +237,25 @@ private: ...@@ -237,25 +237,25 @@ private:
Int_t fiRichNb = 0; Int_t fiRichNb = 0;
Int_t fiPsdNb = 0; Int_t fiPsdNb = 0;
TH1* fT0Address = nullptr; TH1* fBmonAddress = nullptr;
TH1* fT0Channel = nullptr; TH1* fBmonChannel = nullptr;
TH2* fT0StsDpbDiff = nullptr; TH2* fBmonStsDpbDiff = nullptr;
TH2* fT0StsDpbDiffEvo[kuMaxNbStsDpbs]; TH2* fBmonStsDpbDiffEvo[kuMaxNbStsDpbs];
TH1* fStsDpbCntsEvo[kuMaxNbStsDpbs]; TH1* fStsDpbCntsEvo[kuMaxNbStsDpbs];
TH2* fT0MuchRocDiff = nullptr; TH2* fBmonMuchRocDiff = nullptr;
TH2* fT0MuchAsicDiff = nullptr; TH2* fBmonMuchAsicDiff = nullptr;
TH2* fT0MuchAsicDiffEvo[kuMaxNbMuchAsics]; TH2* fBmonMuchAsicDiffEvo[kuMaxNbMuchAsics];
TH2* fDigisPerAsicEvo = nullptr; TH2* fDigisPerAsicEvo = nullptr;
Double_t fdLastMuchDigi[kuMaxNbMuchAsics][kuNbChanSMX]; Double_t fdLastMuchDigi[kuMaxNbMuchAsics][kuNbChanSMX];
Double_t fdLastMuchDigiPulser[kuMaxNbMuchAsics][kuNbChanSMX]; Double_t fdLastMuchDigiPulser[kuMaxNbMuchAsics][kuNbChanSMX];
TH2* fSameChanDigisDistEvo = nullptr; TH2* fSameChanDigisDistEvo = nullptr;
Double_t fdLastT0DigiPulser = 0; Double_t fdLastBmonDigiPulser = 0;
TH2* fDigiTimeEvoT0 = nullptr; TH2* fDigiTimeEvoBmon = nullptr;
TH2* fDigiTimeEvoSts = nullptr; TH2* fDigiTimeEvoSts = nullptr;
TH2* fDigiTimeEvoMuch = nullptr; TH2* fDigiTimeEvoMuch = nullptr;
TH2* fDigiTimeEvoTof = nullptr; TH2* fDigiTimeEvoTof = nullptr;
......
...@@ -49,7 +49,7 @@ struct InitTaskError : std::runtime_error { ...@@ -49,7 +49,7 @@ struct InitTaskError : std::runtime_error {
using namespace std; using namespace std;
Bool_t bMcbm2018MonitorTaskT0ResetHistos = kFALSE; Bool_t bMcbm2018MonitorTaskBmonResetHistos = kFALSE;
CbmDeviceMcbmUnpack::CbmDeviceMcbmUnpack() CbmDeviceMcbmUnpack::CbmDeviceMcbmUnpack()
{ {
...@@ -69,7 +69,7 @@ try { ...@@ -69,7 +69,7 @@ try {
fvsSetTimeOffs = fConfig->GetValue<std::vector<std::string>>("SetTrigWin"); fvsSetTimeOffs = fConfig->GetValue<std::vector<std::string>>("SetTrigWin");
fsChannelNameDataInput = fConfig->GetValue<std::string>("TsNameIn"); fsChannelNameDataInput = fConfig->GetValue<std::string>("TsNameIn");
fsChannelNameDataOutput = fConfig->GetValue<std::string>("TsNameOut"); fsChannelNameDataOutput = fConfig->GetValue<std::string>("TsNameOut");
/// TODO: option to set fuDigiMaskedIdT0 !!!! /// TODO: option to set fuDigiMaskedIdBmon !!!!
fsAllowedChannels[0] = fsChannelNameDataInput; fsAllowedChannels[0] = fsChannelNameDataInput;
// Get the information about created channels from the device // Get the information about created channels from the device
...@@ -323,20 +323,20 @@ bool CbmDeviceMcbmUnpack::SendUnpData() ...@@ -323,20 +323,20 @@ bool CbmDeviceMcbmUnpack::SendUnpData()
oaTrd << fUnpAlgoTrd->GetVector(); oaTrd << fUnpAlgoTrd->GetVector();
std::string* strMsgTrd = new std::string(ossTrd.str()); std::string* strMsgTrd = new std::string(ossTrd.str());
/// Split TOF vector in TOF and T0 /// Split TOF vector in TOF and Bmon
std::vector<CbmTofDigi>& vDigiTofT0 = fUnpAlgoTof->GetVector(); std::vector<CbmTofDigi>& vDigiTofBmon = fUnpAlgoTof->GetVector();
std::vector<CbmTofDigi> vDigiTof = {}; std::vector<CbmTofDigi> vDigiTof = {};
std::vector<CbmTofDigi> vDigiT0 = {}; std::vector<CbmTofDigi> vDigiBmon = {};
for (auto digi : vDigiTofT0) { for (auto digi : vDigiTofBmon) {
if (fuDigiMaskedIdT0 == (digi.GetAddress() & fuDigiMaskId)) { if (fuDigiMaskedIdBmon == (digi.GetAddress() & fuDigiMaskId)) {
/// Insert data in T0 output container /// Insert data in Bmon output container
vDigiT0.emplace_back(digi); vDigiBmon.emplace_back(digi);
} // if( fuDigiMaskedIdT0 == ( digi.GetAddress() & fuDigiMaskId ) ) } // if( fuDigiMaskedIdBmon == ( digi.GetAddress() & fuDigiMaskId ) )
else { else {
/// Insert data in TOF output container /// Insert data in TOF output container
vDigiTof.emplace_back(digi); vDigiTof.emplace_back(digi);
} // else of if( fuDigiMaskedIdT0 == ( digi.GetAddress() & fuDigiMaskId ) ) } // else of if( fuDigiMaskedIdBmon == ( digi.GetAddress() & fuDigiMaskId ) )
} // for( auto digi: vDigi ) } // for( auto digi: vDigi )
std::stringstream ossTof; std::stringstream ossTof;
...@@ -344,10 +344,10 @@ bool CbmDeviceMcbmUnpack::SendUnpData() ...@@ -344,10 +344,10 @@ bool CbmDeviceMcbmUnpack::SendUnpData()
oaTof << vDigiTof; oaTof << vDigiTof;
std::string* strMsgTof = new std::string(ossTof.str()); std::string* strMsgTof = new std::string(ossTof.str());
std::stringstream ossT0; std::stringstream ossBmon;
boost::archive::binary_oarchive oaT0(ossT0); boost::archive::binary_oarchive oaBmon(ossBmon);
oaT0 << vDigiT0; oaBmon << vDigiBmon;
std::string* strMsgT0 = new std::string(ossT0.str()); std::string* strMsgBmon = new std::string(ossBmon.str());
std::stringstream ossRich; std::stringstream ossRich;
boost::archive::binary_oarchive oaRich(ossRich); boost::archive::binary_oarchive oaRich(ossRich);
...@@ -372,10 +372,10 @@ bool CbmDeviceMcbmUnpack::SendUnpData() ...@@ -372,10 +372,10 @@ bool CbmDeviceMcbmUnpack::SendUnpData()
*/ */
parts.AddPart(NewMessage( parts.AddPart(NewMessage(
const_cast<char*>(strMsgT0->c_str()), // data const_cast<char*>(strMsgBmon->c_str()), // data
strMsgT0->length(), // size strMsgBmon->length(), // size
[](void*, void* object) { delete static_cast<std::string*>(object); }, [](void*, void* object) { delete static_cast<std::string*>(object); },
strMsgT0)); // object that manages the data strMsgBmon)); // object that manages the data
parts.AddPart(NewMessage( parts.AddPart(NewMessage(
const_cast<char*>(strMsgSts->c_str()), // data const_cast<char*>(strMsgSts->c_str()), // data
...@@ -456,10 +456,10 @@ Bool_t CbmDeviceMcbmUnpack::DoUnpack(const fles::Timeslice& ts, size_t /*compone ...@@ -456,10 +456,10 @@ Bool_t CbmDeviceMcbmUnpack::DoUnpack(const fles::Timeslice& ts, size_t /*compone
fUnpAlgoTof->AddMsComponentToList(uCompIdx, kusSysIdTof); fUnpAlgoTof->AddMsComponentToList(uCompIdx, kusSysIdTof);
break; break;
} // case kusSysIdTof } // case kusSysIdTof
case kusSysIdT0: { case kusSysIdBmon: {
fUnpAlgoTof->AddMsComponentToList(uCompIdx, kusSysIdT0); fUnpAlgoTof->AddMsComponentToList(uCompIdx, kusSysIdBmon);
break; break;
} // case kusSysIdT0 } // case kusSysIdBmon
case kusSysIdRich: { case kusSysIdRich: {
fUnpAlgoRich->AddMsComponentToList(uCompIdx, kusSysIdRich); fUnpAlgoRich->AddMsComponentToList(uCompIdx, kusSysIdRich);
break; break;
......
...@@ -49,7 +49,7 @@ private: ...@@ -49,7 +49,7 @@ private:
static const uint16_t kusSysIdMuch = 0x50; static const uint16_t kusSysIdMuch = 0x50;
static const uint16_t kusSysIdTrd = 0x40; static const uint16_t kusSysIdTrd = 0x40;
static const uint16_t kusSysIdTof = 0x60; static const uint16_t kusSysIdTof = 0x60;
static const uint16_t kusSysIdT0 = 0x90; static const uint16_t kusSysIdBmon = 0x90;
static const uint16_t kusSysIdRich = 0x30; static const uint16_t kusSysIdRich = 0x30;
static const uint16_t kusSysIdPsd = 0x80; static const uint16_t kusSysIdPsd = 0x80;
...@@ -61,7 +61,7 @@ private: ...@@ -61,7 +61,7 @@ private:
std::string fsChannelNameDataInput = "fullts"; std::string fsChannelNameDataInput = "fullts";
std::string fsChannelNameDataOutput = "unpts_0"; std::string fsChannelNameDataOutput = "unpts_0";
std::string fsChannelNameCommands = "commands"; std::string fsChannelNameCommands = "commands";
UInt_t fuDigiMaskedIdT0 = 0x00005006; UInt_t fuDigiMaskedIdBmon = 0x00005006;
UInt_t fuDigiMaskId = 0x0001FFFF; UInt_t fuDigiMaskId = 0x0001FFFF;
/// List of MQ channels names /// List of MQ channels names
......
...@@ -53,7 +53,7 @@ struct InitTaskError : std::runtime_error { ...@@ -53,7 +53,7 @@ struct InitTaskError : std::runtime_error {
using namespace std; using namespace std;
//Bool_t bMcbm2018MonitorTaskT0ResetHistos = kFALSE; //Bool_t bMcbm2018MonitorTaskBmonResetHistos = kFALSE;
CbmDeviceUnpack::CbmDeviceUnpack() {} CbmDeviceUnpack::CbmDeviceUnpack() {}
...@@ -320,38 +320,18 @@ Bool_t CbmDeviceUnpack::InitContainers() ...@@ -320,38 +320,18 @@ Bool_t CbmDeviceUnpack::InitContainers()
trdfasp2dconfig->SetDoWriteOutput(); trdfasp2dconfig->SetDoWriteOutput();
// Activate the line below to write Trd1D digis to a separate "TrdFaspDigi" branch. Can be used to separate between Fasp and Spadic digis // Activate the line below to write Trd1D digis to a separate "TrdFaspDigi" branch. Can be used to separate between Fasp and Spadic digis
//trdfasp2dconfig->SetOutputBranchName("TrdFaspDigi"); //trdfasp2dconfig->SetOutputBranchName("TrdFaspDigi");
uint8_t map[NFASPMOD]; // uint16_t crob_map[NCROBMOD];
uint16_t crob_map[NCROBMOD]; // if (fuRunId <= 1588) {
for (uint32_t i(0); i < NFASPMOD; i++) // uint16_t crob_map21[] = {0x00f0, 0, 0, 0, 0};
map[i] = i; // for (uint32_t i(0); i < NCROBMOD; i++)
if (fuRunId <= 1588) { // crob_map[i] = crob_map21[i];
const size_t nfasps = 12; // }
uint8_t map21[] = {9, 2, 3, 11, 10, 7, 8, 0, 1, 4, 6, 5}; // else if (fuRunId >= 2335) {
for (uint32_t i(0); i < nfasps; i++) // uint16_t crob_map22[] = {0xffc2, 0xffc5, 0xffc1, 0, 0};
map[i] = map21[i]; // for (uint32_t i(0); i < NCROBMOD; i++)
uint16_t crob_map21[] = {0x00f0, 0, 0, 0, 0}; // crob_map[i] = crob_map22[i];
for (uint32_t i(0); i < NCROBMOD; i++) // }
crob_map[i] = crob_map21[i]; // trdfasp2dconfig->SetCrobMapping(5, crob_map);
}
else if (fuRunId >= 2335) {
const size_t nfasp0 = 72;
const size_t nfasps = 36;
uint8_t map22[] = {
84, 85, 86, 87, 88, 89, // FEB14/0xffc1
90, 91, 92, 93, 94, 95, // FEB17/0xffc1
96, 97, 98, 99, 100, 101, // FEB18/0xffc1
102, 103, 104, 105, 106, 107, // FEB16/0xffc1
72, 73, 74, 75, 76, 77, // FEB9/0xffc1
78, 79, 80, 81, 82, 83 // FEB8/0xffc1
};
for (uint32_t i(0); i < nfasps; i++)
map[i + nfasp0] = map22[i];
uint16_t crob_map22[] = {0xffc2, 0xffc5, 0xffc1, 0, 0};
for (uint32_t i(0); i < NCROBMOD; i++)
crob_map[i] = crob_map22[i];
}
trdfasp2dconfig->SetFaspMapping(5, map);
trdfasp2dconfig->SetCrobMapping(5, crob_map);
std::string parfilesbasepathTrdfasp2d = Form("%s/parameters/trd", srcDir.Data()); std::string parfilesbasepathTrdfasp2d = Form("%s/parameters/trd", srcDir.Data());
trdfasp2dconfig->SetParFilesBasePath(parfilesbasepathTrdfasp2d); trdfasp2dconfig->SetParFilesBasePath(parfilesbasepathTrdfasp2d);
trdfasp2dconfig->SetSystemTimeOffset(-1800); // [ns] value to be updated trdfasp2dconfig->SetSystemTimeOffset(-1800); // [ns] value to be updated
...@@ -433,7 +413,7 @@ Bool_t CbmDeviceUnpack::InitContainers() ...@@ -433,7 +413,7 @@ Bool_t CbmDeviceUnpack::InitContainers()
richconfig->DoTotOffsetCorrection(); // correct ToT offset richconfig->DoTotOffsetCorrection(); // correct ToT offset
richconfig->SetDebugState(); richconfig->SetDebugState();
richconfig->SetDoWriteOutput(); richconfig->SetDoWriteOutput();
std::string parfilesbasepathRich = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data()); std::string parfilesbasepathRich = Form("%s/macro/beamtime/mcbm2024/", srcDir.Data());
richconfig->SetParFilesBasePath(parfilesbasepathRich); richconfig->SetParFilesBasePath(parfilesbasepathRich);
richconfig->SetSystemTimeOffset(256000 - 1200); // [ns] 1 MS and additional correction richconfig->SetSystemTimeOffset(256000 - 1200); // [ns] 1 MS and additional correction
if (1904 < fuRunId) richconfig->SetSystemTimeOffset(-1200); if (1904 < fuRunId) richconfig->SetSystemTimeOffset(-1200);
...@@ -491,9 +471,9 @@ Bool_t CbmDeviceUnpack::InitContainers() ...@@ -491,9 +471,9 @@ Bool_t CbmDeviceUnpack::InitContainers()
charPosDel++; charPosDel++;
int32_t iOffset = std::stoi((*itStrOffs).substr(charPosDel)); int32_t iOffset = std::stoi((*itStrOffs).substr(charPosDel));
if ("kT0" == sSelDet && fBmonConfig) { // if ("kBmon" == sSelDet && fBmonConfig) { //
fBmonConfig->SetSystemTimeOffset(iOffset); fBmonConfig->SetSystemTimeOffset(iOffset);
} // else if( "kT0" == sSelDet ) } // else if( "kBmon" == sSelDet )
else if ("kSTS" == sSelDet && fStsConfig) { // else if ("kSTS" == sSelDet && fStsConfig) { //
fStsConfig->SetSystemTimeOffset(iOffset); fStsConfig->SetSystemTimeOffset(iOffset);
} // if( "kSTS" == sSelDet && fStsConfig) } // if( "kSTS" == sSelDet && fStsConfig)
...@@ -849,14 +829,14 @@ bool CbmDeviceUnpack::SendUnpData() ...@@ -849,14 +829,14 @@ bool CbmDeviceUnpack::SendUnpData()
parts.AddPart(std::move(messTsHeader)); parts.AddPart(std::move(messTsHeader));
// ---- T0 ---- // ---- Bmon ----
std::stringstream ossBmon; std::stringstream ossBmon;
boost::archive::binary_oarchive oaBmon(ossBmon); boost::archive::binary_oarchive oaBmon(ossBmon);
if (fBmonConfig) { // if (fBmonConfig) { //
oaBmon << *(fBmonConfig->GetOutputVec()); oaBmon << *(fBmonConfig->GetOutputVec());
} }
else { else {
oaBmon << (std::vector<CbmTofDigi>()); oaBmon << (std::vector<CbmBmonDigi>());
} }
std::string* strMsgBmon = new std::string(ossBmon.str()); std::string* strMsgBmon = new std::string(ossBmon.str());
......
...@@ -77,15 +77,15 @@ protected: ...@@ -77,15 +77,15 @@ protected:
private: private:
/// Constants /// Constants
static constexpr std::uint16_t fkFlesBmon = static_cast<std::uint16_t>(fles::SubsystemIdentifier::T0); static constexpr std::uint16_t fkFlesBmon = static_cast<std::uint16_t>(fles::Subsystem::BMON);
static constexpr std::uint16_t fkFlesMvd = static_cast<std::uint16_t>(fles::SubsystemIdentifier::MVD); static constexpr std::uint16_t fkFlesMvd = static_cast<std::uint16_t>(fles::Subsystem::MVD);
static constexpr std::uint16_t fkFlesSts = static_cast<std::uint16_t>(fles::SubsystemIdentifier::STS); static constexpr std::uint16_t fkFlesSts = static_cast<std::uint16_t>(fles::Subsystem::STS);
static constexpr std::uint16_t fkFlesMuch = static_cast<std::uint16_t>(fles::SubsystemIdentifier::MUCH); static constexpr std::uint16_t fkFlesMuch = static_cast<std::uint16_t>(fles::Subsystem::MUCH);
static constexpr std::uint16_t fkFlesTrd = static_cast<std::uint16_t>(fles::SubsystemIdentifier::TRD); static constexpr std::uint16_t fkFlesTrd = static_cast<std::uint16_t>(fles::Subsystem::TRD);
static constexpr std::uint16_t fkFlesTrd2D = static_cast<std::uint16_t>(fles::SubsystemIdentifier::TRD2D); static constexpr std::uint16_t fkFlesTrd2D = static_cast<std::uint16_t>(fles::Subsystem::TRD2D);
static constexpr std::uint16_t fkFlesTof = static_cast<std::uint16_t>(fles::SubsystemIdentifier::RPC); static constexpr std::uint16_t fkFlesTof = static_cast<std::uint16_t>(fles::Subsystem::TOF);
static constexpr std::uint16_t fkFlesRich = static_cast<std::uint16_t>(fles::SubsystemIdentifier::RICH); static constexpr std::uint16_t fkFlesRich = static_cast<std::uint16_t>(fles::Subsystem::RICH);
static constexpr std::uint16_t fkFlesPsd = static_cast<std::uint16_t>(fles::SubsystemIdentifier::PSD); static constexpr std::uint16_t fkFlesPsd = static_cast<std::uint16_t>(fles::Subsystem::PSD);
/// Control flags /// Control flags
...@@ -271,10 +271,10 @@ private: ...@@ -271,10 +271,10 @@ private:
std::clock_t cpuendtime = std::clock(); std::clock_t cpuendtime = std::clock();
auto wallendtime = std::chrono::high_resolution_clock::now(); auto wallendtime = std::chrono::high_resolution_clock::now();
// Cpu time in [µs] // Cpu time in [mus]
auto cputime = 1e6 * (cpuendtime - cpustarttime) / CLOCKS_PER_SEC; auto cputime = 1e6 * (cpuendtime - cpustarttime) / CLOCKS_PER_SEC;
algo->AddCpuTime(cputime); algo->AddCpuTime(cputime);
// Real time in [µs] // Real time in [mus]
auto walltime = std::chrono::duration<double, std::micro>(wallendtime - wallstarttime).count(); auto walltime = std::chrono::duration<double, std::micro>(wallendtime - wallstarttime).count();
algo->AddWallTime(walltime); algo->AddWallTime(walltime);
...@@ -282,7 +282,7 @@ private: ...@@ -282,7 +282,7 @@ private:
// Check some numbers from this timeslice // Check some numbers from this timeslice
size_t nDigis = digivec.size(); size_t nDigis = digivec.size();
LOG(debug) << "Component " << icomp << " connected to config " << config->GetName() << " n-Digis " << nDigis LOG(debug) << "Component " << icomp << " connected to config " << config->GetName() << " n-Digis " << nDigis
<< " processed in walltime(cputime) = " << walltime << "(" << cputime << cputime << ") µs" << " processed in walltime(cputime) = " << walltime << "(" << cputime << cputime << ") micro s"
<< "this timeslice."; << "this timeslice.";
if (fDoPerfProf) { if (fDoPerfProf) {
......
...@@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options) ...@@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options)
options.add_options()("IgnTsOver", bpo::value<bool>()->default_value(false), "Ignore TS overlap if true"); options.add_options()("IgnTsOver", bpo::value<bool>()->default_value(false), "Ignore TS overlap if true");
options.add_options()("EvtOverMode", bpo::value<std::string>()->default_value("NoOverlap"), options.add_options()("EvtOverMode", bpo::value<std::string>()->default_value("NoOverlap"),
"Set the event overlap mode, use string matching an EOverlapMode "); "Set the event overlap mode, use string matching an EOverlapMode ");
options.add_options()("RefDet", bpo::value<std::string>()->default_value("kT0"), options.add_options()("RefDet", bpo::value<std::string>()->default_value("kBmon"),
"Set the reference (seed) detector, use string matching an ECbmModuleId "); "Set the reference (seed) detector, use string matching an ECbmModuleId ");
options.add_options()("AddDet", bpo::value<std::vector<std::string>>()->multitoken()->composing(), options.add_options()("AddDet", bpo::value<std::vector<std::string>>()->multitoken()->composing(),
"Add a detector for digis selection, use string matching an ECbmModuleId "); "Add a detector for digis selection, use string matching an ECbmModuleId ");
......
...@@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options) ...@@ -19,7 +19,7 @@ void addCustomOptions(bpo::options_description& options)
options.add_options()("IgnTsOver", bpo::value<bool>()->default_value(false), "Ignore TS overlap if true"); options.add_options()("IgnTsOver", bpo::value<bool>()->default_value(false), "Ignore TS overlap if true");
options.add_options()("EvtOverMode", bpo::value<std::string>()->default_value("NoOverlap"), options.add_options()("EvtOverMode", bpo::value<std::string>()->default_value("NoOverlap"),
"Set the event overlap mode, use string matching an EOverlapMode "); "Set the event overlap mode, use string matching an EOverlapMode ");
options.add_options()("RefDet", bpo::value<std::string>()->default_value("kT0"), options.add_options()("RefDet", bpo::value<std::string>()->default_value("kBmon"),
"Set the reference (seed) detector, use string matching an ECbmModuleId "); "Set the reference (seed) detector, use string matching an ECbmModuleId ");
options.add_options()("AddDet", bpo::value<std::vector<std::string>>()->multitoken()->composing(), options.add_options()("AddDet", bpo::value<std::vector<std::string>>()->multitoken()->composing(),
"Add a detector for digis selection, use string matching an ECbmModuleId "); "Add a detector for digis selection, use string matching an ECbmModuleId ");
......
...@@ -33,6 +33,8 @@ void addCustomOptions(bpo::options_description& options) ...@@ -33,6 +33,8 @@ void addCustomOptions(bpo::options_description& options)
options.add_options()("DigiEventInput", bpo::value<bool>()->default_value(false), options.add_options()("DigiEventInput", bpo::value<bool>()->default_value(false),
"Enable the input of CbmDigiEvents instead of raw data + CbmEvents if true"); "Enable the input of CbmDigiEvents instead of raw data + CbmEvents if true");
options.add_options()("ExclusiveTrdExtract", bpo::value<bool>()->default_value(true),
"Enable loop based extraction of TRD digis to handle different 1D/2D sel windows if true");
options.add_options()("FillHistos", bpo::value<bool>()->default_value(false), options.add_options()("FillHistos", bpo::value<bool>()->default_value(false),
"Fill histograms and send them to histo server if true"); "Fill histograms and send them to histo server if true");
......