/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkReco/TrkReco-00-08-59-patch4-slc6tag/TrkReco/TBuilderCurl.h

Go to the documentation of this file.
00001 //-----------------------------------------------------------------------------
00002 // $Id: TBuilderCurl.h,v 1.13 2012/05/28 05:16:29 maoh Exp $
00003 //-----------------------------------------------------------------------------
00004 // Filename : TBuilderCurl.h
00005 // Section  : Tracking
00006 // Owner    : Yoshi Iwasaki
00007 // Email    : yoshihito.iwasaki@kek.jp
00008 //-----------------------------------------------------------------------------
00009 // Description : A class to build a curl track.
00010 //               See http://bsunsrv1.kek.jp/~yiwasaki/tracking/
00011 //-----------------------------------------------------------------------------
00012 
00013 #ifndef TBuilderCurl_FLAG_
00014 #define TBuilderCurl_FLAG_
00015 
00016 #ifdef TRKRECO_DEBUG_DETAIL
00017 #ifndef TRKRECO_DEBUG
00018 #define TRKRECO_DEBUG
00019 #endif
00020 #endif
00021 
00022 #include <string>
00023 
00024 #define HEP_SHORT_NAMES
00025 #include "CLHEP/Alist/AList.h"
00026 #include "TrkReco/TMSelector.h"
00027 #include "TrkReco/TBuilder0.h"
00028 #include "TrkReco/TCurlFinderParameters.h"
00029 //#include "TrkReco/TSvdFinder.h"
00030 //#include "TrkReco/TSvdAssociator.h"
00031 
00032 #ifndef CLHEP_POINT3D_H
00033 #include "CLHEP/Geometry/Point3D.h"
00034 #endif
00035 #ifndef ENABLE_BACKWARDS_COMPATIBILITY
00036     typedef HepGeom::Point3D<double> HepPoint3D;
00037 #endif
00038 
00039 #include "GaudiKernel/IInterface.h"
00040 #include "GaudiKernel/Kernel.h"
00041 #include "GaudiKernel/Service.h"
00042 #include "MagneticField/IMagneticFieldSvc.h"
00043 #include "MagneticField/MagneticFieldSvc.h"
00044 
00045 #include "CLHEP/Matrix/Vector.h"
00046 #include "CLHEP/Matrix/SymMatrix.h"
00047 #include "CLHEP/Vector/ThreeVector.h"
00048 #include "CLHEP/Vector/LorentzVector.h"
00049 
00050 
00051 //class HepPoint3D;
00052 
00054 class TBuilderCurl : public TBuilder0 {
00055 
00056   public:
00058     TBuilderCurl(const std::string & name);
00059 
00061     virtual ~TBuilderCurl();
00062 
00063   public:// Selectors
00065     TTrack * buildStereo(TTrack & track, const AList<TMLink> &) const;
00066     TTrack * buildStereoMC(TTrack & track, const AList<TMLink> &) const;
00067 
00068     //const TMSelector & trackSelector(const TMSelector &);// not used
00069     void setParam(const TCurlFinderParameter&);
00070 
00071     TTrack * buildStereo(TTrack & track, const AList<TMLink> &, const AList<TMLink> &) const;
00072     bool buildStereo(TTrack & track, double &dZ, double &tanL) const;
00073 
00074 //  void setSvdClusters(void){
00075 //    m_svdAssociator->clearClusters();
00076 //    m_svdAssociator->fillClusters();
00077 //  }
00078 
00079   private:
00080     //
00081     void setArcZ(TTrack&, AList<TMLink>&) const;
00082     void setArcZ(TTrack&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00083                  unsigned) const;
00084     void setArcZ(TTrack&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00085                  AList<TMLink>&,
00086                  unsigned) const;
00087     void setArcZ(TTrack&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00088                  AList<TMLink>&, AList<TMLink>&,
00089                  unsigned) const;
00090     void setArcZ(TTrack&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00091                  AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00092                  unsigned) const;
00093     void setArcZ(TTrack&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00094                  AList<TMLink>&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&,
00095                  unsigned) const;
00096 
00097     //
00098     unsigned appendPoints(AList<TMLink>&, AList<TMLink>&, double, double, TTrack&, double) const;
00099 
00100     //
00101     void resetHelixFit(THelixFitter *) const;
00102 
00103     //
00104     void fitLine(AList<TMLink>&, double&, double&, double&, AList<TMLink>&, AList<HepPoint3D>&, int&) const;
00105     void fitLine2(const AList<TMLink>&, double&, double&, double&, AList<TMLink>&, AList<HepPoint3D>&, int&) const;
00106 
00107     //
00108     unsigned check(const TTrack&) const;
00109 
00110     //
00111     bool fitWDD(double &xc, double &yc, double &r,
00112                 AList<TMLink> &list) const;
00113     int stereoHit(double &xc, double &yc, double &r, double &q,
00114                   AList<TMLink> & list) const;
00115 
00116     void makeLine(TTrack&, AList<TMLink>&, const AList<TMLink>&,
00117                   AList<TMLink>&, double&, double&, double&, AList<HepPoint3D>&) const;
00118     int sortByLocalId(AList<TMLink> &list) const;
00119 
00120     //
00121     void plotArcZ(AList<TMLink>&, double = 0., double = 0., const int = 1) const;
00122 
00123   private:
00124     mutable THelixFitter _fitter;
00125     TCurlFinderParameter m_param;
00126 //    TSvdFinder * m_svdFinder;
00127 //    TSvdAssociator * m_svdAssociator;
00128   private:
00129     IMagneticFieldSvc* m_pmgnIMF;
00130 
00131 };
00132 
00133 //-----------------------------------------------------------------------------
00134 
00135 #ifdef TBuilderCurl_NO_INLINE
00136 #define inline
00137 #else
00138 #undef inline
00139 #define TBuilderCurl_INLINE_DEFINE_HERE
00140 #endif
00141 
00142 #ifdef TBuilderCurl_INLINE_DEFINE_HERE
00143 
00144 #endif
00145 
00146 #undef inline
00147 
00148 #endif /* TBuilderCurl_FLAG_ */

Generated on Tue Nov 29 23:14:17 2016 for BOSS_7.0.2 by  doxygen 1.4.7