Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
eEmSortSelectCountContainerPortsOut.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GLOBALSIM_EEMSORTSELECTCOUNTCONTAINERPORTSOUT_H
6 #define GLOBALSIM_EEMSORTSELECTCOUNTCONTAINERPORTSOUT_H
7 
8 #include "GenericTob.h"
9 
10 #include <ostream>
11 #include <memory>
12 #include <vector>
13 
14 
15 #include "AthenaKernel/CLASS_DEF.h"
16 
17 namespace GlobalSim {
18 
20 
21  //eEmSortSelectCount
22 
23  // +1 is spare
24  constexpr static std::size_t NumSort{7};
25  constexpr static std::size_t NumSelect{NumSort+1};
26  constexpr static std::size_t NumNoSort{1};
27 
28  // no of sorts = No of items to keep for each sort
29  constexpr static std::array<std::size_t, NumSort> SortOutWidths {
30  {6UL, 6UL, 6UL, 10UL, 10UL, 10UL, 6UL}
31  };
32 
33 
34  constexpr static std::size_t SortOutWidth{
37  0U)};
38 
39  constexpr static std::size_t NoSortOutWidth{144};
40 
41  constexpr static std::size_t NumTotalTobWidth{SortOutWidth +
43 
44  // indices to place sorted tobs in output array found by compile
45  // time summing of width values.
46  constexpr static std::array<std::size_t, NumSort> SortOutStart =
47  []{
48  std::array<std::size_t, NumSort> a{};
49  std::partial_sum(std::cbegin(SortOutWidths),
50  std::cend(SortOutWidths)-1,
51  a.begin()+1,
52  std::plus<std::size_t>());
53  return a;
54  }();
55 
56  constexpr static std::size_t NumCount{24};
57  constexpr static std::array<unsigned, NumCount> CountOutWidth {
58  3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
59  };
60 
61  // calculate the total width from the individual widths
62  constexpr static std::size_t NumTotalCountWidth{
65  0U)};
66 
67  // calculate the start position in the output bits for each count
68  constexpr static std::array<std::size_t, NumCount> CountOutStart =
69  []{
70  std::array<std::size_t, NumCount> a{};
71  std::partial_sum(std::cbegin(CountOutWidth),
72  std::cend(CountOutWidth)-1,
73  a.begin()+1,
74  std::plus<std::size_t>());
75  return a;
76  }();
77 
78 
79  // [2^n-1..] where n are the elements of CountOutWidth
80  constexpr static std::array<std::size_t, NumCount> max_counts = [] {
81  std::array<std::size_t, NumCount> a{};
82  for (std::size_t ind =0; ind != CountOutWidth.size(); ++ind) {
83  std::size_t result = 1;
84  for(unsigned i = 1; i <= CountOutWidth[ind]; ++i) {
85  result *= 2;
86  }
87 
88  a[ind] = result-1;
89  }
90  return a;
91  }();
92 
93 
94  using GenTobPtr = std::shared_ptr<GenericTob>;
96  std::shared_ptr<std::bitset<NumTotalCountWidth>>;
97 
98  // Output GenericTobs. VHDL variable is an array of GenericTobs
99  std::array<GenTobPtr, NumTotalTobWidth> m_O_eEmGenTob;
100 
101  // Output counts. VHDL variable is a bit array
103  m_O_Multiplicity{std::make_shared<std::bitset<NumTotalCountWidth>>()};
104 
106  for(std::size_t i = 0; i != NumTotalTobWidth; ++i) {
107  m_O_eEmGenTob[i] = std::make_shared<GenericTob>();
108  }
109  }
110  };
111 
112 }
113 
114 std::ostream&
115 operator<< (std::ostream&,
117 
119 
120 #endif
121 
get_generator_info.result
result
Definition: get_generator_info.py:21
GlobalSim::eEmSortSelectCountContainerPortsOut::CountOutStart
constexpr static std::array< std::size_t, NumCount > CountOutStart
Definition: eEmSortSelectCountContainerPortsOut.h:68
accumulate
bool accumulate(AccumulateMap &map, std::vector< module_t > const &modules, FPGATrackSimMatrixAccumulator const &acc)
Accumulates an accumulator (e.g.
Definition: FPGATrackSimMatrixAccumulator.cxx:22
GlobalSim::eEmSortSelectCountContainerPortsOut::CountOutWidth
constexpr static std::array< unsigned, NumCount > CountOutWidth
Definition: eEmSortSelectCountContainerPortsOut.h:57
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
GlobalSim::eEmSortSelectCountContainerPortsOut::SortOutStart
constexpr static std::array< std::size_t, NumSort > SortOutStart
Definition: eEmSortSelectCountContainerPortsOut.h:46
GlobalSim::eEmSortSelectCountContainerPortsOut::NumTotalCountWidth
constexpr static std::size_t NumTotalCountWidth
Definition: eEmSortSelectCountContainerPortsOut.h:62
GlobalSim::eEmSortSelectCountContainerPortsOut::eEmSortSelectCountContainerPortsOut
eEmSortSelectCountContainerPortsOut()
Definition: eEmSortSelectCountContainerPortsOut.h:105
GlobalSim::eEmSortSelectCountContainerPortsOut::BSPtrNumTotalCountWidth
std::shared_ptr< std::bitset< NumTotalCountWidth > > BSPtrNumTotalCountWidth
Definition: eEmSortSelectCountContainerPortsOut.h:96
GlobalSim::eEmSortSelectCountContainerPortsOut::NumTotalTobWidth
constexpr static std::size_t NumTotalTobWidth
Definition: eEmSortSelectCountContainerPortsOut.h:41
GenericTob.h
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
GlobalSim
AlgTool to obtain a selection of eFex RoIs read in from the event store.
Definition: dump.h:8
GlobalSim::eEmSortSelectCountContainerPortsOut::NoSortOutWidth
constexpr static std::size_t NoSortOutWidth
Definition: eEmSortSelectCountContainerPortsOut.h:39
lumiFormat.i
int i
Definition: lumiFormat.py:85
GlobalSim::eEmSortSelectCountContainerPortsOut::NumNoSort
constexpr static std::size_t NumNoSort
Definition: eEmSortSelectCountContainerPortsOut.h:26
GlobalSim::eEmSortSelectCountContainerPortsOut::GenTobPtr
std::shared_ptr< GenericTob > GenTobPtr
Definition: eEmSortSelectCountContainerPortsOut.h:94
GlobalSim::eEmSortSelectCountContainerPortsOut::SortOutWidth
constexpr static std::size_t SortOutWidth
Definition: eEmSortSelectCountContainerPortsOut.h:34
GlobalSim::eEmSortSelectCountContainerPortsOut::NumSelect
constexpr static std::size_t NumSelect
Definition: eEmSortSelectCountContainerPortsOut.h:25
GlobalSim::eEmSortSelectCountContainerPortsOut::NumCount
constexpr static std::size_t NumCount
Definition: eEmSortSelectCountContainerPortsOut.h:56
GlobalSim::eEmSortSelectCountContainerPortsOut
Definition: eEmSortSelectCountContainerPortsOut.h:19
a
TList * a
Definition: liststreamerinfos.cxx:10
GlobalSim::eEmSortSelectCountContainerPortsOut::m_O_Multiplicity
BSPtrNumTotalCountWidth m_O_Multiplicity
Definition: eEmSortSelectCountContainerPortsOut.h:103
operator<<
std::ostream & operator<<(std::ostream &, const GlobalSim::eEmSortSelectCountContainerPortsOut &)
Definition: eEmSortSelectCountContainerPortsOut.cxx:9
GlobalSim::eEmSortSelectCountContainerPortsOut::max_counts
constexpr static std::array< std::size_t, NumCount > max_counts
Definition: eEmSortSelectCountContainerPortsOut.h:80
GlobalSim::eEmSortSelectCountContainerPortsOut::NumSort
constexpr static std::size_t NumSort
Definition: eEmSortSelectCountContainerPortsOut.h:24
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
GlobalSim::eEmSortSelectCountContainerPortsOut::SortOutWidths
constexpr static std::array< std::size_t, NumSort > SortOutWidths
Definition: eEmSortSelectCountContainerPortsOut.h:29
GlobalSim::eEmSortSelectCountContainerPortsOut::m_O_eEmGenTob
std::array< GenTobPtr, NumTotalTobWidth > m_O_eEmGenTob
Definition: eEmSortSelectCountContainerPortsOut.h:99
CLASS_DEF.h
macros to associate a CLID to a type
checkFileSG.ind
list ind
Definition: checkFileSG.py:118