3#include "MdcData/MdcHitOnTrack.h"
4#include "MdcData/MdcHit.h"
5#include "MdcGeom/BesAngle.h"
6#include "MdcGeom/Constants.h"
9#include "MdcGeom/EntranceAngle.h"
10#include "MdcGeom/MdcLayer.h"
11#include "MdcGeom/MdcSWire.h"
12#include "TrkBase/TrkDifTraj.h"
13#include "TrkBase/TrkPoca.h"
14#include "TrkBase/TrkRecoTrk.h"
15#include "TrkBase/TrkRep.h"
16#include "TrkBase/TrkSimpTraj.h"
99 _hitTraj = hot._hitTraj;
100 _fitTime = hot._fitTime;
101 _drift[0] = hot._drift[0];
102 _drift[1] = hot._drift[1];
103 _startLen = hot._startLen;
104 _endLen = hot._endLen;
105 _dHit = ( hb == 0 ? hot._dHit : hb );
134 if ( dca < 0 &&
ambig() >= 0 )
139 else if ( dca > 0 &&
ambig() <= 0 )
144 else {
return false; }
150 static Hep3Vector dir;
155 return BesAngle( dir.phi() - pos.phi() );
159 static Hep3Vector dir;
168 double angle =
EntranceAngle( dir.phi() - _dHit->phi( pos.z() ) );
219#ifdef MDCPATREC_DEBUG
220 std::cout <<
" ErrMsg(warning) "
221 <<
"MdcHitOnTrack::updateMeasurement failed " <<
status << std::endl;
225 assert(
_poca != 0 );
226 double dca =
_poca->doca();
231 assert(
ambig() != 0 );
234 if ( forceIteration || !driftCurrent() )
237 forceIteration =
true;
243void MdcHitOnTrack::updateCorrections() {
245 assert( tkRep != 0 );
247 static Hep3Vector dir;
265 double dist = _dHit->
driftDist( tof, wireAmb, eAngle, dAngle, z );
280 double newSig = _dHit->
sigma( dist, wireAmb, eAngle, dAngle, z );
286double MdcHitOnTrack::driftVelocity()
const {
288 assert( tkRep != 0 );
291 static Hep3Vector dir;
298 int wireAmb = fabs( eAngle ) <
Constants::pi / 2 ? _ambig : -_ambig;
300 static const double epsilon = 0.5e-9;
301 double dist1 = _dHit->driftDist( tof +
epsilon, wireAmb, eAngle, dAngle, z );
302 double dist2 = _dHit->driftDist( tof -
epsilon, wireAmb, eAngle, dAngle, z );
304 return ( dist2 - dist1 ) / ( 2 *
epsilon );
308 double v = driftVelocity();
309 if (
v <= 0 )
return false;
316 double tresid( -1.0 );
364 static Hep3Vector dir;
369 double wireAmb =
ambig();
370 if (
mdcHit()->isCosmicFit() )
373 if ( pos.y() > poca.y() )
375 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)
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 TrkRep * getParentRep() const
friend class TrkBase::Functors::updateMeasurement
const TrkDifTraj * _trkTraj
const TrkDifTraj * trkTraj() const
const TrkErrCode & status() const
virtual HepPoint3D position(double fltL) const
virtual double arrivalTime(double fltL) const
TrkRecoTrk * parentTrack()