ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Muon::MuonClusterOnTrackCreator Class Reference

#include <MuonClusterOnTrackCreator.h>

Inheritance diagram for Muon::MuonClusterOnTrackCreator:
Collaboration diagram for Muon::MuonClusterOnTrackCreator:

Public Member Functions

 MuonClusterOnTrackCreator (const std::string &, const std::string &, const IInterface *)
 
virtual ~MuonClusterOnTrackCreator ()=default
 
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. More...
 
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. More...
 
virtual MuonClusterOnTrackcorrect (const Trk::PrepRawData &RIO, const Trk::TrackParameters &TP) const override
 Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and the predicted Trk::TrackParameter at the measurement surface. More...
 
virtual MuonClusterOnTrackcorrect (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. More...
 
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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

MuonClusterOnTrackcalibratedClusterMMG (const Trk::PrepRawData &RIO, const Amg::Vector3D &GP, const Amg::Vector3D &GD) const
 
MuonClusterOnTrackcalibratedClusterSTG (const Trk::PrepRawData &RIO, const Amg::Vector3D &GP, const Amg::Vector3D &GD) const
 
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...
 

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
ToolHandle< Muon::INSWCalibToolm_calibToolNSW {this, "NSWCalibTool", ""}
 
ToolHandle< Muon::IMMClusterBuilderToolm_clusterBuilderToolMM {this, "MMClusterBuilder", "Muon::SimpleMMClusterBuilderTool/SimpleMMClusterBuilderTool"}
 
Gaudi::Property< bool > m_doFixedErrorTgcEta {this, "DoFixedErrorTgcEta", false}
 
Gaudi::Property< bool > m_doFixedErrorRpcEta {this, "DoFixedErrorRpcEta", false}
 
Gaudi::Property< bool > m_doFixedErrorTgcPhi {this, "DoFixedErrorTgcPhi", false}
 
Gaudi::Property< bool > m_doFixedErrorRpcPhi {this, "DoFixedErrorRpcPhi", false}
 
Gaudi::Property< double > m_fixedErrorTgcEta {this, "FixedErrorTgcEta", 5.}
 
Gaudi::Property< double > m_fixedErrorRpcEta {this, "FixedErrorRpcEta", 5.}
 
Gaudi::Property< double > m_fixedErrorTgcPhi {this, "FixedErrorTgcPhi", 5.}
 
Gaudi::Property< double > m_fixedErrorRpcPhi {this, "FixedErrorRpcPhi", 5.}
 
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
 

Detailed Description

Definition at line 30 of file MuonClusterOnTrackCreator.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

◆ MuonClusterOnTrackCreator()

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

Definition at line 33 of file MuonClusterOnTrackCreator.cxx.

33  :
34  AthAlgTool(ty, na, pa) {
35  // algtool interface - necessary!
36  declareInterface<IMuonClusterOnTrackCreator>(this);
37  declareInterface<IRIO_OnTrackCreator>(this);
38 
39  }

◆ ~MuonClusterOnTrackCreator()

virtual Muon::MuonClusterOnTrackCreator::~MuonClusterOnTrackCreator ( )
virtualdefault

Member Function Documentation

◆ calibratedClusterMMG()

MuonClusterOnTrack * MuonClusterOnTrackCreator::calibratedClusterMMG ( const Trk::PrepRawData RIO,
const Amg::Vector3D GP,
const Amg::Vector3D GD 
) const
private

Definition at line 270 of file MuonClusterOnTrackCreator.cxx.

270  {
271  const EventContext& ctx{Gaudi::Hive::currentContext()};
272  // Make sure RIO has a detector element
273  const MuonGM::MMReadoutElement* mmEL = static_cast<const MuonGM::MMReadoutElement*>(RIO.detectorElement());
274  if (!mmEL) {
275  ATH_MSG_WARNING("RIO does not have associated detectorElement! Skipping cluster calibration");
276  return nullptr;
277  }
278 
279  Amg::MatrixX loce = RIO.localCovariance();
281 
282  // * Local cluster coordinates to feed to the calibration tools
284 
285  // get localY from the seeded position
286  const Trk::PlaneSurface& rio_surface = mmEL->surface(RIO.identify());
287  if (!rio_surface.globalToLocal(GP, GP, lp)) {
288  Amg::Vector3D lpos = rio_surface.transform().inverse() * GP;
289  ATH_MSG_WARNING("Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
290  lp[Trk::locX] = lpos.x();
291  lp[Trk::locY] = lpos.y();
292  }
293  // set localX from the cluster parameters
294  lp[Trk::locX] = locpar[Trk::locX];
295 
296  // * B-Field correction
297  // calibrate the input strips
298  const MMPrepData* mmPRD = static_cast<const MMPrepData*>(&RIO);
299 
300  std::vector<NSWCalib::CalibratedStrip> calibratedStrips;
301  StatusCode sc = m_calibToolNSW->calibrateClus(ctx, mmPRD, GP, calibratedStrips);
302  if (sc != StatusCode::SUCCESS) {
303  ATH_MSG_WARNING("Could not calibrate the MM Cluster in the RIO on track creator");
304  return nullptr;
305  }
306 
307  // calibrate the cluster position along the precision coordinate (updates lp.x())
308  IMMClusterBuilderTool::RIO_Author rotAuthor = m_clusterBuilderToolMM->getCalibratedClusterPosition(ctx,
309  calibratedStrips,
310  NswClustering::toLocal(*mmPRD, GD),
311  lp, loce);
312 
313  if (rotAuthor == IMMClusterBuilderTool::RIO_Author::unKnownAuthor) {
314  ATH_MSG_WARNING("Could not calibrate the MM Cluster in the RIO on track creator");
315  return nullptr;
316  }
317 
318  // * Correct the local cluster coordinates for as-built conditions and B-lines (returns a new 3D vector)
319  Amg::Vector3D localposition3D{Amg::Vector3D::Zero()};
320  if (!mmEL->spacePointPosition(RIO.identify(), lp, localposition3D)){
321  ATH_MSG_WARNING("Application of final as-built parameters failed for channel "<<m_idHelperSvc->toString(RIO.identify())<<" local pos = ("<<lp.x()<<"/"<<lp.y()<<").");
322  }
323 
324  // Get the direction of the track in the local coordinate system and use it to project
325  // the actual hit position onto the nominal surface (locZ = 0), where the intersection
326  // of the track is considered. This "effective" position provides a more accurate residual.
328  rio_surface.globalToLocalDirection(GD, ld);
329  double a_impact = ld.angleXZ() < 0 ? -M_PI_2 - ld.angleXZ() : M_PI_2 - ld.angleXZ();
330  double x_projected = localposition3D.x() - std::tan(a_impact) * localposition3D.z();
331 
332  // * Set the value of the local parameter (locX) after applying conditions
333  // The position along strip will be set from the seed (there is no better
334  // estimate than that; not used in the track fits anyway)
335  locpar[Trk::locX] = x_projected;
336 
337  ATH_MSG_VERBOSE("generating MMClusterOnTrack in MMClusterBuilder");
338  MMClusterOnTrack* cluster = new MMClusterOnTrack(mmPRD, std::move(locpar), std::move(loce), lp[Trk::locY], {}, {});
339  cluster->setAuthor(rotAuthor);
340 
341  return cluster;
342  }

◆ calibratedClusterSTG()

MuonClusterOnTrack * MuonClusterOnTrackCreator::calibratedClusterSTG ( const Trk::PrepRawData RIO,
const Amg::Vector3D GP,
const Amg::Vector3D GD 
) const
private

Definition at line 346 of file MuonClusterOnTrackCreator.cxx.

346  {
347 
348  // Make sure RIO has a detector element
349  const MuonGM::sTgcReadoutElement* stgEL = static_cast<const MuonGM::sTgcReadoutElement*>(RIO.detectorElement());
350  if (!stgEL) {
351  ATH_MSG_WARNING("RIO does not have associated detectorElement! Skipping cluster calibration");
352  return nullptr;
353  }
354 
355  Amg::MatrixX loce = RIO.localCovariance();
356  // > 1 in case we want to keep pads in the future ?
358 
359 
360  // * Local cluster coordinates to feed to the calibration tools
362 
363  // get local y from the seeded position
364  const Trk::PlaneSurface& rio_surface = stgEL->surface(RIO.identify());
365  if (!rio_surface.globalToLocal(GP, GP, lp)) {
366  Amg::Vector3D lpos = rio_surface.transform().inverse() * GP;
367  ATH_MSG_WARNING("Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
368  lp[Trk::locX] = lpos.x();
369  lp[Trk::locY] = lpos.y();
370  }
371  // set local x from the cluster parameters
372  lp[Trk::locX] = locpar[Trk::locX];
373 
374  // * Correct the local coordinates for as-built conditions and b-lines
375  Amg::Vector3D localposition3D { Amg::Vector3D::Zero() };
376  stgEL->spacePointPosition(RIO.identify(), lp[Trk::locX], lp[Trk::locY], localposition3D);
377 
378  // Get the direction of the track in the local coordinate system and use it to project
379  // the actual hit position onto the nominal surface (locZ = 0), where the intersection
380  // of the track is considered. This "effective" position provides a more accurate residual.
382  rio_surface.globalToLocalDirection(GD, ld);
383  double a_impact = ld.angleXZ() < 0 ? -M_PI_2 - ld.angleXZ() : M_PI_2 - ld.angleXZ();
384  double x_projected = localposition3D.x() - std::tan(a_impact) * localposition3D.z();
385 
386  // * Set the value of the local parameter (locX) after applying conditions
387  // The position along strip will be set from the seed (there is no better
388  // estimate than that; not used in the track fits anyway)
389  locpar[Trk::locX] = x_projected;
390 
391  const sTgcPrepData* stgPRD = static_cast<const sTgcPrepData*>(&RIO);
392  ATH_MSG_VERBOSE("generating sTgcClusterOnTrack in MuonClusterBuilder");
393  MuonClusterOnTrack* cluster = new sTgcClusterOnTrack(stgPRD, std::move(locpar), std::move(loce), lp[Trk::locY]);
394 
395  return cluster;
396  }

◆ correct() [1/2]

MuonClusterOnTrack * MuonClusterOnTrackCreator::correct ( 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.

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 252 of file MuonClusterOnTrackCreator.cxx.

252  {
253 
254  if (m_idHelperSvc->isMM(RIO.identify())) {
255  // Micromegas
256  return calibratedClusterMMG(RIO, GP, GD);
257  }
258 
259  if (m_idHelperSvc->issTgc(RIO.identify()) && !m_idHelperSvc->measuresPhi(RIO.identify())) {
260  // sTGC: calibration is currently available for strips.
261  return calibratedClusterSTG(RIO, GP, GD);
262  }
263 
264  // Default case
265  return createRIO_OnTrack(RIO, GP, GD);
266  }

◆ correct() [2/2]

MuonClusterOnTrack * MuonClusterOnTrackCreator::correct ( const Trk::PrepRawData RIO,
const Trk::TrackParameters TP 
) 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 247 of file MuonClusterOnTrackCreator.cxx.

247  {
248  return correct(RIO, TP.position(), TP.momentum().unit());
249  }

◆ createRIO_OnTrack() [1/2]

MuonClusterOnTrack * MuonClusterOnTrackCreator::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 51 of file MuonClusterOnTrackCreator.cxx.

53  {
54  MuonClusterOnTrack* MClT = nullptr;
55 
56  // check whether PrepRawData has detector element, if not there print warning
58  if (!EL) {
59  ATH_MSG_WARNING("RIO does not have associated detectorElement!, cannot produce ROT");
60  return nullptr;
61  }
62 
63  // in RIO_OnTrack the local param and cov should have the same dimension
64  Trk::LocalParameters locpar(RIO.localPosition());
65 
66  if (RIO.localCovariance().cols() != RIO.localCovariance().rows()) {
67  ATH_MSG_WARNING("Rows and colums not equal!");
68  if (m_idHelperSvc->isRpc(RIO.identify())) {
69  ATH_MSG_WARNING("RPC hit with (r,c)=" << RIO.localCovariance().rows() << "," << RIO.localCovariance().cols());
70  }
71  }
72 
73  if (RIO.localCovariance().cols() > 1 || (m_idHelperSvc->isTgc(RIO.identify()) && m_idHelperSvc->measuresPhi(RIO.identify()))) {
74  ATH_MSG_VERBOSE("Making 2-dim local parameters: " << m_idHelperSvc->toString(RIO.identify()));
75  } else {
76  Trk::DefinedParameter radiusPar(RIO.localPosition().x(), Trk::locX);
77  locpar = Trk::LocalParameters(radiusPar);
78  ATH_MSG_VERBOSE("Making 1-dim local parameters: " << m_idHelperSvc->toString(RIO.identify()));
79  }
80 
82  double positionAlongStrip{0};
83  double positionAlongZ{0};
84 
85  const Trk::Surface& rio_surface = EL->surface(RIO.identify());
86  if (!rio_surface.globalToLocal(GP, GP, lp)) {
87  Amg::Vector3D lpos = rio_surface.transform().inverse() * GP;
88  ATH_MSG_WARNING("Extrapolated GlobalPosition not on detector surface! Distance " << lpos.z());
89  lp[Trk::locX] = lpos.x();
90  lp[Trk::locY] = lpos.y();
91  positionAlongZ = lpos.z();
92  }
93 
94  positionAlongStrip = lp[Trk::locY];
95 
96  Amg::MatrixX loce = RIO.localCovariance();
97  ATH_MSG_DEBUG("All: new err matrix is " << loce);
98 
99  if (m_idHelperSvc->isRpc(RIO.identify())) {
100 
101  //***************************
102  // RPC: cast to RpcPrepData
103  //***************************
104 
105  const RpcPrepData* MClus = static_cast<const RpcPrepData*>(&RIO);
106  bool measphi = m_idHelperSvc->measuresPhi(RIO.identify());
107 
108  double fixedError = 1.;
109  bool scale = false;
110  // check whether to scale eta/phi hit
111  if (m_doFixedErrorRpcEta && !measphi) {
112  scale = true;
113  fixedError = m_fixedErrorRpcEta;
114  } else if (m_doFixedErrorRpcPhi && measphi) {
115  scale = true;
116  fixedError = m_fixedErrorRpcPhi;
117  }
118  if (scale) {
119  Amg::MatrixX mat(1, 1);
120  mat(0, 0) = fixedError * fixedError;
121  loce = mat;
122  }
123 
124  const MuonGM::RpcReadoutElement* rpc_readout_element = MClus->detectorElement();
125  Amg::Vector3D posi = rpc_readout_element->stripPos(RIO.identify());
126 
127  // let's correct rpc time subtracting delay due to the induced electric signal propagation along strip
128  double correct_time_along_strip = 0;
129  if (measphi == 0) {
130  correct_time_along_strip = rpc_readout_element->distanceToEtaReadout(GP) / 1000. * SIG_VEL;
131  } else {
132  correct_time_along_strip = rpc_readout_element->distanceToPhiReadout(GP) / 1000. * SIG_VEL;
133  }
134  if (positionAlongZ) correct_time_along_strip = 0; // no correction if extrapolated GlobalPosition not on detector surface!
135 
136  // let's evaluate the average delay due to the induced electric signal propagation along strip
137  double av_correct_time_along_strip = 0;
138  if (measphi == 0) {
139  av_correct_time_along_strip = rpc_readout_element->distanceToEtaReadout(posi) / 1000. * SIG_VEL;
140  } else {
141  av_correct_time_along_strip = rpc_readout_element->distanceToPhiReadout(posi) / 1000. * SIG_VEL;
142  }
143 
144  // let's evaluate [real TOF - nominal TOF]
145  double real_TOF_onRPCgap = GP.mag() / 1000. * C_VEL;
146  double nominal_TOF_onRPCgap = posi.mag() / 1000. * C_VEL;
147 
148  // let's evaluate the total time correction
149  double correct_time_tot = real_TOF_onRPCgap - nominal_TOF_onRPCgap + correct_time_along_strip - av_correct_time_along_strip;
150 
151  MClT = new RpcClusterOnTrack(MClus, std::move(locpar), std::move(loce), positionAlongStrip, MClus->time() - correct_time_tot);
152 
153  ATH_MSG_DEBUG(" correct_time_along_strip " << correct_time_along_strip << " av_correct_time_along_strip "
154  << av_correct_time_along_strip << " real_TOF_onRPCgap " << real_TOF_onRPCgap
155  << " nominal_TOF_onRPCgap " << nominal_TOF_onRPCgap << " MClus->time() "
156  << MClus->time() << " correct_time_tot " << correct_time_tot);
157 
158  } else if (m_idHelperSvc->isTgc(RIO.identify())) {
159 
160  //***************************
161  // TGC: cast to TgcPrepData
162  //***************************
163 
164  const TgcPrepData* MClus = static_cast<const TgcPrepData*>(&RIO);
165  const TgcIdHelper& idHelper{m_idHelperSvc->tgcIdHelper()};
166 
167  // calculation of 2D error matrix for TGC phi strips
168  if (idHelper.measuresPhi(RIO.identify())) {
169  const int stripNo = idHelper.channel(RIO.identify());
170  const int gasGap = idHelper.gasGap(RIO.identify());
171 
172  const MuonGM::TgcReadoutElement* ele = MClus->detectorElement();
173 
174  double stripLength = ele->stripLength();
175  double stripWidth = std::abs(ele->stripPitch(gasGap, stripNo, lp[Trk::locZ]));
176  const Amg::Vector3D lStripDir = ele->transform(RIO.identify()).inverse().linear()*
177  ele->stripDir(RIO.identify());
178 
179  Amg::MatrixX mat(2, 2);
180 
181  double phistereo = lStripDir.phi() - 90.*Gaudi::Units::deg;
182  double Sn = std::sin(phistereo);
183  double Sn2 = Sn * Sn;
184  double Cs2 = 1. - Sn2;
185 
186  double V0 = stripWidth * stripWidth / 12;
188  double V1 = stripLength * stripLength / 12;
189  mat(0, 0) = (Cs2 * V0 + Sn2 * V1);
190  mat.fillSymmetric(1, 0, (Sn * std::sqrt(Cs2) * (V0 - V1)));
191  mat(1, 1) = (Sn2 * V0 + Cs2 * V1);
192  loce = mat;
193  } else {
194  if (m_doFixedErrorTgcEta) {
195  Amg::MatrixX mat(1, 1);
197  loce = mat;
198  }
199  }
200 
201  MClT = new TgcClusterOnTrack(MClus, std::move(locpar), std::move(loce), positionAlongStrip);
202 
203  } else if (m_idHelperSvc->issTgc(RIO.identify())) {
204 
205  //***************************
206  // sTGC: cast to sTgcPrepData
207  //***************************
208 
209  const sTgcPrepData* MClus = static_cast<const sTgcPrepData*>(&RIO);
210  Amg::Vector2D localPos(lp[Trk::locX], lp[Trk::locY]);
211 
212  // Dont make RIO On tracks for sTGC wires in inner Q1
213  if (m_idHelperSvc->stgcIdHelper().channelType(MClus->identify()) == sTgcIdHelper::Wire &&
214  MClus->detectorElement()->isEtaZero(MClus->identify(), lp)) {
215  ATH_MSG_DEBUG("sTgcReadoutElement with isEtaZero() ?! "<<m_idHelperSvc->toString(MClus->identify()));
216  return nullptr;
217  }
218  // Wires are already considered in the above check. Dont remove them here
219  if (!rio_surface.insideBounds(localPos) &&
220  m_idHelperSvc->stgcIdHelper().channelType(MClus->identify()) != sTgcIdHelper::Wire) {
221  ATH_MSG_DEBUG("sTgc measurement "<<m_idHelperSvc->toString(MClus->identify())<<" out of bounds. "
222  <<Amg::toString(localPos));
223  return nullptr;
224  }
225  MClT = new sTgcClusterOnTrack(MClus, std::move(locpar), std::move(loce), positionAlongStrip);
226 
227  } else if (m_idHelperSvc->isMM(RIO.identify())) {
228 
229  //***************************
230  // MM: cast to MMPrepData
231  //***************************
232 
233  const MMPrepData* mmPRD = static_cast<const MMPrepData*>(&RIO);
234  MClT = new MMClusterOnTrack(mmPRD, std::move(locpar), std::move(loce), positionAlongStrip, {}, {});
235  }
236 
237  return MClT;
238  }

◆ createRIO_OnTrack() [2/2]

MuonClusterOnTrack * MuonClusterOnTrackCreator::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 242 of file MuonClusterOnTrackCreator.cxx.

242  {
243  return createRIO_OnTrack(RIO, GP);
244  }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ 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.

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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

◆ initialize()

StatusCode MuonClusterOnTrackCreator::initialize ( )
overridevirtual

Definition at line 42 of file MuonClusterOnTrackCreator.cxx.

42  {
43  ATH_CHECK(m_idHelperSvc.retrieve());
44 
45  ATH_CHECK(m_clusterBuilderToolMM.retrieve(DisableTool{m_calibToolNSW.empty()}));
46  ATH_CHECK(m_calibToolNSW.retrieve(DisableTool{m_calibToolNSW.empty()}));
47  return StatusCode::SUCCESS;
48  }

◆ 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::IMuonClusterOnTrackCreator::interfaceID ( )
inlinestaticinherited

Definition at line 63 of file IMuonClusterOnTrackCreator.h.

63 { return IID_IMuonClusterOnTrackCreator; }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_calibToolNSW

ToolHandle<Muon::INSWCalibTool> Muon::MuonClusterOnTrackCreator::m_calibToolNSW {this, "NSWCalibTool", ""}
private

Definition at line 83 of file MuonClusterOnTrackCreator.h.

◆ m_clusterBuilderToolMM

ToolHandle<Muon::IMMClusterBuilderTool> Muon::MuonClusterOnTrackCreator::m_clusterBuilderToolMM {this, "MMClusterBuilder", "Muon::SimpleMMClusterBuilderTool/SimpleMMClusterBuilderTool"}
private

Definition at line 84 of file MuonClusterOnTrackCreator.h.

◆ 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_doFixedErrorRpcEta

Gaudi::Property<bool> Muon::MuonClusterOnTrackCreator::m_doFixedErrorRpcEta {this, "DoFixedErrorRpcEta", false}
private

Definition at line 90 of file MuonClusterOnTrackCreator.h.

◆ m_doFixedErrorRpcPhi

Gaudi::Property<bool> Muon::MuonClusterOnTrackCreator::m_doFixedErrorRpcPhi {this, "DoFixedErrorRpcPhi", false}
private

Definition at line 92 of file MuonClusterOnTrackCreator.h.

◆ m_doFixedErrorTgcEta

Gaudi::Property<bool> Muon::MuonClusterOnTrackCreator::m_doFixedErrorTgcEta {this, "DoFixedErrorTgcEta", false}
private

Definition at line 89 of file MuonClusterOnTrackCreator.h.

◆ m_doFixedErrorTgcPhi

Gaudi::Property<bool> Muon::MuonClusterOnTrackCreator::m_doFixedErrorTgcPhi {this, "DoFixedErrorTgcPhi", false}
private

Definition at line 91 of file MuonClusterOnTrackCreator.h.

◆ 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_fixedErrorRpcEta

Gaudi::Property<double> Muon::MuonClusterOnTrackCreator::m_fixedErrorRpcEta {this, "FixedErrorRpcEta", 5.}
private

Definition at line 94 of file MuonClusterOnTrackCreator.h.

◆ m_fixedErrorRpcPhi

Gaudi::Property<double> Muon::MuonClusterOnTrackCreator::m_fixedErrorRpcPhi {this, "FixedErrorRpcPhi", 5.}
private

Definition at line 96 of file MuonClusterOnTrackCreator.h.

◆ m_fixedErrorTgcEta

Gaudi::Property<double> Muon::MuonClusterOnTrackCreator::m_fixedErrorTgcEta {this, "FixedErrorTgcEta", 5.}
private

Definition at line 93 of file MuonClusterOnTrackCreator.h.

◆ m_fixedErrorTgcPhi

Gaudi::Property<double> Muon::MuonClusterOnTrackCreator::m_fixedErrorTgcPhi {this, "FixedErrorTgcPhi", 5.}
private

Definition at line 95 of file MuonClusterOnTrackCreator.h.

◆ m_idHelperSvc

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

Definition at line 81 of file MuonClusterOnTrackCreator.h.

◆ 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:
Trk::LocalParameters
Definition: LocalParameters.h:98
Trk::PlaneSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks i...
Definition: PlaneSurface.cxx:213
MuonGM::MuonClusterReadoutElement::transform
virtual const Amg::Transform3D & transform() const override
Return local to global transform.
Definition: MuonClusterReadoutElement.h:124
dumpTgcDigiDeadChambers.gasGap
list gasGap
Definition: dumpTgcDigiDeadChambers.py:33
Muon::MuonClusterOnTrackCreator::createRIO_OnTrack
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.
Definition: MuonClusterOnTrackCreator.cxx:51
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:29
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Trk::PrepRawDataType::TgcPrepData
@ TgcPrepData
Trk::PrepRawDataType::MMPrepData
@ MMPrepData
Trk::locX
@ locX
Definition: ParamDefs.h:43
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:44
Muon::MuonClusterOnTrackCreator::m_doFixedErrorRpcPhi
Gaudi::Property< bool > m_doFixedErrorRpcPhi
Definition: MuonClusterOnTrackCreator.h:92
Muon::MuonClusterOnTrackCreator::m_clusterBuilderToolMM
ToolHandle< Muon::IMMClusterBuilderTool > m_clusterBuilderToolMM
Definition: MuonClusterOnTrackCreator.h:84
Muon::MuonClusterOnTrackCreator::m_fixedErrorRpcPhi
Gaudi::Property< double > m_fixedErrorRpcPhi
Definition: MuonClusterOnTrackCreator.h:96
TgcIdHelper
Definition: TgcIdHelper.h:50
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Muon::MuonClusterOnTrackCreator::correct
virtual MuonClusterOnTrack * correct(const Trk::PrepRawData &RIO, const Trk::TrackParameters &TP) const override
Create new Muon::MuonClusterOnTrack from a Trk::PrepRawData and the predicted Trk::TrackParameter at ...
Definition: MuonClusterOnTrackCreator.cxx:247
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
Trk::PrepRawData::localCovariance
const Amg::MatrixX & localCovariance() const
return const ref to the error matrix
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
deg
#define deg
Definition: SbPolyhedron.cxx:17
MuonGM::TgcReadoutElement::stripLength
double stripLength() const
Returns the length of each strip which is equal to the height of the chamber.
MuonGM::RpcReadoutElement
An RpcReadoutElement corresponds to a single RPC module; therefore typicaly a barrel muon station con...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/RpcReadoutElement.h:54
Trk::TrkDetElementBase
Definition: TrkDetElementBase.h:52
MuonGM::sTgcReadoutElement::spacePointPosition
virtual bool spacePointPosition(const Identifier &phiId, const Identifier &etaId, Amg::Vector2D &pos) const override final
space point position for a given pair of phi and eta identifiers The LocalPosition is expressed in th...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:438
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::PrepRawDataType::RpcPrepData
@ RpcPrepData
MuonGM::TgcReadoutElement::stripDir
Amg::Vector3D stripDir(int gasGap, int strip) const
Returns the direction of a strip.
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
Muon::MuonClusterOnTrackCreator::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonClusterOnTrackCreator.h:81
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
Muon::IMMClusterBuilderTool::RIO_Author
MMClusterOnTrack::Author RIO_Author
Refinement of the cluster position after the cluster calibration loop is ran with a complete external...
Definition: IMMClusterBuilderTool.h:48
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::DefinedParameter
std::pair< double, ParamDefs > DefinedParameter
Definition: DefinedParameter.h:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Muon::MuonClusterOnTrackCreator::m_doFixedErrorRpcEta
Gaudi::Property< bool > m_doFixedErrorRpcEta
Definition: MuonClusterOnTrackCreator.h:90
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:48
MuonGM::RpcReadoutElement::distanceToPhiReadout
double distanceToPhiReadout(const Amg::Vector3D &P) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:223
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
sTgcIdHelper::Wire
@ Wire
Definition: sTgcIdHelper.h:190
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:28
Muon::MuonClusterOnTrackCreator::m_fixedErrorTgcEta
Gaudi::Property< double > m_fixedErrorTgcEta
Definition: MuonClusterOnTrackCreator.h:93
MuonGM::TgcReadoutElement
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/TgcReadoutElement.h:42
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
EL
This module defines the arguments passed from the BATCH driver to the BATCH worker.
Definition: AlgorithmWorkerData.h:24
Trk::PlaneSurface::globalToLocalDirection
void globalToLocalDirection(const Amg::Vector3D &glodir, Trk::LocalDirection &locdir) const
This method transforms the global direction to a local direction wrt the plane.
Definition: PlaneSurface.cxx:260
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::LocalDirection
represents the three-dimensional global direction with respect to a planar surface frame.
Definition: LocalDirection.h:81
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
Muon::MuonClusterOnTrackCreator::m_doFixedErrorTgcPhi
Gaudi::Property< bool > m_doFixedErrorTgcPhi
Definition: MuonClusterOnTrackCreator.h:91
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
MuonGM::RpcReadoutElement::stripPos
Amg::Vector3D stripPos(const Identifier &id) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:177
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
Trk::PrepRawDataType::sTgcPrepData
@ sTgcPrepData
Trk::Surface::insideBounds
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonGM::TgcReadoutElement::stripPitch
double stripPitch(int gasGap, int strip) const
Returns the pitch of the given strip in gasGap i.
Definition: MuonDetDescr/MuonReadoutGeometry/src/TgcReadoutElement.cxx:176
Trk::ParametersBase::momentum
const Amg::Vector3D & momentum() const
Access method for the momentum.
a
TList * a
Definition: liststreamerinfos.cxx:10
h
Trk::Surface::globalToLocal
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...
MuonGM::MMReadoutElement::spacePointPosition
virtual bool spacePointPosition(const Identifier &phiId, const Identifier &etaId, Amg::Vector2D &pos) const override final
space point position for a given pair of phi and eta identifiers The LocalPosition is expressed in th...
Definition: MMReadoutElement.h:312
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::PlaneSurface
Definition: PlaneSurface.h:64
Muon::MuonClusterOnTrackCreator::m_calibToolNSW
ToolHandle< Muon::INSWCalibTool > m_calibToolNSW
Definition: MuonClusterOnTrackCreator.h:83
Muon::MuonClusterOnTrackCreator::m_fixedErrorTgcPhi
Gaudi::Property< double > m_fixedErrorTgcPhi
Definition: MuonClusterOnTrackCreator.h:95
Muon::NswClustering::toLocal
Amg::Vector3D toLocal(const Trk::Surface &surf, const Amg::Vector3D &dir)
Rotates a direction vector into a local frame: x-axis : Parallell to the radial direction of the dete...
Definition: NswClusteringUtils.h:21
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:23
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Muon::MuonClusterOnTrackCreator::calibratedClusterSTG
MuonClusterOnTrack * calibratedClusterSTG(const Trk::PrepRawData &RIO, const Amg::Vector3D &GP, const Amg::Vector3D &GD) const
Definition: MuonClusterOnTrackCreator.cxx:346
Muon::MuonClusterOnTrackCreator::m_doFixedErrorTgcEta
Gaudi::Property< bool > m_doFixedErrorTgcEta
Definition: MuonClusterOnTrackCreator.h:89
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
MuonGM::RpcReadoutElement::distanceToEtaReadout
double distanceToEtaReadout(const Amg::Vector3D &P) const
Definition: MuonDetDescr/MuonReadoutGeometry/src/RpcReadoutElement.cxx:278
Muon::MuonClusterOnTrackCreator::calibratedClusterMMG
MuonClusterOnTrack * calibratedClusterMMG(const Trk::PrepRawData &RIO, const Amg::Vector3D &GP, const Amg::Vector3D &GD) const
Definition: MuonClusterOnTrackCreator.cxx:270
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
FlavorTagDiscriminants::OnnxModelVersion::V0
@ V0
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
Muon::MuonClusterOnTrackCreator::m_fixedErrorRpcEta
Gaudi::Property< double > m_fixedErrorRpcEta
Definition: MuonClusterOnTrackCreator.h:94
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
FlavorTagDiscriminants::OnnxModelVersion::V1
@ V1
geometry_dat_to_json.ld
ld
Definition: geometry_dat_to_json.py:14
fitman.k
k
Definition: fitman.py:528
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Trk::PrepRawData::detectorElement
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...