|
ATLAS Offline Software
|
Interface for the reconstruction to MDT calibration and alignment corrections.
More...
#include <MdtDriftCircleOnTrackCreator.h>
|
| 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_OnTrack * | correct (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 MuonDriftCircleErrorStrategy & | errorStrategy () 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) |
|
|
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...
|
|
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
|
ToolHandle< IMdtCalibrationTool > | m_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 |
|
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:
- Create new Muon::MdtDriftCircleOnTrack from a Trk::MdtPrepData and a predicted Trk::TrackParameter.
- Create new Muon::MdtDriftCircleOnTrack from a Trk::MdtPrepData and a prediction of the global position of the point of closest approach of the track to the wire. Knowing the second coordinate is sufficient as the side on which the track passed the wire is not determined.
- Update the side (sign) of the Muon::MdtDriftCircleOnTrack.
updateSign(
const MdtDriftCircleOnTrack& rot,
const
The tool is capable of handling serveral different timing cases (click links to see definitions):
- normal time of flight corrections assuming IP + light speed to be used for simulated data and collision data
- cosmics taken with scintilator trigger or cosmic simulation without TOF
- 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
- normal cosmic data with rpc trigger or simulation including TOF. It uses the MuonCosmicTofTool to calculate the correct timing with respect to the MuonTriggerPoint
- testbeam running. Currently not implemented, propose not to change anything for the moment for testbeam The modes can be selected setting the TimingMode in the job options.
JobOptions Flags:
- doMDT: switch on/off ROT creation (default = true)
- TimingMode: select timing mode (default = ATLTIME)
- DoWireSag: Flag to turn on application of geometrical wire sagging correstions (default = false)
- CreateTubeHit: Flag to turn on the creation of tube hits (default = false)
Definition at line 71 of file MdtDriftCircleOnTrackCreator.h.
◆ MdtRotPtr
◆ StoreGateSvc_t
◆ 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.
◆ MdtDriftCircleOnTrackCreator()
Muon::MdtDriftCircleOnTrackCreator::MdtDriftCircleOnTrackCreator |
( |
const std::string & |
ty, |
|
|
const std::string & |
na, |
|
|
const IInterface * |
pa |
|
) |
| |
◆ ~MdtDriftCircleOnTrackCreator()
virtual Muon::MdtDriftCircleOnTrackCreator::~MdtDriftCircleOnTrackCreator |
( |
| ) |
|
|
virtualdefault |
◆ correct() [1/2]
◆ correct() [2/2]
◆ createRIO_OnTrack()
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
-
prd | MdtPrepData object |
globalPos | GlobalPosition (including second coordinate along the tube) |
gdir | GlobalDirection of track |
strategy | optional 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.
152 const EventContext& ctx{Gaudi::Hive::currentContext()};
160 if (GD) calibInput.setTrackDirection((*GD).unit());
166 ATH_MSG_VERBOSE(
" running in ATLTIME mode, tof: " << calibInput.timeOfFlight());
171 calibInput.setTimeOfFlight(0);
172 ATH_MSG_VERBOSE(
"running in NO_CORRECTIONS mode, tof: " << calibInput.timeOfFlight());
179 ATH_MSG_VERBOSE(
" running in COSMICS_TRIGGERTIME mode, triggerOffset: "
180 << calibInput.triggerTime());
183 calibInput.setTimeOfFlight(
timeOfFlight(calibInput.closestApproach(),
beta, tTrack, t0Shift));
185 << calibInput.timeOfFlight() <<
" tTrack: " << tTrack
186 <<
" t0Shift: " << t0Shift
191 ATH_MSG_WARNING(
"No valid mode selected, cannot apply tof correction");
192 calibInput.setTimeOfFlight(0);
201 if (!posOnIdealWire) {
202 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
" globalToLocal() failed for ideal surface");
205 posOnWire = std::move(*posOnIdealWire);
207 double positionAlongWire = posOnWire[
Trk::locZ];
217 if (!calibOutput.calibOk && calibOutput.driftTime > 500.) {
222 std::unique_ptr<MdtDriftCircleOnTrack> rot{};
228 std::optional<Amg::Vector2D>
pos = surf.globalToLocal(GP, calibInput.trackDirection());
232 ATH_MSG_WARNING(
"Unexpected globalToLocal failure, cannot create MDT ROT ");
239 rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
240 std::move(calibOutput.locPars),
241 std::move(calibOutput.locErr),
242 calibOutput.driftTime,
244 calibInput.trackDirection(),
254 rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
255 std::move(calibOutput.locPars),
256 std::move(calibOutput.locErr),
257 calibOutput.driftTime,
262 MuonDriftCircleErrorStrategy tmpStrategy(myStrategy.getBits());
264 rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
265 std::move(calibOutput.locPars),
266 std::move(calibOutput.locErr),
267 calibOutput.driftTime,
279 return rot.release();
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ DeclareInterfaceID()
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ errorStrategy()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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()
preform the mdt calibration
copy new values
Use same value
Definition at line 300 of file MdtDriftCircleOnTrackCreator.cxx.
306 ATH_MSG_VERBOSE(
"getLocalMeasurement "<<calibInput<<
" with m_doMdt=" <<
m_doMdt <<
" and " << myStrategy);
316 ATH_MSG_VERBOSE(
"getLocalMeasurement() - Calibrated output "<<calibOutput);
318 radius = calibOutput.driftRadius();
323 std::optional<Amg::Vector2D> myLocalPosition = surf.
globalToLocal(gpos, gdir);
324 if (myLocalPosition) {
327 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
" ErrorAtPredictedPosition failed because local position "<<
328 "transformation didn't succeed. Using measured radius instead.");
334 radius = DC.localPosition().x();
337 if (DC.localCovariance().cols() > 1) {
338 ATH_MSG_WARNING(
"Error matrix of DC doesn't have dimension 1 "<< DC.localCovariance());
350 sigmaR = calibOutput.driftRadiusUncert();
353 <<
" SigmaR = " << sigmaR);
354 double sigmaR2 = 0.0;
358 ATH_MSG_DEBUG(
"After scaling etc:\t Moore sigmaR2 = " << sigmaR2);
361 ATH_MSG_DEBUG(
"After scaling etc:\t Muon ErrorStrategy sigmaR2 = " << sigmaR2);
371 newLocalCov(0, 0) = sigmaR2;
◆ getTriggerTime()
double Muon::MdtDriftCircleOnTrackCreator::getTriggerTime |
( |
| ) |
const |
|
inlineprivate |
◆ initialize()
StatusCode Muon::MdtDriftCircleOnTrackCreator::initialize |
( |
| ) |
|
|
finaloverridevirtual |
Definition at line 36 of file MdtDriftCircleOnTrackCreator.cxx.
51 using Property = ToolSettings::Property;
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));
75 return StatusCode::FAILURE;
77 if (msgLevel(MSG::INFO)) {
79 ss <<
"Constructed default MuonDriftCircleErrorStrategy:";
114 ss <<
"Using Data Loose error tuning";
116 ss <<
"Using Data Tight error tuning";
126 ATH_MSG_ERROR(
"Detected bad default configuration, using Cosmic TOF without "
127 <<
"time of flight corrections does not work");
128 return StatusCode::FAILURE;
134 return StatusCode::FAILURE;
138 ATH_MSG_ERROR(
"This tool is too complicated to rely on defaults. Potential configuration issue.");
139 return StatusCode::FAILURE;
141 return StatusCode::SUCCESS;
◆ inputHandles()
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 |
◆ mooreErrorStrategy()
◆ mooreErrorStrategyLoose()
Need to check whether this Identifier is still existent
Definition at line 582 of file MdtDriftCircleOnTrackCreator.cxx.
594 return sigmaR2 + 0.005;
595 }
else if (myStrategy.creationParameter(
598 return 4 * sigmaR2 + 0.16;
601 return sigmaR2 + 0.005;
607 if (myStrategy.creationParameter(
611 return 1.44 * sigmaR2 + 4;
614 return 1.44 * sigmaR2 + 0.04;
619 return 1.44 * sigmaR2 + 1.;
620 return 4 * sigmaR2 + 25;
624 return 1.44 * sigmaR2 + 0.25;
631 return 1.44 * sigmaR2 + 0.25;
634 return 1.44 * sigmaR2 + 0.04;
638 if (myStrategy.creationParameter(
641 return 4 * sigmaR2 + 4.;
644 return 4 * sigmaR2 + 4.;
651 return 2.25 * sigmaR2 + 0.09;
670 return 1.44 * sigmaR2 + fixedTerm;
◆ mooreErrorStrategyMC()
Definition at line 499 of file MdtDriftCircleOnTrackCreator.cxx.
511 return sigmaR2 + 0.005;
514 return 4 * sigmaR2 + 0.16;
517 return sigmaR2 + 0.005;
526 return 1.44 * sigmaR2 + 1.44;
530 return 1.44 * sigmaR2 + 0.16;
531 return 1.44 * sigmaR2 + 1.;
536 return 1.44 * sigmaR2 + 1.;
538 return 4 * sigmaR2 + 25;
541 return 1.44 * sigmaR2 + 1.;
547 return 4 * sigmaR2 + 49.;
550 return 4 * sigmaR2 + 4.;
557 return 2.25 * sigmaR2 + 0.09;
575 return 1.44 * sigmaR2 + fixedTerm;
◆ mooreErrorStrategyTight()
Need to check whether this Identifier is still valid?
Definition at line 677 of file MdtDriftCircleOnTrackCreator.cxx.
689 return sigmaR2 + 0.005;
692 return 4 * sigmaR2 + 0.16;
695 return sigmaR2 + 0.005;
704 return 1.44 * sigmaR2 + 0.04;
708 return 1.21 * sigmaR2 + 0.01;
710 return 1.21 * sigmaR2 + 0.01;
715 return 1.44 * sigmaR2 + 1.;
717 return 4 * sigmaR2 + 1.;
722 return 1.21 * sigmaR2 + 0.25;
729 return 1.21 * sigmaR2 + 0.25;
735 return 1.21 * sigmaR2 + 25.;
738 return 1.21 * sigmaR2 + 0.04;
744 return 4 * sigmaR2 + 4.;
747 return 4 * sigmaR2 + 4.;
754 return 2.25 * sigmaR2 + 0.09;
759 double fixedTerm = 0.01;
772 return 1.21 * sigmaR2 + fixedTerm;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ muonErrorStrategy()
Definition at line 779 of file MdtDriftCircleOnTrackCreator.cxx.
801 return sigmaR2 + 0.005;
804 return 4 * sigmaR2 + 0.16;
807 return sigmaR2 + 0.005;
813 return 1.21 * sigmaR2;
820 return 2.25 * sigmaR2;
823 return 1.21 * sigmaR2;
◆ outputHandles()
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 |
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ timeOfFlight()
◆ updateError()
Update error of a ROT without changing the drift radius.
- Parameters
-
DCT | reference to the Muon::MdtDriftCircleOnTrack of which the sign should be updated. |
pars | track prediction at DCT used when using the track prediction to update the error |
strategy | optional 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
-
Implements Muon::IMdtDriftCircleOnTrackCreator.
Definition at line 401 of file MdtDriftCircleOnTrackCreator.cxx.
409 double t = DCT.driftTime();
418 double radius = DCT.driftRadius();
426 ATH_MSG_WARNING(
"updateError: ErrorAtPredictedPosition is not yet supported!");
434 <<
" for radius=" <<
radius);
437 const EventContext& ctx{Gaudi::Hive::currentContext()};
441 if (sigmaR < 0.0001 || sigmaR * sigmaR < 0.0001) {
444 <<
" reso " << sigmaR <<
" sigma2 "
445 << sigmaR * sigmaR <<
" drift time " <<
t
446 <<
" original " << DCT.driftTime());
453 double sigmaR2 = 0.0;
459 ATH_MSG_DEBUG(
"After scaling etc:\t Muon ErrorStrategy sigmaR2 = " << sigmaR2);
461 std::unique_ptr<MdtDriftCircleOnTrack> rot{DCT.clone()};
462 rot->m_localCovariance(0, 0) = sigmaR2;
463 rot->setErrorStrategy(myStrategy);
470 return rot.release();
◆ updateSign()
◆ updateVHKA()
◆ m_applyToF
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_applyToF {this, "ApplyToF", true} |
|
private |
◆ m_BME_idx
int Muon::MdtDriftCircleOnTrackCreator::m_BME_idx {-1} |
|
private |
◆ m_createTubeHits
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_createTubeHits {this, "CreateTubeHit", false} |
|
private |
◆ 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
◆ m_doFixedError
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doFixedError {this, "DoFixedError", true} |
|
private |
◆ m_doIndividualChamberReweights
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doIndividualChamberReweights {this, "DeweightIndividualChambers", true} |
|
private |
◆ m_doMdt
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doMdt {this, "doMDT", true} |
|
private |
◆ m_doSegments
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_doSegments {this, "DoSegmentErrors", true} |
|
private |
◆ m_errorAtPredictedPosition
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_errorAtPredictedPosition {this, "UseErrorAtPredictedPosition", false} |
|
private |
◆ m_errorStrategy
◆ m_evtStore
◆ m_fixedError
Gaudi::Property<double> Muon::MdtDriftCircleOnTrackCreator::m_fixedError {this, "FixedError", 1.} |
|
private |
◆ 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
◆ m_isMC
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_isMC {this, "IsMC", false} |
|
private |
◆ m_looseErrors
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_looseErrors |
|
private |
◆ m_mdtCalibrationTool
ToolHandle<IMdtCalibrationTool> Muon::MdtDriftCircleOnTrackCreator::m_mdtCalibrationTool {this, "CalibrationTool", ""} |
|
private |
◆ m_scaleMdtCov
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_scaleMdtCov {this, "DoErrorScaling", true} |
|
private |
◆ m_stationError
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_stationError {this, "DoStationError", false} |
|
private |
◆ m_t0Refit
Gaudi::Property<bool> Muon::MdtDriftCircleOnTrackCreator::m_t0Refit {this, "T0RefitError", false} |
|
private |
◆ m_timeCorrectionType
Gaudi::Property<int> Muon::MdtDriftCircleOnTrackCreator::m_timeCorrectionType {this, "TimingMode", 0} |
|
private |
◆ 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
◆ m_vhka
◆ 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 |
The documentation for this class was generated from the following files:
double mooreErrorStrategyTight(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
static double parametrisedSigma(double r)
double mooreErrorStrategy(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
@ WireSagTimeCorrection
Wire sag correction was applied in calibration.
Gaudi::Property< bool > m_errorAtPredictedPosition
Add a term to the error to account for very poorly aligned stations.
@ COSMICS_TRIGGERTIME
case for normal cosmic data with rpc trigger or simulation including TOF.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
void setCalibWindow(unsigned long)
Only the first nCalibWindowBits bits will be stored!
Gaudi::Property< bool > m_stationError
Add a special error to account for the T0 refit.
DriftCircleStatus
Enumerates the 'status' of the wire on which the tracks passed (based on the TRT_Side enum,...
double innerTubeRadius() const
Returns the inner tube radius excluding the aluminium walls.
Eigen::Matrix< double, 2, 1 > Vector2D
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
Gaudi::Property< bool > m_doMdt
Process MDT ROTs.
Gaudi::Property< double > m_globalToLocalTolerance
virtual bool type(PrepRawDataType type) const =0
Interface method checking the type.
@ ATLTIME
normal time of flight corrections assuming IP + light speed to be used for simulated data and collisi...
#define ATH_MSG_VERBOSE(x)
@ NO_CORRECTIONS
special case for cosmics taken with scintilator trigger which is read out so the offset with respect ...
double muonErrorStrategy(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
virtual void updateSign(MdtDriftCircleOnTrack &rot, const Trk::DriftCircleSide si) const override final
Update of the sign of the drift radius.
Support class for PropertyMgr.
MdtDriftCircleOnTrack * MdtRotPtr
@ PropCorrection
Propagation correction was applied in calibration.
@ TempCorrection
Temperature correction was applied in calibration.
ToolHandle< IMdtCalibrationTool > m_mdtCalibrationTool
std::pair< double, ParamDefs > DefinedParameter
@ T0Refit
A special error was applied to account for the T0 refit (user defined via jobProperties)
virtual void setOwner(IDataHandleHolder *o)=0
@ WireSagGeomCorrection
Wire sag was applied, and so will affect errors.
@ UNDECIDED
sign of drift radius has not been determined
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...
MuonDriftCircleErrorStrategy m_errorStrategy
< Error strategy for created ROTs
@ SlewCorrection
Slewing correction was applied in calibration.
@ FixedError
A fixed error is given to this hit (user defined via jobProperties)
Gaudi::Property< bool > m_looseErrors
@ TofCorrection
Time of flight correction was applied in calibration.
Gaudi::Property< bool > m_t0Refit
Use error strategy for segments by default.
double mooreErrorStrategyLoose(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
Gaudi::Property< bool > m_doIndividualChamberReweights
toggle between MC and data alignment errors (to be removed in rel.
static constexpr double s_inverseSpeedOfLight
@ BackgroundCorrection
Background correction was applied in calibration.
@ NODRIFTTIME
drift time was not used - drift radius is 0.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
@ Segment
Treating a segment or a track.
double mooreErrorStrategyMC(const MuonDriftCircleErrorStrategy &myStrategy, double sigmaR, const Identifier &id) const
@ ErrorAtPredictedPosition
@ MagFieldCorrection
Magnetic field correction was applied in calibration.
@ DECIDED
sign of drift radius has been determined
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
@ StationError
A term is added to account for misaligned.
Gaudi::Property< bool > m_doSegments
Deweight individual chambers.
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 ...
Gaudi::Property< bool > m_useErrorParametrisation
Use the predicted track position to correct the Error.
CalibrationOutput getLocalMeasurement(const EventContext &ctx, const MdtPrepData &DC, const MdtCalibInput &calibInput, const MuonDriftCircleErrorStrategy &strategy) const
preform the mdt calibration
Eigen::Matrix< double, 3, 1 > Vector3D
void setParameter(CreationParameter, bool value)
void setStrategy(Strategy)
Select the strategy to be used - only one can be set at a time.
double timeOfFlight(const Amg::Vector3D &pos, const double beta, const double tTrack, const double tShift) const
DriftCircleSide
Enumerates the 'side' of the wire on which the tracks passed (i.e.
@ ParameterisedErrors
Use parameterised errors.
Gaudi::Property< bool > m_isMC
toggle whether the time of flight is included in the t0 shifts
Gaudi::Property< bool > m_wasConfigured
Gaudi::Property< bool > m_createTubeHits
Scale ROTs depending on local alignment (i.e.
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...
double getTriggerTime() const
currently returns 0.
Gaudi::Property< bool > m_applyToF
toggle between loose errors (initial before alignment) and tight after alignment
#define ATH_MSG_WARNING(x)
virtual Trk::RIO_OnTrack * correct(const Trk::PrepRawData &prd, const Trk::TrackParameters &tp, const EventContext &) const override
Base class method for correct.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Gaudi::Property< int > m_timeCorrectionType
StIndex
enum to classify the different station layers in the muon spectrometer
@ LEFT
the drift radius is negative (see Trk::AtaStraightLine)
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.
Gaudi::Property< bool > m_scaleMdtCov
Fixed error (not tube radius)
MdtDriftCircleOnTrackCreator::CalibrationOutput CalibrationOutput
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
bool creationParameter(CreationParameter) const
Gaudi::Property< bool > m_doFixedError
Use parameterised errors.
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...
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc