Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FPGATrackSimBinStep.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimBinStep_H
4 #define FPGATrackSimBinStep_H
5 
25 
26 
30 
31 #include "GaudiKernel/StatusCode.h"
32 
33 #include <cmath>
34 #include <string>
35 #include <vector>
36 #include <array>
37 
38 // Use IdxSet and ParSet from FPGATrackSimUtil
41 
43 
44 //--------------------------------------------------------------------------------------------------
45 //
46 // Class to define the sub steps of the full binning
47 //
48 //--------------------------------------------------------------------------------------------------
49 class FPGATrackSimBinStep : virtual public AthAlgTool {
50 public:
51  FPGATrackSimBinStep(const std::string & algname, const std::string & name,
52  const IInterface * ifc) : AthAlgTool(algname, name, ifc) {}
53 
54  virtual StatusCode initialize() override;
55  StatusCode setRanges(FPGATrackSimBinStep* prev,const ParSet& parMin, const ParSet& parMax);
56 
57  // property of step
58  const std::vector<unsigned> stepIdx(IdxSet idx) const; // index for only the pars used in this step
59  const std::vector<unsigned> stepBins() const; // bin sizes for only the pars used in this step
60  const std::vector<unsigned>& stepPars() const {return m_pars;} // parameters used for this step
61  const std::vector<unsigned> nBins() const {return m_parBins;} // bin sizes for only the pars used in this step
62  const std::string stepName() const {return this->name().substr(this->name().find_last_of(".")+1);}
63  unsigned stepNum() const {return m_stepNum;}
64 
65  // Calculation of bin boundaries
66  double binCenter(unsigned par, unsigned bin) const { return m_parMin[par] + m_parStep[par] * (double(bin) + 0.5); }
67  double binLowEdge(unsigned par, unsigned bin) const { return m_parMin[par] + m_parStep[par] * (double(bin)); }
68  double binHighEdge(unsigned par, unsigned bin) const { return m_parMin[par] + m_parStep[par] * (double(bin) + 1.0);}
69  double binWidth(unsigned par) const { return m_parStep[par]; }
70  ParSet binLowEdge(const IdxSet &idx) const;
71  ParSet binCenter(const IdxSet &idx) const;
72 
73  // get bin value for a specific parameter value
74  unsigned binIdx(unsigned par, double val) const {
75  return (val > m_parMin[par]) ? unsigned(floor((val - m_parMin[par]) / m_parStep[par])): 0; }
76 
77  // convert parset (the binning parameters) to a 5-d bin
78  IdxSet binIdx(const ParSet &pars) const;
79 
80  // Convert to previous steps idx
81  IdxSet convertToPrev(const IdxSet& cur) const;
82 
83  //--------------------------------------------------------------------------------------------------
84  //
85  // Set which bins are valid
86  //
87  //--------------------------------------------------------------------------------------------------
88  // Which bins are consistent with the (pT, eta, pho, d0, z0)
89  // ranges computed from region definition defined in the eventselection
90  // service or set by the layer map
91  void initValidBins();
92  void setValidBin(const std::vector<unsigned>& idx); // also sets SubBins
93  void printValidBin() const; // dump an output to log for x-checks
96 
97 private:
98  Gaudi::Property<std::vector<unsigned>> m_parBinsConfig{this,"parBins",{},"Vector of number of bins for each parameter (expect 5)"};
99 
100  // pars used in this step
101  std::vector<unsigned> m_pars{};
102 
103  // Array that has a true/false for if a bin is valid
104  // some bins may not be valid because they correspond to (pT,eta,phi,d0,z0)
105  // that are being targeted for reconstruction
106  FPGATrackSimBinArray<int> m_validBinFull; // this is the full binning
107  FPGATrackSimBinArray<int> m_validBinLocal; // this is for the pars used at this step
108 
109  // pointer to FPGATrackSimBinStep of previous step
111  unsigned m_stepNum{}; // number of step
112 
113  // the bins for this step
115  IdxSet m_parBins; // one means no binning this step
116 
117  // reference to the full range defined in the "tool"
120 
122 };
123 
124 #endif // FPGATrackSimBinStep_H
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
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimBinStep
Definition: FPGATrackSimBinStep.h:49
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::binWidth
double binWidth(unsigned par) const
Definition: FPGATrackSimBinStep.h:69
FPGATrackSimBinArray.h
Iterable Multidimensional Array Class for FPGATrackSimBinTool.
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
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
FPGATrackSimBinStep::setValidBin
void setValidBin(const std::vector< unsigned > &idx)
Definition: FPGATrackSimBinStep.cxx:128
FPGATrackSimBinStep::m_validBinLocal
FPGATrackSimBinArray< int > m_validBinLocal
Definition: FPGATrackSimBinStep.h:107
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:44
FPGATrackSimBinStep::stepNum
unsigned stepNum() const
Definition: FPGATrackSimBinStep.h:63
FPGATrackSimBinStep::FPGATrackSimBinTool
friend FPGATrackSimBinTool
Definition: FPGATrackSimBinStep.h:121
FPGATrackSimBinStep::m_pars
std::vector< unsigned > m_pars
Definition: FPGATrackSimBinStep.h:101
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimBinUtil.h
Binning Utilities for GenScanTool.
AthAlgTool.h
FPGATrackSimBinStep::printValidBin
void printValidBin() const
Definition: FPGATrackSimBinStep.cxx:139
FPGATrackSimBinStep::m_parBinsConfig
Gaudi::Property< std::vector< unsigned > > m_parBinsConfig
Definition: FPGATrackSimBinStep.h:98
FPGATrackSimBinArray< int >
FPGATrackSimBinStep::stepPars
const std::vector< unsigned > & stepPars() const
Definition: FPGATrackSimBinStep.h:60
FPGATrackSimBinStep::validBinsFull
const FPGATrackSimBinArray< int > & validBinsFull() const
Definition: FPGATrackSimBinStep.h:94
FPGATrackSimBinStep::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinStep.cxx:16
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
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
FPGATrackSimBinStep::stepName
const std::string stepName() const
Definition: FPGATrackSimBinStep.h:62
FPGATrackSimBinStep::FPGATrackSimBinStep
FPGATrackSimBinStep(const std::string &algname, const std::string &name, const IInterface *ifc)
Definition: FPGATrackSimBinStep.h:51
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::binHighEdge
double binHighEdge(unsigned par, unsigned bin) const
Definition: FPGATrackSimBinStep.h:68
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
FPGATrackSimBinStep::stepIdx
const std::vector< unsigned > stepIdx(IdxSet idx) const
Definition: FPGATrackSimBinStep.cxx:122
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimBinUtil::IdxSet
Definition: FPGATrackSimBinUtil.h:50
FPGATrackSimBinStep::nBins
const std::vector< unsigned > nBins() const
Definition: FPGATrackSimBinStep.h:61