ATLAS Offline Software
FPGATrackSimBinStep.cxx
Go to the documentation of this file.
1 
2 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 
13 #include <GaudiKernel/StatusCode.h>
15 
18 
20 {
21  // Dump the configuration to make sure it propagated through right
22  const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
23  for( Gaudi::Details::PropertyBase* prop : props ) {
24  if (prop->ownerTypeName()==this->type()) {
25  ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
26  }
27  }
28 
29  return StatusCode::SUCCESS;
30 }
31 
33  const ParSet &parMin,
34  const ParSet &parMax) {
35 
36  m_prev = prev;
37  if (prev) {
38  m_stepNum = prev->m_stepNum+1;
39  } else {
40  m_stepNum = 0;
41  }
42  m_parMin = parMin;
43  m_parMax = parMax;
44  m_parBins = std::vector<unsigned>(m_parBinsConfig);
45  for (unsigned par = 0; par < FPGATrackSimTrackPars::NPARS; par++) {
46  if (m_parBins[par] <= 0) {
47  ATH_MSG_FATAL("Every dimension must be at least one bin");
48  return StatusCode::FAILURE;
49  }
51  if (m_parBins[par] <= 0)
52  {
53  ATH_MSG_FATAL("Every dimension must be at least one bin (set #bins=1 for not binning in that parameter)");
54  }
55  if (prev) {
56  if (m_parBins[par] < prev->m_parBins[par]) {
57  ATH_MSG_FATAL("Number of bins can only increase with each step");
58  return StatusCode::FAILURE;
59  }
60  if (m_parBins[par] % prev->m_parBins[par] !=0) {
61  ATH_MSG_FATAL("Number of bins must be integer multiple of bins in previous step");
62  return StatusCode::FAILURE;
63  }
64  if (m_parBins[par] != prev->m_parBins[par]) {
65  // This step involves this parameter
66  m_pars.push_back(par);
67  }
68  } else {
69  if (m_parBins[par] != 1) {
70  // This step involves this parameter
71  m_pars.push_back(par);
72  }
73  }
74  }
75 
76  ATH_MSG_DEBUG("Parameters = " << m_pars);
77 
78  return StatusCode::SUCCESS;
79 }
80 
82 {
83  ParSet parset;
84  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++)
85  {
86  parset[i] = binLowEdge(i, idx[i]);
87  }
88  return parset;
89 }
90 
92 {
93  ParSet parset;
94  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++)
95  {
96  parset[i] = binCenter(i, idx[i]);
97  }
98  return parset;
99 }
100 
102 {
103  IdxSet retv;
104  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++)
105  {
106  retv[i] = binIdx(i, pars[i]);
107  }
108  return retv;
109 }
110 
111 
112 
113 // Convert to previous steps idx
115  IdxSet retv{};
116  if (m_prev) {
117  for (unsigned par =0; par < FPGATrackSimTrackPars::NPARS; par++) {
119  }
120  } else {
121  ATH_MSG_FATAL("convertToPrev called, but no previous");
122  }
123  return retv;
124 }
125 
126 
127 const std::vector<unsigned> FPGATrackSimBinStep::stepIdx(IdxSet idx) const {
129 
130 const std::vector<unsigned> FPGATrackSimBinStep::stepBins() const {
132 
133 void FPGATrackSimBinStep::setValidBin(const std::vector<unsigned>& idx) {
134  m_validBinFull[idx] = true;
135  m_validBinLocal[stepIdx(idx)] = true;
137 }
138 
142 }
143 
145  // count valid bins
146  int validBinsFull = 0;
147 
149  if (bin.data())
150  validBinsFull++;
151  }
152  ATH_MSG_INFO("Step" << name() << "Valid Bins Full: " << validBinsFull);
153 
154  // count valid bins local
155  int validBinsLocal = 0;
157  if (bin.data())
158  validBinsLocal++;
159  }
160  ATH_MSG_INFO("Step" << name() << "Valid Bins Local: " << validBinsLocal);
161 
162 }
163 
FPGATrackSimBinStep::stepBins
const std::vector< unsigned > stepBins() const
Definition: FPGATrackSimBinStep.cxx:130
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
FPGATrackSimBinStep::binLowEdge
double binLowEdge(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:63
FPGATrackSimBinStep::m_parMax
FPGATrackSimBinUtil::ParSet m_parMax
Definition: FPGATrackSimBinStep.h:122
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
FPGATrackSimBinStep
Definition: FPGATrackSimBinStep.h:45
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthMsgStreamMacros.h
FPGATrackSimBinStep::binIdx
unsigned binIdx(unsigned par, double val) const
Definition: FPGATrackSimBinStep.h:70
FPGATrackSimBinStep::initValidBins
void initValidBins()
Definition: FPGATrackSimBinStep.cxx:139
FPGATrackSimBinStep::m_parMin
FPGATrackSimBinUtil::ParSet m_parMin
Definition: FPGATrackSimBinStep.h:121
beamspotman.cur
def cur
Definition: beamspotman.py:669
FPGATrackSimBinStep::m_parBins
FPGATrackSimBinUtil::IdxSet m_parBins
Definition: FPGATrackSimBinStep.h:117
FPGATrackSimBinStep::validBinsLocal
const FPGATrackSimBinArray< int > & validBinsLocal() const
Definition: FPGATrackSimBinStep.h:98
FPGATrackSimBinStep::binCenter
double binCenter(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:62
FPGATrackSimBinStep::setRanges
StatusCode setRanges(FPGATrackSimBinStep *prev, const FPGATrackSimBinUtil::ParSet &parMin, const FPGATrackSimBinUtil::ParSet &parMax)
Definition: FPGATrackSimBinStep.cxx:32
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimBinStep::convertToPrev
FPGATrackSimBinUtil::IdxSet convertToPrev(const FPGATrackSimBinUtil::IdxSet &cur) const
Definition: FPGATrackSimBinStep.cxx:114
FPGATrackSimBinStep::m_validBinFull
FPGATrackSimBinArray< int > m_validBinFull
Definition: FPGATrackSimBinStep.h:109
FPGATrackSimBinStep.h
Binning Classes for BinStep.
FPGATrackSimBinUtil::subVec
std::vector< unsigned > subVec(const std::vector< unsigned > &elems, const IdxSet &invec)
Definition: FPGATrackSimBinUtil.cxx:61
FPGATrackSimBinStep::setValidBin
void setValidBin(const std::vector< unsigned > &idx)
Definition: FPGATrackSimBinStep.cxx:133
FPGATrackSimBinStep::m_parStep
FPGATrackSimBinUtil::ParSet m_parStep
Definition: FPGATrackSimBinStep.h:118
FPGATrackSimBinStep::m_validBinLocal
FPGATrackSimBinArray< int > m_validBinLocal
Definition: FPGATrackSimBinStep.h:110
FPGATrackSimBinArray::setsize
void setsize(const std::vector< unsigned int > &dims, const T &initval)
Definition: FPGATrackSimBinArray.h:51
FPGATrackSimBinStep::stepIdx
const std::vector< unsigned > stepIdx(FPGATrackSimBinUtil::IdxSet idx) const
Definition: FPGATrackSimBinStep.cxx:127
FPGATrackSimBinStep::m_pars
std::vector< unsigned > m_pars
Definition: FPGATrackSimBinStep.h:104
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
FPGATrackSimBinStep::printValidBin
void printValidBin() const
Definition: FPGATrackSimBinStep.cxx:144
FPGATrackSimBinStep::m_parBinsConfig
Gaudi::Property< std::vector< unsigned > > m_parBinsConfig
Definition: FPGATrackSimBinStep.h:101
FPGATrackSimBinArray
Definition: FPGATrackSimBinArray.h:41
FPGATrackSimBinStep::validBinsFull
const FPGATrackSimBinArray< int > & validBinsFull() const
Definition: FPGATrackSimBinStep.h:97
FPGATrackSimBinStep::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinStep.cxx:19
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
FPGATrackSimBinStep::m_prev
FPGATrackSimBinStep * m_prev
Definition: FPGATrackSimBinStep.h:113
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:28
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimBinStep::m_stepNum
unsigned m_stepNum
Definition: FPGATrackSimBinStep.h:114
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
FPGATrackSimTrackPars::NPARS
@ NPARS
Definition: FPGATrackSimTrackPars.h:49
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimBinUtil::IdxSet
Definition: FPGATrackSimBinUtil.h:50