57operator<<(MsgStream& msg_stream,
const std::map<std::string, T>& elm_map)
59 for (
const std::pair<const std::string, T>& elm : elm_map) {
60 msg_stream <<
" " << elm.first;
67operator<<(MsgStream& msg_stream,
const std::vector<std::string>& elm_vector)
69 for (
const std::string& elm : elm_vector) {
70 msg_stream <<
" " << elm;
80createEProbabilityMap(std::map<std::string, std::pair<Trk::eProbabilityType, bool>>& eprob_map)
90 eprob_map.insert(std::make_pair(
"eProbabilityHT", std::make_pair(
Trk::eProbabilityHT,
false)));
95 eprob_map.insert(std::make_pair(
"eProbabilityNN", std::make_pair(
Trk::eProbabilityNN,
true)));
96 eprob_map.insert(std::make_pair(
"TRTdEdx", std::make_pair(
Trk::TRTdEdx,
true)));
101createExtraSummaryTypeMap(std::map<std::string, Trk::SummaryType>& extra_summary_type_map)
111 const std::string& n,
113 : base_class(t, n, p)
133 ATH_MSG_ERROR(
"Unknown Configuration for Perigee Expression - please use one of "
135 return StatusCode::FAILURE;
142 return StatusCode::FAILURE;
149 if (detStore()->retrieve(
m_detID,
"AtlasID").isFailure()) {
151 return StatusCode::FAILURE;
154 if (detStore()->retrieve(
m_pixelID,
"PixelID").isFailure()) {
156 return StatusCode::FAILURE;
159 if (detStore()->retrieve(
m_sctID,
"SCT_ID").isFailure()) {
161 return StatusCode::FAILURE;
165 if (detStore()->retrieve(
m_trtID,
"TRT_ID").isFailure()) {
167 return StatusCode::FAILURE;
174 return StatusCode::FAILURE;
181 ATH_MSG_WARNING(
"Assuming hybrid 2D/3D IBL module composition, but geometry is all-planar");
187 return StatusCode::FAILURE;
195 return StatusCode::FAILURE;
206 StatusCode
sc(StatusCode::SUCCESS);
212 std::map<std::string, std::pair<Trk::eProbabilityType, bool>> eprob_map;
213 std::map<std::string, Trk::SummaryType> extra_summary_type_map;
214 createEProbabilityMap(eprob_map);
215 createExtraSummaryTypeMap(extra_summary_type_map);
217 std::vector<std::string> errors;
219 std::map<std::string, std::pair<Trk::eProbabilityType, bool>>
::const_iterator eprob_iter =
220 eprob_map.find(eprob_to_copy);
221 if (eprob_iter == eprob_map.end()) {
222 std::map<std::string, Trk::SummaryType>::const_iterator extra_summary_type_iter =
223 extra_summary_type_map.find(eprob_to_copy);
224 if (extra_summary_type_iter == extra_summary_type_map.end()) {
225 errors.push_back(eprob_to_copy);
228 SG::AuxElement::Accessor<uint8_t>(extra_summary_type_iter->first),
229 extra_summary_type_iter->second);
232 if (!eprob_iter->second.second) {
236 eprob_iter->second.first);
241 if (!errors.empty()) {
242 ATH_MSG_ERROR(
"Error in configuration. Unknown electron probability name: "
243 << errors <<
". known are " << eprob_map <<
" " << extra_summary_type_map);
244 sc = StatusCode::FAILURE;
271 aPer = track.perigeeParameters();
280 if (result !=
nullptr) {
282 parsToBeDeleted = result;
284 ATH_MSG_WARNING(
"Could not extrapolate to 0,0,0. No TrackParticle created.");
292 ATH_MSG_WARNING(
"Failed to extrapolate to first Beamspot - No TrackParticle created.");
295 parsToBeDeleted = result;
300 if (vxCandidate !=
nullptr) {
302 if (result !=
nullptr) {
303 parsToBeDeleted = result;
306 ATH_MSG_WARNING(
"Could not extrapolate track to vertex region! No TrackParticle created.");
310 ATH_MSG_WARNING(
"Perigee expression at Vertex, but no vertex found! No TrackParticle created.");
316 ATH_MSG_WARNING(
"Failed to extrapolate to Beamline - No TrackParticle created.");
319 parsToBeDeleted = result;
326 std::unique_ptr<Trk::TrackSummary> updated_summary;
331 summary = updated_summary.get();
335 "No proper TrackSummaryTool found. Creating TrackParticle with a TrackSummary on track");
338 ATH_MSG_WARNING(
"Track particle created for a track without a track summary");
344 std::vector<const Trk::TrackParameters*> parameters;
345 std::vector<xAOD::ParameterPosition> parameterPositions;
349 int nbc_meas_A1_or_B3 = 0;
350 int nbc_meas_A1_or_B3_or_C = 0;
363 tsos->measurementOnTrack() !=
nullptr &&
365 tp = tsos->trackParameters();
370 ATH_MSG_DEBUG(
"Failed dynamic_cast to InDet::SiClusterOnTrack ");
390 ATH_MSG_DEBUG(
"Pixel cluster null though detector element matches pixel");
397 float cotthetaz = -1;
403 float PixTrkAngle = -1000;
404 float PixTrkThetaI = -1000;
412 float trketacomp = my_track.dot(my_etaax);
414 float trkphicomp = my_track.dot(my_phiax);
416 float trknormcomp = my_track.dot(my_normal);
418 PixTrkAngle = std::atan2(trkphicomp, trknormcomp);
419 PixTrkThetaI = std::atan2(trketacomp, trknormcomp);
420 float length = std::sqrt(trketacomp * trketacomp + trkphicomp * trkphicomp + trknormcomp * trknormcomp);
422 cotthetaz = 1. / std::tan(PixTrkThetaI);
426 if (PixTrkThetaI > M_PI_2)
427 PixTrkThetaI -=
M_PI;
428 else if (PixTrkThetaI < -M_PI_2)
429 PixTrkThetaI +=
M_PI;
430 PixTrkThetaI = M_PI_2 - PixTrkThetaI;
431 if (PixTrkAngle > M_PI_2)
433 else if (PixTrkAngle < -M_PI_2)
435 PixTrkAngle = M_PI_2 - PixTrkAngle;
442 if (
m_detID->is_pixel(surfaceID)) {
444 zWidth =
static_cast<int>(
width.colRow().
y());
447 int isIBLclus =
false;
455 if ((
size == 1 && tot < 8) || (
size == 2 && tot < 15)) {
464 if (isBC_A1 || isBC_B3) {
467 if ((zWidth == 1 && cotthetaz > 5.8) || (zWidth == 2 && cotthetaz > 5.8) ||
468 (zWidth == 3 && cotthetaz > 6.2) || (zWidth > 3 && cotthetaz < 2.5)) {
471 if (isBC_A1 || isBC_B3 || isBC_C) {
472 nbc_meas_A1_or_B3_or_C++;
484 tsos->measurementOnTrack() !=
nullptr &&
486 first = tsos->trackParameters();
487 parameters.push_back(tsos->trackParameters());
496 rItTSoS != trackStates->rend();
499 (*rItTSoS)->trackParameters() !=
nullptr && (*rItTSoS)->measurementOnTrack() !=
nullptr &&
500 !((*rItTSoS)->measurementOnTrack()->type(
502 if (!(first == (*rItTSoS)->trackParameters())) {
503 parameters.push_back((*rItTSoS)->trackParameters());
512 if (parameters.size() > 2)
513 ATH_MSG_WARNING(
"More than two additional track parameters to be stored in TrackParticle!");
521 bool haveFirstMeasurementParameters =
false;
523 if (!tsos->trackParameters())
529 haveFirstMeasurementParameters =
true;
530 parameters.push_back(tsos->trackParameters());
532 << tsos->trackParameters()->position().perp() <<
", Z "
533 << tsos->trackParameters()->position().z());
543 aPer =
static_cast<const Perigee*
>(tsos->trackParameters());
545 parameters.push_back(tsos->trackParameters());
548 ATH_MSG_VERBOSE(
" including perigee at R " << tsos->trackParameters()->position().perp() <<
", Z "
549 << tsos->trackParameters()->position().z());
552 if (!parameters.empty())
553 haveFirstMeasurementParameters =
true;
568 static const SG::AuxElement::Accessor<int> nbCmeas(
"nBC_meas");
571 nbCmeas(*trackparticle) = nbc_meas_A1;
575 nbCmeas(*trackparticle) = nbc_meas_B3;
579 nbCmeas(*trackparticle) = nbc_meas_A1_or_B3;
583 nbCmeas(*trackparticle) = nbc_meas_A1_or_B3_or_C;
590 delete parsToBeDeleted;
591 return trackparticle;
602 std::vector<xAOD::ParameterPosition> positions;
603 bool firstMeasurement =
false;
607 firstMeasurement =
true;
609 }
else if (firstMeasurement &&
parameter && !
parameter->associatedSurface().isFree()) {
622 &trackParticle.
info(),
630 if (!trackparticle) {
631 ATH_MSG_WARNING(
"WARNING: Problem creating TrackParticle - Returning 0");
638 compare(trackParticle, *trackparticle);
640 return trackparticle;
652 createParticle(ctx, **trackLink, container, vxCandidate, prtOrigin);
654 if (!trackparticle) {
655 ATH_MSG_WARNING(
"WARNING: Problem creating TrackParticle - Returning 0");
661 return trackparticle;
665 const EventContext& ctx,
670 const std::vector<const Trk::TrackParameters*>& parameters,
671 const std::vector<xAOD::ParameterPosition>& positions,
674 return createParticle(ctx,perigee, fq,
trackInfo, summary, parameters, positions, prtOrigin, container,
nullptr);
683 const std::vector<const Trk::TrackParameters*>& parameters,
684 const std::vector<xAOD::ParameterPosition>& positions,
691 if (!trackparticle) {
692 ATH_MSG_WARNING(
"WARNING: Problem creating TrackParticle - Returning 0");
703 container->push_back(trackparticle);
705 trackparticle->makePrivateStore();
733 setTilt(*trackparticle, beamspot->beamTilt(0), beamspot->beamTilt(1));
739 ATH_MSG_WARNING(
"Track without perigee parameters? Not setting any defining parameters!");
743 return trackparticle;
754 if ((tp1.covariance() && !tp2.covariance()) || (!tp1.covariance() && tp2.covariance())) {
755 ATH_MSG_WARNING(
"Bad Covariance conversion " << tp1.covariance() <<
" --- " << tp2.covariance());
756 }
else if (tp1.covariance() && tp2.covariance()) {
757 std::pair<int, int>
indices =
Amg::compare(*tp1.covariance(), *tp2.covariance(), 1e-6,
true);
782 const std::vector<const Trk::TrackParameters*>& parameters,
783 const std::vector<xAOD::ParameterPosition>& positions)
const
785 std::vector<std::vector<float>> parametersVec;
786 parametersVec.resize(parameters.size());
787 unsigned int numParam = 0;
794 for (
const auto* param : parameters) {
795 std::vector<float>& values = parametersVec[numParam];
810 covarianceMatrix.setIdentity();
812 if (param->covariance()) {
818 magnFieldVect.setZero();
819 fieldCache.
getField(pos.data(), magnFieldVect.data());
820 const Amg::Transform3D& localToGlobalTransform = param->associatedSurface().transform();
822 JacobianLocalToCurvilinear jacobian(magnFieldVect,
826 localToGlobalTransform.rotation().col(0),
827 localToGlobalTransform.rotation().col(1));
829 covarianceMatrix = param->covariance()->similarity(jacobian);
833 JacobianLocalToCurvilinear jacobian(curvilinearUVT, loc_x, loc_y);
834 covarianceMatrix = param->covariance()->similarity(jacobian);
837 std::vector<float> covMatrixVec;
846 for (; i < positions.size(); ++i) {
853 parameters[i]->associatedSurface().associatedDetectorElementIdentifier().get_compact());
889 static_assert(xAodReferenceEnum1 == TrkReferenceEnum1,
"Trk and xAOD enums differ in their indices");
892 static_assert(xAodReferenceEnum2 == TrkReferenceEnum2,
"Trk and xAOD enums differ in their indices");
917 uint8_t uvalue =
static_cast<uint8_t
>(std::min(value,255));
929 ATH_MSG_DEBUG(
"# of prec layers: " <<
static_cast<unsigned int>(numberOfPrecisionLayers));
931 uint8_t numberOfPhiLayers = msSummary.
nphiLayers;
951 constexpr int initialValue{-1};
952 std::vector<float> eProbability_tmp;
953 const std::vector<float>& eProbability(
962 float eProbability_value = eProbability.at(copy);
967 float fvalue = eProbability.at(decoration.second);
968 decoration.first(tp) = fvalue;
971 for (
const std::pair<SG::AuxElement::Accessor<uint8_t>,
Trk::SummaryType>& decoration :
973 uint8_t summary_value =
nHits;
974 decoration.first(tp) = summary_value;
981 const int initialValue{-1};
982 float dedx = initialValue;
983 int nHitsUsed_dEdx = initialValue;
984 int nOverflowHits_dEdx = initialValue;
986 dedx =
m_dedxtool->dEdx(ctx, *track, nHitsUsed_dEdx, nOverflowHits_dEdx);
1003 if(mesb==
nullptr)
continue;
1009 if(rot==
nullptr)
continue;
1029 uint8_t nContribPixelBarrelLayers =
static_cast<uint8_t
>(nContribPixelBarrelFlatLayers+nContribPixelBarrelInclinedLayers);
1034 uint8_t nPixelBarrelHits =
static_cast<uint8_t
>(nPixelBarrelFlatHits+nPixelBarrelInclinedHits);
1063 uint8_t
zero =
static_cast<uint8_t
>(0);
1064 uint8_t nContribPixLayers, nInPixHits, nNextInPixHits;
1066 nContribPixLayers =
zero;
1068 if(nContribPixLayers==0){
1069 ATH_MSG_DEBUG(
"No pixels on track, so wo do not expect hit in inner layers");
1081 ATH_MSG_DEBUG(
"Innermost pixel Layer hit on track, so we expect an innermost pixel layer hit");
1082 uint8_t
one =
static_cast<uint8_t
>(1);
1085 uint8_t expectHit =
static_cast<uint8_t
>(
m_testPixelLayerTool->expectHitInInnermostPixelLayer(perigee));
1091 nNextInPixHits =
zero;
1093 if(nNextInPixHits>0){
1094 ATH_MSG_DEBUG(
"Next-to-innermost pixel Layer hit on track, so we expect an next-to-innermost pixel layer hit");
1095 uint8_t
one =
static_cast<uint8_t
>(1);
1098 uint8_t expectHit =
static_cast<uint8_t
>(
m_testPixelLayerTool->expectHitInNextToInnermostPixelLayer(perigee));
1110 uint8_t nPixOutliers = 0, nInPixOutliers = 0, nNInPixOutliers = 0, nSCTOutliers = 0;
1111 uint8_t nInEndcapPixOutliers = 0, nNInEndcapPixOutliers = 0;
1116 if(!isOutlier)
continue;
1119 if(mesb==
nullptr)
continue;
1137 else if (layer == 1){
1142 nInEndcapPixOutliers++;
1144 else if (layer == 1 || layer == 2){
1145 nNInEndcapPixOutliers++;
1149 else if (
m_sctID->is_sct(
id)) {
1173 uint8_t nPixSharedHits = 0, nInPixSharedHits = 0, nNInPixSharedHits = 0, nSCTSharedHits = 0, nTRTSharedHits = 0;
1174 uint8_t nInPixSharedEndcapHits = 0, nNInPixSharedEndcapHits = 0;
1175 uint8_t nPixSplitHits = 0, nInPixSplitHits = 0, nNInPixSplitHits = 0;
1176 uint8_t nInPixSplitEndcapHits = 0, nNInPixSplitEndcapHits = 0;
1184 const EventContext& ctx = Gaudi::Hive::currentContext();
1187 for (
const auto*
const ms : *measurements) {
1202 bool hitIsSplit(
false);
1213 if (pixPrd and splitProb.
isSplit()) {
1220 else if (layer == 1)
1224 nInPixSplitEndcapHits++;
1225 else if (layer == 1 || layer == 2)
1226 nNInPixSplitEndcapHits++;
1235 if (prd_to_track_map->isShared(*(rot->
prepRawData()))) {
1242 else if (layer == 1)
1243 nNInPixSharedHits++;
1246 nInPixSharedEndcapHits++;
1247 else if (layer == 1 || layer == 2)
1248 nNInPixSharedEndcapHits++;
1256 if (prd_to_track_map->isShared(*(rot->
prepRawData()))) {
1263 if (prd_to_track_map->isShared(*(rot->
prepRawData()))) {
1294 uint8_t nInPixSharedEndcapHits = 0, nNInPixSharedEndcapHits = 0;
1295 uint8_t nInPixSplitEndcapHits = 0, nNInPixSplitEndcapHits = 0;
1308 const EventContext& ctx = Gaudi::Hive::currentContext();
1313 if (!splitProbContainer.
isValid()) {
1314 ATH_MSG_FATAL(
"Failed to get cluster splitting probability container "
1317 return splitProbContainer->splitProbability(
pix);
1325 return beamSpotHandle.
cptr();
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
double charge(const T &p)
An STL vector of pointers that by default owns its pointed-to elements.
#define AmgSymMatrix(dim)
c *Fortran *integer maxpup parameter(maxpup=100) integer idbmup
static const uint32_t nHits
size_t size() const
Number of registered mappings.
MsgStream & operator<<(MsgStream &msg_stream, const std::map< std::string, T > &elm_map)
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
std::reverse_iterator< const_iterator > const_reverse_iterator
ElementLink implementation for ROOT usage.
virtual DetectorType type() const
Type of element.
Class to hold geometrical description of a silicon detector element.
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
const Amg::Vector3D & etaAxis() const
virtual const Amg::Vector3D & normal() const override final
Get reconstruction local normal axes in global frame.
const Amg::Vector3D & phiAxis() const
Specific class to represent the pixel measurements.
RIO_OnTrack base class for Silicon detector in the InnerDetector.
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...
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h).
bool solenoidOn() const
status of the magnets
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
const Trk::Perigee * measuredPerigee() const
Accessor method for Perigee.
const_pointer_type cptr()
virtual bool isValid() override final
Can the handle be successfully dereferenced?
static const ProbabilityInfo & getNoSplitProbability()
simple class that constructs the curvilinear vectors curvU and curvV from a given momentum direction ...
int getContributionFromRegion(Trk::DetectorRegion region)
int getPixelContributions()
int getHits(Trk::DetectorRegion region, int layer)
void addHit(Trk::DetectorRegion region, int layer, int etaModule, int hit=1)
This class containes the detailed information on the contributing layers and regions to the hit count...
int getHitsFromRegion(Trk::DetectorRegion region)
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
@ MuonSpectrometerExitLayer
Tracking Volume which defines the outer surfaces of the MS.
@ CalorimeterEntryLayer
Tracking Volume which defines the entrance srufaces of the calorimeter.
@ MuonSpectrometerEntryLayer
Tracking Volume which defines the entrance surfaces of the MS.
This class is the pure abstract base class for all fittable tracking measurements.
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
virtual bool type(MeasurementBaseType::Type type) const =0
Interface method checking the type.
const Amg::Vector3D & momentum() const
Access method for the momentum.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
Identifier identify() const
return the identifier -extends MeasurementBase
virtual bool rioType(RIO_OnTrackType::Type type) const =0
Method checking the Rio On Track type.
const TrkDetElementBase * associatedDetectorElement() const
return associated Detector Element
Contains information about the 'fitter' of this track.
@ Unknown
Track fitter not defined.
ParticleHypothesis particleHypothesis() const
Returns the particle hypothesis used for Track fitting.
const ElementLink< TrackCollection > * trackElementLink() const
Return the ElementLink to the Track.
const FitQuality * fitQuality() const
accessor function for FitQuality.
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
const std::vector< const TrackParameters * > & trackParameters() const
Returns the track parameters.
const TrackInfo & info() const
returns the info of the track.
BooleanProperty m_updateTrackSummary
static constexpr int s_expertLevel
ServiceHandle< ITrackingVolumesSvc > m_trackingVolumesSvc
BooleanProperty m_runningTIDE_Ambi
static const SG::AuxElement::Accessor< uint8_t > s_trtdEdxUsedHitsDecoration
virtual const InDet::BeamSpotData * CacheBeamSpotData(const EventContext &ctx) const override final
void addOutlierHitInformation(const Trk::TrackStates *trackStates, xAOD::TrackParticle &tp) const
Add outlier hit info not computed in Trk::TrkSummary anymore.
TrackParticleCreatorTool(const std::string &, const std::string &, const IInterface *)
StringArrayProperty m_copyExtraSummaryName
Configurable to set the eProbabilities and extra track summary types which are to be copied from the ...
void setTrackSummary(xAOD::TrackParticle &tp, const TrackSummary &summary) const
Method to set TrackSummary of a xAOD::TrackParticle.
std::vector< std::string > m_perigeeOptions
void addPIDInformation(const EventContext &ctx, const Track *track, xAOD::TrackParticle &tp) const
Add Pixel and TRT PID information to the track particle.
ToolHandle< Muon::IMuonHitSummaryTool > m_hitSummaryTool
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
BooleanProperty m_keepParameters
the following keep options are mutually exclusive
void setTrackInfo(xAOD::TrackParticle &tp, const TrackInfo &trackInfo, xAOD::ParticleHypothesis prtOrigin) const
Method to set TrackInfo of a xAOD::TrackParticle.
virtual xAOD::TrackParticle * createParticle(const EventContext &ctx, const Rec::TrackParticle &trackParticle, xAOD::TrackParticleContainer *container) const override final
Method to construct a xAOD::TrackParticle from a Rec::TrackParticle.
static const std::string s_trtdEdxUsedHitsDecorationName
Name used for the decoration of the track particle with TRT dE/dx .
static void addDummyEndcapSharedHitInformation(xAOD::TrackParticle &tp)
Add dummy endcap shared hit info as AuxDyn variable in case nominal shared hit info not computed (for...
void addDetailedHitInformation(const Trk::TrackStates *trackStates, xAOD::TrackParticle &tp) const
Add extra detailed hit summary info not computed in Trk::TrkSummary.
BooleanProperty m_doITk
if the track contains a summary, the shared, expected hit, and PID information will be recomputed.
static void setHitPattern(xAOD::TrackParticle &tp, unsigned long hitpattern)
ServiceHandle< IIBLParameterSvc > m_IBLParameterSvc
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
BooleanProperty m_computeAdditionalInfo
static void setNumberOfOverflowHits(xAOD::TrackParticle &tp, int overflows)
BooleanProperty m_doSharedSiHits
BooleanProperty m_keepFirstParameters
void addSharedHitInformation(const Track *track, xAOD::TrackParticle &tp) const
Add shared hit info not computed in Trk::TrkSummary anymore.
SG::ReadHandleKey< Trk::ClusterSplitProbabilityContainer > m_clusterSplitProbContainer
std::vector< Trk::eProbabilityType > m_copyEProbabilities
Enums of an eProbability which are set in the xAOD::TrackSummary.
void addExpectedHitInformation(const Perigee *perigee, xAOD::TrackParticle &tp) const
Add expected hit info for innermost pixel layers not computed in Trk::TrkSummary.
PublicToolHandle< IExtendedTrackSummaryTool > m_trackSummaryTool
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_assoMapContainer
static void setTilt(xAOD::TrackParticle &tp, float tiltx, float tilty)
const Trk::ClusterSplitProbabilityContainer::ProbabilityInfo & getClusterSplittingProbability(const InDet::PixelCluster *pix) const
static const std::string & trtdEdxUsedHitsAuxName()
Get the name used for the decoration of the track particle with the number of used hits for TRT dE/dx...
StringProperty m_perigeeExpression
ToolHandle< InDet::IInDetTestPixelLayerTool > m_testPixelLayerTool
tool to calculate expected hit information in innermost layers
Gaudi::Property< int > m_itkDecorationLevel
void setParameters(const EventContext &ctx, xAOD::TrackParticle &tp, const std::vector< const Trk::TrackParameters * > ¶meters, const std::vector< xAOD::ParameterPosition > &positions) const
Method to set parameters of a xAOD::TrackParticle.
void setDefiningParameters(xAOD::TrackParticle &tp, const Perigee &perigee) const
Method to set Defining parameters of a xAOD::TrackParticle.
const AtlasDetectorID * m_detID
atlas id helper
const PixelID * m_pixelID
virtual StatusCode initialize() override
BooleanProperty m_keepAllPerigee
keep all MeasuredPerigee parameters (e.g.
void compare(const Rec::TrackParticle &tp, const xAOD::TrackParticle &tpx) const
ToolHandle< ITRT_ElectronPidTool > m_eProbabilityTool
tool to calculate electron probabilities
static void setNumberOfUsedHits(xAOD::TrackParticle &tp, int hits)
IntegerProperty m_badclusterID
ToolHandle< Reco::ITrackToVertex > m_trackToVertex
std::vector< std::pair< SG::AuxElement::Accessor< float >, Trk::eProbabilityType > > m_decorateEProbabilities
The pairs if enums of an eProbability which is added as a decoration to the track particle and the na...
void setFitQuality(xAOD::TrackParticle &tp, const FitQuality &fq) const
Method to set FitQuality of a xAOD::TrackParticle.
std::vector< std::pair< SG::AuxElement::Accessor< uint8_t >, Trk::SummaryType > > m_decorateSummaryTypes
ToolHandle< IPixelToTPIDTool > m_dedxtool
tool to calculate dE/dx using pixel clusters
BooleanProperty m_doSharedTRTHits
BooleanProperty m_checkConversion
represents the track state (measurement, material, fit parameters and quality) at a surface.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
A summary of the information contained by a track.
virtual Identifier identify() const =0
Identifier.
void setTrackParameterCovarianceMatrix(unsigned int index, std::vector< float > &cov)
Set the cov matrix of the parameter at 'index', using a vector of floats.
void setTrackParameters(std::vector< std::vector< float > > ¶meters)
Set the parameters via the passed vector of vectors.
void setBeamlineTiltX(float tiltX)
void setNumberOfIBLOverflowsdEdx(uint8_t numoverflows)
void setTrackLink(const ElementLink< TrackCollection > &track)
Set the link to the original track.
void setIdentifierOfFirstHit(uint64_t id)
Set the offline identifier of the first hit.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
void setRadiusOfFirstHit(float radius)
Set the radius of the first hit.
void setParameterPosition(unsigned int index, ParameterPosition pos)
Set the 'position' (i.e. where it is in ATLAS) of the parameter at 'index', using the ParameterPositi...
float parameterX(unsigned int index) const
Returns the parameter x position, for 'index'.
void setBeamlineTiltY(float tiltY)
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
void setNumberOfUsedHitsdEdx(uint8_t numhits)
size_t numberOfParameters() const
Returns the number of additional parameters stored in the TrackParticle.
float parameterY(unsigned int index) const
Returns the parameter y position, for 'index'.
void setSummaryValue(uint8_t &value, const SummaryType &information)
Set method for TrackSummary values.
void setHitPattern(uint32_t hitpattern)
const Amg::Vector3D & position() const
Returns the 3-pos.
void zero(TH2 *h)
zero the contents of a 2d histogram
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
void compress(const AmgSymMatrix(N) &covMatrix, std::vector< float > &vec)
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
std::pair< int, int > compare(const AmgSymMatrix(N) &m1, const AmgSymMatrix(N) &m2, double precision=1e-9, bool relative=false)
compare two matrices, returns the indices of the first element that fails the condition,...
@ PseudoMeasurementOnTrack
Ensure that the ATLAS eigen extensions are properly loaded.
static const std::vector< unsigned int > unusedSummaryTypes
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ eProbabilityBrem
Electron probability from Brem fitting (DNA).
@ TRTTrackOccupancy
TRT track occupancy.
@ eProbabilityComb
Electron probability from combining the below probabilities.
@ eProbabilityNN
Electron probability from NN.
@ numberOfeProbabilityTypes
@ eProbabilityNumberOfTRTHitsUsedFordEdx
Number of TRT hits used for dEdx measurement.
@ eProbabilityToT
Electron probability from Time-Over-Threshold (ToT) information.
@ TRTdEdx
dEdx from TRT ToT measurement.
@ eProbabilityHT
Electron probability from High Threshold (HT) information.
static const std::vector< float > eProbabilityDefault(numberOfeProbabilityTypes, 0.5)
std::pair< long int, long int > indices
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
ParametersBase< TrackParametersDim, Charged > TrackParameters
SummaryType
enumerates the different types of information stored in Summary.
@ numberOfTgcPhiHoles
number of TGC Phi measurements missing from the track
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector
@ numberOfTrackSummaryTypes
@ numberOfStgcEtaHits
number of TGC Eta measurements missing from the track
@ numberOfMmHoles
number of TGC Eta measurements missing from the track
@ numberOfTRTHitsUsedFordEdx
number of TRT high threshold outliers (only xenon counted)
@ numberOfMdtHits
number of mdt hits
@ numberOfTRTTubeHits
number of TRT hits on track in straws with xenon
@ numberOfCscUnspoiltEtaHits
number of unspoilt CSC eta measurements (all CSC phi measurements are by definition spoilt).
@ numberOfCscEtaHoles
number of CSC Eta measurements missing from the track
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
SummaryType
Enumerates the different types of information stored in Summary.
@ numberOfInnermostPixelLayerSharedEndcapHits
number of Pixel 0th layer endcap hits shared by several tracks.
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
@ numberOfInnermostPixelLayerEndcapHits
these are the hits in the 0th pixel layer endcap [unit8_t].
@ numberOfPrecisionLayers
layers with at least 3 hits [unit8_t].
@ numberOfNextToInnermostPixelLayerSharedHits
number of Pixel 1st layer barrel hits shared by several tracks.
@ numberOfNextToInnermostPixelLayerSharedEndcapHits
number of Pixel 1st layer endcap hits shared by several tracks.
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
@ numberOfNextToInnermostPixelLayerSplitHits
number of Pixel 1st layer barrel hits split by cluster splitting
@ numberOfPixelSplitHits
number of Pixel all-layer hits split by cluster splitting [unit8_t].
@ numberOfInnermostPixelLayerEndcapOutliers
number of 0th layer endcap outliers
@ numberOfPixelBarrelHits
these are the pixel hits, in the barrel flat layers [unit8_t].
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
@ numberOfTriggerEtaHoleLayers
layers with trigger eta holes but no hits [unit8_t].
@ numberOfPixelOutliers
these are the pixel outliers, including the b-layer [unit8_t].
@ numberOfContribPixelBarrelFlatLayers
number of contributing barrel flat layers of the pixel detector [unit8_t].
@ numberOfPhiHoleLayers
layers with trigger phi holes but no hits [unit8_t].
@ numberOfTRTXenonHits
number of TRT hits on track in straws with xenon [unit8_t].
@ numberOfNextToInnermostPixelLayerHits
these are the hits in the 1st pixel barrel layer
@ numberOfContribPixelBarrelInclinedLayers
number of contributing barrel inclined layers of the pixel detector [unit8_t].
@ numberOfInnermostPixelLayerSplitHits
number of Pixel 0th layer barrel hits split by cluster splitting
@ numberOfTRTTubeHits
number of TRT tube hits [unit8_t].
@ numberOfPixelEndcapHits
these are the pixel hits, in the endcap layers [unit8_t].
@ numberOfInnermostPixelLayerOutliers
number of 0th layer barrel outliers
@ numberOfTriggerEtaLayers
layers with trigger eta hits [unit8_t].
@ numberOfNextToInnermostPixelLayerSplitEndcapHits
number of Pixel 1st layer endcap hits split by cluster splitting
@ numberOfNextToInnermostPixelLayerEndcapHits
these are the hits in the 0.5th and 1st pixel layer endcap rings [unit8_t].
@ numberOfPhiLayers
layers with a trigger phi hit [unit8_t].
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
@ numberOfContribPixelEndcap
number of contributing endcap layers of the pixel detector [unit8_t].
@ numberOfNextToInnermostPixelLayerEndcapOutliers
number of 1st layer endcap disk outliers
@ numberOfPrecisionHoleLayers
layers with holes AND no hits [unit8_t].
@ numberOfPixelBarrelInclinedHits
these are the pixel hits, in the barrel inclined layers [unit8_t].
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
@ numberOfPixelBarrelFlatHits
these are the pixel hits, in the barrel flat layers [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ eProbabilityComb
Electron probability from combining the below probabilities [float].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfInnermostPixelLayerSplitEndcapHits
number of Pixel 0th layer endcap hits shared by several tracks.
@ numberOfContribPixelBarrelLayers
number of contributing barrel flat layers of the pixel detector [unit8_t].
@ numberOfTRTSharedHits
number of TRT hits used by more than one track
@ numberOfNextToInnermostPixelLayerOutliers
number of 1st pixel layer barrel outliers
@ BeamLine
Parameter defined at the Vertex/Beamline.
@ FirstMeasurement
Parameter defined at the position of the 1st measurement.
@ LastMeasurement
Parameter defined at the position of the last measurement.