Project
Loading...
Searching...
No Matches
IDCGroupHelperSector.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
15
16#ifndef ALICEO2_TPC_IDCGROUPHELPERSECTOR_H_
17#define ALICEO2_TPC_IDCGROUPHELPERSECTOR_H_
18
19#include <vector>
20#include "Rtypes.h"
21#include "TPCBase/Mapper.h"
23
24namespace o2::tpc
25{
26
29{
30 public:
36 IDCGroupHelperSector(const std::array<unsigned char, Mapper::NREGIONS>& groupPads, const std::array<unsigned char, Mapper::NREGIONS>& groupRows, const std::array<unsigned char, Mapper::NREGIONS>& groupLastRowsThreshold, const std::array<unsigned char, Mapper::NREGIONS>& groupLastPadsThreshold, const unsigned int groupNotnPadsSectorEdges)
37 : mGroupingPar{groupPads, groupRows, groupLastRowsThreshold, groupLastPadsThreshold, groupNotnPadsSectorEdges} { initIDCGroupHelperSector(); };
38
41 IDCGroupHelperSector(const ParameterIDCGroupCCDB& groupingParameter) : mGroupingPar{groupingParameter} { initIDCGroupHelperSector(); };
42
45
52 unsigned int getIndexGrouped(const unsigned int sector, const unsigned int region, const unsigned int glrow, const unsigned int pad, unsigned int integrationInterval) const { return mNIDCsPerSector * (integrationInterval * SECTORSPERSIDE + sector % o2::tpc::SECTORSPERSIDE) + mRegionOffs[region] + mOffsRow[region][glrow] + pad; }
53
60 unsigned int getIndexUngrouped(const unsigned int sector, const unsigned int region, unsigned int ulrow, unsigned int upad, unsigned int integrationInterval) const { return getIndexGrouped(sector, region, getGroupedRow(region, ulrow), getGroupedPad(region, ulrow, upad), integrationInterval) + getOffsetForEdgePad(upad, ulrow, region); }
61
67 int getOffsetForEdgePad(const unsigned int upad, const unsigned int ulrow, const unsigned int region) const;
68
75 unsigned int getIndexUngroupedGlobal(const unsigned int sector, const unsigned int region, unsigned int ugrow, unsigned int upad, unsigned int integrationInterval) const { return getIndexUngrouped(sector, region, ugrow - Mapper::ROWOFFSET[region], upad, integrationInterval); }
76
81 unsigned int getGroupedPad(const unsigned int region, unsigned int ulrow, unsigned int upad) const;
82
86 unsigned int getGroupedRow(const unsigned int region, unsigned int ulrow) const;
87
89 const auto& getGroupingParameter() const { return mGroupingPar; }
90
92 unsigned int getNIDCs(const unsigned int region) const { return mNIDCsPerCRU[region]; }
93
95 unsigned int getNRows(const unsigned int region) const { return mRows[region]; }
96
98 unsigned int getRegionOffset(const unsigned int region) const { return mRegionOffs[region]; }
99
101 unsigned int getNIDCsPerSector() const { return mNIDCsPerSector; }
102
104 unsigned int getLastRow(const unsigned int region) const;
105
108 unsigned int getLastPad(const unsigned int region, const unsigned int ulrow) const;
109
112 unsigned int getOffsRow(const unsigned int region, const unsigned int glrow) const { return mOffsRow[region][glrow]; }
113
116 unsigned getPadsPerRow(const unsigned int region, const unsigned int glrow) const { return mPadsPerRow[region][glrow]; }
117
124 static unsigned int getUngroupedIndexGlobal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval) { return (integrationInterval * SECTORSPERSIDE + sector % SECTORSPERSIDE) * Mapper::getPadsInSector() + Mapper::GLOBALPADOFFSET[region] + Mapper::OFFSETCRULOCAL[region][urow] + upad; }
125
126 protected:
128 std::array<unsigned int, Mapper::NREGIONS> mNIDCsPerCRU{};
129 unsigned int mNIDCsPerSector{};
130 std::array<unsigned int, Mapper::NREGIONS> mRows{};
131 std::array<unsigned int, Mapper::NREGIONS> mRegionOffs{};
132 std::array<std::vector<unsigned int>, Mapper::NREGIONS> mPadsPerRow{};
133 std::array<std::vector<unsigned int>, Mapper::NREGIONS> mOffsRow{};
134
137
138 ClassDefNV(IDCGroupHelperSector, 1)
139};
140
141} // namespace o2::tpc
142
143#endif
Definition of the parameter for the grouping of the IDCs.
Helper class for accessing grouped pads for one sector.
unsigned int mNIDCsPerSector
number of grouped IDCs per sector
std::array< std::vector< unsigned int >, Mapper::NREGIONS > mOffsRow
offset to calculate the index in the data from row and pad per region
IDCGroupHelperSector(const std::array< unsigned char, Mapper::NREGIONS > &groupPads, const std::array< unsigned char, Mapper::NREGIONS > &groupRows, const std::array< unsigned char, Mapper::NREGIONS > &groupLastRowsThreshold, const std::array< unsigned char, Mapper::NREGIONS > &groupLastPadsThreshold, const unsigned int groupNotnPadsSectorEdges)
unsigned int getNIDCs(const unsigned int region) const
std::array< unsigned int, Mapper::NREGIONS > mRows
number of grouped rows per region
unsigned int getIndexUngrouped(const unsigned int sector, const unsigned int region, unsigned int ulrow, unsigned int upad, unsigned int integrationInterval) const
unsigned int getRegionOffset(const unsigned int region) const
std::array< unsigned int, Mapper::NREGIONS > mNIDCsPerCRU
total number of IDCs per region per integration interval
unsigned int getLastPad(const unsigned int region, const unsigned int ulrow) const
void initIDCGroupHelperSector()
init function for setting the members
unsigned int getGroupedRow(const unsigned int region, unsigned int ulrow) const
unsigned getPadsPerRow(const unsigned int region, const unsigned int glrow) const
unsigned int getIndexUngroupedGlobal(const unsigned int sector, const unsigned int region, unsigned int ugrow, unsigned int upad, unsigned int integrationInterval) const
unsigned int getIndexGrouped(const unsigned int sector, const unsigned int region, const unsigned int glrow, const unsigned int pad, unsigned int integrationInterval) const
int getOffsetForEdgePad(const unsigned int upad, const unsigned int ulrow, const unsigned int region) const
std::array< std::vector< unsigned int >, Mapper::NREGIONS > mPadsPerRow
number of pads per row per region
IDCGroupHelperSector(const ParameterIDCGroupCCDB &groupingParameter)
ParameterIDCGroupCCDB mGroupingPar
struct containg the grouping parameter
unsigned int getNRows(const unsigned int region) const
std::array< unsigned int, Mapper::NREGIONS > mRegionOffs
offset for the region per region
unsigned int getGroupedPad(const unsigned int region, unsigned int ulrow, unsigned int upad) const
unsigned int getOffsRow(const unsigned int region, const unsigned int glrow) const
unsigned int getLastRow(const unsigned int region) const
IDCGroupHelperSector()=default
default constructor for ROOT I/O
static unsigned int getUngroupedIndexGlobal(const unsigned int sector, const unsigned int region, unsigned int urow, unsigned int upad, unsigned int integrationInterval)
const auto & getGroupingParameter() const
static constexpr unsigned int ROWOFFSET[NREGIONS]
offset to calculate local row from global row
Definition Mapper.h:533
static const std::vector< unsigned int > OFFSETCRULOCAL[NREGIONS]
row offset in cru for given local pad row
Definition Mapper.h:555
static constexpr unsigned int GLOBALPADOFFSET[NREGIONS]
offset of number of pads for region
Definition Mapper.h:531
static constexpr unsigned int NREGIONS
total number of regions in one sector
Definition Mapper.h:527
static constexpr unsigned short getPadsInSector()
Definition Mapper.h:414
Global TPC definitions and constants.
Definition SimTraits.h:167
constexpr unsigned char SECTORSPERSIDE
Definition Defs.h:40
struct for storing the parameters for the grouping of IDCs to CCDB