|
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)
- CreateTubeHit: Flag to turn on the creation of tube hits (default = false)
Definition at line 69 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 71 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 140 of file MdtDriftCircleOnTrackCreator.cxx.
148 const EventContext& ctx{Gaudi::Hive::currentContext()};
156 if (GD) calibInput.setTrackDirection((*GD).unit());
162 ATH_MSG_VERBOSE(
" running in ATLTIME mode, tof: " << calibInput.timeOfFlight());
167 calibInput.setTimeOfFlight(0);
168 ATH_MSG_VERBOSE(
"running in NO_CORRECTIONS mode, tof: " << calibInput.timeOfFlight());
175 ATH_MSG_VERBOSE(
" running in COSMICS_TRIGGERTIME mode, triggerOffset: "
176 << calibInput.triggerTime());
179 calibInput.setTimeOfFlight(
timeOfFlight(calibInput.closestApproach(),
beta, tTrack, t0Shift));
181 << calibInput.timeOfFlight() <<
" tTrack: " << tTrack
182 <<
" t0Shift: " << t0Shift
187 ATH_MSG_WARNING(
"No valid mode selected, cannot apply tof correction");
188 calibInput.setTimeOfFlight(0);
197 if (!posOnIdealWire) {
198 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
" globalToLocal() failed for ideal surface");
201 posOnWire = std::move(*posOnIdealWire);
203 double positionAlongWire = posOnWire[
Trk::locZ];
213 if (!calibOutput.calibOk && calibOutput.driftTime > 500.) {
218 std::unique_ptr<MdtDriftCircleOnTrack> rot{};
224 std::optional<Amg::Vector2D>
pos = surf.globalToLocal(GP, calibInput.trackDirection());
228 ATH_MSG_WARNING(
"Unexpected globalToLocal failure, cannot create MDT ROT ");
235 rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
236 std::move(calibOutput.locPars),
237 std::move(calibOutput.locErr),
238 calibOutput.driftTime,
240 calibInput.trackDirection(),
250 rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
251 std::move(calibOutput.locPars),
252 std::move(calibOutput.locErr),
253 calibOutput.driftTime,
258 MuonDriftCircleErrorStrategy tmpStrategy(myStrategy.getBits());
260 rot = std::make_unique<MdtDriftCircleOnTrack>(&mdtPrd,
261 std::move(calibOutput.locPars),
262 std::move(calibOutput.locErr),
263 calibOutput.driftTime,
275 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 296 of file MdtDriftCircleOnTrackCreator.cxx.
302 ATH_MSG_VERBOSE(
"getLocalMeasurement "<<calibInput<<
" with m_doMdt=" <<
m_doMdt <<
" and " << myStrategy);
312 ATH_MSG_VERBOSE(
"getLocalMeasurement() - Calibrated output "<<calibOutput);
314 radius = calibOutput.driftRadius();
319 std::optional<Amg::Vector2D> myLocalPosition = surf.
globalToLocal(gpos, gdir);
320 if (myLocalPosition) {
323 ATH_MSG_WARNING(__FILE__<<
":"<<__LINE__<<
" ErrorAtPredictedPosition failed because local position "<<
324 "transformation didn't succeed. Using measured radius instead.");
330 radius = DC.localPosition().x();
333 if (DC.localCovariance().cols() > 1) {
334 ATH_MSG_WARNING(
"Error matrix of DC doesn't have dimension 1 "<< DC.localCovariance());
346 sigmaR = calibOutput.driftRadiusUncert();
349 <<
" SigmaR = " << sigmaR);
350 double sigmaR2 = 0.0;
354 ATH_MSG_DEBUG(
"After scaling etc:\t Moore sigmaR2 = " << sigmaR2);
357 ATH_MSG_DEBUG(
"After scaling etc:\t Muon ErrorStrategy sigmaR2 = " << sigmaR2);
367 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:";
110 ss <<
"Using Data Loose error tuning";
112 ss <<
"Using Data Tight error tuning";
122 ATH_MSG_ERROR(
"Detected bad default configuration, using Cosmic TOF without "
123 <<
"time of flight corrections does not work");
124 return StatusCode::FAILURE;
130 return StatusCode::FAILURE;
134 ATH_MSG_ERROR(
"This tool is too complicated to rely on defaults. Potential configuration issue.");
135 return StatusCode::FAILURE;
137 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 578 of file MdtDriftCircleOnTrackCreator.cxx.
590 return sigmaR2 + 0.005;
591 }
else if (myStrategy.creationParameter(
594 return 4 * sigmaR2 + 0.16;
597 return sigmaR2 + 0.005;
603 if (myStrategy.creationParameter(
607 return 1.44 * sigmaR2 + 4;
610 return 1.44 * sigmaR2 + 0.04;
615 return 1.44 * sigmaR2 + 1.;
616 return 4 * sigmaR2 + 25;
620 return 1.44 * sigmaR2 + 0.25;
627 return 1.44 * sigmaR2 + 0.25;
630 return 1.44 * sigmaR2 + 0.04;
634 if (myStrategy.creationParameter(
637 return 4 * sigmaR2 + 4.;
640 return 4 * sigmaR2 + 4.;
647 return 2.25 * sigmaR2 + 0.09;
666 return 1.44 * sigmaR2 + fixedTerm;
◆ mooreErrorStrategyMC()
Definition at line 495 of file MdtDriftCircleOnTrackCreator.cxx.
507 return sigmaR2 + 0.005;
510 return 4 * sigmaR2 + 0.16;
513 return sigmaR2 + 0.005;
522 return 1.44 * sigmaR2 + 1.44;
526 return 1.44 * sigmaR2 + 0.16;
527 return 1.44 * sigmaR2 + 1.;
532 return 1.44 * sigmaR2 + 1.;
534 return 4 * sigmaR2 + 25;
537 return 1.44 * sigmaR2 + 1.;
543 return 4 * sigmaR2 + 49.;
546 return 4 * sigmaR2 + 4.;
553 return 2.25 * sigmaR2 + 0.09;
571 return 1.44 * sigmaR2 + fixedTerm;
◆ mooreErrorStrategyTight()
Need to check whether this Identifier is still valid?
Definition at line 673 of file MdtDriftCircleOnTrackCreator.cxx.
685 return sigmaR2 + 0.005;
688 return 4 * sigmaR2 + 0.16;
691 return sigmaR2 + 0.005;
700 return 1.44 * sigmaR2 + 0.04;
704 return 1.21 * sigmaR2 + 0.01;
706 return 1.21 * sigmaR2 + 0.01;
711 return 1.44 * sigmaR2 + 1.;
713 return 4 * sigmaR2 + 1.;
718 return 1.21 * sigmaR2 + 0.25;
725 return 1.21 * sigmaR2 + 0.25;
731 return 1.21 * sigmaR2 + 25.;
734 return 1.21 * sigmaR2 + 0.04;
740 return 4 * sigmaR2 + 4.;
743 return 4 * sigmaR2 + 4.;
750 return 2.25 * sigmaR2 + 0.09;
755 double fixedTerm = 0.01;
768 return 1.21 * sigmaR2 + fixedTerm;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ muonErrorStrategy()
Definition at line 775 of file MdtDriftCircleOnTrackCreator.cxx.
797 return sigmaR2 + 0.005;
800 return 4 * sigmaR2 + 0.16;
803 return sigmaR2 + 0.005;
809 return 1.21 * sigmaR2;
816 return 2.25 * sigmaR2;
819 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 397 of file MdtDriftCircleOnTrackCreator.cxx.
405 double t = DCT.driftTime();
414 double radius = DCT.driftRadius();
422 ATH_MSG_WARNING(
"updateError: ErrorAtPredictedPosition is not yet supported!");
430 <<
" for radius=" <<
radius);
433 const EventContext& ctx{Gaudi::Hive::currentContext()};
437 if (sigmaR < 0.0001 || sigmaR * sigmaR < 0.0001) {
440 <<
" reso " << sigmaR <<
" sigma2 "
441 << sigmaR * sigmaR <<
" drift time " <<
t
442 <<
" original " << DCT.driftTime());
449 double sigmaR2 = 0.0;
455 ATH_MSG_DEBUG(
"After scaling etc:\t Muon ErrorStrategy sigmaR2 = " << sigmaR2);
457 std::unique_ptr<MdtDriftCircleOnTrack> rot{DCT.clone()};
458 rot->m_localCovariance(0, 0) = sigmaR2;
459 rot->setErrorStrategy(myStrategy);
466 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 241 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 233 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 252 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 274 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
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
@ 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