ATLAS Offline Software
FPGATrackSimGenScanBinning.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
11 
12 //--------------------------------------------------------------------------------------------------
13 //
14 // FPGATrackSimGenScanBinningBase base class implementation
15 //
16 //--------------------------------------------------------------------------------------------------
17 
19 {
20  for (unsigned i = 0; i < NPars; i++)
21  {
22  if (!inRange(i, pars[i]))
23  return false;
24  }
25  return true;
26 }
27 
29 {
30  IdxSet retv;
31  for (unsigned i = 0; i < NPars; i++)
32  {
33  retv[i] = binIdx(i, pars[i]);
34  }
35  return retv;
36 }
38 {
39  ParSet parset = trackParsToParSet(pars);
40  if (inRange(parset))
41  {
42  return binIdx(parset);
43  }
44  return m_invalidBin;
45 }
46 
48 {
49  ParSet parset;
50  for (unsigned i = 0; i < NPars; i++)
51  {
52  parset[i] = (m_parMin[i] + m_parMin[i]) / 2.0;
53  }
54  return parset;
55 }
56 
58 {
59  ParSet parset;
60  for (unsigned i = 0; i < NPars; i++)
61  {
62  parset[i] = binLowEdge(i, idx[i]);
63  }
64  return parset;
65 }
66 
68 {
69  ParSet parset;
70  for (unsigned i = 0; i < NPars; i++)
71  {
72  parset[i] = binCenter(i, idx[i]);
73  }
74  return parset;
75 }
76 
77 std::vector<unsigned> FPGATrackSimGenScanBinningBase::subVec(const std::vector<unsigned>& elems, const IdxSet& invec) const
78 {
79  std::vector<unsigned> retv;
80  for (auto elem : elems)
81  {
82  retv.push_back(invec[elem]);
83  }
84  return retv;
85 }
86 
87 StatusCode FPGATrackSimGenScanBinningBase::setIdxSubVec(IdxSet &idx, const std::vector<unsigned>& subvecelems, const std::vector<unsigned>& subvecidx) const
88 {
89  if (subvecelems.size()!=subvecidx.size()) {
90  return StatusCode::FAILURE;
91  }
92  for (unsigned i = 0; i < subvecelems.size(); i++)
93  {
94  if (subvecelems[i] >= idx.size()) {
95  return StatusCode::FAILURE;
96  }
97  idx[subvecelems[i]] = subvecidx[i];
98  }
99  return StatusCode::SUCCESS;
100 }
101 
102 
103 // This gives a list tracks parameters for the corners of bin of dimensions scanpars.size()
104 std::vector<FPGATrackSimGenScanBinningBase::ParSet> FPGATrackSimGenScanBinningBase::makeVariationSet(const std::vector<unsigned> &scanpars, const IdxSet &idx) const
105 {
106  std::vector<ParSet> retv;
107  for (unsigned corners = 0; corners < unsigned((1 << scanpars.size())); corners++)
108  {
109  IdxSet newidx = idx;
110  int scanDimCnt = 0;
111  for (auto &par : scanpars)
112  {
113  newidx[par] = idx[par] + ((corners >> scanDimCnt) & 1);
114  scanDimCnt++;
115  }
116  retv.push_back(binLowEdge(newidx));
117  }
118  return retv;
119 }
120 
121 // find valid range for sliceVar
123 {
124  // Get float values
125  double slicevarmin = std::numeric_limits<double>::max();
126  double slicevarmax = std::numeric_limits<double>::min();
127 
129 
130  for (auto &pars : variations)
131  {
132  double slicevarhit = sliceVarExpected(pars, hit);
133  slicevarmin = std::min(slicevarmin, slicevarhit);
134  slicevarmax = std::max(slicevarmax, slicevarhit);
135  }
136  double slicevar = sliceVar(hit);
137  return ( slicevar > slicevarmin) && (slicevar < slicevarmax);
138 }
139 
140 
141 
143 {
144  // Get float values
145  double rowparmin = std::numeric_limits<double>::max();
146  double rowparmax = std::numeric_limits<double>::min();
147 
149 
150  for (auto &pars : variations)
151  {
152  double rowparhit = rowPar(pars, hit);
153  rowparmin = std::min(rowparmin, rowparhit);
154  rowparmax = std::max(rowparmax, rowparhit);
155  }
156 
157  // only consider parameter bins in range
158  unsigned lowbin = std::max(rowParBinIdx(rowparmin), unsigned(0));
159  unsigned highbin = std::min(rowParBinIdx(rowparmax) + 1, m_parBins[rowParIdx()] );
160 
161  return {lowbin, highbin};
162 }
163 
164 // Default implementations
165 double FPGATrackSimGenScanBinningBase::sliceVar([[maybe_unused]] FPGATrackSimHit const *hit) const { return 0.0; };
166 double FPGATrackSimGenScanBinningBase::sliceVarExpected([[maybe_unused]] const ParSet &pars, [[maybe_unused]] FPGATrackSimHit const *hit) const {return 0.0; };
167 double FPGATrackSimGenScanBinningBase::rowPar([[maybe_unused]] const ParSet &pars, [[maybe_unused]] FPGATrackSimHit const *hit) const {return 0.0; };
168 
169 
170 //--------------------------------------------------------------------------------------------------
171 //
172 // Geometry Helpers
173 //
174 //--------------------------------------------------------------------------------------------------
175 
177 {
178  return 2.0 * atan(exp(-1.0 * eta));
179 }
180 
182 {
183  return -log(tan(theta / 2.0));
184 }
185 
187 {
188  double theta = ThetaFromEta(pars.eta);
189  double zhit = pars.z0 + r / tan(theta);
190  if (std::abs(pars.qOverPt) > 0)
191  {
192  zhit = pars.z0 + 1.0 / tan(theta) * asin(r * CurvatureConstant * pars.qOverPt) / (CurvatureConstant * pars.qOverPt);
193  }
194  return zhit;
195 }
196 
198 {
199  double phi_hit = xAOD::P4Helpers::deltaPhi(pars.phi,asin(r * CurvatureConstant * pars.qOverPt - pars.d0 / r));
200 
201  return phi_hit;
202 }
203 
205 {
206  double r = hit->getR(); // mm
207  double phi_hit = hit->getGPhi(); // radians
208  double phi_trk = xAOD::P4Helpers::deltaPhi(phi_hit,asin(r * CurvatureConstant * pars.qOverPt - pars.d0 / r));
209  return phi_trk;
210 }
211 
212 //
213 //
214 // Tool for doing Key Layer Math
215 //
216 //
217 
218 std::pair<double, double> FPGATrackSimGenScanKeyLyrHelper::getXY(double r, double phi) const
219 {
220  return std::pair<double, double>(r * cos(phi), r * sin(phi));
221 }
222 
223 std::pair<double, double> FPGATrackSimGenScanKeyLyrHelper::getRotationAngles(const std::pair<double, double>& xy1, const std::pair<double, double>& xy2) const
224 {
225  double dr12x = xy2.first - xy1.first;
226  double dr12y = xy2.second - xy1.second;
227  double dr12mag = std::hypot(dr12x, dr12y);
228  double cos_rot = dr12y / dr12mag;
229  double sin_rot = -dr12x / dr12mag;
230  return std::pair<double, double>(cos_rot, sin_rot);
231 }
232 
233 std::pair<double, double> FPGATrackSimGenScanKeyLyrHelper::rotateXY(const std::pair<double, double>& xy, const std::pair<double, double>& ang) const
234 {
235  return std::pair<double, double>(xy.first * ang.first + xy.second * ang.second,
236  -xy.first * ang.second + xy.second * ang.first);
237 }
238 
240 {
242 
243  auto xy1 = getXY(m_R1, keypars.phi1);
244  auto xy2 = getXY(m_R2, keypars.phi2);
245 
246  result.rotang = getRotationAngles(xy1, xy2);
247  result.xy1p = rotateXY(xy1, result.rotang);
248  result.xy2p = rotateXY(xy2, result.rotang);
249  result.y = result.xy2p.second - result.xy1p.second;
250 
251  return result;
252 }
253 
254 std::pair<double, double> FPGATrackSimGenScanKeyLyrHelper::getRotatedHit(const std::pair<double, double>& rotang, const FPGATrackSimHit *hit) const
255 {
256  auto xyh = getXY(hit->getR(), hit->getGPhi());
257  return rotateXY(xyh, rotang);
258 }
259 
261 {
262  KeyLyrPars retv;
267 
269  if (Rinv != 0)
270  {
271  double R = 1 / Rinv;
272  auto xy1 = getXY(m_R1, retv.phi1);
273  auto xy2 = getXY(m_R2, retv.phi2);
274  double ysqr = (xy2.first - xy1.first) * (xy2.first - xy1.first) + (xy2.second - xy1.second) * (xy2.second - xy1.second);
275  double sign = (R > 0) - (R < 0);
276  retv.xm = -1 * sign * (std::abs(R) - sqrt(R * R - ysqr / 4.0));
277  }
278  else
279  {
280  retv.xm = 0;
281  }
282 
283  return retv;
284 }
285 
287 {
288 
290  pars[FPGATrackSimTrackPars::IZ0] = (keypars.z1 * m_R2 - keypars.z2 * m_R1) / (m_R2 - m_R1);
292 
293  // This is the exact math which is a bit messy
294  // if you want the math contact lipeles@sas.upenn.edu
295 
296  double xm = keypars.xm;
297 
298  auto rotated_coords = getRotatedConfig(keypars);
299  auto xy1p = rotated_coords.xy1p;
300  auto rotang = rotated_coords.rotang;
301  auto y = rotated_coords.y;
302 
303  // reverse rotation
304  auto revang = rotang;
305  revang.second = -rotang.second;
306 
307  if (xm != 0)
308  {
309  double Rinv = 2 * xm / (xm * xm + (y / 2) * (y / 2));
310  double d = (y * y / 4.0 - xm * xm) / (2.0 * xm);
311  double sign = (xm > 0) - (xm < 0);
312 
314 
315  std::pair<double, double> xycp(-d + xy1p.first, y / 2.0 + xy1p.second);
316 
317  pars[FPGATrackSimTrackPars::ID0] = -1 * sign * (std::abs(1 / Rinv) - std::hypot(xycp.first, xycp.second));
318 
319  auto xyc = rotateXY(xycp, revang);
320 
321  pars[FPGATrackSimTrackPars::IPHI] = atan2(sign * -xyc.first, sign * xyc.second);
322  }
323  else
324  {
326  pars[FPGATrackSimTrackPars::ID0] = -1 * xy1p.first;
327  pars[FPGATrackSimTrackPars::IPHI] = atan2(rotang.first, -rotang.second);
328  }
329 
330  return pars;
331 }
332 
333 double FPGATrackSimGenScanKeyLyrHelper::zExpected(const KeyLyrPars& keypars, double r) const
334 {
335  return (keypars.z2 - keypars.z1) / (m_R2 - m_R1) * (r - m_R1) + keypars.z1;
336 }
337 
338 // takes hit position and calculated what xm should be for that hit
340 {
341  auto rotated_coords = getRotatedConfig(keypars);
342  auto xy1p = rotated_coords.xy1p;
343  auto rotang = rotated_coords.rotang;
344  auto y = rotated_coords.y;
345 
346  auto xyhp = getRotatedHit(rotang, hit);
347  double xh = xyhp.first - xy1p.first;
348  double yh = xyhp.second - xy1p.second;
349 
350  // use taylor expanded xm calculation
351  double sign = ((yh > 0) && (yh < y)) ? 1 : -1;
352  if ((std::abs(yh) < std::abs(xh)) || (std::abs(y - yh) < std::abs(xh)))
353  {
354  return ((xh > 0) ? 1 : -1) * 100000;
355  }
356 
357  double xm_taylor = sign * y * y / (y * y - 4 * xh * xh - 4 * (yh - y / 2.0) * (yh - y / 2.0)) * xh;
358 
359  return xm_taylor;
360 }
361 
362 // Find shift from nominal track to hit in the "x" direction
364 {
365  auto rotated_coords = getRotatedConfig(keypars);
366 
367  auto rotang = rotated_coords.rotang;
368 
369  auto xyhp = getRotatedHit(rotang, hit);
370 
371  double xh = xyhp.first-rotated_coords.xy1p.first;
372 
373  return xh - xExpected(keypars,hit);
374 }
375 
376 // Find shift from nominal track to hit in the "x" direction
378 {
379  auto rotated_coords = getRotatedConfig(keypars);
380 
381  auto rotang = rotated_coords.rotang;
382  auto y = rotated_coords.y;
383 
384  auto xyhp = getRotatedHit(rotang, hit);
385 
386  double yh = xyhp.second-rotated_coords.xy1p.second;
387 
388  return keypars.xm * (keypars.xm * keypars.xm + yh * (y - yh)) / (keypars.xm * keypars.xm + (y / 2) * (y / 2));
389 }
390 
391 double FPGATrackSimGenScanPhiSlicedKeyLyrBinning::phiResidual(const ParSet &parset, FPGATrackSimHit const *hit, [[maybe_unused]] bool debug) const
392 {
393  return m_keylyrtool.deltaX(parSetToKeyPars(parset), hit);
394 }
395 
396 
FPGATrackSimGenScanKeyLyrHelper::rotatedConfig
Definition: FPGATrackSimGenScanBinning.h:382
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
FPGATrackSimGenScanGeomHelpers::phiFromPars
static double phiFromPars(double r, const FPGATrackSimTrackPars &pars)
Definition: FPGATrackSimGenScanBinning.cxx:197
FPGATrackSimTrackPars::IHIP
@ IHIP
Definition: FPGATrackSimTrackPars.h:49
beamspotman.r
def r
Definition: beamspotman.py:676
FPGATrackSimTrackPars::ID0
@ ID0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanBinningBase::IdxSet
Definition: FPGATrackSimGenScanBinning.h:100
get_generator_info.result
result
Definition: get_generator_info.py:21
FPGATrackSimGenScanKeyLyrHelper::rotateXY
std::pair< double, double > rotateXY(const std::pair< double, double > &xy, const std::pair< double, double > &ang) const
Definition: FPGATrackSimGenScanBinning.cxx:233
FPGATrackSimGenScanKeyLyrHelper::xmForHit
double xmForHit(const KeyLyrPars &keypars, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:339
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
FPGATrackSimGenScanBinningBase::setIdxSubVec
StatusCode setIdxSubVec(IdxSet &idx, const std::vector< unsigned > &subvecelems, const std::vector< unsigned > &subvecidx) const
Definition: FPGATrackSimGenScanBinning.cxx:87
FPGATrackSimGenScanGeomHelpers::CurvatureConstant
static constexpr double CurvatureConstant
Definition: FPGATrackSimGenScanBinning.h:254
FPGATrackSimGenScanBinningBase::rowPar
virtual double rowPar([[maybe_unused]] const ParSet &pars, [[maybe_unused]] FPGATrackSimHit const *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:167
yodamerge_tmp.variations
variations
Definition: yodamerge_tmp.py:257
FPGATrackSimGenScanKeyLyrHelper::getXY
std::pair< double, double > getXY(double r, double phi) const
Definition: FPGATrackSimGenScanBinning.cxx:218
FPGATrackSimTrackPars
Definition: FPGATrackSimTrackPars.h:22
FPGATrackSimGenScanBinningBase::inRange
bool inRange(unsigned par, double val) const
Definition: FPGATrackSimGenScanBinning.h:208
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
hist_file_dump.d
d
Definition: hist_file_dump.py:137
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
FPGATrackSimGenScanBinningBase::m_parBins
IdxSet m_parBins
Definition: FPGATrackSimGenScanBinning.h:236
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
FPGATrackSimTrackPars::IZ0
@ IZ0
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanGeomHelpers::ThetaFromEta
static double ThetaFromEta(double eta)
Definition: FPGATrackSimGenScanBinning.cxx:176
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::z1
double z1
Definition: FPGATrackSimGenScanBinning.h:363
FPGATrackSimGenScanKeyLyrHelper::m_R2
double m_R2
Definition: FPGATrackSimGenScanBinning.h:417
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
FPGATrackSimGenScanBinningBase::ParSet
Definition: FPGATrackSimGenScanBinning.h:90
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::xm
double xm
Definition: FPGATrackSimGenScanBinning.h:367
FPGATrackSimGenScanBinningBase::hitInSlice
virtual bool hitInSlice(const IdxSet &idx, FPGATrackSimHit const *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:122
FPGATrackSimGenScanKeyLyrHelper::keyParsToTrackPars
FPGATrackSimTrackPars keyParsToTrackPars(const KeyLyrPars &keypars) const
Definition: FPGATrackSimGenScanBinning.cxx:286
FPGATrackSimGenScanBinningBase::center
ParSet center() const
Definition: FPGATrackSimGenScanBinning.cxx:47
xAOD::P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: xAODP4Helpers.h:69
FPGATrackSimGenScanBinningBase::binIdx
unsigned binIdx(unsigned par, double val) const
Definition: FPGATrackSimGenScanBinning.h:204
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
FPGATrackSimGenScanBinningBase::idxsetToRowParBinRange
virtual std::pair< unsigned, unsigned > idxsetToRowParBinRange(const IdxSet &idx, FPGATrackSimHit const *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:142
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
xAOD::unsigned
unsigned
Definition: RingSetConf_v1.cxx:662
FPGATrackSimGenScanBinningBase::trackParsToParSet
virtual const ParSet trackParsToParSet(const FPGATrackSimTrackPars &pars) const =0
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
FPGATrackSimGenScanBinningBase::sliceVar
virtual double sliceVar([[maybe_unused]] FPGATrackSimHit const *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:165
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::phi2
double phi2
Definition: FPGATrackSimGenScanBinning.h:366
FPGATrackSimGenScanBinningBase::m_invalidBin
const IdxSet m_invalidBin
Definition: FPGATrackSimGenScanBinning.h:239
FPGATrackSimHit::getGPhi
float getGPhi() const
Definition: FPGATrackSimHit.h:141
FPGATrackSimGenScanBinning.h
Binning Classes for GenScanTool.
FPGATrackSimGenScanBinningBase::rowParBinIdx
unsigned rowParBinIdx(double val) const
Definition: FPGATrackSimGenScanBinning.h:205
FPGATrackSimGenScanBinningBase::NPars
static constexpr unsigned NPars
Definition: FPGATrackSimGenScanBinning.h:232
FPGATrackSimGenScanBinningBase::scanPars
virtual std::vector< unsigned > scanPars() const =0
FPGATrackSimGenScanBinningBase::slicePars
virtual std::vector< unsigned > slicePars() const =0
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_keylyrtool
FPGATrackSimGenScanKeyLyrHelper m_keylyrtool
Definition: FPGATrackSimGenScanBinning.h:584
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::phi1
double phi1
Definition: FPGATrackSimGenScanBinning.h:365
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::phiResidual
virtual double phiResidual(const ParSet &parset, FPGATrackSimHit const *hit, [[maybe_unused]] bool debug) const override
Definition: FPGATrackSimGenScanBinning.cxx:391
FPGATrackSimGenScanKeyLyrHelper::getRotatedHit
std::pair< double, double > getRotatedHit(const std::pair< double, double > &rotang, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:254
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::z2
double z2
Definition: FPGATrackSimGenScanBinning.h:364
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:107
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars
Definition: FPGATrackSimGenScanBinning.h:359
FPGATrackSimGenScanKeyLyrHelper::getRotationAngles
std::pair< double, double > getRotationAngles(const std::pair< double, double > &xy1, const std::pair< double, double > &xy2) const
Definition: FPGATrackSimGenScanBinning.cxx:223
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
FPGATrackSimGenScanGeomHelpers::parsToTrkPhi
static double parsToTrkPhi(const FPGATrackSimTrackPars &pars, FPGATrackSimHit const *hit)
Definition: FPGATrackSimGenScanBinning.cxx:204
FPGATrackSimGenScanKeyLyrHelper::getRotatedConfig
rotatedConfig getRotatedConfig(const KeyLyrPars &keypars) const
Definition: FPGATrackSimGenScanBinning.cxx:239
FPGATrackSimTrackPars::IPHI
@ IPHI
Definition: FPGATrackSimTrackPars.h:49
FPGATrackSimGenScanKeyLyrHelper::xExpected
double xExpected(const KeyLyrPars &keypars, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:377
FPGATrackSimGenScanBinningBase::parsToBin
const IdxSet parsToBin(FPGATrackSimTrackPars &pars) const
Definition: FPGATrackSimGenScanBinning.cxx:37
FPGATrackSimGenScanBinningBase::m_parMin
ParSet m_parMin
Definition: FPGATrackSimGenScanBinning.h:233
FPGATrackSimHit::getR
float getR() const
Definition: FPGATrackSimHit.h:140
y
#define y
FPGATrackSimGenScanKeyLyrHelper::deltaX
double deltaX(const KeyLyrPars &keypars, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:363
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimGenScanBinningBase::binLowEdge
double binLowEdge(unsigned par, unsigned bin) const
Definition: FPGATrackSimGenScanBinning.h:195
FPGATrackSimGenScanKeyLyrHelper::zExpected
double zExpected(const KeyLyrPars &keypars, double r) const
Definition: FPGATrackSimGenScanBinning.cxx:333
FPGATrackSimGenScanBinningBase::rowParIdx
virtual unsigned rowParIdx() const =0
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
FPGATrackSimGenScanKeyLyrHelper::m_R1
double m_R1
Definition: FPGATrackSimGenScanBinning.h:416
FPGATrackSimGenScanBinningBase::sliceVarExpected
virtual double sliceVarExpected([[maybe_unused]] const ParSet &pars, [[maybe_unused]] FPGATrackSimHit const *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:166
FPGATrackSimGenScanKeyLyrHelper::trackParsToKeyPars
KeyLyrPars trackParsToKeyPars(const FPGATrackSimTrackPars &pars) const
Definition: FPGATrackSimGenScanBinning.cxx:260
FPGATrackSimGenScanBinningBase::makeVariationSet
std::vector< ParSet > makeVariationSet(const std::vector< unsigned > &scanpars, const IdxSet &idx) const
Definition: FPGATrackSimGenScanBinning.cxx:104
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::parSetToKeyPars
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars parSetToKeyPars(const ParSet &parset) const
Definition: FPGATrackSimGenScanBinning.h:533
FPGATrackSimGenScanBinningBase::binCenter
double binCenter(unsigned par, unsigned bin) const
Definition: FPGATrackSimGenScanBinning.h:194
FPGATrackSimGenScanGeomHelpers::EtaFromTheta
static double EtaFromTheta(double theta)
Definition: FPGATrackSimGenScanBinning.cxx:181
FPGATrackSimGenScanGeomHelpers::zFromPars
static double zFromPars(double r, const FPGATrackSimTrackPars &pars)
Definition: FPGATrackSimGenScanBinning.cxx:186
FPGATrackSimGenScanBinningBase::subVec
std::vector< unsigned > subVec(const std::vector< unsigned > &elems, const IdxSet &invec) const
Definition: FPGATrackSimGenScanBinning.cxx:77
FPGATrackSimTrackPars::IETA
@ IETA
Definition: FPGATrackSimTrackPars.h:49