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
68#include "CLHEP/Vector/ThreeVector.h"
71#include "TrackUtil/Helix.h"
72#include "TrkReco/TBuilder0.h"
73#include "TrkReco/TBuilderCosmic.h"
74#include "TrkReco/TBuilderCurl.h"
75#include "TrkReco/TMDCUtil.h"
76#include "TrkReco/TMLink.h"
77#include "TrkReco/TTrackBase.h"
79#include "TrkReco/TPoint2D.h"
82#include "GaudiKernel/IInterface.h"
83#include "GaudiKernel/Kernel.h"
84#include "GaudiKernel/Service.h"
85#include "MagneticFieldSvc/IBesMagFieldSvc.h"
86#include "TrkReco/T3DLine.h"
87#include "TrkReco/TRunge.h"
90#include "CLHEP/Geometry/Point3D.h"
91#include "CLHEP/Matrix/SymMatrix.h"
92#include "CLHEP/Matrix/Vector.h"
93#include "CLHEP/Vector/LorentzVector.h"
94#include "CLHEP/Vector/ThreeVector.h"
96using CLHEP::Hep3Vector;
98#ifndef CLHEP_POINT3D_H
99# include "CLHEP/Geometry/Point3D.h"
101#ifndef ENABLE_BACKWARDS_COMPATIBILITY
104using HepGeom::Point3D;
152 const std::string&
name(
void )
const;
153 const std::string&
name(
const std::string& newName );
188 void dump(
const std::string& message = std::string(
"" ),
189 const std::string& prefix = std::string(
"" ) )
const;
199 Hep3Vector
p(
void )
const;
205 double pt(
void )
const;
208 double pz(
void )
const;
220 unsigned ndf(
void )
const;
272 int fit2D(
unsigned = 0,
double = 0.1,
double = 0.015 );
290 int HelCyl(
double rhole,
double rcyl,
double zb,
double zf,
double epsl,
double& phi,
326 int dxda2D(
double dPhi,
Vector& dxda,
Vector& dyda )
const;
328 unsigned defineType(
void )
const;
330 unsigned _findertype;
349 mutable unsigned _type;
372#if defined( __GNUG__ )
375extern "C" int SortByPt(
const void* a,
const void* b );
393std::string
TrackStatus(
unsigned md,
unsigned mk,
unsigned mq,
unsigned ms,
unsigned mm,
404std::string
TrackInformation(
unsigned nA,
unsigned nS,
unsigned n,
float chisq );
425#ifdef TTrack_NO_INLINE
429# define TTrack_INLINE_DEFINE_HERE
432#ifdef TTrack_INLINE_DEFINE_HERE
443 if ( !
_fitted ) std::cout <<
"TTrack::ndf !!! ndf not updated" << std::endl;
450 if ( !
_fitted ) std::cout <<
"TTrack::chi2 !!! chi2 not updated" << std::endl;
459inline const std::string&
TTrack::name(
void )
const {
return _name; }
461inline const std::string&
TTrack::name(
const std::string& a ) {
return _name = a; }
463inline double TTrack::pt(
void )
const {
return 1. / fabs( _helix->a()[2] ); }
466 return ( 1. / fabs( _helix->a()[2] ) ) * _helix->a()[4];
470 return ( 1. / fabs( _helix->a()[2] ) ) * sqrt( 1. + _helix->a()[4] * _helix->a()[4] );
477inline Hep3Vector
TTrack::p(
void )
const {
return _helix->momentum( 0. ); }
481inline unsigned TTrack::type(
void )
const {
return defineType(); }
484 return fabs( _helix->radius() ) - _helix->center().mag();
487inline double TTrack::radius(
void )
const {
return _helix->radius(); }
536 return _daughter = a;
539inline unsigned TTrack::state(
void )
const {
return _state; }
560 _associateHits = list;
561 return _associateHits;
HepGeom::Point3D< double > HepPoint3D
double chisq2confLevel(int, double)
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.
A class to represent a track in tracking.
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.
int szPosition(const HepPoint3D &p, HepPoint3D &szPosition) const
calculates arc length for a point.
int approach(TMLink &, bool sagCorrection) const
const Helix & helix(void) const
returns helix parameter.
unsigned ndf(void) const
returns NDF.
const std::string & name(const std::string &newName)
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 AList< TMLink > & finalHits(const AList< TMLink > &hits)
const std::string & name(void) const
returns/sets name.
TTrack(const Helix &)
Constructor.
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
const AList< TMLink > & associateHits(const AList< TMLink > &hits)
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.
friend class TBuilderCurl
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
friend class THelixFitter
unsigned quality(unsigned qualityMask)
TTrack(const TCircle &)
Constructor.
unsigned objectType(void) const
returns type.
friend class TTrackManager
void setFinderType(unsigned)
friend class TCosmicFitter
TTrack(const TTrack &)
Copy constructor.
TTrack * mother(TTrack *)
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
int stereoHitForCurl(AList< TMLink > &) const
unsigned fitting(unsigned fitMask)
double pz(void) const
returns Pz.
int approach(TMLink &) const
void refine2D(AList< TMLink > &list, float maxSigma)
fits itself with cathode hits.
const AList< TSegment > & segments(void) const
unsigned finder(unsigned finderMask)
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.
TTrack * daughter(TTrack *)
unsigned fitting(void) const
sets/returns fitting status.
friend class TBuilderCosmic
virtual ~TTrack()
Destructor.
double chi2(void) const
returns chi2.
double charge(double)
sets charge.
int szPosition(TMLink &link) const
calculates arc length and z for a stereo hit.
int szPosition(const TSegment &segment, TMLink &link) const
calculates arc length and z for a segment. Results are stored in TMLink.
double charge(void) const
returns charge.
friend class TPMCurlFinder
void deleteListForCurl(AList< HepPoint3D > &l1, AList< HepPoint3D > &l2) const
Hep3Vector p(void) const
returns momentum.