Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
17 {
18  // Dump the configuration to make sure it propagated through right
19  const std::vector<Gaudi::Details::PropertyBase*> props = this->getProperties();
20  for( Gaudi::Details::PropertyBase* prop : props ) {
21  if (prop->ownerTypeName()==this->type()) {
22  ATH_MSG_DEBUG("Property:\t" << prop->name() << "\t : \t" << prop->toString());
23  }
24  }
25 
26  return StatusCode::SUCCESS;
27 }
28 
30  const ParSet &parMin,
31  const ParSet &parMax) {
32 
33  m_prev = prev;
34  if (prev) {
35  m_stepNum = prev->m_stepNum+1;
36  } else {
37  m_stepNum = 0;
38  }
39  m_parMin = parMin;
40  m_parMax = parMax;
41  m_parBins = std::vector<unsigned>(m_parBinsConfig);
42  for (unsigned par = 0; par < FPGATrackSimTrackPars::NPARS; par++) {
43  if (m_parBins[par] <= 0) {
44  ATH_MSG_FATAL("Every dimension must be at least one bin");
45  return StatusCode::FAILURE;
46  }
48  if (m_parBins[par] <= 0)
49  {
50  ATH_MSG_FATAL("Every dimension must be at least one bin (set #bins=1 for not binning in that parameter)");
51  }
52  if (prev) {
53  if (m_parBins[par] < prev->m_parBins[par]) {
54  ATH_MSG_FATAL("Number of bins can only increase with each step");
55  return StatusCode::FAILURE;
56  }
57  if (m_parBins[par] % prev->m_parBins[par] !=0) {
58  ATH_MSG_FATAL("Number of bins must be integer multiple of bins in previous step");
59  return StatusCode::FAILURE;
60  }
61  if (m_parBins[par] != prev->m_parBins[par]) {
62  // This step involves this parameter
63  m_pars.push_back(par);
64  }
65  } else {
66  if (m_parBins[par] != 1) {
67  // This step involves this parameter
68  m_pars.push_back(par);
69  }
70  }
71  }
72 
73  return StatusCode::SUCCESS;
74 }
75 
77 {
78  ParSet parset;
79  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++)
80  {
81  parset[i] = binLowEdge(i, idx[i]);
82  }
83  return parset;
84 }
85 
87 {
88  ParSet parset;
89  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++)
90  {
91  parset[i] = binCenter(i, idx[i]);
92  }
93  return parset;
94 }
95 
97 {
98  IdxSet retv;
99  for (unsigned i = 0; i < FPGATrackSimTrackPars::NPARS; i++)
100  {
101  retv[i] = binIdx(i, pars[i]);
102  }
103  return retv;
104 }
105 
106 
107 
108 // Convert to previous steps idx
110  IdxSet retv{};
111  if (m_prev) {
112  for (unsigned par =0; par < FPGATrackSimTrackPars::NPARS; par++) {
114  }
115  } else {
116  ATH_MSG_FATAL("convertToPrev called, but no previous");
117  }
118  return retv;
119 }
120 
121 
122 const std::vector<unsigned> FPGATrackSimBinStep::stepIdx(IdxSet idx) const {
124 
125 const std::vector<unsigned> FPGATrackSimBinStep::stepBins() const {
127 
128 void FPGATrackSimBinStep::setValidBin(const std::vector<unsigned>& idx) {
129  m_validBinFull[idx] = true;
130  m_validBinLocal[stepIdx(idx)] = true;
132 }
133 
136  m_validBinLocal.setsize(stepBins(), false);
137 }
138 
140  // count valid bins
141  int validBinsFull = 0;
142 
144  if (bin.data())
145  validBinsFull++;
146  }
147  ATH_MSG_INFO("Step" << name() << "Valid Bins Full: " << validBinsFull);
148 
149  // count valid bins
150  int validBinsLocal = 0;
152  if (bin.data())
153  validBinsLocal++;
154  }
155  ATH_MSG_INFO("Step" << name() << "Valid Bins Local: " << validBinsLocal);
156 
157 }
158 
FPGATrackSimBinStep::stepBins
const std::vector< unsigned > stepBins() const
Definition: FPGATrackSimBinStep.cxx:125
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
FPGATrackSimBinStep::binLowEdge
double binLowEdge(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:67
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
FPGATrackSimBinStep
Definition: FPGATrackSimBinStep.h:49
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:74
FPGATrackSimBinStep::initValidBins
void initValidBins()
Definition: FPGATrackSimBinStep.cxx:134
beamspotman.cur
def cur
Definition: beamspotman.py:671
FPGATrackSimBinStep::convertToPrev
IdxSet convertToPrev(const IdxSet &cur) const
Definition: FPGATrackSimBinStep.cxx:109
FPGATrackSimBinStep::validBinsLocal
const FPGATrackSimBinArray< int > & validBinsLocal() const
Definition: FPGATrackSimBinStep.h:95
FPGATrackSimBinStep::binCenter
double binCenter(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:66
FPGATrackSimBinStep::setRanges
StatusCode setRanges(FPGATrackSimBinStep *prev, const ParSet &parMin, const ParSet &parMax)
Definition: FPGATrackSimBinStep.cxx:29
FPGATrackSimBinStep::m_parMax
ParSet m_parMax
Definition: FPGATrackSimBinStep.h:119
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimBinStep::m_validBinFull
FPGATrackSimBinArray< int > m_validBinFull
Definition: FPGATrackSimBinStep.h:106
FPGATrackSimBinStep::m_parStep
ParSet m_parStep
Definition: FPGATrackSimBinStep.h:114
FPGATrackSimBinStep.h
Binning Classes for BinStep.
FPGATrackSimBinUtil::subVec
std::vector< unsigned > subVec(const std::vector< unsigned > &elems, const IdxSet &invec)
Definition: FPGATrackSimBinUtil.cxx:60
FPGATrackSimBinStep::setValidBin
void setValidBin(const std::vector< unsigned > &idx)
Definition: FPGATrackSimBinStep.cxx:128
FPGATrackSimBinStep::m_validBinLocal
FPGATrackSimBinArray< int > m_validBinLocal
Definition: FPGATrackSimBinStep.h:107
FPGATrackSimBinArray::setsize
void setsize(const std::vector< unsigned int > &dims, const T &initval)
Definition: FPGATrackSimBinArray.h:51
FPGATrackSimBinStep::m_pars
std::vector< unsigned > m_pars
Definition: FPGATrackSimBinStep.h:101
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
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
FPGATrackSimBinStep::printValidBin
void printValidBin() const
Definition: FPGATrackSimBinStep.cxx:139
FPGATrackSimBinStep::m_parBinsConfig
Gaudi::Property< std::vector< unsigned > > m_parBinsConfig
Definition: FPGATrackSimBinStep.h:98
FPGATrackSimBinArray
Definition: FPGATrackSimBinArray.h:41
FPGATrackSimBinStep::validBinsFull
const FPGATrackSimBinArray< int > & validBinsFull() const
Definition: FPGATrackSimBinStep.h:94
FPGATrackSimBinStep::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinStep.cxx:16
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
FPGATrackSimBinStep::m_parMin
ParSet m_parMin
Definition: FPGATrackSimBinStep.h:118
FPGATrackSimBinStep::m_prev
FPGATrackSimBinStep * m_prev
Definition: FPGATrackSimBinStep.h:110
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimBinStep::m_stepNum
unsigned m_stepNum
Definition: FPGATrackSimBinStep.h:111
FPGATrackSimBinStep::m_parBins
IdxSet m_parBins
Definition: FPGATrackSimBinStep.h:115
FPGATrackSimBinStep::stepIdx
const std::vector< unsigned > stepIdx(IdxSet idx) const
Definition: FPGATrackSimBinStep.cxx:122
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