30 declareInterface<IMuonClusterOnTrackCreator>(
this);
31 declareInterface<IRIO_OnTrackCreator>(
this);
40 ATH_MSG_ERROR(
"The given detector layout does not contain any CSC chamber, "<<
41 "there must be something wrong in the configuration,"
42 <<
" since the CscClusterOnTrackCreator cannot be needed.");
43 return StatusCode::FAILURE;
52 return StatusCode::SUCCESS;
62 ATH_MSG_WARNING(
"RIO does not have associated detectorElement!, cannot produce ROT");
79 double positionAlongStrip = 0;
81 if (!
EL->surface(RIO.
identify()).globalToLocal(GP, GP, lp)) {
83 ATH_MSG_WARNING(
"Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
123 ATH_MSG_WARNING(
"CscClusterOnTrackCreator::createRIO_OnTrack is called by the other muon tech");
131 ATH_MSG_WARNING(
"RIO does not have associated detectorElement!, cannot produce ROT");
155 double positionAlongStrip = 0;
157 if (!
EL->surface(RIO.
identify()).globalToLocal(GP, GP, lp)) {
159 ATH_MSG_WARNING(
"Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
186 double tantheta = d.x() / d.z();
188 std::vector<ICscClusterFitter::Result> results, results0;
192 if (results.empty() || results0.empty()) {
200 int fitresult =
res.fitStatus;
203 <<
"cluStatus: " <<
res.clusterStatus <<
"fitStatus: " <<
res.fitStatus);
211 <<
" :: tanangle : " << tantheta);
218 double nominal_error =
res.dposition;
219 double errorCorrected =
224 newloce.setIdentity();
225 newloce *= errorCorrected * errorCorrected;
231 ->getScaledCovariance(std::move(newloce),
Trk::distPhi);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
std::pair< std::vector< unsigned int >, bool > res
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Gaudi::Property< double > m_minimumError
virtual MuonClusterOnTrack * createRIO_OnTrack(const Trk::PrepRawData &RIO, const Amg::Vector3D &GP) const override
Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and a predicted Trk::TrackParameter.
virtual MuonClusterOnTrack * correct(const Trk::PrepRawData &RIO, const Trk::TrackParameters &TP, const EventContext &) const override
Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and the predicted Trk::TrackParameter at ...
Gaudi::Property< double > m_errorScalerBeta
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_cscErrorScalingKey
ToolHandle< ICscStripFitter > m_stripFitter
ToolHandle< ICscClusterFitter > m_clusterFitter
virtual const ToolHandle< ICscClusterUtilTool > & GetICscClusterUtilTool() const override
Gaudi::Property< double > m_errorScaler
virtual ~CscClusterOnTrackCreator()
CscClusterOnTrackCreator(const std::string &, const std::string &, const IInterface *)
virtual StatusCode initialize() override
virtual const ToolHandle< ICscStripFitter > & GetICscStripFitter() const override
These functions are provided from the interface.
virtual const ToolHandle< ICscClusterFitter > & GetICscClusterFitter() const override
ToolHandle< ICscClusterUtilTool > m_clusterUtilTool
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Class to represent the calibrated clusters created from CSC strips.
Class representing clusters from the CSC.
CscTimeStatus timeStatus() const
Returns the Csc time status flag.
virtual const MuonGM::CscReadoutElement * detectorElement() const override final
Return the detector element corresponding to this PRD.
double time() const
Returns the time.
CscClusterStatus status() const
Returns the Csc status (position measurement) flag.
Class representing the raw data of one CSC strip (for clusters look at Muon::CscPrepData).
Base class for Muon cluster RIO_OnTracks.
virtual const Amg::Vector3D & globalPosition() const override
Returns global position.
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.
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...
const Amg::Vector2D & localPosition() const
return the local position reference
Identifier identify() const
return the identifier
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
This is the base class for all tracking detector elements with read-out relevant information.
virtual const Surface & surface() const =0
Return surface associated with this detector element.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
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
This module defines the arguments passed from the BATCH driver to the BATCH worker.
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
MuonPrepDataCollection< CscStripPrepData > CscStripPrepDataCollection
MuonPrepDataContainerT< CscStripPrepData > CscStripPrepDataContainer
@ CscStatusUnspoiled
Clean cluster with precision fit.
@ CscStatusSplitUnspoiled
Clean cluster with precision fit after split cluster.
std::pair< double, ParamDefs > DefinedParameter
Typedef to of a std::pair<double, ParamDefs> to identify a passed-through double as a specific type o...
ParametersBase< TrackParametersDim, Charged > TrackParameters
const T_res * ErrorScalingCast(const T_src *src)