|
ATLAS Offline Software
|
#include <MuTagMatchingTool.h>
|
| MuTagMatchingTool (const std::string &t, const std::string &n, const IInterface *p) |
|
virtual | ~MuTagMatchingTool ()=default |
|
virtual StatusCode | initialize () override |
|
bool | match (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment, int surfaceName) const override |
|
bool | surfaceMatch (const Muon::MuonSegment &segment, int surfaceName) const override |
|
bool | phiMatch (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override |
|
bool | thetaMatch (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override |
|
bool | rMatch (const Trk::TrackParameters &atSurface, const Muon::MuonSegment &segment) const override |
|
std::unique_ptr< Trk::TrackParameters > | ExtrapolateTrktoMSEntrance (const EventContext &ctx, const Trk::Track &pTrack, Trk::PropDirection direction) const override |
| Get extrapolation at MS entrance level. More...
|
|
std::unique_ptr< Trk::TrackParameters > | ExtrapolateTrktoMSSurface (const EventContext &ctx, const Trk::Surface &surface, const Trk::TrackParameters &pTrack, Trk::PropDirection direction) const override |
| Get extrapolation at MSSurface level. More...
|
|
std::shared_ptr< Trk::AtaPlane > | ExtrapolateTrktoSegmentSurface (const EventContext &ctx, const Muon::MuonSegment &segment, const Trk::TrackParameters &pTrack, Trk::PropDirection direction) const override |
| Get extrapolation at Segment Plane Surface level. More...
|
|
bool | matchSegmentPosition (const MuonCombined::MuonSegmentInfo &info, bool idHasEtaHits) const override |
|
bool | matchSegmentDirection (const MuonCombined::MuonSegmentInfo &info, bool idHasEtaHits) const override |
|
bool | matchPtDependentPull (const MuonCombined::MuonSegmentInfo &info, const Trk::Track &trk) const override |
|
bool | matchDistance (const MuonCombined::MuonSegmentInfo &info) const override |
|
bool | matchCombinedPull (const MuonCombined::MuonSegmentInfo &info) const override |
|
MuonCombined::MuonSegmentInfo | muTagSegmentInfo (const EventContext &ctx, const Trk::Track *track, const Muon::MuonSegment &segment, std::shared_ptr< const Trk::AtaPlane > exTrack) const override |
|
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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
|
void | testExtrapolation (const Trk::Surface &pSurface, const Trk::Track &pTrack) const |
|
bool | isCscSegment (const Muon::MuonSegment &seg) const |
|
unsigned int | cscHits (const Muon::MuonSegment &seg) const |
|
void | nrTriggerHits (const Muon::MuonSegment &seg, int &nRPC, int &nTGC) const |
|
bool | hasPhi (const Muon::MuonSegment &seg) const |
|
double | errorProtection (double exTrk_Err, bool isAngle) const |
|
std::unique_ptr< Trk::Perigee > | flipDirection (const Trk::Perigee &inputPars) const |
|
double | matchingDistanceCorrection (double resPos, double resAngle) |
|
void | calculateLocalAngleErrors (const Trk::AtaPlane &expPars, double &exTrkErrXZ, double &exTrkErrYZ, double &covLocYYZ) const |
|
void | calculateLocalAngleErrors (const Muon::MuonSegment &segment, double &exTrkErrXZ, double &exTrkErrYZ) const |
|
const Trk::TrackingVolume * | getVolume (const EventContext &ctx, const std::string &&vol_name) 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...
|
|
Definition at line 38 of file MuTagMatchingTool.h.
◆ StoreGateSvc_t
◆ SurfDef
◆ MuTagMatchingTool()
MuTagMatchingTool::MuTagMatchingTool |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~MuTagMatchingTool()
virtual MuTagMatchingTool::~MuTagMatchingTool |
( |
| ) |
|
|
virtualdefault |
◆ calculateLocalAngleErrors() [1/2]
void MuTagMatchingTool::calculateLocalAngleErrors |
( |
const Muon::MuonSegment & |
segment, |
|
|
double & |
exTrkErrXZ, |
|
|
double & |
exTrkErrYZ |
|
) |
| const |
|
private |
◆ calculateLocalAngleErrors() [2/2]
void MuTagMatchingTool::calculateLocalAngleErrors |
( |
const Trk::AtaPlane & |
expPars, |
|
|
double & |
exTrkErrXZ, |
|
|
double & |
exTrkErrYZ, |
|
|
double & |
covLocYYZ |
|
) |
| const |
|
private |
Definition at line 774 of file MuTagMatchingTool.cxx.
777 if (!exTrack.covariance())
return;
782 const AmgVector(5)& exTrkParms = exTrack.parameters();
793 const AmgSymMatrix(2)& anglesCovLoc = anglesCovGlob.similarity(jacobianExTrk);
795 if (anglesCovLoc(0, 0) >= 0) angleXZerror = std::sqrt(anglesCovLoc(0, 0));
796 if (anglesCovLoc(1, 1) >= 0) angleYZerror = std::sqrt(anglesCovLoc(1, 1));
801 << jacobianExTrk(0, 1) <<
" J11 " << jacobianExTrk(0, 1));
803 ATH_MSG_DEBUG(std::setw(20) <<
"Angles Jacobian used for TRACK angle errors below: " << jacobianExTrk);
805 ATH_MSG_DEBUG(std::setw(20) <<
"NEW TRACK angleXZ error = " << std::setprecision(6) << std::setw(10) << angleXZerror << std::setw(20)
806 <<
" and angleYZ error = " << std::setw(10) << angleYZerror);
◆ cscHits()
◆ 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()
◆ errorProtection()
double MuTagMatchingTool::errorProtection |
( |
double |
exTrk_Err, |
|
|
bool |
isAngle |
|
) |
| const |
|
private |
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ 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
◆ ExtrapolateTrktoMSEntrance()
Get extrapolation at MS entrance level.
Get extrapolation at MS entrance: this will be the starting point to following extrapolations.
Implements IMuTagMatchingTool.
Definition at line 142 of file MuTagMatchingTool.cxx.
147 if (!MSEntranceVolume) {
return nullptr; }
149 std::unique_ptr<Trk::TrackParameters> exTrk{
153 ATH_MSG_DEBUG(
"Track could not be extrapolated to MS entrance...");
155 ATH_MSG_DEBUG(
"Track extrapolated to MS entrance Radius " << exTrk->position().perp() <<
" Z " << exTrk->position().z());
◆ ExtrapolateTrktoMSSurface()
Get extrapolation at MSSurface level.
Implements IMuTagMatchingTool.
Definition at line 161 of file MuTagMatchingTool.cxx.
165 std::unique_ptr<Trk::TrackParameters> exTrk{
m_IExtrapolator->extrapolate(ctx, pTrack, pSurface, direction,
false,
Trk::muon)};
167 ATH_MSG_DEBUG(
" didn't manage to extrapolate TrackParameters to abstract surface Radius " << pSurface.center().perp() <<
" Z "
168 << pSurface.center().z());
◆ ExtrapolateTrktoSegmentSurface()
Get extrapolation at Segment Plane Surface level.
Implements IMuTagMatchingTool.
Definition at line 191 of file MuTagMatchingTool.cxx.
201 ATH_MSG_DEBUG(
"CSC segment is identified to be 2D. Not extrapolating.");
206 std::shared_ptr<Trk::TrackParameters> atap{
209 ATH_MSG_DEBUG(
" didn't manage to extrapolate TrackParameters to segment surface Radius"
210 <<
segment.associatedSurface().center().perp() <<
" Z " <<
segment.associatedSurface().center().z());
214 std::shared_ptr<Trk::AtaPlane> matap = std::dynamic_pointer_cast<Trk::AtaPlane>(atap);
217 ATH_MSG_DEBUG(
" didn't manage to extrapolate MeasuredTrackParameters to segment surface atap Radius "
218 << atap->position().perp() <<
" Z" << atap->position().z());
221 ATH_MSG_DEBUG(
" Succesfull extrapolation segment surface matap Radius " << matap->position().perp() <<
" Z"
222 << matap->position().z());
◆ flipDirection()
Definition at line 173 of file MuTagMatchingTool.cxx.
177 if (flippedPhi >
M_PI) flippedPhi -= 2 *
M_PI;
178 double flippedTheta =
M_PI -
pars[3];
179 if (flippedTheta < 0.) flippedTheta +=
M_PI;
180 if (inputPars.covariance()) {
185 ATH_MSG_DEBUG(
"flipDirection: no covariance associated to input parameters " << inputPars);
◆ getVolume()
Definition at line 192 of file MuTagMatchingTool.h.
194 if (!handle.isValid()) {
198 return handle.cptr()->trackingVolume(vol_name);
◆ hasPhi()
◆ initialize()
StatusCode MuTagMatchingTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ 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.
◆ interfaceID()
static const InterfaceID& IMuTagMatchingTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
Definition at line 27 of file IMuTagMatchingTool.h.
28 static const InterfaceID IID_IMuTagMatchingTool(
"IMuTagMatchingTool", 1, 0);
29 return IID_IMuTagMatchingTool;
◆ isCscSegment()
◆ match()
◆ matchCombinedPull()
◆ matchDistance()
◆ matchingDistanceCorrection()
double MuTagMatchingTool::matchingDistanceCorrection |
( |
double |
resPos, |
|
|
double |
resAngle |
|
) |
| |
|
private |
◆ matchPtDependentPull()
◆ matchSegmentDirection()
◆ matchSegmentPosition()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ muTagSegmentInfo()
The cut off variable is used to avoid FPEs risen where one of the matrix enties exceeds a large number and hence the determinant becomes tremendously larger
What do these magic numbers represent?
Implements IMuTagMatchingTool.
Definition at line 466 of file MuTagMatchingTool.cxx.
474 info.trackAtSegment = exTrack;
484 info.dtheta = exTrack->momentum().theta() -
segment.globalDirection().theta();
485 info.dphi = exTrack->momentum().deltaPhi(
segment.globalDirection());
489 info.dthetaPos = exTrack->position().theta() -
segment.globalPosition().theta();
490 info.dphiPos = exTrack->position().deltaPhi (
segment.globalPosition());
499 info.exCovYTheta = 0.;
500 if (exTrack->covariance()) {
509 info.exErrorX = -999.;
510 info.exErrorY = -999.;
527 exTrack->
associatedSurface().globalToLocalDirection(exTrack->momentum(), exTrkLocDir);
533 double exTrkErrXZ(0.), exTrkErrYZ(0.), segErrXZ(0.), segErrYZ(0.), covLocYYZ(0.);
536 info.exErrorXZ = exTrkErrXZ;
537 info.exErrorYZ = exTrkErrYZ;
538 info.exCovYZY = covLocYYZ;
540 info.segErrorXZ = segErrXZ;
541 info.segErrorYZ = segErrYZ;
548 ATH_MSG_DEBUG(
" info.exErrorYZ " <<
info.exErrorYZ <<
" info.segErrorYZ " <<
info.segErrorYZ <<
" info.exCovYZY " <<
info.exCovYZY);
566 ATH_MSG_ERROR(
"Null pointer to the read MuonDetectorManager conditions object");
569 double maxResXMdt{-1e9}, maxResPhi{-1e9}, maxPullPhi{-1e9}, minResPhi{1e9}, minPullPhi{1e9};
597 <<
" exPos " << exP->parameters()[
Trk::locR] <<
" y " << exP->parameters()[
Trk::locZ] <<
" tubeL " << tubeLen);
598 double exResidual = std::abs(exP->parameters()[
Trk::locZ]) - 0.5 * tubeLen;
599 if (maxResXMdt < exResidual) maxResXMdt = exResidual;
600 if (exResidual > 0.)
ATH_MSG_DEBUG(
"Extrapolated position outside tube, " << exResidual);
607 std::unique_ptr<Trk::TrackParameters> exP{
613 std::optional<Trk::ResidualPull> resPull{
620 const double residual = resPull->residual().front();
621 const double pull = resPull->pull().front();
631 ATH_MSG_DEBUG(
"Residual phi min " << minResPhi <<
" max " << maxResPhi <<
" pull min " << minPullPhi <<
" max " << maxPullPhi
632 <<
" dist from tube end " << maxResXMdt);
637 info.maximumResidualAlongTube = maxResXMdt;
638 info.maximumResidualPhi = maxResPhi;
639 info.maximumPullPhi = maxPullPhi;
641 info.minimumResidualPhi = minResPhi;
642 info.minimumPullPhi = minPullPhi;
644 info.pullChamber = maxResXMdt /
info.exErrorX;
650 constexpr
double matrix_cutoff = 1.e20;
652 double b = std::abs(
info.exCovYZY) < matrix_cutoff ?
info.exCovYZY : (
info.exCovYZY < 0 ? -1. : 1) * matrix_cutoff;
657 if (
det < 0.1 *
a *
d) {
658 scale = std::sqrt(0.9 *
a *
d) / std::abs(
b);
674 ATH_MSG_DEBUG(
" segment direction theta " <<
segment.globalDirection().theta() <<
" position theta "
679 if (error_rescy > 0) {
680 error_rescy = std::sqrt(error_rescy + error_segcy);
682 error_rescy = std::sqrt(
info.exErrorY *
info.exErrorY + error_segcy);
692 info.chi2Y = 0.5*( chi2Y /
det);
693 if (
info.chi2Y < 0)
ATH_MSG_DEBUG(
" NEGATIVE chi2Y " << chi2Y <<
" dydyz " << dydyz <<
" determinant " <<
det);
704 info.stationLayer = 0;
718 if (
q)
info.nholes =
q->numberOfHoles();
733 constexpr
double a_locY{13.8269}, b_locY{1.23548}, c_locY{2.73400}, a_AYZ{12.0655}, b_AYZ{1.87578}, c_AYZ{1.88660}, width_locY{20.},
736 double dlocY =
info.resY;
737 double dAYZ =
info.dangleYZ;
739 double logLocY =
std::log(1 + std::abs(dlocY / width_locY));
740 double logAYZ =
std::log(1 + std::abs(dAYZ / width_AYZ));
742 info.RLocY = a_locY / (1. + b_locY * (logLocY) * (logLocY) + c_locY * (logLocY) * (logLocY) * (logLocY));
743 info.RAYZ = a_AYZ / (1. + b_AYZ * (logAYZ) * (logAYZ) + c_AYZ * (logAYZ) * (logAYZ) * (logAYZ));
751 if (pass) selected = 1;
754 info.selected = selected;
◆ nrTriggerHits()
◆ 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.
◆ phiMatch()
Implements IMuTagMatchingTool.
Definition at line 227 of file MuTagMatchingTool.cxx.
234 const double deltaPhi = exTrkPos.deltaPhi(segPos);
236 double sigma_phi = 0.;
238 const AmgSymMatrix(5)& covAtCyl = *atSurface.covariance();
242 const AmgSymMatrix(5)& covAtPlane = *atSurface.covariance();
245 const AmgSymMatrix(5)& covAtDisc = *atSurface.covariance();
248 double errPhi = std::hypot(PHI_CUT, sigma_phi);
253 <<
" while the cut is set on " << std::setw(10) << errPhi);
◆ renounce()
◆ renounceArray()
◆ rMatch()
Implements IMuTagMatchingTool.
Definition at line 275 of file MuTagMatchingTool.cxx.
277 double L = exTrkPos.mag();
281 const double dPerp = std::abs(exTrkPos.perp() - segPos.perp());
285 ATH_MSG_DEBUG(std::setw(30) <<
"rough R failed: d_R = " << std::setw(10) << dPerp <<
" while the cut is set on "
286 << std::setw(10) << R_CUT);
◆ surfaceMatch()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ testExtrapolation()
Definition at line 362 of file MuTagMatchingTool.cxx.
368 const EventContext& ctx = Gaudi::Hive::currentContext();
369 const AmgVector(5)& oripars = oriPerigee->parameters();
371 std::unique_ptr<Trk::Perigee> pPerigee = std::make_unique<Trk::Perigee>(oripars[0], oripars[1], oripars[2], oripars[3], 0., periSurf, std::nullopt);
376 ATH_MSG_DEBUG(
"==============================================================================");
379 ATH_MSG_DEBUG(
"=== global position " << startPos.x() <<
" " << startPos.y() <<
" " << startPos.z());
380 ATH_MSG_DEBUG(
"=== global directn " << startMom.phi() <<
" " << startMom.theta());
382 std::unique_ptr<Trk::TrackParameters> alongPars{
385 ATH_MSG_DEBUG(
"======= EXTRAPOLATED ALONG MOMENTUM ORIGINAL PERIGEE");
390 ATH_MSG_DEBUG(
"=== global position " << alongPos.x() <<
" " << alongPos.y() <<
" " << alongPos.z());
391 ATH_MSG_DEBUG(
"=== global position phi theta " << alongPos.phi() <<
" " << alongPos.theta());
392 ATH_MSG_DEBUG(
"=== global directn " << alongMom.phi() <<
" " << alongMom.theta());
396 ATH_MSG_DEBUG(
"======= EXTRAPOLATED OPPOSITE MOMENTUM ORIGINAL PERIGEE");
397 std::unique_ptr<const Trk::TrackParameters> oppositePars{
402 ATH_MSG_DEBUG(
"=== global position " << oppositePos.x() <<
" " << oppositePos.y() <<
" " << oppositePos.z());
403 ATH_MSG_DEBUG(
"=== global position phi theta " << oppositePos.phi() <<
" " << oppositePos.theta());
404 ATH_MSG_DEBUG(
"=== global directn " << oppositeMom.phi() <<
" " << oppositeMom.theta());
409 std::unique_ptr<const Trk::Perigee> flippedPerigee =
flipDirection(*pPerigee);
410 const AmgVector(5)& flipPars = flippedPerigee->parameters();
416 ATH_MSG_DEBUG(
"=== parameters are " << flipPars[0] <<
" " << flipPars[1] <<
" " << flipPars[2] <<
" " << flipPars[3] <<
" "
418 ATH_MSG_DEBUG(
"=== global position " << flipPos.x() <<
" " << flipPos.y() <<
" " << flipPos.z());
419 ATH_MSG_DEBUG(
"=== global directn " << flipMom.phi() <<
" " << flipMom.theta());
421 std::unique_ptr<const Trk::TrackParameters> alongFlipPars{
424 ATH_MSG_DEBUG(
"======= EXTRAPOLATED ALONGFLIP MOMENTUM ORIGINAL PERIGEE");
426 const Amg::Vector3D alongFlipPos = alongFlipPars->position();
427 const Amg::Vector3D alongFlipMom = alongFlipPars->momentum();
428 ATH_MSG_DEBUG(
"=== global position " << alongFlipPos.x() <<
" " << alongFlipPos.y() <<
" " << alongFlipPos.z());
429 ATH_MSG_DEBUG(
"=== global position phi theta " << alongFlipPos.phi() <<
" " << alongFlipPos.theta());
430 ATH_MSG_DEBUG(
"=== global directn " << alongFlipMom.phi() <<
" " << alongFlipMom.theta());
434 ATH_MSG_DEBUG(
"======= EXTRAPOLATED OPPOSITEFLIP MOMENTUM ORIGINAL PERIGEE");
435 std::unique_ptr<const Trk::TrackParameters> oppositeFlipPars{
437 if (oppositeFlipPars) {
438 const Amg::Vector3D oppositeFlipPos = oppositeFlipPars->position();
439 const Amg::Vector3D oppositeFlipMom = oppositeFlipPars->momentum();
440 ATH_MSG_DEBUG(
"=== global position " << oppositeFlipPos.x() <<
" " << oppositeFlipPos.y() <<
" " << oppositeFlipPos.z());
441 ATH_MSG_DEBUG(
"=== global position phi theta " << oppositeFlipPos.phi() <<
" " << oppositeFlipPos.theta());
442 ATH_MSG_DEBUG(
"=== global directn " << oppositeFlipMom.phi() <<
" " << oppositeFlipMom.theta());
446 ATH_MSG_DEBUG(
"==============================================================================");
◆ thetaMatch()
Implements IMuTagMatchingTool.
Definition at line 262 of file MuTagMatchingTool.cxx.
266 const double dTheta = std::abs(exTrkPos.theta() - segPos.theta());
267 if (dTheta < THETA_CUT)
270 ATH_MSG_DEBUG(std::setw(30) <<
"roughTheta failed: d_theta = " << std::setw(10) << dTheta <<
" while the cut is set on "
271 << std::setw(10) << THETA_CUT);
◆ updateVHKA()
◆ m_assumeLocalErrors
bool MuTagMatchingTool::m_assumeLocalErrors |
|
private |
◆ m_chamberPullCut
double MuTagMatchingTool::m_chamberPullCut |
|
private |
◆ m_combinedPullCut
double MuTagMatchingTool::m_combinedPullCut |
|
private |
◆ m_DetectorManagerKey
Initial value:{
this,
"DetectorManagerKey",
"MuonDetectorManager",
"Key of input MuonDetectorManager condition data",
}
Definition at line 155 of file MuTagMatchingTool.h.
◆ m_detStore
◆ m_DIST_ANGLE
double MuTagMatchingTool::m_DIST_ANGLE |
|
private |
◆ m_DIST_POS
double MuTagMatchingTool::m_DIST_POS |
|
private |
◆ m_doDistCut
bool MuTagMatchingTool::m_doDistCut |
|
private |
◆ m_edmHelperSvc
Initial value:{
this,
"edmHelper",
"Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
"Handle to the service providing the IMuonEDMHelperSvc interface",
}
Definition at line 144 of file MuTagMatchingTool.h.
◆ m_ERROR_EX_ANGLE_CUT
double MuTagMatchingTool::m_ERROR_EX_ANGLE_CUT |
|
private |
◆ m_ERROR_EX_POS_CUT
double MuTagMatchingTool::m_ERROR_EX_POS_CUT |
|
private |
◆ m_evtStore
◆ m_extrapolatePerigee
bool MuTagMatchingTool::m_extrapolatePerigee |
|
private |
◆ m_GLOBAL_PHI_CUT
double MuTagMatchingTool::m_GLOBAL_PHI_CUT |
|
private |
◆ m_GLOBAL_R_CUT
double MuTagMatchingTool::m_GLOBAL_R_CUT |
|
private |
◆ m_GLOBAL_THETA_CUT
double MuTagMatchingTool::m_GLOBAL_THETA_CUT |
|
private |
◆ m_hitSummaryTool
Initial value:{
this,
"MuonSegmentHitSummary",
"Muon::MuonSegmentHitSummaryTool/MuonSegmentHitSummaryTool",
}
Definition at line 123 of file MuTagMatchingTool.h.
◆ m_idHelperSvc
Initial value:{
this,
"MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc",
}
Definition at line 139 of file MuTagMatchingTool.h.
◆ m_IExtrapolator
Initial value:{
this,
"IExtrapolator",
"Trk::Extrapolator/AtlasExtrapolator",
}
Pointer on IExtrapolator.
Definition at line 112 of file MuTagMatchingTool.h.
◆ m_MATCH_PHI
double MuTagMatchingTool::m_MATCH_PHI |
|
private |
◆ m_MATCH_PHIANGLE
double MuTagMatchingTool::m_MATCH_PHIANGLE |
|
private |
◆ m_MATCH_THETA
double MuTagMatchingTool::m_MATCH_THETA |
|
private |
◆ m_MATCH_THETAANGLE
double MuTagMatchingTool::m_MATCH_THETAANGLE |
|
private |
◆ m_printer
◆ m_propagator
Initial value:{
this,
"Propagator",
"Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator",
}
Pointer on propagator for SL propagation.
Definition at line 117 of file MuTagMatchingTool.h.
◆ m_pullCalculator
Initial value:{
this,
"ResidualPullCalculator",
"Trk::ResidualPullCalculator/ResidualPullCalculator",
}
Definition at line 133 of file MuTagMatchingTool.h.
◆ m_SAFE_PHI
double MuTagMatchingTool::m_SAFE_PHI |
|
private |
◆ m_SAFE_PHIANGLE
double MuTagMatchingTool::m_SAFE_PHIANGLE |
|
private |
◆ m_SAFE_THETA
double MuTagMatchingTool::m_SAFE_THETA |
|
private |
◆ m_SAFE_THETAANGLE
double MuTagMatchingTool::m_SAFE_THETAANGLE |
|
private |
◆ m_selectionTool
Initial value:{
this,
"MuonSegmentSelection",
"Muon::MuonSegmentSelectionTool/MuonSegmentSelectionTool",
}
Definition at line 128 of file MuTagMatchingTool.h.
◆ m_t0Location
std::string MuTagMatchingTool::m_t0Location |
|
private |
◆ m_trackingGeometryReadKey
Initial value:{this, "TrackingGeometryReadKey", "",
"Key of input TrackingGeometry"}
Definition at line 162 of file MuTagMatchingTool.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ p_StoreGateSvc
The documentation for this class was generated from the following files:
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
virtual const MdtPrepData * prepRawData() const override final
Returns the PrepRawData used to create this corrected measurement.
const Amg::Vector3D & position() const
Access method for the position.
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
@ Unbiased
RP with track state that has measurement not included.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool const RAWDATA *ch2 const
bool empty() const
Test if the key is blank.
#define AmgSymMatrix(dim)
virtual void setOwner(IDataHandleHolder *o)=0
double angleYZ() const
access method for angle of local YZ projection
virtual const S & associatedSurface() const override final
Access to the Surface method.
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
double getActiveTubeLength(const int tubeLayer, const int tube) const
const std::vector< const Trk::MeasurementBase * > & containedMeasurements() const
returns the vector of Trk::MeasurementBase objects
Base class for all CompetingRIOsOnTack implementations, extends the common MeasurementBase.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
represents the three-dimensional global direction with respect to a planar surface frame.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
@ NoField
Field is set to 0., 0., 0.,.
const Perigee * perigeeParameters() const
return Perigee.
Ensure that the ATLAS eigen extensions are properly loaded.
virtual const SurfaceBounds & bounds() const =0
Surface Bounds method.
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
#define ATH_MSG_WARNING(x)
virtual const Trk::StraightLineSurface & associatedSurface() const override final
Returns the surface on which this measurement was taken.
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Identifier identify() const
return the identifier -extends MeasurementBase
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
StIndex
enum to classify the different station layers in the muon spectrometer
double angleXZ() const
access method for angle of local XZ projection
constexpr int pow(int base, int exp) noexcept
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual const MuonGM::MdtReadoutElement * detectorElement() const override
Returns the detector element corresponding to this PRD.
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
virtual double r() const =0
Interface method for the maximal extension or the radius.