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

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

#include <MdtDriftCircleOnTrackCreator.h>

Inheritance diagram for Muon::MdtDriftCircleOnTrackCreator:
Collaboration diagram for Muon::MdtDriftCircleOnTrackCreator:

Classes

struct  CalibrationOutput
 struct to hold output of calibration More...
 

Public Types

enum  TimingMode {
  ATLTIME =0, NO_CORRECTIONS = 1, COSMICS_TRIGGERTIME = 2, COSMICS_TOF =3,
  NumberOfTimingModes
}
 
using MdtRotPtr = MdtDriftCircleOnTrack *
 

Public Member Functions

 MdtDriftCircleOnTrackCreator (const std::string &, const std::string &, const IInterface *)
 
virtual ~MdtDriftCircleOnTrackCreator ()=default
 
virtual StatusCode initialize () override final
 
virtual MdtRotPtr createRIO_OnTrack (const MdtPrepData &prd, const Amg::Vector3D &globalPos, const Amg::Vector3D *gdir=nullptr, const double t0Shift=0., const MuonDriftCircleErrorStrategy *strategy=nullptr, const double beta=1, const double tTrack=1) const override final
 Calibrate a MdtPrepData object. More...
 
virtual void updateSign (MdtDriftCircleOnTrack &rot, const Trk::DriftCircleSide si) const override final
 Update of the sign of the drift radius. More...
 
virtual MdtRotPtr updateError (const MdtDriftCircleOnTrack &DCT, const Trk::TrackParameters *pars=nullptr, const MuonDriftCircleErrorStrategy *strategy=nullptr) const override
 Update error of a ROT without changing the drift radius. More...
 
virtual Trk::RIO_OnTrackcorrect (const Trk::PrepRawData &prd, const Trk::TrackParameters &tp, const EventContext &) const override
 Base class method for correct. More...
 
virtual MdtRotPtr correct (const MdtPrepData &prd, const Trk::TrackParameters &tp, const MuonDriftCircleErrorStrategy *strategy, const double beta, const double tTrack) const override final
 Returns calibrated MdtDriftCircleOnTrack. More...
 
virtual const MuonDriftCircleErrorStrategyerrorStrategy () const override
 Returns the default error strategy object. 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
 
 DeclareInterfaceID (Muon::IMdtDriftCircleOnTrackCreator, 1, 0)
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 The AlgTool InterfaceID. More...
 

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

double timeOfFlight (const Amg::Vector3D &pos, const double beta, const double tTrack, const double tShift) const
 
CalibrationOutput getLocalMeasurement (const EventContext &ctx, const MdtPrepData &DC, const MdtCalibInput &calibInput, const MuonDriftCircleErrorStrategy &strategy) const
 preform the mdt calibration More...
 
double getTriggerTime () const
 currently returns 0. More...
 
double mooreErrorStrategy (const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
 
double mooreErrorStrategyMC (const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
 
double mooreErrorStrategyLoose (const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
 
double mooreErrorStrategyTight (const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
 
double muonErrorStrategy (const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) 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...
 

Static Private Member Functions

static double parametrisedSigma (double r)
 

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
ToolHandle< IMdtCalibrationToolm_mdtCalibrationTool {this, "CalibrationTool", ""}
 
Gaudi::Property< bool > m_doMdt {this, "doMDT", true}
 Process MDT ROTs. More...
 
Gaudi::Property< int > m_timeCorrectionType {this, "TimingMode", 0}
 
Gaudi::Property< double > m_fixedError {this, "FixedError", 1.}
 < Error used when m_doFixed error =true or m_scaleErrorManually = true More...
 
Gaudi::Property< double > m_globalToLocalTolerance
 
MuonDriftCircleErrorStrategy m_errorStrategy {MuonDriftCircleErrorStrategyInput{}}
 < Error strategy for created ROTs
More...
 
Gaudi::Property< std::string > m_defaultStrategy
 if set to true, the ROT creator create 'tube' hits with a local position of 0 and an error of tube radius/sqrt(12) More...
 
Gaudi::Property< bool > m_createTubeHits {this, "CreateTubeHit", false}
 Scale ROTs depending on local alignment (i.e. More...
 
Gaudi::Property< bool > m_scaleMdtCov {this, "DoErrorScaling", true}
 Fixed error (not tube radius) More...
 
Gaudi::Property< bool > m_doFixedError {this, "DoFixedError", true}
 Use parameterised errors. More...
 
Gaudi::Property< bool > m_useErrorParametrisation {this, "UseParametrisedError", false}
 Use the predicted track position to correct the Error. More...
 
Gaudi::Property< bool > m_errorAtPredictedPosition {this, "UseErrorAtPredictedPosition", false}
 Add a term to the error to account for very poorly aligned stations. More...
 
Gaudi::Property< bool > m_stationError {this, "DoStationError", false}
 Add a special error to account for the T0 refit. More...
 
Gaudi::Property< bool > m_t0Refit {this, "T0RefitError", false}
 Use error strategy for segments by default. More...
 
Gaudi::Property< bool > m_doSegments {this, "DoSegmentErrors", true}
 Deweight individual chambers. More...
 
Gaudi::Property< bool > m_doIndividualChamberReweights {this, "DeweightIndividualChambers", true}
 toggle between MC and data alignment errors (to be removed in rel. More...
 
Gaudi::Property< bool > m_isMC {this, "IsMC", false}
 toggle whether the time of flight is included in the t0 shifts More...
 
Gaudi::Property< bool > m_applyToF {this, "ApplyToF", true}
 toggle between loose errors (initial before alignment) and tight after alignment More...
 
Gaudi::Property< bool > m_looseErrors
 
Gaudi::Property< bool > m_wasConfigured
 
int m_BME_idx {-1}
 
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
 

Static Private Attributes

static constexpr double s_inverseSpeedOfLight {1. / Gaudi::Units::c_light}
 

Detailed Description

Interface for the reconstruction to MDT calibration and alignment corrections.

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

It offers several interfaces:

The tool is capable of handling serveral different timing cases (click links to see definitions):

JobOptions Flags:

Definition at line 71 of file MdtDriftCircleOnTrackCreator.h.

Member Typedef Documentation

◆ MdtRotPtr

Definition at line 26 of file IMdtDriftCircleOnTrackCreator.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ TimingMode

Enumerator
ATLTIME 

normal time of flight corrections assuming IP + light speed to be used for simulated data and collision data

special case for cosmics taken with scintilator trigger or cosmic simulation without TOF

NO_CORRECTIONS 

special case for cosmics taken with scintilator trigger which is read out so the offset with respect to the clock is known.

This mode is not completely functional yet as the way to access the trigger time is not known at the moment

COSMICS_TRIGGERTIME 

case for normal cosmic data with rpc trigger or simulation including TOF.

It uses the MuonCosmicTofTool to calculate the correct timing with respect to the MuonTriggerPoint

COSMICS_TOF 
NumberOfTimingModes 

Definition at line 73 of file MdtDriftCircleOnTrackCreator.h.

73  {
76  ATLTIME =0,
79  NO_CORRECTIONS = 1,
88  COSMICS_TOF =3,
89 
91  };

Constructor & Destructor Documentation

◆ MdtDriftCircleOnTrackCreator()

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

Definition at line 27 of file MdtDriftCircleOnTrackCreator.cxx.

30  : AthAlgTool(ty, na, pa) {
31  // algtool interface - necessary!
32  declareInterface<IMdtDriftCircleOnTrackCreator>(this);
33  declareInterface<IRIO_OnTrackCreator>(this);
34 }

◆ ~MdtDriftCircleOnTrackCreator()

virtual Muon::MdtDriftCircleOnTrackCreator::~MdtDriftCircleOnTrackCreator ( )
virtualdefault

Member Function Documentation

◆ correct() [1/2]

MdtRotPtr Muon::MdtDriftCircleOnTrackCreator::correct ( const MdtPrepData prd,
const Trk::TrackParameters tp,
const MuonDriftCircleErrorStrategy strategy,
const double  beta,
const double  tTrack 
) const
finaloverridevirtual

Returns calibrated MdtDriftCircleOnTrack.

Implementation of IRIO_OnTrackCreator method

Parameters
prdReference to a Trk::PrepRawData object (which should always be a Muon::MdtPrepData in this case)
tpReference to the extrapolated/predicted TrackParameters at this MdtPrepData
Returns
calibrated MdtDriftCircleOnTrack. Memory management is passed to user.

Implements Muon::IMdtDriftCircleOnTrackCreator.

Definition at line 379 of file MdtDriftCircleOnTrackCreator.cxx.

383  {
384 
385  const Amg::Vector3D& momentum = tp.momentum();
386  return createRIO_OnTrack(prd, tp.position(), &momentum, 0, strategy, beta, tTrack);
387 }

◆ correct() [2/2]

Trk::RIO_OnTrack * Muon::MdtDriftCircleOnTrackCreator::correct ( const Trk::PrepRawData prd,
const Trk::TrackParameters tp,
const EventContext &   
) const
overridevirtual

Base class method for correct.

Implements Trk::IRIO_OnTrackCreator.

Definition at line 389 of file MdtDriftCircleOnTrackCreator.cxx.

391  {
393  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" Incorrect hit type: "
394  <<" Trk::PrepRawData not a MdtPrepData!! No rot created ");
395  return nullptr;
396  }
397  Amg::Vector3D momentum = tp.momentum();
398 
399  return createRIO_OnTrack(static_cast<const MdtPrepData&>(prd), tp.position(), &momentum);
400 }

◆ createRIO_OnTrack()

MdtRotPtr Muon::MdtDriftCircleOnTrackCreator::createRIO_OnTrack ( const MdtPrepData prd,
const Amg::Vector3D globalPos,
const Amg::Vector3D gdir = nullptr,
const double  t0Shift = 0.,
const MuonDriftCircleErrorStrategy strategy = nullptr,
const double  beta = 1,
const double  tTrack = 1 
) const
finaloverridevirtual

Calibrate a MdtPrepData object.

The result is stored in a new MdtDriftCircleOnTrack object. Included calibrations:

  • Conversion t->r using MdtCalibrationSvc
  • Wire sag + chamber deformations (if available)
  • Special treatment for cosmics if switched on
    Parameters
    prdMdtPrepData object
    globalPosGlobalPosition (including second coordinate along the tube)
    gdirGlobalDirection of track
    strategyoptional drift circle error strategy to override the default
    Returns
    Fully calibrated MdtDriftCircleOnTrack (the user must delete this object when it is no longer needed)

Implements Muon::IMdtDriftCircleOnTrackCreator.

Definition at line 144 of file MdtDriftCircleOnTrackCreator.cxx.

150  {
151 
152  const EventContext& ctx{Gaudi::Hive::currentContext()};
153 
154  const MuonDriftCircleErrorStrategy& myStrategy{!strategy ? m_errorStrategy : *strategy};
155 
156  const Identifier iD = mdtPrd.identify();
157 
158  MdtCalibInput calibInput{mdtPrd};
159  calibInput.setClosestApproach(GP);
160  if (GD) calibInput.setTrackDirection((*GD).unit());
161 
162  switch (m_timeCorrectionType) {
163  case ATLTIME:
164  // normal time of flight corrections assuming IP + light speed
165  calibInput.setTimeOfFlight(calibInput.closestApproach().mag() * s_inverseSpeedOfLight);
166  ATH_MSG_VERBOSE(" running in ATLTIME mode, tof: " << calibInput.timeOfFlight());
167  break;
168  case NO_CORRECTIONS:
169  // special case for cosmics taken with scintilator trigger or
170  // cosmic simulation without TOF
171  calibInput.setTimeOfFlight(0);
172  ATH_MSG_VERBOSE("running in NO_CORRECTIONS mode, tof: " << calibInput.timeOfFlight());
173  break;
174  case COSMICS_TRIGGERTIME:
175  // special case for cosmics taken with scintilator trigger which
176  // is read out so the offset with respect to the clock is known
177  // getTriggerTime() NOT IMPLEMENETED YET!!!!!!
178  calibInput.setTriggerTime(getTriggerTime());
179  ATH_MSG_VERBOSE(" running in COSMICS_TRIGGERTIME mode, triggerOffset: "
180  << calibInput.triggerTime());
181  break;
182  case COSMICS_TOF:
183  calibInput.setTimeOfFlight(timeOfFlight(calibInput.closestApproach(), beta, tTrack, t0Shift));
184  ATH_MSG_VERBOSE(" running in COSMICS_TOF mode, tof: "
185  << calibInput.timeOfFlight() << " tTrack: " << tTrack
186  << " t0Shift: " << t0Shift
187  << " applyToF: " << m_applyToF);
188  break;
189  default:
190  // default, no tof. Indicates wrong configuration
191  ATH_MSG_WARNING("No valid mode selected, cannot apply tof correction");
192  calibInput.setTimeOfFlight(0);
193  break;
194  }
195 
196  Amg::Vector2D posOnWire{Amg::Vector2D::Zero()};
197  // if wire sag is taken into account, cast the surface to
198  // StraightLineSurface so it can be added to the ROT
199  const Trk::Surface& surf{calibInput.legacySurface()};
200  std::optional<Amg::Vector2D> posOnIdealWire = surf.globalToLocal(GP, m_globalToLocalTolerance);
201  if (!posOnIdealWire) {
202  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" globalToLocal() failed for ideal surface");
203  return nullptr;
204  }
205  posOnWire = std::move(*posOnIdealWire);
206 
207  double positionAlongWire = posOnWire[Trk::locZ];
208  // set driftcirclestatus, NODRIFTTIME if creating tube hits else UNDECIDED
210 
211  CalibrationOutput calibOutput = getLocalMeasurement(ctx, mdtPrd, calibInput, myStrategy);
212  // This basically determines the error etc and is where the bulk of the work
213  // is done.
214 
215  // hack to determine whether we are before or after the spectrum, until we
216  // sort this out properly
217  if (!calibOutput.calibOk && calibOutput.driftTime > 500.) {
218  ATH_MSG_WARNING("Unable to perform calibration ");
219  return nullptr;
220  }
221 
222  std::unique_ptr<MdtDriftCircleOnTrack> rot{};
223 
224  // we have to calculate sign, check whether direction is given
225  if (m_doMdt && GD) {
226  // calculate sign using surface
227  const Trk::Surface& surf{calibInput.legacySurface()};
228  std::optional<Amg::Vector2D> pos = surf.globalToLocal(GP, calibInput.trackDirection());
229 
230  // check this might still fail....
231  if (!pos) {
232  ATH_MSG_WARNING("Unexpected globalToLocal failure, cannot create MDT ROT ");
233  return nullptr;
234  }
235 
236  // calculate sign
237  double sign = (*pos)[Trk::driftRadius] < 0 ? -1.0 : 1.0;
238  calibOutput.locPars[Trk::driftRadius] *= sign;
239  rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
240  std::move(calibOutput.locPars),
241  std::move(calibOutput.locErr),
242  calibOutput.driftTime,
243  Trk::DECIDED,
244  calibInput.trackDirection(),
245  positionAlongWire,
246  myStrategy);
247 
248  } else {
249  // If the track direction is missing, the B-field correction was not
250  // applied
251  if (GD) {
252  // do not have access to direction, so have to use partial
253  // constructor:
254  rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
255  std::move(calibOutput.locPars),
256  std::move(calibOutput.locErr),
257  calibOutput.driftTime,
258  dcstatus,
259  positionAlongWire,
260  myStrategy);
261  } else {
262  MuonDriftCircleErrorStrategy tmpStrategy(myStrategy.getBits());
263  tmpStrategy.setParameter(MuonDriftCircleErrorStrategy::MagFieldCorrection, false);
264  rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
265  std::move(calibOutput.locPars),
266  std::move(calibOutput.locErr),
267  calibOutput.driftTime,
268  dcstatus,
269  positionAlongWire,
270  tmpStrategy);
271  }
272  }
273  ATH_MSG_DEBUG("MDT ROT: radius = "
274  << rot->localParameters().get(Trk::driftRadius) << " error = "
275  << Amg::error(rot->localCovariance(), Trk::locR)
276  <<" ,channel "
277  << m_idHelperSvc->toString(iD));
278 
279  return rot.release();
280 }

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

◆ DeclareInterfaceID()

Muon::IMdtDriftCircleOnTrackCreator::DeclareInterfaceID ( Muon::IMdtDriftCircleOnTrackCreator  ,
,
 
)
inherited

◆ 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; }

◆ errorStrategy()

virtual const MuonDriftCircleErrorStrategy& Muon::MdtDriftCircleOnTrackCreator::errorStrategy ( ) const
inlineoverridevirtual

Returns the default error strategy object.

Implements Muon::IMdtDriftCircleOnTrackCreator.

Definition at line 165 of file MdtDriftCircleOnTrackCreator.h.

165  {
166  return m_errorStrategy;
167  };

◆ 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

◆ getLocalMeasurement()

CalibrationOutput Muon::MdtDriftCircleOnTrackCreator::getLocalMeasurement ( const EventContext &  ctx,
const MdtPrepData DC,
const MdtCalibInput calibInput,
const MuonDriftCircleErrorStrategy strategy 
) const
private

preform the mdt calibration

copy new values

Use same value

Definition at line 300 of file MdtDriftCircleOnTrackCreator.cxx.

303  {
304 
305 
306  ATH_MSG_VERBOSE("getLocalMeasurement "<<calibInput<<" with m_doMdt=" << m_doMdt << " and " << myStrategy);
307  const Amg::Vector3D& gpos{calibInput.closestApproach()};
308  const Amg::Vector3D& gdir{calibInput.trackDirection()};
309 
310  double sigmaR{1.}, driftTime{0.}, radius{0.}, errRadius{0.};
311  MdtCalibOutput calibOutput{};
312  if (m_doMdt) {
313  // call the calibration service providing the time when the particle
314  // passed the tube
315  calibOutput = m_mdtCalibrationTool->calibrate(ctx, calibInput);
316  ATH_MSG_VERBOSE("getLocalMeasurement() - Calibrated output "<<calibOutput);
317  driftTime = calibOutput.driftTime();
318  radius = calibOutput.driftRadius();
319  errRadius = radius;
320 
321  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ErrorAtPredictedPosition)) {
322  const Trk::Surface& surf{calibInput.legacySurface()};
323  std::optional<Amg::Vector2D> myLocalPosition = surf.globalToLocal(gpos, gdir);
324  if (myLocalPosition) {
325  errRadius = (*myLocalPosition)[Trk::driftRadius];
326  } else {
327  ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" ErrorAtPredictedPosition failed because local position "<<
328  "transformation didn't succeed. Using measured radius instead.");
329  errRadius = radius;
330  }
331  }
332  } else {
333  // use PRD values
334  radius = DC.localPosition().x();
335  errRadius = radius;
336  // check consistency of error matrix
337  if (DC.localCovariance().cols() > 1) {
338  ATH_MSG_WARNING("Error matrix of DC doesn't have dimension 1 "<< DC.localCovariance());
339  ATH_MSG_WARNING("Reducing size to 1 dim");
340  }
341  }
342 
343  // Handle the errors here. Begin by getting the first part of the
344  // resolution term
345  if (!m_doMdt) {
346  sigmaR = Amg::error(DC.localCovariance(), Trk::driftRadius);
347  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ParameterisedErrors)) {
348  sigmaR = parametrisedSigma(errRadius);
349  } else {
350  sigmaR = calibOutput.driftRadiusUncert();
351  }
352  ATH_MSG_DEBUG("Tube : " << m_idHelperSvc->toString(calibInput.identify())
353  << " SigmaR = " << sigmaR);
354  double sigmaR2 = 0.0;
355  // Handle the errors scaling / addition of fixed terms
356  if (myStrategy.strategy() == MuonDriftCircleErrorStrategy::Moore) {
357  sigmaR2 = mooreErrorStrategy(myStrategy, sigmaR * sigmaR, calibInput.identify());
358  ATH_MSG_DEBUG("After scaling etc:\t Moore sigmaR2 = " << sigmaR2);
359  } else if (myStrategy.strategy() == MuonDriftCircleErrorStrategy::Muon) {
360  sigmaR2 = muonErrorStrategy(myStrategy, sigmaR * sigmaR, calibInput.identify());
361  ATH_MSG_DEBUG("After scaling etc:\t Muon ErrorStrategy sigmaR2 = " << sigmaR2);
362  }
364  // update or copy drift radius and error
365 
366  // new radius
368 
369  // create new error matrix
370  Amg::MatrixX newLocalCov(1, 1);
371  newLocalCov(0, 0) = sigmaR2;
372 
373  // return new values
374  bool ok = true;
375  return {Trk::LocalParameters(radiusPar), newLocalCov, driftTime,
376  ok};
377 }

◆ getTriggerTime()

double Muon::MdtDriftCircleOnTrackCreator::getTriggerTime ( ) const
inlineprivate

currently returns 0.

Definition at line 198 of file MdtDriftCircleOnTrackCreator.h.

198 { return 0.; }

◆ initialize()

StatusCode Muon::MdtDriftCircleOnTrackCreator::initialize ( )
finaloverridevirtual

Definition at line 36 of file MdtDriftCircleOnTrackCreator.cxx.

36  {
37  ATH_CHECK(m_mdtCalibrationTool.retrieve());
38  ATH_CHECK(m_idHelperSvc.retrieve());
39  m_BME_idx = m_idHelperSvc->mdtIdHelper().stationNameIndex("BME");
40 
41 
51  using Property = ToolSettings::Property;
52  ToolSettings calibSettings = m_mdtCalibrationTool->getSettings();
54  calibSettings.isActive(Property::TofCorrection));
56  calibSettings.isActive(Property::PropCorrection));
58  calibSettings.isActive(Property::TempCorrection));
60  calibSettings.isActive(Property::MagFieldCorrection));
62  calibSettings.isActive(Property::SlewCorrection));
64  calibSettings.isActive(Property::BackgroundCorrection));
65  m_errorStrategy.setCalibWindow(calibSettings.window);
66 
67  if ("Moore" == m_defaultStrategy) {
69  } else if ("Muon" == m_defaultStrategy) {
71  } else {
72  // By default use one of the real strategies - don't default to unknown!
74  ATH_MSG_FATAL("Unknown error strategy "<<m_errorStrategy);
75  return StatusCode::FAILURE;
76  }
77  if (msgLevel(MSG::INFO)) {
78  std::stringstream ss;
79  ss << "Constructed default MuonDriftCircleErrorStrategy:";
81  ss << " Broad";
83  ss << " Scaled";
85  ss << " Fixed";
87  ss << " Parm";
89  ss << " Station";
91  ss << " ErrAtPos";
93  ss << " T0";
95  ss << " WireG";
97  ss << " TOF";
99  ss << " Prop";
101  ss << " Temp";
103  ss << " Mag";
105  ss << " WireT";
107  ss << " Slew";
109  ss << " Back";
111  ss << " Seg";
112  ss << ". ";
113  if (!m_isMC && m_looseErrors)
114  ss << "Using Data Loose error tuning";
115  if (!m_isMC && !m_looseErrors)
116  ss << "Using Data Tight error tuning";
117 
118  msg(MSG::INFO) << ss.str() << endmsg;
119  }
120  if (m_isMC)
121  ATH_MSG_INFO("Using MC error tuning");
122  ATH_MSG_VERBOSE("A correction is made if set to true: do_MDT = " << m_doMdt);
123 
126  ATH_MSG_ERROR("Detected bad default configuration, using Cosmic TOF without "
127  <<"time of flight corrections does not work");
128  return StatusCode::FAILURE;
129  }
130  }
131  ATH_MSG_DEBUG("Timing mode set to " << m_timeCorrectionType);
133  ATH_MSG_ERROR("Time Correction Type too large! Aborting.");
134  return StatusCode::FAILURE;
135  }
136 
137  if (!m_wasConfigured) {
138  ATH_MSG_ERROR("This tool is too complicated to rely on defaults. Potential configuration issue.");
139  return StatusCode::FAILURE;
140  }
141  return StatusCode::SUCCESS;
142 }

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

static const InterfaceID& Trk::IRIO_OnTrackCreator::interfaceID ( )
inlinestaticinherited

The AlgTool InterfaceID.

Definition at line 42 of file IRIO_OnTrackCreator.h.

◆ mooreErrorStrategy()

double Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategy ( const MuonDriftCircleErrorStrategy myStrategy,
double  sigmaR,
const Identifier id 
) const
private

Definition at line 486 of file MdtDriftCircleOnTrackCreator.cxx.

488  {
489  if (m_isMC)
490  return mooreErrorStrategyMC(myStrategy, sigmaR2, id);
491 
492  if (m_looseErrors)
493  return mooreErrorStrategyLoose(myStrategy, sigmaR2, id);
494  else
495  return mooreErrorStrategyTight(myStrategy, sigmaR2, id);
496 
497 }

◆ mooreErrorStrategyLoose()

double Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategyLoose ( const MuonDriftCircleErrorStrategy myStrategy,
double  sigmaR,
const Identifier id 
) const
private

Need to check whether this Identifier is still existent

Definition at line 582 of file MdtDriftCircleOnTrackCreator.cxx.

584  {
585  ATH_MSG_DEBUG("mooreErrorStrategy sigmaR2=" << sigmaR2<<" "<<m_idHelperSvc->toString(id));
586 
587  // Moore error strategy. Hard coding numbers for the time being - hope to
588  // make them configurable some day
589  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::Segment)) {
590  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError) &&
591  myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
592  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::T0Refit)) {
593  ATH_MSG_VERBOSE(" segment error, t0fit ");
594  return sigmaR2 + 0.005; // Collisions with T0 refit (input)
595  } else if (myStrategy.creationParameter(
597  ATH_MSG_VERBOSE(" segment error, broad ");
598  return 4 * sigmaR2 + 0.16; // Output segments - broad errors
599  } else {
600  ATH_MSG_VERBOSE(" segment error, precise ");
601  return sigmaR2 + 0.005; // Input segments , no T0 refit
602  }
603  }
604  // Don't know how to handle other cases - error?
605  } else { // Track
606  MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(id);
607  if (myStrategy.creationParameter(
609  if (stIndex == MuonStationIndex::BE) {
610  ATH_MSG_VERBOSE(" track error BEE ");
611  return 1.44 * sigmaR2 + 4; // 1.2* + 2 mm
612  } else if (stIndex == MuonStationIndex::EE) {
613  ATH_MSG_VERBOSE(" track error EE ");
614  return 1.44 * sigmaR2 + 0.04; // 1.2* + 0.2 mm
615  } else if (m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BIS &&
616  std::abs(m_idHelperSvc->stationEta(id)) >= 7) {
617  ATH_MSG_VERBOSE(" track error BIS78 ");
618  if (std::abs(m_idHelperSvc->stationEta(id)) == 7)
619  return 1.44 * sigmaR2 + 1.; // 1.2* + 1. mm
620  return 4 * sigmaR2 + 25; // 2* + 5. mm
621  } else if (m_idHelperSvc->mdtIdHelper().stationName(id) == m_BME_idx &&
622  m_idHelperSvc->stationPhi(id) == 7) {
623  ATH_MSG_VERBOSE(" track error BME ");
624  return 1.44 * sigmaR2 + 0.25; // 1.2* + 0.5 mm
625  }
627  else if (m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BOL &&
628  std::abs(m_idHelperSvc->stationEta(id)) == 7 &&
629  m_idHelperSvc->stationPhi(id) == 7) {
630  ATH_MSG_VERBOSE(" track error BOE ");
631  return 1.44 * sigmaR2 + 0.25; // 1.2* + 0.5 mm
632  }
633  ATH_MSG_VERBOSE(" track station error ");
634  return 1.44 * sigmaR2 + 0.04; // 1.2* + 0.2 mm
635 
636  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError)) {
637 
638  if (myStrategy.creationParameter(
640  ATH_MSG_VERBOSE(" track error Fixed/Broad ");
641  return 4 * sigmaR2 + 4.; // 2* + 2 mm -> barrel/endcap overlaps
642  } else {
643  ATH_MSG_VERBOSE(" track error Fixed ");
644  return 4 * sigmaR2 + 4.; // 2* + 2mm S/L overlaps
645  }
646 
647  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
648 
649  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
650  ATH_MSG_VERBOSE(" track error Scaled/Broad ");
651  return 2.25 * sigmaR2 + 0.09;
652  } else {
653  // use slightly smaller errors for the barrel
654  double fixedTerm = (stIndex == MuonStationIndex::BI ||
655  stIndex == MuonStationIndex::BM ||
656  stIndex == MuonStationIndex::BO)
657  ? 0.015
658  : 0.015;
660  m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BIL &&
661  m_idHelperSvc->stationEta(id) == 1 &&
662  m_idHelperSvc->sector(id) == 13 &&
663  m_idHelperSvc->mdtIdHelper().multilayer(id) == 1) {
664  fixedTerm = 1;
665  ATH_MSG_VERBOSE(" track error Scaled: BIL1A13, first multi layer ");
666  } else {
667  ATH_MSG_VERBOSE(" track error Scaled ");
668  }
669 
670  return 1.44 * sigmaR2 + fixedTerm;
671  }
672  }
673  } // End of segment or track
674  return sigmaR2;
675 }

◆ mooreErrorStrategyMC()

double Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategyMC ( const MuonDriftCircleErrorStrategy myStrategy,
double  sigmaR,
const Identifier id 
) const
private

Definition at line 499 of file MdtDriftCircleOnTrackCreator.cxx.

501  {
502  ATH_MSG_DEBUG("mooreErrorStrategy sigmaR2=" << sigmaR2<<" "<<m_idHelperSvc->toString(id));
503 
504  // Moore error strategy. Hard coding numbers for the time being - hope to
505  // make them configurable some day
506  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::Segment)) {
507  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError) &&
508  myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
509  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::T0Refit)) {
510  ATH_MSG_VERBOSE(" segment error, t0fit ");
511  return sigmaR2 + 0.005; // Collisions with T0 refit (input)
512  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
513  ATH_MSG_VERBOSE(" segment error, broad ");
514  return 4 * sigmaR2 + 0.16; // Output segments - broad errors
515  } else {
516  ATH_MSG_VERBOSE(" segment error, precise ");
517  return sigmaR2 + 0.005; // Input segments , no T0 refit
518  }
519  }
520  // Don't know how to handle other cases - error?
521  } else { // Track
522  MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(id);
523  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::StationError)) {
524  if (stIndex == MuonStationIndex::BE) {
525  ATH_MSG_VERBOSE(" track error BEE ");
526  return 1.44 * sigmaR2 + 1.44; // 1.2* + 1.2 mm
527  } else if (stIndex == MuonStationIndex::EE) {
528  ATH_MSG_VERBOSE(" track error EE ");
529  if (!m_isMC && m_idHelperSvc->stationEta(id) < 0)
530  return 1.44 * sigmaR2 + 0.16; // 1.2* + 0.4 mm
531  return 1.44 * sigmaR2 + 1.; // 1.2* + 1. mm
532  } else if (m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BIS &&
533  std::abs(m_idHelperSvc->stationEta(id)) >= 7) {
534  ATH_MSG_VERBOSE(" track error BIS78 ");
535  if (std::abs(m_idHelperSvc->stationEta(id)) == 7)
536  return 1.44 * sigmaR2 + 1.; // 1.2* + 1. mm
537  else
538  return 4 * sigmaR2 + 25; // 2* + 5. mm
539  }
540  ATH_MSG_VERBOSE(" track station error ");
541  return 1.44 * sigmaR2 + 1.; // 1.2* + 1. mm
542 
543  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError)) {
544 
545  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
546  ATH_MSG_VERBOSE(" track error Fixed/Broad ");
547  return 4 * sigmaR2 + 49.; // 2* + 7 mm -> barrel/endcap overlaps
548  } else {
549  ATH_MSG_VERBOSE(" track error Fixed ");
550  return 4 * sigmaR2 + 4.; // 2* + 2mm S/L overlaps
551  }
552 
553  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
554 
555  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
556  ATH_MSG_VERBOSE(" track error Scaled/Broad ");
557  return 2.25 * sigmaR2 + 0.09;
558  } else {
559  // use slightly smaller errors for the barrel
560  double fixedTerm = (stIndex == MuonStationIndex::BI ||
561  stIndex == MuonStationIndex::BM ||
562  stIndex == MuonStationIndex::BO)
563  ? 0.014
564  : 0.04;
566  m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BIL &&
567  m_idHelperSvc->stationEta(id) == 1 &&
568  m_idHelperSvc->sector(id) == 13 &&
569  m_idHelperSvc->mdtIdHelper().multilayer(id) == 1) {
570  fixedTerm = 1;
571  ATH_MSG_VERBOSE(" track error Scaled: BIL1A13, first multi layer ");
572  } else {
573  ATH_MSG_VERBOSE(" track error Scaled ");
574  }
575  return 1.44 * sigmaR2 + fixedTerm;
576  }
577  }
578  } // End of segment or track
579  return sigmaR2;
580 }

◆ mooreErrorStrategyTight()

double Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategyTight ( const MuonDriftCircleErrorStrategy myStrategy,
double  sigmaR,
const Identifier id 
) const
private

Need to check whether this Identifier is still valid?

Definition at line 677 of file MdtDriftCircleOnTrackCreator.cxx.

679  {
680  ATH_MSG_DEBUG("mooreErrorStrategy sigmaR2=" << sigmaR2);
681 
682  // Moore error strategy. Hard coding numbers for the time being - hope to
683  // make them configurable some day
684  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::Segment)) {
685  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError) &&
686  myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
687  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::T0Refit)) {
688  ATH_MSG_VERBOSE(" segment error, t0fit ");
689  return sigmaR2 + 0.005; // Collisions with T0 refit (input)
690  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
691  ATH_MSG_VERBOSE(" segment error, broad ");
692  return 4 * sigmaR2 + 0.16; // Output segments - broad errors
693  } else {
694  ATH_MSG_VERBOSE(" segment error, precise ");
695  return sigmaR2 + 0.005; // Input segments , no T0 refit
696  }
697  }
698  // Don't know how to handle other cases - error?
699  } else { // Track
700  MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(id);
701  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::StationError)) {
702  if (stIndex == MuonStationIndex::BE) {
703  ATH_MSG_VERBOSE(" track error BEE ");
704  return 1.44 * sigmaR2 + 0.04; // 1.2* + 0.2 mm
705  } else if (stIndex == MuonStationIndex::EE) {
706  ATH_MSG_VERBOSE(" track error EE ");
707  if (m_idHelperSvc->isSmallChamber(id))
708  return 1.21 * sigmaR2 + 0.01; // 1.1* + 0.1 mm
709  else
710  return 1.21 * sigmaR2 + 0.01; // 1.1* + 0.1 mm
711  } else if (m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BIS &&
712  std::abs(m_idHelperSvc->stationEta(id)) >= 7) {
713  ATH_MSG_VERBOSE(" track error BIS78 ");
714  if (std::abs(m_idHelperSvc->stationEta(id)) == 7)
715  return 1.44 * sigmaR2 + 1.; // 1.2* + 1. mm
716 
717  return 4 * sigmaR2 + 1.; // 2* + 1. mm
718  } else if (stIndex == MuonStationIndex::BM &&
719  m_idHelperSvc->stationPhi(id) == 7 &&
720  (m_idHelperSvc->mdtIdHelper()).stationName(id) == m_BME_idx) {
721  ATH_MSG_VERBOSE(" track error BME ");
722  return 1.21 * sigmaR2 + 0.25; // 1.1* + 0.5 mm
723  }
725  else if (m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BOL &&
726  std::abs(m_idHelperSvc->stationEta(id)) == 7 &&
727  m_idHelperSvc->stationPhi(id) == 7) {
728  ATH_MSG_VERBOSE(" track error BOE ");
729  return 1.21 * sigmaR2 + 0.25; // 1.1* + 0.5 mm
730  } else if (stIndex == MuonStationIndex::EE &&
731  m_idHelperSvc->chamberIndex(id) == MuonStationIndex::EEL &&
732  m_idHelperSvc->stationEta(id) < 0 &&
733  m_idHelperSvc->stationPhi(id) == 3) {
734  ATH_MSG_VERBOSE(" track error EEL1C05 ");
735  return 1.21 * sigmaR2 + 25.; // 1.1* + 5 mm
736  }
737  ATH_MSG_VERBOSE(" track station error ");
738  return 1.21 * sigmaR2 + 0.04; // 1.1* + 0.2 mm
739 
740  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError)) {
741 
742  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
743  ATH_MSG_VERBOSE(" track error Fixed/Broad ");
744  return 4 * sigmaR2 + 4.; // 2* + 2 mm -> barrel/endcap overlaps
745  } else {
746  ATH_MSG_VERBOSE(" track error Fixed ");
747  return 4 * sigmaR2 + 4.; // 2* + 2mm S/L overlaps
748  }
749 
750  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
751 
752  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
753  ATH_MSG_VERBOSE(" track error Scaled/Broad ");
754  return 2.25 * sigmaR2 + 0.09;
755  } else {
756 
757  // use slightly smaller errors for the barrel
758  //
759  double fixedTerm = 0.01;
761  if (m_idHelperSvc->chamberIndex(id) == MuonStationIndex::BIL &&
762  m_idHelperSvc->stationEta(id) == 1 &&
763  m_idHelperSvc->sector(id) == 13 &&
764  m_idHelperSvc->mdtIdHelper().multilayer(id) == 1) {
765  fixedTerm = 1;
766  ATH_MSG_VERBOSE(" track error Scaled: BIL1A13, first multi layer ");
767  }
768  } else {
769  ATH_MSG_VERBOSE(" track error Scaled ");
770  }
771 
772  return 1.21 * sigmaR2 + fixedTerm;
773  }
774  }
775  } // End of segment or track
776  return sigmaR2;
777 }

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

◆ muonErrorStrategy()

double Muon::MdtDriftCircleOnTrackCreator::muonErrorStrategy ( const MuonDriftCircleErrorStrategy myStrategy,
double  sigmaR,
const Identifier id 
) const
private

Definition at line 779 of file MdtDriftCircleOnTrackCreator.cxx.

781  {
782 
783  //
784  // the new muonErrorStrategy is identical for Data and MC
785  // it assumes that for tracks the alignment uncertainties are added later
786  // this is done by the AignmentErrorTool where AlignmentEffectsOnTrack are
787  // used. (for segment errors the mooreStrategy is coded)
788  //
789  // it is inspired by the mooreErrorStrategyTight but does not need a constant term
790  //
791 
792  ATH_MSG_DEBUG("muonErrorStrategy sigmaR2=" << sigmaR2);
793 
794  // Muon error strategy. Hard coding numbers for the time being - hope to
795  // make them configurable some day
796  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::Segment)) {
797  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError) &&
798  myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
799  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::T0Refit)) {
800  ATH_MSG_VERBOSE(" segment error, t0fit ");
801  return sigmaR2 + 0.005; // Collisions with T0 refit (input)
802  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
803  ATH_MSG_VERBOSE(" segment error, broad ");
804  return 4 * sigmaR2 + 0.16; // Output segments - broad errors
805  } else {
806  ATH_MSG_VERBOSE(" segment error, precise ");
807  return sigmaR2 + 0.005; // Input segments , no T0 refit
808  }
809  }
810  } else { // Track
811  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::StationError)) {
812  ATH_MSG_VERBOSE(" track station error ");
813  return 1.21 * sigmaR2; // 1.1* mm
814  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError)) {
815  ATH_MSG_VERBOSE(" track error Fixed ");
816  return 4 * sigmaR2; // 2*
817  } else if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError)) {
818  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError)) {
819  ATH_MSG_VERBOSE(" track error Scaled/Broad ");
820  return 2.25 * sigmaR2;
821  } else {
822  ATH_MSG_VERBOSE(" Track scaled error ");
823  return 1.21 * sigmaR2;
824  }
825  }
826  } // End of segment or track
827  return sigmaR2;
828 }

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

◆ parametrisedSigma()

double Muon::MdtDriftCircleOnTrackCreator::parametrisedSigma ( double  r)
staticprivate

These are presumably fitted from data but no clue where and how

Definition at line 481 of file MdtDriftCircleOnTrackCreator.cxx.

481  {
483  return 0.23 * std::exp(-std::abs(r) / 6.06) + 0.0362;
484 }

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

◆ timeOfFlight()

double Muon::MdtDriftCircleOnTrackCreator::timeOfFlight ( const Amg::Vector3D pos,
const double  beta,
const double  tTrack,
const double  tShift 
) const
private

Definition at line 473 of file MdtDriftCircleOnTrackCreator.cxx.

476  {
477  return m_applyToF * (pos.mag() * s_inverseSpeedOfLight / beta) +
478  tTrack + tShift;
479 }

◆ updateError()

MdtRotPtr Muon::MdtDriftCircleOnTrackCreator::updateError ( const MdtDriftCircleOnTrack DCT,
const Trk::TrackParameters pars = nullptr,
const MuonDriftCircleErrorStrategy strategy = nullptr 
) const
overridevirtual

Update error of a ROT without changing the drift radius.

Parameters
DCTreference to the Muon::MdtDriftCircleOnTrack of which the sign should be updated.
parstrack prediction at DCT used when using the track prediction to update the error
strategyoptional drift circle error strategy to override the default
Returns
New ROT with updated error. (the user must delete this object when it is no longer needed).
Parameters
parspars

Implements Muon::IMdtDriftCircleOnTrackCreator.

Definition at line 401 of file MdtDriftCircleOnTrackCreator.cxx.

403  {
404 
405  const MuonDriftCircleErrorStrategy& myStrategy = (!strategy) ? m_errorStrategy : *strategy;
406 
407  // calculate error
408  double sigmaR(1.);
409  double t = DCT.driftTime();
410 
411  const MuonGM::MdtReadoutElement* detEl = DCT.detectorElement();
412  if (!detEl) {
413  ATH_MSG_WARNING("MdtDriftCircleOnTrack without MdtReadoutElement "
414  << m_idHelperSvc->toString(DCT.identify()));
415  return nullptr;
416  }
417 
418  double radius = DCT.driftRadius();
419 
420  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::BroadError) &&
421  !myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ScaledError) &&
422  !myStrategy.creationParameter(MuonDriftCircleErrorStrategy::FixedError)) {
423  sigmaR = detEl->innerTubeRadius() / std::sqrt(3.0); // Tube hit
424  } else {
425  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ErrorAtPredictedPosition))
426  ATH_MSG_WARNING("updateError: ErrorAtPredictedPosition is not yet supported!");
427  // get error
428  if (myStrategy.creationParameter(MuonDriftCircleErrorStrategy::ParameterisedErrors)) {
429  if (myStrategy.strategy() == MuonDriftCircleErrorStrategy::Moore) {
430  sigmaR = parametrisedSigma(radius);
431  } else if (myStrategy.strategy() == MuonDriftCircleErrorStrategy::Muon) {
432  sigmaR = parametrisedSigma(radius);
433  ATH_MSG_DEBUG("Muon drift errors:" << sigmaR
434  << " for radius=" << radius);
435  }
436  } else {
437  const EventContext& ctx{Gaudi::Hive::currentContext()};
438  sigmaR = m_mdtCalibrationTool->getResolutionFromRt(ctx,
439  DCT.identify(),
440  DCT.driftTime());
441  if (sigmaR < 0.0001 || sigmaR * sigmaR < 0.0001) {
442  ATH_MSG_WARNING("Bad obtained from calibration service: error "
443  << m_idHelperSvc->toString(DCT.identify())
444  << " reso " << sigmaR << " sigma2 "
445  << sigmaR * sigmaR << " drift time " << t
446  << " original " << DCT.driftTime());
447  return nullptr;
448  }
449  }
450 
451  } // end of tube hit check
452 
453  double sigmaR2 = 0.0;
454  // Handle the errors scaling / addition of fixed terms
455  if (myStrategy.strategy() == MuonDriftCircleErrorStrategy::Moore) {
456  sigmaR2 = mooreErrorStrategy(myStrategy, sigmaR * sigmaR, DCT.identify());
457  } else if (myStrategy.strategy() == MuonDriftCircleErrorStrategy::Muon) {
458  sigmaR2 = muonErrorStrategy(myStrategy, sigmaR * sigmaR, DCT.identify());
459  ATH_MSG_DEBUG("After scaling etc:\t Muon ErrorStrategy sigmaR2 = " << sigmaR2);
460  }
461  std::unique_ptr<MdtDriftCircleOnTrack> rot{DCT.clone()};
462  rot->m_localCovariance(0, 0) = sigmaR2;
463  rot->setErrorStrategy(myStrategy);
464 
465  ATH_MSG_VERBOSE("updated error for "
466  << m_idHelperSvc->toString(DCT.identify()) << " new error "
467  << Amg::error(rot->localCovariance(), Trk::locR)
468  << " old error "
469  << Amg::error(DCT.localCovariance(), Trk::locR));
470  return rot.release();
471 }

◆ updateSign()

void Muon::MdtDriftCircleOnTrackCreator::updateSign ( MdtDriftCircleOnTrack rot,
const Trk::DriftCircleSide  si 
) const
finaloverridevirtual

Update of the sign of the drift radius.

The method creates a new MdtDriftCircleOnTrack, the old input MdtDriftCircleOnTrack is not deleted. The user should take care of the memory managment of both MdtDriftCircleOnTracks.

Parameters
rotreference to the Muon::MdtDriftCircleOnTrack of which the sign should be updated.
siTrk::DriftCircleSide indicating whether the muon passed on the left or right side of the wire.

Implements Muon::IMdtDriftCircleOnTrackCreator.

Definition at line 282 of file MdtDriftCircleOnTrackCreator.cxx.

283  {
284  // ************************
285  // Apply additional corrections to local position
286  Trk::LocalParameters lpos(caliDriftCircle.localParameters());
287 
288  // set sign LocalPosition
289  if (si == Trk::LEFT) {
290  lpos[Trk::driftRadius] = -std::abs(lpos[Trk::driftRadius]);
291  } else {
292  lpos[Trk::driftRadius] = std::abs(lpos[Trk::driftRadius]);
293  }
294 
295  caliDriftCircle.setLocalParameters(lpos);
296  caliDriftCircle.m_status = Trk::DECIDED;
297  ATH_MSG_VERBOSE("MDT DriftCircleOnTrack made with radius = " << lpos);
298 }

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

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_applyToF {this, "ApplyToF", true}
private

toggle between loose errors (initial before alignment) and tight after alignment

Definition at line 271 of file MdtDriftCircleOnTrackCreator.h.

◆ m_BME_idx

int Muon::MdtDriftCircleOnTrackCreator::m_BME_idx {-1}
private

Definition at line 281 of file MdtDriftCircleOnTrackCreator.h.

◆ m_createTubeHits

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_createTubeHits {this, "CreateTubeHit", false}
private

Scale ROTs depending on local alignment (i.e.

location in detector)

Definition at line 248 of file MdtDriftCircleOnTrackCreator.h.

◆ m_defaultStrategy

Gaudi::Property<std::string> Muon::MdtDriftCircleOnTrackCreator::m_defaultStrategy
private
Initial value:
{this, "DefaultErrorStrategy", "Muon",
"Default error strategy to be used in calculating errors"}

if set to true, the ROT creator create 'tube' hits with a local position of 0 and an error of tube radius/sqrt(12)

Definition at line 243 of file MdtDriftCircleOnTrackCreator.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_doFixedError

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doFixedError {this, "DoFixedError", true}
private

Use parameterised errors.

Definition at line 252 of file MdtDriftCircleOnTrackCreator.h.

◆ m_doIndividualChamberReweights

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doIndividualChamberReweights {this, "DeweightIndividualChambers", true}
private

toggle between MC and data alignment errors (to be removed in rel.

21!)

Definition at line 267 of file MdtDriftCircleOnTrackCreator.h.

◆ m_doMdt

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doMdt {this, "doMDT", true}
private

Process MDT ROTs.

Defined in TimingMode enum.

Definition at line 228 of file MdtDriftCircleOnTrackCreator.h.

◆ m_doSegments

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doSegments {this, "DoSegmentErrors", true}
private

Deweight individual chambers.

Definition at line 265 of file MdtDriftCircleOnTrackCreator.h.

◆ m_errorAtPredictedPosition

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_errorAtPredictedPosition {this, "UseErrorAtPredictedPosition", false}
private

Add a term to the error to account for very poorly aligned stations.

Definition at line 259 of file MdtDriftCircleOnTrackCreator.h.

◆ m_errorStrategy

MuonDriftCircleErrorStrategy Muon::MdtDriftCircleOnTrackCreator::m_errorStrategy {MuonDriftCircleErrorStrategyInput{}}
private

< Error strategy for created ROTs

Default error strategy for the error strategy object

Definition at line 240 of file MdtDriftCircleOnTrackCreator.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_fixedError

Gaudi::Property<double> Muon::MdtDriftCircleOnTrackCreator::m_fixedError {this, "FixedError", 1.}
private

< Error used when m_doFixed error =true or m_scaleErrorManually = true

Definition at line 233 of file MdtDriftCircleOnTrackCreator.h.

◆ m_globalToLocalTolerance

Gaudi::Property<double> Muon::MdtDriftCircleOnTrackCreator::m_globalToLocalTolerance
private
Initial value:
{this, "GlobalToLocalTolerance", 1000.,
"Tolerance used for the Surface::globalToLocal"}

Definition at line 235 of file MdtDriftCircleOnTrackCreator.h.

◆ m_idHelperSvc

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

Definition at line 223 of file MdtDriftCircleOnTrackCreator.h.

◆ m_isMC

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_isMC {this, "IsMC", false}
private

toggle whether the time of flight is included in the t0 shifts

Definition at line 269 of file MdtDriftCircleOnTrackCreator.h.

◆ m_looseErrors

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_looseErrors
private
Initial value:
{this, "UseLooseErrors", false,
"Use error strategy for MC"}

Definition at line 274 of file MdtDriftCircleOnTrackCreator.h.

◆ m_mdtCalibrationTool

ToolHandle<IMdtCalibrationTool> Muon::MdtDriftCircleOnTrackCreator::m_mdtCalibrationTool {this, "CalibrationTool", ""}
private

Definition at line 225 of file MdtDriftCircleOnTrackCreator.h.

◆ m_scaleMdtCov

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_scaleMdtCov {this, "DoErrorScaling", true}
private

Fixed error (not tube radius)

Definition at line 250 of file MdtDriftCircleOnTrackCreator.h.

◆ m_stationError

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_stationError {this, "DoStationError", false}
private

Add a special error to account for the T0 refit.

Definition at line 261 of file MdtDriftCircleOnTrackCreator.h.

◆ m_t0Refit

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_t0Refit {this, "T0RefitError", false}
private

Use error strategy for segments by default.

Definition at line 263 of file MdtDriftCircleOnTrackCreator.h.

◆ m_timeCorrectionType

Gaudi::Property<int> Muon::MdtDriftCircleOnTrackCreator::m_timeCorrectionType {this, "TimingMode", 0}
private

Definition at line 230 of file MdtDriftCircleOnTrackCreator.h.

◆ m_useErrorParametrisation

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_useErrorParametrisation {this, "UseParametrisedError", false}
private

Use the predicted track position to correct the Error.

See Muon::MdtDriftCircleOnTrack::ErrorAtPredictedPosition The error will be adjusted to be that corresponding to the predicted position. This is useful to fix problems with tracks very close to the wire.

Definition at line 254 of file MdtDriftCircleOnTrackCreator.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.

◆ m_wasConfigured

Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_wasConfigured
private
Initial value:
{this, "WasConfigured", false,
"This tool is too complicated to rely on defaults. Will fail if not configured."}

Definition at line 276 of file MdtDriftCircleOnTrackCreator.h.

◆ s_inverseSpeedOfLight

constexpr double Muon::MdtDriftCircleOnTrackCreator::s_inverseSpeedOfLight {1. / Gaudi::Units::c_light}
staticconstexprprivate

Definition at line 279 of file MdtDriftCircleOnTrackCreator.h.


The documentation for this class was generated from the following files:
Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategyTight
double mooreErrorStrategyTight(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Definition: MdtDriftCircleOnTrackCreator.cxx:677
Muon::MdtDriftCircleOnTrackCreator::parametrisedSigma
static double parametrisedSigma(double r)
Definition: MdtDriftCircleOnTrackCreator.cxx:481
xAOD::strategy
strategy
Definition: L2CombinedMuon_v1.cxx:107
Muon::MuonStationIndex::BIS
@ BIS
Definition: MuonStationIndex.h:17
Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategy
double mooreErrorStrategy(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Definition: MdtDriftCircleOnTrackCreator.cxx:486
beamspotman.r
def r
Definition: beamspotman.py:676
Trk::LocalParameters
Definition: LocalParameters.h:98
Muon::MuonStationIndex::BE
@ BE
Definition: MuonStationIndex.h:25
Trk::PrepRawDataType::MdtPrepData
@ MdtPrepData
Muon::MuonDriftCircleErrorStrategy::WireSagTimeCorrection
@ WireSagTimeCorrection
Wire sag correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:30
Muon::MuonDriftCircleErrorStrategy::Muon
@ Muon
Definition: MuonDriftCircleErrorStrategy.h:17
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Muon::MdtDriftCircleOnTrackCreator::m_errorAtPredictedPosition
Gaudi::Property< bool > m_errorAtPredictedPosition
Add a term to the error to account for very poorly aligned stations.
Definition: MdtDriftCircleOnTrackCreator.h:259
Muon::MdtDriftCircleOnTrackCreator::COSMICS_TRIGGERTIME
@ COSMICS_TRIGGERTIME
case for normal cosmic data with rpc trigger or simulation including TOF.
Definition: MdtDriftCircleOnTrackCreator.h:84
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:27
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Muon::MuonDriftCircleErrorStrategy::setCalibWindow
void setCalibWindow(unsigned long)
Only the first nCalibWindowBits bits will be stored!
Definition: MuonDriftCircleErrorStrategy.h:71
Muon::MdtDriftCircleOnTrackCreator::m_stationError
Gaudi::Property< bool > m_stationError
Add a special error to account for the T0 refit.
Definition: MdtDriftCircleOnTrackCreator.h:261
Trk::DriftCircleStatus
DriftCircleStatus
Enumerates the 'status' of the wire on which the tracks passed (based on the TRT_Side enum,...
Definition: DriftCircleStatus.h:16
MdtCalibInput
Definition: MdtCalibInput.h:35
MuonGM::MdtReadoutElement::innerTubeRadius
double innerTubeRadius() const
Returns the inner tube radius excluding the aluminium walls.
Muon::MuonStationIndex::EEL
@ EEL
Definition: MuonStationIndex.h:18
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
MdtCalibInput::legacySurface
const Trk::StraightLineSurface & legacySurface() const
Returns the assocaited ideal surface (Throw exception if no legacy RE is available)
Definition: MdtCalibInput.cxx:134
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
ParticleTest.tp
tp
Definition: ParticleTest.py:25
MdtCalibInput::closestApproach
const Amg::Vector3D & closestApproach() const
Returns the point of closest approach to the wire.
Definition: MdtCalibInput.cxx:105
Muon::MdtDriftCircleOnTrackCreator::m_doMdt
Gaudi::Property< bool > m_doMdt
Process MDT ROTs.
Definition: MdtDriftCircleOnTrackCreator.h:228
Muon::MuonDriftCircleErrorStrategy::Moore
@ Moore
Definition: MuonDriftCircleErrorStrategy.h:17
Muon::MuonStationIndex::BI
@ BI
Definition: MuonStationIndex.h:25
Muon::MdtDriftCircleOnTrackCreator::m_globalToLocalTolerance
Gaudi::Property< double > m_globalToLocalTolerance
Definition: MdtDriftCircleOnTrackCreator.h:235
Trk::PrepRawData::type
virtual bool type(PrepRawDataType type) const =0
Interface method checking the type.
Muon::MdtDriftCircleOnTrackCreator::ATLTIME
@ ATLTIME
normal time of flight corrections assuming IP + light speed to be used for simulated data and collisi...
Definition: MdtDriftCircleOnTrackCreator.h:76
Trk::locR
@ locR
Definition: ParamDefs.h:44
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Muon::MdtDriftCircleOnTrackCreator::NO_CORRECTIONS
@ NO_CORRECTIONS
special case for cosmics taken with scintilator trigger which is read out so the offset with respect ...
Definition: MdtDriftCircleOnTrackCreator.h:79
Muon::MdtDriftCircleOnTrackCreator::muonErrorStrategy
double muonErrorStrategy(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Definition: MdtDriftCircleOnTrackCreator.cxx:779
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
Muon::MdtDriftCircleOnTrackCreator::m_BME_idx
int m_BME_idx
Definition: MdtDriftCircleOnTrackCreator.h:281
Muon::MdtDriftCircleOnTrackCreator::updateSign
virtual void updateSign(MdtDriftCircleOnTrack &rot, const Trk::DriftCircleSide si) const override final
Update of the sign of the drift radius.
Definition: MdtDriftCircleOnTrackCreator.cxx:282
Property
Support class for PropertyMgr.
Definition: Property.h:23
Muon::IMdtDriftCircleOnTrackCreator::MdtRotPtr
MdtDriftCircleOnTrack * MdtRotPtr
Definition: IMdtDriftCircleOnTrackCreator.h:26
Muon::MuonDriftCircleErrorStrategy::PropCorrection
@ PropCorrection
Propagation correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:27
MdtCalibInput::identify
const Identifier & identify() const
Returns the Identifier of the hit.
Definition: MdtCalibInput.cxx:84
Muon::MuonDriftCircleErrorStrategy::TempCorrection
@ TempCorrection
Temperature correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:28
Muon::MdtDriftCircleOnTrackCreator::m_mdtCalibrationTool
ToolHandle< IMdtCalibrationTool > m_mdtCalibrationTool
Definition: MdtDriftCircleOnTrackCreator.h:225
Trk::DefinedParameter
std::pair< double, ParamDefs > DefinedParameter
Definition: DefinedParameter.h:27
Muon::MuonDriftCircleErrorStrategy::T0Refit
@ T0Refit
A special error was applied to account for the T0 refit (user defined via jobProperties)
Definition: MuonDriftCircleErrorStrategy.h:24
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Muon::MuonDriftCircleErrorStrategy::WireSagGeomCorrection
@ WireSagGeomCorrection
Wire sag was applied, and so will affect errors.
Definition: MuonDriftCircleErrorStrategy.h:25
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
Trk::UNDECIDED
@ UNDECIDED
sign of drift radius has not been determined
Definition: DriftCircleStatus.h:20
Trk::StraightLineSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for StraightLineSurface: GlobalToLocal method without dynamic memory allocation This method...
Definition: StraightLineSurface.cxx:164
Muon::MdtDriftCircleOnTrackCreator::m_errorStrategy
MuonDriftCircleErrorStrategy m_errorStrategy
< Error strategy for created ROTs
Definition: MdtDriftCircleOnTrackCreator.h:240
Muon::MdtDriftCircleOnTrackCreator::COSMICS_TOF
@ COSMICS_TOF
Definition: MdtDriftCircleOnTrackCreator.h:88
Muon::MuonDriftCircleErrorStrategy::SlewCorrection
@ SlewCorrection
Slewing correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:31
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TRT::Hit::driftTime
@ driftTime
Definition: HitInfo.h:43
Trk::locZ
@ locZ
local cylindrical
Definition: ParamDefs.h:42
Muon::MuonDriftCircleErrorStrategy::FixedError
@ FixedError
A fixed error is given to this hit (user defined via jobProperties)
Definition: MuonDriftCircleErrorStrategy.h:20
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
MuonGM::MdtReadoutElement
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MdtReadoutElement.h:51
Muon::MuonStationIndex::BM
@ BM
Definition: MuonStationIndex.h:25
Muon::MdtDriftCircleOnTrackCreator::m_looseErrors
Gaudi::Property< bool > m_looseErrors
Definition: MdtDriftCircleOnTrackCreator.h:274
Muon::MuonDriftCircleErrorStrategy::TofCorrection
@ TofCorrection
Time of flight correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:26
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::driftRadius
@ driftRadius
trt, straws
Definition: ParamDefs.h:53
Muon::MdtDriftCircleOnTrackCreator::m_t0Refit
Gaudi::Property< bool > m_t0Refit
Use error strategy for segments by default.
Definition: MdtDriftCircleOnTrackCreator.h:263
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:107
Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategyLoose
double mooreErrorStrategyLoose(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Definition: MdtDriftCircleOnTrackCreator.cxx:582
Muon::MdtDriftCircleOnTrackCreator::m_doIndividualChamberReweights
Gaudi::Property< bool > m_doIndividualChamberReweights
toggle between MC and data alignment errors (to be removed in rel.
Definition: MdtDriftCircleOnTrackCreator.h:267
Muon::MdtDriftCircleOnTrackCreator::s_inverseSpeedOfLight
static constexpr double s_inverseSpeedOfLight
Definition: MdtDriftCircleOnTrackCreator.h:279
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::MuonDriftCircleErrorStrategy::BackgroundCorrection
@ BackgroundCorrection
Background correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:32
MdtCalibInput::setClosestApproach
void setClosestApproach(const Amg::Vector3D &approach)
Sets the closest approach.
Definition: MdtCalibInput.cxx:106
Trk::NODRIFTTIME
@ NODRIFTTIME
drift time was not used - drift radius is 0.
Definition: DriftCircleStatus.h:24
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
Muon::MuonDriftCircleErrorStrategy::Segment
@ Segment
Treating a segment or a track.
Definition: MuonDriftCircleErrorStrategy.h:33
Muon::MdtDriftCircleOnTrackCreator::mooreErrorStrategyMC
double mooreErrorStrategyMC(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Definition: MdtDriftCircleOnTrackCreator.cxx:499
Muon::MuonDriftCircleErrorStrategy::ErrorAtPredictedPosition
@ ErrorAtPredictedPosition
Definition: MuonDriftCircleErrorStrategy.h:23
MdtCalibOutput
Definition: MdtCalibOutput.h:10
Muon::MuonDriftCircleErrorStrategy::MagFieldCorrection
@ MagFieldCorrection
Magnetic field correction was applied in calibration.
Definition: MuonDriftCircleErrorStrategy.h:29
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Trk::DECIDED
@ DECIDED
sign of drift radius has been determined
Definition: DriftCircleStatus.h:18
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
Definition: PrepRawData.h:62
Muon::MuonDriftCircleErrorStrategy::StationError
@ StationError
A term is added to account for misaligned.
Definition: MuonDriftCircleErrorStrategy.h:22
Muon::MdtDriftCircleOnTrackCreator::m_doSegments
Gaudi::Property< bool > m_doSegments
Deweight individual chambers.
Definition: MdtDriftCircleOnTrackCreator.h:265
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
Amg::error
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 ...
Definition: EventPrimitivesHelpers.h:40
Muon::MdtDriftCircleOnTrackCreator::m_useErrorParametrisation
Gaudi::Property< bool > m_useErrorParametrisation
Use the predicted track position to correct the Error.
Definition: MdtDriftCircleOnTrackCreator.h:254
Muon::MdtDriftCircleOnTrackCreator::getLocalMeasurement
CalibrationOutput getLocalMeasurement(const EventContext &ctx, const MdtPrepData &DC, const MdtCalibInput &calibInput, const MuonDriftCircleErrorStrategy &strategy) const
preform the mdt calibration
Definition: MdtDriftCircleOnTrackCreator.cxx:300
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
Muon::MuonDriftCircleErrorStrategy::setParameter
void setParameter(CreationParameter, bool value)
Definition: MuonDriftCircleErrorStrategy.h:65
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
Muon::MuonDriftCircleErrorStrategy::setStrategy
void setStrategy(Strategy)
Select the strategy to be used - only one can be set at a time.
Definition: MuonDriftCircleErrorStrategy.h:56
Muon::MdtDriftCircleOnTrackCreator::timeOfFlight
double timeOfFlight(const Amg::Vector3D &pos, const double beta, const double tTrack, const double tShift) const
Definition: MdtDriftCircleOnTrackCreator.cxx:473
Trk::DriftCircleSide
DriftCircleSide
Enumerates the 'side' of the wire on which the tracks passed (i.e.
Definition: DriftCircleSide.h:16
Muon::MuonDriftCircleErrorStrategy::ParameterisedErrors
@ ParameterisedErrors
Use parameterised errors.
Definition: MuonDriftCircleErrorStrategy.h:21
Muon::MdtDriftCircleOnTrackCreator::m_isMC
Gaudi::Property< bool > m_isMC
toggle whether the time of flight is included in the t0 shifts
Definition: MdtDriftCircleOnTrackCreator.h:269
Muon::MdtDriftCircleOnTrackCreator::m_wasConfigured
Gaudi::Property< bool > m_wasConfigured
Definition: MdtDriftCircleOnTrackCreator.h:276
a
TList * a
Definition: liststreamerinfos.cxx:10
Muon::MdtDriftCircleOnTrackCreator::m_createTubeHits
Gaudi::Property< bool > m_createTubeHits
Scale ROTs depending on local alignment (i.e.
Definition: MdtDriftCircleOnTrackCreator.h:248
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...
Muon::MdtDriftCircleOnTrackCreator::getTriggerTime
double getTriggerTime() const
currently returns 0.
Definition: MdtDriftCircleOnTrackCreator.h:198
Muon::MdtDriftCircleOnTrackCreator::m_applyToF
Gaudi::Property< bool > m_applyToF
toggle between loose errors (initial before alignment) and tight after alignment
Definition: MdtDriftCircleOnTrackCreator.h:271
Muon::MuonStationIndex::BO
@ BO
Definition: MuonStationIndex.h:25
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Muon::MuonStationIndex::BIL
@ BIL
Definition: MuonStationIndex.h:17
GlobalPosition
TVector3 GlobalPosition
Definition: display_track.h:14
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Muon::MdtDriftCircleOnTrackCreator::correct
virtual Trk::RIO_OnTrack * correct(const Trk::PrepRawData &prd, const Trk::TrackParameters &tp, const EventContext &) const override
Base class method for correct.
Definition: MdtDriftCircleOnTrackCreator.cxx:389
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
Muon::MuonDriftCircleErrorStrategy::BroadError
@ BroadError
Definition: MuonDriftCircleErrorStrategy.h:18
Muon::MdtDriftCircleOnTrackCreator::m_timeCorrectionType
Gaudi::Property< int > m_timeCorrectionType
Definition: MdtDriftCircleOnTrackCreator.h:230
Muon::MuonStationIndex::StIndex
StIndex
enum to classify the different station layers in the muon spectrometer
Definition: MuonStationIndex.h:23
Muon::MuonDriftCircleErrorStrategy::ScaledError
@ ScaledError
Definition: MuonDriftCircleErrorStrategy.h:19
Trk::LEFT
@ LEFT
the drift radius is negative (see Trk::AtaStraightLine)
Definition: DriftCircleSide.h:20
Muon::MdtDriftCircleOnTrackCreator::createRIO_OnTrack
virtual MdtRotPtr createRIO_OnTrack(const MdtPrepData &prd, const Amg::Vector3D &globalPos, const Amg::Vector3D *gdir=nullptr, const double t0Shift=0., const MuonDriftCircleErrorStrategy *strategy=nullptr, const double beta=1, const double tTrack=1) const override final
Calibrate a MdtPrepData object.
Definition: MdtDriftCircleOnTrackCreator.cxx:144
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
Muon::MdtDriftCircleOnTrackCreator::m_scaleMdtCov
Gaudi::Property< bool > m_scaleMdtCov
Fixed error (not tube radius)
Definition: MdtDriftCircleOnTrackCreator.h:250
ToolSettings
MdtCalibrationTool::ToolSettings ToolSettings
Definition: MdtCalibrationTool.cxx:32
MdtCalibInput::trackDirection
const Amg::Vector3D & trackDirection() const
Returns the track direction (Can be zero)
Definition: MdtCalibInput.cxx:109
MuonParameters::beta
@ beta
Definition: MuonParamDefs.h:144
Muon::CalibrationOutput
MdtDriftCircleOnTrackCreator::CalibrationOutput CalibrationOutput
Definition: MdtDriftCircleOnTrackCreator.cxx:25
Muon::MuonStationIndex::EE
@ EE
Definition: MuonStationIndex.h:26
Muon::MdtDriftCircleOnTrackCreator::NumberOfTimingModes
@ NumberOfTimingModes
Definition: MdtDriftCircleOnTrackCreator.h:90
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Muon::MuonStationIndex::BOL
@ BOL
Definition: MuonStationIndex.h:17
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Muon::MuonDriftCircleErrorStrategy::creationParameter
bool creationParameter(CreationParameter) const
Definition: MuonDriftCircleErrorStrategy.h:84
Muon::MdtDriftCircleOnTrackCreator::m_doFixedError
Gaudi::Property< bool > m_doFixedError
Use parameterised errors.
Definition: MdtDriftCircleOnTrackCreator.h:252
Muon::MdtDriftCircleOnTrackCreator::m_defaultStrategy
Gaudi::Property< std::string > m_defaultStrategy
if set to true, the ROT creator create 'tube' hits with a local position of 0 and an error of tube ra...
Definition: MdtDriftCircleOnTrackCreator.h:243
fitman.k
k
Definition: fitman.py:528
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Identifier
Definition: IdentifierFieldParser.cxx:14
Muon::MdtDriftCircleOnTrackCreator::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MdtDriftCircleOnTrackCreator.h:223