ATLAS Offline Software
FPGATrackSimKeyLayerBinDesc.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef FPGATrackSimKeyLayerBinDesc_H
4 #define FPGATrackSimKeyLayerBinDesc_H
5 
25 
31 
32 
34 
35 #include <cmath>
36 #include <initializer_list>
37 #include <string>
38 #include <vector>
39 
41 
42 class FPGATrackSimKeyLayerBinDesc : public extends<AthAlgTool, IFPGATrackSimBinDesc> {
43 
44 public:
46  using base_class::base_class;
47 
48  virtual StatusCode initialize() override;
49 
50  virtual const std::string &parNames(unsigned i) const override { return m_parNames[i]; }
51 
52  // convert back and forth from pT, eta, phi, d0, z0 and internal paramater set
53  virtual const FPGATrackSimBinUtil::ParSet
54  trackParsToParSet(const FPGATrackSimTrackPars &pars) const override {
56  if (m_fieldCorrection) {
57  keypars.phi1+=fieldCorrection(m_fieldCorRegion, pars.qOverPt/1000.0 ,m_keylyrtool.R1());
58  keypars.phi2+=fieldCorrection(m_fieldCorRegion, pars.qOverPt/1000.0 ,m_keylyrtool.R2());
59  }
60  return keyparsToParSet(keypars);
61  }
62 
63 
64 
65  virtual const FPGATrackSimTrackPars parSetToTrackPars(const FPGATrackSimBinUtil::ParSet &parset) const override {
67  }
68 
69  // calculate the distance in phi or eta from a track defined by parset to a
70  // hit these can be implemented as any variable in the r-phi or r-eta plane
71  // (not necessarily eta and phi).
72  virtual double phiResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const override {
73  return m_keylyrtool.deltaX(parSetToKeyPars(parset), hit);
74  }
75 
76  virtual double etaResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const override {
77  return hit->getZ()- m_keylyrtool.zExpected(parSetToKeyPars(parset),hit->getR());
78  }
79 
80  // figure out if step is r-phi or r-eta plan
81  bool stepIsRPhi(const FPGATrackSimBinStep &step) const;
82  bool stepIsREta(const FPGATrackSimBinStep &step) const;
83 
84  // idx should be with the definition specifed in the step
85  // NOTE: the stored hit may be modified!
87  FPGATrackSimBinUtil::StoredHit &storedhit) const override;
88 
89  // Write the relevant LUT tables for firmware
90  virtual void writeLUTs(const FPGATrackSimBinStep &step) const override;
91 
92  private:
93  // Configurable Properties
94  Gaudi::Property<double> m_rin{this, "rin", {-1.0}, "Radius of inner layer for keylayer definition"};
95  Gaudi::Property<double> m_rout{this, "rout", {-1.0}, "Radius of outer layer for keylayer definition"};
96  Gaudi::Property<bool> m_approxMath{this, "approxMath", {false}, "Use approximate math to emulate possible firmware"};
97  Gaudi::Property<double> m_d0pad{this, "D0Pad", 0.0, "Extra phi padding from d0 resolution"};
98  Gaudi::Property<double> m_phipad{this, "PhiPad", 0.0, "Extra phi padding from phi resolution"};
99  Gaudi::Property<double> m_qptpad{this, "QPtPad", 0.0, "Extra phi padding from q/pT resolution"};
100  Gaudi::Property<double> m_z0pad{this, "Z0Pad", 0.0, "Extra eta padding from z0 resolution"};
101  Gaudi::Property<double> m_etapad{this, "EtaPad", 0.0, "Extra eta padding from eta resolution"};
102  Gaudi::Property<std::vector<double>> m_slPerEtaMod{
103  this,
104  "slPerEtaMod",
105  std::vector<double>{19.0, 24.0, 29.0, 32.0, 18.1, 27.1, 24.1, 15.1, 30.8,
106  30.8, 26.2, 32.2, 32.2, 26.2, 54.6, 54.6, 40.2, 60.2},
107  "Strip length per eta eta mod"
108  };
109 
110 
111  Gaudi::Property<unsigned> m_fieldCorRegion { this, "fieldCorRegion", 2, "region for fieldCorrection"};
112  Gaudi::Property<bool> m_fieldCorrection {this, "fieldCorrection", true, "Use magnetic field correction for Hough transform"};
113 
114 
115  // convert to/from the KeyLyrPars struct and the ParSet
117  return FPGATrackSimBinUtil::ParSet({keypars.z1,keypars.z2,keypars.phi1,keypars.phi2,keypars.xm});
118  }
121  }
122 
123  // Internal
125  const std::vector<std::string> m_parNames{"zR1", "zR2", "phiR1", "phiR2", "xm"};
126 
127  const std::vector<unsigned> m_phipars{2, 3, 4};
128  const std::vector<unsigned> m_etapars{0, 1};
129 
130 };
131 
132 
133 #endif // FPGATrackSimKeyLayerBinDesc_H
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
FPGATrackSimKeyLayerBinDesc::parNames
virtual const std::string & parNames(unsigned i) const override
Definition: FPGATrackSimKeyLayerBinDesc.h:50
FPGATrackSimKeyLayerBinDesc::m_etapars
const std::vector< unsigned > m_etapars
Definition: FPGATrackSimKeyLayerBinDesc.h:128
FPGATrackSimBinStep
Definition: FPGATrackSimBinStep.h:45
AthMsgStreamMacros.h
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimKeyLayerTool.h
Binning Classes for BinTool.
FPGATrackSimKeyLayerTool::R2
double R2() const
Definition: FPGATrackSimKeyLayerTool.h:100
FPGATrackSimKeyLayerBinDesc::etaResidual
virtual double etaResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const override
Definition: FPGATrackSimKeyLayerBinDesc.h:76
FPGATrackSimKeyLayerBinDesc::m_fieldCorRegion
Gaudi::Property< unsigned > m_fieldCorRegion
Definition: FPGATrackSimKeyLayerBinDesc.h:111
FPGATrackSimKeyLayerBinDesc::m_rout
Gaudi::Property< double > m_rout
Definition: FPGATrackSimKeyLayerBinDesc.h:95
FPGATrackSimKeyLayerBinDesc::keyparsToParSet
FPGATrackSimBinUtil::ParSet keyparsToParSet(const FPGATrackSimKeyLayerTool::KeyLyrPars &keypars) const
Definition: FPGATrackSimKeyLayerBinDesc.h:116
FPGATrackSimKeyLayerBinDesc::m_parNames
const std::vector< std::string > m_parNames
Definition: FPGATrackSimKeyLayerBinDesc.h:125
FPGATrackSimKeyLayerTool::KeyLyrPars::xm
double xm
Definition: FPGATrackSimKeyLayerTool.h:56
FPGATrackSimKeyLayerBinDesc::m_etapad
Gaudi::Property< double > m_etapad
Definition: FPGATrackSimKeyLayerBinDesc.h:101
FPGATrackSimKeyLayerBinDesc::parSetToTrackPars
virtual const FPGATrackSimTrackPars parSetToTrackPars(const FPGATrackSimBinUtil::ParSet &parset) const override
Definition: FPGATrackSimKeyLayerBinDesc.h:65
FPGATrackSimKeyLayerTool::KeyLyrPars::phi2
double phi2
Definition: FPGATrackSimKeyLayerTool.h:55
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimKeyLayerTool
Definition: FPGATrackSimKeyLayerTool.h:43
FPGATrackSimKeyLayerBinDesc::m_phipars
const std::vector< unsigned > m_phipars
Definition: FPGATrackSimKeyLayerBinDesc.h:127
FPGATrackSimKeyLayerTool::deltaX
double deltaX(const KeyLyrPars &keypars, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimKeyLayerTool.cxx:156
FPGATrackSimKeyLayerBinDesc::m_phipad
Gaudi::Property< double > m_phipad
Definition: FPGATrackSimKeyLayerBinDesc.h:98
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimKeyLayerBinDesc::hitInBin
virtual bool hitInBin(const FPGATrackSimBinStep &step, const FPGATrackSimBinUtil::IdxSet &idx, FPGATrackSimBinUtil::StoredHit &storedhit) const override
Definition: FPGATrackSimKeyLayerBinDesc.cxx:40
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimKeyLayerBinDesc::m_qptpad
Gaudi::Property< double > m_qptpad
Definition: FPGATrackSimKeyLayerBinDesc.h:99
AthAlgTool.h
FPGATrackSimKeyLayerBinDesc::m_d0pad
Gaudi::Property< double > m_d0pad
Definition: FPGATrackSimKeyLayerBinDesc.h:97
FPGATrackSimKeyLayerBinDesc::m_rin
Gaudi::Property< double > m_rin
Definition: FPGATrackSimKeyLayerBinDesc.h:94
FPGATrackSimKeyLayerBinDesc::stepIsREta
bool stepIsREta(const FPGATrackSimBinStep &step) const
Definition: FPGATrackSimKeyLayerBinDesc.cxx:139
FPGATrackSimBinUtil::ParSet
Definition: FPGATrackSimBinUtil.h:45
FPGATrackSimKeyLayerTool::KeyLyrPars::z2
double z2
Definition: FPGATrackSimKeyLayerTool.h:53
FPGATrackSimHit::getZ
float getZ() const
Definition: FPGATrackSimHit.h:151
FPGATrackSimKeyLayerTool::KeyLyrPars::phi1
double phi1
Definition: FPGATrackSimKeyLayerTool.h:54
FPGATrackSimKeyLayerTool::trackParsToKeyPars
KeyLyrPars trackParsToKeyPars(const FPGATrackSimTrackPars &pars) const
Definition: FPGATrackSimKeyLayerTool.cxx:53
FPGATrackSimKeyLayerBinDesc::m_approxMath
Gaudi::Property< bool > m_approxMath
Definition: FPGATrackSimKeyLayerBinDesc.h:96
FPGATrackSimBinUtil::StoredHit
Definition: FPGATrackSimBinUtil.h:101
IFPGATrackSimBinDesc.h
Defines Parameters used for binning.
FPGATrackSimFunctions.h
FPGATrackSimHit.h
: FPGATrackSim-specific class to represent an hit in the detector.
FPGATrackSimKeyLayerBinDesc::trackParsToParSet
virtual const FPGATrackSimBinUtil::ParSet trackParsToParSet(const FPGATrackSimTrackPars &pars) const override
Definition: FPGATrackSimKeyLayerBinDesc.h:54
FPGATrackSimKeyLayerBinDesc
Definition: FPGATrackSimKeyLayerBinDesc.h:42
FPGATrackSimKeyLayerTool::R1
double R1() const
Definition: FPGATrackSimKeyLayerTool.h:99
FPGATrackSimKeyLayerBinDesc::phiResidual
virtual double phiResidual(const FPGATrackSimBinUtil::ParSet &parset, FPGATrackSimHit const *hit) const override
Definition: FPGATrackSimKeyLayerBinDesc.h:72
FPGATrackSimKeyLayerTool::KeyLyrPars::z1
double z1
Definition: FPGATrackSimKeyLayerTool.h:52
FPGATrackSimHit::getR
float getR() const
Definition: FPGATrackSimHit.h:152
FPGATrackSimKeyLayerBinDesc::m_keylyrtool
FPGATrackSimKeyLayerTool m_keylyrtool
Definition: FPGATrackSimKeyLayerBinDesc.h:124
FPGATrackSimKeyLayerBinDesc::stepIsRPhi
bool stepIsRPhi(const FPGATrackSimBinStep &step) const
Definition: FPGATrackSimKeyLayerBinDesc.cxx:128
FPGATrackSimKeyLayerTool::zExpected
double zExpected(const KeyLyrPars &keypars, double r) const
Definition: FPGATrackSimKeyLayerTool.cxx:126
FPGATrackSimKeyLayerBinDesc::parSetToKeyPars
FPGATrackSimKeyLayerTool::KeyLyrPars parSetToKeyPars(const FPGATrackSimBinUtil::ParSet &parset) const
Definition: FPGATrackSimKeyLayerBinDesc.h:119
FPGATrackSimKeyLayerBinDesc::m_z0pad
Gaudi::Property< double > m_z0pad
Definition: FPGATrackSimKeyLayerBinDesc.h:100
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
LArCellBinning.step
step
Definition: LArCellBinning.py:158
FPGATrackSimKeyLayerBinDesc::initialize
virtual StatusCode initialize() override
Definition: FPGATrackSimKeyLayerBinDesc.cxx:24
fieldCorrection
double fieldCorrection(unsigned region, double qoverpt, double r)
Definition: FPGATrackSimFunctions.cxx:163
FPGATrackSimKeyLayerBinDesc::m_fieldCorrection
Gaudi::Property< bool > m_fieldCorrection
Definition: FPGATrackSimKeyLayerBinDesc.h:112
FPGATrackSimBinUtil::IdxSet
Definition: FPGATrackSimBinUtil.h:50
FPGATrackSimKeyLayerBinDesc::writeLUTs
virtual void writeLUTs(const FPGATrackSimBinStep &step) const override
Definition: FPGATrackSimKeyLayerBinDesc.cxx:155
FPGATrackSimKeyLayerBinDesc::m_slPerEtaMod
Gaudi::Property< std::vector< double > > m_slPerEtaMod
Definition: FPGATrackSimKeyLayerBinDesc.h:102
FPGATrackSimTrackPars.h
Structs that store the 5 track parameters.
FPGATrackSimKeyLayerTool::keyParsToTrackPars
FPGATrackSimTrackPars keyParsToTrackPars(const KeyLyrPars &keypars) const
Definition: FPGATrackSimKeyLayerTool.cxx:79
FPGATrackSimKeyLayerTool::KeyLyrPars
Definition: FPGATrackSimKeyLayerTool.h:48