|
ATLAS Offline Software
|
#include <GaussianSumFitter.h>
|
| GaussianSumFitter (const std::string &, const std::string &, const IInterface *) |
| Constructor with parameters to be passed to AlgTool. More...
|
|
virtual | ~GaussianSumFitter ()=default |
| Virtual destructor. More...
|
|
virtual StatusCode | initialize () override final |
| AlgTool initialise method. More...
|
|
virtual std::unique_ptr< Track > | fit (const EventContext &ctx, const Track &, const RunOutlierRemoval, const ParticleHypothesis particleHypothesis=nonInteracting) const override final |
| Refit a track using the Gaussian Sum Filter. More...
|
|
virtual std::unique_ptr< Track > | fit (const EventContext &ctx, const PrepRawDataSet &, const TrackParameters &, const RunOutlierRemoval, const ParticleHypothesis particleHypothesis=nonInteracting) const override final |
| Fit a collection of 'PrepRawData' objects using the Gaussian Sum Filter. More...
|
|
virtual std::unique_ptr< Track > | fit (const EventContext &ctx, const MeasurementSet &, const TrackParameters &, const RunOutlierRemoval, const ParticleHypothesis particleHypothesis=nonInteracting) const override final |
| Fit a collection of 'RIO_OnTrack' objects using the Gaussian Sum Filter. More...
|
|
virtual std::unique_ptr< Track > | fit (const EventContext &ctx, const Track &, const PrepRawDataSet &, const RunOutlierRemoval, const ParticleHypothesis matEffects=nonInteracting) const override final |
| Refit a track adding a PrepRawDataSet. More...
|
|
virtual std::unique_ptr< Track > | fit (const EventContext &ctx, const Track &, const MeasurementSet &, const RunOutlierRemoval, const ParticleHypothesis matEffects=nonInteracting) const override final |
| Refit a track adding a measurement base set. More...
|
|
virtual std::unique_ptr< Track > | fit (const EventContext &ctx, const Track &, const Track &, const RunOutlierRemoval, const ParticleHypothesis matEffects=nonInteracting) const override final |
| Combine two tracks by refitting. 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 |
|
|
std::unique_ptr< MultiComponentStateOnSurfaceDV > | convertTrajToTrack (GSFTrajectory &trajectory) const |
|
GSFTsos | makePerigee (const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, const GSFTrajectory &smoothedTrajectory, const ParticleHypothesis particleHypothesis=nonInteracting) const |
| Produces a perigee from a smoothed trajectory. More...
|
|
bool | stepForwardFit (const EventContext &ctx, IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const PrepRawData *originalPrepRawData, const MeasurementBase *originalMeasurement, const Surface &surface, MultiComponentState &updatedState, const ParticleHypothesis particleHypothesis=nonInteracting) const |
| Progress one step along the fit. More...
|
|
GSFTrajectory | forwardPRDfit (const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const PrepRawDataSet &inputPrepRawDataSet, const TrackParameters &estimatedTrackParametersNearOrigin, const ParticleHypothesis particleHypothesis=nonInteracting) const |
| Forward GSF fit using PrepRawData. More...
|
|
GSFTrajectory | forwardMeasurementFit (const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const MeasurementSet &inputMeasurementSet, const TrackParameters &estimatedTrackParametersNearOrigin, const ParticleHypothesis particleHypothesis=nonInteracting) const |
| Forward GSF fit using MeasurementSet. More...
|
|
GSFTrajectory | smootherFit (const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const ParticleHypothesis particleHypothesis=nonInteracting, const CaloCluster_OnTrack *ccot=nullptr) const |
| Gsf smoothed trajectory. More...
|
|
MultiComponentState | addCCOT (const EventContext &ctx, const Trk::CaloCluster_OnTrack *ccot, GSFTrajectory &smoothedTrajectory) const |
| Methof to add the CaloCluster onto the track. More...
|
|
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...
|
|
◆ GSFTrajectory
◆ StoreGateSvc_t
◆ GaussianSumFitter()
Trk::GaussianSumFitter::GaussianSumFitter |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~GaussianSumFitter()
virtual Trk::GaussianSumFitter::~GaussianSumFitter |
( |
| ) |
|
|
virtualdefault |
◆ addCCOT()
Methof to add the CaloCluster onto the track.
Definition at line 1022 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
1027 const GSFTsos& currentMultiStateOS = smoothedTrajectory.back();
1039 if (currentSurface) {
1042 currentMultiComponentState,
1048 if (extrapolatedState.empty()) {
1054 std::move(extrapolatedState), *ccot,
fitQuality);
1055 if (updatedState.empty()) {
1066 if (extrapolatedState.empty()) {
1072 smoothedTrajectory.emplace_back(
1074 std::unique_ptr<Trk::CaloCluster_OnTrack>(ccot->
clone()),
1076 std::move(updatedState));
1088 Trk::LocalParameters locpars(
locX);
1091 std::move(locpars), std::move(
covMatrix), *currentSurface);
1096 auto combinedFitQuality =
1097 Trk::GsfMeasurementUpdator::
fitQuality(extrapolatedState, *ccot);
1100 smoothedTrajectory.emplace_back(
1103 std::move(combinedState),
1104 MultiComponentStateHelpers::
clone(extrapolatedState));
1106 return extrapolatedState;
◆ convertTrajToTrack()
◆ 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
◆ fit() [1/6]
Fit a collection of 'RIO_OnTrack' objects using the Gaussian Sum Filter.
- This requires that an trackParameters object be supplied also as an initial guess
Implements Trk::ITrackFitter.
Definition at line 306 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
315 if (measurementSet.empty()) {
325 cleanedMeasurementSet.reserve(measurementSet.size());
327 for (
const auto* meas : measurementSet) {
330 "There is an empty MeasurementBase object in the track! ");
336 cleanedMeasurementSet.push_back(meas);
345 estimatedParametersNearOrigin.position(),
346 estimatedParametersNearOrigin.momentum());
347 sort(sortedMeasurementSet.begin(),
348 sortedMeasurementSet.end(),
349 measurementBaseComparisonFunction);
357 estimatedParametersNearOrigin, particleHypothesis);
359 if (forwardTrajectory.empty()) {
365 ctx, extrapolatorCache, forwardTrajectory, particleHypothesis, ccot);
366 if (smoothedTrajectory.empty()) {
371 std::unique_ptr<FitQuality>
fitQuality = buildFitQuality(smoothedTrajectory);
377 auto perigeeMultiStateOnSurface =
378 makePerigee(ctx, extrapolatorCache, smoothedTrajectory, particleHypothesis);
379 if (!perigeeMultiStateOnSurface.multiComponentState.empty()) {
380 smoothedTrajectory.push_back(std::move(perigeeMultiStateOnSurface));
386 std::reverse(smoothedTrajectory.begin(), smoothedTrajectory.end());
392 return std::make_unique<Track>(
◆ fit() [2/6]
Fit a collection of 'PrepRawData' objects using the Gaussian Sum Filter.
- This requires that an trackParameters object be supplied also as an initial guess
Implements Trk::ITrackFitter.
Definition at line 231 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
240 if (prepRawDataSet.empty()) {
249 estimatedParametersNearOrigin.position(),
250 estimatedParametersNearOrigin.momentum());
253 sortedPrepRawDataSet.end(),
254 prdComparisonFunction);
261 estimatedParametersNearOrigin, particleHypothesis);
263 if (forwardTrajectory.empty()) {
268 smootherFit(ctx, extrapolatorCache, forwardTrajectory, particleHypothesis);
269 if (smoothedTrajectory.empty()) {
274 std::unique_ptr<FitQuality>
fitQuality = buildFitQuality(smoothedTrajectory);
280 auto perigeeMultiStateOnSurface =
281 makePerigee(ctx, extrapolatorCache, smoothedTrajectory, particleHypothesis);
282 if (!perigeeMultiStateOnSurface.multiComponentState.empty()) {
283 smoothedTrajectory.push_back(std::move(perigeeMultiStateOnSurface));
290 std::reverse(smoothedTrajectory.begin(), smoothedTrajectory.end());
296 return std::make_unique<Track>(
◆ fit() [3/6]
Refit a track adding a measurement base set.
Implements Trk::ITrackFitter.
Definition at line 433 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
441 if (measurementSet.empty()) {
443 "Client tries to add an empty MeasurementSet to the track fit.");
444 return fit(ctx, inputTrack, runOutlier, matEffects);
447 if (inputTrack.trackParameters()->empty()) {
448 ATH_MSG_FATAL(
"No estimation of track parameters near origin!");
452 if (inputTrack.trackStateOnSurfaces()->empty()) {
453 ATH_MSG_FATAL(
"Attempting to fit track to empty MeasurementBase "
459 *(std::min_element(inputTrack.trackParameters()->begin(),
460 inputTrack.trackParameters()->end(),
464 inputTrack, measurementSet);
468 ctx, combinedMS, *parametersNearestReference, runOutlier, matEffects);
◆ fit() [4/6]
Refit a track adding a PrepRawDataSet.
Implements Trk::ITrackFitter.
Definition at line 402 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
409 if (addPrdColl.empty()) {
411 "client tries to add an empty PrepRawDataSet to the track fit.");
412 return fit(ctx, intrk, runOutlier, matEffects);
416 *(std::min_element(intrk.trackParameters()->begin(),
417 intrk.trackParameters()->end(),
422 intrk, addPrdColl,
false,
true);
425 return fit(ctx, PRDColl, *estimatedStartParameters, runOutlier, matEffects);
◆ fit() [5/6]
Refit a track using the Gaussian Sum Filter.
Implements Trk::ITrackFitter.
Definition at line 141 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
148 if (inputTrack.trackParameters()->empty()) {
153 if (inputTrack.trackStateOnSurfaces()->empty()) {
159 *(std::min_element(inputTrack.trackParameters()->begin(),
160 inputTrack.trackParameters()->end(),
170 for (
const auto* tsos : *(inputTrack.trackStateOnSurfaces())) {
177 const MeasurementBase* meas = tsos->measurementOnTrack();
180 measurementSet.push_back(meas);
183 measurementSet.push_back(meas);
190 *parametersNearestReference,
200 for (
const auto* meas : *(inputTrack.measurementsOnTrack())) {
212 const PrepRawData* prepRawData = rioOnTrack->
prepRawData();
216 prepRawDataSet.push_back(prepRawData);
221 *parametersNearestReference,
◆ fit() [6/6]
Combine two tracks by refitting.
Implements Trk::ITrackFitter.
Definition at line 476 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
484 if (!intrk1.trackStateOnSurfaces() || !intrk2.trackStateOnSurfaces() ||
485 intrk1.trackStateOnSurfaces()->size() < 2) {
486 ATH_MSG_WARNING(
"called to refit empty track or track with too little "
487 "information, reject fit");
490 if (!intrk1.trackParameters() || intrk1.trackParameters()->empty()) {
492 "seeding the GXF, reject fit");
498 for (
const auto* tsos : *(intrk1.trackStateOnSurfaces())) {
504 if (tsos->measurementOnTrack()->type(
509 ms.push_back(tsos->measurementOnTrack());
512 for (
const auto* tsos : *(intrk2.trackStateOnSurfaces())) {
519 if (tsos->measurementOnTrack()->type(
523 ms.push_back(tsos->measurementOnTrack());
526 return fit(ctx,
ms, *minPar, runOutlier, matEffects);
◆ forwardMeasurementFit()
Forward GSF fit using MeasurementSet.
Definition at line 669 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
677 if (inputMeasurementSet.empty()) {
678 ATH_MSG_ERROR(
"forwardMeasurementFit: Input MeasurementSet is empty!");
683 const AmgVector(5)&
par = estimatedTrackParametersNearOrigin.parameters();
685 estimatedTrackParametersNearOrigin.associatedSurface()
694 multiComponentStateNearOrigin.push_back(
695 std::move(componentParametersNearOrigin));
698 forwardTrajectory.reserve(inputMeasurementSet.size());
699 for (
const auto* measurement : inputMeasurementSet) {
706 measurement->associatedSurface(),
707 multiComponentStateNearOrigin,
714 return forwardTrajectory;
◆ forwardPRDfit()
Forward GSF fit using PrepRawData.
Definition at line 607 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
618 for (
const auto* rawData : inputPrepRawDataSet) {
619 if (!(rawData->detectorElement())) {
622 prepRawDataSet.push_back(rawData);
627 const AmgVector(5)&
par = estimatedTrackParametersNearOrigin.parameters();
629 estimatedTrackParametersNearOrigin.associatedSurface()
639 multiComponentStateNearOrigin.push_back(
640 std::move(componentParametersNearOrigin));
644 forwardTrajectory.reserve(prepRawDataSet.size());
645 for (
const auto* prepRawData : prepRawDataSet) {
653 prepRawData->detectorElement()->surface(prepRawData->identify()),
654 multiComponentStateNearOrigin,
661 return forwardTrajectory;
◆ initialize()
StatusCode Trk::GaussianSumFitter::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ 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::ITrackFitter::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ makePerigee()
Produces a perigee from a smoothed trajectory.
Definition at line 546 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
556 multiComponentStateOnSurfaceNearestOrigin = smoothedTrajectory.back();
565 *multiComponentState,
571 if (stateExtrapolatedToPerigee.empty()) {
576 std::unique_ptr<Trk::TrackParameters> combinedPerigee =
580 std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>
584 if(std::abs(combinedPerigee->
position().z())>5000.) {
585 ATH_MSG_WARNING(
"Pathological perigee well outside of tracking detector!! Returning {}");
589 if (std::abs(combinedPerigee->parameters()[
Trk::qOverP]) > 1e8) {
591 "makePerigee() about to return with 0 momentum!! Returning {}");
597 std::move(combinedPerigee),
598 std::move(stateExtrapolatedToPerigee),
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ 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()
◆ smootherFit()
Gsf smoothed trajectory.
This method can handle additional info like calorimeter cluster constraints. It also produces what we actually store in Trk::Tracks.
Definition at line 824 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
831 if (forwardTrajectory.empty()) {
833 "Attempting to smooth an empty forward trajectory... Exiting!");
838 smoothedTrajectory.reserve(forwardTrajectory.size());
842 GSFTrajectory::reverse_iterator trackStateOnSurfaceItr =
843 forwardTrajectory.rbegin();
844 bool foundMeasurement =
false;
845 for (; trackStateOnSurfaceItr != forwardTrajectory.rend();
846 ++trackStateOnSurfaceItr) {
848 smoothedTrajectory.emplace_back(std::move(*trackStateOnSurfaceItr));
850 foundMeasurement =
true;
855 if(!foundMeasurement){
861 std::move(trackStateOnSurfaceItr->multiComponentState);
864 std::unique_ptr<Trk::MeasurementBase> firstSmootherMeasurementOnTrack =
865 std::move(trackStateOnSurfaceItr->measurementOnTrack);
866 if (!firstSmootherMeasurementOnTrack) {
868 "Initial state on surface in smoother does not have an associated "
869 "MeasurementBase object");
875 *firstSmootherMeasurementOnTrack,
877 if (firstSmoothedState.empty()) {
883 "Not all components have covariance. Rejecting smoothed state.");
888 std::unique_ptr<Trk::TrackParameters> combinedFirstSmoothedState =
890 smoothedTrajectory.emplace_back(
891 fitQuality, std::move(firstSmootherMeasurementOnTrack),
892 std::move(combinedFirstSmoothedState),
894 const auto& updatedFirstStateOnSurface = smoothedTrajectory.back();
898 ++trackStateOnSurfaceItr;
900 auto lasttrackStateOnSurface = forwardTrajectory.rend() - 1;
902 auto secondLastTrackStateOnSurface = forwardTrajectory.rend() - 2;
909 std::move(firstSmoothedState), 15., 5., 15., 5., 15.);
912 std::move(smoothedStateWithScaledError),
913 *(updatedFirstStateOnSurface.measurementOnTrack),
914 fitQualityWithScaledErrors);
915 if (updatedState.empty()) {
925 for (; trackStateOnSurfaceItr != forwardTrajectory.rend();
926 ++trackStateOnSurfaceItr) {
927 auto& trackStateOnSurface = (*trackStateOnSurfaceItr);
929 std::unique_ptr<Trk::MeasurementBase> measurement =
930 std::move(trackStateOnSurface.measurementOnTrack);
932 ATH_MSG_WARNING(
"MeasurementBase object could not be extracted from a "
933 "measurement TSOS... continuing");
948 if (extrapolatedState.empty()) {
953 std::bitset<TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>
type(
956 smoothedTrajectory.emplace_back(
957 FitQualityOnSurface(1, 1),
958 std::move(measurement),
960 std::move(extrapolatedState),
962 loopUpdatedState = &(smoothedTrajectory.back().multiComponentState);
967 std::move(extrapolatedState), *measurement,
fitQuality);
968 if (updatedState.empty()) {
970 "Could not update the multi-component state... rejecting track!");
974 bool islast = (trackStateOnSurfaceItr == lasttrackStateOnSurface);
980 trackStateOnSurface.multiComponentState;
985 if (combinedfitterState.empty()) {
991 combinedfitterState, *measurement);
992 smoothedTrajectory.emplace_back(
993 smootherHelper(std::move(combinedfitterState), std::move(measurement),
997 smoothedTrajectory.emplace_back(
998 smootherHelper(std::move(updatedState), std::move(measurement),
1003 loopUpdatedState = &(smoothedTrajectory.back().multiComponentState);
1005 if (ccot && trackStateOnSurfaceItr == secondLastTrackStateOnSurface) {
1007 addCCOT(ctx, ccot, smoothedTrajectory);
1008 if (!ccotState.empty()) {
1009 (*loopUpdatedState) = std::move(ccotState);
1014 return smoothedTrajectory;
◆ stepForwardFit()
Progress one step along the fit.
Definition at line 722 of file TrkFitter/TrkGaussianSumFilter/src/GaussianSumFitter.cxx.
733 if (!originalPrepRawData && !originalMeasurement) {
740 ATH_MSG_WARNING(
"No measurement base information passed to StepForwardFit");
754 if (extrapolatedState.empty()) {
760 std::unique_ptr<Trk::MeasurementBase> measurement =
nullptr;
761 if (originalMeasurement) {
762 measurement.reset(originalMeasurement->clone());
764 std::unique_ptr<Trk::TrackParameters> combinedState =
766 if (!combinedState) {
773 combinedState.reset();
788 if (updatedState.empty()) {
798 std::bitset<TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes>
type(0);
800 forwardTrajectory.emplace_back(
802 std::move(measurement),
809 updatedState = std::move(extrapolatedState);
812 std::move(measurement),
814 std::move(extrapolatedState));
◆ 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_combineWithFitter
Gaudi::Property<bool> Trk::GaussianSumFitter::m_combineWithFitter |
|
private |
◆ m_cutChiSquaredPerNumberDOF
Gaudi::Property<double> Trk::GaussianSumFitter::m_cutChiSquaredPerNumberDOF |
|
private |
◆ m_detStore
◆ m_directionToPerigee
◆ m_evtStore
◆ m_extrapolator
◆ m_maximumNumberOfComponents
Gaudi::Property<unsigned int> Trk::GaussianSumFitter::m_maximumNumberOfComponents |
|
private |
◆ m_refitOnMeasurementBase
Gaudi::Property<bool> Trk::GaussianSumFitter::m_refitOnMeasurementBase |
|
private |
◆ m_reintegrateOutliers
Gaudi::Property<bool> Trk::GaussianSumFitter::m_reintegrateOutliers |
|
private |
◆ m_rioOnTrackCreator
◆ m_slimTransientMTSOS
Gaudi::Property<bool> Trk::GaussianSumFitter::m_slimTransientMTSOS |
|
private |
◆ m_sortingReferencePoint
std::vector<double> Trk::GaussianSumFitter::m_sortingReferencePoint |
|
private |
◆ m_trkParametersComparisonFunction
◆ m_useMode
Gaudi::Property<bool> Trk::GaussianSumFitter::m_useMode |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
bool allHaveCovariance(const MultiComponentState &in)
Check to see if all components have covariance Matrix.
Contains information about the 'fitter' of this track.
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
@ GaussianSumFilter
Tracks from Gaussian Sum Filter.
GSFTrajectory smootherFit(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const ParticleHypothesis particleHypothesis=nonInteracting, const CaloCluster_OnTrack *ccot=nullptr) const
Gsf smoothed trajectory.
std::vector< const PrepRawData * > PrepRawDataSet
vector of clusters and drift circles
PropDirection m_directionToPerigee
const Amg::Vector3D & position() const
Access method for the position.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Gaudi::Property< bool > m_slimTransientMTSOS
@ BremFitSuccessful
A brem fit was performed on this track and this fit was successful.
std::unique_ptr< MultiComponentStateOnSurfaceDV > convertTrajToTrack(GSFTrajectory &trajectory) const
GSFTrajectory forwardPRDfit(const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const PrepRawDataSet &inputPrepRawDataSet, const TrackParameters &estimatedTrackParametersNearOrigin, const ParticleHypothesis particleHypothesis=nonInteracting) const
Forward GSF fit using PrepRawData.
ToolHandle< IMultiStateExtrapolator > m_extrapolator
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
@ loc2
generic first and second local coordinate
std::unique_ptr< Trk::TrackParameters > combineToSingle(const MultiComponentState &, const bool useMode=false)
@bried Calculate combined state of many components
std::vector< double > m_sortingReferencePoint
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
std::pair< double, ParamDefs > DefinedParameter
std::vector< GSFTsos > GSFTrajectory
bool stepForwardFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &, GSFTrajectory &forwardTrajectory, const PrepRawData *originalPrepRawData, const MeasurementBase *originalMeasurement, const Surface &surface, MultiComponentState &updatedState, const ParticleHypothesis particleHypothesis=nonInteracting) const
Progress one step along the fit.
virtual void setOwner(IDataHandleHolder *o)=0
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
constexpr int8_t maxNumberofStateComponents
Note the Gaussian sum approach as describe e.g in " Optimal Filtering" Anderson and Moore "Track Fitt...
Gaudi::Property< bool > m_refitOnMeasurementBase
AmgSymMatrix(5) &GXFTrackState
virtual const Surface & associatedSurface() const override final
returns the surface for the local to global transformation
virtual CaloCluster_OnTrack * clone() const override final
Pseudo-constructor, needed to avoid excessive RTTI.
std::unique_ptr< Trk::MeasurementBase > measurementOnTrack
MultiComponentState clone(const MultiComponentState &in)
Clone TrackParameters method.
std::vector< ComponentParameters > MultiComponentState
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
@ BremFit
A brem fit was performed on this track.
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
MultiComponentState WithScaledError(MultiComponentState &&in, double errorScaleLocX, double errorScaleLocY, double errorScalePhi, double errorScaleTheta, double errorScaleQoverP)
Scale the covariance matrix components by individual factors.
virtual void renounce()=0
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< bool > m_useMode
Ensure that the ATLAS eigen extensions are properly loaded.
GSFTrajectory forwardMeasurementFit(const EventContext &ctx, IMultiStateExtrapolator::Cache &cache, const MeasurementSet &inputMeasurementSet, const TrackParameters &estimatedTrackParametersNearOrigin, const ParticleHypothesis particleHypothesis=nonInteracting) const
Forward GSF fit using MeasurementSet.
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
ParametersBase< TrackParametersDim, Charged > TrackParameters
Trk::MultiComponentState multiComponentState
Eigen::Matrix< double, 3, 1 > Vector3D
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
virtual std::unique_ptr< Track > fit(const EventContext &ctx, const Track &, const RunOutlierRemoval, const ParticleHypothesis particleHypothesis=nonInteracting) const override final
Refit a track using the Gaussian Sum Filter.
FitQualityOnSurface fitQuality(const MultiComponentState &, const MeasurementBase &)
Method for determining the chi2 of the multi-component state and the number of degrees of freedom.
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
Gaudi::Property< bool > m_combineWithFitter
ComparisonFunction< TrackParameters > TrkParametersComparisonFunction
GSFTsos makePerigee(const EventContext &ctx, Trk::IMultiStateExtrapolator::Cache &, const GSFTrajectory &smoothedTrajectory, const ParticleHypothesis particleHypothesis=nonInteracting) const
Produces a perigee from a smoothed trajectory.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ PseudoMeasurementOnTrack
Class providing comparison function, or relational definition, for PrepRawData.
MultiComponentState addCCOT(const EventContext &ctx, const Trk::CaloCluster_OnTrack *ccot, GSFTrajectory &smoothedTrajectory) const
Methof to add the CaloCluster onto the track.
TrkParametersComparisonFunction m_trkParametersComparisonFunction
Class implementing a comparison function for sorting MeasurementBase objects.
Trk::MultiComponentState combineWithSmoother(const Trk::MultiComponentState &forwardsMultiState, const Trk::MultiComponentState &smootherMultiState, unsigned int maximumNumberOfComponents)
Helper to combine forward with smoother MultiComponentStates.
MultiComponentState update(Trk::MultiComponentState &&, const Trk::MeasurementBase &, FitQualityOnSurface &fitQoS)
Method for updating the multi-state with a new measurement and calculate the fit qaulity at the same ...
Gaudi::Property< unsigned int > m_maximumNumberOfComponents
Gaudi::Property< bool > m_reintegrateOutliers
Gaudi::Property< double > m_cutChiSquaredPerNumberDOF
ToolHandle< IRIO_OnTrackCreator > m_rioOnTrackCreator
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
double chiSquared() const
returns the of the overall track fit
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.