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_ProlateSpacepointMeasurement_h
0024 #define genfit_ProlateSpacepointMeasurement_h
0025 
0026 #include "SpacepointMeasurement.h"
0027 
0028 
0029 namespace genfit {
0030 
0031 /** @brief Class for measurements implementing a space point hit geometry with a very prolate
0032  * form of the covariance matrix.
0033  *
0034  *  @author Johannes Rauch (Technische Universit&auml;t M&uuml;nchen, original author)
0035  *
0036  * Measurements from detectors measuring 3D space points with errors in one direction
0037  * much larger than the errors perpendicular should use this class.
0038  *
0039  * For these hits, a virtual detector plane lying in the POCA and
0040  * perpendicular to the track yields wrong results. Instead, the plane should contain the
0041  * direction of the largest error.
0042  *
0043  * The largest error direction can be set. Standard is in z.
0044  *
0045  */
0046 class ProlateSpacepointMeasurement : public SpacepointMeasurement {
0047 
0048  public:
0049   ProlateSpacepointMeasurement(int nDim = 3);
0050   ProlateSpacepointMeasurement(const TVectorD& rawHitCoords, const TMatrixDSym& rawHitCov, int detId, int hitId, TrackPoint* trackPoint);
0051 
0052   virtual ~ProlateSpacepointMeasurement() {;}
0053 
0054   virtual AbsMeasurement* clone() const {return new ProlateSpacepointMeasurement(*this);}
0055 
0056   virtual SharedPlanePtr constructPlane(const StateOnPlane& state) const;
0057 
0058 
0059   const TVector3& getLargestErrorDirection(){return largestErrorDirection_;}
0060   void setLargestErrorDirection(const TVector3& dir){largestErrorDirection_ = dir.Unit();}
0061 
0062  protected:
0063   TVector3 largestErrorDirection_; // direction of largest error
0064 
0065  public:
0066 
0067   ClassDef(ProlateSpacepointMeasurement,1)
0068 
0069 };
0070 
0071 } /* End of namespace genfit */
0072 /** @} */
0073 
0074 #endif // genfit_ProlateSpacepointMeasurement_h