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

#include <MdcSegInfoCsmc.h>

Inheritance diagram for MdcSegInfoCsmc:

Public Member Functions

 MdcSegInfoCsmc ()
 ~MdcSegInfoCsmc ()
double d0 () const
double phi0 () const
double sigPhi0 () const
double sigD0 () const
bool parIsAngle (int i) const
void calcStraight (double phi, double slope, double rad, const double *inErr)
void calcStraight (const MdcSeg *parentSeg)
 MdcSegInfoCsmc ()
 ~MdcSegInfoCsmc ()
double d0 () const
double phi0 () const
double sigPhi0 () const
double sigD0 () const
bool parIsAngle (int i) const
void calcStraight (double phi, double slope, double rad, const double *inErr)
void calcStraight (const MdcSeg *parentSeg)
 MdcSegInfoCsmc ()
 ~MdcSegInfoCsmc ()
double d0 () const
double phi0 () const
double sigPhi0 () const
double sigD0 () const
bool parIsAngle (int i) const
void calcStraight (double phi, double slope, double rad, const double *inErr)
void calcStraight (const MdcSeg *parentSeg)
Public Member Functions inherited from MdcSegInfo
 MdcSegInfo ()
virtual ~MdcSegInfo ()
const double * errmat () const
const double * inverr () const
double par (int i) const
double arc () const
void plotSegInfo () const
 MdcSegInfo ()
virtual ~MdcSegInfo ()
const double * errmat () const
const double * inverr () const
double par (int i) const
double arc () const
void plotSegInfo () const
 MdcSegInfo ()
virtual ~MdcSegInfo ()
const double * errmat () const
const double * inverr () const
double par (int i) const
double arc () const
void plotSegInfo () const

Additional Inherited Members

Protected Attributes inherited from MdcSegInfo
double _par0
double _par1
double _errmat [3]
double _inverr [3]
double _arc

Detailed Description

Constructor & Destructor Documentation

◆ MdcSegInfoCsmc() [1/3]

MdcSegInfoCsmc::MdcSegInfoCsmc ( )
inline

◆ ~MdcSegInfoCsmc() [1/3]

MdcSegInfoCsmc::~MdcSegInfoCsmc ( )
inline

◆ MdcSegInfoCsmc() [2/3]

MdcSegInfoCsmc::MdcSegInfoCsmc ( )
inline

◆ ~MdcSegInfoCsmc() [2/3]

MdcSegInfoCsmc::~MdcSegInfoCsmc ( )
inline

◆ MdcSegInfoCsmc() [3/3]

MdcSegInfoCsmc::MdcSegInfoCsmc ( )
inline

◆ ~MdcSegInfoCsmc() [3/3]

MdcSegInfoCsmc::~MdcSegInfoCsmc ( )
inline

Member Function Documentation

◆ calcStraight() [1/6]

void MdcSegInfoCsmc::calcStraight ( const MdcSeg * parentSeg)

Definition at line 95 of file MdcSegInfoCsmc.cxx.

95 {
96 //------------------------------------------------------------------
97 double slope = parentSeg->slope();
98 double radius = parentSeg->superlayer()->rad0();
99 double phi = parentSeg->phi();
100 const double* inErr = parentSeg->errmat();
101
102 calcStraight( phi, slope, radius, inErr );
103}
void calcStraight(double phi, double slope, double rad, const double *inErr)

◆ calcStraight() [2/6]

void MdcSegInfoCsmc::calcStraight ( const MdcSeg * parentSeg)

◆ calcStraight() [3/6]

void MdcSegInfoCsmc::calcStraight ( const MdcSeg * parentSeg)

◆ calcStraight() [4/6]

void MdcSegInfoCsmc::calcStraight ( double phi,
double slope,
double rad,
const double * inErr )

Definition at line 36 of file MdcSegInfoCsmc.cxx.

37 {
38 //------------------------------------------------------------------
39 // Load the segment info obj with phi0 and d0 values, calc. assuming
40 // the segments lie on straight tracks.
41 //
42 // d0 defined to be positive for tracks that intercept x axis on positive
43 // phi (neg x) side of origin. At least that's what I claim. */
44
45 // error matrix conversion:
46 // Vij(f) = SUM(n,m) ( d(fi)/d(yn) * d(fj)/d(ym) * Vnm(y) )
47 // The derivatives are calculated from:
48 // d0 = r**2 * slope / sqrt( 1 + r**2 * slope**2 ) &
49 // phi0 = phiseg - asin(d0 / r)
50
51 // d0ovSlope = r**2/sqrt(1 + slope**2 * r**2) = d0 / slope
52 // d0ovrad = d0/r
53 // d0ovradsq = (d0/r)**2
54 // dphi0dphi = d(phi0)/d(seg-phi)
55 // dphi0ds = d(phi0)/d(seg-slope)
56 // dd0ds = d(d0)/d(seg-slope)
57 // dd0dphi = 0
58
59 double d0ovSlope = -rad * rad / sqrt( 1. + slope * slope * rad * rad );
60 double d0 = slope * d0ovSlope;
61 _par0 = d0;
62
63 double d0ovRad = d0 / rad;
64 // Don't blow away arcsine:
65 d0ovRad =
66 ( d0ovRad > 1.0 || d0ovRad < -1.0 ) ? ( d0ovRad + 0.00001 ) / fabs( d0ovRad ) : d0ovRad;
67 BesAngle phi0 = phi - asin( d0ovRad );
68 _par1 = phi0.posRad();
69
70 // Error matrix (anal calculation).
71 // double dphi0dphi = 1.;
72 double dphi0ds = -d0ovSlope * sqrt( 1. - d0ovRad * d0ovRad ) / rad;
73 double dd0ds = d0ovSlope * ( 1. - d0ovRad * d0ovRad );
74
75 // d0:
76 _errmat[0] = inErr[2] * dd0ds * dd0ds;
77 if ( _errmat[0] < 0. ) _errmat[0] = 0.;
78
79 // phi0:
80 _errmat[2] = inErr[2] * dphi0ds * dphi0ds + inErr[0] + inErr[1] * 2. * dphi0ds;
81 if ( _errmat[2] < 0. ) _errmat[2] = 0.;
82 // phi0|d0:
83 _errmat[1] = inErr[2] * dd0ds * dphi0ds + inErr[1] * dd0ds;
84
86 if ( error )
87 {
88 std::cout << " ErrMsg(warning) "
89 << "Failed to invert matrix -- MdcSegInfo::calcStraight" << endl
90 << _errmat[0] << " " << _errmat[1] << " " << _errmat[2] << std::endl;
91 }
92}
int mdcTwoInv(double matrix[3], double invmat[3])

Referenced by calcStraight(), and MdcSegGrouperCsmc::fillWithSegs().

◆ calcStraight() [5/6]

void MdcSegInfoCsmc::calcStraight ( double phi,
double slope,
double rad,
const double * inErr )

◆ calcStraight() [6/6]

void MdcSegInfoCsmc::calcStraight ( double phi,
double slope,
double rad,
const double * inErr )

◆ d0() [1/3]

double MdcSegInfoCsmc::d0 ( ) const
inline

◆ d0() [2/3]

double MdcSegInfoCsmc::d0 ( ) const
inline

◆ d0() [3/3]

double MdcSegInfoCsmc::d0 ( ) const
inline

◆ parIsAngle() [1/3]

bool MdcSegInfoCsmc::parIsAngle ( int i) const
virtual

Implements MdcSegInfo.

Definition at line 30 of file MdcSegInfoCsmc.cxx.

30 {
31 //---------------------------------------------------------------------------
32 assert( i >= 0 && i < 2 );
33 return ( 0 != i ); // i.e., parameter 1 is an angle
34}

◆ parIsAngle() [2/3]

bool MdcSegInfoCsmc::parIsAngle ( int i) const
virtual

Implements MdcSegInfo.

◆ parIsAngle() [3/3]

bool MdcSegInfoCsmc::parIsAngle ( int i) const
virtual

Implements MdcSegInfo.

◆ phi0() [1/3]

double MdcSegInfoCsmc::phi0 ( ) const
inline

◆ phi0() [2/3]

double MdcSegInfoCsmc::phi0 ( ) const
inline

◆ phi0() [3/3]

double MdcSegInfoCsmc::phi0 ( ) const
inline

◆ sigD0() [1/3]

double MdcSegInfoCsmc::sigD0 ( ) const

Definition at line 111 of file MdcSegInfoCsmc.cxx.

111 {
112 //------------------------------------------------------------------
113 return sqrt( _errmat[0] );
114}

Referenced by MdcSegGrouperCsmc::incompWithSeg().

◆ sigD0() [2/3]

double MdcSegInfoCsmc::sigD0 ( ) const

◆ sigD0() [3/3]

double MdcSegInfoCsmc::sigD0 ( ) const

◆ sigPhi0() [1/3]

double MdcSegInfoCsmc::sigPhi0 ( ) const

Definition at line 106 of file MdcSegInfoCsmc.cxx.

106 {
107 //------------------------------------------------------------------
108 return sqrt( _errmat[2] );
109}

Referenced by MdcSegGrouperCsmc::incompWithSeg().

◆ sigPhi0() [2/3]

double MdcSegInfoCsmc::sigPhi0 ( ) const

◆ sigPhi0() [3/3]

double MdcSegInfoCsmc::sigPhi0 ( ) const

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