From 57f13396c4bba853a72671ac250ba3e1f37a2686 Mon Sep 17 00:00:00 2001 From: "s.zharko@gsi.de" <s.zharko@gsi.de> Date: Wed, 11 Oct 2023 18:05:01 +0200 Subject: [PATCH] CA: moving L1InputData and L1IODataManager: applying documentation --- algo/ca/core/data/CaDataManager.cxx | 31 +++++----- algo/ca/core/data/CaDataManager.h | 64 ++++++++++----------- algo/ca/core/data/CaInputData.cxx | 6 +- algo/ca/core/data/CaInputData.h | 89 ++++++++++++----------------- algo/ca/core/pars/CaInitManager.h | 3 +- 5 files changed, 86 insertions(+), 107 deletions(-) diff --git a/algo/ca/core/data/CaDataManager.cxx b/algo/ca/core/data/CaDataManager.cxx index 72ba8a626c..8b15a43c31 100644 --- a/algo/ca/core/data/CaDataManager.cxx +++ b/algo/ca/core/data/CaDataManager.cxx @@ -75,14 +75,14 @@ void DataManager::ReadInputData(const std::string& fileName) // --------------------------------------------------------------------------------------------------------------------- // -void DataManager::ResetInputData(ca::HitIndex_t nHits) noexcept +void DataManager::ResetInputData(HitIndex_t nHits) noexcept { InputData tmp; fInputData.Swap(tmp); fLastStreamId = -1; - fInputData.fStreamStartIndices.reserve(2000); // TODO: What are these numbers? Please, put them into constants.h - fInputData.fStreamStopIndices.reserve(2000); - fInputData.fHits.reserve(nHits); + fInputData.fvStreamStartIndices.reserve(2000); // TODO: What are these numbers? Please, put them into constants.h + fInputData.fvStreamStopIndices.reserve(2000); + fInputData.fvHits.reserve(nHits); } // --------------------------------------------------------------------------------------------------------------------- @@ -90,20 +90,17 @@ void DataManager::ResetInputData(ca::HitIndex_t nHits) noexcept void DataManager::InitData() { // set the end pointers to data streams - - //std::cout << "N data streams: " << fInputData.fStreamStartIndices.size() << std::endl; - // TODO: SZh 14.08.2023: Move the max allowed number of streams to the constants.h - if (fInputData.fStreamStartIndices.size() > 3000) { - LOG(warning) << "L1: unexpected order of input data: too many data streams!!! "; - fInputData.fStreamStartIndices.reduce(3000); + if (fInputData.fvStreamStartIndices.size() > 3000) { + LOG(warning) << "ca::DataManager: unexpected order of input data: too many data streams!!! "; + fInputData.fvStreamStartIndices.reduce(3000); } - int nStreams = fInputData.fStreamStartIndices.size(); - fInputData.fStreamStopIndices.reset(nStreams); + int nStreams = fInputData.fvStreamStartIndices.size(); + fInputData.fvStreamStopIndices.reset(nStreams); for (int i = 0; i < nStreams - 1; i++) { - fInputData.fStreamStopIndices[i] = fInputData.fStreamStartIndices[i + 1]; + fInputData.fvStreamStopIndices[i] = fInputData.fvStreamStartIndices[i + 1]; } - if (nStreams > 0) { fInputData.fStreamStopIndices[nStreams - 1] = fInputData.fHits.size(); } + if (nStreams > 0) { fInputData.fvStreamStopIndices[nStreams - 1] = fInputData.fvHits.size(); } } // --------------------------------------------------------------------------------------------------------------------- @@ -112,14 +109,16 @@ void DataManager::WriteInputData(const std::string& fileName) const { // Check current data object for consistency if (!CheckInputData<constants::control::InputDataQaLevel>()) { - LOG(error) << "L1: input data writer: attempt to write invalid input data object to file \"" << fileName << "\""; + LOG(error) << "ca::DataManager: input data writer: attempt to write invalid input data object to file \"" + << fileName << "\""; return; } // Open output binary file std::ofstream ofs(fileName, std::ios::binary); if (!ofs) { - LOG(error) << "L1: input data writer: failed opening file \"" << fileName << " for writing input data\""; + LOG(error) << "ca::DataManager: input data writer: failed opening file \"" << fileName + << " for writing input data\""; return; } diff --git a/algo/ca/core/data/CaDataManager.h b/algo/ca/core/data/CaDataManager.h index be27b5414c..a95b7383f8 100644 --- a/algo/ca/core/data/CaDataManager.h +++ b/algo/ca/core/data/CaDataManager.h @@ -20,82 +20,76 @@ namespace cbm::algo::ca /// class alignas(constants::misc::Alignment) DataManager { public: - // *************************** - // ** Member functions list ** - // *************************** - - // ** Constructors and destructor ** - - /// Default constructor + /// \brief Default constructor DataManager() = default; - /// Destructor + /// \brief Destructor ~DataManager() = default; - /// Copy constructor + /// \brief Copy constructor DataManager(const DataManager& other) = delete; - /// Move constructor + /// \brief Move constructor DataManager(DataManager&& other) = delete; - /// Copy assignment operator + /// \brief Copy assignment operator DataManager& operator=(const DataManager& other) = delete; - /// Move assignment operator + /// \brief Move assignment operator DataManager& operator=(DataManager&& other) = delete; - /// @brief Gets number of hits stored - /// @return Number of hits - int GetNofHits() { return fInputData.fHits.size(); } + /// \brief Gets number of hits stored + /// \return Number of hits + int GetNofHits() { return fInputData.fvHits.size(); } - /// Reads input data object from boost-serialized binary file + /// \brief Reads input data object from boost-serialized binary file /// \param fileName Name of input file void ReadInputData(const std::string& fileName); - /// Reserve number of hits + /// \brief Reserve number of hits /// \param nHits Number of hits to be stored /// \note If one does not call this method, the underlying vector of hits will be filled with the time penalty - void ReserveNhits(ca::HitIndex_t nHits) { fInputData.fHits.reserve(nHits); } + void ReserveNhits(HitIndex_t nHits) { fInputData.fvHits.reserve(nHits); } - /// @brief Resets the input data block - /// @param nHits Number of hits to reserve - void ResetInputData(ca::HitIndex_t nHits = 0) noexcept; + /// \brief Resets the input data block + /// \param nHits Number of hits to reserve + void ResetInputData(HitIndex_t nHits = 0) noexcept; - /// Pushes back a hit + /// \brief Pushes back a hit /// \param hit An ca::Hit object - void PushBackHit(const ca::Hit& hit, int64_t streamId) + void PushBackHit(const Hit& hit, int64_t streamId) { - if (fInputData.fStreamStartIndices.size() == 0 || fLastStreamId != streamId) { // new data stream + if (fInputData.fvStreamStartIndices.size() == 0 || fLastStreamId != streamId) { // new data stream fLastStreamId = streamId; - fInputData.fStreamStartIndices.push_back(fInputData.fHits.size()); + fInputData.fvStreamStartIndices.push_back(fInputData.fvHits.size()); // for a case.. it is fixed later in InitData() - fInputData.fStreamStopIndices.push_back(fInputData.fHits.size()); + fInputData.fvStreamStopIndices.push_back(fInputData.fvHits.size()); } - fInputData.fHits.push_back(hit); + fInputData.fvHits.push_back(hit); } - /// Sets the number of hit keys + /// \brief Sets the number of hit keys /// \param nKeys Number of hit keys void SetNhitKeys(int nKeys) { fInputData.fNhitKeys = nKeys; } - /// @brief Sets number of active stations - /// @param nStations Number of stations + /// \brief Sets number of active stations + /// \param nStations Number of stations void SetNofActiveStations(int nStations) { fNofActiveStations = nStations; } - /// @brief Sends (moves) input data to an object (alternative method of data sending) - /// @param destination Destination object of input data + /// \brief Sends (moves) input data to an object (alternative method of data sending) + /// \param destination Destination object of input data bool SendInputData(InputData& destination); /// \brief Takes (moves) the instance of the input data object InputData&& TakeInputData(); - /// Writes input data object to boost-serialized binary file + /// \brief Writes input data object to boost-serialized binary file /// \param fileName Name of input file void WriteInputData(const std::string& fileName) const; private: - /// @brief Initializes data object + /// \brief Initializes data object /// /// Sorts hits by stations (complexity O(n)) and defines bordering hit index for station void InitData(); @@ -136,7 +130,7 @@ namespace cbm::algo::ca if constexpr (Level == 0) { return true; } // Level = 0 -> do nothing else if constexpr (Level > 0) { // Level = 1 and higher // ----- Check if the hits container is not empty ---------------------------------------------------------------- - if (fInputData.fHits.size() == 0) { + if (fInputData.fvHits.size() == 0) { LOG(warn) << "DataManager [check input]: Sample contains empty hits, tracking will not be executed"; return false; } diff --git a/algo/ca/core/data/CaInputData.cxx b/algo/ca/core/data/CaInputData.cxx index d0906f0662..aaa519c1a2 100644 --- a/algo/ca/core/data/CaInputData.cxx +++ b/algo/ca/core/data/CaInputData.cxx @@ -18,9 +18,9 @@ InputData::InputData() {} // --------------------------------------------------------------------------------------------------------------------- // InputData::InputData(const InputData& other) - : fHits(other.fHits) - , fStreamStartIndices(other.fStreamStartIndices) - , fStreamStopIndices(other.fStreamStopIndices) + : fvHits(other.fvHits) + , fvStreamStartIndices(other.fvStreamStartIndices) + , fvStreamStopIndices(other.fvStreamStopIndices) , fNhitKeys(other.fNhitKeys) { } diff --git a/algo/ca/core/data/CaInputData.h b/algo/ca/core/data/CaInputData.h index aeeb08094b..22ddec7f0a 100644 --- a/algo/ca/core/data/CaInputData.h +++ b/algo/ca/core/data/CaInputData.h @@ -24,86 +24,73 @@ namespace cbm::algo::ca /// class alignas(constants::misc::Alignment) InputData { public: - // ************************** - // ** Friend classes list ** - // ************************** - friend class DataManager; ///< Class which fills the InputData object for each event or time slice friend class boost::serialization::access; - // *************************** - // ** Member functions list ** - // *************************** - - // ** Constructors and destructor ** - - /// Default constructor + /// \brief Default constructor InputData(); - /// Destructor + /// \brief Destructor ~InputData() = default; - /// Copy constructor + /// \brief Copy constructor InputData(const InputData& other); - /// Move constructor + /// \brief Move constructor InputData(InputData&&) noexcept; - /// Copy assignment operator + /// \brief Copy assignment operator InputData& operator=(const InputData& other); - /// Move assignment operator + /// \brief Move assignment operator InputData& operator=(InputData&& other) noexcept; - /// Gets hits sample size - ca::HitIndex_t GetSampleSize() const { return fHits.size(); } - - - // ** Accessors ** + /// \brief Gets hits sample size + HitIndex_t GetSampleSize() const { return fvHits.size(); } - /// Gets number of data streams - int GetNdataStreams() const { return fStreamStartIndices.size(); } + /// \brief Gets number of data streams + int GetNdataStreams() const { return fvStreamStartIndices.size(); } - /// Gets reference to hit by its index + /// \brief Gets reference to hit by its index /// \param index Index of hit in the hits sample - const ca::Hit& GetHit(ca::HitIndex_t index) const { return fHits[index]; } + const Hit& GetHit(HitIndex_t index) const { return fvHits[index]; } - /// Gets reference to hits vector - const Vector<ca::Hit>& GetHits() const { return fHits; } + /// \brief Gets reference to hits vector + const Vector<Hit>& GetHits() const { return fvHits; } - /// Gets number of hits in the hits vector - ca::HitIndex_t GetNhits() const { return fHits.size(); } + /// \brief Gets number of hits in the hits vector + HitIndex_t GetNhits() const { return fvHits.size(); } - /// Gets total number of stored keys + /// \brief Gets total number of stored keys int GetNhitKeys() const { return fNhitKeys; } - /// Gets index of the first hit in the sorted hits vector + /// \brief Gets index of the first hit in the sorted hits vector /// \param iStream Index of the data stream - ca::HitIndex_t GetStreamStartIndex(int iStream) const { return fStreamStartIndices[iStream]; } + HitIndex_t GetStreamStartIndex(int iStream) const { return fvStreamStartIndices[iStream]; } - /// Gets index of (the last + 1) hit in the sorted hits vector + /// \brief Gets index of (the last + 1) hit in the sorted hits vector /// \param iStream Index of the data stream - ca::HitIndex_t GetStreamStopIndex(int iStream) const { return fStreamStopIndices[iStream]; } + HitIndex_t GetStreamStopIndex(int iStream) const { return fvStreamStopIndices[iStream]; } - /// Gets n hits for the data stream + /// \brief Gets n hits for the data stream /// \param iStream Index of the data stream - ca::HitIndex_t GetStreamNhits(int iStream) const + HitIndex_t GetStreamNhits(int iStream) const { - return fStreamStopIndices[iStream] - fStreamStartIndices[iStream]; + return fvStreamStopIndices[iStream] - fvStreamStartIndices[iStream]; } private: - /// Swap method + /// \brief Swap method void Swap(InputData& other) noexcept; - /// Data serialization method + /// \brief Data serialization method template<class Archive> void serialize(Archive& ar, const unsigned int /*versino*/) { - ar& fHits; - ar& fStreamStartIndices; - ar& fStreamStopIndices; + ar& fvHits; + ar& fvStreamStartIndices; + ar& fvStreamStopIndices; ar& fNhitKeys; } @@ -111,14 +98,14 @@ namespace cbm::algo::ca // ** Member variables list ** // *************************** - /// @brief Sample of input hits - Vector<ca::Hit> fHits {"InputData::fHits"}; + /// \brief Sample of input hits + Vector<Hit> fvHits {"InputData::fHits"}; - /// @brief Index of the first hit in the sorted hits vector for a given data stream - Vector<ca::HitIndex_t> fStreamStartIndices {"InputData::fStreamStartIndices"}; - Vector<ca::HitIndex_t> fStreamStopIndices {"InputData::fStreamStopIndices"}; + /// \brief Index of the first hit in the sorted hits vector for a given data stream + Vector<HitIndex_t> fvStreamStartIndices {"InputData::fStreamStartIndices"}; + Vector<HitIndex_t> fvStreamStopIndices {"InputData::fStreamStopIndices"}; - /// @brief Number of hit keys used for rejecting fake STS hits + /// \brief Number of hit keys used for rejecting fake STS hits int fNhitKeys = -1; }; @@ -131,9 +118,9 @@ namespace cbm::algo::ca // [[gnu::always_inline]] inline void InputData::Swap(InputData& other) noexcept { - std::swap(fHits, other.fHits); - std::swap(fStreamStartIndices, other.fStreamStartIndices); - std::swap(fStreamStopIndices, other.fStreamStopIndices); + std::swap(fvHits, other.fvHits); + std::swap(fvStreamStartIndices, other.fvStreamStartIndices); + std::swap(fvStreamStopIndices, other.fvStreamStopIndices); std::swap(fNhitKeys, other.fNhitKeys); } diff --git a/algo/ca/core/pars/CaInitManager.h b/algo/ca/core/pars/CaInitManager.h index b50ce0618e..826f0a3532 100644 --- a/algo/ca/core/pars/CaInitManager.h +++ b/algo/ca/core/pars/CaInitManager.h @@ -295,8 +295,7 @@ namespace cbm::algo::ca FieldFunction_t fFieldFunction {[](const double (&)[3], double (&)[3]) {}}; // NOTE: Stations of the detectors which are not assigned as active, are not included in the tracking! - [[deprecated]] int fCAIterationsNumberCrosscheck { - -1}; ///< Number of iterations to be passed (must be used for cross-checks) + int fCAIterationsNumberCrosscheck {-1}; ///< Number of iterations to be passed (must be used for cross-checks) Parameters fParameters {}; ///< CA parameters object -- GitLab