ATLAS Offline Software
Loading...
Searching...
No Matches
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"
30#include "FPGATrackSimBinStep.h"
31
32#include <GaudiKernel/GaudiHandle.h>
33#include <cmath>
34#include <string>
35#include <vector>
36
37//-------------------------------------------------------------------------------------------------------
38//
39//-------------------------------------------------------------------------------------------------------
40class FPGATrackSimBinTool : virtual public AthAlgTool {
41public:
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();}
55 const ToolHandleArray<FPGATrackSimBinStep>& steps() const { return m_steps;}
56 FPGATrackSimBinStep* lastStep() { return (--m_steps.end())->get(); }
57 const FPGATrackSimBinStep* lastStep() const { return (--m_steps.end())->get(); }
58 const std::vector<std::string>& stepNames() const {return m_stepNames;}
59
60 //--------------------------------------------------------------------------------------------------
61 //
62 // Bin Boundaries and conversions from value to bin
63 //
64 //--------------------------------------------------------------------------------------------------
65
66 // center of whole region
68
69 // range of whole region
70 double parRange(unsigned par) const { return m_parMax[par]-m_parMin[par];}
71 double parCenter(unsigned par) const { return (m_parMax[par]+m_parMin[par])/2.0;}
72 double parMin(unsigned par) const { return m_parMin[par];}
73 double parMax(unsigned par) const { return m_parMax[par];}
74
75 // Getters for the entire ranges
78
79
80 // check if 1-d or 5-d parameter is within the range of the binning
81 bool inRange(unsigned par, double val) const { return ((val < m_parMax[par]) && (val > m_parMin[par])); }
82 bool inRange(const FPGATrackSimBinUtil::ParSet &pars) const;
83
84 //--------------------------------------------------------------------------------------------------
85 //
86 // Set which bins are valid
87 //
88 //--------------------------------------------------------------------------------------------------
89 void initValidBins();
91 void setValidBin(const std::vector<unsigned>& idx); // also sets SubBins
92 void printValidBin() const; // dump an output to log for x-checks
93
94 // Write Firmware LUTs (constants)
95 void writeLUTs() const;
96
97private:
98 //--------------------------------------------------------------------------------------------------
99 //
100 // Python Configurables
101 //
102 //--------------------------------------------------------------------------------------------------
103 Gaudi::Property<double> m_d0FractionalPadding{this, "d0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
104 Gaudi::Property<double> m_z0FractionalPadding{this, "z0FractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
105 Gaudi::Property<double> m_etaFractionalPadding{this, "etaFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
106 Gaudi::Property<double> m_phiFractionalPadding{this, "phiFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
107 Gaudi::Property<double> m_qOverPtFractionalPadding{this, "qOverPtFractionalPadding", {}, "Fractional padding used when calculating the valid range of bins"};
108 Gaudi::Property<std::vector<double>> m_parMinConfig{this, "parMin", {}, "Vector of minimum bounds of parameters (expect 5"};
109 Gaudi::Property<std::vector<double>> m_parMaxConfig{this, "parMax", {}, "Vector of maximum bounds of parameters (expect 5"};
110
111 ToolHandleArray<FPGATrackSimBinStep> m_steps{this, "Steps", {}, "Array of FPGATrackSimBinStep: describes which parameters are binned at each step"};
112 ToolHandle<IFPGATrackSimBinDesc> m_binDesc{this, "BinDesc", "FPGATrackSimBinDescBase", "FPGATrackSimBinDescBase: describes binning track parameters"};
113
114 //
115 // Internal data
116 //
117
118 // These indicate the range of the full binning
121
122 // A list of the step names for convienience
123 std::vector<std::string> m_stepNames;
124};
125
126#endif // FPGATrackSimBinTool_H
Binning Classes for BinStep.
Binning Utilities for GenScanTool.
Defines Parameters used for binning.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
const FPGATrackSimBinUtil::ParSet & parMin() const
FPGATrackSimBinTool(const std::string &algname, const std::string &name, const IInterface *ifc)
void computeValidBins(const IFPGATrackSimEventSelectionSvc *evtSel)
const std::vector< std::string > & stepNames() const
FPGATrackSimBinUtil::ParSet center() const
const FPGATrackSimBinStep * lastStep() const
const IFPGATrackSimBinDesc * binDesc() const
FPGATrackSimBinUtil::ParSet m_parMax
double parMin(unsigned par) const
const FPGATrackSimBinUtil::ParSet & parMax() const
const ToolHandleArray< FPGATrackSimBinStep > & steps() const
ToolHandleArray< FPGATrackSimBinStep > m_steps
Gaudi::Property< double > m_etaFractionalPadding
Gaudi::Property< double > m_z0FractionalPadding
Gaudi::Property< std::vector< double > > m_parMaxConfig
IFPGATrackSimBinDesc * binDesc()
virtual StatusCode initialize() override
Gaudi::Property< double > m_d0FractionalPadding
ToolHandle< IFPGATrackSimBinDesc > m_binDesc
void setValidBin(const std::vector< unsigned > &idx)
Gaudi::Property< double > m_qOverPtFractionalPadding
std::vector< std::string > m_stepNames
FPGATrackSimBinStep * lastStep()
bool inRange(const FPGATrackSimBinUtil::ParSet &pars) const
Gaudi::Property< std::vector< double > > m_parMinConfig
Gaudi::Property< double > m_phiFractionalPadding
double parCenter(unsigned par) const
double parMax(unsigned par) const
bool inRange(unsigned par, double val) const
FPGATrackSimBinUtil::ParSet m_parMin
double parRange(unsigned par) const