16#ifdef TRKRECO_DEBUG_DETAIL
23#define TrackOldConformalFinder 1
24#define TrackFastFinder 2
25#define TrackSlowFinder 4
26#define TrackCurlFinder 8
27#define TrackTrackManager 16
28#define TrackPMCurlFinder 32
29#define TrackSVDAssociator 64
30#define TrackFinderMask 255
33#define TrackTypeUndefined 0
34#define TrackTypeNormal 1
35#define TrackTypeCurl 2
36#define TrackTypeCircle 4
37#define TrackTypeCosmic 8
38#define TrackTypeIncomingCosmic 8
39#define TrackTypeOutgoingCosmic 16
40#define TrackTypeKink 32
41#define TrackTypeSVDOnly 256
44#define TrackQualityOutsideCurler 1
45#define TrackQualityAfterKink 2
46#define TrackQualityCosmic 4
47#define TrackQuality2D 8
48#define TrackQualityShift 8
49#define TrackQualityMask 255
52#define TrackFitGlobal 1
53#define TrackFitCosmic 2
54#define TrackFitCdcKalman 4
55#define TrackFitSvdCdcKalman 8
56#define TrackFitShift 16
57#define TrackFitMask 255
60#define TrackHasMother 1
61#define TrackHasDaughter 2
62#define TrackRelationShift 24
63#define TrackRelationMask 255
67#define HEP_SHORT_NAMES
68#include "CLHEP/Vector/ThreeVector.h"
84#include "GaudiKernel/IInterface.h"
85#include "GaudiKernel/Kernel.h"
86#include "GaudiKernel/Service.h"
87#include "MagneticField/IMagneticFieldSvc.h"
88#include "MagneticField/MagneticFieldSvc.h"
90#include "CLHEP/Matrix/Vector.h"
91#include "CLHEP/Matrix/SymMatrix.h"
92#include "CLHEP/Vector/ThreeVector.h"
93#include "CLHEP/Vector/LorentzVector.h"
94#include "CLHEP/Geometry/Point3D.h"
97using CLHEP::Hep3Vector;
99#ifndef CLHEP_POINT3D_H
100#include "CLHEP/Geometry/Point3D.h"
102#ifndef ENABLE_BACKWARDS_COMPATIBILITY
153 const std::string &
name(
void)
const;
154 const std::string &
name(
const std::string & newName);
166 unsigned type(
void)
const;
169 unsigned finder(
void)
const;
170 unsigned finder(
unsigned finderMask);
176 unsigned quality(
unsigned qualityMask);
180 unsigned fitting(
unsigned fitMask);
183 unsigned state(
void)
const;
186 void assign(
unsigned maskForWireHit);
189 void dump(
const std::string & message = std::string(
""),
190 const std::string & prefix = std::string(
""))
const;
194 double charge(
void)
const;
200 Hep3Vector
p(
void)
const;
203 double ptot(
void)
const;
206 double pt(
void)
const;
209 double pz(
void)
const;
212 double impact(
void)
const;
218 double radius(
void)
const;
221 unsigned ndf(
void)
const;
224 double chi2(
void)
const;
273 int fit2D(
unsigned = 0,
double = 0.1,
double = 0.015);
323 int dxda(
const TMLink & link,
329 int dxda2D(
const TMLink & link,
335 int dxda2D(
const TMLink & link,
340 int dxda2D(
double dPhi,
344 unsigned defineType(
void)
const;
346 unsigned _findertype;
364 mutable unsigned _type;
466#ifdef TTrack_NO_INLINE
470#define TTrack_INLINE_DEFINE_HERE
473#ifdef TTrack_INLINE_DEFINE_HERE
488 if (!
_fitted) std::cout <<
"TTrack::ndf !!! ndf not updated" << std::endl;
497 if (!
_fitted) std::cout <<
"TTrack::chi2 !!! chi2 not updated" << std::endl;
529 return 1. / fabs(_helix->
a()[2]);
535 return (1. / fabs(_helix->
a()[2])) * _helix->
a()[4];
541 return (1. / fabs(_helix->
a()[2])) *
542 sqrt(1. + _helix->
a()[4] * _helix->
a()[4]);
666 return _daughter = a;
718 _associateHits = list;
719 return _associateHits;
725 return _associateHits;
double chisq2confLevel(int n, double chi2)
ALPHA = 10000. / 2.99792458 / 15.
HepGeom::Point3D< double > HepPoint3D
bool HelixHasNan(const Helix &)
Helix parameter validity.
Helix Track2Helix(const MdcRec_trk &)
returns helix.
std::string TrackLayerUsage(const TTrack &)
std::string TrackDump(const TTrack &)
to dump a track.
#define TrackRelationShift
#define TrackQualityShift
std::string TrackInformation(const TTrack &)
std::string TrackStatus(const TTrack &)
returns string of track status.
bool PositiveDefinite(const Helix &)
Error matrix validity.
std::string TrackKinematics(const TTrack &)
int SortByPt(const void *a, const void *b)
Utility functions.
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
double radius(void) const
returns radious of helix.
const HepVector & a(void) const
returns helix parameters.
A class to represent a track in tracking.
A class to build a track.
A class to build a cosmic track.
A class to build a Curl track.
A class to build a track.
A class to represent a circle in tracking.
A class to fit a TTrackBase object to a helix.
A class to fit a TTrackBase object to a helix.
A class to relate TMDCWireHit and TTrack objects.
A class to represent a point in 2D.
A class to represent a track in tracking.
A class to relate TMDCWireHit and TTrack objects.
A virtual class for a track class in tracking.
A manager of TTrack information to make outputs as MdcRec_trk.
A class to represent a track in tracking.
AList< TSegment > & segments(void)
returns AList<TSegment>.
void assign(unsigned maskForWireHit)
assigns wire hits to this track.
const Helix & helix(void) const
returns helix parameter.
unsigned ndf(void) const
returns NDF.
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
int stereoHitForCurl(TMLink &link, AList< HepPoint3D > &arcZList) const
const std::string & name(void) const
returns/sets name.
TPoint2D center(void) const
returns position of helix center.
TTrack * daughter(void) const
unsigned quality(void) const
sets/returns quality.
TTrack()
Default constructor.
TTrack * mother(void) const
sets/returns mother/daughter.
int fit2D(unsigned=0, double=0.1, double=0.015)
fits itself. Error was happened if return value is not zero.
int stereoHitForCurl(TMLink &link, TMLink &link1) const
unsigned finder(void) const
sets/returns finder.
unsigned getFinderType(void) const
double radius(void) const
returns signed radius.
int HelCyl(double rhole, double rcyl, double zb, double zf, double epsl, double &phi, HepPoint3D &xp) const
returns a cathode hit list.
TTrack(const T3DLine &)
Constructor.
unsigned type(void) const
returns type. Definition is depending on an object type.
const AList< TMLink > & associateHits(void) const
sets/returns a list of associated TMLink which are used for table output.
double confidenceLevel(void) const
returns confidence level.
double impact(void) const
returns signed impact parameter to the origin.
int stereoHitForCurl(TMLink &link, TMLink &link1, TMLink &link2) const
unsigned objectType(void) const
returns type.
void setFinderType(unsigned)
double pt(void) const
returns Pt.
double ptot(void) const
returns magnitude of momentum.
unsigned state(void) const
returns/sets internal state.(for bank output)
void deleteListForCurl(AList< HepPoint3D > &l1, AList< HepPoint3D > &l2, AList< HepPoint3D > &l3) const
double pz(void) const
returns Pz.
int approach(TMLink &) const
calculates the closest approach to a wire in real space. Results are stored in TMLink....
void refine2D(AList< TMLink > &list, float maxSigma)
fits itself with cathode hits.
const AList< TMLink > & finalHits(void) const
finds cathode hits associated to this track.
int approach2D(TMLink &) const
void movePivot(void)
moves pivot to the inner most hit.
unsigned fitting(void) const
sets/returns fitting status.
double chi2(void) const
returns chi2.
int szPosition(TMLink &link) const
calculates arc length and z for a stereo hit.
double charge(void) const
returns charge.
virtual ~TTrack()
Destructor.
friend class TPMCurlFinder
void deleteListForCurl(AList< HepPoint3D > &l1, AList< HepPoint3D > &l2) const
Hep3Vector p(void) const
returns momentum.