 |
ATLAS Offline Software
|
#include <FPGAClusterConverter.h>
|
| FPGAClusterConverter (const std::string &type, const std::string &name, const IInterface *) |
|
virtual | ~FPGAClusterConverter ()=default |
|
virtual StatusCode | initialize () override final |
|
virtual StatusCode | convertHits (const std::vector< FPGATrackSimHit > &, InDet::PixelClusterCollection &, InDet::SCT_ClusterCollection &) const override final |
|
virtual StatusCode | convertHits (const std::vector< const FPGATrackSimHit * > &, InDet::PixelClusterCollection &, InDet::SCT_ClusterCollection &) const override final |
|
virtual StatusCode | convertHits (const std::vector< FPGATrackSimHit > &hits, xAOD::PixelClusterContainer &pixelCont, xAOD::StripClusterContainer &SCTCont) const override final |
|
virtual StatusCode | convertClusters (const std::vector< FPGATrackSimCluster > &, InDet::PixelClusterCollection &, InDet::SCT_ClusterCollection &) const override final |
|
virtual StatusCode | convertClusters (const std::vector< FPGATrackSimCluster > &cl, xAOD::PixelClusterContainer &pixelCont, xAOD::StripClusterContainer &SCTCont) const override final |
|
virtual StatusCode | convertSpacePoints (const std::vector< FPGATrackSimCluster > &fpgaSPs, xAOD::SpacePointContainer &SPStripCont, xAOD::SpacePointContainer &SPPixelCont, xAOD::StripClusterContainer &stripClusterCont, xAOD::PixelClusterContainer &pixelClusterCont) const override final |
|
virtual StatusCode | createPixelCluster (const FPGATrackSimHit &h, const std::vector< Identifier > &rdoList, std::unique_ptr< InDet::PixelCluster > &) const override final |
|
virtual StatusCode | createPixelCluster (const FPGATrackSimHit &h, const std::vector< Identifier > &rdoList, xAOD::PixelCluster &) const override final |
|
virtual StatusCode | createSCTCluster (const FPGATrackSimHit &h, const std::vector< Identifier > &rdoList, std::unique_ptr< InDet::SCT_Cluster > &) const override final |
|
virtual StatusCode | createSCTCluster (const FPGATrackSimHit &h, const std::vector< Identifier > &rdoList, xAOD::StripCluster &) const override final |
|
virtual StatusCode | createPixelCluster (const FPGATrackSimCluster &, std::unique_ptr< InDet::PixelCluster > &) const override final |
|
virtual StatusCode | createPixelCluster (const FPGATrackSimCluster &, xAOD::PixelCluster &) const override final |
|
virtual StatusCode | createSCTCluster (const FPGATrackSimCluster &, std::unique_ptr< InDet::SCT_Cluster > &) const override final |
|
virtual StatusCode | createSCTCluster (const FPGATrackSimCluster &, xAOD::StripCluster &) const override final |
|
virtual StatusCode | createSP (const FPGATrackSimCluster &cl, xAOD::SpacePoint &sp, xAOD::StripClusterContainer &clustersCont) const override final |
|
virtual StatusCode | createPixelSPs (xAOD::SpacePointContainer &pixelSPs, xAOD::PixelClusterContainer &clustersCont) const override final |
|
virtual StatusCode | getRdoList (std::vector< Identifier > &rdoList, const FPGATrackSimCluster &cluster) const override final |
|
virtual StatusCode | getRdoList (std::vector< Identifier > &rdoList, const FPGATrackSimHit &hit) const override final |
|
virtual StatusCode | getStripsInfo (const xAOD::StripCluster &cl, float &halfStripLength, Amg::Vector3D &stripDirection, Amg::Vector3D &stripCenter) const override final |
|
|
const PixelID * | m_pixelId {nullptr} |
|
const SCT_ID * | m_SCTId {nullptr} |
|
const InDetDD::PixelDetectorManager * | m_pixelManager {nullptr} |
|
const InDetDD::SCT_DetectorManager * | m_SCTManager {nullptr} |
|
ToolHandle< ISiLorentzAngleTool > | m_lorentzAngleToolPixel {this, "LorentzAngleToolPixel", "SiLorentzAngleTool/PixelLorentzAngleTool", "Tool to retrieve Lorentz angle of Pixel"} |
|
ToolHandle< ISiLorentzAngleTool > | m_lorentzAngleToolStrip {this, "LorentzAngleToolStrip", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retrieve Lorentz angle of SCT"} |
|
Gaudi::Property< bool > | m_skipStripSpacePointFormation {this, "skipStripSpFormation", true, "Should be enabled in case we want to test strip seeding"} |
|
Gaudi::Property< bool > | m_doShift {this, "doLorentzShift", false, "Apply Lorentz angle shift to the clusters"} |
|
Gaudi::Property< bool > | m_useInherentLocalCoordinates {this, "useFPGALocalCoordinates", true, "instead of getting indirectly the local coordinates from the cell position, use the values stored in FPGATrackSimHit objects"} |
|
Gaudi::Property< bool > | m_broadErrors {this, "broadErrors", false, "If true use cluster width to set errors, otherwise use avg pixel width"} |
|
Definition at line 40 of file FPGAClusterConverter.h.
◆ FPGAClusterConverter()
FPGAClusterConverter::FPGAClusterConverter |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~FPGAClusterConverter()
virtual FPGAClusterConverter::~FPGAClusterConverter |
( |
| ) |
|
|
virtualdefault |
◆ convertClusters() [1/2]
Definition at line 164 of file FPGAClusterConverter.cxx.
174 std::vector<Identifier> rdoList;
177 std::unique_ptr<InDet::PixelCluster> pixelCl{};
178 std::unique_ptr<InDet::SCT_Cluster> SCTCl{};
182 if (pixelCl) pixelColl.push_back(std::move(pixelCl));
186 if (SCTCl) SCTColl.push_back(std::move(SCTCl));
190 ATH_MSG_DEBUG(
"pixelColl size: " << pixelColl.size() <<
" SCTColl size: " << SCTColl.size());
192 return StatusCode::SUCCESS;
◆ convertClusters() [2/2]
◆ convertHits() [1/3]
Definition at line 75 of file FPGAClusterConverter.cxx.
82 if (!FPGAClustersHandle.isValid()) {
83 ATH_MSG_FATAL(
"Failed to retrieve FPGATrackSimClusterCollection");
84 return StatusCode::FAILURE;
107 std::vector<Identifier> rdoList;
110 std::unique_ptr<InDet::PixelCluster> pixelCl{};
111 std::unique_ptr<InDet::SCT_Cluster> SCTCl{};
115 if (pixelCl) pixelColl.push_back(std::move(pixelCl));
119 if (SCTCl) SCTColl.push_back(std::move(SCTCl));
124 ATH_MSG_DEBUG(
"pixelColl size: " << pixelColl.size() <<
" SCTColl size: " << SCTColl.size());
126 return StatusCode::SUCCESS;
◆ convertHits() [2/3]
Definition at line 44 of file FPGAClusterConverter.cxx.
49 pixelColl.reserve(
hits.size());
50 SCTColl.reserve(
hits.size());
53 std::vector<Identifier> rdoList;
56 std::unique_ptr<InDet::PixelCluster> pixelCl{};
57 std::unique_ptr<InDet::SCT_Cluster> SCTCl{};
61 if (pixelCl) pixelColl.push_back(std::move(pixelCl));
65 if (SCTCl) SCTColl.push_back(std::move(SCTCl));
69 ATH_MSG_DEBUG(
"pixelColl size: " << pixelColl.size() <<
" SCTColl size: " << SCTColl.size() );
71 return StatusCode::SUCCESS;
◆ convertHits() [3/3]
◆ convertSpacePoints()
◆ createPixelCluster() [1/4]
Definition at line 624 of file FPGAClusterConverter.cxx.
625 ATH_MSG_DEBUG(
"\t Create InDet::PixelCluster from FPGATrackSimCluster");
627 std::vector<Identifier> rdoList;
630 return StatusCode::SUCCESS;
◆ createPixelCluster() [2/4]
Definition at line 633 of file FPGAClusterConverter.cxx.
634 ATH_MSG_DEBUG(
"\t Create xAOD::PixelCluster from FPGATrackSimCluster");
636 std::vector<Identifier> rdoList;
639 return StatusCode::SUCCESS;
◆ createPixelCluster() [3/4]
Definition at line 250 of file FPGAClusterConverter.cxx.
251 ATH_MSG_DEBUG(
"\tCreate InDet::PixelCluster from FPGATrackSimHit");
255 float etaWidth =
h.getEtaWidth();
258 int etaIndex =
h.getEtaIndex();
264 return StatusCode::FAILURE;
271 if(!
cell.isValid()) {
273 return StatusCode::FAILURE;
279 int colMin =
static_cast<int>(etaIndex-0.5*etaWidth);
280 int colMax = colMin+etaWidth;
285 double etaW = design->widthFromColumnRange(colMin, colMax-1);
286 double phiW = design->widthFromRowRange(rowMin, rowMax-1);
298 localPos = localPosShift;
302 ATH_MSG_DEBUG(
"\t\tLocal position: x=" << localPos.x() <<
" y=" << localPos.y() );
303 ATH_MSG_DEBUG(
"\t\tGlobal position: x=" << globalPos.x() <<
" y=" << globalPos.y() <<
" z=" << globalPos.z() );
309 cov(0,0) = siWidth.phiR()*siWidth.phiR()/12;
310 cov(1,1) = siWidth.z()*siWidth.z()/12;
313 cov(0,0) = siWidth.phiR()*siWidth.phiR()/(12*siWidth.colRow().x()*siWidth.colRow().x());
314 cov(1,1) = siWidth.z()*siWidth.z()/(12*siWidth.colRow().y()*siWidth.colRow().y());
317 float dummy_omegax = 0.5;
318 float dummy_omegay = 0.5;
320 float splitProb1 = 0;
321 float splitProb2 = 0;
323 cl = std::make_unique<InDet::PixelCluster>(hit_id, localPos, std::vector<Identifier>(rdoList), siWidth, pDE,
Amg::MatrixX(
cov), dummy_omegax, dummy_omegay,
split, splitProb1, splitProb2);
325 return StatusCode::SUCCESS;
◆ createPixelCluster() [4/4]
Definition at line 328 of file FPGAClusterConverter.cxx.
329 ATH_MSG_DEBUG(
"\tCreate xAOD::PixelCluster from FPGATrackSimHit");
337 return StatusCode::FAILURE;
344 if(!
cell.isValid()) {
346 return StatusCode::FAILURE;
351 int rowmin =
h.getMinPhiIndex();
352 int rowmax =
h.getMaxPhiIndex();
353 int colmin =
h.getMinEtaIndex();
354 int colmax =
h.getMaxEtaIndex();
360 ATH_MSG_ERROR(
"Pixel cluster indices appear uninitialized: colmin=" << colmin <<
", colmax=" << colmax
361 <<
", rowmin=" << rowmin <<
", rowmax=" << rowmax);
362 return StatusCode::FAILURE;
365 if (colmin < 0 || colmax < 0 || rowmin < 0 || rowmax < 0) {
366 ATH_MSG_ERROR(
"Pixel cluster indices out of range: colmin=" << colmin <<
", colmax=" << colmax
367 <<
", rowmin=" << rowmin <<
", rowmax=" << rowmax);
368 return StatusCode::FAILURE;
371 if (colmax < colmin || rowmax < rowmin) {
372 ATH_MSG_ERROR(
"Pixel cluster index max < min: colmin=" << colmin <<
", colmax=" << colmax
373 <<
", rowmin=" << rowmin <<
", rowmax=" << rowmax);
374 return StatusCode::FAILURE;
377 double zWidth = design->widthFromColumnRange(colmin, colmax);
378 double phiRWidth = design->widthFromRowRange(rowmin, rowmax);
389 localPos(0,0) =
h.getPhiCoord();
390 localPos(1,0) =
h.getEtaCoord();
396 localPos = localPosShift;
399 ATH_MSG_DEBUG(
"\t\tLocal position: x=" << localPos.x() <<
" y=" << localPos.y() );
405 cov(0,0) = siWidth.phiR()*siWidth.phiR()/12;
406 cov(1,1) = siWidth.z()*siWidth.z()/12;
409 cov(0,0) = siWidth.phiR()*siWidth.phiR()/(12*siWidth.colRow().x()*siWidth.colRow().x());
410 cov(1,1) = siWidth.z()*siWidth.z()/(12*siWidth.colRow().y()*siWidth.colRow().y());
414 float splitProb1 = 0;
415 float splitProb2 = 0;
417 Eigen::Matrix<float,2,1> localPosition(localPos.x(), localPos.y());
418 Eigen::Matrix<float,2,2> localCovariance;
419 localCovariance.setZero();
420 localCovariance(0, 0) =
cov(0, 0);
421 localCovariance(1, 1) =
cov(1, 1);
423 Eigen::Matrix<float,3,1> globalPosition(
h.getX(),
h.getY(),
h.getZ());
424 ATH_MSG_DEBUG(
"\t\tGlobal position: x=" << globalPosition.x() <<
" y=" << globalPosition.y() <<
" z=" << globalPosition.z() );
426 cl.setMeasurement<2>(
hash, localPosition, localCovariance);
427 cl.setIdentifier( rdoList.front().get_compact() );
428 cl.setRDOlist(rdoList);
429 cl.globalPosition() = globalPosition;
430 cl.setChannelsInPhiEta(siWidth.colRow()[0], siWidth.colRow()[1]);
431 cl.setWidthInEta(
static_cast<float>(siWidth.widthPhiRZ()[1]));
433 cl.setSplitProbabilities(splitProb1, splitProb2);
436 return StatusCode::SUCCESS;
◆ createPixelSPs()
Definition at line 661 of file FPGAClusterConverter.cxx.
668 Eigen::Matrix<float, 3, 1> globalPos(p_cl->globalPosition().x(), p_cl->globalPosition().y(), p_cl->globalPosition().z());
672 const float & cov_r = p_cl->localCovariance<2>()(0,0);
673 const float & cov_z = p_cl->localCovariance<2>()(1,0);
675 pixelSPs.
back()->setSpacePoint(
676 p_cl->identifierHash(),
680 std::vector< const xAOD::UncalibratedMeasurement* >({ p_cl })
684 return StatusCode::SUCCESS;
◆ createSCTCluster() [1/4]
Definition at line 642 of file FPGAClusterConverter.cxx.
643 ATH_MSG_DEBUG(
"\t Create InDet::SCT_Cluster from FPGATrackSimCluster");
645 std::vector<Identifier> rdoList;
648 return StatusCode::SUCCESS;
◆ createSCTCluster() [2/4]
Definition at line 651 of file FPGAClusterConverter.cxx.
652 ATH_MSG_DEBUG(
"\t Create xAOD::StripCluster from FPGATrackSimCluster");
654 std::vector<Identifier> rdoList;
657 return StatusCode::SUCCESS;
◆ createSCTCluster() [3/4]
Definition at line 439 of file FPGAClusterConverter.cxx.
440 ATH_MSG_DEBUG(
"\t Create InDet::SCTCluster from FPGATrackSimHit ");
446 int strip =
static_cast<int>(
h.getPhiIndex());
479 const std::pair<InDetDD::SiLocalPosition, InDetDD::SiLocalPosition> ends( design->
endsOfStrip(centre) );
480 const double stripLength( std::abs(ends.first.xEta() - ends.second.xEta()) );
485 ATH_MSG_DEBUG(
"\t\tcentre eta: " << centre.xEta() <<
" phi: " << centre.xPhi());
487 ATH_MSG_DEBUG(
"\t\tlocal position before shift: " << localPos.x() <<
" phi: " << localPos.y());
491 localPos = localPosShift;
495 ATH_MSG_DEBUG(
"\t\tLocal position: x=" << localPos.x() <<
" y=" << localPos.y() );
496 ATH_MSG_DEBUG(
"\t\tGlobal position: x=" << globalPos.x() <<
" y=" << globalPos.y() <<
" z=" << globalPos.z() );
499 const double col_x = siWidth.colRow().x();
500 const double col_y = siWidth.colRow().y();
502 double scale_factor = 1.;
503 if ( std::abs(col_x-1) < std::numeric_limits<double>::epsilon() )
505 else if ( std::abs(col_x-2) < std::numeric_limits<double>::epsilon() )
510 cov.fillSymmetric(0, 0, scale_factor * scale_factor * siWidth.phiR() * siWidth.phiR() * (1./12.));
511 cov.fillSymmetric(1, 1, siWidth.z() * siWidth.z() / col_y / col_y * (1./12.));
520 double v1 = (
cov)(1,1);
521 cov.fillSymmetric( 0, 0, cs2 *
v0 + sn2 * v1 );
522 cov.fillSymmetric( 0, 1, sn * std::sqrt(cs2) * (
v0 - v1) );
523 cov.fillSymmetric( 1, 1, sn2 *
v0 + cs2 * v1 );
526 cl = std::make_unique<InDet::SCT_Cluster>(strip_id, localPos, std::vector<Identifier>(rdoList), siWidth, pDE,
Amg::MatrixX(
cov));
528 return StatusCode::SUCCESS;
◆ createSCTCluster() [4/4]
Definition at line 531 of file FPGAClusterConverter.cxx.
532 ATH_MSG_DEBUG(
"\t Create xAOD::StripCluster from FPGATrackSimHit ");
538 int strip =
static_cast<int>(
h.getPhiIndex());
566 ATH_MSG_WARNING(
"Cell ID out of range. Skip making this Strip cluster");
567 return StatusCode::SUCCESS;
574 const std::pair<InDetDD::SiLocalPosition, InDetDD::SiLocalPosition> ends( design->
endsOfStrip(centre) );
575 const double stripLength( std::abs(ends.first.xEta() - ends.second.xEta()) );
581 localPos(0,0) =
h.getPhiCoord();
583 ATH_MSG_DEBUG(
"\t\tcentre eta: " << centre.xEta() <<
" phi: " << centre.xPhi());
585 ATH_MSG_DEBUG(
"\t\tlocal position before shift: " << localPos.x() <<
" phi: " << localPos.y());
590 localPos = localPosShift;
593 ATH_MSG_DEBUG(
"\t\tLocal position: x=" << localPos.x() <<
" y=" << localPos.y() );
596 Eigen::Matrix<float,1,1> localPosition;
597 Eigen::Matrix<float,1,1> localCovariance;
598 localCovariance.setZero();
601 localPosition(0, 0) = localPos.x();
606 if ( designNew ==
nullptr )
return StatusCode::FAILURE;
608 localPosition(0, 0) = localInPolar.
xPhi();
612 Eigen::Matrix<float,3,1> globalPosition(
h.getX(),
h.getY(),
h.getZ());
613 ATH_MSG_DEBUG(
"\t\tGlobal position: x=" << globalPosition.x() <<
" y=" << globalPosition.y() <<
" z=" << globalPosition.z() );
615 cl.setMeasurement<1>(
hash, localPosition, localCovariance);
616 cl.setIdentifier( rdoList.front().get_compact() );
617 cl.setRDOlist(rdoList);
618 cl.globalPosition() = globalPosition;
619 cl.setChannelsInPhi(siWidth.colRow()[0]);
621 return StatusCode::SUCCESS;
◆ createSP()
Definition at line 688 of file FPGAClusterConverter.cxx.
700 Eigen::Matrix<float,3,1> globalPos(clEq.
getX(),clEq.
getY(),clEq.
getZ());
706 float covTerm = 1600.*
deltaY;
707 Eigen::Matrix<float, 2, 1> variance(0.1, 8.*covTerm);
711 std::swap( variance(0, 0), variance(1, 0) );
712 float cov_r = variance(0,0);
713 float cov_z = variance(1,0);
718 std::vector<unsigned int> idHashList;
719 std::vector<const xAOD::UncalibratedMeasurement_v1*> measurements;
723 float topHalfStripLength, bottomHalfStripLength;
730 idHashList.push_back(
h.getIdentifierHash());
731 for (
auto orig_cl : clustersCont) {
732 if (
h.getIdentifierHash()==orig_cl->identifierHash()) {
735 measurements.push_back(orig_cl);
743 Amg::Vector3D stripCenterDistance = stripCenter1 - stripCenter2;
745 ATH_MSG_DEBUG(
"topHalfStripLength = " << topHalfStripLength <<
" bottomHalfStripLength = " << bottomHalfStripLength);
746 ATH_MSG_DEBUG(
"topStripDirection = (" << topStripDirection.x() <<
", " << topStripDirection.y() <<
", " << topStripDirection.z() <<
") " <<
"bottomStripDirection = (" << bottomStripDirection.x() <<
", " << bottomStripDirection.y() <<
", " << bottomStripDirection.z() <<
") " );
747 ATH_MSG_DEBUG(
"stripCenterDistance = (" << stripCenterDistance.x() <<
", " << stripCenterDistance.y() <<
", " << stripCenterDistance.z() <<
")" );
748 ATH_MSG_DEBUG(
"topStripCenter = (" << topStripCenter.x() <<
", " << topStripCenter.y() <<
", " << topStripCenter.z() <<
")" );
752 std::move(idHashList),
756 std::move(measurements),
758 bottomHalfStripLength,
759 topStripDirection.cast<
float>(),
760 bottomStripDirection.cast<
float>(),
761 stripCenterDistance.cast<
float>(),
762 topStripCenter.cast<
float>()
765 return StatusCode::SUCCESS;
◆ getRdoList() [1/2]
Definition at line 768 of file FPGAClusterConverter.cxx.
775 int etaIndex =
h.getEtaIndex();
780 rdoList.push_back(hit_id);
785 rdoList.push_back(hit_id);
789 return StatusCode::SUCCESS;
◆ getRdoList() [2/2]
Definition at line 794 of file FPGAClusterConverter.cxx.
798 int etaIndex =
h.getEtaIndex();
803 rdoList.push_back(hit_id);
808 rdoList.push_back(hit_id);
811 return StatusCode::SUCCESS;
◆ getStripsInfo()
Definition at line 814 of file FPGAClusterConverter.cxx.
826 std::pair<Amg::Vector3D, Amg::Vector3D>
end = (pDE->
endsOfStrip(localPos));
827 stripCenter = 0.5 * (
end.first +
end.second);
830 halfStripLength = 0.5 * stripDir.norm();
831 stripDirection = stripDir / (2. * (halfStripLength));
833 return StatusCode::SUCCESS;
◆ initialize()
StatusCode FPGAClusterConverter::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ m_beamSpotKey
◆ m_broadErrors
Gaudi::Property<bool> FPGAClusterConverter::m_broadErrors {this, "broadErrors", false, "If true use cluster width to set errors, otherwise use avg pixel width"} |
|
private |
◆ m_doShift
Gaudi::Property<bool> FPGAClusterConverter::m_doShift {this, "doLorentzShift", false, "Apply Lorentz angle shift to the clusters"} |
|
private |
◆ m_FPGAClusterKey
◆ m_lorentzAngleToolPixel
◆ m_lorentzAngleToolStrip
◆ m_pixelId
◆ m_pixelManager
◆ m_SCTId
◆ m_SCTManager
◆ m_skipStripSpacePointFormation
Gaudi::Property<bool> FPGAClusterConverter::m_skipStripSpacePointFormation {this, "skipStripSpFormation", true, "Should be enabled in case we want to test strip seeding"} |
|
private |
◆ m_useInherentLocalCoordinates
Gaudi::Property<bool> FPGAClusterConverter::m_useInherentLocalCoordinates {this, "useFPGALocalCoordinates", true, "instead of getting indirectly the local coordinates from the cell position, use the values stored in FPGATrackSimHit objects"} |
|
private |
The documentation for this class was generated from the following files:
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
def retrieve(aClass, aKey=None)
Gaudi::Property< bool > m_doShift
Gaudi::Property< bool > m_skipStripSpacePointFormation
virtual double stripPitch(const SiLocalPosition &chargePos) const =0
give the strip pitch (dependence on position needed for forward)
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleToolPixel
const InDetDD::SCT_DetectorManager * m_SCTManager
SiCellId cellIdOfPosition(const Amg::Vector2D &localPos) const
As in previous method but returns SiCellId.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
hitVector const & getHitList() const
value_type emplace_back(value_type pElem)
Add an element to the end of the collection.
const std::vector< DetectorIDHashType > & elementIdList() const
Returns the IdentifierHash of the spacepoint (corresponds to the detector element IdentifierHash)
Eigen::Matrix< double, 2, 1 > Vector2D
SG::ReadHandleKey< FPGATrackSimClusterCollection > m_FPGAClusterKey
virtual DetectorShape shape() const
Shape of element.
Gaudi::Property< bool > m_useInherentLocalCoordinates
Gaudi::Property< bool > m_broadErrors
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements via Identifier
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
const std::vector< Identifier > rdoList() const
Returns the list of identifiers of the channels building the cluster.
const InDetDD::PixelDetectorManager * m_pixelManager
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleToolStrip
virtual StatusCode getStripsInfo(const xAOD::StripCluster &cl, float &halfStripLength, Amg::Vector3D &stripDirection, Amg::Vector3D &stripCenter) const override final
double xPhi() const
position along phi direction:
const PixelID * m_pixelId
StripCluster_v1 StripCluster
Define the version of the strip cluster class.
double phiPitch() const
Pitch (inline methods)
std::vector< FPGATrackSimCluster > FPGATrackSimClusterCollection
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
virtual SiCellId cellIdInRange(const SiCellId &cellId) const override
Check if cell is in range.
virtual StatusCode createSCTCluster(const FPGATrackSimHit &h, const std::vector< Identifier > &rdoList, std::unique_ptr< InDet::SCT_Cluster > &) const override final
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.
virtual StatusCode createSP(const FPGATrackSimCluster &cl, xAOD::SpacePoint &sp, xAOD::StripClusterContainer &clustersCont) const override final
int row(const Identifier &id) const
void setSpacePoint(DetectorIDHashType idHash, const Eigen::Matrix< float, 3, 1 > &globPos, float cov_r, float cov_z, std::vector< const xAOD::UncalibratedMeasurement * > &&measurementIndexes)
virtual StatusCode getRdoList(std::vector< Identifier > &rdoList, const FPGATrackSimCluster &cluster) const override final
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
unsigned getIdentifierHash() const
const T * back() const
Access the last element in the collection as an rvalue.
std::pair< Amg::Vector3D, Amg::Vector3D > endsOfStrip(const Amg::Vector2D &position) const
Special method for SCT to retrieve the two ends of a "strip" Returned coordinates are in global frame...
virtual StatusCode createPixelCluster(const FPGATrackSimHit &h, const std::vector< Identifier > &rdoList, std::unique_ptr< InDet::PixelCluster > &) const override final
FPGATrackSimHit const & getClusterEquiv() const
double phiPitchPhi(const SiLocalPosition &localPosition) const
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Eigen::Matrix< double, 3, 1 > Vector3D
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Amg::Vector2D rawLocalPositionOfCell(const SiCellId &cellId) const
Returns position (center) of cell.
virtual int strip1Dim(int strip, int row) const override
only relevant for SCT.
#define ATH_MSG_WARNING(x)
int strip(const Identifier &id) const
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
void pop_back()
Remove the last element from the collection.
Identifier pixel_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int phi_index, int eta_index) const
For an individual pixel.
double sinStereoLocal(const Amg::Vector2D &localPos) const
Angle of strip in local frame with respect to the etaAxis.
AthConfigFlags beamSpot(AthConfigFlags flags, str instanceName, str recoMode)
virtual const SiDetectorElement * getDetectorElement(const Identifier &id) const override
access to individual elements : via Identifier
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
SiLocalPosition localPositionOfCellPC(const SiCellId &cellId) const
This is for debugging only.
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const override=0
give the ends of strips
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
size_type size() const noexcept
Returns the number of elements in the collection.
virtual StatusCode createPixelSPs(xAOD::SpacePointContainer &pixelSPs, xAOD::PixelClusterContainer &clustersCont) const override final
Identifier strip_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side, int strip) const
For an individual strip.