104 _hitTraj = hot._hitTraj;
105 _fitTime = hot._fitTime;
106 _drift[0] = hot._drift[0];
107 _drift[1] = hot._drift[1];
108 _startLen = hot._startLen;
109 _endLen = hot._endLen;
110 _dHit = (hb==0?hot._dHit:hb);
119 _fitTime= _dHit->rawTime()-t0*1e-9;
145 if (dca < 0 &&
ambig() >= 0) {
147 }
else if (dca > 0 &&
ambig() <= 0) {
163 static Hep3Vector dir;
168 return BesAngle(dir.phi() - pos.phi());
174 static Hep3Vector dir;
185 double angle =
EntranceAngle(dir.phi() - _dHit->phi(pos.z()));
237#ifdef MDCPATREC_DEBUG
238 std::cout<<
" ErrMsg(warning) " <<
"MdcHitOnTrack::updateMeasurement failed " <<
status << std::endl;
243 double dca=
_poca->doca();
251 if (forceIteration || !driftCurrent() ) {
256 return !forceIteration?
status:
261MdcHitOnTrack::updateCorrections()
283 double dist = _dHit->
driftDist(tof, wireAmb, eAngle, dAngle, z);
289 assert( driftCurrent() );
291 double newSig = _dHit->
sigma(dist, wireAmb, eAngle, dAngle, z);
298MdcHitOnTrack::driftVelocity()
const
312 static const double epsilon = 0.5e-9;
313 double dist1 = _dHit->driftDist(tof+
epsilon, wireAmb, eAngle, dAngle, z);
314 double dist2 = _dHit->driftDist(tof-
epsilon, wireAmb, eAngle, dAngle, z);
316 return (dist2-dist1)/(2*
epsilon);
322 double v = driftVelocity();
323 if (
v <= 0)
return false;
344 return _dHit->whatView();
350 return _dHit->layernumber();
356 return _dHit->layer();
362 return _dHit->wirenumber();
368 return _dHit->whichView();
374 return _dHit->rawTime();
380 return _dHit->charge();
420 static Hep3Vector dir;
425 double wireAmb =
ambig();
426 if (
mdcHit()->isCosmicFit()){
428 if ( pos.y() > poca.y()){
429 wireAmb = -1.*_ambig;
HepGeom::Point3D< double > HepPoint3D
**********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
HepGeom::Point3D< double > HepPoint3D
virtual const MdcHit * mdcHit() const
void changeBase(MdcHit *newBase)
bool isBeyondEndflange() const
virtual bool timeAbsolute(double &t, double &tErr) const
virtual const Trajectory * hitTraj() const
unsigned layerNumber() const
double entranceAngleHit() const
bool updateAmbiguity(double dca)
virtual bool timeResid(double &t, double &tErr) const
virtual const MdcHitOnTrack * mdcHitOnTrack() const
virtual unsigned status() const =0
TrkEnums::TrkViewInfo whatView() const
const MdcHit * baseHit() const
double entranceAngle() const
const MdcLayer * layer() const
MdcHitOnTrack(const TrkFundHit &fundHit, const MdcHit &baseHit, int ambig, double fittime)
double driftTime(double tof, double z) const
double sigma(double, int, double, double, double) const
double driftDist(double, int, double, double, double) const
virtual void getInfo(double fltLen, HepPoint3D &pos, Hep3Vector &direction) const =0
virtual Hep3Vector direction(double) const =0
virtual const TrkDifTraj & traj() const =0
void setHitResid(double newResid)
friend class TrkBase::Functors::updateMeasurement
TrkErrCode updatePoca(const TrkDifTraj *trkTraj, bool maintainAmbiguity)
void setHitRms(double newRms)
void setUsability(int usability)
double resid(bool exclude=false) const
TrkHitOnTrk(const TrkFundHit *, double tolerance)
const TrkDifTraj * _trkTraj
const TrkRep * getParentRep() const
const TrkDifTraj * trkTraj() const
const TrkErrCode & status() const
virtual HepPoint3D position(double fltL) const
virtual double arrivalTime(double fltL) const
TrkRecoTrk * parentTrack()