  | 
  
    ATLAS Offline Software
    
   | 
 
 
 
 
Go to the documentation of this file.
   20 #include "GaudiKernel/ServiceHandle.h" 
   21 #include "GaudiKernel/SystemOfUnits.h" 
   38         declareInterface<IMuidMuonRecovery>(
this);
 
   63         return StatusCode::SUCCESS;
 
   70         return StatusCode::SUCCESS;
 
   73                                                                    const EventContext& ctx)
 const {
 
   83                                               << 
" ID track " << 
m_printer->print(indetTrack) << std::endl
 
   84                                               << 
" MS track " << 
m_printer->print(spectrometerTrack) << std::endl
 
   85                                               << 
m_printer->printStations(spectrometerTrack));
 
   90         while (!lastIndetPars && 
index > 0) {
 
  101         std::unique_ptr<Trk::TrackParameters> innerParameters, middleParameters, outerParameters;
 
  102         std::unique_ptr<Trk::TrackParameters> lastPars = lastIndetPars->
uniqueClone();
 
  103         bool innerParsSet{
false};
 
  105         std::vector<const Trk::TrackStateOnSurface*> stations;
 
  106         std::set<Muon::MuonStationIndex::StIndex> etaIndices, phiIndices, badEtaIndices, badPhiIndices;
 
  108         unsigned int nmeas = 0;
 
  117             if (!
id.is_valid()) 
continue;
 
  124                 if (phiIndices.count(
index)) 
continue;
 
  126                 phiIndices.insert(
index);
 
  128                 if (etaIndices.count(
index)) 
continue;
 
  131                 etaIndices.insert(
index);
 
  136             std::unique_ptr<Trk::TrackParameters> exPars{};
 
  139                 exPars = std::move(lastPars);
 
  155                     badPhiIndices.insert(
index);
 
  157                     badEtaIndices.insert(
index);
 
  182                             ATH_MSG_DEBUG(
" local Angles: id (" << idDir.angleXZ() << 
"," << idDir.angleYZ() << 
")  ms (" 
  183                                                                 << msDir.angleXZ() << 
"," << msDir.angleYZ() << 
")");
 
  189             if (!innerParsSet && !innerParameters && exPars && lastPars) {
 
  190                innerParameters = std::move(exPars);
 
  191             } 
else if (exPars && innerParameters && !middleParameters ) {
 
  192                 middleParameters = std::move(exPars);
 
  194               lastPars = std::move(exPars);
 
  199         if (middleParameters) {
 
  200             outerParameters = std::move(lastPars);
 
  202             middleParameters = std::move(innerParameters);
 
  203             if (!middleParameters) {
 
  209         bool cleanEta = badEtaIndices.size() == 1 && etaIndices.size() > 1;
 
  210         bool cleanPhi = badPhiIndices.size() == 1;
 
  212         if (!cleanPhi && !cleanEta) {
 
  217         if (badEtaIndices.size() == etaIndices.size()) {
 
  229             if (!
id.is_valid()) 
continue;
 
  233             if (cleanEta && !measuresPhi && badEtaIndices.count(
index)) 
continue;
 
  234             if (cleanPhi && measuresPhi && badPhiIndices.count(
index)) 
continue;
 
  235             spectrometerMeasurements.push_back(meas);
 
  238         ATH_MSG_DEBUG(
"Number of measurements before cleaning " << nmeas << 
" after cleaning " << spectrometerMeasurements.size());
 
  240         if (spectrometerMeasurements.size() < 6) {
 
  248             combinedTrack = 
m_trackBuilder->indetExtension(ctx, indetTrack, spectrometerMeasurements, std::move(innerParameters), std::move(middleParameters),
 
  249                                                            std::move(outerParameters));
 
  
ToolHandle< ICombinedMuonTrackBuilder > m_trackBuilder
 
StatusCode finalize() override
 
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
 
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.
 
@ Unbiased
RP with track state that has measurement not included.
 
bool msgLvl(const MSG::Level lvl) const
 
ToolHandle< Trk::IExtrapolator > m_extrapolator
 
ToolHandle< Trk::IResidualPullCalculator > m_residualCalculator
 
std::atomic< unsigned int > m_recoveryFitFailure
 
virtual const MuonGM::MdtReadoutElement * detectorElement() const override final
Returns the detector element, assoicated with the PRD of this class.
 
ServiceHandle< Muon::IMuonEDMHelperSvc > m_edmHelperSvc
 
void combinedTrack(long int ICH, double *pv0, double *covi, double BMAG, double *par, double *covo)
 
virtual const MuonGM::CscReadoutElement * detectorElement() const override final
Returns the detector element, associated with the PRD of this class.
 
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
 
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
 
Gaudi::Property< double > m_minP
 
::StatusCode StatusCode
StatusCode definition for legacy code.
 
std::pair< std::vector< unsigned int >, bool > res
 
virtual const Surface & surface() const =0
Return surface associated with this detector element.
 
void globalToLocalDirection(const Amg::Vector3D &glodir, Trk::LocalDirection &locdir) const
This method transforms the global direction to a local direction wrt the plane.
 
MuidMuonRecovery(const std::string &type, const std::string &name, const IInterface *parent)
 
represents the three-dimensional global direction with respect to a planar surface frame.
 
StatusCode initialize() override
 
std::vector< const MeasurementBase * > MeasurementSet
vector of fittable measurements
 
StIndex
enum to classify the different station layers in the muon spectrometer
 
Gaudi::Property< double > m_pullCut
 
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.
 
std::atomic< unsigned int > m_recoveryAttempts
 
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
 
This class represents the corrected MDT measurements, where the corrections include the effects of wi...
 
std::atomic< unsigned int > m_recoverySuccess
 
PublicToolHandle< Muon::MuonEDMPrinterTool > m_printer
 
Class to represent the calibrated clusters created from CSC strips.
 
#define ATH_MSG_WARNING(x)
 
Gaudi::Property< double > m_minPt
 
std::unique_ptr< Trk::Track > recoverableMatch(const Trk::Track &indetTrack, const Trk::Track &spectrometerTrack, const EventContext &ctx) const override
IMuidMuonRecovery interface: algorithmic code for recovering muon spectrometer using the inner detect...
 
@ MuidMuonRecoveryTool
Muons found by the ID seeded muon recovery.
 
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc