|
ATLAS Offline Software
|
Go to the documentation of this file.
9 #include "MdtCalibSvc/MdtCalibrationSvcInput.h"
10 #include "MdtCalibSvc/MdtCalibrationSvcSettings.h"
36 std::string managerName =
"Muon";
60 return StatusCode::SUCCESS;
66 return StatusCode::SUCCESS;
70 std::unique_ptr<MuonCalibPatternCollection> newPatterns)
const {
73 ATH_CHECK(writeHandle.record(std::move(newPatterns)));
74 return StatusCode::SUCCESS;
82 std::unique_ptr<MuonCalibPatternCollection>
patterns = std::make_unique<MuonCalibPatternCollection>();
89 ATH_MSG_ERROR(
"Null pointer to the read MuonDetectorManager conditions object");
90 return StatusCode::FAILURE;
102 for (; sit != sit_end; ++sit) {
108 ATH_MSG_INFO(
" This MuonSegPatAssMap for MDTs should only have one entry!! ");
112 ATH_MSG_WARNING(
"MDT Combination missing from the map - something is wrong! " << *sit);
117 ATH_MSG_DEBUG(
"New segment combination covering " << (*sit)->numberOfStations() <<
" station ");
120 unsigned int nstations = (*sit)->numberOfStations();
121 for (
unsigned int i = 0;
i != nstations; ++
i) {
124 ATH_MSG_VERBOSE(
"New station with " << stationSegs->size() <<
" segments ");
125 for (
const std::unique_ptr<Muon::MuonSegment>& seg : *stationSegs) {
146 int nStoredSegments = 0;
153 ATH_MSG_INFO(
"For " <<
key.fullKey() <<
", hit max number of segments = " << nStoredSegments);
170 std::unique_ptr<MuonCalibPattern>
pat = std::make_unique<MuonCalibPattern>();
176 mdtSeg->setAuthor(*autIt);
178 pat->addMuonSegment(mdtSeg);
197 for (; sit != sit_end; ++sit) {
199 if ((*sit)->numberOfStations() == 1) {
200 if ((*sit)->stationSegments(0)->size() == 0)
continue;
209 ATH_MSG_DEBUG(
"CSC Combination missing from the map - No combined pattern found for this CSC Segment Combination! "
215 ATH_MSG_DEBUG(
"New Csc segment combination covering " << (*sit)->numberOfStations() <<
" station ");
218 unsigned int nstations = (*sit)->numberOfStations();
219 for (
unsigned int i = 0;
i != nstations; ++
i) {
222 ATH_MSG_VERBOSE(
"New Csc station with " << stationSegs->size() <<
" segments ");
227 for (; segit != segit_end; ++segit) {
247 return StatusCode::SUCCESS;
302 ATH_MSG_WARNING(
" Oops, should not be here, returning default transform ");
321 Amg::Vector3D segDirLCheck = gToStationCheck.linear() * segDirG;
323 double qualityFactor(1e9);
336 double chi2check = 0;
341 double thetaCheck = std::atan2(segDirLCheck[2], segDirLCheck[1]);
342 ATH_MSG_DEBUG(
" MuonSegment TO CalibSegment segment found ");
344 if (std::abs(thetaCheck - thetan) > 0.0001)
ATH_MSG_DEBUG(
" ALARM angle difference " << thetaCheck - thetan);
345 ATH_MSG_DEBUG(
" segPosL " << segPosL <<
" segPosG " << segPosG <<
" local angle " << thetan <<
" thetaCheck " << thetaCheck);
346 ATH_MSG_DEBUG(
" segDirL " << segDirL <<
" segDirG " << segDirG <<
" phi " << segDirG.phi() <<
" segDirLCheck " << segDirLCheck);
348 bool segment_with_multiple_t0s(
false);
350 int nm(0), nr(0),
nt(0),
nc(0);
354 std::vector<const Trk::MeasurementBase*>::const_iterator rit = rots.begin();
355 std::vector<const Trk::MeasurementBase*>::const_iterator rit_end = rots.end();
356 for (; rit != rit_end; ++rit) {
360 bool competingRio =
false;
402 if (!pStraightLineSurface) {
415 tubeDirLoc = tubeDirLoc.unit();
416 if (tubeDirLoc.x() < 0.) tubeDirLoc = -tubeDirLoc;
420 segDirLoc = segDirLoc.unit();
424 Amg::Vector3D segDirLocprojected = segDirLoc - (tubeDirLoc.dot(segDirLoc)) * tubeDirLoc;
425 segDirLocprojected = segDirLocprojected.unit();
427 double ImpactParameter = tubeDirLoc.dot(TubSegLoc.cross(segDirLocprojected));
429 double ScaleDenomi = 1. -
std::pow(tubeDirLoc.dot(segDirLoc), 2);
430 double ScaleOnTube = (tubeDirLoc.dot(TubSegLoc) - (segDirLoc.dot(TubSegLoc)) * (tubeDirLoc.dot(segDirLoc))) / ScaleDenomi;
431 double ScaleOnSeg = (-segDirLoc.dot(TubSegLoc) + (tubeDirLoc.dot(TubSegLoc)) * (tubeDirLoc.dot(segDirLoc))) / ScaleDenomi;
433 Amg::Vector3D tubePosLocAtDCA = tubePosLoc + ScaleOnTube * tubeDirLoc;
434 Amg::Vector3D segPosLocAtDCA = segPosLoc + ScaleOnSeg * segDirLoc;
436 Amg::Vector3D segPosAtDCA = gToStation.inverse() * segPosLocAtDCA;
442 double rtrk = cosin * (mdtSeg->
position().y() - tubePosLoc.y()) - sinus * (mdtSeg->
position().z() - tubePosLoc.z());
445 double locx = trk_pos_loc_rot.x();
446 double locy = tubePosLoc.y() + cosin * rtrk;
447 double locz = tubePosLoc.z() - sinus * rtrk;
450 ATH_MSG_DEBUG(
" trk_pos_loc_rot " << trk_pos_loc_rot <<
" tubePosLoc " << tubePosLoc <<
" trk_pos_loc " << trk_pos_loc
451 <<
" trk_pos_rot " << trk_pos_rot);
453 ATH_MSG_DEBUG(
" standard rtrk " << rtrk <<
" ImpactParameter " << ImpactParameter <<
" diff rtrk " << rtrk - ImpactParameter
454 <<
" trk_pos " << trk_pos <<
" OR segPosAtDCA " << segPosAtDCA);
456 if (std::abs(rtrk - ImpactParameter) > 0.001)
457 ATH_MSG_DEBUG(
" ALARM Impact parameter difference " << rtrk - ImpactParameter);
461 rtrk = ImpactParameter;
462 trk_pos = segPosAtDCA;
471 if (seg.
author() == 3) { tubePosLoc = tubePosLocAtDCA; }
473 double xLocTwin(-99999999.);
478 ATH_MSG_DEBUG(
" Twin Position : prd->localPosition()[Trk::locY] = "
481 <<
" multilayer = " <<
m_idHelperSvc->mdtIdHelper().multilayer(test_prd_Id)
482 <<
" layer = " <<
m_idHelperSvc->mdtIdHelper().tubeLayer(test_prd_Id)
483 <<
" tube = " <<
m_idHelperSvc->mdtIdHelper().tube(test_prd_Id)
484 <<
" modulo4 = " << (
m_idHelperSvc->mdtIdHelper().tube(test_prd_Id) % 4));
489 ATH_MSG_DEBUG(
" CHECK lposTrking = " << lposTrking.z() <<
" lposAMDB " << lposAMDB.x());
491 xLocTwin = lposAMDB.x();
506 MdtCalibrationSvcSettings settings;
517 settings.windowSetting = rotErrorStrategy.
calibWindow();
518 settings.initialize();
522 if (apply_t0 && (t0Shift == 0.0)) { t0Shift = seg.
time(); }
523 MdtCalibrationSvcInput
input;
528 bool sameChamber =
false;
534 if (!sameChamber)
ATH_MSG_DEBUG(
"Moving to a new chamber! " << cachedId <<
" to " <<
id);
538 if (t0Shift == 0 || seg.
author() != 3 || sameChamber) {
540 input.tof += t0Shift;
543 segment_with_multiple_t0s =
true;
549 input.tof += t0Shift;
552 if (std::abs(seg.
time() - t0Shift) > 0.01 && std::abs(t0Shift) > 0.01) {
553 ATH_MSG_INFO(
" Inconsistent fitted t0 found: from ROT " << t0Shift <<
" from segment " << seg.
time());
558 double oldDriftTime = calibHit.
driftTime();
571 if (std::abs(timeDif) >= 0.1 && !segment_with_multiple_t0s) {
574 << calibHit.
driftTime() <<
" old " << oldDriftTime <<
" author " << seg.
author());
591 double resi = std::abs(driftR) - std::abs(rtrk);
592 if (rtrk < 0) resi = -resi;
594 double chi2c = (resi * resi) / error2;
602 ATH_MSG_DEBUG(
" station " << st <<
" eta " << fixid.
eta() <<
" phi " << fixid.
phi() <<
" ML " << ml <<
" Layer " << la
603 <<
" drift R " << driftR <<
" MROT drift R " << mrot->
driftRadius() <<
" drift Time "
604 << mrot->
driftTime() <<
" ROT error " << std::sqrt(error2) <<
" residual " << resi
605 <<
" tubePosLoc " << tubePosLoc <<
" t0 shift " << t0Shift <<
" chi2c " << chi2c);
606 if (std::sqrt(error2) < 1.999)
ATH_MSG_DEBUG(
" ALARM TOO SMALL drift error ");
607 if (chi2c > qualityFactor)
ATH_MSG_DEBUG(
" ALARM TOO LARGE chi2 single hit ");
620 for (
int irio = 0; irio < nRios; ++irio) {
622 if (competingRio) rot = &rotc->
rioOnTrack(irio);
626 if (competingRio)
ATH_MSG_DEBUG(
"Found RPC Competing Rio !");
642 double time = rprd->
time();
673 for (
int irio = 0; irio < nRios; ++irio) {
675 if (competingRio) rot = &rotc->
rioOnTrack(irio);
679 if (competingRio)
ATH_MSG_DEBUG(
"Found TGC Competing Rio !");
724 for (
int irio = 0; irio < nRios; ++irio) {
726 if (competingRio) rot = &rotc->
rioOnTrack(irio);
727 ATH_MSG_DEBUG((competingRio ?
"Found CSC Competing Rio !" :
"Found CSC Rio !"));
739 int measuresPhi =
m_idHelperSvc->cscIdHelper().measuresPhi(
id);
740 int chamberLayer =
m_idHelperSvc->cscIdHelper().chamberLayer(
id);
769 if (qualityFactor > 0.0001) {
770 if (chi2check / qualityFactor > 1.01 || chi2check / qualityFactor < 0.99) {
772 <<
"Mdt segment chi2 " << qualityFactor <<
" mdt hits " <<
nm <<
" chi2check " << chi2check <<
" t0Shift "
776 <<
"Mdt segment chi2 " << qualityFactor <<
" mdt hits " <<
nm <<
" chi2check " << chi2check <<
" t0Shift "
781 <<
"Mdt segment chi2 " << qualityFactor <<
" mdt hits " <<
nm <<
" chi2check " << chi2check <<
" t0Shift "
804 pars.invP = (10. *
charge) / (perigee->momentum().mag());
805 pars.z0 = perigee->position().z();
807 ATH_MSG_DEBUG(
" pat " << perigee->position() <<
" " << perigee->momentum());
809 ATH_MSG_WARNING(
"Trackparameters are not set or is not a Perigee!! Pattern gets empty parameters");
813 const std::vector<Muon::MuonPatternChamberIntersect>& mpcivec =
pat->chamberData();
814 std::vector<Muon::MuonPatternChamberIntersect>::const_iterator pat_it = mpcivec.begin();
815 for (; pat_it != mpcivec.end(); ++pat_it) {
816 const std::vector<const Trk::PrepRawData*> prdvec = (*pat_it).prepRawDataVec();
817 std::vector<const Trk::PrepRawData*>::const_iterator prd_it = prdvec.begin();
818 for (; prd_it != prdvec.end(); ++prd_it) {
838 ATH_MSG_INFO(
"PrepRawData on pat is not a muon-technom_logy");
860 <<
" hots " <<
q->numberDoF() + 2 <<
" number of holes " <<
q->channelsWithoutHit().size());
862 unsigned int packedInfo = 0;
864 packedInfo += 100 * (
q->channelsWithoutHit().size() < 9 ?
q->channelsWithoutHit().size() : 9);
870 template <
class container_type>
872 const container_type*& container_ptr)
const {
874 if (!readHandle.isValid()) {
876 return StatusCode::FAILURE;
878 container_ptr = readHandle.cptr();
880 const container_type* container{readHandle.cptr()};
883 return StatusCode::FAILURE;
885 return StatusCode::SUCCESS;
JetConstituentVector::iterator iterator
ToolHandle< MdtCalibrationTool > m_calibrationTool
pointer to MdtCalibSvc
const RpcReadoutElement * getRpcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
MuonSegmentToCalibSegment(const std::string &name, ISvcLocator *pSvcLocator)
Algorithm constructor.
void setLocalPos(const Amg::Vector3D &localPos)
sets the position in the station coordinates
unsigned int hitsOnTrack() const
retrieve the sum of all XxxCalibHits assigned to the MuonCalibSegment
@ WireSagTimeCorrection
Wire sag correction was applied in calibration.
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Const iterator class for DataVector/DataList.
const Amg::Vector3D & globalPointOfClosestApproach() const
retrieve the point of closest approach in global coordinates
Gaudi::Property< bool > m_newImpactParameter
double StripLength(bool measphi) const
returns the strip length for the phi or eta plane
Gaudi::Property< bool > m_doTof
virtual const Amg::Vector3D & globalPosition() const override
Returns global position.
virtual const MdtPrepData * prepRawData() const override final
Returns the PrepRawData used to create this corrected measurement.
ToolHandle< IIdToFixedIdTool > m_idToFixedIdTool
int charge() const
Returns the charge.
Gaudi::Property< std::vector< int > > m_segment_authors
void setSegmentT0Applied(bool flag)
sets flag if Segment T0 has been applied to hit
std::vector< std::string > patterns
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
const Trk::RIO_OnTrack * rioOnTrack(unsigned int) const
returns the RIO_OnTrack (also known as ROT) objects depending on the integer
virtual Amg::Transform3D GlobalToAmdbLRSTransform() const
void setLocXtwin(float xtwin)
sets twin local position
int mdtMultilayer() const
Mdt specific:
Class to represent calibrated clusters formed from TGC strips.
unsigned long calibWindow() const
Returns calibration configuration.
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
bool msgLvl(const MSG::Level lvl) const
const Amg::Vector3D & position() const
retrieve local position of segment (on station level)
const MuonDriftCircleErrorStrategy & errorStrategy() const
Get information about the creation strategy used by Muon::MdtDriftCircleOnTrackCreator when making th...
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
virtual const MuonGM::TgcReadoutElement * detectorElement() const override final
Returns the detector element corresponding to this PRD The pointer will be zero if the det el is not ...
Class to represent calibrated clusters formed from RPC strips.
#define ATH_MSG_VERBOSE(x)
Property holding a SG store/key/clid from which a ReadHandle is made.
int adc() const
Returns the ADC (typically range is 0 to 250)
unsigned int numberOfContainedROTs() const
number of RIO_OnTracks
bool is_valid() const
Check if id is in a valid state.
bool hasFittedT0() const
returns whether the segment has a fitted t0
SG::WriteHandleKey< MuonCalibPatternCollection > m_patternKey
pattern location
virtual const Amg::Vector3D & globalPosition() const override final
Returns the global Position.
@ PropCorrection
Propagation correction was applied in calibration.
void setDistanceToReadout(double dist)
sets the distance to read out
MuonCalib::MdtCalibHitBase * hitBase(const MuonCalib::IIdToFixedIdTool &) const
return a pointer to the MdtCalibHit object to be used in the calibration framework
@ TempCorrection
Temperature correction was applied in calibration.
void setGlobalPointOfClosestApproach(const Amg::Vector3D &point)
sets point of closest approach in global coordinates
double driftTime() const
Returns the value of the drift time used to obtain the drift radius.
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip)
@ T0Refit
A special error was applied to account for the T0 refit (user defined via jobProperties)
double distanceFromRO(const Amg::Vector3D &GlobalHitPosition, const Identifier &id) const
const Amg::Vector3D & direction() const
retrieve local direction of segment (on station level) retrieve the transformation from local chamber...
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
float time() const
Returns the time.
virtual const TgcPrepData * prepRawData() const
Returns the TgcPrepData - is a TRT_DriftCircle in this scope.
StatusCode execute()
Algorithm execute, called once per event.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Handle class for recording to StoreGate.
@ SlewCorrection
Slewing correction was applied in calibration.
virtual const RIO_OnTrack & rioOnTrack(unsigned int) const =0
returns the RIO_OnTrack (also known as ROT) objects depending on the integer.
unsigned int cscHitsOnTrack() const
retrieve the number of CscCalibHitBase s assigned to this segment
double driftRadius() const
retrieve drift radius
void setDriftRadius(double r, double sigmaR)
sets drift radius and drift radius error
unsigned int getQuality(const Muon::MuonSegment &seg) const
Identifier getChId(const Muon::MuonSegment &seg) const
const MdtReadoutElement * getMdtReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
StatusCode retrieveContainer(const EventContext &ctx, const SG::ReadHandleKey< container_type > &key, const container_type *&container_ptr) const
double distanceToPhiReadout(const Amg::Vector3D &P) const
virtual unsigned int numberOfContainedROTs() const =0
Number of RIO_OnTracks to be contained by this CompetingRIOsOnTrack.
Class to represent RPC measurements.
virtual const MuonGM::RpcReadoutElement * detectorElement() const override final
Returns the detector element corresponding to this PRD.
const CscReadoutElement * getCscReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Class representing clusters from the CSC.
@ TofCorrection
Time of flight correction was applied in calibration.
::StatusCode StatusCode
StatusCode definition for legacy code.
CalibratedSpacePoint::Covariance_t inverse(const CalibratedSpacePoint::Covariance_t &mat)
Inverts the parsed matrix.
double sigmaDriftRadius() const
retrieve the error on the radius of the drift circle
Eigen::Affine3d Transform3D
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.
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
virtual const Amg::Vector3D & globalPosition() const
Returns the global position of the CENTER of the drift tube (i.e.
@ BackgroundCorrection
Background correction was applied in calibration.
Amg::Transform3D getGlobalToStation(const Identifier &id, const MuonGM::MuonDetectorManager *MuonDetMgr) const
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
double driftRadius() const
Returns the value of the drift radius.
static std::string stationNumberToFixedStationString(const int station)
@ MagFieldCorrection
Magnetic field correction was applied in calibration.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
virtual const MuonGM::CscReadoutElement * detectorElement() const override final
Return the detector element corresponding to this PRD.
void setStripLength(double stripLength)
sets the strip length
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)
virtual const RpcPrepData * prepRawData() const override final
Returns the RpcPrepData - is a TRT_DriftCircle in this scope.
StatusCode savePatterns(const EventContext &ctx, std::unique_ptr< MuonCalibPatternCollection > newPatterns) const
save global patterns to storegate
Identifier identify() const
return the identifier
void setIdentifier(const MuonFixedId &id)
sets the MuonFixedId of the hit
Gaudi::Property< int > m_maxStoredSegs
maximum number of segments each algorithm can store in ntuple
void setDistanceToTrack(double dist, double sigmaDist)
sets the distance to the fitted track and its error
SG::ReadHandleKey< MuonSegmentCombinationCollection > m_CscSegKey
int tdc() const
Returns the TDC (typically range is 0 to 2500).
double lorentzTime() const
retrieve the timing correction due to the magnetic field (lorentz angle)
Gaudi::Property< int > m_updateForT0Shift
-1: Take infirmation from error-strategy 0: fitted t0 is not applied to drift times 1: fitted t0 is a...
const Amg::Vector2D & localPosition() const
return the local position reference
void addMuonSegment(MuonCalibSegPtr seg)
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
double charge(const T &p)
StatusCode initialize(bool used=true)
Class to represent measurements from the Monitored Drift Tubes.
Eigen::Matrix< double, 3, 1 > Vector3D
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
virtual const CscPrepData * prepRawData() const override final
Returns the CscPrepData - is a CscPrepData in this scope.
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
MuonDetectorManager from the conditions store.
void setFittedT0(double t0)
sets t0 field
double StripWidth(bool measphi) const
returns the strip width for the phi or eta plane
Gaudi::Property< bool > m_useCscSegments
void addHitOnTrack(MdtCalibHitBase *hit)
add the MdtCalibHitBase to the set assigned to the segment
Class to represent the calibrated clusters created from CSC strips.
void setIdentifier(const MuonFixedId &id)
sets the MuonFixedId
StatusCode initialize()
Algorithm initialize.
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
#define ATH_MSG_WARNING(x)
Gaudi::Property< bool > m_readSegments
segment location
std::vector< std::unique_ptr< MuonSegment > > SegmentVec
Identifier identify() const
return the identifier -extends MeasurementBase
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Class to represent TGC measurements.
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
double chiSquared() const
returns the of the overall track fit
Author author() const
return segment author
virtual const Amg::Vector3D & globalPosition() const override final
global position
MuonCalibPattern * createMuonCalibPattern(const Muon::MuonPatternCombination *pat) const
void setIdentifier(const MuonFixedId &id)
sets the identifier (MuonFixedId)
double distanceToEtaReadout(const Amg::Vector3D &P) const
float time() const
access to the measured time
SG::ReadHandleKeyArray< Trk::SegmentCollection > m_TrkSegKey
double driftTime() const
retrieve drift time
The MuonPatternCombination class provides the means to store the output of the initial global pattern...
const FitQuality * fitQuality() const
return the FitQuality object, returns NULL if no FitQuality is defined
SG::ReadHandleKey< MuonSegmentCombinationCollection > m_CombSegKey
constexpr int pow(int base, int exp) noexcept
setBGCode setTAP setLVL2ErrorBits bool
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual const MuonGM::MdtReadoutElement * detectorElement() const override
Returns the detector element corresponding to this PRD.
bool creationParameter(CreationParameter) const
StatusCode convertPatterns(const EventContext &ctx)
void setAuthor(int author)
sets author field
void setDistanceToRO(const double distance)
sets the distance of the hit to readout
MuonCalibSegment * createMuonCalibSegment(const Muon::MuonSegment &seg, const MuonGM::MuonDetectorManager *MuonDetMgr) const
int mdtTubeLayer() const
Mdt specific:
virtual const Trk::PlaneSurface & associatedSurface() const override final
returns the surface for the local to global transformation
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
const Amg::Vector3D & globalDirection() const
global direction
double cathodeReadoutPitch(int chLayer, int measuresPhi) const
ToolHandle< Muon::IMuonPatternSegmentAssociationTool > m_assocTool
IdentifierTool initialization.