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 //-------------------------------------------------------------------------------------------------------
38 //
39 //-------------------------------------------------------------------------------------------------------
40 class FPGATrackSimBinTool : virtual public AthAlgTool {
41 public:
43 
44  FPGATrackSimBinTool(const std::string &algname, const std::string &name, const IInterface *ifc);
45 
46  virtual StatusCode initialize() override;
47 
48  //--------------------------------------------------------------------------------------------------
49  //
50  // Access to FPGATrackSimBinSteps and FPGATrackSimBinDesc
51  //
52  //--------------------------------------------------------------------------------------------------
53  const IFPGATrackSimBinDesc* binDesc() const {return m_binDesc.get();}
54  const ToolHandleArray<FPGATrackSimBinStep>& steps() const { return m_steps;}
55  FPGATrackSimBinStep* lastStep() { return (--m_steps.end())->get(); }
56  const FPGATrackSimBinStep* lastStep() const { return (--m_steps.end())->get(); }
57  const std::vector<std::string>& stepNames() const {return m_stepNames;}
58 
59  //--------------------------------------------------------------------------------------------------
60  //
61  // Bin Boundaries and conversions from value to bin
62  //
63  //--------------------------------------------------------------------------------------------------
64 
65  // center of whole region
67 
68  // range of whole region
69  double parRange(unsigned par) const { return m_parMax[par]-m_parMin[par];}
70  double parCenter(unsigned par) const { return (m_parMax[par]+m_parMin[par])/2.0;}
71  double parMin(unsigned par) const { return m_parMin[par];}
72  double parMax(unsigned par) const { return m_parMax[par];}
73 
74  // Getters for the entire ranges
75  const FPGATrackSimBinUtil::ParSet& parMin() const { return m_parMin;}
76  const FPGATrackSimBinUtil::ParSet& parMax() const { return m_parMax;}
77 
78 
79  // check if 1-d or 5-d parameter is within the range of the binning
80  bool inRange(unsigned par, double val) const { return ((val < m_parMax[par]) && (val > m_parMin[par])); }
82 
83  //--------------------------------------------------------------------------------------------------
84  //
85  // Set which bins are valid
86  //
87  //--------------------------------------------------------------------------------------------------
88  void initValidBins();
90  void setValidBin(const std::vector<unsigned>& idx); // also sets SubBins
91  void printValidBin() const; // dump an output to log for x-checks
92 
93  // Write Firmware LUTs (constants)
94  void writeLUTs() const;
95 
96 private:
97  //--------------------------------------------------------------------------------------------------
98  //
99  // Python Configurables
100  //
101  //--------------------------------------------------------------------------------------------------
102  Gaudi::Property<double> m_d0FractionalPadding{this, "d0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
103  Gaudi::Property<double> m_z0FractionalPadding{this, "z0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
104  Gaudi::Property<double> m_etaFractionalPadding{this, "etaFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
105  Gaudi::Property<double> m_phiFractionalPadding{this, "phiFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
106  Gaudi::Property<double> m_qOverPtFractionalPadding{this, "qOverPtFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
107  Gaudi::Property<std::vector<double>> m_parMinConfig{this, "parMin", {}, "Vector of minimum bounds of parameters (expect 5"};
108  Gaudi::Property<std::vector<double>> m_parMaxConfig{this, "parMax", {}, "Vector of maximum bounds of parameters (expect 5"};
109 
110  ToolHandleArray<FPGATrackSimBinStep> m_steps{this, "Steps", {}, "Array of FPGATrackSimBinStep: describes which parameters are binned at each step"};
111  ToolHandle<IFPGATrackSimBinDesc> m_binDesc{this, "BinDesc", "FPGATrackSimBinDescBase", "FPGATrackSimBinDescBase: describes binning track parameters"};
112 
113  //
114  // Internal data
115  //
116 
117  // These indicate the range of the full binning
120 
121  // A list of the step names for convienience
122  std::vector<std::string> m_stepNames;
123 };
124 
125 #endif // FPGATrackSimBinTool_H
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
FPGATrackSimBinTool::lastStep
const FPGATrackSimBinStep * lastStep() const
Definition: FPGATrackSimBinTool.h:56
FPGATrackSimBinTool::m_d0FractionalPadding
Gaudi::Property< double > m_d0FractionalPadding
Definition: FPGATrackSimBinTool.h:102
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimBinTool::writeLUTs
void writeLUTs() const
Definition: FPGATrackSimBinTool.cxx:167
FPGATrackSimBinTool::m_parMin
FPGATrackSimBinUtil::ParSet m_parMin
Definition: FPGATrackSimBinTool.h:118
FPGATrackSimBinStep
Definition: FPGATrackSimBinStep.h:45
FPGATrackSimBinTool::m_stepNames
std::vector< std::string > m_stepNames
Definition: FPGATrackSimBinTool.h:122
FPGATrackSimBinTool::m_binDesc
ToolHandle< IFPGATrackSimBinDesc > m_binDesc
Definition: FPGATrackSimBinTool.h:111
FPGATrackSimBinTool::parMin
double parMin(unsigned par) const
Definition: FPGATrackSimBinTool.h:71
FPGATrackSimBinTool::steps
const ToolHandleArray< FPGATrackSimBinStep > & steps() const
Definition: FPGATrackSimBinTool.h:54
FPGATrackSimBinTool::parMin
const FPGATrackSimBinUtil::ParSet & parMin() const
Definition: FPGATrackSimBinTool.h:75
FPGATrackSimBinTool::FPGATrackSimBinStep
friend FPGATrackSimBinStep
Definition: FPGATrackSimBinTool.h:42
FPGATrackSimBinTool::m_etaFractionalPadding
Gaudi::Property< double > m_etaFractionalPadding
Definition: FPGATrackSimBinTool.h:104
IFPGATrackSimEventSelectionSvc
Definition: IFPGATrackSimEventSelectionSvc.h:22
FPGATrackSimBinTool::center
FPGATrackSimBinUtil::ParSet center() const
Definition: FPGATrackSimBinTool.cxx:154
FPGATrackSimBinTool::printValidBin
void printValidBin() const
Definition: FPGATrackSimBinTool.cxx:87
FPGATrackSimBinTool::lastStep
FPGATrackSimBinStep * lastStep()
Definition: FPGATrackSimBinTool.h:55
FPGATrackSimBinStep.h
Binning Classes for BinStep.
FPGATrackSimBinTool::m_parMaxConfig
Gaudi::Property< std::vector< double > > m_parMaxConfig
Definition: FPGATrackSimBinTool.h:108
FPGATrackSimBinTool
Definition: FPGATrackSimBinTool.h:40
FPGATrackSimBinTool::m_phiFractionalPadding
Gaudi::Property< double > m_phiFractionalPadding
Definition: FPGATrackSimBinTool.h:105
FPGATrackSimBinTool::computeValidBins
void computeValidBins(const IFPGATrackSimEventSelectionSvc *evtSel)
Definition: FPGATrackSimBinTool.cxx:95
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:70
FPGATrackSimBinTool::initValidBins
void initValidBins()
Definition: FPGATrackSimBinTool.cxx:83
AthAlgTool.h
FPGATrackSimBinTool::inRange
bool inRange(unsigned par, double val) const
Definition: FPGATrackSimBinTool.h:80
FPGATrackSimBinTool::inRange
bool inRange(const FPGATrackSimBinUtil::ParSet &pars) const
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
FPGATrackSimBinTool::m_parMinConfig
Gaudi::Property< std::vector< double > > m_parMinConfig
Definition: FPGATrackSimBinTool.h:107
FPGATrackSimBinTool::binDesc
const IFPGATrackSimBinDesc * binDesc() const
Definition: FPGATrackSimBinTool.h:53
FPGATrackSimBinTool::setValidBin
void setValidBin(const std::vector< unsigned > &idx)
Definition: FPGATrackSimBinTool.cxx:79
FPGATrackSimBinTool::parMax
double parMax(unsigned par) const
Definition: FPGATrackSimBinTool.h:72
FPGATrackSimBinTool::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimBinTool.cxx:25
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:103
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimBinTool::parRange
double parRange(unsigned par) const
Definition: FPGATrackSimBinTool.h:69
FPGATrackSimBinTool::FPGATrackSimBinTool
FPGATrackSimBinTool(const std::string &algname, const std::string &name, const IInterface *ifc)
Definition: FPGATrackSimBinTool.cxx:15
IFPGATrackSimEventSelectionSvc.h
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
IFPGATrackSimBinDesc
Definition: IFPGATrackSimBinDesc.h:46
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimBinTool::m_steps
ToolHandleArray< FPGATrackSimBinStep > m_steps
Definition: FPGATrackSimBinTool.h:110
AthAlgTool
Definition: AthAlgTool.h:26
FPGATrackSimBinTool::m_parMax
FPGATrackSimBinUtil::ParSet m_parMax
Definition: FPGATrackSimBinTool.h:119
FPGATrackSimBinTool::m_qOverPtFractionalPadding
Gaudi::Property< double > m_qOverPtFractionalPadding
Definition: FPGATrackSimBinTool.h:106
FPGATrackSimBinTool::stepNames
const std::vector< std::string > & stepNames() const
Definition: FPGATrackSimBinTool.h:57
FPGATrackSimBinTool::parMax
const FPGATrackSimBinUtil::ParSet & parMax() const
Definition: FPGATrackSimBinTool.h:76