Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <PixelPrepDataToxAOD.h>
|
| PixelPrepDataToxAOD (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () |
|
virtual StatusCode | execute () |
|
virtual StatusCode | finalize () |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
std::vector< std::vector< int > > | addSDOInformation (xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *prd, const InDetSimDataCollection &sdoCollection) const |
|
void | addSiHitInformation (xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *prd, const std::vector< SiHit > &matchingHits) const |
|
std::vector< SiHit > | findAllHitsCompatibleWithCluster (const InDet::PixelCluster *prd, const std::vector< const SiHit * > *sihits, std::vector< std::vector< int > > &trkBCs) const |
|
void | addNNTruthInfo (xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *prd, const std::vector< SiHit > &matchingHits) const |
|
void | addNNInformation (xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *pixelCluster, const unsigned int SizeX, const unsigned int SizeY) const |
|
void | addRdoInformation (xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *pixelCluster, const PixelChargeCalibCondData *calibData) const |
|
InDetDD::SiCellId | getCellIdWeightedPosition (const InDet::PixelCluster *pixelCluster, int *rrowMin=0, int *rrowMax=0, int *rcolMin=0, int *rcolMax=0) const |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
const PixelID * | m_PixelHelper |
|
bool | m_useTruthInfo |
|
bool | m_writeSDOs |
|
bool | m_writeSiHits |
|
bool | m_writeNNinformation |
|
bool | m_writeRDOinformation |
|
bool | m_writeExtendedPRDinformation |
|
bool | m_useSiHitsGeometryMatching |
|
ServiceHandle< InDetDD::IPixelReadoutManager > | m_pixelReadout {this, "PixelReadoutManager", "PixelReadoutManager", "Pixel readout manager" } |
|
SG::ReadCondHandleKey< PixelChargeCalibCondData > | m_chargeDataKey {this, "PixelChargeCalibCondData", "PixelChargeCalibCondData", "Pixel charge calibration data"} |
|
SG::ReadCondHandleKey< PixelDCSStateData > | m_condDCSStateKey {this, "PixelDCSStateCondData", "PixelDCSStateCondData", "Pixel FSM state key"} |
|
SG::ReadCondHandleKey< PixelDCSStatusData > | m_condDCSStatusKey {this, "PixelDCSStatusCondData", "PixelDCSStatusCondData", "Pixel FSM status key"} |
|
SG::ReadCondHandleKey< PixelDCSTempData > | m_readKeyTemp {this, "ReadKeyTemp", "PixelDCSTempCondData", "Key of input sensor temperature conditions folder"} |
|
SG::ReadCondHandleKey< PixelDCSHVData > | m_readKeyHV {this, "ReadKeyHV", "PixelDCSHVCondData", "Key of input bias voltage conditions folder"} |
|
ToolHandle< IInDetConditionsTool > | m_pixelSummary {this, "PixelConditionsSummaryTool", "PixelConditionsSummaryTool", "Tool for PixelConditionsSummaryTool"} |
|
ToolHandle< ISiLorentzAngleTool > | m_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool", "Tool to retreive Lorentz angle"} |
|
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > | m_clusterSplitProbContainer {this, "ClusterSplitProbabilityName", "",""} |
|
std::atomic< unsigned int > | m_haveTruthLink {} |
|
std::atomic< unsigned int > | m_missingTruthParticle {} |
|
std::atomic< unsigned int > | m_missingParentParticle {} |
|
bool | m_firstEventWarnings |
|
bool | m_need_sihits |
|
SG::ReadHandleKey< InDet::PixelClusterContainer > | m_clustercontainer_key |
|
SG::ReadHandleKey< SiHitCollection > | m_sihitContainer_key |
|
SG::ReadHandleKey< InDetSimDataCollection > | m_SDOcontainer_key |
|
SG::ReadHandleKey< PRD_MultiTruthCollection > | m_multiTruth_key |
|
SG::ReadHandleKey< xAODTruthParticleLinkVector > | m_truthParticleLinks {this,"InputTruthParticleLinks","","The key for the truth particle link collection."} |
|
SG::WriteHandleKey< xAOD::TrackMeasurementValidationContainer > | m_write_xaod_key |
|
SG::WriteHandleKey< std::vector< unsigned int > > | m_write_offsets |
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 64 of file PixelPrepDataToxAOD.h.
◆ StoreGateSvc_t
◆ PixelPrepDataToxAOD()
PixelPrepDataToxAOD::PixelPrepDataToxAOD |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ addNNInformation()
Definition at line 770 of file PixelPrepDataToxAOD.cxx.
785 ATH_MSG_WARNING(
"PixelModuleDesign was not retrieved in function 'addNNInformation'");
788 const std::vector<Identifier>& rdos =
pixelCluster->rdoList();
790 const std::vector<float>& chList =
pixelCluster->chargeList();
791 const std::vector<int>& totList =
pixelCluster->totList();
799 int phiPixelIndexMin, phiPixelIndexMax, etaPixelIndexMin, etaPixelIndexMax;
802 if (!cellIdWeightedPosition.
isValid())
807 int etaPixelIndexWeightedPosition=cellIdWeightedPosition.
etaIndex();
808 int phiPixelIndexWeightedPosition=cellIdWeightedPosition.
phiIndex();
811 ATH_MSG_DEBUG(
" weighted pos phiPixelIndex: " << phiPixelIndexWeightedPosition <<
" etaPixelIndex: " << etaPixelIndexWeightedPosition );
829 double localEtaPixelIndexWeightedPosition =
w.xEta();
830 double localPhiPixelIndexWeightedPosition =
w.xPhi();
832 int centralIndexX=(sizeX-1)/2;
833 int centralIndexY=(sizeY-1)/2;
839 if (abs(phiPixelIndexWeightedPosition-phiPixelIndexMin)>centralIndexX ||
840 abs(phiPixelIndexWeightedPosition-phiPixelIndexMax)>centralIndexX)
842 ATH_MSG_DEBUG(
" Cluster too large phiPixelIndexMin " << phiPixelIndexMin <<
" phiPixelIndexMax " << phiPixelIndexMax <<
" centralX " << centralIndexX);
846 if (abs(etaPixelIndexWeightedPosition-etaPixelIndexMin)>centralIndexY ||
847 abs(etaPixelIndexWeightedPosition-etaPixelIndexMax)>centralIndexY)
849 ATH_MSG_DEBUG(
" Cluster too large etaPixelIndexMin" << etaPixelIndexMin <<
" etaPixelIndexMax " << etaPixelIndexMax <<
" centralY " << centralIndexY);
853 std::vector< std::vector<float> > matrixOfToT (sizeX, std::vector<float>(sizeY,0) );
854 std::vector< std::vector<float> > matrixOfCharge(sizeX, std::vector<float>(sizeY,0));
855 std::vector<float> vectorOfPitchesY(sizeY,0.4);
859 std::vector<Identifier>::const_iterator rdosBegin = rdos.begin();
860 std::vector<Identifier>::const_iterator rdosEnd = rdos.end();
861 auto charge = chList.begin();
862 auto tot = totList.begin();
864 ATH_MSG_VERBOSE(
" Putting together the n. " << rdos.size() <<
" rdos into a matrix.");
866 for (; rdosBegin!= rdosEnd; ++rdosBegin)
872 if (
charge != chList.end()){
875 if (absphiPixelIndex <0 || absphiPixelIndex >= (
int)sizeX)
877 ATH_MSG_DEBUG(
" problem with index: " << absphiPixelIndex <<
" min: " << 0 <<
" max: " << sizeX);
881 if (absetaPixelIndex <0 || absetaPixelIndex >= (
int)sizeY)
883 ATH_MSG_DEBUG(
" problem with index: " << absetaPixelIndex <<
" min: " << 0 <<
" max: " << sizeY);
889 float pitchY = diodeParameters.
width().
xEta();
891 if ( (not totList.empty()) && tot != totList.end()) {
892 matrixOfToT[absphiPixelIndex][absetaPixelIndex] =*tot;
894 }
else matrixOfToT[absphiPixelIndex][absetaPixelIndex] = -1;
896 if ( (not chList.empty()) &&
charge != chList.end()){
897 matrixOfCharge[absphiPixelIndex][absetaPixelIndex]=*
charge;
899 }
else matrixOfCharge[absphiPixelIndex][absetaPixelIndex] = -1;
903 vectorOfPitchesY[absetaPixelIndex]=pitchY;
917 trackDir.normalize();
924 float trkphicomp = trackDir.dot(module_phiax);
925 float trketacomp = trackDir.dot(module_etaax);
926 float trknormcomp = trackDir.dot(module_normal);
927 double bowphi = atan2(trkphicomp,trknormcomp);
928 double boweta = atan2(trketacomp,trknormcomp);
930 if(bowphi > TMath::Pi()/2) bowphi -= TMath::Pi();
931 if(bowphi < -TMath::Pi()/2) bowphi += TMath::Pi();
932 int readoutside = design->readoutSide();
938 if (boweta>TMath::Pi()/2.) boweta-=TMath::Pi();
939 if (boweta<-TMath::Pi()/2.) boweta+=TMath::Pi();
943 ATH_MSG_VERBOSE(
" PhiPixelIndexWeightedPosition: " << phiPixelIndexWeightedPosition <<
" EtaPixelIndexWeightedPosition: " << etaPixelIndexWeightedPosition );
946 std::vector<float> vectorOfCharge(sizeX*sizeY,0);
947 std::vector<float> vectorOfToT(sizeX*sizeY,0);
949 for (
unsigned int u=0;
u<sizeX;
u++)
951 for (
unsigned int s=0;
s<sizeY;
s++)
953 vectorOfToT[
counter] = matrixOfToT[
u][
s];
954 vectorOfCharge[
counter] = matrixOfCharge[
u][
s];
963 AUXDATA(xprd,
int, NN_sizeX) = sizeX;
964 AUXDATA(xprd,
int, NN_sizeY) = sizeY;
967 AUXDATA(xprd,
float, NN_thetaBS) = boweta;
969 AUXDATA(xprd, std::vector<float>, NN_matrixOfToT) = vectorOfToT;
970 AUXDATA(xprd, std::vector<float>, NN_matrixOfCharge) = vectorOfCharge;
971 AUXDATA(xprd, std::vector<float>, NN_vectorOfPitchesY) = vectorOfPitchesY;
974 AUXDATA(xprd,
int, NN_etaPixelIndexWeightedPosition) = etaPixelIndexWeightedPosition;
975 AUXDATA(xprd,
int, NN_phiPixelIndexWeightedPosition) = phiPixelIndexWeightedPosition;
977 AUXDATA(xprd,
float, NN_localEtaPixelIndexWeightedPosition) = localEtaPixelIndexWeightedPosition;
978 AUXDATA(xprd,
float, NN_localPhiPixelIndexWeightedPosition) = localPhiPixelIndexWeightedPosition;
◆ addNNTruthInfo()
Definition at line 983 of file PixelPrepDataToxAOD.cxx.
1023 ATH_MSG_WARNING(
"PixelModuleDesign was not retrieved in function 'addNNTruthInfo'");
1028 unsigned hitNumber(0);
1029 for(
const auto& siHit : matchingHits ){
1031 HepGeom::Point3D<double> averagePosition = (siHit.localStartPosition() + siHit.localEndPosition()) * 0.5;
1033 ATH_MSG_VERBOSE(
"Truth Part X: " << averagePosition.y() <<
" shift " << shift <<
" Y: " << averagePosition.z() );
1036 float YposC = averagePosition.y()-shift;
1038 if (std::abs(YposC)>design->width()/2 &&
1039 std::abs(averagePosition.y())<design->width()/2)
1041 if (YposC>design->width()/2)
1043 YposC=design->width()/2-1
e-6;
1044 }
else if (YposC<-design->
width()/2)
1046 YposC=-design->width()/2+1
e-6;
1050 positionsX[hitNumber] = YposC;
1051 positionsY[hitNumber] = averagePosition.z();
1053 HepGeom::Point3D<double> deltaPosition = siHit.localEndPosition() - siHit.localStartPosition();
1055 pathlengthX[hitNumber] = deltaPosition.y();
1056 pathlengthY[hitNumber] = deltaPosition.z();
1057 pathlengthZ[hitNumber] = deltaPosition.x();
1062 InDetDD::SiCellId cellIdOfTruthPosition = design->cellIdOfPosition(siLocalTruthPosition);
1068 int truthEtaIndex = cellIdOfTruthPosition.
etaIndex();
1069 int truthPhiIndex = cellIdOfTruthPosition.
phiIndex();
1072 double pitchY = diodeParameters.
width().
xEta();
1073 double pitchX = diodeParameters.
width().
xPhi();
1090 double pixelCenterY = siLocalPositionCenter.xEta();
1091 double pixelCenterX = siLocalPositionCenter.xPhi();
1097 double truthIndexY = truthEtaIndex + (siLocalTruthPosition[
Trk::distEta] - pixelCenterY)/pitchY;
1098 double truthIndexX = truthPhiIndex + (siLocalTruthPosition[
Trk::distPhi] - pixelCenterX)/pitchX;
1101 positions_indexX[hitNumber] = truthIndexX - cellIdWeightedPosition.
phiIndex();
1102 positions_indexY[hitNumber] = truthIndexY - cellIdWeightedPosition.
etaIndex();
1104 HepGeom::Point3D<double> diffPositions = (siHit.localEndPosition() - siHit.localStartPosition());
1105 double bowphi = std::atan2( diffPositions.y(), diffPositions.x() );
1109 theta[hitNumber] = std::atan2(diffPositions.z() ,diffPositions.x());
1113 int readoutside = design->readoutSide();
1119 pdgid[hitNumber] =
particle->pdg_id();
1126 const auto& mother_of_particle=
vertex->particles_in().front();
1128 motherPdgid[hitNumber] = mother_of_particle->pdg_id();
1132 if(
vertex->particles_in_const_begin() !=
vertex->particles_in_const_end() ){
1134 motherPdgid[hitNumber] = (*
vertex->particles_in_const_begin())->pdg_id();
1139 chargeDep[hitNumber] = siHit.energyLoss() ;
1145 AUXDATA(xprd, std::vector<float>, NN_positionsX) = positionsX;
1146 AUXDATA(xprd, std::vector<float>, NN_positionsY) = positionsY;
1148 AUXDATA(xprd, std::vector<float>, NN_positions_indexX) = positions_indexX;
1149 AUXDATA(xprd, std::vector<float>, NN_positions_indexY) = positions_indexY;
1152 AUXDATA(xprd, std::vector<float>, NN_phi) =
phi;
1155 AUXDATA(xprd, std::vector<int>, NN_pdgid) = pdgid;
1156 AUXDATA(xprd, std::vector<float>, NN_energyDep) = chargeDep;
1157 AUXDATA(xprd, std::vector<float>, NN_trueP) = truep;
1159 AUXDATA(xprd, std::vector<int>, NN_motherBarcode) = motherBarcode;
1160 AUXDATA(xprd, std::vector<int>, NN_motherPdgid) = motherPdgid;
1163 AUXDATA(xprd, std::vector<float>, NN_pathlengthX) = pathlengthX;
1164 AUXDATA(xprd, std::vector<float>, NN_pathlengthY) = pathlengthY;
1165 AUXDATA(xprd, std::vector<float>, NN_pathlengthZ) = pathlengthZ;
◆ addRdoInformation()
Definition at line 705 of file PixelPrepDataToxAOD.cxx.
712 const std::vector<Identifier>& rdos =
pixelCluster->rdoList();
714 const std::vector<float> &chList =
pixelCluster->chargeList();
715 const std::vector<int> &totList =
pixelCluster->totList();
719 std::vector<int> etaIndexList;
720 std::vector<int> phiIndexList;
721 std::vector<float> CTerm;
722 std::vector<float> ATerm;
723 std::vector<float> ETerm;
728 std::vector<Identifier>::const_iterator rdosBegin = rdos.begin();
729 std::vector<Identifier>::const_iterator rdosEnd = rdos.end();
731 ATH_MSG_VERBOSE(
" Putting together the n. " << rdos.size() <<
" rdos into a matrix.");
733 phiIndexList.reserve( rdos.size());
734 etaIndexList.reserve( rdos.size());
735 CTerm.reserve( rdos.size());
736 ATerm.reserve( rdos.size());
737 ETerm.reserve( rdos.size());
738 for (; rdosBegin!= rdosEnd; ++rdosBegin)
758 AUXDATA(xprd, std::vector<int>,rdo_phi_pixel_index) = phiIndexList;
759 AUXDATA(xprd, std::vector<int>,rdo_eta_pixel_index) = etaIndexList;
760 AUXDATA(xprd, std::vector<float>,rdo_charge) = chList;
761 AUXDATA(xprd, std::vector<int>,rdo_tot) = totList;
763 AUXDATA(xprd, std::vector<float>,rdo_Cterm) = CTerm;
764 AUXDATA(xprd, std::vector<float>,rdo_Aterm) = ATerm;
765 AUXDATA(xprd, std::vector<float>,rdo_Eterm) = ETerm;
◆ addSDOInformation()
Definition at line 468 of file PixelPrepDataToxAOD.cxx.
472 std::vector<int> sdo_word;
473 std::vector< std::vector< int > > sdo_depositsBarcode;
474 std::vector< std::vector< float > > sdo_depositsEnergy;
476 for(
const auto &hitIdentifier : prd->
rdoList() ){
477 auto pos = sdoCollection.find(hitIdentifier);
478 if(
pos == sdoCollection.end() )
continue;
479 sdo_word.push_back(
pos->second.word() ) ;
481 std::vector<float> sdoDepEnergy(
pos->second.getdeposits().size());
482 unsigned int nDepos{0};
483 for (
auto& deposit:
pos->second.getdeposits()) {
484 if (deposit.first) sdoDepBC[nDepos] =
HepMC::barcode(deposit.first);
486 sdoDepEnergy[nDepos] = deposit.second;
489 sdo_depositsBarcode.push_back( sdoDepBC );
490 sdo_depositsEnergy.push_back( sdoDepEnergy );
492 AUXDATA(xprd,std::vector<int>,sdo_words) = sdo_word;
493 AUXDATA(xprd,std::vector< std::vector<int> >,sdo_depositsBarcode) = sdo_depositsBarcode;
494 AUXDATA(xprd,std::vector< std::vector<float> >,sdo_depositsEnergy) = sdo_depositsEnergy;
496 return sdo_depositsBarcode;
◆ addSiHitInformation()
Definition at line 501 of file PixelPrepDataToxAOD.cxx.
506 int numHits = matchingHits.size();
508 std::vector<float> sihit_energyDeposit(numHits,0);
509 std::vector<float> sihit_meanTime(numHits,0);
510 std::vector<int> sihit_barcode(numHits,0);
511 std::vector<int> sihit_pdgid(numHits,0);
513 std::vector<float> sihit_startPosX(numHits,0);
514 std::vector<float> sihit_startPosY(numHits,0);
515 std::vector<float> sihit_startPosZ(numHits,0);
517 std::vector<float> sihit_endPosX(numHits,0);
518 std::vector<float> sihit_endPosY(numHits,0);
519 std::vector<float> sihit_endPosZ(numHits,0);
524 for (
const auto& sihit : matchingHits ) {
525 sihit_energyDeposit[hitNumber] = sihit.energyLoss() ;
526 sihit_meanTime[hitNumber] = sihit.meanTime() ;
530 sihit_pdgid[hitNumber] = HMPL->pdg_id();
534 const HepGeom::Point3D<double>& startPos=sihit.localStartPosition();
537 sihit_startPosX[hitNumber] =
pos[0];
538 sihit_startPosY[hitNumber] =
pos[1];
539 sihit_startPosZ[hitNumber] = startPos.x();
542 const HepGeom::Point3D<double>& endPos=sihit.localEndPosition();
544 sihit_endPosX[hitNumber] =
pos[0];
545 sihit_endPosY[hitNumber] =
pos[1];
546 sihit_endPosZ[hitNumber] = endPos.x();
551 AUXDATA(xprd,std::vector<float>,sihit_energyDeposit) = sihit_energyDeposit;
552 AUXDATA(xprd,std::vector<float>,sihit_meanTime) = sihit_meanTime;
553 AUXDATA(xprd,std::vector<int>,sihit_barcode) = sihit_barcode;
554 AUXDATA(xprd,std::vector<int>,sihit_pdgid) = sihit_pdgid;
556 AUXDATA(xprd,std::vector<float>,sihit_startPosX) = sihit_startPosX;
557 AUXDATA(xprd,std::vector<float>,sihit_startPosY) = sihit_startPosY;
558 AUXDATA(xprd,std::vector<float>,sihit_startPosZ) = sihit_startPosZ;
560 AUXDATA(xprd,std::vector<float>,sihit_endPosX) = sihit_endPosX;
561 AUXDATA(xprd,std::vector<float>,sihit_endPosY) = sihit_endPosY;
562 AUXDATA(xprd,std::vector<float>,sihit_endPosZ) = sihit_endPosZ;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode PixelPrepDataToxAOD::execute |
( |
| ) |
|
|
virtual |
Definition at line 130 of file PixelPrepDataToxAOD.cxx.
132 const EventContext& ctx = Gaudi::Hive::currentContext();
139 return StatusCode::FAILURE;
146 if (prdmtCollHandle.isValid()) {
147 prdmtColl = &*prdmtCollHandle;
151 if (truthParticleLinksHandle.isValid()) {
152 truth_particle_links = truthParticleLinksHandle.cptr();
160 if (sdoCollectionHandle.isValid()) {
161 sdoCollection = &*sdoCollectionHandle;
163 ATH_MSG_WARNING(
"SDO information requested, but SDO collection not available!");
168 bool foundSplitProbContainer =
false;
171 if (!splitProbContainer.
isValid()) {
174 foundSplitProbContainer =
true;
180 if (siHitCollectionHandle.isValid()) {
181 for (
const SiHit& siHit: *siHitCollectionHandle) {
183 if (!siHit.isPixel())
continue;
186 siHit.getLayerDisk(),
187 siHit.getPhiModule(),
188 siHit.getEtaModule()));
191 siHits[wafer_hash].push_back(&siHit);
194 ATH_MSG_WARNING(
"SiHit information requested, but SiHit collection not available!");
201 if (!calibData_handle.isValid()) {
204 calibData=calibData_handle.cptr();
209 ATH_CHECK(xaod.record(std::make_unique<xAOD::TrackMeasurementValidationContainer>(),
210 std::make_unique<xAOD::TrackMeasurementValidationAuxContainer>()));
215 unsigned int have_truth_link=0
u;
216 unsigned int missing_truth_particle=0
u;
217 unsigned int missing_parent_particle=0
u;
225 std::unordered_map< unsigned int , std::vector<unsigned int> > cluster_map;
229 (*offsets)[clusterCollection->identifyHash()] =
counter;
232 if( clusterCollection->empty() )
continue;
245 unsigned int cluster_idx = xaod->size();
246 xaod->push_back(xprd);
262 if(localCov.size() == 1){
264 }
else if(localCov.size() == 4){
271 std::vector< uint64_t > rdoIdentifierList;
272 rdoIdentifierList.reserve(prd->rdoList().size());
273 int rowmin=9999;
int rowmax=-9999;
274 int colmin=9999;
int colmax=-9999;
275 for(
const auto &hitIdentifier : prd->rdoList() ){
276 rdoIdentifierList.push_back( hitIdentifier.get_compact() );
280 if(rowmin >
row) rowmin =
row;
281 if(rowmax <
row) rowmax =
row;
282 if(colmin >
col) colmin =
col;
283 if(colmax <
col) colmax =
col;
293 AUXDATA(xprd,
int,phi_module) = the_phi ;
294 AUXDATA(xprd,
int,eta_module) = the_eta ;
298 cluster_map[ makeKey(the_phi, the_eta, the_layer)].push_back(cluster_idx);
303 AUXDATA(xprd,
int,nRDO) = (
int)prd->rdoList().size();
306 AUXDATA(xprd,
int,ToT) = prd->totalToT();
307 AUXDATA(xprd,
int,LVL1A) = prd->LVL1A();
310 AUXDATA(xprd,
char,gangedPixel) = (
char)prd->gangedPixel();
324 AUXDATA(xprd,
int,DCSState) = dcsState->getModuleStatus(moduleHash);
326 float deplVoltage = 0.0;
327 AUXDATA(xprd,
float,BiasVoltage) = dcsHV->getBiasVoltage(moduleHash);
328 AUXDATA(xprd,
float,Temperature) = dcsTemp->getTemperature(moduleHash);
329 AUXDATA(xprd,
float,DepletionVoltage) = deplVoltage;
362 AUXDATA(xprd,
float,omegax) = prd->omegax();
363 AUXDATA(xprd,
float,omegay) = prd->omegay();
368 auto range{prdmtColl->equal_range(clusterId)};
369 if (truth_particle_links) {
370 std::vector<unsigned int> tp_indices;
373 if (a_truth_particle_link) {
375 if (truth_particle) {
377 tp_indices.push_back(
static_cast<int>(truth_particle->
index()));
380 ++missing_parent_particle;
385 ++missing_truth_particle;
389 AUXDATA(xprd,std::vector<unsigned int>, truth_index) = tp_indices;
399 std::vector< std::vector< int > > sdo_tracks;
421 for (
auto clusItr = xaod->begin(); clusItr != xaod->end(); ++clusItr ) {
422 AUXDATA(*clusItr,
char,broken) =
false;
432 for (
auto clusItr = xaod->begin(); clusItr != xaod->end(); ++clusItr)
439 for (
unsigned int cluster_idx : cluster_idx_list) {
440 auto pixelCluster2 = xaod->at(cluster_idx);
441 if ( acc_layer(*pixelCluster2) !=
layer )
443 if ( acc_eta_module(*
pixelCluster) != acc_eta_module(*pixelCluster2) )
445 if ( acc_phi_module(*
pixelCluster) != acc_phi_module(*pixelCluster2) )
448 std::vector<int> barcodes2 = acc_sihit_barcode(*pixelCluster2);
451 if (
std::find(barcodes2.begin(), barcodes2.end(), bc ) == barcodes2.end())
continue;
454 acc_broken(*pixelCluster2) =
true;
460 ATH_MSG_DEBUG(
" recorded PixelPrepData objects: size " << xaod->size() );
464 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode PixelPrepDataToxAOD::finalize |
( |
| ) |
|
|
virtual |
◆ findAllHitsCompatibleWithCluster()
Definition at line 572 of file PixelPrepDataToxAOD.cxx.
576 ATH_MSG_VERBOSE(
"Got " << sihits->size() <<
" SiHits to look through" );
577 std::vector<SiHit> matchingHits;
584 std::vector<const SiHit* > multiMatchingHits;
586 for (
const SiHit* siHit : *sihits) {
592 HepGeom::Point3D<double> averagePosition = siHit->localStartPosition() + siHit->localEndPosition();
593 averagePosition *= 0.5;
597 for(
const auto &hitIdentifier : prd->
rdoList() ){
603 multiMatchingHits.push_back(siHit);
611 for (
const auto& barcodeSDOColl : trkBCs ) {
612 if (
std::find(barcodeSDOColl.begin(),barcodeSDOColl.end(),bc) == barcodeSDOColl.end() )
continue;
613 multiMatchingHits.push_back(siHit);
621 ATH_MSG_DEBUG(
"Found " << multiMatchingHits.size() <<
" SiHit " );
622 for ( ; siHitIter != multiMatchingHits.end(); ++siHitIter) {
623 const SiHit* lowestXPos = *siHitIter;
624 const SiHit* highestXPos = *siHitIter;
628 std::vector<const SiHit* > ajoiningHits;
629 ajoiningHits.push_back( *siHitIter );
631 siHitIter2 = siHitIter+1;
632 while ( siHitIter2 != multiMatchingHits.end() ) {
641 if (std::abs((highestXPos->
localEndPosition().x()-(*siHitIter2)->localStartPosition().x()))<0.00005 &&
642 std::abs((highestXPos->
localEndPosition().y()-(*siHitIter2)->localStartPosition().y()))<0.00005 &&
643 std::abs((highestXPos->
localEndPosition().z()-(*siHitIter2)->localStartPosition().z()))<0.00005 )
645 highestXPos = *siHitIter2;
646 ajoiningHits.push_back( *siHitIter2 );
649 siHitIter2 = multiMatchingHits.erase( siHitIter2 );
650 }
else if (std::abs((lowestXPos->
localStartPosition().x()-(*siHitIter2)->localEndPosition().x()))<0.00005 &&
651 std::abs((lowestXPos->
localStartPosition().y()-(*siHitIter2)->localEndPosition().y()))<0.00005 &&
652 std::abs((lowestXPos->
localStartPosition().z()-(*siHitIter2)->localEndPosition().z()))<0.00005)
654 lowestXPos = *siHitIter2;
655 ajoiningHits.push_back( *siHitIter2 );
658 siHitIter2 = multiMatchingHits.erase( siHitIter2 );
664 if( ajoiningHits.size() == 0){
667 }
else if(ajoiningHits.size() == 1){
669 matchingHits.push_back( *ajoiningHits[0] );
673 ATH_MSG_DEBUG(
"Merging " << ajoiningHits.size() <<
" SiHits together." );
678 for(
const auto& siHit : ajoiningHits){
679 energyDep += siHit->energyLoss();
680 time += siHit->meanTime();
690 (*siHitIter)->getBarrelEndcap(),
691 (*siHitIter)->getLayerDisk(),
692 (*siHitIter)->getEtaModule(),
693 (*siHitIter)->getPhiModule(),
694 (*siHitIter)->getSide() );
695 ATH_MSG_DEBUG(
"Finished Merging " << ajoiningHits.size() <<
" SiHits together." );
◆ getCellIdWeightedPosition()
Definition at line 1173 of file PixelPrepDataToxAOD.cxx.
1188 ATH_MSG_WARNING(
"PixelModuleDesign was not retrieved in function 'getCellIdWeightedPosition'");
1191 const std::vector<Identifier>& rdos =
pixelCluster->rdoList();
1194 const std::vector<float>& chList =
pixelCluster->chargeList();
1197 std::vector<Identifier>::const_iterator rdosBegin = rdos.begin();
1198 std::vector<Identifier>::const_iterator rdosEnd = rdos.end();
1200 auto charge = chList.begin();
1203 double sumOfCharge=0;
1205 int phiPixelIndexMin = 99999;
1206 int phiPixelIndexMax = -99999;
1207 int etaPixelIndexMin = 99999;
1208 int etaPixelIndexMax = -99999;
1210 for (; rdosBegin!= rdosEnd; ++rdosBegin, ++
charge)
1217 ATH_MSG_VERBOSE(
" Adding pixel phiPixelIndex: " << phiPixelIndex <<
" etaPixelIndex: " << etaPixelIndex <<
" charge: " << *
charge );
1233 ATH_MSG_VERBOSE (
"Local Position: Row = " << siLocalPosition.xRow() <<
", Col = " << siLocalPosition.xColumn() );
1235 sumOfWeightedPositions += (*charge)*siLocalPosition;
1236 sumOfCharge += (*charge);
1238 if (phiPixelIndex < phiPixelIndexMin)
1239 phiPixelIndexMin = phiPixelIndex;
1241 if (phiPixelIndex > phiPixelIndexMax)
1242 phiPixelIndexMax = phiPixelIndex;
1244 if (etaPixelIndex < etaPixelIndexMin)
1245 etaPixelIndexMin = etaPixelIndex;
1247 if (etaPixelIndex > etaPixelIndexMax)
1248 etaPixelIndexMax = etaPixelIndex;
1251 sumOfWeightedPositions /= sumOfCharge;
1253 ATH_MSG_VERBOSE (
"Wighted position: Row = " << sumOfWeightedPositions.xRow() <<
", Col = " << sumOfWeightedPositions.xColumn() );
1255 if(rphiPixelIndexMin) *rphiPixelIndexMin = phiPixelIndexMin;
1256 if(rphiPixelIndexMax) *rphiPixelIndexMax = phiPixelIndexMax;
1257 if(retaPixelIndexMin) *retaPixelIndexMin = etaPixelIndexMin;
1258 if(retaPixelIndexMax) *retaPixelIndexMax = etaPixelIndexMax;
1263 InDetDD::SiCellId cellIdWeightedPosition=design->cellIdOfPosition(sumOfWeightedPositions);
1266 return cellIdWeightedPosition;
◆ initialize()
StatusCode PixelPrepDataToxAOD::initialize |
( |
| ) |
|
|
virtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_chargeDataKey
◆ m_clustercontainer_key
◆ m_clusterSplitProbContainer
◆ m_condDCSStateKey
◆ m_condDCSStatusKey
◆ m_detStore
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_firstEventWarnings
bool PixelPrepDataToxAOD::m_firstEventWarnings |
|
private |
◆ m_haveTruthLink
std::atomic<unsigned int> PixelPrepDataToxAOD::m_haveTruthLink {} |
|
mutableprivate |
◆ m_lorentzAngleTool
◆ m_missingParentParticle
std::atomic<unsigned int> PixelPrepDataToxAOD::m_missingParentParticle {} |
|
mutableprivate |
◆ m_missingTruthParticle
std::atomic<unsigned int> PixelPrepDataToxAOD::m_missingTruthParticle {} |
|
mutableprivate |
◆ m_multiTruth_key
◆ m_need_sihits
bool PixelPrepDataToxAOD::m_need_sihits |
|
private |
◆ m_PixelHelper
◆ m_pixelReadout
◆ m_pixelSummary
◆ m_readKeyHV
◆ m_readKeyTemp
◆ m_SDOcontainer_key
◆ m_sihitContainer_key
◆ m_truthParticleLinks
◆ m_useSiHitsGeometryMatching
bool PixelPrepDataToxAOD::m_useSiHitsGeometryMatching |
|
private |
◆ m_useTruthInfo
bool PixelPrepDataToxAOD::m_useTruthInfo |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_write_offsets
◆ m_write_xaod_key
◆ m_writeExtendedPRDinformation
bool PixelPrepDataToxAOD::m_writeExtendedPRDinformation |
|
private |
◆ m_writeNNinformation
bool PixelPrepDataToxAOD::m_writeNNinformation |
|
private |
◆ m_writeRDOinformation
bool PixelPrepDataToxAOD::m_writeRDOinformation |
|
private |
◆ m_writeSDOs
bool PixelPrepDataToxAOD::m_writeSDOs |
|
private |
◆ m_writeSiHits
bool PixelPrepDataToxAOD::m_writeSiHits |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
#define AUXDATA(OBJ, TYP, NAME)
PixelChargeCalib::LegacyFitParameters getLegacyFitParameters(InDetDD::PixelDiodeType type, unsigned int moduleHash, unsigned int FE) const
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
int phi_index(const Identifier &id) const
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.
HepGeom::Point3D< double > localEndPosition() const
Scalar phi() const
phi method
SG::ReadHandleKey< InDetSimDataCollection > m_SDOcontainer_key
std::string find(const std::string &s)
return a remapped string
void addSiHitInformation(xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *prd, const std::vector< SiHit > &matchingHits) const
Helper class to provide type-safe access to aux data.
bool m_firstEventWarnings
bool isFake(int matchInfo)
std::vector< std::vector< int > > addSDOInformation(xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *prd, const InDetSimDataCollection &sdoCollection) const
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Eigen::Matrix< double, 2, 1 > Vector2D
SG::ReadHandleKey< InDet::PixelClusterContainer > m_clustercontainer_key
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
TrackMeasurementValidation_v1 TrackMeasurementValidation
Reference the current persistent version:
A PRD is mapped onto all contributing particles.
std::atomic< unsigned int > m_missingTruthParticle
Scalar theta() const
theta method
const Amg::Vector3D & etaAxis() const
const PixelID * m_PixelHelper
constexpr int INVALID_PARTICLE_ID
bool isValid() const
Test if its in a valid state.
SG::ReadCondHandleKey< PixelDCSStatusData > m_condDCSStatusKey
std::vector< SiHit > findAllHitsCompatibleWithCluster(const InDet::PixelCluster *prd, const std::vector< const SiHit * > *sihits, std::vector< std::vector< int > > &trkBCs) const
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
value_type get_compact() const
Get the compact id.
ToolHandle< IInDetConditionsTool > m_pixelSummary
int phiIndex() const
Get phi index. Equivalent to strip().
void setRdoIdentifierList(const std::vector< uint64_t > &rdoIdentifierList)
Sets the list of RDO identifiers.
bool isSplit(int matchInfo)
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
bool is_valid() const
Check if id is in a valid state.
bool is_same_particle(const T1 &p1, const T2 &p2)
Method to establish if two particles in the GenEvent actually represent the same particle.
InDetDD::SiCellId getCellIdWeightedPosition(const InDet::PixelCluster *pixelCluster, int *rrowMin=0, int *rrowMax=0, int *rcolMin=0, int *rcolMax=0) const
@ u
Enums for curvilinear frames.
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
SG::ReadCondHandleKey< PixelChargeCalibCondData > m_chargeDataKey
SiLocalPosition positionFromColumnRow(const int column, const int row) const
Given row and column index of a diode, return position of diode center ALTERNATIVE/PREFERED way is to...
double xPhi() const
position along phi direction:
bool m_writeExtendedPRDinformation
HepMC::ConstGenParticlePtr cptr() const
Dereference.
Class describing a TrackMeasurementValidation.
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
a link optimized in size for a GenParticle in a McEventCollection
void addNNTruthInfo(xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *prd, const std::vector< SiHit > &matchingHits) const
virtual SiCellId cellIdFromIdentifier(const Identifier &identifier) const override final
SiCellId from Identifier.
int etaIndex() const
Get eta index.
void addRdoInformation(xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *pixelCluster, const PixelChargeCalibCondData *calibData) const
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
SG::ReadHandleKey< SiHitCollection > m_sihitContainer_key
virtual StatusCode sysInitialize() override
Override sysInitialize.
@ distEta
readout for silicon
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
void setLocalPosition(float localX, float localY)
Sets the local position.
def barcodes(beg, end, sz)
double xEta() const
position along eta direction:
bool m_writeRDOinformation
::StatusCode StatusCode
StatusCode definition for legacy code.
SG::WriteHandleKey< xAOD::TrackMeasurementValidationContainer > m_write_xaod_key
double angle(const GeoTrf::Vector2D &a, const GeoTrf::Vector2D &b)
Class describing a truth particle in the MC record.
int eta_index(const Identifier &id) const
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
SG::ReadCondHandleKey< PixelDCSStateData > m_condDCSStateKey
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
void setIdentifier(uint64_t identifier)
Sets the identifier.
bool isValid() const
Validity check.
size_t index() const
Return the index of this element within its container.
SG::ReadHandleKey< xAODTruthParticleLinkVector > m_truthParticleLinks
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
virtual const InDetDD::SiDetectorElement * detectorElement() const override final
return the detector element corresponding to this PRD The pointer will be zero if the det el is not d...
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Amg::Vector2D hitLocalToLocal(double xEta, double xPhi) const
Simulation/Hit local frame to reconstruction local frame.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
int layer_disk(const Identifier &id) const
int eta_module(const Identifier &id) const
void setGlobalPosition(float globalX, float globalY, float globalZ)
Sets the global position.
SG::ReadCondHandleKey< PixelDCSHVData > m_readKeyHV
PixelClusterContainer_v1 PixelClusterContainer
Define the version of the pixel cluster container.
void setLocalPositionError(float localXError, float localYError, float localXYCorrelation)
Sets the local position error.
double charge(const T &p)
StatusCode initialize(bool used=true)
size_type wafer_hash_max(void) const
SG::ReadHandleKey< PRD_MultiTruthCollection > m_multiTruth_key
Eigen::Matrix< double, 3, 1 > Vector3D
std::size_t numberOfSiHits(const xAOD::TrackParticle *tp)
return the number of Si hits in the track particle
bool m_writeNNinformation
SG::WriteHandleKey< std::vector< unsigned int > > m_write_offsets
DataObjIDColl m_extendedExtraObjects
def time(flags, cells_name, *args, **kw)
#define ATH_MSG_WARNING(x)
bool m_useSiHitsGeometryMatching
HepGeom::Point3D< double > globalPosition(const HepGeom::Point3D< double > &localPos) const
transform a reconstruction local position into a global position (inline):
const Amg::Vector3D & phiAxis() const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
const Amg::Vector2D & colRow() const
const SiLocalPosition & width() const
width of the diodes:
AthAlgorithm()
Default constructor:
float splitProbability1() const
const ProbabilityInfo & splitProbability(const PrepRawData *cluster) const
SG::ReadCondHandleKey< PixelDCSTempData > m_readKeyTemp
void addNNInformation(xAOD::TrackMeasurementValidation *xprd, const InDet::PixelCluster *pixelCluster, const unsigned int SizeX, const unsigned int SizeY) const
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
ServiceHandle< InDetDD::IPixelReadoutManager > m_pixelReadout
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
int phi_module(const Identifier &id) const
static const ProbabilityInfo & getNoSplitProbability()
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual Identifier identify() const override final
identifier of this detector element (inline)
float splitProbability2() const
Vertex centroid(const Polygon &p)
HepGeom::Point3D< double > localStartPosition() const
std::atomic< unsigned int > m_missingParentParticle
std::atomic< unsigned int > m_haveTruthLink