diff --git a/algo/ca/TrackingChain.cxx b/algo/ca/TrackingChain.cxx index 451d9cd177c68396d1cf9810e05b139580dd6397..42ca815cdf7613da5ad72183c1f1a8f6918cec87 100644 --- a/algo/ca/TrackingChain.cxx +++ b/algo/ca/TrackingChain.cxx @@ -11,6 +11,8 @@ #include "tof/Config.h" +#include <unordered_map> + #include <xpu/host.h> #include "CaConstants.h" @@ -78,7 +80,9 @@ TrackingChain::Return_t TrackingChain::Run(Input_t recoResults) // --------------------------------------------------------------------------------------------------------------------- // -void TrackingChain::Finalize() { L_(info) << fCaMonitor.ToString(); } +void TrackingChain::Finalize() +{ /*L_(info) << fCaMonitor.ToString();*/ +} // --------------------------------------------------------------------------------------------------------------------- // @@ -112,6 +116,7 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi ca::HitKeyIndex_t firstHitKey = fNofHitKeys; int64_t dataStreamDet = static_cast<int64_t>(DetID) << 60; // detector part of the data stream + for (size_t iPartition = 0; iPartition < hits.NPartitions(); ++iPartition) { const auto& [vHits, extHitAddress] = hits.Partition(iPartition); // ---- Define data stream and station index @@ -120,7 +125,10 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi // FIXME: This definition of the station index works only for STS, and there is no any guaranty, that it will // work for other mCBM setups. if constexpr (IsSts) { iStLocal = (extHitAddress >> 4) & 0xF; } - if constexpr (IsTof) { iStLocal = tof::Config::GetTofTrackingStation(extHitAddress); } + if constexpr (IsTof) { + iStLocal = tof::Config::GetTofTrackingStation(extHitAddress); + if (tof::Config::IsT0(extHitAddress)) { continue; } // skip hits from T0 + } int iStActive = (iStLocal != -1) ? fCaFramework.GetParameters().GetStationIndexActive(iStLocal, DetID) : -1; size_t iOffset = hits.Offsets()[iPartition]; @@ -154,9 +162,15 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi caHit.SetStation(iStActive); caHit.SetId(fCaDataManager.GetNofHits()); if (caHit.Check()) { + //L_(info) << caHit.ToString(); + if constexpr (IsSts) { + if (fNofHitKeys <= caHit.FrontKey()) { fNofHitKeys = caHit.FrontKey() + 1; } + if (fNofHitKeys <= caHit.BackKey()) { fNofHitKeys = caHit.BackKey() + 1; } + } + else { + if (fNofHitKeys <= caHit.FrontKey()) { fNofHitKeys = caHit.FrontKey() + 1; } + } fCaDataManager.PushBackHit(caHit, dataStream); - if (fNofHitKeys <= caHit.FrontKey()) { fNofHitKeys = caHit.FrontKey() + 1; } - if (fNofHitKeys <= caHit.BackKey()) { fNofHitKeys = caHit.BackKey() + 1; } } else { if constexpr (IsMvd) { fCaMonitorData.IncrementCounter(ca::ECounter::UndefinedMvdHit); } diff --git a/algo/ca/core/data/CaHit.h b/algo/ca/core/data/CaHit.h index 1544c57fb1f676679cd5fa9e43599d69d7100070..0020fd809c1b08abd4acf4e4ee17050585f867fd 100644 --- a/algo/ca/core/data/CaHit.h +++ b/algo/ca/core/data/CaHit.h @@ -200,6 +200,8 @@ namespace cbm::algo::ca res &= std::isfinite(fDy2); res &= std::isfinite(fDxy); res &= std::isfinite(fDt2); + res &= (fDx2 || fDy2 || fDxy || fDt2); // TODO: research + res &= (fT < 1.e+9); return res; } diff --git a/algo/detectors/tof/Config.h b/algo/detectors/tof/Config.h index 4d7a4213514175cfe26d6853ce47666da2542cb7..cc116eed5e7cddc923b9ad3a6247b6b30a090d29 100644 --- a/algo/detectors/tof/Config.h +++ b/algo/detectors/tof/Config.h @@ -27,6 +27,8 @@ namespace cbm::algo::tof CbmTofAddress::GetRpcId(address)); } + static bool IsT0(uint32_t address) { return 5 == CbmTofAddress::GetSmType(address); } + static int32_t GetTofTrackingStation(const uint32_t smType, const uint32_t sm, const uint32_t rpc) { const uint8_t numSmTypes = 10; diff --git a/algo/params/mcbm_beam_2022_05_23_nickel.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel.ca.par deleted file mode 100644 index ebe88b3ac6cb93f536e92fd3206dc9ec9e8da18f..0000000000000000000000000000000000000000 Binary files a/algo/params/mcbm_beam_2022_05_23_nickel.ca.par and /dev/null differ diff --git a/algo/params/mcbm_beam_2022_05_23_nickel.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel.ca.par new file mode 120000 index 0000000000000000000000000000000000000000..b58faf6f782128d02e469311ce99b556434c76d1 --- /dev/null +++ b/algo/params/mcbm_beam_2022_05_23_nickel.ca.par @@ -0,0 +1 @@ +mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par \ No newline at end of file diff --git a/algo/params/mcbm_beam_2022_05_23_nickel_ONLY_STS.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel_ONLY_STS.ca.par new file mode 100644 index 0000000000000000000000000000000000000000..4db73c143da00a2908dbe7d7a4df090f772ecb7a Binary files /dev/null and b/algo/params/mcbm_beam_2022_05_23_nickel_ONLY_STS.ca.par differ diff --git a/algo/params/mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par new file mode 100644 index 0000000000000000000000000000000000000000..ebe88b3ac6cb93f536e92fd3206dc9ec9e8da18f Binary files /dev/null and b/algo/params/mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par differ