Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:18:27

0001 /* Copyright 2008-2010, Technische Universitaet Muenchen,
0002    Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
0003 
0004    This file is part of GENFIT.
0005 
0006    GENFIT is free software: you can redistribute it and/or modify
0007    it under the terms of the GNU Lesser General Public License as published
0008    by the Free Software Foundation, either version 3 of the License, or
0009    (at your option) any later version.
0010 
0011    GENFIT is distributed in the hope that it will be useful,
0012    but WITHOUT ANY WARRANTY; without even the implied warranty of
0013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014    GNU Lesser General Public License for more details.
0015 
0016    You should have received a copy of the GNU Lesser General Public License
0017    along with GENFIT.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 /** @addtogroup genfit
0020  * @{
0021  */
0022 
0023 #ifndef genfit_PlanarMeasurement_h
0024 #define genfit_PlanarMeasurement_h
0025 
0026 #include "AbsMeasurement.h"
0027 #include "AbsHMatrix.h"
0028 #include "MeasurementOnPlane.h"
0029 
0030 
0031 namespace genfit {
0032 
0033 class AbsTrackRep;
0034 
0035 /** @brief Measurement class implementing a planar hit geometry (1 or 2D).
0036  *
0037  *  @author Christian H&ouml;ppner (Technische Universit&auml;t M&uuml;nchen, original author)
0038  *  @author Sebastian Neubert  (Technische Universit&auml;t M&uuml;nchen, original author)
0039  *  @author Johannes Rauch  (Technische Universit&auml;t M&uuml;nchen, original author)
0040  *
0041  * The main feature of this type of hit is, that the detector plane
0042  * is defined by the detector hardware. 
0043  */
0044 class PlanarMeasurement : public AbsMeasurement {
0045 
0046  public:
0047   PlanarMeasurement(int nDim = 1);
0048   PlanarMeasurement(const TVectorD& rawHitCoords, const TMatrixDSym& rawHitCov, int detId, int hitId, TrackPoint* trackPoint);
0049 
0050   virtual ~PlanarMeasurement() {;}
0051 
0052   virtual AbsMeasurement* clone() const override {return new PlanarMeasurement(*this);}
0053 
0054   int getPlaneId() const {return planeId_;}
0055 
0056   virtual SharedPlanePtr constructPlane(const StateOnPlane& state) const override;
0057 
0058   virtual std::vector<MeasurementOnPlane*> constructMeasurementsOnPlane(const StateOnPlane& state) const override;
0059 
0060   virtual const AbsHMatrix* constructHMatrix(const AbsTrackRep*) const override;
0061 
0062   virtual void setPlane(const SharedPlanePtr& physicalPlane, int planeId = -1) {physicalPlane_ = physicalPlane; planeId_ = planeId;}
0063 
0064   /** @brief Use if the coordinate for 1D hits measured in V direction.
0065    *
0066    * Per default for 1D planar hits, the coordinate is measured in U direction.
0067    * With this function you can set it to be measured in V direction.
0068    * This affects the outcoe of constructHMatrix().
0069    */
0070   void setStripV(bool v = true) {stripV_ = v;}
0071 
0072  protected:
0073   SharedPlanePtr physicalPlane_;   //! This is persistent, but '!' makes ROOT shut up.
0074   int planeId_; // planeId id is -1 per default
0075   bool stripV_;
0076 
0077  public:
0078 
0079   ClassDefOverride(PlanarMeasurement,1)
0080 
0081 };
0082 
0083 } /* End of namespace genfit */
0084 /** @} */
0085 
0086 #endif // genfit_PlanarMeasurement_h