From 77d295ebeda3ce4932833e14f28b06c5cb8d7a92 Mon Sep 17 00:00:00 2001
From: Edward Moyse <Edward.Moyse@cern.ch>
Date: Fri, 20 May 2016 12:41:40 +0200
Subject: [PATCH] IResidualPullCalculator.h: Added new interface for alignment
 effects on track (TrkToolInterfaces-01-03-11)

    * IResidualPullCalculator.h: Added new interface for alignment effects on track
    * Tagged as TrkToolInterfaces-01-03-11


Former-commit-id: 3e46737ea82ac47ad89e3e51562e6ceeb8745e2c
---
 .../TrkToolInterfaces/IResidualPullCalculator.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IResidualPullCalculator.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IResidualPullCalculator.h
index b094bff73cb..11814fa5210 100755
--- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IResidualPullCalculator.h
+++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/IResidualPullCalculator.h
@@ -23,6 +23,7 @@ namespace Trk {
 static const InterfaceID IID_IResidualPullCalculator("IResidualPullCalculator",1,0);
 
 class MeasurementBase;
+class AlignmentEffectsOnTrack;
 
 /** @class IResidualPullCalculator
     @brief provides the interface for tools which calculate residuals and pulls.
@@ -48,6 +49,22 @@ public:
        const Trk::TrackParameters*,
        const Trk::ResidualPull::ResidualType residualType,
        const TrackState::MeasurementType = TrackState::unidentified) const = 0;
+     
+   /**This function returns (creates!) a Trk::ResidualPull object, which contains the values
+   * of residual and pull for the given measurement and track state, and the Alignment effects.
+   * The track state can be an unbiased one (which can be retrieved by the Trk::IUpdator),
+   * a biased one (which contains the measurement),
+   * or a truth state.
+   * The enum residualTyp must be set according to this, otherwise the pulls will be wrong.
+   * Residuals differ in all three cases; please be aware of this.
+   *
+   * This function determines the sub-detector type itself by using the ID helper*/
+    virtual const Trk::ResidualPull* residualPull(
+             const Trk::MeasurementBase* ,
+             const Trk::TrackParameters* ,
+             const Trk::ResidualPull::ResidualType ,
+             const Trk::TrackState::MeasurementType, 
+             const std::vector<Trk::AlignmentEffectsOnTrack*>& ) const { return (Trk::ResidualPull*) 0; }
 
      /** This function is a light-weight version of the function above, designed for track fitters
       * where speed is critical. The user has to provide a std::vector of size 5, which gets 
-- 
GitLab