ATLAS Offline Software
Loading...
Searching...
No Matches
Muon::CscClusterOnTrackCreator Class Reference

Interface for the reconstruction to calibration and alignment corrections. More...

#include <CscClusterOnTrackCreator.h>

Inheritance diagram for Muon::CscClusterOnTrackCreator:
Collaboration diagram for Muon::CscClusterOnTrackCreator:

Public Member Functions

 CscClusterOnTrackCreator (const std::string &, const std::string &, const IInterface *)
virtual ~CscClusterOnTrackCreator ()
virtual StatusCode initialize () override
virtual MuonClusterOnTrackcreateRIO_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 MuonClusterOnTrackcreateRIO_OnTrack (const Trk::PrepRawData &RIO, const Amg::Vector3D &GP, const Amg::Vector3D &GD) const override
 Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and a prediction of the global position and direction.
virtual MuonClusterOnTrackcorrect (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 the measurement surface.
virtual MuonClusterOnTrackcorrect (const Trk::PrepRawData &RIO, const Amg::Vector3D &GP, const Amg::Vector3D &GD) const override
virtual const ToolHandle< ICscStripFitter > & GetICscStripFitter () const override
 These functions are provided from the interface.
virtual const ToolHandle< ICscClusterFitter > & GetICscClusterFitter () const override
virtual const ToolHandle< ICscClusterUtilTool > & GetICscClusterUtilTool () const override
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
ToolHandle< ICscStripFitterm_stripFitter {this, "CscStripFitter", "CalibCscStripFitter/CalibCscStripFitter"}
ToolHandle< ICscClusterFitterm_clusterFitter {this, "CscClusterFitter", "QratCscClusterFitter/QratCscClusterFitter"}
ToolHandle< ICscClusterUtilToolm_clusterUtilTool {this, "CscClusterUtilTool", "CscClusterUtilTool/CscClusterUtilTool"}
SG::ReadCondHandleKey< RIO_OnTrackErrorScalingm_cscErrorScalingKey
Gaudi::Property< double > m_errorScaler {this, "ErrorScaler" , 1.}
Gaudi::Property< double > m_errorScalerBeta {this, "ErrorScalerBeta", 0.}
Gaudi::Property< double > m_minimumError {this, "MinimumError" , 0.05}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Interface for the reconstruction to calibration and alignment corrections.

It should be used by reconstruction and pattern recognition to create Muon::MuonClusterOnTrack objects (s).

It offers several interfaces:

JobOptions Flags:

  • doCSC: switch on/off CSC ROT creation (default = true)
  • doRPC: switch on/off RPC ROT creation (default = true)
  • doTGC: switch on/off TGC ROT creation (default = true)
  • [CSC,TGC,RPC]ErrorScalingKey: if not empty use error scaling conditions data to scale the corresponding muon covariances
  • CscClusterFitter: Tool to fit charge and width of CSC clusters
  • CscStripFitter: Tool to fit charge + time of a CSC strip
  • CscStripPrepDataLocation: Storegate key of the CscStripPrepData collection

Definition at line 51 of file CscClusterOnTrackCreator.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ CscClusterOnTrackCreator()

Muon::CscClusterOnTrackCreator::CscClusterOnTrackCreator ( const std::string & ty,
const std::string & na,
const IInterface * pa )

Definition at line 27 of file CscClusterOnTrackCreator.cxx.

27 :
28 AthAlgTool(ty, na, pa) {
29 // algtool interface - necessary!
30 declareInterface<IMuonClusterOnTrackCreator>(this);
31 declareInterface<IRIO_OnTrackCreator>(this);
32 }
AthAlgTool()
Default constructor:

◆ ~CscClusterOnTrackCreator()

Muon::CscClusterOnTrackCreator::~CscClusterOnTrackCreator ( )
virtualdefault

Member Function Documentation

◆ correct() [1/2]

MuonClusterOnTrack * Muon::CscClusterOnTrackCreator::correct ( const Trk::PrepRawData & RIO,
const Amg::Vector3D & GP,
const Amg::Vector3D & GD ) const
overridevirtual

Implements Muon::IMuonClusterOnTrackCreator.

Definition at line 251 of file CscClusterOnTrackCreator.cxx.

251 {
252 return createRIO_OnTrack(RIO, GP, GD);
253 }

◆ correct() [2/2]

MuonClusterOnTrack * Muon::CscClusterOnTrackCreator::correct ( const Trk::PrepRawData & RIO,
const Trk::TrackParameters & TP,
const EventContext &  ) const
overridevirtual

Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and the predicted Trk::TrackParameter at the measurement surface.

Parameters
RIOTrk::PrepRawData object to be calibrated
TPPredicted Trk::TrackParameter at the measurement surface
Returns
a pointer to a new Muon::MuonClusterOnTrack object, zero if calibration failed. The ownership of the new Muon::MuonClusterOnTrack is passed to the client calling the tool

Implements Muon::IMuonClusterOnTrackCreator.

Definition at line 246 of file CscClusterOnTrackCreator.cxx.

246 {
247 return createRIO_OnTrack(RIO, TP.position(), TP.momentum().unit());
248 }
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.

◆ createRIO_OnTrack() [1/2]

MuonClusterOnTrack * Muon::CscClusterOnTrackCreator::createRIO_OnTrack ( const Trk::PrepRawData & RIO,
const Amg::Vector3D & GP ) const
overridevirtual

Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and a predicted Trk::TrackParameter.

Parameters
RIOTrk::PrepRawData object to be calibrated
GPPredicted intersect position of the muon with the measurement plane
Returns
a pointer to a new Muon::MuonClusterOnTrack object, zero if calibration failed. The ownership of the new Muon::MuonClusterOnTrack is passed to the client calling the tool

Implements Muon::IMuonClusterOnTrackCreator.

Definition at line 56 of file CscClusterOnTrackCreator.cxx.

56 {
57 MuonClusterOnTrack* MClT = nullptr;
58
59 // check whether PrepRawData has detector element, if not there print warning
60 const Trk::TrkDetElementBase* EL = RIO.detectorElement();
61 if (!EL) {
62 ATH_MSG_WARNING("RIO does not have associated detectorElement!, cannot produce ROT");
63 return nullptr;
64 }
65
66 // MuClusterOnTrack production
67 //
68 // in RIO_OnTrack the local param and cov should have the same dimension
69 Trk::LocalParameters locpar(RIO.localPosition());
70 if (RIO.localCovariance().cols() > 1) {
71 ATH_MSG_VERBOSE("Making 2-dim local parameters");
72 } else {
73 Trk::DefinedParameter radiusPar(RIO.localPosition().x(), Trk::locX);
74 locpar = Trk::LocalParameters(radiusPar);
75 ATH_MSG_VERBOSE("Making 1-dim local parameters");
76 }
77
79 double positionAlongStrip = 0;
80
81 if (!EL->surface(RIO.identify()).globalToLocal(GP, GP, lp)) {
82 Amg::Vector3D lpos = RIO.detectorElement()->surface(RIO.identify()).transform().inverse() * GP;
83 ATH_MSG_WARNING("Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
84 lp[Trk::locX] = lpos.x();
85 lp[Trk::locY] = lpos.y();
86 }
87 positionAlongStrip = lp[Trk::locY];
88
89 // Error matrix production - expect more intelligent code here.
90 //
91 Amg::MatrixX loce = RIO.localCovariance();
92
93 if (m_idHelperSvc->isCsc(RIO.identify()) && !m_cscErrorScalingKey.key().empty()) {
94 SG::ReadCondHandle<RIO_OnTrackErrorScaling> error_scaling(m_cscErrorScalingKey);
96 *error_scaling)
97 ->getScaledCovariance(std::move(loce), Trk::distPhi);
98 ATH_MSG_VERBOSE("CSC: new cov(0,0) is " << loce(0, 0));
99 }
100
101 if (m_idHelperSvc->isCsc(RIO.identify())) {
102 // cast to CscPrepData
103 const CscPrepData* MClus = dynamic_cast<const CscPrepData*>(&RIO);
104 if (!MClus) {
105 ATH_MSG_WARNING("RIO not of type CscPrepData, cannot create ROT");
106 return nullptr;
107 }
108
109 // current not changing CscClusterStatus but passing status of RIO
110 MClT = new CscClusterOnTrack(MClus, std::move(locpar), std::move(loce),
111 positionAlongStrip, MClus->status(), MClus->timeStatus(), MClus->time());
112 }
113
114 return MClT;
115 }
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
CscTimeStatus timeStatus() const
Returns the Csc time status flag.
double time() const
Returns the time.
CscClusterStatus status() const
Returns the Csc status (position measurement) flag.
SG::ReadCondHandleKey< RIO_OnTrackErrorScaling > m_cscErrorScalingKey
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
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.
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.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D
ElementLink< CVec > EL
@ locY
local cartesian
Definition ParamDefs.h:38
@ locX
Definition ParamDefs.h:37
@ distPhi
Definition ParamDefs.h:50
std::pair< double, ParamDefs > DefinedParameter
Typedef to of a std::pair<double, ParamDefs> to identify a passed-through double as a specific type o...
const T_res * ErrorScalingCast(const T_src *src)

◆ createRIO_OnTrack() [2/2]

MuonClusterOnTrack * Muon::CscClusterOnTrackCreator::createRIO_OnTrack ( const Trk::PrepRawData & RIO,
const Amg::Vector3D & GP,
const Amg::Vector3D & GD ) const
overridevirtual

Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and a prediction of the global position and direction.

It is only implemented for the CSCs, for RPC and TGC Trk::PrepRawData the result is the same as for the routine without the direction.

Parameters
RIOTrk::PrepRawData object to be calibrated
GPPredicted intersect position of the muon with the measurement plane
GDPredicted direction at the intersect position of the muon with the measurement plane
Returns
a pointer to a new Muon::MuonClusterOnTrack object, zero if calibration failed. The ownership of the new Muon::MuonClusterOnTrack is passed to the client calling the tool

Implements Muon::IMuonClusterOnTrackCreator.

Definition at line 119 of file CscClusterOnTrackCreator.cxx.

121 {
122 if (!m_idHelperSvc->isCsc(RIO.identify())) {
123 ATH_MSG_WARNING("CscClusterOnTrackCreator::createRIO_OnTrack is called by the other muon tech");
124 return nullptr;
125 }
126
127 MuonClusterOnTrack* MClT = nullptr;
128 // check whether PrepRawData has detector element, if not there print warning
129 const Trk::TrkDetElementBase* EL = RIO.detectorElement();
130 if (!EL) {
131 ATH_MSG_WARNING("RIO does not have associated detectorElement!, cannot produce ROT");
132 return MClT;
133 }
134 // cast to CscPrepData : Moved to the front to avoid any memory allocation before return;
135 const CscPrepData* MClus = dynamic_cast<const CscPrepData*>(&RIO);
136 if (!MClus) {
137 ATH_MSG_WARNING("RIO not of type CscPrepData, cannot create ROT");
138 return MClT;
139 }
140
141 // MuClusterOnTrack production
142 //
143 // in RIO_OnTrack the local param and cov should have the same dimension
144 Trk::LocalParameters locpar = Trk::LocalParameters(RIO.localPosition());
145 if (RIO.localCovariance().cols() > 1 ||
146 (m_idHelperSvc->isTgc(RIO.identify()) && m_idHelperSvc->tgcIdHelper().isStrip(RIO.identify()))) {
147 ATH_MSG_VERBOSE("Making 2-dim local parameters");
148 } else {
149 Trk::DefinedParameter radiusPar(RIO.localPosition().x(), Trk::locX);
150 locpar = Trk::LocalParameters(radiusPar);
151 ATH_MSG_VERBOSE("Making 1-dim local parameters");
152 }
153
154 Amg::Vector2D lp{Amg::Vector2D::Zero()};
155 double positionAlongStrip = 0;
156
157 if (!EL->surface(RIO.identify()).globalToLocal(GP, GP, lp)) {
158 Amg::Vector3D lpos = RIO.detectorElement()->surface(RIO.identify()).transform().inverse() * GP;
159 ATH_MSG_WARNING("Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
160 lp[Trk::locX] = lpos.x();
161 lp[Trk::locY] = lpos.y();
162 }
163 positionAlongStrip = lp[Trk::locY];
164
165 // Error matrix production - expect more intelligent code here.
166 //
167 Amg::MatrixX loce = RIO.localCovariance();
168
169 if (m_idHelperSvc->isCsc(RIO.identify()) && !m_cscErrorScalingKey.key().empty()) {
170 SG::ReadCondHandle<RIO_OnTrackErrorScaling> error_scaling(m_cscErrorScalingKey);
172 *error_scaling)
173 ->getScaledCovariance(std::move(loce), Trk::distPhi);
174 ATH_MSG_VERBOSE("CSC: new cov(0,0) is " << loce(0, 0));
175 }
176
177 // postion Error is re-estimate only for precision fit cluster (eta)
179 // current not changing CscClusterStatus but passing status of RIO
180 MClT = new CscClusterOnTrack(MClus, std::move(locpar), std::move(loce), positionAlongStrip, MClus->status(), MClus->timeStatus(), MClus->time());
181
182 } else {
183 const MuonGM::CscReadoutElement* ele = MClus->detectorElement();
184 Transform3D globalToLocal = ele->transform(MClus->identify()).inverse();
185 Vector3D d(globalToLocal * GD);
186 double tantheta = d.x() / d.z();
187
188 std::vector<ICscClusterFitter::Result> results, results0;
189 results = m_clusterUtilTool->getRefitCluster(MClus, tantheta);
190 results0 = m_clusterUtilTool->getRefitCluster(MClus, 0);
191
192 if (results.empty() || results0.empty()) {
193 ATH_MSG_VERBOSE("No fit result");
194 return new CscClusterOnTrack(MClus, std::move(locpar), std::move(loce),
195 positionAlongStrip, MClus->status(), MClus->timeStatus(), MClus->time());
196 }
197 ICscClusterFitter::Result res, res0;
198 res = results[0];
199 res0 = results0[0]; // result at normal angle to make error blown correctly in case of cosmic
200 int fitresult = res.fitStatus;
201 if (fitresult) {
202 ATH_MSG_VERBOSE(" Precision fit failed which was succeeded: return="
203 << "cluStatus: " << res.clusterStatus << "fitStatus: " << res.fitStatus);
204 return new CscClusterOnTrack(MClus, std::move(locpar), std::move(loce),
205 positionAlongStrip, MClus->status(), MClus->timeStatus(), MClus->time());
206 } else {
207 ATH_MSG_VERBOSE(" Precision fit succeeded");
208 }
209
210 ATH_MSG_VERBOSE(" Angle from Segment: "
211 << " :: tanangle : " << tantheta);
212
213 // in case that we need to scale errors for cosmic/data we want to scale only for normal part
214 // v0 only scaling up intrinsic term...
215 // double errorCorrected = sqrt(res.dposition*res.dposition - res0.dposition*res0.dposition
216 // + m_errorScaler*m_errorScaler*res0.dposition*res0.dposition);
217 // v1 scaling up total uncertainty and add up misalignment term....like sqrt( sigma_nominal^2 * alpha^2 + beta^2)
218 double nominal_error = res.dposition;
219 double errorCorrected =
220 std::sqrt(nominal_error * nominal_error * m_errorScaler * m_errorScaler + m_errorScalerBeta * m_errorScalerBeta);
221 if (errorCorrected < m_minimumError) errorCorrected = m_minimumError;
222
223 Amg::MatrixX newloce(Amg::MatrixX(1, 1));
224 newloce.setIdentity();
225 newloce *= errorCorrected * errorCorrected;
226 if (!m_cscErrorScalingKey.key().empty()) {
227 SG::ReadCondHandle<RIO_OnTrackErrorScaling> error_scaling(m_cscErrorScalingKey);
228 newloce =
230 *error_scaling)
231 ->getScaledCovariance(std::move(newloce), Trk::distPhi);
232 }
233
234 ATH_MSG_VERBOSE("All: new err matrix is " << newloce);
235 ATH_MSG_VERBOSE(" dpos changed ====> " << Amg::error(newloce, Trk::loc1));
236
237 MClT = new CscClusterOnTrack(MClus, std::move(locpar), std::move(newloce),
238 positionAlongStrip, MClus->status(), MClus->timeStatus(), MClus->time());
239 ATH_MSG_VERBOSE("global postion of MClT :::: " << MClT->globalPosition());
240 }
241
242 return MClT;
243 }
std::pair< std::vector< unsigned int >, bool > res
virtual const MuonGM::CscReadoutElement * detectorElement() const override final
Return the detector element corresponding to this PRD.
virtual const Amg::Vector3D & globalPosition() const override
Returns global position.
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Gaudi::Property< double > m_minimumError
Gaudi::Property< double > m_errorScalerBeta
Gaudi::Property< double > m_errorScaler
ToolHandle< ICscClusterUtilTool > m_clusterUtilTool
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
@ CscStatusUnspoiled
Clean cluster with precision fit.
@ CscStatusSplitUnspoiled
Clean cluster with precision fit after split cluster.
@ loc1
Definition ParamDefs.h:34
fitresult
Definition fitman.py:590

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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

◆ GetICscClusterFitter()

const ToolHandle< ICscClusterFitter > & Muon::CscClusterOnTrackCreator::GetICscClusterFitter ( ) const
overridevirtual

Implements Muon::ICscClusterOnTrackCreator.

Definition at line 257 of file CscClusterOnTrackCreator.cxx.

257{ return m_clusterFitter; }
ToolHandle< ICscClusterFitter > m_clusterFitter

◆ GetICscClusterUtilTool()

const ToolHandle< ICscClusterUtilTool > & Muon::CscClusterOnTrackCreator::GetICscClusterUtilTool ( ) const
overridevirtual

Implements Muon::ICscClusterOnTrackCreator.

Definition at line 258 of file CscClusterOnTrackCreator.cxx.

258{ return m_clusterUtilTool; }

◆ GetICscStripFitter()

const ToolHandle< ICscStripFitter > & Muon::CscClusterOnTrackCreator::GetICscStripFitter ( ) const
overridevirtual

These functions are provided from the interface.

Implements Muon::ICscClusterOnTrackCreator.

Definition at line 256 of file CscClusterOnTrackCreator.cxx.

256{ return m_stripFitter; }
ToolHandle< ICscStripFitter > m_stripFitter

◆ initialize()

StatusCode Muon::CscClusterOnTrackCreator::initialize ( )
overridevirtual

Definition at line 37 of file CscClusterOnTrackCreator.cxx.

37 {
38 ATH_CHECK(m_idHelperSvc.retrieve());
39 if (!m_idHelperSvc->hasCSC()) {
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;
44 }
45
46 // get error scaling tool
47 //
48 ATH_CHECK(m_cscErrorScalingKey.initialize(!m_cscErrorScalingKey.key().empty()));
49 ATH_CHECK(m_stripFitter.retrieve());
50 ATH_CHECK(m_clusterFitter.retrieve());
51 ATH_CHECK(m_clusterUtilTool.retrieve());
52 return StatusCode::SUCCESS;
53 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

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()

const InterfaceID & Muon::ICscClusterOnTrackCreator::interfaceID ( )
inlinestaticinherited

Definition at line 37 of file ICscClusterOnTrackCreator.h.

static const InterfaceID IID_ICscClusterOnTrackCreator("Muon::ICscClusterOnTrackCreator", 1, 0)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

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.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_clusterFitter

ToolHandle<ICscClusterFitter> Muon::CscClusterOnTrackCreator::m_clusterFitter {this, "CscClusterFitter", "QratCscClusterFitter/QratCscClusterFitter"}
private

Definition at line 94 of file CscClusterOnTrackCreator.h.

94{this, "CscClusterFitter", "QratCscClusterFitter/QratCscClusterFitter"};

◆ m_clusterUtilTool

ToolHandle<ICscClusterUtilTool> Muon::CscClusterOnTrackCreator::m_clusterUtilTool {this, "CscClusterUtilTool", "CscClusterUtilTool/CscClusterUtilTool"}
private

Definition at line 95 of file CscClusterOnTrackCreator.h.

95{this, "CscClusterUtilTool", "CscClusterUtilTool/CscClusterUtilTool"};

◆ m_cscErrorScalingKey

SG::ReadCondHandleKey<RIO_OnTrackErrorScaling> Muon::CscClusterOnTrackCreator::m_cscErrorScalingKey
private
Initial value:
{
this, "CSCErrorScalingKey", "" ,
"Key for CSC error scaling conditions data. No error scaling if empty."}

Definition at line 97 of file CscClusterOnTrackCreator.h.

97 {
98 this, "CSCErrorScalingKey", "" /*"/MUON/TrkErrorScalingCSC"*/,
99 "Key for CSC error scaling conditions data. No error scaling if empty."};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_errorScaler

Gaudi::Property<double> Muon::CscClusterOnTrackCreator::m_errorScaler {this, "ErrorScaler" , 1.}
private

Definition at line 102 of file CscClusterOnTrackCreator.h.

102{this, "ErrorScaler" , 1.};

◆ m_errorScalerBeta

Gaudi::Property<double> Muon::CscClusterOnTrackCreator::m_errorScalerBeta {this, "ErrorScalerBeta", 0.}
private

Definition at line 103 of file CscClusterOnTrackCreator.h.

103{this, "ErrorScalerBeta", 0.};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::CscClusterOnTrackCreator::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 91 of file CscClusterOnTrackCreator.h.

91{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};

◆ m_minimumError

Gaudi::Property<double> Muon::CscClusterOnTrackCreator::m_minimumError {this, "MinimumError" , 0.05}
private

Definition at line 104 of file CscClusterOnTrackCreator.h.

104{this, "MinimumError" , 0.05};

◆ m_stripFitter

ToolHandle<ICscStripFitter> Muon::CscClusterOnTrackCreator::m_stripFitter {this, "CscStripFitter", "CalibCscStripFitter/CalibCscStripFitter"}
private

Definition at line 93 of file CscClusterOnTrackCreator.h.

93{this, "CscStripFitter", "CalibCscStripFitter/CalibCscStripFitter"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: