Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FPGATrackSimBinTool.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimBinTool_H
4 #define FPGATrackSimBinTool_H
5 
25 
27 
28 #include "FPGATrackSimBinUtil.h"
29 #include "IFPGATrackSimBinDesc.h"
30 #include "FPGATrackSimBinStep.h"
31 
32 #include <GaudiKernel/GaudiHandle.h>
33 #include <cmath>
34 #include <string>
35 #include <vector>
36 
37 // Use IdxSet and ParSet from FPGATrackSimUtil
40 
41 //-------------------------------------------------------------------------------------------------------
42 //
43 //-------------------------------------------------------------------------------------------------------
44 class FPGATrackSimBinTool : virtual public AthAlgTool {
45 public:
47 
48  FPGATrackSimBinTool(const std::string &algname, const std::string &name, const IInterface *ifc);
49 
50  virtual StatusCode initialize() override;
51 
52  //--------------------------------------------------------------------------------------------------
53  //
54  // Access to FPGATrackSimBinSteps and FPGATrackSimBinDesc
55  //
56  //--------------------------------------------------------------------------------------------------
57  const IFPGATrackSimBinDesc* binDesc() const {return m_binDesc.get();}
58  const ToolHandleArray<FPGATrackSimBinStep>& steps() const { return m_steps;}
59  FPGATrackSimBinStep* lastStep() { return (--m_steps.end())->get(); }
60  const FPGATrackSimBinStep* lastStep() const { return (--m_steps.end())->get(); }
61  const std::vector<std::string>& stepNames() const {return m_stepNames;}
62 
63  //--------------------------------------------------------------------------------------------------
64  //
65  // Bin Boundaries and conversions from value to bin
66  //
67  //--------------------------------------------------------------------------------------------------
68 
69  // center of whole region
70  ParSet center() const;
71 
72  // range of whole region
73  double parRange(unsigned par) const { return m_parMax[par]-m_parMin[par];}
74  double parCenter(unsigned par) const { return (m_parMax[par]+m_parMin[par])/2.0;}
75  double parMin(unsigned par) const { return m_parMin[par];}
76  double parMax(unsigned par) const { return m_parMax[par];}
77 
78  // Getters for the entire ranges
79  const ParSet& parMin() const { return m_parMin;}
80  const ParSet& parMax() const { return m_parMax;}
81 
82 
83  // check if 1-d or 5-d parameter is within the range of the binning
84  bool inRange(unsigned par, double val) const { return ((val < m_parMax[par]) && (val > m_parMin[par])); }
85  bool inRange(const ParSet &pars) const;
86 
87  //--------------------------------------------------------------------------------------------------
88  //
89  // Set which bins are valid
90  //
91  //--------------------------------------------------------------------------------------------------
92  void initValidBins();
94  void setValidBin(const std::vector<unsigned>& idx); // also sets SubBins
95  void printValidBin() const; // dump an output to log for x-checks
96 
97  // Write Firmware LUTs (constants)
98  void writeLUTs() const;
99 
100 private:
101  //--------------------------------------------------------------------------------------------------
102  //
103  // Python Configurables
104  //
105  //--------------------------------------------------------------------------------------------------
106  Gaudi::Property<double> m_d0FractionalPadding{this, "d0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
107  Gaudi::Property<double> m_z0FractionalPadding{this, "z0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
108  Gaudi::Property<double> m_etaFractionalPadding{this, "etaFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
109  Gaudi::Property<double> m_phiFractionalPadding{this, "phiFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
110  Gaudi::Property<double> m_qOverPtFractionalPadding{this, "qOverPtFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
111  Gaudi::Property<std::vector<double>> m_parMinConfig{this, "parMin", {}, "Vector of minimum bounds of parameters (expect 5"};
112  Gaudi::Property<std::vector<double>> m_parMaxConfig{this, "parMax", {}, "Vector of maximum bounds of parameters (expect 5"};
113 
114  ToolHandleArray<FPGATrackSimBinStep> m_steps{this, "Steps", {}, "Array of FPGATrackSimBinStep: describes which parameters are binned at each step"};
115  ToolHandle<IFPGATrackSimBinDesc> m_binDesc{this, "BinDesc", "FPGATrackSimBinDescBase", "FPGATrackSimBinDescBase: describes binning track parameters"};
116 
117  //
118  // Internal data
119  //
120 
121  // These indicate the range of the full binning
124 
125  // A list of the step names for convienience
126  std::vector<std::string> m_stepNames;
127 };
128 
129 #endif // FPGATrackSimBinTool_H
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
FPGATrackSimBinTool::m_parMin
ParSet m_parMin
Definition: FPGATrackSimBinTool.h:122
FPGATrackSimBinTool::lastStep
const FPGATrackSimBinStep * lastStep() const
Definition: FPGATrackSimBinTool.h:60
FPGATrackSimBinTool::m_parMax
ParSet m_parMax
Definition: FPGATrackSimBinTool.h:123
FPGATrackSimBinTool::m_d0FractionalPadding
Gaudi::Property< double > m_d0FractionalPadding
Definition: FPGATrackSimBinTool.h:106
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimBinTool::writeLUTs
void writeLUTs() const
Definition: FPGATrackSimBinTool.cxx:164
FPGATrackSimBinTool::parMin
const ParSet & parMin() const
Definition: FPGATrackSimBinTool.h:79
FPGATrackSimBinStep
Definition: FPGATrackSimBinStep.h:49
FPGATrackSimBinTool::m_stepNames
std::vector< std::string > m_stepNames
Definition: FPGATrackSimBinTool.h:126
FPGATrackSimBinTool::m_binDesc
ToolHandle< IFPGATrackSimBinDesc > m_binDesc
Definition: FPGATrackSimBinTool.h:115
FPGATrackSimBinTool::parMin
double parMin(unsigned par) const
Definition: FPGATrackSimBinTool.h:75
FPGATrackSimBinTool::steps
const ToolHandleArray< FPGATrackSimBinStep > & steps() const
Definition: FPGATrackSimBinTool.h:58
FPGATrackSimBinTool::FPGATrackSimBinStep
friend FPGATrackSimBinStep
Definition: FPGATrackSimBinTool.h:46
FPGATrackSimBinTool::m_etaFractionalPadding
Gaudi::Property< double > m_etaFractionalPadding
Definition: FPGATrackSimBinTool.h:108
IFPGATrackSimEventSelectionSvc
Definition: IFPGATrackSimEventSelectionSvc.h:22
FPGATrackSimBinTool::center
ParSet center() const
Definition: FPGATrackSimBinTool.cxx:151
FPGATrackSimBinTool::printValidBin
void printValidBin() const
Definition: FPGATrackSimBinTool.cxx:84
FPGATrackSimBinTool::lastStep
FPGATrackSimBinStep * lastStep()
Definition: FPGATrackSimBinTool.h:59
FPGATrackSimBinStep.h
Binning Classes for BinStep.
FPGATrackSimBinTool::m_parMaxConfig
Gaudi::Property< std::vector< double > > m_parMaxConfig
Definition: FPGATrackSimBinTool.h:112
FPGATrackSimBinTool::parMax
const ParSet & parMax() const
Definition: FPGATrackSimBinTool.h:80
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:44
FPGATrackSimBinTool::m_phiFractionalPadding
Gaudi::Property< double > m_phiFractionalPadding
Definition: FPGATrackSimBinTool.h:109
FPGATrackSimBinTool::computeValidBins
void computeValidBins(const IFPGATrackSimEventSelectionSvc *evtSel)
Definition: FPGATrackSimBinTool.cxx:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimBinUtil.h
Binning Utilities for GenScanTool.
FPGATrackSimBinTool::parCenter
double parCenter(unsigned par) const
Definition: FPGATrackSimBinTool.h:74
FPGATrackSimBinTool::initValidBins
void initValidBins()
Definition: FPGATrackSimBinTool.cxx:80
AthAlgTool.h
FPGATrackSimBinTool::inRange
bool inRange(unsigned par, double val) const
Definition: FPGATrackSimBinTool.h:84
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
FPGATrackSimBinTool::m_parMinConfig
Gaudi::Property< std::vector< double > > m_parMinConfig
Definition: FPGATrackSimBinTool.h:111
FPGATrackSimBinTool::binDesc
const IFPGATrackSimBinDesc * binDesc() const
Definition: FPGATrackSimBinTool.h:57
FPGATrackSimBinTool::setValidBin
void setValidBin(const std::vector< unsigned > &idx)
Definition: FPGATrackSimBinTool.cxx:76
FPGATrackSimBinTool::parMax
double parMax(unsigned par) const
Definition: FPGATrackSimBinTool.h:76
FPGATrackSimBinTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinTool.cxx:22
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
FPGATrackSimBinTool::m_z0FractionalPadding
Gaudi::Property< double > m_z0FractionalPadding
Definition: FPGATrackSimBinTool.h:107
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimBinTool::parRange
double parRange(unsigned par) const
Definition: FPGATrackSimBinTool.h:73
FPGATrackSimBinTool::inRange
bool inRange(const ParSet &pars) const
FPGATrackSimBinTool::FPGATrackSimBinTool
FPGATrackSimBinTool(const std::string &algname, const std::string &name, const IInterface *ifc)
Definition: FPGATrackSimBinTool.cxx:12
IFPGATrackSimEventSelectionSvc.h
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
IFPGATrackSimBinDesc
Definition: IFPGATrackSimBinDesc.h:50
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimBinTool::m_steps
ToolHandleArray< FPGATrackSimBinStep > m_steps
Definition: FPGATrackSimBinTool.h:114
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimBinUtil::IdxSet
Definition: FPGATrackSimBinUtil.h:50
FPGATrackSimBinTool::m_qOverPtFractionalPadding
Gaudi::Property< double > m_qOverPtFractionalPadding
Definition: FPGATrackSimBinTool.h:110
FPGATrackSimBinTool::stepNames
const std::vector< std::string > & stepNames() const
Definition: FPGATrackSimBinTool.h:61