|
ATLAS Offline Software
|
#include <CombinedMuonTrackFitter.h>
|
| CombinedMuonTrackFitter (const std::string &type, const std::string &name, const IInterface *parent) |
|
virtual | ~CombinedMuonTrackFitter () |
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | finalize () override |
|
virtual std::unique_ptr< Trk::Track > | fit (const EventContext &ctx, const Trk::Track &track, const Trk::RunOutlierRemoval runOutlier, const Trk::ParticleHypothesis particleHypothesis) const override |
|
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 |
|
|
std::unique_ptr< Trk::Track > | fit (const EventContext &ctx, const Trk::MeasurementSet &measurementSet, const Trk::TrackParameters &perigeeStartValue, const Trk::RunOutlierRemoval runOutlier, const Trk::ParticleHypothesis particleHypothesis) const |
| fit a set of MeasurementBase objects with starting value for perigeeParameters More...
|
|
std::unique_ptr< Trk::Track > | fit (const EventContext &ctx, const Trk::Track &indetTrack, Trk::Track &extrapolatedTrack, const Trk::RunOutlierRemoval runOutlier, const Trk::ParticleHypothesis particleHypothesis) const |
| combined muon fit More...
|
|
double | normalizedChi2 (const Trk::Track &track) const |
|
bool | checkTrack (std::string_view txt, const Trk::Track *newTrack) const |
|
unsigned int | countAEOTs (const Trk::Track &track, const std::string &txt) const |
|
bool | loadMagneticField (const EventContext &ctx, MagField::AtlasFieldCache &field_cache) const |
|
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...
|
|
|
ToolHandle< Rec::IMuidCaloTrackStateOnSurface > | m_caloTSOS |
|
ToolHandle< Muon::IMuonErrorOptimisationTool > | m_muonErrorOptimizer |
|
PublicToolHandle< Muon::MuonEDMPrinterTool > | m_printer |
|
ToolHandle< Rec::IMuonTrackQuery > | m_trackQuery |
|
ToolHandle< Trk::ITrackSummaryTool > | m_trackSummary |
|
ToolHandle< Trk::ITrkMaterialProviderTool > | m_materialUpdator |
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
|
Gaudi::Property< double > | m_badFitChi2 {this, "BadFitChi2", 2.5} |
|
Gaudi::Property< double > | m_zECToroid {this, "zECToroid", 10. * Gaudi::Units::meter} |
|
Gaudi::Property< bool > | m_updateWithCaloTG {this, "UpdateWithCaloTG", false} |
|
Gaudi::Property< bool > | m_useCaloTG {this, "UseCaloTG", false} |
|
std::unique_ptr< const Trk::Volume > | m_indetVolume {nullptr} |
|
std::unique_ptr< const Trk::Volume > | m_calorimeterVolume {nullptr} |
|
std::unique_ptr< MessageHelper > | m_messageHelper {std::make_unique<MessageHelper>(*this, 50)} |
|
Definition at line 43 of file CombinedMuonTrackFitter.h.
◆ StoreGateSvc_t
◆ CombinedMuonTrackFitter()
Rec::CombinedMuonTrackFitter::CombinedMuonTrackFitter |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~CombinedMuonTrackFitter()
Rec::CombinedMuonTrackFitter::~CombinedMuonTrackFitter |
( |
| ) |
|
|
virtualdefault |
◆ checkTrack()
bool Rec::CombinedMuonTrackFitter::checkTrack |
( |
std::string_view |
txt, |
|
|
const Trk::Track * |
newTrack |
|
) |
| const |
|
protected |
Check that the combined track contains enough MS measurements
Definition at line 603 of file CombinedMuonTrackFitter.cxx.
604 if (!newTrack)
return false;
610 if ((*it)->position().dot((*it)->momentum()) < 0) {
612 ATH_MSG_DEBUG(txt <<
" "<< __FILE__<<
":"<<__LINE__<<
" ALARM position " << (*it)->position() <<
" direction " << (*it)->momentum().unit());
614 ATH_MSG_DEBUG(txt <<
" "<< __FILE__<<
":"<<__LINE__<<
" OK position " << (*it)->position() <<
" direction " << (*it)->momentum().unit());
618 if (!
par->covariance()) {
continue; }
620 ATH_MSG_DEBUG(txt<<
" "<<__FILE__<<
":"<<__LINE__<<
"covariance matrix has negative diagonal element, killing track "
625 unsigned int numberMS{0}, numberMSPrec{0};
629 for (;
r != rEnd; ++
r) {
631 if (tsos->trackParameters() &&
m_calorimeterVolume->inside(tsos->trackParameters()->position()))
break;
633 if (tsos->measurementOnTrack()) {
640 ATH_MSG_VERBOSE( txt<<
" "<<__FILE__<<
":"<<__LINE__<<
" "<< numberMS <<
"/"<< numberMSPrec<<
" fitted MS measurements ");
642 if (numberMS < 5 || numberMSPrec < 3) {
◆ countAEOTs()
unsigned int Rec::CombinedMuonTrackFitter::countAEOTs |
( |
const Trk::Track & |
track, |
|
|
const std::string & |
txt |
|
) |
| const |
|
protected |
Definition at line 649 of file CombinedMuonTrackFitter.cxx.
651 unsigned int naeots = 0;
658 for (
const auto*
m : *trackTSOS) {
659 if (
m &&
m->alignmentEffectsOnTrack()) naeots++;
667 int tsos{0}, nperigee{0};
676 if (
it->trackParameters()) {
678 <<
" r " <<
it->trackParameters()->position().perp() <<
" z "
679 <<
it->trackParameters()->position().z() <<
" momentum "
680 <<
it->trackParameters()->momentum().mag());
681 }
else if (
it->measurementOnTrack()) {
683 <<
" r " <<
it->measurementOnTrack()->associatedSurface().center().perp() <<
" z "
684 <<
it->measurementOnTrack()->associatedSurface().center().z());
685 }
else if (
it->materialEffectsOnTrack()) {
688 <<
it->materialEffectsOnTrack()->associatedSurface().globalReferencePoint().perp()
689 <<
" z " <<
it->materialEffectsOnTrack()->associatedSurface().globalReferencePoint().z());
◆ 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]
◆ 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()
◆ 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
◆ finalize()
StatusCode Rec::CombinedMuonTrackFitter::finalize |
( |
| ) |
|
|
overridevirtual |
◆ fit() [1/3]
fit a set of MeasurementBase objects with starting value for perigeeParameters
Definition at line 323 of file CombinedMuonTrackFitter.cxx.
330 std::stringstream
ss;
331 ss << particleHypothesis;
353 std::unique_ptr<Trk::TrackParameters> perigee = perigeeStartValue.
uniqueClone();
354 std::unique_ptr<Trk::PerigeeSurface> perigeeSurface;
358 perigeeSurface = std::make_unique<Trk::PerigeeSurface>(origin);
360 perigee = std::make_unique<Trk::Perigee>(perigeeStartValue.
position(), perigeeStartValue.
momentum(), perigeeStartValue.
charge(),
365 std::unique_ptr<Trk::Track> fittedTrack(
fitter->
fit(ctx, measurementSet, *perigee,
false, particleHypothesis));
367 if (!
checkTrack(
"fitInterface2", fittedTrack.get())) {
return nullptr; }
378 ATH_MSG_VERBOSE(
" perform spectrometer error optimization after cleaning ");
379 std::unique_ptr<Trk::Track> optimizedTrack =
m_muonErrorOptimizer->optimiseErrors(*fittedTrack, ctx);
380 if (
checkTrack(
"fitInterface2Opt", optimizedTrack.get())) {
381 fittedTrack.swap(optimizedTrack);
391 ATH_MSG_VERBOSE(__FILE__<<
":"<<__LINE__<<
" perform track cleaning... ");
395 std::unique_ptr<Trk::Track> cleanTrack =
m_cleaner->clean(*fittedTrack, ctx);
399 if (!
checkTrack(
"fitInterface2Cleaner", cleanTrack.get())) { cleanTrack.reset(); }
407 ATH_MSG_DEBUG(
" keep original extension track despite cleaner veto ");
409 }
else if (!(*cleanTrack->
perigeeParameters() == *fittedTrack->perigeeParameters())) {
411 if (chi2After <
m_badFitChi2 || chi2After < chi2Before) {
413 fittedTrack.swap(cleanTrack);
◆ fit() [2/3]
combined muon fit
Definition at line 427 of file CombinedMuonTrackFitter.cxx.
433 std::stringstream
ss;
434 ss << particleHypothesis;
466 <<
m_printer->print(indetTrack) << std::endl
469 std::unique_ptr<Trk::Track> fittedTrack(
fitter->
fit(ctx, indetTrack, extrapolatedTrack,
false, particleHypothesis));
471 if (!fittedTrack)
return nullptr;
478 ATH_MSG_VERBOSE(
" perform spectrometer error optimization after cleaning ");
479 std::unique_ptr<Trk::Track> optimizedTrack =
m_muonErrorOptimizer->optimiseErrors(*fittedTrack, ctx);
480 if (
checkTrack(
"Error opt", optimizedTrack.get()) &&
482 fittedTrack.swap(optimizedTrack);
491 ATH_MSG_VERBOSE(__FILE__<<
":"<<__LINE__<<
" perform track cleaning... " <<
m_printer->print(*fittedTrack) << std::endl
492 <<
m_printer->printStations(*fittedTrack));
495 std::unique_ptr<Trk::Track> cleanTrack =
m_cleaner->clean(*fittedTrack, ctx);
504 ATH_MSG_DEBUG(
" keep original combined track despite cleaner veto ");
506 }
else if (!(*cleanTrack->
perigeeParameters() == *fittedTrack->perigeeParameters())) {
508 if (chi2After <
m_badFitChi2 || chi2After < chi2Before) {
510 fittedTrack.swap(cleanTrack);
◆ fit() [3/3]
Implements Rec::ICombinedMuonTrackFitter.
Definition at line 154 of file CombinedMuonTrackFitter.cxx.
163 std::stringstream
ss;
164 ss << particleHypothesis;
188 std::unique_ptr<Trk::Track> fittedTrack = std::make_unique<Trk::Track>(
track);
189 if (isCombined && particleHypothesis ==
Trk::muon && !
m_trackQuery->isCaloAssociated(*fittedTrack, ctx)) {
193 auto combinedTSOS = std::make_unique<Trk::TrackStates>();
196 bool caloAssociated =
false;
200 ATH_MSG_VERBOSE(
"Updating Calorimeter TSOS in Muon Combined (re)Fit ...");
202 caloAssociated =
true;
206 if (caloAssociated) {
207 combinedTSOS->push_back(in_tsos->clone());
208 }
else if ((in_tsos->measurementOnTrack() &&
m_indetVolume->inside(in_tsos->measurementOnTrack()->globalPosition())) ||
209 (in_tsos->trackParameters() &&
m_indetVolume->inside(in_tsos->trackParameters()->position()))) {
210 combinedTSOS->push_back(in_tsos->clone());
214 combinedTSOS->push_back(std::move(tsos));
217 combinedTSOS->push_back(in_tsos->clone());
219 if (tsos) combinedTSOS->push_back(std::move(tsos));
222 if (tsos) combinedTSOS->push_back(std::move(tsos));
224 if (tsos) combinedTSOS->push_back(std::move(tsos));
225 combinedTSOS->push_back(in_tsos->clone());
228 caloAssociated =
true;
232 std::unique_ptr<Trk::Track>
combinedTrack = std::make_unique<Trk::Track>(fittedTrack->
info(), std::move(combinedTSOS),
nullptr);
240 ATH_MSG_VERBOSE(
"Updating Calorimeter TSOS in Muon Combined (re)Fit ...");
248 ATH_MSG_VERBOSE(
"Updating Calorimeter TSOS in Muon Standalone Fit ...");
253 fittedTrack =
fitter->
fit(ctx, *fittedTrack,
false, particleHypothesis);
257 if (!fittedTrack)
return nullptr;
260 if (!
checkTrack(
"fitInterface1", fittedTrack.get()))
return nullptr;
272 ATH_MSG_VERBOSE(
" perform spectrometer error optimization after cleaning ");
273 std::unique_ptr<Trk::Track> optimizedTrack =
m_muonErrorOptimizer->optimiseErrors(*fittedTrack, ctx);
274 if (
checkTrack(
"fitInterface1Opt", optimizedTrack.get()) && chi2BeforeOptimizer >
normalizedChi2(*optimizedTrack)) {
275 fittedTrack.swap(optimizedTrack);
284 ATH_MSG_VERBOSE(__FILE__<<
":"<<__LINE__<<
" perform track cleaning... " <<
m_printer->print(*fittedTrack) << std::endl
285 <<
m_printer->printStations(*fittedTrack));
289 std::unique_ptr<Trk::Track> cleanTrack =
m_cleaner->clean(*fittedTrack, ctx);
293 if (!
checkTrack(
"fitInterface1Cleaner", cleanTrack.get())) { cleanTrack.reset(); }
301 ATH_MSG_DEBUG(
" keep original standalone track despite cleaner veto ");
306 if (chi2After <
m_badFitChi2 || chi2After < chi2Before) {
308 fittedTrack.swap(cleanTrack);
317 <<
m_printer->printStations(*fittedTrack));
◆ initialize()
StatusCode Rec::CombinedMuonTrackFitter::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented in Rec::CombinedMuonTrackBuilder.
Definition at line 56 of file CombinedMuonTrackFitter.cxx.
65 m_messageHelper->setMessage(0,
"combinedFit:: missing MeasuredPerigee for indet track");
66 m_messageHelper->setMessage(1,
"combinedFit:: fail with MS removed by cleaner");
67 m_messageHelper->setMessage(2,
"combinedFit:: fail with perigee outside indet");
68 m_messageHelper->setMessage(3,
"combinedFit:: fail with missing caloEnergy");
69 m_messageHelper->setMessage(4,
"combinedFit:: final combined track lost, this should not happen");
70 m_messageHelper->setMessage(5,
"indetExtension:: reject with insufficient MS measurements");
71 m_messageHelper->setMessage(6,
"standaloneFit:: input vertex fails dynamic_cast");
72 m_messageHelper->setMessage(7,
"standaloneFit:: missing MeasuredPerigee for spectrometer track");
73 m_messageHelper->setMessage(8,
"standaloneFit:: missing TrackParameters on prefit");
74 m_messageHelper->setMessage(9,
"standaloneFit:: prefit fails parameter extrapolation to calo");
75 m_messageHelper->setMessage(10,
"standaloneFit:: extrapolated track missing TrackParameters at calo scatterer");
76 m_messageHelper->setMessage(11,
"standaloneFit:: final track lost, this should not happen");
77 m_messageHelper->setMessage(12,
"standaloneFit:: fail as calo incorrectly described");
78 m_messageHelper->setMessage(13,
"standaloneRefit:: fail track as no TSOS with type CaloDeposit");
80 m_messageHelper->setMessage(15,
"standaloneRefit:: no inner parameters");
81 m_messageHelper->setMessage(16,
"standaloneRefit:: innerScattering dynamic_cast failed");
82 m_messageHelper->setMessage(17,
"standaloneRefit:: no TSOS of type CaloDeposit found");
83 m_messageHelper->setMessage(18,
"standaloneRefit:: no inner scattering TSOS found");
84 m_messageHelper->setMessage(19,
"standaloneRefit:: no middle material");
85 m_messageHelper->setMessage(20,
"standaloneRefit:: no middle parameters");
86 m_messageHelper->setMessage(21,
"standaloneRefit:: no CaloDeposit TSOS found");
88 m_messageHelper->setMessage(23,
"standaloneRefit:: no outer parameters");
89 m_messageHelper->setMessage(24,
"standaloneRefit:: outerScattering dynamic_cast failed");
90 m_messageHelper->setMessage(25,
"standaloneRefit:: no outerScattering or CaloDeposit TSOS found");
91 m_messageHelper->setMessage(26,
"standaloneRefit:: failed propagation to innerTSOS");
92 m_messageHelper->setMessage(27,
"standaloneRefit:: failed propagation to middleTSOS");
93 m_messageHelper->setMessage(28,
"standaloneRefit:: fail as calo incorrectly described");
94 m_messageHelper->setMessage(29,
"fit:: particle hypothesis must be 0 or 2 (nonInteracting or muon). Requested: ");
95 m_messageHelper->setMessage(30,
"fit:: about to add the TSOS's describing calorimeter association to a combined muon");
96 m_messageHelper->setMessage(31,
"fit:: particle hypothesis must be 0 or 2 (nonInteracting or muon). Requested: ");
97 m_messageHelper->setMessage(32,
"fit:: particle hypothesis must be 0 or 2 (nonInteracting or muon). Requested: ");
98 m_messageHelper->setMessage(33,
"fit:: combined muon track is missing the TSOS's describing calorimeter association");
99 m_messageHelper->setMessage(34,
"appendSelectedTSOS:: skip duplicate measurement ");
100 m_messageHelper->setMessage(35,
"caloEnergyParameters:: muonTrack without caloEnergy association");
101 m_messageHelper->setMessage(36,
"caloEnergyParameters:: combinedTrack without caloEnergy association");
102 m_messageHelper->setMessage(37,
"createMuonTrack:: should never happen: FSR caloEnergy delete");
103 m_messageHelper->setMessage(38,
"createSpectrometerTSOS:: missing MeasuredPerigee for spectrometer track");
104 m_messageHelper->setMessage(39,
"createSpectrometerTSOS:: skip unrecognized TSOS without TrackParameters. Type: ");
105 m_messageHelper->setMessage(40,
"createSpectrometerTSOS:: skip duplicate measurement on same Surface. Type: ");
106 m_messageHelper->setMessage(41,
"entrancePerigee:: missing TrackingGeometrySvc - no perigee will be added at MS entrance");
107 m_messageHelper->setMessage(42,
"extrapolatedParameters:: missing MeasuredPerigee for spectrometer track");
108 m_messageHelper->setMessage(43,
"extrapolatedParameters:: missing spectrometer parameters on spectrometer track");
109 m_messageHelper->setMessage(44,
"final track lost, this should not happen");
110 m_messageHelper->setMessage(45,
"momentumUpdate:: update failed, keeping original value");
111 m_messageHelper->setMessage(46,
"reallocateMaterial:: null perigeeStartValue");
113 m_messageHelper->setMessage(48,
"standaloneFit:: insufficient measurements on input spectrometer track");
114 m_messageHelper->setMessage(49,
"standaloneFit:: inconsistent TSOS on input spectrometer track");
142 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& Rec::ICombinedMuonTrackFitter::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
AlgTool and IAlgTool interface methods.
Definition at line 41 of file ICombinedMuonTrackFitter.h.
42 static const InterfaceID IID_ICombinedMuonTrackFitter(
"ICombinedMuonTrackFitter", 1, 0);
43 return IID_ICombinedMuonTrackFitter;
◆ loadMagneticField()
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ normalizedChi2()
double Rec::CombinedMuonTrackFitter::normalizedChi2 |
( |
const Trk::Track & |
track | ) |
const |
|
protected |
◆ optimizeErrors()
bool Rec::CombinedMuonTrackFitter::optimizeErrors |
( |
const EventContext & |
ctx, |
|
|
Trk::Track & |
track |
|
) |
| const |
|
private |
Definition at line 546 of file CombinedMuonTrackFitter.cxx.
551 muonSummary =
summary->muonTrackSummary();
555 muonSummary =
summary->muonTrackSummary();
558 if (!muonSummary)
return false;
561 unsigned int optimize{0},nBarrel{0}, nEndcap{0}, nSmall{0}, nLarge{0};
566 if (!isMdt)
continue;
594 if (nBarrel > 0 && nEndcap > 0) { optimize += 10; }
596 if (nSmall > 0 && nLarge > 0) { optimize += 100; }
598 if (optimize > 0) {
ATH_MSG_DEBUG(
" OptimizeErrors with value " << optimize); }
◆ 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.
◆ 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.
◆ updateVHKA()
◆ m_allowCleanerVeto
Gaudi::Property<bool> Rec::CombinedMuonTrackFitter::m_allowCleanerVeto {this, "AllowCleanerVeto", true} |
|
private |
◆ m_badFitChi2
Gaudi::Property<double> Rec::CombinedMuonTrackFitter::m_badFitChi2 {this, "BadFitChi2", 2.5} |
|
protected |
◆ m_calorimeterVolume
std::unique_ptr<const Trk::Volume> Rec::CombinedMuonTrackFitter::m_calorimeterVolume {nullptr} |
|
protected |
◆ m_caloTSOS
◆ m_cleaner
◆ m_countCombinedCleanerVeto
std::atomic_uint Rec::CombinedMuonTrackFitter::m_countCombinedCleanerVeto {0} |
|
mutableprivate |
◆ m_countExtensionCleanerVeto
std::atomic_uint Rec::CombinedMuonTrackFitter::m_countExtensionCleanerVeto {0} |
|
mutableprivate |
◆ m_countStandaloneCleanerVeto
std::atomic_uint Rec::CombinedMuonTrackFitter::m_countStandaloneCleanerVeto {0} |
|
mutableprivate |
◆ m_detStore
◆ m_evtStore
◆ m_fieldCacheCondObjInputKey
Initial value:{this, "AtlasFieldCacheCondObj", "fieldCondObj",
"Name of the Magnetic Field conditions object key"}
Definition at line 133 of file CombinedMuonTrackFitter.h.
◆ m_fitter
◆ m_fitterSL
◆ m_idHelperSvc
◆ m_indetVolume
std::unique_ptr<const Trk::Volume> Rec::CombinedMuonTrackFitter::m_indetVolume {nullptr} |
|
protected |
◆ m_materialUpdator
◆ m_maxWarnings
Gaudi::Property<unsigned> Rec::CombinedMuonTrackFitter::m_maxWarnings |
|
private |
Initial value:{this, "MaxNumberOfWarnings", 10,
"Maximum number of permitted WARNING messages per message type."}
Definition at line 140 of file CombinedMuonTrackFitter.h.
◆ m_messageHelper
◆ m_muonErrorOptimizer
◆ m_printer
◆ m_trackingVolumesSvc
◆ m_trackQuery
◆ m_trackSummary
Initial value:{
this,
"TrackSummaryTool",
"Trk::TrackSummaryTool/MuidTrackSummaryTool",
}
Definition at line 119 of file CombinedMuonTrackFitter.h.
◆ m_updateWithCaloTG
Gaudi::Property<bool> Rec::CombinedMuonTrackFitter::m_updateWithCaloTG {this, "UpdateWithCaloTG", false} |
|
protected |
◆ m_useCaloTG
Gaudi::Property<bool> Rec::CombinedMuonTrackFitter::m_useCaloTG {this, "UseCaloTG", false} |
|
protected |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_zECToroid
Gaudi::Property<double> Rec::CombinedMuonTrackFitter::m_zECToroid {this, "zECToroid", 10. * Gaudi::Units::meter} |
|
protected |
The documentation for this class was generated from the following files:
const ShapeFitter * fitter
@ CaloDeposit
This TSOS contains a CaloEnergy object.
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
Const iterator class for DataVector/DataList.
const FitQuality * fitQuality() const
return a pointer to the fit quality const-overload
bool hasPositiveDiagElems(const AmgSymMatrix(N) &mat)
Returns true if all diagonal elements of the covariance matrix are finite aka sane in the above defin...
double charge() const
Returns the charge.
const_reverse_iterator rend() const noexcept
Return a const_reverse_iterator pointing at the beginning of the collection.
const Amg::Vector3D & position() const
Access method for the position.
ServiceHandle< Trk::ITrackingVolumesSvc > m_trackingVolumesSvc
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::unique_ptr< MessageHelper > m_messageHelper
std::unique_ptr< ParametersBase< DIM, T > > uniqueClone() const
clone method for polymorphic deep copy returning unique_ptr; it is not overriden, but uses the existi...
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
const TrackInfo & info() const
Returns a const ref to info of a const tracks.
constexpr virtual SurfaceType surfaceType() const override=0
Returns the Surface Type enum for the surface used to define the derived class.
Gaudi::Property< bool > m_updateWithCaloTG
@ MuonSpectrometerEntryLayer
Tracking Volume which defines the entrance surfaces of the MS.
Gaudi::Property< double > m_badFitChi2
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
ToolHandle< Muon::IMuonErrorOptimisationTool > m_muonErrorOptimizer
std::vector< SG::VarHandleKeyArray * > m_vhka
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool fit(const LArSamples::AbsShape &data, const AbsShape &reference, double &k, double &deltaT, double &chi2, const ScaledErrorData *sed=0) const
void combinedTrack(long int ICH, double *pv0, double *covi, double BMAG, double *par, double *covo)
structure to hold information per chamber in the muon system
const std::vector< ChamberHitSummary > & chamberHitSummary() const
access to the vector of chamber hit summaries on the track
virtual void setOwner(IDataHandleHolder *o)=0
@ StraightTrack
A straight track.
bool checkTrack(std::string_view txt, const Trk::Track *newTrack) const
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
bool loadMagneticField(const EventContext &ctx, MagField::AtlasFieldCache &field_cache) const
ToolHandle< Trk::ITrackSummaryTool > m_trackSummary
std::unique_ptr< const Trk::Volume > m_indetVolume
std::atomic_uint m_countExtensionCleanerVeto
ToolHandle< Trk::ITrackFitter > m_fitterSL
double chi2(TH1 *h0, TH1 *h1)
std::unique_ptr< const Trk::Volume > m_calorimeterVolume
ToolHandle< Rec::IMuonTrackQuery > m_trackQuery
Detailed track summary for the muon system Give access to hit counts per chamber.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
ToolHandle< Rec::IMuidCaloTrackStateOnSurface > m_caloTSOS
const_reverse_iterator rbegin() const noexcept
Return a const_reverse_iterator pointing past the end of the collection.
bool solenoidOn() const
status of the magnets
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
@ CalorimeterEntryLayer
Tracking Volume which defines the entrance srufaces of the calorimeter.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< bool > m_allowCleanerVeto
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.
const Perigee * perigeeParameters() const
return Perigee.
represents the track state (measurement, material, fit parameters and quality) at a surface.
A summary of the information contained by a track.
std::reverse_iterator< const_iterator > const_reverse_iterator
Standard const_reverse_iterator.
bool optimizeErrors(const EventContext &ctx, Trk::Track &track) const
std::atomic_uint m_countCombinedCleanerVeto
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
const Amg::Vector3D & momentum() const
Access method for the momentum.
Gaudi::Property< double > m_zECToroid
ToolHandle< Trk::ITrackFitter > m_fitter
std::atomic_uint m_countStandaloneCleanerVeto
Identifier identify() const
return the identifier -extends MeasurementBase
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
StIndex
enum to classify the different station layers in the muon spectrometer
ToolHandle< Trk::ITrkMaterialProviderTool > m_materialUpdator
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
double normalizedChi2(const Trk::Track &track) const
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
bool trackProperties(const TrackProperties &property) const
Access methods for track properties.
unsigned int countAEOTs(const Trk::Track &track, const std::string &txt) const
Gaudi::Property< bool > m_useCaloTG
Gaudi::Property< unsigned > m_maxWarnings
ToolHandle< Muon::IMuonTrackCleaner > m_cleaner