Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Public Attributes | Private Attributes | List of all members
FPGATrackSimGenScanPhiSlicedKeyLyrBinning Class Reference

#include <FPGATrackSimGenScanBinning.h>

Inheritance diagram for FPGATrackSimGenScanPhiSlicedKeyLyrBinning:
Collaboration diagram for FPGATrackSimGenScanPhiSlicedKeyLyrBinning:

Public Member Functions

 FPGATrackSimGenScanPhiSlicedKeyLyrBinning (const std::string &algname, const std::string &name, const IInterface *ifc)
 
virtual StatusCode initialize () override
 
virtual const std::string & parNames (unsigned i) const override
 
virtual unsigned rowParIdx () const override
 
virtual std::vector< unsigned > slicePars () const override
 
virtual std::vector< unsigned > scanPars () const override
 
virtual double etaHistScale () const override
 
virtual double phiHistScale () const override
 
ParSet keyparsToParSet (const FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars &keypars) const
 
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars parSetToKeyPars (const ParSet &parset) const
 
virtual const ParSet trackParsToParSet (const FPGATrackSimTrackPars &pars) const override
 
virtual const FPGATrackSimTrackPars parSetToTrackPars (const ParSet &parset) const override
 
virtual double phiResidual (const ParSet &parset, FPGATrackSimHit const *hit, [[maybe_unused]] bool debug) const override
 
virtual double etaResidual (const ParSet &parset, FPGATrackSimHit const *hit, [[maybe_unused]] bool debug) const override
 
virtual bool hitInSlice (const IdxSet &idx, FPGATrackSimHit const *hit) const override
 
virtual std::pair< unsigned, unsigned > idxsetToRowParBinRange (const IdxSet &idx, [[maybe_unused]] FPGATrackSimHit const *hit) const override
 
virtual void writeScanConsts ([[maybe_unused]] FPGATrackSimGenScanArray< int > &valid) const override
 
virtual void writeSliceConsts ([[maybe_unused]] FPGATrackSimGenScanArray< int > &valid) const override
 

Public Attributes

Gaudi::Property< double > m_rin {this, "rin", {-1.0}, "Radius of inner layer for keylayer definition"}
 
Gaudi::Property< double > m_rout {this, "rout", {-1.0}, "Radius of outer layer for keylayer definition"}
 
Gaudi::Property< bool > m_approxMath {this, "approxMath", {false}, "Use approximate math to emulate possible firmware"}
 

Private Attributes

FPGATrackSimGenScanKeyLyrHelper m_keylyrtool
 
const std::vector< std::string > m_parNames
 

Detailed Description

Definition at line 538 of file FPGATrackSimGenScanBinning.h.

Constructor & Destructor Documentation

◆ FPGATrackSimGenScanPhiSlicedKeyLyrBinning()

FPGATrackSimGenScanPhiSlicedKeyLyrBinning::FPGATrackSimGenScanPhiSlicedKeyLyrBinning ( const std::string &  algname,
const std::string &  name,
const IInterface *  ifc 
)
inline

Definition at line 541 of file FPGATrackSimGenScanBinning.h.

541  :
542  base_class(algname, name, ifc), m_parNames({"zR1", "zR2", "phiR1", "phiR2", "xm"})
543  {
544  declareInterface<FPGATrackSimGenScanBinningBase>(this);
545  }

Member Function Documentation

◆ etaHistScale()

virtual double FPGATrackSimGenScanPhiSlicedKeyLyrBinning::etaHistScale ( ) const
inlineoverridevirtual

Definition at line 564 of file FPGATrackSimGenScanBinning.h.

564 {return 60.0;}

◆ etaResidual()

virtual double FPGATrackSimGenScanPhiSlicedKeyLyrBinning::etaResidual ( const ParSet &  parset,
FPGATrackSimHit const hit,
[[maybe_unused] ] bool  debug 
) const
inlineoverridevirtual

Definition at line 586 of file FPGATrackSimGenScanBinning.h.

587  {
588  return hit->getZ()- m_keylyrtool.zExpected(parSetToKeyPars(parset),hit->getR());
589  }

◆ hitInSlice()

virtual bool FPGATrackSimGenScanPhiSlicedKeyLyrBinning::hitInSlice ( const IdxSet &  idx,
FPGATrackSimHit const hit 
) const
inlineoverridevirtual

Definition at line 591 of file FPGATrackSimGenScanBinning.h.

591  {
592  double r1 = m_keylyrtool.R1();
593  double r2 = m_keylyrtool.R2();
594 
595  if (m_approxMath) {
596  ATH_MSG_WARNING("Approx Math is underdevlopment do not use it!");
597 
598  double r = hit->getR();
599 
600  double d0_range = 2.1;
601 
602  double slopelow = - 8.0 * binLowEdge(4, idx[4]) * (r / ((r2 - r1) * (r2 - r1))) + d0_range/r;
603  double slopehigh = - 8.0 * binHighEdge(4, idx[4]) * (r / ((r2 - r1) * (r2 - r1))) - d0_range/r;
604 
605  // xmeffective_in give possible curvature to inner radius
606  double xmeffective_in = m_parStep[4] * ((r2 - r) / (r2 - r1))*((r2 - r) / (r2 - r1));
607  double xshift_low_in = slopelow * (r1-r) - 4.0 * xmeffective_in;
608  double xshift_high_in = slopehigh * (r1-r) + 4.0 * xmeffective_in;
609 
610  double phi_hit = hit->getGPhi();
611 
612 
613  // for now we'll test inner (par=2) then out (par = 3)
614  if (((r1*phi_hit + xshift_high_in) > r1*binLowEdge(2, idx[2]) &&
615  (r1*phi_hit + xshift_low_in) < r1*binHighEdge(2, idx[2]))) {
616  return true;
617 
618  // xmeffective_out give possible curvature to inner radius
619  double xmeffective_out = m_parStep[4] * ((r2 - r) / (r2 - r1))*((r2 - r) / (r2 - r1));
620  double xshift_low_out = slopehigh * (r2-r) - 4.0 * xmeffective_out;
621  double xshift_high_out = slopelow * (r2-r) + 4.0 * xmeffective_out;
622 
623  if ((r2*phi_hit + xshift_high_out) > r2*binLowEdge(3, idx[3]) &&
624  (r2*phi_hit + xshift_low_out) < r2*binHighEdge(3, idx[3])) {
625  return true;
626  } else {
627  return false;
628  }
629 
630  } else {
631  return false;
632  }
633  }
634 
635  auto keypars = parSetToKeyPars(binCenter(idx));
636  auto tmppars = keypars;
637  tmppars.xm = m_parStep[4] / 2.0;
638  double xrange = m_keylyrtool.xExpected(tmppars, hit) + (r1*m_parStep[2] + (r2*m_parStep[3] - r1*m_parStep[2]) / (r2 - r1) * (hit->getR() - r1))/2.0;
639  return (std::abs(phiShift(idx, hit)) < xrange);
640  }

◆ idxsetToRowParBinRange()

virtual std::pair<unsigned, unsigned> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::idxsetToRowParBinRange ( const IdxSet &  idx,
[[maybe_unused] ] FPGATrackSimHit const hit 
) const
inlineoverridevirtual

Definition at line 642 of file FPGATrackSimGenScanBinning.h.

643  {
644  double r1 = m_keylyrtool.R1();
645  double r2 = m_keylyrtool.R2();
646  double lowz_in = binLowEdge(0,idx[0]);
647  double highz_in = binHighEdge(0,idx[0]);
648  double lowz_out = binLowEdge(1,idx[1]);
649  double highz_out = binHighEdge(1,idx[1]);
650 
651 
652  // simple box cut
653  if (hit->getZ() < lowz_in + (lowz_out-lowz_in) * (hit->getR()-r1)/(r2-r1))
654  return std::pair<unsigned, unsigned>(0, 0); // empty range
655 
656  if (hit->getZ() > highz_in + (highz_out-highz_in) * (hit->getR()-r1)/(r2-r1))
657  return std::pair<unsigned, unsigned>(0, 0); // empty range
658 
659  return std::pair<unsigned, unsigned>(rowIdx(idx), rowIdx(idx) + 1); // range covers just 1 row bin
660  }

◆ initialize()

virtual StatusCode FPGATrackSimGenScanPhiSlicedKeyLyrBinning::initialize ( )
inlineoverridevirtual

Definition at line 547 of file FPGATrackSimGenScanBinning.h.

547  {
550  return StatusCode::SUCCESS;
551  }

◆ keyparsToParSet()

ParSet FPGATrackSimGenScanPhiSlicedKeyLyrBinning::keyparsToParSet ( const FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars keypars) const
inline

Definition at line 567 of file FPGATrackSimGenScanBinning.h.

567  {
568  return ParSet({keypars.z1,keypars.z2,keypars.phi1,keypars.phi2,keypars.xm});
569  }

◆ parNames()

virtual const std::string& FPGATrackSimGenScanPhiSlicedKeyLyrBinning::parNames ( unsigned  i) const
inlineoverridevirtual

Definition at line 558 of file FPGATrackSimGenScanBinning.h.

558 { return m_parNames[i]; }

◆ parSetToKeyPars()

FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars FPGATrackSimGenScanPhiSlicedKeyLyrBinning::parSetToKeyPars ( const ParSet &  parset) const
inline

Definition at line 571 of file FPGATrackSimGenScanBinning.h.

571  {
573  }

◆ parSetToTrackPars()

virtual const FPGATrackSimTrackPars FPGATrackSimGenScanPhiSlicedKeyLyrBinning::parSetToTrackPars ( const ParSet &  parset) const
inlineoverridevirtual

Definition at line 580 of file FPGATrackSimGenScanBinning.h.

580  {
582  }

◆ phiHistScale()

virtual double FPGATrackSimGenScanPhiSlicedKeyLyrBinning::phiHistScale ( ) const
inlineoverridevirtual

Definition at line 565 of file FPGATrackSimGenScanBinning.h.

565 {return 30.0;}

◆ phiResidual()

double FPGATrackSimGenScanPhiSlicedKeyLyrBinning::phiResidual ( const ParSet &  parset,
FPGATrackSimHit const hit,
[[maybe_unused] ] bool  debug 
) const
overridevirtual

Definition at line 415 of file FPGATrackSimGenScanBinning.cxx.

416 {
417  return m_keylyrtool.deltaX(parSetToKeyPars(parset), hit);
418 }

◆ rowParIdx()

virtual unsigned FPGATrackSimGenScanPhiSlicedKeyLyrBinning::rowParIdx ( ) const
inlineoverridevirtual

Definition at line 559 of file FPGATrackSimGenScanBinning.h.

559 { return 4;}

◆ scanPars()

virtual std::vector<unsigned> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::scanPars ( ) const
inlineoverridevirtual

Definition at line 561 of file FPGATrackSimGenScanBinning.h.

561 { return std::vector<unsigned>({0,1}); }

◆ slicePars()

virtual std::vector<unsigned> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::slicePars ( ) const
inlineoverridevirtual

Definition at line 560 of file FPGATrackSimGenScanBinning.h.

560 { return std::vector<unsigned>({2,3,4}); }

◆ trackParsToParSet()

virtual const ParSet FPGATrackSimGenScanPhiSlicedKeyLyrBinning::trackParsToParSet ( const FPGATrackSimTrackPars pars) const
inlineoverridevirtual

Definition at line 576 of file FPGATrackSimGenScanBinning.h.

576  {
578  }

◆ writeScanConsts()

virtual void FPGATrackSimGenScanPhiSlicedKeyLyrBinning::writeScanConsts ( [[maybe_unused] ] FPGATrackSimGenScanArray< int > &  valid) const
inlineoverridevirtual

Definition at line 662 of file FPGATrackSimGenScanBinning.h.

662  {
663 
664  StreamManager streams("z_binning");
665  int nbins = 0;
667  if (!bin.data())
668  continue;
669 
670  streams.writeVar("z_bin", bin.idx());
671 
673  setIdxSubVec(idx, scanPars(), bin.idx());
674 
675  double r_in = m_keylyrtool.R1();
676  double r_out = m_keylyrtool.R2();
677  double z_in = binCenter(0, idx[0]);
678  double z_out = binCenter(1, idx[1]);
679  double dz_dr = (z_out - z_in)/(r_out-r_in);
680  double w_in = (binHighEdge(0, idx[0]) - binLowEdge(0, idx[0])) / 2.0;
681  double w_out = (binHighEdge(1, idx[1]) - binLowEdge(1, idx[1])) / 2.0;
682  double dw_dr = (w_out - w_in)/(r_out-r_in);
683 
684 
685  streams.writeVar("r_in", m_keylyrtool.R1());
686  streams.writeVar("r_out", m_keylyrtool.R2());
687 
688  streams.writeVar("z_in", z_in);
689  streams.writeVar("dz_dr", dz_dr);
690 
691  streams.writeVar("w_in", w_in);
692  streams.writeVar("dw_dr", dw_dr);
693 
694  nbins++;
695  }
696 
697  streams.writeVar("nbins", nbins);
698 
699 
700  }

◆ writeSliceConsts()

virtual void FPGATrackSimGenScanPhiSlicedKeyLyrBinning::writeSliceConsts ( [[maybe_unused] ] FPGATrackSimGenScanArray< int > &  valid) const
inlineoverridevirtual

Definition at line 702 of file FPGATrackSimGenScanBinning.h.

703  {
704 
705  StreamManager streams("phi_binning");
706  int nbins = 0;
708  if (!bin.data())
709  continue;
710 
711  streams.writeVar("phi_bin", bin.idx());
712 
714  setIdxSubVec(idx, slicePars(), bin.idx());
715 
716  auto keypars = parSetToKeyPars(binCenter(idx));
717 
718  auto rotated_coords = m_keylyrtool.getRotatedConfig(keypars);
719 
720  streams.writeVar("y", rotated_coords.y);
721  streams.writeVar("x1p", rotated_coords.xy1p.first);
722  streams.writeVar("y1p", rotated_coords.xy1p.second);
723  streams.writeVar("cosb", rotated_coords.rotang.first);
724  streams.writeVar("sinb", rotated_coords.rotang.second);
725 
726  double x_m = binCenter(4,idx[4]);
727  streams.writeVar("x_m", x_m);
728  streams.writeVar("x_factor", 4.0 * x_m / (rotated_coords.y * rotated_coords.y));
729 
730  double r_in = m_keylyrtool.R1();
731  double r_out = m_keylyrtool.R2();
732  double w_in =
733  r_in * ((binHighEdge(2, idx[2]) - binLowEdge(2, idx[2])) / 2.0);
734  double w_out = r_out*((binHighEdge(3,idx[3])-binLowEdge(3,idx[3]))/2.0);
735  double w_x = (binHighEdge(4,idx[4])-binLowEdge(4,idx[4]))/2.0;
736 
737  double dw_dr = (w_out - w_in)/(r_out-r_in);
738 
739  streams.writeVar("w_x", 4.0 * w_x / (rotated_coords.y * rotated_coords.y));
740  streams.writeVar("w_in", w_in);
741  streams.writeVar("dw_dr", dw_dr);
742 
743  nbins++;
744  }
745 
746  streams.writeVar("nbins", nbins);
747  }

Member Data Documentation

◆ m_approxMath

Gaudi::Property<bool> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_approxMath {this, "approxMath", {false}, "Use approximate math to emulate possible firmware"}

Definition at line 555 of file FPGATrackSimGenScanBinning.h.

◆ m_keylyrtool

FPGATrackSimGenScanKeyLyrHelper FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_keylyrtool
private

Definition at line 751 of file FPGATrackSimGenScanBinning.h.

◆ m_parNames

const std::vector<std::string> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_parNames
private

Definition at line 752 of file FPGATrackSimGenScanBinning.h.

◆ m_rin

Gaudi::Property<double> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_rin {this, "rin", {-1.0}, "Radius of inner layer for keylayer definition"}

Definition at line 553 of file FPGATrackSimGenScanBinning.h.

◆ m_rout

Gaudi::Property<double> FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_rout {this, "rout", {-1.0}, "Radius of outer layer for keylayer definition"}

Definition at line 554 of file FPGATrackSimGenScanBinning.h.


The documentation for this class was generated from the following files:
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
xrange
void xrange(TH1 *h, bool symmetric)
Definition: computils.cxx:516
beamspotman.r
def r
Definition: beamspotman.py:676
FPGATrackSimGenScanArray
Definition: FPGATrackSimGenScanArray.h:41
FPGATrackSimGenScanKeyLyrHelper::R1
double R1() const
Definition: FPGATrackSimGenScanBinning.h:444
FPGATrackSimGenScanKeyLyrHelper::setR1
void setR1(const double r1)
Definition: FPGATrackSimGenScanBinning.h:446
FPGATrackSimGenScanBinningBase::IdxSet
Definition: FPGATrackSimGenScanBinning.h:111
getMenu.algname
algname
Definition: getMenu.py:54
FPGATrackSimGenScanKeyLyrHelper::R2
double R2() const
Definition: FPGATrackSimGenScanBinning.h:445
python.outputTest_v2.streams
streams
Definition: outputTest_v2.py:55
FPGATrackSimGenScanKeyLyrHelper::setR2
void setR2(const double r2)
Definition: FPGATrackSimGenScanBinning.h:447
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::z1
double z1
Definition: FPGATrackSimGenScanBinning.h:397
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::xm
double xm
Definition: FPGATrackSimGenScanBinning.h:401
FPGATrackSimGenScanKeyLyrHelper::keyParsToTrackPars
FPGATrackSimTrackPars keyParsToTrackPars(const KeyLyrPars &keypars) const
Definition: FPGATrackSimGenScanBinning.cxx:310
bin
Definition: BinsDiffFromStripMedian.h:43
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_rin
Gaudi::Property< double > m_rin
Definition: FPGATrackSimGenScanBinning.h:553
MCP::ScaleSmearParam::r2
@ r2
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::phi2
double phi2
Definition: FPGATrackSimGenScanBinning.h:400
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::scanPars
virtual std::vector< unsigned > scanPars() const override
Definition: FPGATrackSimGenScanBinning.h:561
calibdata.valid
list valid
Definition: calibdata.py:45
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::keyparsToParSet
ParSet keyparsToParSet(const FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars &keypars) const
Definition: FPGATrackSimGenScanBinning.h:567
lumiFormat.i
int i
Definition: lumiFormat.py:85
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_keylyrtool
FPGATrackSimGenScanKeyLyrHelper m_keylyrtool
Definition: FPGATrackSimGenScanBinning.h:751
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::phi1
double phi1
Definition: FPGATrackSimGenScanBinning.h:399
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars::z2
double z2
Definition: FPGATrackSimGenScanBinning.h:398
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_parNames
const std::vector< std::string > m_parNames
Definition: FPGATrackSimGenScanBinning.h:752
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars
Definition: FPGATrackSimGenScanBinning.h:393
FPGATrackSimBinUtil::setIdxSubVec
void setIdxSubVec(IdxSet &idx, const std::vector< unsigned > &subvecelems, const std::vector< unsigned > &subvecidx)
Definition: FPGATrackSimBinUtil.cxx:69
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_approxMath
Gaudi::Property< bool > m_approxMath
Definition: FPGATrackSimGenScanBinning.h:555
FPGATrackSimGenScanKeyLyrHelper::getRotatedConfig
rotatedConfig getRotatedConfig(const KeyLyrPars &keypars) const
Definition: FPGATrackSimGenScanBinning.cxx:263
SCT_CalibAlgs::nbins
@ nbins
Definition: SCT_CalibNumbers.h:10
FPGATrackSimGenScanKeyLyrHelper::xExpected
double xExpected(const KeyLyrPars &keypars, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:401
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::m_rout
Gaudi::Property< double > m_rout
Definition: FPGATrackSimGenScanBinning.h:554
FPGATrackSimGenScanKeyLyrHelper::deltaX
double deltaX(const KeyLyrPars &keypars, const FPGATrackSimHit *hit) const
Definition: FPGATrackSimGenScanBinning.cxx:387
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
FPGATrackSimGenScanKeyLyrHelper::zExpected
double zExpected(const KeyLyrPars &keypars, double r) const
Definition: FPGATrackSimGenScanBinning.cxx:357
MCP::ScaleSmearParam::r1
@ r1
FPGATrackSimGenScanKeyLyrHelper::trackParsToKeyPars
KeyLyrPars trackParsToKeyPars(const FPGATrackSimTrackPars &pars) const
Definition: FPGATrackSimGenScanBinning.cxx:284
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::slicePars
virtual std::vector< unsigned > slicePars() const override
Definition: FPGATrackSimGenScanBinning.h:560
FPGATrackSimGenScanPhiSlicedKeyLyrBinning::parSetToKeyPars
FPGATrackSimGenScanKeyLyrHelper::KeyLyrPars parSetToKeyPars(const ParSet &parset) const
Definition: FPGATrackSimGenScanBinning.h:571