BOSS 7.0.7
BESIII Offline Software System
Loading...
Searching...
No Matches
NeutTraj Class Reference

#include <NeutTraj.h>

+ Inheritance diagram for NeutTraj:

Public Member Functions

 NeutTraj (const NeutParams &, double lowlim=-99999., double hilim=99999., const HepPoint3D &refpoint=_theOrigin)
 
 NeutTraj (const NeutTraj &)
 
NeutTrajclone () const
 
virtual ~NeutTraj ()
 
NeutTrajoperator= (const NeutTraj &)
 
virtual HepPoint3D position (double fltLen) const
 
virtual Hep3Vector direction (double fltLen) const
 
virtual Hep3Vector delDirect (double) const
 
void getInfo (double fltLen, HepPoint3D &pos, Hep3Vector &dir) const
 
void getInfo (double fltLen, HepPoint3D &, Hep3Vector &dir, Hep3Vector &delDir) const
 
void getDFInfo (double fltLen, DifPoint &, DifVector &dir, DifVector &delDir) const
 
virtual double distTo1stError (double s, double tol, int pathDir) const
 
virtual double distTo2ndError (double s, double tol, int pathDir) const
 
NeutParamsparams ()
 
const NeutParamsparams () const
 
int nPar () const
 
double curvature (double fltLen) const
 
HepMatrix derivDeflect (double fltlen, deflectDirection) const
 
HepMatrix derivDisplace (double fltlen, deflectDirection idir) const
 
HepMatrix derivPFract (double fltlen) const
 
TranslateParams paramFunction () const
 
void invertParams (TrkParams *newparams, std::vector< bool > &flags) const
 
TrkSimpTrajinvert ()
 
virtual void visitAccept (TrkVisitor *vis) const
 
- Public Member Functions inherited from TrkSimpTraj
 TrkSimpTraj (const HepVector &params, const HepSymMatrix &cov, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin)
 
 TrkSimpTraj (const TrkParams &params, const double startRange=-99999., const double endRange=99999., const HepPoint3D &refpoint=_theOrigin)
 
virtual ~TrkSimpTraj ()
 
virtual TrkSimpTrajclone () const =0
 
TrkParamsparameters ()
 
const TrkParamsparameters () const
 
virtual const TrkSimpTrajlocalTrajectory (double fltLen, double &localFlt) const
 
const HepPoint3DreferencePoint () const
 
virtual void print (std::ostream &os) const
 
virtual void printAll (std::ostream &os) const
 
virtual int nPar () const
 
void changePoint (const HepPoint3D &newpoint, double &fltlen)
 
void setPoint (const HepPoint3D &newpoint)
 
TrkSimpTrajinvert ()
 
virtual void invertParams (TrkParams *newparams, std::vector< bool > &flags) const =0
 
virtual TranslateParams paramFunction () const =0
 
virtual void visitAccept (TrkVisitor *vis) const =0
 
bool operator== (const TrkSimpTraj &) const
 
- Public Member Functions inherited from TrkDifTraj
 TrkDifTraj (const double lowlim=-99999., const double hilim=99999.)
 
virtual ~TrkDifTraj ()
 
virtual void getDFInfo (double fltLen, DifPoint &pos, DifVector &direction, DifVector &delDirect) const =0
 
virtual void getDFInfo2 (double fltLen, DifPoint &pos, DifVector &direction) const
 
virtual const TrkSimpTrajlocalTrajectory (double fltLen, double &localFlt) const =0
 
- Public Member Functions inherited from Trajectory
 Trajectory (double lowlim, double hilim)
 
virtual ~Trajectory ()
 
virtual HepPoint3D position (double) const =0
 
virtual Hep3Vector direction (double) const =0
 
virtual Hep3Vector delDirect (double) const =0
 
virtual double curvature (double) const =0
 
virtual void getInfo (double fltLen, HepPoint3D &pos, Hep3Vector &direction) const =0
 
virtual void getInfo (double fltLen, HepPoint3D &pos, Hep3Vector &direction, Hep3Vector &delDirect) const =0
 
double distTo0thError (double s, double tol, int pathDir) const
 
virtual double distTo1stError (double s, double tol, int pathDir) const =0
 
virtual double distTo2ndError (double s, double tol, int pathDir) const =0
 
virtual Trajectoryclone () const =0
 
bool validFlightDistance (double f, double tolerance=0.0) const
 
virtual void setFlightRange (double newrange[2])
 
double lowRange () const
 
double hiRange () const
 
double range () const
 
virtual void print (std::ostream &os) const
 
virtual void printAll (std::ostream &os) const
 
virtual HepMatrix derivDeflect (double fltlen, deflectDirection idir) const =0
 
virtual HepMatrix derivDisplace (double fltlen, deflectDirection idir) const =0
 
virtual HepMatrix derivPFract (double fltlen) const =0
 

Additional Inherited Members

- Static Public Attributes inherited from TrkSimpTraj
static HepPoint3D _theOrigin
 
- Protected Member Functions inherited from Trajectory
Trajectoryoperator= (const Trajectory &)
 
- Protected Attributes inherited from TrkSimpTraj
TrkParams _dtparams
 
HepPoint3D _refpoint
 
- Protected Attributes inherited from Trajectory
double flightrange [2]
 

Detailed Description

Definition at line 25 of file NeutTraj.h.

Constructor & Destructor Documentation

◆ NeutTraj() [1/2]

NeutTraj::NeutTraj ( const NeutParams np,
double  lowlim = -99999.,
double  hilim = 99999.,
const HepPoint3D refpoint = _theOrigin 
)

Definition at line 16 of file NeutTraj.cxx.

17 :
18 TrkSimpTraj(np.parameter(), np.covariance(), lowlim,hilim)
19{
20}
HepVector & parameter()
Definition: DifIndepPar.h:51
HepSymMatrix & covariance()
Definition: TrkParams.h:54

◆ NeutTraj() [2/2]

NeutTraj::NeutTraj ( const NeutTraj n)

Definition at line 22 of file NeutTraj.cxx.

24 n.lowRange(),n.hiRange())
25{
26}
double lowRange() const
Definition: Trajectory.h:91
double hiRange() const
Definition: Trajectory.h:92
TrkParams * parameters()
Definition: TrkSimpTraj.h:80

◆ ~NeutTraj()

NeutTraj::~NeutTraj ( )
virtual

Definition at line 47 of file NeutTraj.cxx.

47 {
48}

Member Function Documentation

◆ clone()

NeutTraj * NeutTraj::clone ( ) const
virtual

Implements TrkSimpTraj.

Definition at line 30 of file NeutTraj.cxx.

31{
32 return new NeutTraj(*this);
33}

◆ curvature()

double NeutTraj::curvature ( double  fltLen) const
inlinevirtual

Implements Trajectory.

Definition at line 62 of file NeutTraj.h.

62{return 0.;}

◆ delDirect()

Hep3Vector NeutTraj::delDirect ( double  fltLen) const
virtual

Implements Trajectory.

Definition at line 93 of file NeutTraj.cxx.

93 {
94//-----------------------------------------------------------------
95 return Hep3Vector(0.0, 0.0, 0.0);
96}

Referenced by getInfo().

◆ derivDeflect()

HepMatrix NeutTraj::derivDeflect ( double  fltlen,
deflectDirection  idirect 
) const
virtual

Implements TrkKalDeriv.

Definition at line 172 of file NeutTraj.cxx.

173{
174//
175// This function computes the column matrix of derivatives for the change
176// in parameters for a change in the direction of a track at a point along
177// its flight, holding the momentum and position constant. The effects for
178// changes in 2 perpendicular directions (theta1 = dip and
179// theta2 = phi*cos(dip)) can sometimes be added, as scattering in these
180// are uncorrelated.
181//
182 HepMatrix ddflct(NeutParams::_nneutprm,1);
183//
184// Compute some common things
185//
186 double tand = tanDip();
187 double cosd = cosDip();
188//
189// Go through the parameters
190//
191 switch (idirect) {
192 case theta1:
193 ddflct[NeutParams::_p][0] = 0.;
194 ddflct[NeutParams::_tanDip][0] = 1.0/(cosd*cosd);
195 ddflct[NeutParams::_d0][0] = 0.;
196 ddflct[NeutParams::_phi0][0] = 0.;
197 ddflct[NeutParams::_s0][0] = 0.;
198 ddflct[NeutParams::_z0][0] = translen(fltlen) * (-1. - (tand*tand));
199 break;
200 case theta2:
201 ddflct[NeutParams::_p][0] = 0;
202 ddflct[NeutParams::_tanDip][0] = 0;
203 ddflct[NeutParams::_d0][0] = -translen(fltlen)/cosd;
204 ddflct[NeutParams::_phi0][0] = 1./cosd;
205 ddflct[NeutParams::_z0][0] = 0.;
206 ddflct[NeutParams::_s0][0] = 0.;
207 break;
208 }
209 return ddflct;
210}
@ theta2
Definition: TrkKalDeriv.h:24
@ theta1
Definition: TrkKalDeriv.h:24

◆ derivDisplace()

HepMatrix NeutTraj::derivDisplace ( double  fltlen,
deflectDirection  idir 
) const
virtual

Implements TrkKalDeriv.

Definition at line 213 of file NeutTraj.cxx.

214{
215//
216// This function computes the column matrix of derivatives for the change
217// in parameters for a change in the transvers position of a track at a point along
218// its flight, holding the momentum and direction constant. The effects for
219// changes in 2 perpendicular directions (theta1 = dip and
220// theta2 = phi*cos(dip)) are uncorrelated. The sign convention has been
221// chosen so that correlated scattering and displacement effects may be added
222//
223 HepMatrix ddflct(NeutParams::_nneutprm,1);
224//
225// Compute some common things
226//
227 double cosd = cosDip();
228//
229// Go through the parameters
230//
231 switch (idirect) {
232 case theta1:
233 ddflct[NeutParams::_p][0] = 0.;
234 ddflct[NeutParams::_tanDip][0] = 0.0;
235 ddflct[NeutParams::_d0][0] = 0.;
236 ddflct[NeutParams::_phi0][0] = 0.;
237 ddflct[NeutParams::_s0][0] = 0.;
238 ddflct[NeutParams::_z0][0] = 1.0/cosd;
239 break;
240 case theta2:
241 ddflct[NeutParams::_p][0] = 0;
242 ddflct[NeutParams::_tanDip][0] = 0;
243 ddflct[NeutParams::_d0][0] = 1.0;
244 ddflct[NeutParams::_phi0][0] = 0.0;
245 ddflct[NeutParams::_z0][0] = 0.;
246 ddflct[NeutParams::_s0][0] = 0.;
247 break;
248 }
249 return ddflct;
250}

◆ derivPFract()

HepMatrix NeutTraj::derivPFract ( double  fltlen) const
virtual

Implements TrkKalDeriv.

Definition at line 253 of file NeutTraj.cxx.

254{
255// This function computes the column matrix of derivatives for the change
256// in parameters from a (fractional) change in the track momentum,
257// holding the direction and position constant. The momentum change can
258// come from energy loss or bfield inhomogeneities.
259//
260// For a helix, dp/P = -domega/omega,
261// dParam/d(domega/omega) = -omega*dParam/ddomega
262//
263 HepMatrix dmomfrac(NeutParams::_nneutprm,1);
264
265// Go through the parameters
266 dmomfrac[NeutParams::_p][0] = p(); // momentum
267 dmomfrac[NeutParams::_tanDip][0] = 0.0; // tanDip
268 dmomfrac[NeutParams::_d0][0] = 0.0; // d0
269 dmomfrac[NeutParams::_phi0][0] = 0.0; // phi0
270 dmomfrac[NeutParams::_z0][0] = 0.0; // z0
271 dmomfrac[NeutParams::_s0][0] = 0.0; // s0
272 return dmomfrac;
273}

◆ direction()

Hep3Vector NeutTraj::direction ( double  fltLen) const
virtual

Implements Trajectory.

Definition at line 86 of file NeutTraj.cxx.

86 {
87//-----------------------------------------------------------------
88 return Hep3Vector ( cos(phi0())*cosDip(), sin(phi0())*cosDip(),
89 sinDip() );
90}
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213

Referenced by getInfo().

◆ distTo1stError()

double NeutTraj::distTo1stError ( double  s,
double  tol,
int  pathDir 
) const
virtual

Implements Trajectory.

Definition at line 100 of file NeutTraj.cxx.

100 {
101//-----------------------------------------------------------------
102 return 9999.;
103}

◆ distTo2ndError()

double NeutTraj::distTo2ndError ( double  s,
double  tol,
int  pathDir 
) const
virtual

Implements Trajectory.

Definition at line 107 of file NeutTraj.cxx.

107 {
108//-----------------------------------------------------------------
109 return 9999.;
110}

◆ getDFInfo()

void NeutTraj::getDFInfo ( double  fltLen,
DifPoint pos,
DifVector dir,
DifVector delDir 
) const
virtual

Implements TrkDifTraj.

Definition at line 132 of file NeutTraj.cxx.

134{
135 //Provides difNum version of information for calculation of derivatives.
136 // Some of this duplicate code could be reduced if we had member
137 // function templates. Maybe.
138
139 // Create difNumber versions of parameters
140 //enum index (phi0(), etc) is from HelixParams.hh
146 // RF 03/25/99
147 // the flight lenght has an error, which is the error along the trajectory
148 // in the creation point
150 phi0Df.setIndepPar( parameters() );
151 d0Df.setIndepPar( parameters() );
152 z0Df.setIndepPar( parameters() );
153 tanDipDf.setIndepPar( parameters() );
154 pDf.setIndepPar( parameters() );
155 s0Df.setIndepPar( parameters() );
156 DifNumber dipDf = atan(tanDipDf);
157
158 DifNumber sDip, cDip;
159 dipDf.cosAndSin(cDip, sDip);
160 DifNumber sinPhi0, cosPhi0;
161 phi0Df.cosAndSin(cosPhi0, sinPhi0);
162
163 DifNumber x = cDip*s0Df*cosPhi0 - d0Df*sinPhi0;
164 DifNumber y = cDip*s0Df*sinPhi0 + d0Df*cosPhi0;
165 DifNumber z = z0Df + s0Df*sDip ;
166 pos = DifPoint(x, y, z);
167 dir = DifVector( cosPhi0*cDip, sinPhi0*cDip, sDip );
168 delDir = DifVector(0., 0., 0.);
169}
void cosAndSin(DifNumber &c, DifNumber &s) const
double y[1000]

◆ getInfo() [1/2]

void NeutTraj::getInfo ( double  fltLen,
HepPoint3D pos,
Hep3Vector &  dir,
Hep3Vector &  delDir 
) const
virtual

Implements Trajectory.

Definition at line 113 of file NeutTraj.cxx.

115{
116 // This could be made much more efficient!!!!!!
117 pos = position(fltLen);
118 dir = direction(fltLen);
119 delDir = delDirect(fltLen);
120}
virtual Hep3Vector delDirect(double) const
Definition: NeutTraj.cxx:93
virtual HepPoint3D position(double fltLen) const
Definition: NeutTraj.cxx:73
virtual Hep3Vector direction(double fltLen) const
Definition: NeutTraj.cxx:86

◆ getInfo() [2/2]

void NeutTraj::getInfo ( double  fltLen,
HepPoint3D pos,
Hep3Vector &  dir 
) const
virtual

Implements Trajectory.

Definition at line 123 of file NeutTraj.cxx.

124{
125 // This could be made much more efficient!!!!!
126 pos = position(fltLen);
127 dir = direction(fltLen);
128 return;
129}

◆ invert()

TrkSimpTraj & NeutTraj::invert ( )

◆ invertParams()

void NeutTraj::invertParams ( TrkParams newparams,
std::vector< bool > &  flags 
) const
virtual

Implements TrkSimpTraj.

Definition at line 338 of file NeutTraj.cxx.

339{
340 assert(1==0);
341
342// // Inverts parameters and returns true if the parameter inversion
343// // requires a change in sign of elements in the covariance matrix
344//
345// for (unsigned iparam = 0; iparam < NeutParams::_nneutprm; iparam++) {
346// switch ( iparam ) {
347// case NeutParams::_d0: // changes sign
348// case NeutParams::_tanDip: // changes sign
349// newparams->parameter()[iparam] *= -1.0;
350// flags[iparam] = true;
351// break;
352// case NeutParams::_phi0: // changes by pi, but covariance
353// // matrix shouldn't changed
354// newparams->parameter()[iparam] =
355// BesAngle(newparams->parameter()[iparam] + Constants::pi);
356// flags[iparam] = false;
357// break;
358// case NeutParams::_p: // no change sign
359// case NeutParams::_z0: // no change
360// flags[iparam] = false;
361// }
362// }
363// return;
364}

◆ nPar()

int NeutTraj::nPar ( ) const
inlinevirtual

Reimplemented from TrkSimpTraj.

Definition at line 57 of file NeutTraj.h.

57{return params().nPar();}
int nPar() const
Definition: DifIndepPar.h:55
NeutParams & params()
Definition: NeutTraj.h:54

◆ operator=()

NeutTraj & NeutTraj::operator= ( const NeutTraj n)

Definition at line 36 of file NeutTraj.cxx.

37{
38 if( &n != this ){
39 for(int iend=0;iend<2;iend++)
40 flightrange[iend] = n.flightrange[iend];
41 _dtparams = *n._np();
42 }
43 return *this;
44}
double flightrange[2]
Definition: Trajectory.h:83
TrkParams _dtparams
Definition: TrkSimpTraj.h:117

◆ paramFunction()

TranslateParams NeutTraj::paramFunction ( ) const
inlinevirtual

Implements TrkSimpTraj.

Definition at line 67 of file NeutTraj.h.

67{ return NeutTraj::paramFunc; }

◆ params() [1/2]

NeutParams & NeutTraj::params ( )
inline

Definition at line 54 of file NeutTraj.h.

54{return *_np();}

Referenced by nPar(), and TrkCompTrk::print().

◆ params() [2/2]

const NeutParams & NeutTraj::params ( ) const
inline

Definition at line 55 of file NeutTraj.h.

55{return *_np();}

◆ position()

HepPoint3D NeutTraj::position ( double  fltLen) const
virtual

Implements Trajectory.

Definition at line 73 of file NeutTraj.cxx.

73 {
74//-----------------------------------------------------------------
75 double cdip = cosDip();
76 double sphi0 = sin(phi0());
77 double cphi0 = cos(phi0());
78
79 return HepPoint3D(cdip * f * cphi0 - d0()*sphi0,
80 cdip * f * sphi0 + d0()*cphi0,
81 z0() + f * tanDip() * cdip);
82}
HepGeom::Point3D< double > HepPoint3D
Definition: NeutTraj.h:11
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")

Referenced by getInfo().

◆ visitAccept()

void NeutTraj::visitAccept ( TrkVisitor vis) const
virtual

Implements TrkSimpTraj.

Definition at line 367 of file NeutTraj.cxx.

368{
369// Visitor access--just use the Visitor class member function
370 vis->trkVisitNeutTraj(this);
371}
virtual void trkVisitNeutTraj(const NeutTraj *)=0

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