16 declareInterface<IMuonPRDSelectionTool>(
this);
24 return StatusCode::SUCCESS;
30 msg(MSG::DEBUG) <<
" intersection: in sector " <<
intersection.layerSurface.sector
34 <<
" phi " <<
intersection.trackParameters->position().phi()
40 if( !layerPrepRawData.
mdts.empty() )
msg(MSG::DEBUG) <<
" MDTs " << layerPrepRawData.
mdts.size();
41 if( !layerPrepRawData.
rpcs.empty() )
msg(MSG::DEBUG) <<
" RPCs " << layerPrepRawData.
rpcs.size();
42 if( !layerPrepRawData.
tgcs.empty() )
msg(MSG::DEBUG) <<
" TGCs " << layerPrepRawData.
tgcs.size();
43 if( !layerPrepRawData.
cscs.empty() )
msg(MSG::DEBUG) <<
" CSCs " << layerPrepRawData.
cscs.size();
44 if( !layerPrepRawData.
stgcs.empty() )
msg(MSG::DEBUG) <<
" STGCs " << layerPrepRawData.
stgcs.size();
45 if( !layerPrepRawData.
mms.empty() )
msg(MSG::DEBUG) <<
" MMs " << layerPrepRawData.
mms.size();
50 for(
const auto *col : layerPrepRawData.
mdts ){
55 for(
const auto *col : layerPrepRawData.
rpcs ){
60 for(
const auto *col : layerPrepRawData.
tgcs ){
65 for(
const auto *col : layerPrepRawData.
stgcs ){
70 for(
const auto *col : layerPrepRawData.
mms ){
90 if( !surface.
globalToLocal(intersect,direction,localPosition) ){
97 double distanceAlongTube = localPosition[
Trk::locZ];
99 if(
msgLvl(MSG::VERBOSE) ) {
105 if(
msgLvl(MSG::VERBOSE) )
msg(MSG::VERBOSE) <<
" outside tube second coordinate range, dropping " <<
endmsg;
110 if(
msgLvl(MSG::VERBOSE) )
msg(MSG::VERBOSE) <<
" too far from wire, dropping " <<
endmsg;
115 if( distanceAlongTube > tubeHalfLen ){
116 localPosition[
Trk::locZ] = distanceAlongTube < 0 ? -tubeHalfLen : tubeHalfLen;
118 if(
msgLvl(MSG::VERBOSE) )
msg(MSG::VERBOSE) <<
" outside tube, shifting";
143 if( !surf.
globalToLocal(intersect,direction,localPosition) ){
151 if(
msgLvl(MSG::VERBOSE) )
msg(MSG::VERBOSE) <<
" outside bounds, dropping " <<
endmsg;
186 double denom = direction.dot(planenormal);
187 double u = (planenormal.dot(planeposition - position))/denom;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
bool msgLvl(const MSG::Level lvl) const
double getActiveTubeLength(const int tubeLayer, const int tube) const
virtual const Trk::Surface & surface() const override final
Return surface associated with this detector element.
virtual Amg::Transform3D AmdbLRSToGlobalTransform() const
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
Class to represent measurements from the Monitored Drift Tubes.
virtual const MuonGM::MdtReadoutElement * detectorElement() const override
Returns the detector element corresponding to this PRD.
virtual const Amg::Vector3D & globalPosition() const
Returns the global position of the CENTER of the drift tube (i.e.
Base class for Muon cluster RIO_OnTracks.
Class representing clusters in the muon system.
struct holding RIO_OnTracks for a given layer
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...
Identifier identify() const
return the identifier
Abstract Base Class for tracking surfaces.
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const =0
Specified by each surface type: LocalToGlobal method without dynamic memory allocation.
Intersection straightLineIntersection(const T &pars, bool forceDir=false, const Trk::BoundaryCheck &bchk=false) const
fst straight line intersection schema - templated for charged and neutral parameters
virtual const Surface & surface() const =0
Return surface associated with this detector element.
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)
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 ...
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
const std::string & layerName(LayerIndex index)
convert LayerIndex into a string
const std::string & regionName(DetectorRegionIndex index)
convert DetectorRegionIndex into a string
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
@ loc2
generic first and second local coordinate
ParametersBase< TrackParametersDim, Charged > TrackParameters
Struct to hold all PrepRawData collections in a given layer.
std::vector< const CscPrepDataCollection * > cscs
std::vector< const MMPrepDataCollection * > mms
std::vector< const TgcPrepDataCollection * > tgcs
std::vector< const MdtPrepDataCollection * > mdts
std::vector< const RpcPrepDataCollection * > rpcs
std::vector< const sTgcPrepDataCollection * > stgcs