BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
TSegment Class Reference

A class to relate TMDCWireHit and TTrack objects. More...

#include <TSegment.h>

Inheritance diagram for TSegment:

Public Member Functions

 TSegment ()
 Constructor.
 TSegment (const AList< TMLink > &)
virtual ~TSegment ()
 Destructor.
virtual unsigned objectType (void) const
 returns type.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
unsigned superLayerId () const
 returns super layer id.
const HepPoint3Dposition (void) const
 returns position.
const HepPoint3DouterPosition (void) const
const HepPoint3DlineTsf (void) const
 return line of Tsf for pos and dir
const HepPoint3DlineTsf (const HepPoint3D &)
const HepVector3Ddirection (void) const
 returns direction.
double distance (const TSegment &) const
 calculates distance between two clusters. Smaller value indicates closer.
double distance (const HepPoint3D &, const HepVector3D &) const
Range rangeX (double min, double max) const
 returns Range of x-coordinate of TMLinks.
const AList< TMLink > & inners (void) const
 returns TMLinks in inner/outer-most layer.
const AList< TMLink > & outers (void) const
const TMLinkcenter (void) const
 returns a TMLink which is the closest to the center.
unsigned width (void) const
 returns width.
unsigned innerWidth (void) const
 returns inner width.
unsigned outerWidth (void) const
 returns outer width.
unsigned innerMostLayer (void) const
 returns inner most layer.
unsigned outerMostLayer (void) const
 returns outer most layer.
unsigned clusterType (void) const
AList< TSegmentsplit (void) const
AList< TSegmentsplitTsf (AList< TMLink > &)
int solveDualHits (void)
double duality (void) const
void solveLR (void)
 solve LR of hit in TSF.
void solveThreeHits (void)
AList< TTrack > & tracks (void)
AList< TSegment > & innerLinks (void)
const AList< TSegment > & innerLinks (void) const
AList< TSegment > & outerLinks (void)
const AList< TSegment > & outerLinks (void) const
unsigned state (void) const
unsigned state (unsigned)
 TSegment ()
 Constructor.
 TSegment (const AList< TMLink > &)
virtual ~TSegment ()
 Destructor.
virtual unsigned objectType (void) const
 returns type.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
unsigned superLayerId () const
 returns super layer id.
const HepPoint3Dposition (void) const
 returns position.
const HepPoint3DouterPosition (void) const
const HepPoint3DlineTsf (void) const
 return line of Tsf for pos and dir
const HepPoint3DlineTsf (const HepPoint3D &)
const HepVector3Ddirection (void) const
 returns direction.
double distance (const TSegment &) const
 calculates distance between two clusters. Smaller value indicates closer.
double distance (const HepPoint3D &, const HepVector3D &) const
Range rangeX (double min, double max) const
 returns Range of x-coordinate of TMLinks.
const AList< TMLink > & inners (void) const
 returns TMLinks in inner/outer-most layer.
const AList< TMLink > & outers (void) const
const TMLinkcenter (void) const
 returns a TMLink which is the closest to the center.
unsigned width (void) const
 returns width.
unsigned innerWidth (void) const
 returns inner width.
unsigned outerWidth (void) const
 returns outer width.
unsigned innerMostLayer (void) const
 returns inner most layer.
unsigned outerMostLayer (void) const
 returns outer most layer.
unsigned clusterType (void) const
AList< TSegmentsplit (void) const
AList< TSegmentsplitTsf (AList< TMLink > &)
int solveDualHits (void)
double duality (void) const
void solveLR (void)
 solve LR of hit in TSF.
void solveThreeHits (void)
AList< TTrack > & tracks (void)
AList< TSegment > & innerLinks (void)
const AList< TSegment > & innerLinks (void) const
AList< TSegment > & outerLinks (void)
const AList< TSegment > & outerLinks (void) const
unsigned state (void) const
unsigned state (unsigned)
 TSegment ()
 Constructor.
 TSegment (const AList< TMLink > &)
virtual ~TSegment ()
 Destructor.
virtual unsigned objectType (void) const
 returns type.
void dump (const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
 dumps debug information.
unsigned superLayerId () const
 returns super layer id.
const HepPoint3Dposition (void) const
 returns position.
const HepPoint3DouterPosition (void) const
const HepPoint3DlineTsf (void) const
 return line of Tsf for pos and dir
const HepPoint3DlineTsf (const HepPoint3D &)
const HepVector3Ddirection (void) const
 returns direction.
double distance (const TSegment &) const
 calculates distance between two clusters. Smaller value indicates closer.
double distance (const HepPoint3D &, const HepVector3D &) const
Range rangeX (double min, double max) const
 returns Range of x-coordinate of TMLinks.
const AList< TMLink > & inners (void) const
 returns TMLinks in inner/outer-most layer.
const AList< TMLink > & outers (void) const
const TMLinkcenter (void) const
 returns a TMLink which is the closest to the center.
unsigned width (void) const
 returns width.
unsigned innerWidth (void) const
 returns inner width.
unsigned outerWidth (void) const
 returns outer width.
unsigned innerMostLayer (void) const
 returns inner most layer.
unsigned outerMostLayer (void) const
 returns outer most layer.
unsigned clusterType (void) const
AList< TSegmentsplit (void) const
AList< TSegmentsplitTsf (AList< TMLink > &)
int solveDualHits (void)
double duality (void) const
void solveLR (void)
 solve LR of hit in TSF.
void solveThreeHits (void)
AList< TTrack > & tracks (void)
AList< TSegment > & innerLinks (void)
const AList< TSegment > & innerLinks (void) const
AList< TSegment > & outerLinks (void)
const AList< TSegment > & outerLinks (void) const
unsigned state (void) const
unsigned state (unsigned)
Public Member Functions inherited from TTrackBase
 TTrackBase ()
 Constructor.
 TTrackBase (const AList< TMLink > &links)
 Constructor.
virtual ~TTrackBase ()
 Destructor.
virtual unsigned type (void) const
 returns type. Definition is depending on an object class.
const AList< TMLink > & links (unsigned mask=0) const
unsigned nLinks (unsigned mask=0) const
 returns # of masked TMLinks assigned to this track object.
const AList< TMLink > & cores (unsigned mask=0) const
 returns a list of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
unsigned nCores (unsigned mask=0) const
 returns # of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
void update (void) const
 update cache.
void append (TMLink &)
 appends a TMLink.
void append (const AList< TMLink > &)
 appends TMLinks.
void appendByApproach (AList< TMLink > &list, double maxSigma)
void appendByDistance (AList< TMLink > &list, double maxDistance)
void remove (TMLink &a)
 removes a TMLink.
void remove (const AList< TMLink > &)
 removes TMLinks.
virtual void refine (AList< TMLink > &list, double maxSigma)
virtual void refine (double maxSigma)
 removes bad points by pull. The bad points are masked not to be used in fit.
virtual int DropWorst ()
virtual void removeLinks (void)
virtual double distance (const TMLink &) const
 returns distance to a position of TMLink in TMLink space.
virtual int approach (TMLink &) const
unsigned testByApproach (const TMLink &list, double sigma) const
 returns # of good hits to be appended.
unsigned testByApproach (const AList< TMLink > &list, double sigma) const
virtual int fit (void)
 fits itself by a default fitter. Error was happened if return value is not zero.
const TMFitter *const fitter (void) const
 returns a pointer to a default fitter.
const TMFitter *const fitter (const TMFitter *)
 sets a default fitter.
void falseFit ()
 false Fit
TMLinkoperator[] (unsigned i) const
const TTrackHEP *const hep (void) const
 returns TTrackHEP.
unsigned nHeps (void) const
 returns # of contributed TTrackHEP tracks.
const TTrackMC *const mc (void) const
 returns a pointer to TTrackMC.
bool fitted (void) const
 returns true if fitted.
bool fittedWithCathode (void) const
 returns true if fitted with cathode hits(TEMPORARY).
 TTrackBase ()
 Constructor.
 TTrackBase (const AList< TMLink > &links)
 Constructor.
virtual ~TTrackBase ()
 Destructor.
virtual unsigned type (void) const
 returns type. Definition is depending on an object class.
const AList< TMLink > & links (unsigned mask=0) const
unsigned nLinks (unsigned mask=0) const
 returns # of masked TMLinks assigned to this track object.
const AList< TMLink > & cores (unsigned mask=0) const
 returns a list of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
unsigned nCores (unsigned mask=0) const
 returns # of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
void update (void) const
 update cache.
void append (TMLink &)
 appends a TMLink.
void append (const AList< TMLink > &)
 appends TMLinks.
void appendByApproach (AList< TMLink > &list, double maxSigma)
void appendByDistance (AList< TMLink > &list, double maxDistance)
void remove (TMLink &a)
 removes a TMLink.
void remove (const AList< TMLink > &)
 removes TMLinks.
virtual void refine (AList< TMLink > &list, double maxSigma)
virtual void refine (double maxSigma)
 removes bad points by pull. The bad points are masked not to be used in fit.
virtual int DropWorst ()
virtual void removeLinks (void)
virtual double distance (const TMLink &) const
 returns distance to a position of TMLink in TMLink space.
virtual int approach (TMLink &) const
unsigned testByApproach (const TMLink &list, double sigma) const
 returns # of good hits to be appended.
unsigned testByApproach (const AList< TMLink > &list, double sigma) const
virtual int fit (void)
 fits itself by a default fitter. Error was happened if return value is not zero.
const TMFitter *const fitter (void) const
 returns a pointer to a default fitter.
const TMFitter *const fitter (const TMFitter *)
 sets a default fitter.
void falseFit ()
 false Fit
TMLinkoperator[] (unsigned i) const
const TTrackHEP *const hep (void) const
 returns TTrackHEP.
unsigned nHeps (void) const
 returns # of contributed TTrackHEP tracks.
const TTrackMC *const mc (void) const
 returns a pointer to TTrackMC.
bool fitted (void) const
 returns true if fitted.
bool fittedWithCathode (void) const
 returns true if fitted with cathode hits(TEMPORARY).
 TTrackBase ()
 Constructor.
 TTrackBase (const AList< TMLink > &links)
 Constructor.
virtual ~TTrackBase ()
 Destructor.
virtual unsigned type (void) const
 returns type. Definition is depending on an object class.
const AList< TMLink > & links (unsigned mask=0) const
unsigned nLinks (unsigned mask=0) const
 returns # of masked TMLinks assigned to this track object.
const AList< TMLink > & cores (unsigned mask=0) const
 returns a list of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
unsigned nCores (unsigned mask=0) const
 returns # of masked TMLinks for fit. 'mask' will be applied if mask is not 0.
void update (void) const
 update cache.
void append (TMLink &)
 appends a TMLink.
void append (const AList< TMLink > &)
 appends TMLinks.
void appendByApproach (AList< TMLink > &list, double maxSigma)
void appendByDistance (AList< TMLink > &list, double maxDistance)
void remove (TMLink &a)
 removes a TMLink.
void remove (const AList< TMLink > &)
 removes TMLinks.
virtual void refine (AList< TMLink > &list, double maxSigma)
virtual void refine (double maxSigma)
 removes bad points by pull. The bad points are masked not to be used in fit.
virtual int DropWorst ()
virtual void removeLinks (void)
virtual double distance (const TMLink &) const
 returns distance to a position of TMLink in TMLink space.
virtual int approach (TMLink &) const
unsigned testByApproach (const TMLink &list, double sigma) const
 returns # of good hits to be appended.
unsigned testByApproach (const AList< TMLink > &list, double sigma) const
virtual int fit (void)
 fits itself by a default fitter. Error was happened if return value is not zero.
const TMFitter *const fitter (void) const
 returns a pointer to a default fitter.
const TMFitter *const fitter (const TMFitter *)
 sets a default fitter.
void falseFit ()
 false Fit
TMLinkoperator[] (unsigned i) const
const TTrackHEP *const hep (void) const
 returns TTrackHEP.
unsigned nHeps (void) const
 returns # of contributed TTrackHEP tracks.
const TTrackMC *const mc (void) const
 returns a pointer to TTrackMC.
bool fitted (void) const
 returns true if fitted.
bool fittedWithCathode (void) const
 returns true if fitted with cathode hits(TEMPORARY).

Additional Inherited Members

Protected Attributes inherited from TTrackBase
AList< TMLink_links
bool _fitted
bool _fittedWithCathode
TTrackMC_mc

Detailed Description

A class to relate TMDCWireHit and TTrack objects.

Definition at line 43 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

Constructor & Destructor Documentation

◆ TSegment() [1/6]

TSegment::TSegment ( )

Constructor.

Definition at line 29 of file TSegment.cxx.

30 : TTrackBase()
31 , _innerWidth( 0 )
32 , _outerWidth( 0 )
33 , _nLayer( 0 )
34 , _clusterType( 0 )
35 , _duality( 0. )
36 , _nDual( 0 )
37 , _angle( 0. )
38 , _state( 0 )
39 , _lineTsf( 0., 0., 0. ) {
40 // _times = 4.0;
41 // if (_links[0]->wire()->stereo()) _times = 7.0;
42 _times[0] = 7;
43 _times[1] = 7;
44 _times[2] = 4;
45 _times[3] = 4;
46 _times[4] = 4;
47 _times[5] = 5;
48 _times[6] = 5;
49 _times[7] = 5;
50 _times[8] = 5;
51 _times[9] = 4;
52 _times[10] = 4;
53 _fitted = false;
54}
TTrackBase()
Constructor.

Referenced by distance(), and outerPosition().

◆ TSegment() [2/6]

TSegment::TSegment ( const AList< TMLink > & a)

Definition at line 56 of file TSegment.cxx.

57 : TTrackBase( a )
58 , _innerWidth( 0 )
59 , _outerWidth( 0 )
60 , _nLayer( 0 )
61 , _clusterType( 0 )
62 , _duality( 0. )
63 , _nDual( 0 )
64 , _angle( 0. )
65 , _state( 0 )
66 , _lineTsf( 0., 0., 0. ) {
67 _links.sort( SortByWireId );
68 // _times = 4.0;
69 // if (_links[0]->wire()->stereo()) _times = 7.0;
70 _times[0] = 7;
71 _times[1] = 7;
72 _times[2] = 4;
73 _times[3] = 4;
74 _times[4] = 4;
75 _times[5] = 5;
76 _times[6] = 5;
77 _times[7] = 5;
78 _times[8] = 5;
79 _times[9] = 4;
80 _times[10] = 4;
81 _fitted = false;
82} // the above two innitial function are temporary for tsf!!!

◆ ~TSegment() [1/3]

TSegment::~TSegment ( )
virtual

Destructor.

Definition at line 111 of file TSegment.cxx.

111{}

◆ TSegment() [3/6]

TSegment::TSegment ( )

Constructor.

◆ TSegment() [4/6]

TSegment::TSegment ( const AList< TMLink > & )

◆ ~TSegment() [2/3]

virtual TSegment::~TSegment ( )
virtual

Destructor.

◆ TSegment() [5/6]

TSegment::TSegment ( )

Constructor.

◆ TSegment() [6/6]

TSegment::TSegment ( const AList< TMLink > & )

◆ ~TSegment() [3/3]

virtual TSegment::~TSegment ( )
virtual

Destructor.

Member Function Documentation

◆ center() [1/3]

const TMLink & TSegment::center ( void ) const

returns a TMLink which is the closest to the center.

Referenced by rangeX(), and solveLR().

◆ center() [2/3]

const TMLink & TSegment::center ( void ) const

returns a TMLink which is the closest to the center.

◆ center() [3/3]

const TMLink & TSegment::center ( void ) const

returns a TMLink which is the closest to the center.

◆ clusterType() [1/3]

unsigned TSegment::clusterType ( void ) const
inline

returns cluster type. 0:empty, 1:short line, 2:long line, 3:V shage(from outside), 4:A shape, 5:X shape, 6:parallel, 7:complicated.

Definition at line 296 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

296 {
297 if ( !nLinks() ) return 0;
298 if ( _clusterType == 0 ) updateType();
299 return _clusterType;
300}
unsigned nLinks(unsigned mask=0) const
returns # of masked TMLinks assigned to this track object.

Referenced by dump(), and split().

◆ clusterType() [2/3]

unsigned TSegment::clusterType ( void ) const

returns cluster type. 0:empty, 1:short line, 2:long line, 3:V shage(from outside), 4:A shape, 5:X shape, 6:parallel, 7:complicated.

◆ clusterType() [3/3]

unsigned TSegment::clusterType ( void ) const

returns cluster type. 0:empty, 1:short line, 2:long line, 3:V shage(from outside), 4:A shape, 5:X shape, 6:parallel, 7:complicated.

◆ direction() [1/3]

const HepVector3D & TSegment::direction ( void ) const
inline

returns direction.

Definition at line 271 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

271 {
272 if ( !_fitted ) update();
273 return _direction;
274}
void update(void) const
update cache.

◆ direction() [2/3]

const HepVector3D & TSegment::direction ( void ) const

returns direction.

◆ direction() [3/3]

const HepVector3D & TSegment::direction ( void ) const

returns direction.

◆ distance() [1/6]

double TSegment::distance ( const HepPoint3D & p,
const HepVector3D & v ) const

Definition at line 256 of file TSegment.cxx.

256 {
257 HepVector3D dir = _position - p;
258 if ( dir.x() > M_PI ) dir.setX( dir.x() - 2. * M_PI );
259 else if ( dir.x() < -M_PI ) dir.setX( 2. * M_PI + dir.x() );
260
261 float radial = fabs( v.unit().dot( dir ) );
262 float radial2 = radial * radial;
263
264 return ( dir.mag2() - radial2 ) > 0.0 ? sqrt( dir.mag2() - radial2 ) : 0.;
265}
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition KarLud.h:35
HepGeom::Vector3D< double > HepVector3D
#define M_PI
Definition TConstant.h:4

◆ distance() [2/6]

double TSegment::distance ( const HepPoint3D & ,
const HepVector3D &  ) const

◆ distance() [3/6]

double TSegment::distance ( const HepPoint3D & ,
const HepVector3D &  ) const

◆ distance() [4/6]

double TSegment::distance ( const TSegment & c) const

calculates distance between two clusters. Smaller value indicates closer.

Definition at line 245 of file TSegment.cxx.

245 {
246 HepVector3D dir = c.position() - _position;
247 if ( dir.x() > M_PI ) dir.setX( dir.x() - 2. * M_PI );
248 else if ( dir.x() < -M_PI ) dir.setX( 2. * M_PI + dir.x() );
249
250 float radial = fabs( _direction.dot( dir ) );
251 float radial2 = radial * radial;
252
253 return ( dir.mag2() - radial2 ) > 0.0 ? sqrt( dir.mag2() - radial2 ) : 0.;
254}
const HepPoint3D & position(void) const
returns position.

Referenced by solveDualHits().

◆ distance() [5/6]

double TSegment::distance ( const TSegment & ) const

calculates distance between two clusters. Smaller value indicates closer.

◆ distance() [6/6]

double TSegment::distance ( const TSegment & ) const

calculates distance between two clusters. Smaller value indicates closer.

◆ duality() [1/3]

double TSegment::duality ( void ) const
inline

Definition at line 302 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

302{ return _duality; }

◆ duality() [2/3]

double TSegment::duality ( void ) const

◆ duality() [3/3]

double TSegment::duality ( void ) const

◆ dump() [1/3]

void TSegment::dump ( const std::string & message = std::string( "" ),
const std::string & prefix = std::string( "" ) ) const
virtual

dumps debug information.

Reimplemented from TTrackBase.

Definition at line 113 of file TSegment.cxx.

113 {
114 if ( !_fitted ) update();
115 bool def = false;
116 if ( msg == "" ) def = true;
117
118 if ( def || msg.find( "cluster" ) != std::string::npos ||
119 msg.find( "detail" ) != std::string::npos )
120 {
121 std::cout << pre;
122 std::cout << "#links=" << _links.length();
123 std::cout << "(" << _innerWidth << "," << _outerWidth << ":";
124 std::cout << clusterType() << ")," << _nDual << "," << _duality << ",";
125 std::cout << _angle << std::endl;
126 }
127 if ( def || msg.find( "vector" ) != std::string::npos ||
128 msg.find( "detail" ) != std::string::npos )
129 {
130 std::cout << pre;
131 std::cout << "pos" << _position << ","
132 << "dir" << _direction;
133 std::cout << std::endl;
134 }
135 if ( def || msg.find( "state" ) != std::string::npos ||
136 msg.find( "detail" ) != std::string::npos )
137 {
138 std::cout << pre;
139 std::cout << "state=" << _state << std::endl;
140 }
141 if ( def || msg.find( "link" ) != std::string::npos ||
142 msg.find( "detail" ) != std::string::npos )
143 {
144 std::cout << pre;
145 std::cout << "unique links=" << NUniqueLinks( *this );
146 std::cout << ",major links=" << NMajorLinks( *this );
147 std::cout << ",branches=" << NLinkBranches( *this );
148 std::cout << std::endl;
149 }
150 if ( !def ) TTrackBase::dump( msg, pre );
151}
unsigned NMajorLinks(const TSegment &a)
returns # of links in the major link.
unsigned NUniqueLinks(const TSegment &a)
checks property of segments.
unsigned NLinkBranches(const TSegment &a)
returns # of link branches in the major link.
virtual void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.

Referenced by THistogram::segments(), solveDualHits(), and superLayerId().

◆ dump() [2/3]

void TSegment::dump ( const std::string & message = std::string(""),
const std::string & prefix = std::string("") ) const
virtual

dumps debug information.

Reimplemented from TTrackBase.

◆ dump() [3/3]

void TSegment::dump ( const std::string & message = std::string(""),
const std::string & prefix = std::string("") ) const
virtual

dumps debug information.

Reimplemented from TTrackBase.

◆ innerLinks() [1/6]

AList< TSegment > & TSegment::innerLinks ( void )
inline

Definition at line 329 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

329{ return _innerLinks; }

◆ innerLinks() [2/6]

AList< TSegment > & TSegment::innerLinks ( void )

◆ innerLinks() [3/6]

AList< TSegment > & TSegment::innerLinks ( void )

◆ innerLinks() [4/6]

const AList< TSegment > & TSegment::innerLinks ( void ) const
inline

Definition at line 331 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

331{ return _innerLinks; }

◆ innerLinks() [5/6]

const AList< TSegment > & TSegment::innerLinks ( void ) const

◆ innerLinks() [6/6]

const AList< TSegment > & TSegment::innerLinks ( void ) const

◆ innerMostLayer() [1/3]

unsigned TSegment::innerMostLayer ( void ) const
inline

returns inner most layer.

Definition at line 286 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

286 {
287 if ( !_fitted ) update();
288 return _innerMostLayer;
289}

Referenced by width().

◆ innerMostLayer() [2/3]

unsigned TSegment::innerMostLayer ( void ) const

returns inner most layer.

◆ innerMostLayer() [3/3]

unsigned TSegment::innerMostLayer ( void ) const

returns inner most layer.

◆ inners() [1/3]

const AList< TMLink > & TSegment::inners ( void ) const
inline

returns TMLinks in inner/outer-most layer.

Definition at line 256 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

256 {
257 if ( !_fitted ) update();
258 return _inners;
259}

◆ inners() [2/3]

const AList< TMLink > & TSegment::inners ( void ) const

returns TMLinks in inner/outer-most layer.

◆ inners() [3/3]

const AList< TMLink > & TSegment::inners ( void ) const

returns TMLinks in inner/outer-most layer.

◆ innerWidth() [1/3]

unsigned TSegment::innerWidth ( void ) const
inline

returns inner width.

Definition at line 276 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

276 {
277 if ( !_fitted ) update();
278 return _innerWidth;
279}

◆ innerWidth() [2/3]

unsigned TSegment::innerWidth ( void ) const

returns inner width.

◆ innerWidth() [3/3]

unsigned TSegment::innerWidth ( void ) const

returns inner width.

◆ lineTsf() [1/6]

const HepPoint3D & TSegment::lineTsf ( const HepPoint3D & a)
inline

Definition at line 344 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

344{ return _lineTsf = a; }

◆ lineTsf() [2/6]

const HepPoint3D & TSegment::lineTsf ( const HepPoint3D & )

◆ lineTsf() [3/6]

const HepPoint3D & TSegment::lineTsf ( const HepPoint3D & )

◆ lineTsf() [4/6]

const HepPoint3D & TSegment::lineTsf ( void ) const
inline

return line of Tsf for pos and dir

Definition at line 342 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

342{ return _lineTsf; }

◆ lineTsf() [5/6]

const HepPoint3D & TSegment::lineTsf ( void ) const

return line of Tsf for pos and dir

◆ lineTsf() [6/6]

const HepPoint3D & TSegment::lineTsf ( void ) const

return line of Tsf for pos and dir

◆ objectType() [1/3]

unsigned TSegment::objectType ( void ) const
inlinevirtual

returns type.

Reimplemented from TTrackBase.

Definition at line 304 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

◆ objectType() [2/3]

virtual unsigned TSegment::objectType ( void ) const
virtual

returns type.

Reimplemented from TTrackBase.

◆ objectType() [3/3]

virtual unsigned TSegment::objectType ( void ) const
virtual

returns type.

Reimplemented from TTrackBase.

◆ outerLinks() [1/6]

AList< TSegment > & TSegment::outerLinks ( void )
inline

Definition at line 333 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

333{ return _outerLinks; }

Referenced by OuterMostUniqueLink().

◆ outerLinks() [2/6]

AList< TSegment > & TSegment::outerLinks ( void )

◆ outerLinks() [3/6]

AList< TSegment > & TSegment::outerLinks ( void )

◆ outerLinks() [4/6]

const AList< TSegment > & TSegment::outerLinks ( void ) const
inline

Definition at line 335 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

335{ return _outerLinks; }

◆ outerLinks() [5/6]

const AList< TSegment > & TSegment::outerLinks ( void ) const

◆ outerLinks() [6/6]

const AList< TSegment > & TSegment::outerLinks ( void ) const

◆ outerMostLayer() [1/3]

unsigned TSegment::outerMostLayer ( void ) const
inline

returns outer most layer.

Definition at line 291 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

291 {
292 if ( !_fitted ) update();
293 return _outerMostLayer;
294}

Referenced by width().

◆ outerMostLayer() [2/3]

unsigned TSegment::outerMostLayer ( void ) const

returns outer most layer.

◆ outerMostLayer() [3/3]

unsigned TSegment::outerMostLayer ( void ) const

returns outer most layer.

◆ outerPosition() [1/3]

const HepPoint3D & TSegment::outerPosition ( void ) const

◆ outerPosition() [2/3]

const HepPoint3D & TSegment::outerPosition ( void ) const

◆ outerPosition() [3/3]

const HepPoint3D & TSegment::outerPosition ( void ) const

◆ outers() [1/3]

const AList< TMLink > & TSegment::outers ( void ) const
inline

Definition at line 261 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

261 {
262 if ( !_fitted ) update();
263 return _outers;
264}

Referenced by solveDualHits().

◆ outers() [2/3]

const AList< TMLink > & TSegment::outers ( void ) const

◆ outers() [3/3]

const AList< TMLink > & TSegment::outers ( void ) const

◆ outerWidth() [1/3]

unsigned TSegment::outerWidth ( void ) const
inline

returns outer width.

Definition at line 281 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

281 {
282 if ( !_fitted ) update();
283 return _outerWidth;
284}

◆ outerWidth() [2/3]

unsigned TSegment::outerWidth ( void ) const

returns outer width.

◆ outerWidth() [3/3]

unsigned TSegment::outerWidth ( void ) const

returns outer width.

◆ position() [1/3]

const HepPoint3D & TSegment::position ( void ) const
inline

returns position.

Definition at line 266 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

266 {
267 if ( !_fitted ) update();
268 return _position;
269}

Referenced by distance().

◆ position() [2/3]

const HepPoint3D & TSegment::position ( void ) const

returns position.

◆ position() [3/3]

const HepPoint3D & TSegment::position ( void ) const

returns position.

◆ rangeX() [1/3]

Range TSegment::rangeX ( double min,
double max ) const

returns Range of x-coordinate of TMLinks.

Definition at line 267 of file TSegment.cxx.

267 {
268#ifdef TRKRECO_DEBUG_DETAIL
269 if ( min > max )
270 {
271 std::cout << "TSegment::range !!! bad arguments:min,max=";
272 std::cout << min << "," << max << std::endl;
273 }
274#endif
275
276 unsigned n = _links.length();
277 if ( n == 0 ) return Range( 0., 0. );
278
279 //...Search for a center...
280 bool found = false;
281 double center;
282 for ( unsigned i = 0; i < n; i++ )
283 {
284 double x = _links[i]->position().x();
285 if ( x < min || x > max ) continue;
286 center = x;
287 found = true;
288 break;
289 }
290 if ( !found ) return Range( 0., 0. );
291
292#ifdef TRKRECO_DEBUG_DETAIL
293// std::cout << " center=" << center << std::endl;
294#endif
295
296 double distanceR = 0.;
297 double distanceL = 0.;
298 double distanceMax = max - min;
299 for ( unsigned i = 0; i < n; i++ )
300 {
301 double x = _links[i]->position().x();
302 if ( x < min || x > max ) continue;
303
304 double distance0, distance1;
305 if ( x > center )
306 {
307 distance0 = x - center;
308 distance1 = distanceMax - distance0;
309 }
310 else
311 {
312 distance1 = center - x;
313 distance0 = distanceMax - distance1;
314 }
315
316 if ( distance0 < distance1 )
317 {
318 if ( distance0 > distanceR ) distanceR = distance0;
319 }
320 else
321 {
322 if ( distance1 > distanceL ) distanceL = distance1;
323 }
324
325#ifdef TRKRECO_DEBUG_DETAIL
326// std::cout << " ";
327// std::cout << _links[i]->wire()->layerId() << "-";
328// std::cout << _links[i]->wire()->localId() << ",";
329// std::cout << _links[i]->position().x();
330// std::cout << ",0,1=" << distance0 << "," << distance1;
331// std::cout << ",l,r=" << distanceL << "," << distanceR;
332// std::cout << std::endl;
333#endif
334 }
335
336 double right = center + distanceR;
337 double left = center - distanceL;
338
339 return Range( left, right );
340}
const Int_t n
Double_t x[10]
#define min(a, b)
#define max(a, b)
const TMLink & center(void) const
returns a TMLink which is the closest to the center.

◆ rangeX() [2/3]

Range TSegment::rangeX ( double min,
double max ) const

returns Range of x-coordinate of TMLinks.

◆ rangeX() [3/3]

Range TSegment::rangeX ( double min,
double max ) const

returns Range of x-coordinate of TMLinks.

◆ solveDualHits() [1/3]

int TSegment::solveDualHits ( void )

Definition at line 778 of file TSegment.cxx.

778 {
779 updateType();
780 if ( _clusterType == 0 ) return 0;
781 if ( _nDual == 0 ) return 0;
782 update();
783 return 0;
784
785 updateType();
786 if ( _clusterType == 0 ) return 0;
787 if ( _nDual == 0 ) return 0;
788
789 AList<TMLink> seeds;
790 AList<TMLink> duals;
791 for ( unsigned i = _innerMostLayer; i <= _outerMostLayer; i++ )
792 {
793 AList<TMLink> list = SameLayer( _links, i );
794
795 if ( list.length() == 1 ) { seeds.append( list[0] ); }
796 else if ( list.length() == 2 )
797 {
798 if ( Width( list ) > 1 )
799 {
800 const TMDCWireHit* h0 = list[0]->hit();
801 const TMDCWireHit* h1 = list[1]->hit();
802 double distance = ( h0->xyPosition() - h1->xyPosition() ).mag();
803 distance = fabs( distance - list[0]->drift() - list[1]->drift() );
804 if ( distance > 0.5 ) duals.append( list );
805#ifdef TRKRECO_DEBUG_DETAIL
806 h0->dump( "", " " );
807 h1->dump( "", " " );
808 std::cout << " lyr=" << i;
809 std::cout << ", duality distance = " << distance << std::endl;
810#endif
811 }
812 }
813 else if ( list.length() == 0 ) { continue; }
814#ifdef TRKRECO_DEBUG_DETAIL
815 else
816 {
817 std::cout << "TSegment::solveDualHits !!! this is not expected 2";
818 std::cout << std::endl;
819 this->dump( "cluster hits mc", " " );
820 }
821#endif
822 }
823
824 //...Solve them...
825 if ( seeds.length() < 2 ) return -1;
826 AList<TMLink> outers = InOut( seeds );
827 const HepPoint3D& p = outers[0]->xyPosition();
828 HepVector3D v = ( outers[1]->xyPosition() - p ).unit();
829 unsigned n = duals.length() / 2;
830 for ( unsigned i = 0; i < n; i++ )
831 {
832 TMLink* t0 = duals[i * 2 + 0];
833 TMLink* t1 = duals[i * 2 + 1];
834 HepVector3D x0 = t0->xyPosition() - p;
835 HepVector3D x1 = t1->xyPosition() - p;
836 double d0 = ( x0 - ( x0.dot( v ) * v ) ).mag();
837 double d1 = ( x1 - ( x1.dot( v ) * v ) ).mag();
838 if ( d0 < d1 ) _links.remove( t1 );
839 else _links.remove( t0 );
840 }
841 update();
842 return n;
843}
HepGeom::Point3D< double > HepPoint3D
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
const HepPoint3D & xyPosition(void) const
returns drift time
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
Definition TSegment.cxx:113
const AList< TMLink > & outers(void) const
double distance(const TSegment &) const
calculates distance between two clusters. Smaller value indicates closer.
Definition TSegment.cxx:245

Referenced by THistogram::segments().

◆ solveDualHits() [2/3]

int TSegment::solveDualHits ( void )

◆ solveDualHits() [3/3]

int TSegment::solveDualHits ( void )

◆ solveLR() [1/3]

void TSegment::solveLR ( void )

solve LR of hit in TSF.

Definition at line 1673 of file TSegment.cxx.

1673 {
1674 unsigned n = _links.length();
1675 // initial...
1676 if ( n <= 3 )
1677 {
1679 return;
1680 }
1681 for ( int i = 0; i < n; ++i )
1682 {
1683 TMLink* l = _links[i];
1684 if ( l->hit()->state() & WireHitPatternRight )
1685 {
1686 unsigned newState = l->hit()->state() & ( ~WireHitPatternRight );
1687 l->hit()->state( newState );
1688 }
1689 if ( l->hit()->state() & WireHitPatternLeft )
1690 {
1691 unsigned newState = l->hit()->state() & ( ~WireHitPatternLeft );
1692 l->hit()->state( newState );
1693 }
1694 }
1695
1696 HepPoint3D originCon( 0., 0., 0. );
1697 HepPoint3D dirZ( 0., 0., 1. );
1698 HepPoint3D center = closestPoint( originCon, _lineTsf );
1699 HepPoint3D v1 = ( center - originCon ).unit();
1700 HepPoint3D v2 = dirZ.cross( v1 );
1701 for ( int i = 0; i < n; ++i )
1702 {
1703 // cout<<"layerId: "<<_links[i]->wire()->layerId()<<" localId:
1704 //"<<_links[i]->wire()->localId()<<endl;
1705 const HepPoint3D& p = _links[i]->positionD();
1706 unsigned state = _links[i]->hit()->state();
1707
1708 double cosA = ( p - center ).unit().dot( v1.unit() );
1709 double cosB = ( p - center ).unit().dot( v2.unit() );
1710 if ( cosA * cosB < 0 ) state |= WireHitPatternLeft;
1711 else state |= WireHitPatternRight;
1712
1713 _links[i]->hit()->state( state );
1714 }
1715}
*******INTEGER m_nBinMax INTEGER m_NdiMax !No of bins in histogram for cell exploration division $ !Last vertex $ !Last active cell $ !Last cell in buffer $ !No of sampling when dividing cell $ !No of function total $ !Flag for random ceel for $ !Flag for type of for WtMax $ !Flag which decides whether vertices are included in the sampling $ entire domain is hyp !Maximum effective eevents per saves r n generator level $ !Flag for chat level in !Latex Output unit
Definition FoamA.h:90
void solveThreeHits(void)

◆ solveLR() [2/3]

void TSegment::solveLR ( void )

solve LR of hit in TSF.

◆ solveLR() [3/3]

void TSegment::solveLR ( void )

solve LR of hit in TSF.

◆ solveThreeHits() [1/3]

void TSegment::solveThreeHits ( void )

Definition at line 1735 of file TSegment.cxx.

1735 {
1736 unsigned n = _links.length();
1737
1738 for ( unsigned i = 0; i < n; i++ )
1739 {
1740 const TMDCWireHit* h = _links[i]->hit();
1741 const TMDCWire* w = h->wire();
1742 unsigned state = h->state();
1743
1744 //...Cache pointers to a neighbor...
1745 const TMDCWire* neighbor[6];
1746 for ( unsigned j = 0; j < 6; j++ ) neighbor[j] = w->neighbor( j );
1747
1748 //...Decide hit pattern...
1749 unsigned pattern = 0;
1750 for ( unsigned j = 0; j < 6; j++ )
1751 {
1752 if ( neighbor[j] )
1753 if ( neighbor[j]->hit() ) pattern += ( 1 << j );
1754 }
1755 state |= ( pattern << WireHitNeighborHit );
1756
1757 //...Solve LR locally...
1758 if ( ( pattern == 34 ) || ( pattern == 42 ) || ( pattern == 40 ) || ( pattern == 10 ) ||
1759 ( pattern == 35 ) || ( pattern == 50 ) )
1761 else if ( ( pattern == 17 ) || ( pattern == 21 ) || ( pattern == 20 ) ||
1762 ( pattern == 5 ) || ( pattern == 19 ) || ( pattern == 49 ) )
1764
1765 //...Store it...
1766 h->state( state );
1767 }
1768}
double w
const TMDCWire *const wire(void) const
returns a pointer to a TMDCWire.

Referenced by solveLR().

◆ solveThreeHits() [2/3]

void TSegment::solveThreeHits ( void )

◆ solveThreeHits() [3/3]

void TSegment::solveThreeHits ( void )

◆ split() [1/3]

AList< TSegment > TSegment::split ( void ) const

returns a list of sub TSegments in this cluster. If cluster type is 1, 2, or 7, no cluster is returned.

Definition at line 406 of file TSegment.cxx.

406 {
407 AList<TSegment> list;
408
409 //...Do not split if cluster type is 1, 2, or 7...
410 unsigned t = clusterType();
411#ifdef TRKRECO_DEBUG_DETAIL
412 std::cout << " ... splitting : type=" << t << std::endl;
413#endif
414 if ( t == 0 ) return list;
415 else if ( t == 2 )
416 {
417 // beta 5
418 // if (_nDual > 2 && _duality > 0.7 && _angle > 0.7) return splitDual();
419
420 // 1.67g
421 // if (_nDual > 2 && _duality > 0.7) return splitDual();
422
423 if ( _nDual > 2 && _duality > 0.7 && _angle > 0.7 ) return splitDual();
424 return list;
425 }
426 else if ( t == 1 ) return list;
427 else if ( t == 7 ) return list;
428
429 //...Parallel...
430 else if ( t == 6 ) return splitParallel();
431 // else if (t == 6) return list;
432
433 //...Avoid splitting of X or parallel...(future implementation)...
434 else if ( t > 4 ) return splitComplicated();
435
436 //...A or V...
437 return splitAV();
438}
int t()
Definition t.c:1

Referenced by THistogram::segments().

◆ split() [2/3]

AList< TSegment > TSegment::split ( void ) const

returns a list of sub TSegments in this cluster. If cluster type is 1, 2, or 7, no cluster is returned.

◆ split() [3/3]

AList< TSegment > TSegment::split ( void ) const

returns a list of sub TSegments in this cluster. If cluster type is 1, 2, or 7, no cluster is returned.

◆ splitTsf() [1/3]

AList< TSegment > TSegment::splitTsf ( AList< TMLink > & seedNeighbors)

Definition at line 1163 of file TSegment.cxx.

1163 {
1164 // get links in each layer.
1165 AList<TSegment> list;
1166 AList<TMLink> links[4]; // links in each local layer.
1167 AList<TMLink> seeds2; // links in the outer layer.
1168 AList<TMLink> exTsf; // links in other local layers.
1169 TMLink* seed = nullptr; // link in the mostinner layer. add initialize 25-05-15
1170
1171 for ( unsigned i = 0; i < _links.length(); ++i )
1172 {
1173 TMLink* l = _links[i];
1174 links[l->wire()->localLayerId()].append( l );
1175 }
1176
1177 // prepare for segment finding.
1178 if ( links[0].length() == 0 )
1179 { // find in 234.
1180 if ( links[3].length() == 0 ) return list;
1181 if ( links[1].length() != 1 )
1182 {
1183 cout << "wrong in tsf, TSegment::splitTsf ...1" << endl;
1184 return list;
1185 }
1186 seed = links[1][0];
1187 seeds2.append( links[3] );
1188 exTsf.append( links[2] );
1189 }
1190 else if ( links[0].length() == 1 )
1191 { // find in 1234, 124, 134, 123.
1192 seed = links[0][0];
1193 if ( links[3].length() > 0 )
1194 { // 1..4
1195 seeds2.append( links[3] );
1196 exTsf.append( links[1] );
1197 exTsf.append( links[2] );
1198 }
1199 else if ( links[2].length() > 0 )
1200 { // 1..3
1201 seeds2.append( links[2] );
1202 exTsf.append( links[1] );
1203 }
1204 else return list;
1205 }
1206 else cout << "wrong in tsf, TSegment::splitTsf ...2" << endl;
1207 exTsf.append( seeds2 ); // add the outer layer...
1208
1209 // find segments
1210 for ( unsigned i = 0; i < seeds2.length(); ++i )
1211 {
1212 if ( seed->tsfTag() > 0 && seeds2[i]->tsfTag() > 0 ) continue;
1213 AList<TSegment> segments;
1214 HepPoint3D line[4];
1215 fitLine( seed, seeds2[i], line );
1216 segments = appendByLine( seed, seeds2[i], seedNeighbors, exTsf, line );
1217 list.append( segments );
1218 segments.removeAll();
1219 }
1220 if ( seed->wire()->localLayerId() == 0 )
1221 { // for 123
1222 exTsf.removeAll();
1223 seeds2.removeAll();
1224 exTsf.append( links[1] );
1225 exTsf.append( links[2] ); // add the outer layer...
1226 for ( int k = 0; k < links[2].length(); ++k )
1227 {
1228 if ( links[2][k]->tsfTag() == 0 ) seeds2.append( links[2][k] );
1229 }
1230 for ( unsigned i = 0; i < seeds2.length(); ++i )
1231 {
1232 if ( seed->tsfTag() > 0 && seeds2[i]->tsfTag() > 0 ) continue;
1233 AList<TSegment> segments2;
1234 HepPoint3D line2[4];
1235 fitLine( seed, seeds2[i], line2 );
1236 segments2 = appendByLine( seed, seeds2[i], seedNeighbors, exTsf, line2 );
1237 list.append( segments2 );
1238 segments2.removeAll();
1239 }
1240 }
1241
1242 return list;
1243}
unsigned localLayerId(void) const
returns local layer id in a super layer.
const AList< TMLink > & links(unsigned mask=0) const

Referenced by TMDCTsf::segments().

◆ splitTsf() [2/3]

AList< TSegment > TSegment::splitTsf ( AList< TMLink > & )

◆ splitTsf() [3/3]

AList< TSegment > TSegment::splitTsf ( AList< TMLink > & )

◆ state() [1/6]

unsigned TSegment::state ( unsigned a)
inline

Definition at line 339 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

339{ return _state = a; }

◆ state() [2/6]

unsigned TSegment::state ( unsigned )

◆ state() [3/6]

unsigned TSegment::state ( unsigned )

◆ state() [4/6]

unsigned TSegment::state ( void ) const
inline

Definition at line 337 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

337{ return _state; }

Referenced by solveLR(), and solveThreeHits().

◆ state() [5/6]

unsigned TSegment::state ( void ) const

◆ state() [6/6]

unsigned TSegment::state ( void ) const

◆ superLayerId() [1/3]

unsigned TSegment::superLayerId ( void ) const
inline

returns super layer id.

Definition at line 306 of file InstallArea/x86_64-el9-gcc13-dbg/include/TrkReco/TSegment.h.

306 {
307 unsigned id = ( links() )[0]->wire()->superLayerId();
308# ifdef TRKRECO_DEBUG
309 {
310 const AList<TMLink>& list = links();
311 unsigned n = list.length();
312 for ( unsigned i = 1; i < n; i++ )
313 {
314 if ( list[i]->hit()->wire()->superLayerId() != id )
315 {
316 std::cout << "TSegment::superLayerId !!! strange segment found";
317 std::cout << std::endl;
318 dump();
319 break;
320 }
321 }
322 }
323# endif
324 return id;
325}
unsigned superLayerId() const
returns super layer id.

Referenced by superLayerId().

◆ superLayerId() [2/3]

unsigned TSegment::superLayerId ( ) const

returns super layer id.

◆ superLayerId() [3/3]

unsigned TSegment::superLayerId ( ) const

returns super layer id.

◆ tracks() [1/3]

AList< TTrack > & TSegment::tracks ( void )
inline

◆ tracks() [2/3]

AList< TTrack > & TSegment::tracks ( void )

◆ tracks() [3/3]

AList< TTrack > & TSegment::tracks ( void )

◆ width() [1/3]

unsigned TSegment::width ( void ) const

returns width.

Definition at line 1136 of file TSegment.cxx.

1136 {
1137 unsigned maxWidth = 0;
1138 for ( unsigned i = innerMostLayer(); i <= outerMostLayer(); i++ )
1139 {
1140 AList<TMLink> tmp = SameLayer( links(), i );
1141 unsigned w = Width( tmp );
1142 if ( w > maxWidth ) maxWidth = w;
1143 }
1144 return maxWidth;
1145}
unsigned innerMostLayer(void) const
returns inner most layer.
unsigned outerMostLayer(void) const
returns outer most layer.

◆ width() [2/3]

unsigned TSegment::width ( void ) const

returns width.

◆ width() [3/3]

unsigned TSegment::width ( void ) const

returns width.


The documentation for this class was generated from the following files: