BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
InstallArea/include/TrkReco/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 : [email protected]
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/TMSelector.h"
27#include "TrkReco/TBuilder0.h"
28#include "TrkReco/TCurlFinderParameters.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
37#endif
38
39#include "GaudiKernel/IInterface.h"
40#include "GaudiKernel/Kernel.h"
41#include "GaudiKernel/Service.h"
42#include "MagneticField/IMagneticFieldSvc.h"
43#include "MagneticField/MagneticFieldSvc.h"
44
45#include "CLHEP/Matrix/Vector.h"
46#include "CLHEP/Matrix/SymMatrix.h"
47#include "CLHEP/Vector/ThreeVector.h"
48#include "CLHEP/Vector/LorentzVector.h"
49
50
51//class HepPoint3D;
52
53/// A class to build a Curl track.
54class TBuilderCurl : public TBuilder0 {
55
56 public:
57 /// Constructor.
58 TBuilderCurl(const std::string & name);
59
60 /// Destructor
61 virtual ~TBuilderCurl();
62
63 public:// Selectors
64 /// appends stereo hits to a track.
65 TTrack * buildStereo(TTrack & track, const AList<TMLink> &) const;
66 TTrack * buildStereoMC(TTrack & track, const AList<TMLink> &) const;
67
68 //const TMSelector & trackSelector(const TMSelector &);// not used
69 void setParam(const TCurlFinderParameter&);
70
71 TTrack * buildStereo(TTrack & track, const AList<TMLink> &, const AList<TMLink> &) const;
72 bool buildStereo(TTrack & track, double &dZ, double &tanL) const;
73
74// void setSvdClusters(void){
75// m_svdAssociator->clearClusters();
76// m_svdAssociator->fillClusters();
77// }
78
79 private:
80 //
81 void setArcZ(TTrack&, AList<TMLink>&) const;
83 unsigned) const;
86 unsigned) const;
89 unsigned) const;
92 unsigned) const;
95 unsigned) const;
96
97 //
98 unsigned appendPoints(AList<TMLink>&, AList<TMLink>&, double, double, TTrack&, double) const;
99
100 //
101 void resetHelixFit(THelixFitter *) const;
102
103 //
104 void fitLine(AList<TMLink>&, double&, double&, double&, AList<TMLink>&, AList<HepPoint3D>&, int&) const;
105 void fitLine2(const AList<TMLink>&, double&, double&, double&, AList<TMLink>&, AList<HepPoint3D>&, int&) const;
106
107 //
108 unsigned check(const TTrack&) const;
109
110 //
111 bool fitWDD(double &xc, double &yc, double &r,
112 AList<TMLink> &list) const;
113 int stereoHit(double &xc, double &yc, double &r, double &q,
114 AList<TMLink> & list) const;
115
116 void makeLine(TTrack&, AList<TMLink>&, const AList<TMLink>&,
117 AList<TMLink>&, double&, double&, double&, AList<HepPoint3D>&) const;
118 int sortByLocalId(AList<TMLink> &list) const;
119
120 //
121 void plotArcZ(AList<TMLink>&, double = 0., double = 0., const int = 1) const;
122
123 private:
124 mutable THelixFitter _fitter;
125 TCurlFinderParameter m_param;
126// TSvdFinder * m_svdFinder;
127// TSvdAssociator * m_svdAssociator;
128 private:
129 IMagneticFieldSvc* m_pmgnIMF;
130
131};
132
133//-----------------------------------------------------------------------------
134
135#ifdef TBuilderCurl_NO_INLINE
136#define inline
137#else
138#undef inline
139#define TBuilderCurl_INLINE_DEFINE_HERE
140#endif
141
142#ifdef TBuilderCurl_INLINE_DEFINE_HERE
143
144#endif
145
146#undef inline
147
148#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.
virtual ~TBuilderCurl()
Destructor.
TTrack * buildStereo(TTrack &track, const AList< TMLink > &) const
appends stereo hits to a track.
TTrack * buildStereoMC(TTrack &track, const AList< TMLink > &) const
void setParam(const TCurlFinderParameter &)
A class to fit a TTrackBase object to a helix.
A class to represent a track in tracking.