From 4c661db302ba4ec6f8de89d07bb4702cfcc5ec73 Mon Sep 17 00:00:00 2001 From: "P.-A. Loizeau" <p.-a.loizeau@gsi.de> Date: Thu, 9 Dec 2021 16:38:17 +0100 Subject: [PATCH] In TOF unpacker, make the 2021 epoch hack controlable and disable it by default + enable in unpack macro for old runs --- MQ/mcbm/CbmDeviceUnpack.cxx | 227 ++++++++---------- MQ/mcbm/startBuildRawEvents2021.sh.in | 18 +- macro/run/run_unpack_tsa.C | 4 + .../detectors/tof/unpack/CbmTofUnpackAlgo.cxx | 15 +- reco/detectors/tof/unpack/CbmTofUnpackAlgo.h | 10 +- .../tof/unpack/CbmTofUnpackConfig.cxx | 8 +- .../detectors/tof/unpack/CbmTofUnpackConfig.h | 17 +- 7 files changed, 154 insertions(+), 145 deletions(-) diff --git a/MQ/mcbm/CbmDeviceUnpack.cxx b/MQ/mcbm/CbmDeviceUnpack.cxx index 3932fca43a..ff015a3200 100644 --- a/MQ/mcbm/CbmDeviceUnpack.cxx +++ b/MQ/mcbm/CbmDeviceUnpack.cxx @@ -155,6 +155,108 @@ Bool_t CbmDeviceUnpack::InitContainers() stsconfig->MaskNoisyChannel(3, 75); stsconfig->MaskNoisyChannel(3, 56); stsconfig->MaskNoisyChannel(9, 709); + + // Time OffSet + // U2 MOD1 + stsconfig->SetAsicTimeOffset(104, 0.235097); + stsconfig->SetAsicTimeOffset(105, -0.919854); + stsconfig->SetAsicTimeOffset(106, 0.470871); + stsconfig->SetAsicTimeOffset(107, -0.302136); + stsconfig->SetAsicTimeOffset(108, 0.0538701); + stsconfig->SetAsicTimeOffset(109, -0.726945); + stsconfig->SetAsicTimeOffset(110, -0.474958); + stsconfig->SetAsicTimeOffset(111, -0.426105); + stsconfig->SetAsicTimeOffset(112, -0.642128); + stsconfig->SetAsicTimeOffset(113, 3.90217); + stsconfig->SetAsicTimeOffset(114, 4.50206); + stsconfig->SetAsicTimeOffset(115, 4.16447); + stsconfig->SetAsicTimeOffset(116, 5.00525); + stsconfig->SetAsicTimeOffset(117, 4.2554); + stsconfig->SetAsicTimeOffset(118, 5.51313); + stsconfig->SetAsicTimeOffset(119, 3.38058); + // U2 MOD0 + stsconfig->SetAsicTimeOffset(88, 5.32785); + stsconfig->SetAsicTimeOffset(89, 5.10337); + stsconfig->SetAsicTimeOffset(90, 6.63223); + stsconfig->SetAsicTimeOffset(91, 4.44318); + stsconfig->SetAsicTimeOffset(92, 6.5406); + stsconfig->SetAsicTimeOffset(93, 3.82063); + stsconfig->SetAsicTimeOffset(94, 5.8673); + stsconfig->SetAsicTimeOffset(95, 4.41679); + stsconfig->SetAsicTimeOffset(96, 0.917994); + stsconfig->SetAsicTimeOffset(97, 2.7819); + stsconfig->SetAsicTimeOffset(98, 5.61836); + stsconfig->SetAsicTimeOffset(99, 5.9533); + stsconfig->SetAsicTimeOffset(100, 5.9789); + stsconfig->SetAsicTimeOffset(101, 5.24167); + stsconfig->SetAsicTimeOffset(102, 7.14848); + stsconfig->SetAsicTimeOffset(103, 6.12267); + // U1 MOD1 + stsconfig->SetAsicTimeOffset(64, 6.94614); + stsconfig->SetAsicTimeOffset(65, 6.79433); + stsconfig->SetAsicTimeOffset(66, 5.57188); + stsconfig->SetAsicTimeOffset(67, 4.78256); + stsconfig->SetAsicTimeOffset(68, 4.47773); + stsconfig->SetAsicTimeOffset(69, 3.70702); + stsconfig->SetAsicTimeOffset(70, 4.02281); + stsconfig->SetAsicTimeOffset(71, 4.74402); + stsconfig->SetAsicTimeOffset(72, 2.13448); + stsconfig->SetAsicTimeOffset(73, 3.28798); + stsconfig->SetAsicTimeOffset(74, 4.13604); + stsconfig->SetAsicTimeOffset(76, 5.02552); + stsconfig->SetAsicTimeOffset(77, 3.55128); + stsconfig->SetAsicTimeOffset(78, 4.66596); + stsconfig->SetAsicTimeOffset(79, 3.76298); + // U1 MOD0 + stsconfig->SetAsicTimeOffset(48, 10.0742); + stsconfig->SetAsicTimeOffset(49, 9.31221); + stsconfig->SetAsicTimeOffset(50, 6.09788); + stsconfig->SetAsicTimeOffset(51, 2.85866); + stsconfig->SetAsicTimeOffset(52, 5.45111); + stsconfig->SetAsicTimeOffset(53, 3.18376); + stsconfig->SetAsicTimeOffset(54, 4.77448); + stsconfig->SetAsicTimeOffset(55, 3.20388); + stsconfig->SetAsicTimeOffset(56, 3.37812); + stsconfig->SetAsicTimeOffset(57, 4.08165); + stsconfig->SetAsicTimeOffset(58, 5.06481); + stsconfig->SetAsicTimeOffset(59, 4.39388); + stsconfig->SetAsicTimeOffset(60, 5.63931); + stsconfig->SetAsicTimeOffset(61, 4.15354); + stsconfig->SetAsicTimeOffset(62, 6.67062); + stsconfig->SetAsicTimeOffset(63, 6.33579); + // U0 MOD1 + stsconfig->SetAsicTimeOffset(24, 5.01505); + stsconfig->SetAsicTimeOffset(25, 3.84039); + stsconfig->SetAsicTimeOffset(26, 5.36344); + stsconfig->SetAsicTimeOffset(27, 2.96807); + stsconfig->SetAsicTimeOffset(28, 4.14668); + stsconfig->SetAsicTimeOffset(29, 2.4282); + stsconfig->SetAsicTimeOffset(30, 4.02055); + stsconfig->SetAsicTimeOffset(31, 4.13309); + stsconfig->SetAsicTimeOffset(32, 1.2073); + stsconfig->SetAsicTimeOffset(33, 4.02747); + stsconfig->SetAsicTimeOffset(34, 5.03306); + stsconfig->SetAsicTimeOffset(35, 3.5234); + stsconfig->SetAsicTimeOffset(36, 5.41946); + stsconfig->SetAsicTimeOffset(37, 4.82807); + stsconfig->SetAsicTimeOffset(38, 6.33436); + stsconfig->SetAsicTimeOffset(39, 4.71413); + // U0 MOD0 + stsconfig->SetAsicTimeOffset(8, 8.15031); + stsconfig->SetAsicTimeOffset(9, 6.99897); + stsconfig->SetAsicTimeOffset(10, 8.14826); + stsconfig->SetAsicTimeOffset(11, 3.29095); + stsconfig->SetAsicTimeOffset(12, 3.04337); + stsconfig->SetAsicTimeOffset(14, 3.71628); + stsconfig->SetAsicTimeOffset(15, 3.82512); + stsconfig->SetAsicTimeOffset(16, 4.05862); + stsconfig->SetAsicTimeOffset(17, 4.53291); + stsconfig->SetAsicTimeOffset(18, 5.22825); + stsconfig->SetAsicTimeOffset(19, 4.93144); + stsconfig->SetAsicTimeOffset(20, 6.33821); + stsconfig->SetAsicTimeOffset(21, 5.66979); + stsconfig->SetAsicTimeOffset(22, 9.33802); + stsconfig->SetAsicTimeOffset(23, 7.41302); } } // if ("" != stsSetupTag) // ------------- @@ -211,6 +313,10 @@ Bool_t CbmDeviceUnpack::InitContainers() std::string parfilesbasepathTof = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data()); tofconfig->SetParFilesBasePath(parfilesbasepathTof); tofconfig->SetSystemTimeOffset(-1220); // [ns] value to be updated + if (fuRunId <= 1659) { + /// Switch ON the -4 offset in epoch count (hack for Spring-Summer 2021) + tofconfig->SetFlagEpochCountHack2021(); + } } } // if ("" != tofSetupTag) // ------------- @@ -275,127 +381,6 @@ Bool_t CbmDeviceUnpack::InitContainers() if ("kSTS" == sSelDet && fStsConfig) { // fStsConfig->SetSystemTimeOffset(iOffset); - - fStsConfig->SetMinAdcCut(1, 1); - fStsConfig->SetMinAdcCut(2, 1); - fStsConfig->SetMinAdcCut(3, 1); - fStsConfig->SetMinAdcCut(4, 1); - - fStsConfig->MaskNoisyChannel(7, 715); - fStsConfig->MaskNoisyChannel(7, 162); - fStsConfig->MaskNoisyChannel(7, 159); - fStsConfig->MaskNoisyChannel(7, 158); - fStsConfig->MaskNoisyChannel(7, 125); - fStsConfig->MaskNoisyChannel(7, 124); - fStsConfig->MaskNoisyChannel(7, 123); - fStsConfig->MaskNoisyChannel(12, 119); - fStsConfig->MaskNoisyChannel(3, 85); - fStsConfig->MaskNoisyChannel(3, 79); - fStsConfig->MaskNoisyChannel(3, 75); - fStsConfig->MaskNoisyChannel(3, 56); - fStsConfig->MaskNoisyChannel(9, 709); - - // Time OffSet - // U2 MOD1 - fStsConfig->SetAsicTimeOffset(104, 0.235097); - fStsConfig->SetAsicTimeOffset(105, -0.919854); - fStsConfig->SetAsicTimeOffset(106, 0.470871); - fStsConfig->SetAsicTimeOffset(107, -0.302136); - fStsConfig->SetAsicTimeOffset(108, 0.0538701); - fStsConfig->SetAsicTimeOffset(109, -0.726945); - fStsConfig->SetAsicTimeOffset(110, -0.474958); - fStsConfig->SetAsicTimeOffset(111, -0.426105); - fStsConfig->SetAsicTimeOffset(112, -0.642128); - fStsConfig->SetAsicTimeOffset(113, 3.90217); - fStsConfig->SetAsicTimeOffset(114, 4.50206); - fStsConfig->SetAsicTimeOffset(115, 4.16447); - fStsConfig->SetAsicTimeOffset(116, 5.00525); - fStsConfig->SetAsicTimeOffset(117, 4.2554); - fStsConfig->SetAsicTimeOffset(118, 5.51313); - fStsConfig->SetAsicTimeOffset(119, 3.38058); - // U2 MOD0 - fStsConfig->SetAsicTimeOffset(88, 5.32785); - fStsConfig->SetAsicTimeOffset(89, 5.10337); - fStsConfig->SetAsicTimeOffset(90, 6.63223); - fStsConfig->SetAsicTimeOffset(91, 4.44318); - fStsConfig->SetAsicTimeOffset(92, 6.5406); - fStsConfig->SetAsicTimeOffset(93, 3.82063); - fStsConfig->SetAsicTimeOffset(94, 5.8673); - fStsConfig->SetAsicTimeOffset(95, 4.41679); - fStsConfig->SetAsicTimeOffset(96, 0.917994); - fStsConfig->SetAsicTimeOffset(97, 2.7819); - fStsConfig->SetAsicTimeOffset(98, 5.61836); - fStsConfig->SetAsicTimeOffset(99, 5.9533); - fStsConfig->SetAsicTimeOffset(100, 5.9789); - fStsConfig->SetAsicTimeOffset(101, 5.24167); - fStsConfig->SetAsicTimeOffset(102, 7.14848); - fStsConfig->SetAsicTimeOffset(103, 6.12267); - // U1 MOD1 - fStsConfig->SetAsicTimeOffset(64, 6.94614); - fStsConfig->SetAsicTimeOffset(65, 6.79433); - fStsConfig->SetAsicTimeOffset(66, 5.57188); - fStsConfig->SetAsicTimeOffset(67, 4.78256); - fStsConfig->SetAsicTimeOffset(68, 4.47773); - fStsConfig->SetAsicTimeOffset(69, 3.70702); - fStsConfig->SetAsicTimeOffset(70, 4.02281); - fStsConfig->SetAsicTimeOffset(71, 4.74402); - fStsConfig->SetAsicTimeOffset(72, 2.13448); - fStsConfig->SetAsicTimeOffset(73, 3.28798); - fStsConfig->SetAsicTimeOffset(74, 4.13604); - fStsConfig->SetAsicTimeOffset(76, 5.02552); - fStsConfig->SetAsicTimeOffset(77, 3.55128); - fStsConfig->SetAsicTimeOffset(78, 4.66596); - fStsConfig->SetAsicTimeOffset(79, 3.76298); - // U1 MOD0 - fStsConfig->SetAsicTimeOffset(48, 10.0742); - fStsConfig->SetAsicTimeOffset(49, 9.31221); - fStsConfig->SetAsicTimeOffset(50, 6.09788); - fStsConfig->SetAsicTimeOffset(51, 2.85866); - fStsConfig->SetAsicTimeOffset(52, 5.45111); - fStsConfig->SetAsicTimeOffset(53, 3.18376); - fStsConfig->SetAsicTimeOffset(54, 4.77448); - fStsConfig->SetAsicTimeOffset(55, 3.20388); - fStsConfig->SetAsicTimeOffset(56, 3.37812); - fStsConfig->SetAsicTimeOffset(57, 4.08165); - fStsConfig->SetAsicTimeOffset(58, 5.06481); - fStsConfig->SetAsicTimeOffset(59, 4.39388); - fStsConfig->SetAsicTimeOffset(60, 5.63931); - fStsConfig->SetAsicTimeOffset(61, 4.15354); - fStsConfig->SetAsicTimeOffset(62, 6.67062); - fStsConfig->SetAsicTimeOffset(63, 6.33579); - // U0 MOD1 - fStsConfig->SetAsicTimeOffset(24, 5.01505); - fStsConfig->SetAsicTimeOffset(25, 3.84039); - fStsConfig->SetAsicTimeOffset(26, 5.36344); - fStsConfig->SetAsicTimeOffset(27, 2.96807); - fStsConfig->SetAsicTimeOffset(28, 4.14668); - fStsConfig->SetAsicTimeOffset(29, 2.4282); - fStsConfig->SetAsicTimeOffset(30, 4.02055); - fStsConfig->SetAsicTimeOffset(31, 4.13309); - fStsConfig->SetAsicTimeOffset(32, 1.2073); - fStsConfig->SetAsicTimeOffset(33, 4.02747); - fStsConfig->SetAsicTimeOffset(34, 5.03306); - fStsConfig->SetAsicTimeOffset(35, 3.5234); - fStsConfig->SetAsicTimeOffset(36, 5.41946); - fStsConfig->SetAsicTimeOffset(37, 4.82807); - fStsConfig->SetAsicTimeOffset(38, 6.33436); - fStsConfig->SetAsicTimeOffset(39, 4.71413); - // U0 MOD0 - fStsConfig->SetAsicTimeOffset(8, 8.15031); - fStsConfig->SetAsicTimeOffset(9, 6.99897); - fStsConfig->SetAsicTimeOffset(10, 8.14826); - fStsConfig->SetAsicTimeOffset(11, 3.29095); - fStsConfig->SetAsicTimeOffset(12, 3.04337); - fStsConfig->SetAsicTimeOffset(14, 3.71628); - fStsConfig->SetAsicTimeOffset(15, 3.82512); - fStsConfig->SetAsicTimeOffset(16, 4.05862); - fStsConfig->SetAsicTimeOffset(17, 4.53291); - fStsConfig->SetAsicTimeOffset(18, 5.22825); - fStsConfig->SetAsicTimeOffset(19, 4.93144); - fStsConfig->SetAsicTimeOffset(20, 6.33821); - fStsConfig->SetAsicTimeOffset(21, 5.66979); - fStsConfig->SetAsicTimeOffset(22, 9.33802); - fStsConfig->SetAsicTimeOffset(23, 7.41302); } // if( "kSTS" == sSelDet && fStsConfig) /* else if ("kMUCH" == sSelDet) { diff --git a/MQ/mcbm/startBuildRawEvents2021.sh.in b/MQ/mcbm/startBuildRawEvents2021.sh.in index d24b68e452..fa87455081 100755 --- a/MQ/mcbm/startBuildRawEvents2021.sh.in +++ b/MQ/mcbm/startBuildRawEvents2021.sh.in @@ -78,6 +78,7 @@ _parfileTof=$VMCWORKDIR/macro/beamtime/mcbm2021/mTofCriPar.par _parfileRich=$VMCWORKDIR/macro/beamtime/mcbm2021/mRichPar_70.par _parfilePsd=$VMCWORKDIR/macro/beamtime/mcbm2021/mPsdPar.par _setup_name=mcbm_beam_2021_07_surveyed +_run_id=1588 LOGFILETAG=`hostname` LOGFILETAG+="_" @@ -100,7 +101,7 @@ SAMPLER+=" --max-timeslices 300" SAMPLER+=" --severity info" #SAMPLER+=" --flib-port 10" if [ "$_hostname" != "" ]; then - SAMPLER+=" --flib-host $_hostname" + SAMPLER+=" --fles-host $_hostname" elif [ "$_filename" != "" ]; then SAMPLER+=" --filename $_filename" if [ "$_dirname" != "" ]; then @@ -137,6 +138,7 @@ while (( _iMoni < _nbmoni )); do UNPACKER+=" --severity info" #UNPACKER+=" --severity debug" UNPACKER+=" --Setup $_setup_name" + UNPACKER+=" --RunId $_run_id" UNPACKER+=" --IgnOverMs 1" UNPACKER+=" --SetTimeOffs kSTS,-2221" UNPACKER+=" --SetTimeOffs kMUCH,-885" @@ -159,11 +161,7 @@ while (( _iMoni < _nbmoni )); do # with ProcessName_hostname_yyyy_mm_dd_hh_mm_ss.log UNPACKER_LOG="unp$_iMoni" UNPACKER_LOG+="_$LOGFILETAG" - VALGRIND_UNP="valgrind -v --error-limit=no --suppressions=$ROOTSYS/share/root/etc/valgrind-root.supp --leak-check=full --show-reachable=yes --log-file=valgrind_unp_log.txt" - VALGHEAP_UNP="valgrind -v --tool=massif --massif-out-file=valgrind_unp_massif.out" xterm -l -lf $UNPACKER_LOG -geometry 132x23+400+$_yOffset -hold -e ${VMCWORKDIR}/build/bin/MQ/mcbm/$UNPACKER & -# xterm -l -lf $UNPACKER_LOG -geometry 80x23+400+$_yOffset -hold -e $VALGRIND_UNP ${VMCWORKDIR}/build/bin/MQ/mcbm/$UNPACKER & -# xterm -l -lf $UNPACKER_LOG -geometry 80x23+400+$_yOffset -hold -e $VALGHEAP_UNP ${VMCWORKDIR}/build/bin/MQ/mcbm/$UNPACKER & EVTBUILDER="BuildDigiEvents" EVTBUILDER+=" --id build$_iMoni" @@ -200,11 +198,7 @@ while (( _iMoni < _nbmoni )); do # with ProcessName_hostname_yyyy_mm_dd_hh_mm_ss.log EVTBUILDER_LOG="build$_iMoni" EVTBUILDER_LOG+="_$LOGFILETAG" - VALGRIND_EVT="valgrind -v --error-limit=no --suppressions=$ROOTSYS/share/root/etc/valgrind-root.supp --leak-check=full --show-reachable=yes --log-file=valgrind_evt_log.txt" - VALGHEAP_EVT="valgrind --tool=massif --massif-out-file=valgrind_evt_massif.out" xterm -l -lf $EVTBUILDER_LOG -geometry 80x23+800+$_yOffset -hold -e ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTBUILDER & -# xterm -l -lf $EVTBUILDER_LOG -geometry 80x23+800+$_yOffset -hold -e $VALGRIND_EVT ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTBUILDER & -# xterm -l -lf $EVTBUILDER_LOG -geometry 80x23+800+$_yOffset -hold -e $VALGHEAP_EVT ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTBUILDER & done @@ -226,13 +220,7 @@ EVTSINK+=" --channel-config name=histogram-in,type=sub,method=bind,transport=zer # Replaces log filename Xterm.log.hostname.yyyy.mm.dd.hh.mm.ss.XXXXXX # with ProcessName_hostname_yyyy_mm_dd_hh_mm_ss.log EVTSINK_LOG="evtsink1_$LOGFILETAG" -VALGRIND_SINK="valgrind -v --error-limit=no --suppressions=$ROOTSYS/share/root/etc/valgrind-root.supp --leak-check=full --show-reachable=yes --log-file=valgrind_sink_log.txt" -VALGHEAP_SINK="valgrind -v --tool=massif --massif-out-file=valgrind_sink_massif.out" -VALGCPU_SINK="valgrind -v --tool=callgrind" xterm -l -lf $EVTSINK_LOG -geometry 80x23+1200+0 -hold -e ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTSINK & -#xterm -l -lf $EVTSINK_LOG -geometry 80x23+1200+0 -hold -e $VALGRIND_SINK ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTSINK & -#xterm -l -lf $EVTSINK_LOG -geometry 80x23+1200+0 -hold -e $VALGHEAP_SINK ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTSINK & -#xterm -l -lf $EVTSINK_LOG -geometry 80x23+1200+0 -hold -e $VALGCPU_SINK ${VMCWORKDIR}/build/bin/MQ/mcbm/$EVTSINK & PARAMETERSERVER="parmq-server" PARAMETERSERVER+=" --id parmq-server" diff --git a/macro/run/run_unpack_tsa.C b/macro/run/run_unpack_tsa.C index 414458909b..0b3580be02 100644 --- a/macro/run/run_unpack_tsa.C +++ b/macro/run/run_unpack_tsa.C @@ -304,6 +304,10 @@ void run_unpack_tsa(std::vector<std::string> infile = {"test.tsa"}, UInt_t runid std::string parfilesbasepathTof = Form("%s/macro/beamtime/mcbm2021/", srcDir.Data()); tofconfig->SetParFilesBasePath(parfilesbasepathTof); tofconfig->SetSystemTimeOffset(-1220); // [ns] value to be updated + if (runid <= 1659) { + /// Switch ON the -4 offset in epoch count (hack for Spring-Summer 2021) + tofconfig->SetFlagEpochCountHack2021(); + } } // ------------- diff --git a/reco/detectors/tof/unpack/CbmTofUnpackAlgo.cxx b/reco/detectors/tof/unpack/CbmTofUnpackAlgo.cxx index 1ea2930449..9028346435 100644 --- a/reco/detectors/tof/unpack/CbmTofUnpackAlgo.cxx +++ b/reco/detectors/tof/unpack/CbmTofUnpackAlgo.cxx @@ -291,12 +291,15 @@ void CbmTofUnpackAlgo::ProcessEpoch(const critof001::Message& mess, uint32_t uMe if (0 == uMesgIdx) { uint64_t ulMsStartInEpoch = static_cast<uint64_t>(fulCurrentMsIdx / critof001::kuEpochInNs) % critof001::kulEpochCycleEp; - /// FIXME: seems there is an offset of +4 Epoch between data and header - /// from dt to PSD, the epoch seem to be right => placed in wrong MS! - if (ulMsStartInEpoch < 4) { ulMsStartInEpoch = critof001::kulEpochCycleEp + ulMsStartInEpoch - 4; } - else { - ulMsStartInEpoch -= 4; - } + + if (fbEpochCountHack2021) { + /// FIXME: seems there is an offset of +4 Epoch between data and header + /// from dt to PSD, the epoch seem to be right => placed in wrong MS! + if (ulMsStartInEpoch < 4) { ulMsStartInEpoch = critof001::kulEpochCycleEp + ulMsStartInEpoch - 4; } + else { + ulMsStartInEpoch -= 4; + } + } // if (fbEpochCountHack2021) if (ulEpochNr != ulMsStartInEpoch) { // size_t required to silence a warning on macos (there a uint64_t is a llu) diff --git a/reco/detectors/tof/unpack/CbmTofUnpackAlgo.h b/reco/detectors/tof/unpack/CbmTofUnpackAlgo.h index 09221cf818..4f30f574e7 100644 --- a/reco/detectors/tof/unpack/CbmTofUnpackAlgo.h +++ b/reco/detectors/tof/unpack/CbmTofUnpackAlgo.h @@ -64,6 +64,13 @@ public: virtual std::vector<std::pair<std::string, std::shared_ptr<FairParGenericSet>>>* GetParContainerRequest(std::string geoTag, std::uint32_t runId); + /** + * @brief Sets the flag enabling the epoch offset hack for the July 2021 data. Default is enable. + * + * @param[in] Optional: boolean flag value, default is true + */ + void SetFlagEpochCountHack2021(bool bFlagin = true) { fbEpochCountHack2021 = bFlagin; } + protected: /** @brief Finish function for this algorithm base clase */ void finish() @@ -174,6 +181,7 @@ private: ULong64_t fulCurrentEpoch = 0; //! Current epoch index /// Control flags + bool fbEpochCountHack2021 = false; std::vector<bool> fvbMaskedComponents = {}; bool fbLastEpochGood = false; @@ -182,7 +190,7 @@ private: uint64_t fulTsStartInEpoch = 0; uint64_t fulEpochIndexInTs = 0; - ClassDef(CbmTofUnpackAlgo, 1) + ClassDef(CbmTofUnpackAlgo, 2) }; #endif // CbmTofUnpackAlgo_H diff --git a/reco/detectors/tof/unpack/CbmTofUnpackConfig.cxx b/reco/detectors/tof/unpack/CbmTofUnpackConfig.cxx index a2a4d239c6..92820a8e1e 100644 --- a/reco/detectors/tof/unpack/CbmTofUnpackConfig.cxx +++ b/reco/detectors/tof/unpack/CbmTofUnpackConfig.cxx @@ -22,6 +22,13 @@ CbmTofUnpackConfig::CbmTofUnpackConfig(std::string detGeoSetupTag, UInt_t runid) CbmTofUnpackConfig::~CbmTofUnpackConfig() {} // ---- Init ---- +void CbmTofUnpackConfig::InitAlgo() +{ + fAlgo->SetFlagEpochCountHack2021(fbEpochCountHack2021); + + // Now we have all information required to initialise the algorithm + fAlgo->Init(); +} // ---- chooseAlgo ---- std::shared_ptr<CbmTofUnpackAlgo> CbmTofUnpackConfig::chooseAlgo() @@ -39,5 +46,4 @@ std::shared_ptr<CbmTofUnpackAlgo> CbmTofUnpackConfig::chooseAlgo() return nullptr; } - ClassImp(CbmTofUnpackConfig) diff --git a/reco/detectors/tof/unpack/CbmTofUnpackConfig.h b/reco/detectors/tof/unpack/CbmTofUnpackConfig.h index 4589a7bf8f..c99e16ae09 100644 --- a/reco/detectors/tof/unpack/CbmTofUnpackConfig.h +++ b/reco/detectors/tof/unpack/CbmTofUnpackConfig.h @@ -60,8 +60,20 @@ public: // Getters + /** + * @brief Initialize the algorithm, should include all steps needing te parameter objects to be present. + * In this function most initialization steps of the unpacker algorithms happen. + */ + void InitAlgo(); + // Setters + /** + * @brief Sets the flag enabling the epoch offset hack for the July 2021 data. Default is enable. + * + * @param[in] Optional: boolean flag value, default is true + */ + void SetFlagEpochCountHack2021(bool bFlagin = true) { fbEpochCountHack2021 = bFlagin; } protected: /** @@ -72,7 +84,10 @@ protected: virtual std::shared_ptr<CbmTofUnpackAlgo> chooseAlgo(); private: - ClassDef(CbmTofUnpackConfig, 1) + /// Control flags + bool fbEpochCountHack2021 = false; + + ClassDef(CbmTofUnpackConfig, 2) }; #endif // CbmTofUnpackConfig_H -- GitLab