|
ATLAS Offline Software
|
tool to match segments using a curved trajectory.
More...
#include <MuonSegmentMatchingTool.h>
|
| MuonSegmentMatchingTool (const std::string &, const std::string &, const IInterface *) |
| constructor More...
|
|
virtual | ~MuonSegmentMatchingTool ()=default |
| destructor More...
|
|
StatusCode | initialize () |
| AlgTool initilize. More...
|
|
StatusCode | finalize () |
| AlgTool finalize. More...
|
|
bool | match (const EventContext &ctx, const MuonSegment &seg1, const MuonSegment &seg2) const |
| match two segments More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | 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 |
|
|
bool | straightLineMatch (const MuonSegment &seg1, const MuonSegment &seg2) const |
| perform straight line matching using SL extrapolation More...
|
|
bool | curvedMatch (const MuonSegment &seg1, const MuonSegment &seg2) const |
| perform curved matching More...
|
|
bool | overlapMatch (const EventContext &ctx, const MuonSegment &seg1, const MuonSegment &seg2) const |
| perform overlap matching More...
|
|
bool | initializeField () const |
| setup field More...
|
|
bool | hasStereoAngle (const Identifier &id1, const Identifier &id2) const |
| check whether the two segments have a stereo angle More...
|
|
bool | isSLMatch (const Identifier &chid1, const Identifier &chid2) const |
| check whether we should perform a straight line match More...
|
|
bool | suppressNoise (const MuonSegment &seg1, const MuonSegment &seg2, const bool &useTightCuts) const |
| Suppress noise from cavern background/pile up using basic cuts
More...
|
|
bool | suppressNoisePhi (const MuonSegment &seg1, const MuonSegment &seg2, const bool &useTightCuts) const |
| Suppress noise from cavern background/pile up using basic cuts in phi. More...
|
|
void | simpleEndcapExtrapolate (double x_segment, double y_segment, double z_segment, double theta_segment, double z_extrapolated, double &r_expected, double &theta_expected, double &rhoInv) const |
| extrapolate segment in middle or outer endcap station to inner layer assuming the particle came from the IP More...
|
|
bool | endcapExtrapolationMatch (const MuonSegment &seg1, const MuonSegment &seg2, bool useTightCuts) const |
| match an endcap middle or outer segment with an inner segment using a simple analytic extrapolation model More...
|
|
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...
|
|
tool to match segments using a curved trajectory.
The tool decides whether the matching should be performed with curvature or with a straight line. Cases in which a straight line will be used:
- no magnetic field in the muon spectrometer
- endcap middle/outer combination
- small/large overlap in one station layer
Definition at line 33 of file MuonSegmentMatchingTool.h.
◆ StoreGateSvc_t
◆ MuonSegmentMatchingTool()
Muon::MuonSegmentMatchingTool::MuonSegmentMatchingTool |
( |
const std::string & |
ty, |
|
|
const std::string & |
na, |
|
|
const IInterface * |
pa |
|
) |
| |
constructor
Definition at line 14 of file MuonSegmentMatchingTool.cxx.
16 declareInterface<IMuonSegmentMatchingTool>(
this);
19 "Perform matching for segments in a small/large overlap");
21 "Perform matching for segments in regions without field");
28 "Cut on the angular difference between the best phi and the one consistent with the chamber bounds");
31 "Cut on the angular difference between the best phi and the one consistent with the chamber bounds");
33 "Cut on the distance of recalculated position to the tube edge");
35 "Cut on the segment position residual after recalculation of the paramters");
37 "Cut on the average pull of the phi hits with the new segment parameters");
40 "Cut on the angular difference between the extrapolated segment angle and reference");
42 "Cut on the distance of extrapolated segment position and reference");
44 "If the two segments are further apart than this distance, they are considered to not match");
47 "Accept only segments that are in the same sector for tight matching");
49 "Use tight selection for busy event to suppress combinatorics and improve CPU");
52 "Print matching angle information to screen. WARNING: always returns True for suppressNoise");
54 "Cut on sumDeltaYZ, segments in BI and BM, small phi sec");
56 "Cut on sumDeltaYZ, segments in BI and BO, small phi sec");
58 "Cut on sumDeltaYZ, segments in BM and BO, small phi sec");
60 "Cut on sumDeltaYZ, segments in EI and EM, small phi sec");
62 "Cut on sumDeltaYZ, segments in EI and EO, small phi sec");
64 "Cut on sumDeltaYZ, segments in EM and EO, small phi sec");
66 "Cut on sumDeltaYZ, segments in BI and BM, large phi sec");
68 "Cut on sumDeltaYZ, segments in BI and BO, large phi sec");
70 "Cut on sumDeltaYZ, segments in BM and BO, large phi sec");
72 "Cut on sumDeltaYZ, segments in EI and EM, large phi sec");
74 "Cut on sumDeltaYZ, segments in EI and EO, large phi sec");
76 "Cut on sumDeltaYZ, segments in EM and EO, large phi sec");
◆ ~MuonSegmentMatchingTool()
virtual Muon::MuonSegmentMatchingTool::~MuonSegmentMatchingTool |
( |
| ) |
|
|
virtualdefault |
◆ curvedMatch()
◆ 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()
◆ endcapExtrapolationMatch()
match an endcap middle or outer segment with an inner segment using a simple analytic extrapolation model
Definition at line 780 of file MuonSegmentMatchingTool.cxx.
788 if (chid1 == chid2)
return false;
792 if (stIndex1 == stIndex2)
return false;
802 if (!segInner || !segOuter) {
811 double r_expected{0.}, theta_expected{0.}, rhoInv{0.};
812 simpleEndcapExtrapolate(pos1.x(), pos1.y(), pos1.z(), dir1.theta(), pos2.z(), r_expected, theta_expected, rhoInv);
814 if (rhoInv < 0) rhoInv *= -1.;
815 double dr = pos2.perp() - r_expected;
816 double dtheta = dir2.theta() - theta_expected;
840 <<
" " <<
m_printer->print(seg2) << std::endl
841 <<
" dr " <<
dr <<
" cut " << drCut <<
" dtheta " << dtheta <<
" cut " << dthetaCut
842 <<
" rhoInv " << 1e6 * rhoInv);
844 if (std::abs(
dr) > drCut)
return false;
845 if (std::abs(dtheta) > dthetaCut)
return false;
◆ 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
◆ finalize()
StatusCode Muon::MuonSegmentMatchingTool::finalize |
( |
| ) |
|
AlgTool finalize.
Definition at line 96 of file MuonSegmentMatchingTool.cxx.
98 double goodOverlapMatchFraction =
103 double goodStraightLineMatchFraction =
107 << goodStraightLineMatchFraction);
109 double goodCurvedMatchFraction =
117 return StatusCode::SUCCESS;
◆ hasStereoAngle()
check whether the two segments have a stereo angle
Definition at line 304 of file MuonSegmentMatchingTool.cxx.
311 if (phi1 != phi2)
return true;
317 return isSmallChamber1 != isSmallChamber2;
◆ initialize()
StatusCode Muon::MuonSegmentMatchingTool::initialize |
( |
| ) |
|
◆ initializeField()
bool Muon::MuonSegmentMatchingTool::initializeField |
( |
| ) |
const |
|
private |
◆ 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& Muon::IMuonSegmentMatchingTool::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
access to tool interface
Definition at line 29 of file IMuonSegmentMatchingTool.h.
30 static const InterfaceID IID_IMuonSegmentMatchingTool(
"Muon::IMuonSegmentMatchingTool", 1, 0);
32 return IID_IMuonSegmentMatchingTool;
◆ isSLMatch()
check whether we should perform a straight line match
Definition at line 282 of file MuonSegmentMatchingTool.cxx.
292 if (stIndex1 == stIndex2)
return true;
◆ match()
match two segments
Implements Muon::IMuonSegmentMatchingTool.
Definition at line 120 of file MuonSegmentMatchingTool.cxx.
127 if (chid1 == chid2)
return false;
136 if (stIndex1 == stIndex2) {
146 && ( std::abs(phi1 - phi2) == 1 || (phi1 == 1 && phi2 == 16)
147 || (phi1 == 16 && phi2 == 1)))
156 if (stIndex1 == stIndex2)
return false;
163 if (stIndex1 == stIndex2)
return false;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ overlapMatch()
perform overlap matching
Definition at line 214 of file MuonSegmentMatchingTool.cxx.
223 const float segDist = (seg1.globalPosition() - seg2.globalPosition()).
mag();
240 if (!
result.goodMatch()) {
250 <<
result.phiResult.deltaYZ);
257 ATH_MSG_DEBUG(
" failed phi hit pull cut: seg1 " <<
result.averagePhiHitPullSegment1 <<
" seg2 "
258 <<
result.averagePhiHitPullSegment2);
272 ATH_MSG_DEBUG(
" failed position residual cut: seg1 " <<
result.segmentResult1.positionResidual <<
" seg2 "
273 <<
result.segmentResult2.positionResidual);
◆ renounce()
◆ renounceArray()
◆ simpleEndcapExtrapolate()
void Muon::MuonSegmentMatchingTool::simpleEndcapExtrapolate |
( |
double |
x_segment, |
|
|
double |
y_segment, |
|
|
double |
z_segment, |
|
|
double |
theta_segment, |
|
|
double |
z_extrapolated, |
|
|
double & |
r_expected, |
|
|
double & |
theta_expected, |
|
|
double & |
rhoInv |
|
) |
| const |
|
private |
extrapolate segment in middle or outer endcap station to inner layer assuming the particle came from the IP
Definition at line 851 of file MuonSegmentMatchingTool.cxx.
866 double z_start = 7000.;
867 double z_end = 12000.;
869 if (z_extrapolated < 0) z_start = -z_start;
872 double r_segment = std::hypot(x_segment , y_segment);
874 if (std::abs(z_extrapolated) > std::abs(z_segment)) {
875 ATH_MSG_WARNING(
" extrapolate outwards is not implemented for z " << z_extrapolated);
880 if (std::abs(z_segment) < std::abs(
z_end)) {
881 ATH_MSG_WARNING(
" segment before end of Toroid: SL extrapolation is used implemented " << z_segment);
885 const double tan_seg =
std::tan(theta_segment);
887 double r_end = r_segment + (
z_end - z_segment) * tan_seg;
890 rhoInv = (r_end -
z_end * tan_seg) / zgeo;
891 double tantheta = tan_seg - 2 * (
z_end - z_start) * rhoInv;
892 r_expected = z_extrapolated * tantheta + (z_extrapolated - z_start) * (z_extrapolated - z_start) * rhoInv;
896 double r_SL = r_segment + (z_extrapolated - z_segment) * tan_seg;
897 r_expected = r_expected + 0.3 * (r_expected - r_SL);
898 theta_expected =
std::atan(tantheta + 2 * (z_extrapolated - z_start) * rhoInv);
900 if (tan_seg < 0 && theta_expected < 0) theta_expected +=
M_PI;
901 if (tan_seg > 0 && theta_expected < 0) theta_expected = -theta_expected;
◆ straightLineMatch()
◆ suppressNoise()
Suppress noise from cavern background/pile up using basic cuts
Definition at line 325 of file MuonSegmentMatchingTool.cxx.
345 std::cout <<
"SegmentPositionChange "
348 <<
result.phiSector_b <<
" " <<
result.deltaTheta_a <<
" " <<
result.deltaTheta_b <<
" "
356 <<
" " <<
result.phiSector_b <<
" thetas " <<
result.deltaTheta_a <<
" "
357 <<
result.deltaTheta_b <<
" thetaSum " <<
result.deltaTheta <<
" tight cuts "
361 if (
result.angleAB > 1.0)
return false;
366 if (isCSC_a || isCSC_b) {
371 if ((isCSC_a && !isEndcap_b) || (isCSC_b && !isEndcap_a))
return false;
375 else if (isBEE_a || isBEE_b)
378 return result.deltaTheta <= 0.300;
381 else if (isEndcap_a != isEndcap_b)
384 return result.deltaTheta <= 0.300;
390 if (
result.deltaTheta > 0.300) {
401 if (
result.phiSector_a % 2 == 0) {
403 }
else if (
result.phiSector_a % 2 == 1) {
411 if (
result.phiSector_a % 2 == 0) {
413 }
else if (
result.phiSector_a % 2 == 1) {
422 if (
result.phiSector_a % 2 == 0) {
424 }
else if (
result.phiSector_a % 2 == 1) {
432 if (
result.phiSector_a % 2 == 0) {
439 }
else if (
result.phiSector_a % 2 == 1) {
452 if (
result.phiSector_a % 2 == 0) {
459 }
else if (
result.phiSector_a % 2 == 1) {
473 if (
result.phiSector_a % 2 == 0) {
475 }
else if (
result.phiSector_a % 2 == 1) {
487 ATH_MSG_VERBOSE(
" rejection pair as in different sector and using tight cuts");
490 if (isCSC_a || isCSC_b) {
494 if (
result.deltaTheta > 0.100) {
497 if ((isCSC_a && !isEndcap_b) || (isCSC_b && !isEndcap_a))
return false;
505 else if (isBEE_a || isBEE_b)
507 return result.deltaTheta <= 0.200;
512 return result.deltaTheta <= 0.150;
515 else if (isEndcap_a != isEndcap_b)
517 return result.deltaTheta <= 0.150;
524 if (nChambers_a < 2 && nChambers_b < 2) {
526 }
else if (
result.deltaTheta > 0.150) {
535 if (
result.phiSector_a % 2 == 0) {
537 }
else if (
result.phiSector_a % 2 == 1) {
544 if (
result.phiSector_a % 2 == 0) {
546 }
else if (
result.phiSector_a % 2 == 1) {
553 if (
result.phiSector_a % 2 == 0) {
555 }
else if (
result.phiSector_a % 2 == 1) {
563 if (
result.phiSector_a % 2 == 0) {
569 }
else if (
result.phiSector_a % 2 == 1) {
580 if (
result.phiSector_a % 2 == 0) {
586 }
else if (
result.phiSector_a % 2 == 1) {
597 if (
result.phiSector_a % 2 == 0) {
599 }
else if (
result.phiSector_a % 2 == 1) {
◆ suppressNoisePhi()
Suppress noise from cavern background/pile up using basic cuts in phi.
Definition at line 608 of file MuonSegmentMatchingTool.cxx.
622 std::cout <<
"SegmentPositionChange Phi"
625 <<
" deltaPhidir " <<
result.deltaPhidir <<
" phiposerr_a " <<
result.phiposerr_a <<
" phiposerr_b "
626 <<
result.phiposerr_b <<
" phidirerr_a " <<
result.phidirerr_a <<
" phidirerr_b "
627 <<
result.phidirerr_b <<
" shorttube_a " <<
result.shorttube_a <<
" shorttube_b "
628 <<
result.shorttube_b << std::endl;
634 && ((
result.phiSector_a != 16 &&
result.phiSector_b != 1)
635 && (
result.phiSector_a != 1 &&
result.phiSector_b != 16))
643 if (
result.phiposerr_a < 10001.000 &&
result.phiposerr_b < 10001.000) {
645 if (!isEndcap_a && !isEndcap_b) {
646 return result.deltaPhipos <= 0.1;
648 if (isEndcap_a && isEndcap_b) {
650 if (
result.phiSector_a % 2 == 0) {
651 return result.deltaPhipos <= 0.1;
654 if (
result.phiSector_a % 2 == 1) {
655 return result.deltaPhipos <= 0.2;
662 if (
result.phiposerr_a < 10001.000 &&
result.phiposerr_b < 10001.000) {
663 if (!isEndcap_a && !isEndcap_b) {
664 return result.deltaPhipos <= 0.1;
666 if (isEndcap_a && isEndcap_b) {
667 return result.deltaPhipos <= 0.2;
676 if (
result.phiposerr_a < 10001.000) {
678 return result.shorttube_a <= 800;
682 return result.shorttube_a <= 3500 ||
result.shorttube_a == 99999.;
685 return result.shorttube_a <= 3500 ||
result.shorttube_a == 99999.;
688 return result.shorttube_a <= 800;
692 if (
result.phiposerr_b < 10001.000) {
694 return result.shorttube_b <= 800;
697 return result.shorttube_b <= 800;
700 return result.shorttube_b <= 800;
703 return result.shorttube_b <= 1400;
714 if (
result.phiposerr_a < 10001.000 &&
result.phiposerr_b < 10001.000) {
715 if (!isEndcap_a && !isEndcap_b) {
716 return result.deltaPhipos <= 0.1;
718 if (isEndcap_a && isEndcap_b) {
720 if (
result.phiSector_a % 2 == 0) {
721 return result.deltaPhipos <= 0.08;
724 if (
result.phiSector_a % 2 == 1) {
725 return result.deltaPhipos <= 0.1;
733 if (
result.phiposerr_a < 10001.000 &&
result.phiposerr_b < 10001.000) {
734 if (!isEndcap_a && !isEndcap_b) {
735 return result.deltaPhipos <= 0.05;
737 if (isEndcap_a && isEndcap_b) {
738 return result.deltaPhipos <= 0.1;
744 if (
result.phiposerr_a < 10001.000) {
746 return result.shorttube_a <= 600;
749 return result.shorttube_a <= 3500 ||
result.shorttube_a == 99999.;
752 return result.shorttube_a <= 3500 ||
result.shorttube_a == 99999.;
755 return result.shorttube_a <= 500;
759 if (
result.phiposerr_b < 10001.000) {
761 return result.shorttube_b <= 600;
764 return result.shorttube_b <= 700;
767 return result.shorttube_b <= 700;
770 return result.shorttube_b <= 700;
◆ 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.
◆ updateVHKA()
◆ m_angleABCut
double Muon::MuonSegmentMatchingTool::m_angleABCut {} |
|
private |
◆ m_curvedMatches
std::atomic_uint Muon::MuonSegmentMatchingTool::m_curvedMatches {0} |
|
mutableprivate |
◆ m_curvedMatchesGood
std::atomic_uint Muon::MuonSegmentMatchingTool::m_curvedMatchesGood {0} |
|
mutableprivate |
◆ m_detStore
◆ m_doCurvedMatch
bool Muon::MuonSegmentMatchingTool::m_doCurvedMatch |
|
private |
◆ m_doOverlapMatch
bool Muon::MuonSegmentMatchingTool::m_doOverlapMatch |
|
private |
◆ m_doStraightLineMatch
bool Muon::MuonSegmentMatchingTool::m_doStraightLineMatch |
|
private |
◆ m_drExtrapAlignmentOffset
double Muon::MuonSegmentMatchingTool::m_drExtrapAlignmentOffset |
|
private |
◆ m_drExtrapRMS
double Muon::MuonSegmentMatchingTool::m_drExtrapRMS |
|
private |
◆ m_dthetaExtrapRMS
double Muon::MuonSegmentMatchingTool::m_dthetaExtrapRMS |
|
private |
◆ m_dumpAngles
bool Muon::MuonSegmentMatchingTool::m_dumpAngles |
|
private |
◆ m_duplicateHitUses
std::atomic_uint Muon::MuonSegmentMatchingTool::m_duplicateHitUses {0} |
|
mutableprivate |
◆ m_edmHelperSvc
Initial value:{
this,
"edmHelper",
"Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
"Handle to the service providing the IMuonEDMHelperSvc interface",
}
EDM Helper tool.
Definition at line 91 of file MuonSegmentMatchingTool.h.
◆ m_evtStore
◆ m_idHelperSvc
Initial value:{
this,
"MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc",
}
Definition at line 86 of file MuonSegmentMatchingTool.h.
◆ m_isCosmics
bool Muon::MuonSegmentMatchingTool::m_isCosmics |
|
private |
◆ m_matchingbee_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingbee_sphisec {} |
|
private |
◆ m_matchingbibm_lphisec
double Muon::MuonSegmentMatchingTool::m_matchingbibm_lphisec |
|
private |
◆ m_matchingbibm_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingbibm_sphisec |
|
private |
◆ m_matchingbibo_lphisec
double Muon::MuonSegmentMatchingTool::m_matchingbibo_lphisec |
|
private |
◆ m_matchingbibo_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingbibo_sphisec |
|
private |
◆ m_matchingbmbo_lphisec
double Muon::MuonSegmentMatchingTool::m_matchingbmbo_lphisec |
|
private |
◆ m_matchingbmbo_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingbmbo_sphisec |
|
private |
◆ m_matchingeiem_lphisec
double Muon::MuonSegmentMatchingTool::m_matchingeiem_lphisec |
|
private |
◆ m_matchingeiem_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingeiem_sphisec |
|
private |
◆ m_matchingeieo_lphisec
double Muon::MuonSegmentMatchingTool::m_matchingeieo_lphisec |
|
private |
◆ m_matchingeieo_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingeieo_sphisec |
|
private |
◆ m_matchingemeo_lphisec
double Muon::MuonSegmentMatchingTool::m_matchingemeo_lphisec |
|
private |
◆ m_matchingemeo_sphisec
double Muon::MuonSegmentMatchingTool::m_matchingemeo_sphisec |
|
private |
◆ m_maxDistSegments
double Muon::MuonSegmentMatchingTool::m_maxDistSegments |
|
private |
◆ m_minDistSegmentsCosmics
double Muon::MuonSegmentMatchingTool::m_minDistSegmentsCosmics {} |
|
private |
cut on the minimum distance between the segments, if the distance is larger
than the cut the segments are always matched (for cosmics)
Definition at line 148 of file MuonSegmentMatchingTool.h.
◆ m_onlySameSectorIfTight
bool Muon::MuonSegmentMatchingTool::m_onlySameSectorIfTight |
|
private |
◆ m_overlapMatchAngleDPhiCut
double Muon::MuonSegmentMatchingTool::m_overlapMatchAngleDPhiCut |
|
private |
◆ m_overlapMatchAngleDYZCut
double Muon::MuonSegmentMatchingTool::m_overlapMatchAngleDYZCut |
|
private |
◆ m_overlapMatches
std::atomic_uint Muon::MuonSegmentMatchingTool::m_overlapMatches {0} |
|
mutableprivate |
◆ m_overlapMatchesGood
std::atomic_uint Muon::MuonSegmentMatchingTool::m_overlapMatchesGood {0} |
|
mutableprivate |
◆ m_overlapMatchPhiHitPullCut
double Muon::MuonSegmentMatchingTool::m_overlapMatchPhiHitPullCut |
|
private |
◆ m_overlapMatchPositionCut
double Muon::MuonSegmentMatchingTool::m_overlapMatchPositionCut |
|
private |
◆ m_overlapMatchPositionResidualCut
double Muon::MuonSegmentMatchingTool::m_overlapMatchPositionResidualCut |
|
private |
◆ m_overlapResolvingTool
Initial value:{
this,
"MuonSegmentInOverlapResolvingTool",
"Muon::MuonSegmentInOverlapResolvingTool/MuonSegmentInOverlapResolvingTool",
}
matching tool to handle the overlaps
Definition at line 103 of file MuonSegmentMatchingTool.h.
◆ m_pairMatchingTool
Initial value:{
this,
"MuonSegmentPairMatchingTool",
"Muon::MuonSegmentPairMatchingTool/MuonSegmentPairMatchingTool",
}
matching tool to handle the pairs of segments
Definition at line 108 of file MuonSegmentMatchingTool.h.
◆ m_phiMatch
bool Muon::MuonSegmentMatchingTool::m_phiMatch |
|
private |
◆ m_printer
Initial value:{
this,
"Printer",
"Muon::MuonEDMPrinterTool/MuonEDMPrinterTool",
}
EDM printer tool.
Definition at line 98 of file MuonSegmentMatchingTool.h.
◆ m_straightLineMatchAngleCut
double Muon::MuonSegmentMatchingTool::m_straightLineMatchAngleCut |
|
private |
◆ m_straightLineMatches
std::atomic_uint Muon::MuonSegmentMatchingTool::m_straightLineMatches {0} |
|
mutableprivate |
◆ m_straightLineMatchesGood
std::atomic_uint Muon::MuonSegmentMatchingTool::m_straightLineMatchesGood {0} |
|
mutableprivate |
◆ m_straightLineMatchPositionCut
double Muon::MuonSegmentMatchingTool::m_straightLineMatchPositionCut |
|
private |
◆ m_thetaMatch
bool Muon::MuonSegmentMatchingTool::m_thetaMatch |
|
private |
◆ m_toroidOn
Gaudi::Property<bool> Muon::MuonSegmentMatchingTool::m_toroidOn {this, "ToroidOn", true, "Status of toroidal B-Field"} |
|
private |
◆ m_useEndcapExtrapolationMatching
bool Muon::MuonSegmentMatchingTool::m_useEndcapExtrapolationMatching |
|
private |
◆ m_useLocalAngles
bool Muon::MuonSegmentMatchingTool::m_useLocalAngles {} |
|
private |
◆ m_useTightCuts
bool Muon::MuonSegmentMatchingTool::m_useTightCuts |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
setEt setPhi setE277 setWeta2 eta1
#define ATH_MSG_VERBOSE(x)
MuonSegment_v1 MuonSegment
Reference the current persistent version:
virtual void setOwner(IDataHandleHolder *o)=0
constexpr double z_end
z value whereafter no magnetic field / curvature
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Eigen::Matrix< double, 3, 1 > Vector3D
#define ATH_MSG_WARNING(x)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
StIndex
enum to classify the different station layers in the muon spectrometer
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Scalar mag() const
mag method