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;
164 if (detStore()->retrieve(
m_trtID,
"TRT_ID").isFailure()) {
166 return StatusCode::FAILURE;
172 return StatusCode::FAILURE;
179 ATH_MSG_WARNING(
"Assuming hybrid 2D/3D IBL module composition, but geometry is all-planar");
185 return StatusCode::FAILURE;
193 return StatusCode::FAILURE;
204 StatusCode
sc(StatusCode::SUCCESS);
210 std::map<std::string, std::pair<Trk::eProbabilityType, bool>> eprob_map;
211 std::map<std::string, Trk::SummaryType> extra_summary_type_map;
212 createEProbabilityMap(eprob_map);
213 createExtraSummaryTypeMap(extra_summary_type_map);
215 std::vector<std::string> errors;
217 std::map<std::string, std::pair<Trk::eProbabilityType, bool>>
::const_iterator eprob_iter =
218 eprob_map.find(eprob_to_copy);
219 if (eprob_iter == eprob_map.end()) {
220 std::map<std::string, Trk::SummaryType>::const_iterator extra_summary_type_iter =
221 extra_summary_type_map.find(eprob_to_copy);
222 if (extra_summary_type_iter == extra_summary_type_map.end()) {
223 errors.push_back(eprob_to_copy);
227 extra_summary_type_iter->second);
230 if (!eprob_iter->second.second) {
234 eprob_iter->second.first);
239 if (!errors.empty()) {
240 ATH_MSG_ERROR(
"Error in configuration. Unknown electron probability name: "
241 << errors <<
". known are " << eprob_map <<
" " << extra_summary_type_map);
242 sc = StatusCode::FAILURE;
269 aPer = track.perigeeParameters();
282 ATH_MSG_WARNING(
"Could not extrapolate to 0,0,0. No TrackParticle created.");
290 ATH_MSG_WARNING(
"Failed to extrapolate to first Beamspot - No TrackParticle created.");
298 if (vxCandidate !=
nullptr) {
304 ATH_MSG_WARNING(
"Could not extrapolate track to vertex region! No TrackParticle created.");
308 ATH_MSG_WARNING(
"Perigee expression at Vertex, but no vertex found! No TrackParticle created.");
314 ATH_MSG_WARNING(
"Failed to extrapolate to Beamline - No TrackParticle created.");
324 std::unique_ptr<Trk::TrackSummary> updated_summary;
329 summary = updated_summary.get();
333 "No proper TrackSummaryTool found. Creating TrackParticle with a TrackSummary on track");
336 ATH_MSG_WARNING(
"Track particle created for a track without a track summary");
342 std::vector<const Trk::TrackParameters*> parameters;
343 std::vector<xAOD::ParameterPosition> parameterPositions;
347 int nbc_meas_A1_or_B3 = 0;
348 int nbc_meas_A1_or_B3_or_C = 0;
361 tsos->measurementOnTrack() !=
nullptr &&
363 tp = tsos->trackParameters();
368 ATH_MSG_DEBUG(
"Failed dynamic_cast to InDet::SiClusterOnTrack ");
388 ATH_MSG_DEBUG(
"Pixel cluster null though detector element matches pixel");
395 float cotthetaz = -1;
401 float PixTrkAngle = -1000;
402 float PixTrkThetaI = -1000;
410 float trketacomp = my_track.dot(my_etaax);
412 float trkphicomp = my_track.dot(my_phiax);
414 float trknormcomp = my_track.dot(my_normal);
416 PixTrkAngle = std::atan2(trkphicomp, trknormcomp);
417 PixTrkThetaI = std::atan2(trketacomp, trknormcomp);
418 float length = std::sqrt(trketacomp * trketacomp + trkphicomp * trkphicomp + trknormcomp * trknormcomp);
420 cotthetaz = 1. / std::tan(PixTrkThetaI);
424 if (PixTrkThetaI > M_PI_2)
425 PixTrkThetaI -=
M_PI;
426 else if (PixTrkThetaI < -M_PI_2)
427 PixTrkThetaI +=
M_PI;
428 PixTrkThetaI = M_PI_2 - PixTrkThetaI;
429 if (PixTrkAngle > M_PI_2)
431 else if (PixTrkAngle < -M_PI_2)
433 PixTrkAngle = M_PI_2 - PixTrkAngle;
440 if (
m_detID->is_pixel(surfaceID)) {
442 zWidth =
static_cast<int>(
width.colRow().
y());
445 int isIBLclus =
false;
453 if ((size == 1 && tot < 8) || (size == 2 && tot < 15)) {
462 if (isBC_A1 || isBC_B3) {
465 if ((zWidth == 1 && cotthetaz > 5.8) || (zWidth == 2 && cotthetaz > 5.8) ||
466 (zWidth == 3 && cotthetaz > 6.2) || (zWidth > 3 && cotthetaz < 2.5)) {
469 if (isBC_A1 || isBC_B3 || isBC_C) {
470 nbc_meas_A1_or_B3_or_C++;
482 tsos->measurementOnTrack() !=
nullptr &&
484 first = tsos->trackParameters();
485 parameters.push_back(tsos->trackParameters());
494 rItTSoS != trackStates->rend();
497 (*rItTSoS)->trackParameters() !=
nullptr && (*rItTSoS)->measurementOnTrack() !=
nullptr &&
498 !((*rItTSoS)->measurementOnTrack()->type(
500 if (!(first == (*rItTSoS)->trackParameters())) {
501 parameters.push_back((*rItTSoS)->trackParameters());
510 if (parameters.size() > 2)
511 ATH_MSG_WARNING(
"More than two additional track parameters to be stored in TrackParticle!");
519 bool haveFirstMeasurementParameters =
false;
521 if (!tsos->trackParameters())
527 haveFirstMeasurementParameters =
true;
528 parameters.push_back(tsos->trackParameters());
530 << tsos->trackParameters()->position().perp() <<
", Z "
531 << tsos->trackParameters()->position().z());
541 aPer =
static_cast<const Perigee*
>(tsos->trackParameters());
543 parameters.push_back(tsos->trackParameters());
546 ATH_MSG_VERBOSE(
" including perigee at R " << tsos->trackParameters()->position().perp() <<
", Z "
547 << tsos->trackParameters()->position().z());
550 if (!parameters.empty())
551 haveFirstMeasurementParameters =
true;
569 nbCmeas(*trackparticle) = nbc_meas_A1;
573 nbCmeas(*trackparticle) = nbc_meas_B3;
577 nbCmeas(*trackparticle) = nbc_meas_A1_or_B3;
581 nbCmeas(*trackparticle) = nbc_meas_A1_or_B3_or_C;
588 delete parsToBeDeleted;
589 return trackparticle;
600 std::vector<xAOD::ParameterPosition> positions;
601 bool firstMeasurement =
false;
603 if (!firstMeasurement && parameter && !parameter->associatedSurface().isFree()) {
605 firstMeasurement =
true;
607 }
else if (firstMeasurement && parameter && !parameter->associatedSurface().isFree()) {
620 &trackParticle.
info(),
628 if (!trackparticle) {
629 ATH_MSG_WARNING(
"WARNING: Problem creating TrackParticle - Returning 0");
636 compare(trackParticle, *trackparticle);
638 return trackparticle;
652 if (!trackparticle) {
653 ATH_MSG_WARNING(
"WARNING: Problem creating TrackParticle - Returning 0");
659 return trackparticle;
663 const EventContext& ctx,
668 const std::vector<const Trk::TrackParameters*>& parameters,
669 const std::vector<xAOD::ParameterPosition>& positions,
681 const std::vector<const Trk::TrackParameters*>& parameters,
682 const std::vector<xAOD::ParameterPosition>& positions,
689 if (!trackparticle) {
690 ATH_MSG_WARNING(
"WARNING: Problem creating TrackParticle - Returning 0");
731 setTilt(*trackparticle, beamspot->beamTilt(0), beamspot->beamTilt(1));
737 ATH_MSG_WARNING(
"Track without perigee parameters? Not setting any defining parameters!");
741 return trackparticle;
752 if ((tp1.covariance() && !tp2.covariance()) || (!tp1.covariance() && tp2.covariance())) {
753 ATH_MSG_WARNING(
"Bad Covariance conversion " << tp1.covariance() <<
" --- " << tp2.covariance());
754 }
else if (tp1.covariance() && tp2.covariance()) {
755 std::pair<int, int>
indices =
Amg::compare(*tp1.covariance(), *tp2.covariance(), 1e-6,
true);
766 if (tp.measuredPerigee()) {
772 ATH_MSG_WARNING(
"Number of parameters not the same " << tp.trackParameters().size() <<
" --- "
780 const std::vector<const Trk::TrackParameters*>& parameters,
781 const std::vector<xAOD::ParameterPosition>& positions)
const
783 std::vector<std::vector<float>> parametersVec;
784 parametersVec.resize(parameters.size());
785 unsigned int numParam = 0;
792 for (
const auto* param : parameters) {
793 std::vector<float>& values = parametersVec[numParam];
808 covarianceMatrix.setIdentity();
810 if (param->covariance()) {
816 magnFieldVect.setZero();
817 fieldCache.
getField(pos.data(), magnFieldVect.data());
818 const Amg::Transform3D& localToGlobalTransform = param->associatedSurface().transform();
820 JacobianLocalToCurvilinear jacobian(magnFieldVect,
824 localToGlobalTransform.rotation().col(0),
825 localToGlobalTransform.rotation().col(1));
827 covarianceMatrix = param->covariance()->similarity(jacobian);
831 JacobianLocalToCurvilinear jacobian(curvilinearUVT, loc_x, loc_y);
832 covarianceMatrix = param->covariance()->similarity(jacobian);
835 std::vector<float> covMatrixVec;
837 tp.setTrackParameterCovarianceMatrix(numParam, covMatrixVec);
842 tp.setTrackParameters(parametersVec);
844 for (; i < positions.size(); ++i) {
845 tp.setParameterPosition(i, positions[i]);
847 float x_position = tp.parameterX(i);
848 float y_position = tp.parameterY(i);
849 tp.setRadiusOfFirstHit(std::sqrt(x_position * x_position + y_position * y_position));
850 tp.setIdentifierOfFirstHit(
851 parameters[i]->associatedSurface().associatedDetectorElementIdentifier().get_compact());
859 tp.setBeamlineTiltX(tiltx);
860 tp.setBeamlineTiltY(tilty);
866 tp.setHitPattern(hitpattern);
872 tp.setNumberOfUsedHitsdEdx(hits);
878 tp.setNumberOfIBLOverflowsdEdx(overflows);
887 static_assert(xAodReferenceEnum1 == TrkReferenceEnum1,
"Trk and xAOD enums differ in their indices");
890 static_assert(xAodReferenceEnum2 == TrkReferenceEnum2,
"Trk and xAOD enums differ in their indices");
915 uint8_t uvalue =
static_cast<uint8_t
>(std::min(value,255));
927 ATH_MSG_DEBUG(
"# of prec layers: " <<
static_cast<unsigned int>(numberOfPrecisionLayers));
929 uint8_t numberOfPhiLayers = msSummary.
nphiLayers;
949 constexpr int initialValue{-1};
950 std::vector<float> eProbability_tmp;
951 const std::vector<float>& eProbability(
960 float eProbability_value = eProbability.at(copy);
965 float fvalue = eProbability.at(decoration.second);
966 decoration.first(tp) = fvalue;
971 uint8_t summary_value =
nHits;
972 decoration.first(tp) = summary_value;
979 const int initialValue{-1};
980 float dedx = initialValue;
981 int nHitsUsed_dEdx = initialValue;
982 int nOverflowHits_dEdx = initialValue;
984 dedx =
m_dedxtool->dEdx(ctx, *track, nHitsUsed_dEdx, nOverflowHits_dEdx);
986 tp.setNumberOfUsedHitsdEdx(nHitsUsed_dEdx);
987 tp.setNumberOfIBLOverflowsdEdx(nOverflowHits_dEdx);
1001 if(mesb==
nullptr)
continue;
1007 if(rot==
nullptr)
continue;
1055 uint8_t
zero =
static_cast<uint8_t
>(0);
1056 uint8_t nContribPixLayers, nInPixHits, nNextInPixHits;
1058 nContribPixLayers =
zero;
1060 if(nContribPixLayers==0){
1061 ATH_MSG_DEBUG(
"No pixels on track, so wo do not expect hit in inner layers");
1073 ATH_MSG_DEBUG(
"Innermost pixel Layer hit on track, so we expect an innermost pixel layer hit");
1074 uint8_t
one =
static_cast<uint8_t
>(1);
1077 uint8_t expectHit =
static_cast<uint8_t
>(
m_testPixelLayerTool->expectHitInInnermostPixelLayer(perigee));
1083 nNextInPixHits =
zero;
1085 if(nNextInPixHits>0){
1086 ATH_MSG_DEBUG(
"Next-to-innermost pixel Layer hit on track, so we expect an next-to-innermost pixel layer hit");
1087 uint8_t
one =
static_cast<uint8_t
>(1);
1090 uint8_t expectHit =
static_cast<uint8_t
>(
m_testPixelLayerTool->expectHitInNextToInnermostPixelLayer(perigee));
1102 uint8_t nPixOutliers = 0, nInPixOutliers = 0, nNInPixOutliers = 0, nSCTOutliers = 0;
1103 uint8_t nInEndcapPixOutliers = 0, nNInEndcapPixOutliers = 0;
1108 if(!isOutlier)
continue;
1111 if(mesb==
nullptr)
continue;
1129 else if (layer == 1){
1134 nInEndcapPixOutliers++;
1136 else if (layer == 1 || layer == 2){
1137 nNInEndcapPixOutliers++;
1141 else if (
m_sctID->is_sct(
id)) {
1165 uint8_t nPixSharedHits = 0, nInPixSharedHits = 0, nNInPixSharedHits = 0, nSCTSharedHits = 0, nTRTSharedHits = 0;
1166 uint8_t nInPixSharedEndcapHits = 0, nNInPixSharedEndcapHits = 0;
1167 uint8_t nPixSplitHits = 0, nInPixSplitHits = 0, nNInPixSplitHits = 0;
1168 uint8_t nInPixSplitEndcapHits = 0, nNInPixSplitEndcapHits = 0;
1176 const EventContext& ctx = Gaudi::Hive::currentContext();
1179 for (
const auto*
const ms : *measurements) {
1194 bool hitIsSplit(
false);
1205 if (pixPrd and splitProb.
isSplit()) {
1212 else if (layer == 1)
1216 nInPixSplitEndcapHits++;
1217 else if (layer == 1 || layer == 2)
1218 nNInPixSplitEndcapHits++;
1227 if (prd_to_track_map->isShared(*(rot->
prepRawData()))) {
1234 else if (layer == 1)
1235 nNInPixSharedHits++;
1238 nInPixSharedEndcapHits++;
1239 else if (layer == 1 || layer == 2)
1240 nNInPixSharedEndcapHits++;
1248 if (prd_to_track_map->isShared(*(rot->
prepRawData()))) {
1255 if (prd_to_track_map->isShared(*(rot->
prepRawData()))) {
1286 uint8_t nInPixSharedEndcapHits = 0, nNInPixSharedEndcapHits = 0;
1287 uint8_t nInPixSplitEndcapHits = 0, nNInPixSplitEndcapHits = 0;
1300 const EventContext& ctx = Gaudi::Hive::currentContext();
1305 if (!splitProbContainer.
isValid()) {
1306 ATH_MSG_FATAL(
"Failed to get cluster splitting probability container "
1309 return splitProbContainer->splitProbability(
pix);
1317 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)
static const uint32_t nHits
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.
void makePrivateStore()
Create a new (empty) private store for this object.
SG::Accessor< T, ALLOC > Accessor
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.
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
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
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 setTrackLink(const ElementLink< TrackCollection > &track)
Set the link to the original track.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
size_t numberOfParameters() const
Returns the number of additional parameters stored in the TrackParticle.
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
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
@ 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.
@ 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.