![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <MuonPatternCalibration.h>
|
| MuonPatternCalibration (const std::string &, const std::string &, const IInterface *) |
|
virtual | ~MuonPatternCalibration ()=default |
|
virtual StatusCode | initialize () override |
|
StatusCode | calibrate (const EventContext &ctx, const MuonPatternCombination &pat, ROTsPerRegion &hitsPerRegion) const override |
|
int | getRegionId (const Identifier &id) const override |
|
bool | checkForPhiMeasurements (const MuonPatternCombination &pat) 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 |
|
|
StatusCode | createRegionMap (const EventContext &ctx, const MuonPatternCombination &pat, RegionMap ®ionMap, bool hasPhiMeasurements) const |
|
void | printRegionMap (const RegionMap ®ionMap) const |
|
void | calibrateRegionMap (const RegionMap ®ionMap, IMuonPatternCalibration::ROTsPerRegion &hitsPerRegion) const |
|
void | insertCluster (const MuonCluster &mdt, RegionMap ®ionMap, const Amg::Vector3D &patpose, const Amg::Vector3D &patdire, bool hasPhiMeasurements) const |
|
void | insertMdt (const MdtPrepData &clus, RegionMap ®ionMap, const Amg::Vector3D &patpose, const Amg::Vector3D &patdire, bool hasPhiMeasurements) const |
|
template<class ContType > |
StatusCode | loadFromStoreGate (const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, const ContType *&cont_ptr) const |
| load the container from storegate given a ReadHandleKey. 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...
|
|
|
ToolHandle< IMdtDriftCircleOnTrackCreator > | m_mdtCreator |
|
ToolHandle< IMuonClusterOnTrackCreator > | m_clusterCreator |
|
PublicToolHandle< MuonEDMPrinterTool > | m_printer |
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc |
|
Gaudi::Property< bool > | m_doMultiAnalysis {this, "DoMultiChamberAnalysis", true} |
|
Gaudi::Property< double > | m_dropDistance {this, "DropDistance", 1500.} |
|
Gaudi::Property< double > | m_phiAngleCut {this, "AngleCutPhi", 1.e9} |
|
Gaudi::Property< bool > | m_doSummary {this, "DoSummary", false} |
|
Gaudi::Property< bool > | m_recoverTriggerHits {this, "RecoverTriggerHits", true} |
|
Gaudi::Property< bool > | m_removeDoubleMdtHits {this, "RemoveDoubleMdtHits", true} |
|
SG::ReadHandleKey< Muon::RpcPrepDataContainer > | m_keyRpc {this, "RpcPrepDataContainer","RPC_Measurements"} |
|
SG::ReadHandleKey< Muon::TgcPrepDataContainer > | m_keyTgc {this, "TgcPrepDataContainer","TGC_Measurements"} |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
Definition at line 30 of file MuonPatternCalibration.h.
◆ ClusterVec
◆ ISPrd
◆ ISPrdMdt
◆ ISPrdMdtVec
◆ ISPrdVec
◆ MdtVec
◆ MdtVecVec
◆ RegionIdMap
◆ RegionMap
◆ ROTsPerRegion
◆ StoreGateSvc_t
◆ MuonPatternCalibration()
Muon::MuonPatternCalibration::MuonPatternCalibration |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~MuonPatternCalibration()
virtual Muon::MuonPatternCalibration::~MuonPatternCalibration |
( |
| ) |
|
|
virtualdefault |
◆ calibrate()
◆ calibrateRegionMap()
Definition at line 431 of file MuonPatternCalibration.cxx.
435 for (
const auto& [regionId, regMeasColl] : regionMap) {
437 ROTRegion rotRegion{};
438 rotRegion.regionId = regionId;
439 rotRegion.regionPos = regMeasColl.regionPos;
440 rotRegion.regionDir = regMeasColl.regionDir;
442 for (
const auto& [globalPos, prd] : regMeasColl.triggerPrds) {
443 std::unique_ptr<const MuonClusterOnTrack> cluster{
m_clusterCreator->createRIO_OnTrack(*prd, globalPos)};
444 if (!cluster)
continue;
445 rotRegion.push_back(std::move(cluster));
447 for (
const auto& [regionId, MdtsWithIsect] :regMeasColl.mdtPrdsPerChamber) {
450 for (
const auto& [globalPos, prd] : MdtsWithIsect) {
452 <<
",tdc: "<<prd->tdc()<<
",adc: "<<prd->adc()<<
" at "<<
Amg::toString(globalPos));
453 const MdtDriftCircleOnTrack* mdt =
m_mdtCreator->createRIO_OnTrack(*prd, globalPos, &globalPos);
458 mdtROTs.push_back(mdt);
460 if (!mdtROTs.empty()) rotRegion.push_back(std::move(mdtROTs));
462 hitsPerRegion.push_back(std::move(rotRegion));
◆ checkForPhiMeasurements()
◆ createRegionMap()
Try to recover missing phi clusters:
- loop over the clusters in the region and sort them by collection
- count the number of eta and phi clusters per collection
Remove the NSW hits from the segment building
Definition at line 75 of file MuonPatternCalibration.cxx.
78 if (hasPhiMeasurements)
79 ATH_MSG_DEBUG(
"pattern has phi measurements using extrapolation to determine second coordinate");
89 for (
const MuonPatternChamberIntersect& isect :
pat.chamberData()) {
91 if (isect.prepRawDataVec().empty())
continue;
94 const Amg::Vector3D patdire = isect.intersectDirection().unit();
101 std::map<int, EtaPhiHits> etaPhiHitsPerChamber;
102 std::set<Identifier> clusterIds;
110 double phiStart = patdire.phi();
113 constexpr
double phiRange2 = 0.25 *
M_PI;
114 double phiOffset = 0.;
116 phiOffset = 2 *
M_PI;
117 else if (phiStart > -phiRange2 && phiStart < phiRange2)
120 if (phiOffset > 1.5 *
M_PI) {
121 if (phiStart < 0) phiStart += phiOffset;
122 if (chPhi < 0) chPhi += phiOffset;
123 }
else if (phiOffset > 0.) {
124 phiStart += phiOffset;
127 double dphi = std::abs(phiStart - chPhi);
130 ATH_MSG_DEBUG(
"Large angular phi difference between pattern and chamber, phi pattern "
136 std::map<Identifier, const MdtPrepData*> idMdtMap{};
143 const MdtPrepData*& previousMdt = idMdtMap[mdt->identify()];
144 if (!previousMdt || previousMdt->tdc() > mdt->tdc())
149 insertMdt(*mdt, regionMap, patpose, patdire, hasPhiMeasurements);
158 if (!clusterIds.insert(
id).second)
continue;
162 int colHash = clus->collectionHash();
163 EtaPhiHits& hitsPerChamber = etaPhiHitsPerChamber[colHash];
165 ++hitsPerChamber.nphi;
167 ++hitsPerChamber.neta;
169 insertCluster(*clus, regionMap, patpose, patdire, hasPhiMeasurements);
171 for (
const auto& [coll_hash,
hits] : etaPhiHitsPerChamber) {
172 if ((
hits.neta > 0 &&
hits.nphi == 0) || (
hits.nphi > 0 &&
hits.neta == 0)) {
181 if (!clusterIds.insert(rpc_prd->identify()).second)
continue;
182 insertCluster(*rpc_prd, regionMap, patpose, patdire, hasPhiMeasurements);
192 if (!clusterIds.insert(tgc_prd->identify()).second)
continue;
193 insertCluster(*tgc_prd, regionMap, patpose, patdire, hasPhiMeasurements);
199 return StatusCode::SUCCESS;
◆ 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);
◆ 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.
◆ 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.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ 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
◆ getRegionId()
int Muon::MuonPatternCalibration::getRegionId |
( |
const Identifier & |
id | ) |
const |
|
overridevirtual |
◆ initialize()
StatusCode Muon::MuonPatternCalibration::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.
◆ insertCluster()
Definition at line 203 of file MuonPatternCalibration.cxx.
214 if (hasPhiMeasurements) {
219 const Trk::Surface& surf = clus.detectorElement()->surface(
id);
222 double denom = patdire.dot(planenormal);
223 double u = (planenormal.dot(planepostion - patpose)) / (
denom);
227 const Amg::Transform3D gToLocal = clus.detectorElement()->surface().transform().inverse();
235 bool hasPointingPhiStrips =
false;
240 striplen = rpc->detectorElement()->StripLength(measuresPhi);
247 hasPointingPhiStrips =
true;
248 striplen = tgc->detectorElement()->stripLength();
251 striplen = tgc->detectorElement()->gangCentralWidth(
gasGap, wire);
257 glpos[0] = ilpos.x();
259 if (hasPointingPhiStrips) {
261 glpos[1] = ilpos.y();
263 glpos[1] = ilpos.y();
272 ATH_MSG_VERBOSE(
">>>> extrapolated position far outside volume, dropping hit "
273 <<
m_idHelperSvc->toString(
id) <<
". dist along strip " << dif.mag() <<
" 1/2 strip len "
274 << 0.5 * striplen <<
" dist measurement plane " << (
intersect - piOnPlane).mag());
277 if (dif.mag() > 0.5 * striplen) {
278 Amg::Vector3D newpos = globalpos - dif * (0.5 * striplen / dif.mag());
280 ATH_MSG_VERBOSE(
">>>> extrapolated position outside volume, shifting position "
281 <<
m_idHelperSvc->toString(
id) <<
". position along strip " << dif.mag() <<
" 1/2 tube len "
282 << 0.5 * striplen <<
" dist To strip " << (
intersect - piOnPlane).mag()
283 <<
". dist to newpos " << (newpos - globalpos).mag() <<
" pos " << newpos);
295 Region& region = regionMap[regionId];
297 region.regionDir = patdire;
298 region.regionPos = patpose;
301 region.triggerPrds.emplace_back(
intersect, &clus);
◆ insertMdt()
Definition at line 306 of file MuonPatternCalibration.cxx.
316 if (hasPhiMeasurements) {
331 double denom = patdire.dot(planenormal);
332 double u = (planenormal.dot(planepostion - patpose)) / (
denom);
335 Amg::Vector3D lpiOnPlane = amdbToGlobal.inverse() * piOnPlane;
344 if (dif.mag() > 0.5 * tubelen) {
345 Amg::Vector3D newpos = tubePos - dif * (0.5 * tubelen / dif.mag());
347 ATH_MSG_VERBOSE(
">>>> extrapolated position outside volume, shifting position "
348 <<
m_idHelperSvc->toString(
id) <<
". position along strip " << dif.mag() <<
" 1/2 tube len "
349 << 0.5 * tubelen <<
" dist To Wire " << (piOnPlane -
intersect).mag() <<
". dist to newpos "
350 << (newpos - tubePos).mag() <<
" pos " << newpos);
370 if (std::abs(
eta) == 8) {
380 if (stName[2] ==
'R') {
398 Region& region = regionMap[regionId];
400 region.regionPos = patpose;
401 region.regionDir = patdire;
404 region.mdtPrdsPerChamber[chFlag].emplace_back(
intersect, &mdt);
◆ interfaceID()
static const InterfaceID& Muon::IMuonPatternCalibration::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
access to tool interface
Definition at line 58 of file IMuonPatternCalibration.h.
59 static const InterfaceID IID_IMuonPatternCalibration(
"Muon::IMuonPatternCalibration", 1, 0);
60 return IID_IMuonPatternCalibration;
◆ loadFromStoreGate()
template<class ContType >
StatusCode Muon::MuonPatternCalibration::loadFromStoreGate |
( |
const EventContext & |
ctx, |
|
|
const SG::ReadHandleKey< ContType > & |
key, |
|
|
const ContType *& |
cont_ptr |
|
) |
| const |
|
private |
load the container from storegate given a ReadHandleKey.
If the key is empty a nullptr will be returned
Definition at line 466 of file MuonPatternCalibration.cxx.
472 return StatusCode::SUCCESS;
475 if (!readHandle.isValid()) {
477 return StatusCode::FAILURE;
479 cont_ptr = readHandle.cptr();
480 return StatusCode::SUCCESS;
◆ 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.
◆ printRegionMap()
void Muon::MuonPatternCalibration::printRegionMap |
( |
const RegionMap & |
regionMap | ) |
const |
|
private |
Definition at line 408 of file MuonPatternCalibration.cxx.
413 for (
const auto& [detRegionId, chamberData] : regionMap) {
414 ATH_MSG_INFO(
"new region " << detRegionId <<
" trigger " << chamberData.triggerPrds.size() <<
" mdt ch "
415 << chamberData.mdtPrdsPerChamber.size());
416 if (!chamberData.triggerPrds.empty())
ATH_MSG_INFO(
"trigger hits " << chamberData.triggerPrds.size());
418 for (
const auto& [globalPos, prd] : chamberData.triggerPrds) {
421 for (
const auto& [statId, MdtChamHits]: chamberData.mdtPrdsPerChamber) {
422 ATH_MSG_INFO(
"new MDT chamber with " << MdtChamHits.size() <<
" hits");
423 for (
const auto& [globalPos, prd] : MdtChamHits) {
◆ renounce()
◆ renounceArray()
◆ 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_clusterCreator
Initial value:{
this,
"ClusterCreator",
"Muon::MuonClusterOnTrackCreator/MuonClusterOnTrackCreator",
}
Definition at line 88 of file MuonPatternCalibration.h.
◆ m_detStore
◆ m_doMultiAnalysis
Gaudi::Property<bool> Muon::MuonPatternCalibration::m_doMultiAnalysis {this, "DoMultiChamberAnalysis", true} |
|
private |
◆ m_doSummary
Gaudi::Property<bool> Muon::MuonPatternCalibration::m_doSummary {this, "DoSummary", false} |
|
private |
◆ m_dropDistance
Gaudi::Property<double> Muon::MuonPatternCalibration::m_dropDistance {this, "DropDistance", 1500.} |
|
private |
◆ m_evtStore
◆ m_idHelperSvc
Initial value:{
this,
"MuonIdHelperSvc",
"Muon::MuonIdHelperSvc/MuonIdHelperSvc",
}
Definition at line 99 of file MuonPatternCalibration.h.
◆ m_keyRpc
◆ m_keyTgc
◆ m_mdtCreator
◆ m_phiAngleCut
Gaudi::Property<double> Muon::MuonPatternCalibration::m_phiAngleCut {this, "AngleCutPhi", 1.e9} |
|
private |
◆ m_printer
◆ m_recoverTriggerHits
Gaudi::Property<bool> Muon::MuonPatternCalibration::m_recoverTriggerHits {this, "RecoverTriggerHits", true} |
|
private |
◆ m_removeDoubleMdtHits
Gaudi::Property<bool> Muon::MuonPatternCalibration::m_removeDoubleMdtHits {this, "RemoveDoubleMdtHits", true} |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
Gaudi::Property< bool > m_removeDoubleMdtHits
std::vector< const MdtDriftCircleOnTrack * > MdtVec
Template for Muon PRD containers (which are basically collections of MuonPrepDataCollections).
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
PublicToolHandle< MuonEDMPrinterTool > m_printer
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
int getRegionId(const Identifier &id) const override
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
#define ATH_MSG_VERBOSE(x)
const Amg::Vector3D & center() const
Returns the center position of the Surface.
void calibrateRegionMap(const RegionMap ®ionMap, IMuonPatternCalibration::ROTsPerRegion &hitsPerRegion) const
Gaudi::Property< bool > m_recoverTriggerHits
@ u
Enums for curvilinear frames.
virtual void setOwner(IDataHandleHolder *o)=0
ToolHandle< IMuonClusterOnTrackCreator > m_clusterCreator
std::map< int, Region > RegionMap
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
value_type get_compact(void) const
Get the compact id.
Class to represent RPC measurements.
double getActiveTubeLength(const int tubeLayer, const int tube) const
Eigen::Affine3d Transform3D
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
void insertCluster(const MuonCluster &mdt, RegionMap ®ionMap, const Amg::Vector3D &patpose, const Amg::Vector3D &patdire, bool hasPhiMeasurements) const
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
const Amg::Vector3D globalPosition() const
Template to hold collections of MuonPrepRawData objects.
Gaudi::Property< double > m_dropDistance
bool checkForPhiMeasurements(const MuonPatternCombination &pat) const override
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Identifier identify() const
return the identifier
StatusCode loadFromStoreGate(const EventContext &ctx, const SG::ReadHandleKey< ContType > &key, const ContType *&cont_ptr) const
load the container from storegate given a ReadHandleKey.
void insertMdt(const MdtPrepData &clus, RegionMap ®ionMap, const Amg::Vector3D &patpose, const Amg::Vector3D &patdire, bool hasPhiMeasurements) const
Definition of ATLAS Math & Geometry primitives (Amg)
Eigen::Matrix< double, 3, 1 > Vector3D
Gaudi::Property< double > m_phiAngleCut
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_keyTgc
ToolHandle< IMdtDriftCircleOnTrackCreator > m_mdtCreator
std::optional< double > intersect(const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
Calculates the closest approach of two lines.
Class to represent TGC measurements.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
ChIndex
enum to classify the different chamber layers in the muon spectrometer
StatusCode createRegionMap(const EventContext &ctx, const MuonPatternCombination &pat, RegionMap ®ionMap, bool hasPhiMeasurements) const
phiRange
Filling Phi ranges.
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_keyRpc
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
Gaudi::Property< bool > m_doMultiAnalysis
virtual const Amg::Vector3D & center() const =0
Return the center of the element.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual const TrkDetElementBase * detectorElement() const =0
return the detector element corresponding to this PRD The pointer will be zero if the det el is not d...