BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/TrkReco/include/TrkReco/TBuilderCurl.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// $Id: TBuilderCurl.h,v 1.13 2012/05/28 05:16:29 maoh Exp $
3//-----------------------------------------------------------------------------
4// Filename : TBuilderCurl.h
5// Section : Tracking
6// Owner : Yoshi Iwasaki
7// Email : yoshihito.iwasaki@kek.jp
8//-----------------------------------------------------------------------------
9// Description : A class to build a curl track.
10// See http://bsunsrv1.kek.jp/~yiwasaki/tracking/
11//-----------------------------------------------------------------------------
12
13#ifndef TBuilderCurl_FLAG_
14#define TBuilderCurl_FLAG_
15
16#ifdef TRKRECO_DEBUG_DETAIL
17# ifndef TRKRECO_DEBUG
18# define TRKRECO_DEBUG
19# endif
20#endif
21
22#include <string>
23
24// #define HEP_SHORT_NAMES
25#include "CLHEP/Alist/AList.h"
26#include "TrkReco/TBuilder0.h"
27#include "TrkReco/TCurlFinderParameters.h"
28#include "TrkReco/TMSelector.h"
29// #include "TrkReco/TSvdFinder.h"
30// #include "TrkReco/TSvdAssociator.h"
31
32#ifndef CLHEP_POINT3D_H
33# include "CLHEP/Geometry/Point3D.h"
34#endif
35#ifndef ENABLE_BACKWARDS_COMPATIBILITY
36typedef HepGeom::Point3D<double> HepPoint3D;
37#endif
38
39#include "GaudiKernel/IInterface.h"
40#include "GaudiKernel/Kernel.h"
41#include "GaudiKernel/Service.h"
42#include "MagneticFieldSvc/IBesMagFieldSvc.h"
43// #include "MagneticField/MagneticFieldSvc.h"
44
45#include "CLHEP/Matrix/SymMatrix.h"
46#include "CLHEP/Matrix/Vector.h"
47#include "CLHEP/Vector/LorentzVector.h"
48#include "CLHEP/Vector/ThreeVector.h"
49
50// class HepPoint3D;
51
52/// A class to build a Curl track.
53class TBuilderCurl : public TBuilder0 {
54
55public:
56 /// Constructor.
57 TBuilderCurl( const std::string& name );
58
59 /// Destructor
60 virtual ~TBuilderCurl();
61
62public: // Selectors
63 /// appends stereo hits to a track.
64 TTrack* buildStereo( TTrack& track, const AList<TMLink>& ) const;
65 TTrack* buildStereoMC( TTrack& track, const AList<TMLink>& ) const;
66
67 // const TMSelector & trackSelector(const TMSelector &);// not used
69
70 TTrack* buildStereo( TTrack& track, const AList<TMLink>&, const AList<TMLink>& ) const;
71 // bool buildStereo( TTrack& track, double& dZ, double& tanL ) const;
72
73 // void setSvdClusters(void){
74 // m_svdAssociator->clearClusters();
75 // m_svdAssociator->fillClusters();
76 // }
77
78private:
79 //
80 void setArcZ( TTrack&, AList<TMLink>& ) const;
81 void setArcZ( TTrack&, AList<TMLink>&, AList<TMLink>&, AList<TMLink>&, unsigned ) const;
83 unsigned ) const;
85 AList<TMLink>&, unsigned ) const;
87 AList<TMLink>&, AList<TMLink>&, unsigned ) const;
89 AList<TMLink>&, AList<TMLink>&, AList<TMLink>&, unsigned ) const;
90
91 //
92 unsigned appendPoints( AList<TMLink>&, AList<TMLink>&, double, double, TTrack&,
93 double ) const;
94
95 //
96 void resetHelixFit( THelixFitter* ) const;
97
98 //
99 void fitLine( AList<TMLink>&, double&, double&, double&, AList<TMLink>&, AList<HepPoint3D>&,
100 int& ) const;
101 void fitLine2( const AList<TMLink>&, double&, double&, double&, AList<TMLink>&,
102 AList<HepPoint3D>&, int& ) const;
103
104 //
105 unsigned check( const TTrack& ) const;
106
107 //
108 bool fitWDD( double& xc, double& yc, double& r, AList<TMLink>& list ) const;
109 int stereoHit( double& xc, double& yc, double& r, double& q, AList<TMLink>& list ) const;
110
111 void makeLine( TTrack&, AList<TMLink>&, const AList<TMLink>&, AList<TMLink>&, double&,
112 double&, double&, AList<HepPoint3D>& ) const;
113 int sortByLocalId( AList<TMLink>& list ) const;
114
115 //
116 void plotArcZ( AList<TMLink>&, double = 0., double = 0., const int = 1 ) const;
117
118private:
119 mutable THelixFitter _fitter;
120 TCurlFinderParameter m_param;
121 // TSvdFinder * m_svdFinder;
122 // TSvdAssociator * m_svdAssociator;
123private:
124 IBesMagFieldSvc* getPmgnIMF() const;
125 mutable IBesMagFieldSvc* m_pmgnIMF;
126};
127
128//-----------------------------------------------------------------------------
129
130#ifdef TBuilderCurl_NO_INLINE
131# define inline
132#else
133# undef inline
134# define TBuilderCurl_INLINE_DEFINE_HERE
135#endif
136
137#ifdef TBuilderCurl_INLINE_DEFINE_HERE
138
139#endif
140
141#undef inline
142
143#endif /* TBuilderCurl_FLAG_ */
HepGeom::Point3D< double > HepPoint3D
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition KKsem.h:33
const std::string & name(void) const
returns name.
TTrack * buildStereo(TTrack &track, const AList< TMLink > &, const AList< TMLink > &) const
TBuilderCurl(const std::string &name)
Constructor.
TTrack * buildStereo(TTrack &track, const AList< TMLink > &) const
appends stereo hits to a track.
TTrack * buildStereoMC(TTrack &track, const AList< TMLink > &) const
virtual ~TBuilderCurl()
Destructor.
void setParam(const TCurlFinderParameter &)
A class to fit a TTrackBase object to a helix.
A class to represent a track in tracking.