Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

MdcHitOnTrack Class Reference

#include <MdcHitOnTrack.h>

Inheritance diagram for MdcHitOnTrack:

TrkHitOnTrk TrkHitOnTrk MdcRecoHitOnTrack MdcRecoHitOnTrack List of all members.

Public Types

typedef std::unary_function<
TrkHitOnTrk, bool
predicate_type
typedef std::unary_function<
TrkHitOnTrk, bool
predicate_type

Public Member Functions

int ambig () const
int ambig () const
double charge () const
double charge () const
virtual TrkHitOnTrkclone (TrkRep *parentRep, const TrkDifTraj *trkTraj=0) const =0
virtual TrkHitOnTrkclone (TrkRep *parentRep, const TrkDifTraj *trkTraj=0) const =0
double dcaToWire () const
double dcaToWire () const
double dipAngle () const
double dipAngle () const
double drift (double dca) const
double drift () const
double drift (double dca) const
double drift () const
double entranceAngle () const
double entranceAngle () const
double entranceAngleHit () const
double entranceAngleHit () const
double fitTime () const
double fitTime () const
double fltLen () const
double fltLen () const
TrkErrCode getFitStuff (double &deltaChi) const
TrkErrCode getFitStuff (HepVector &derivs, double &deltaChi) const
TrkErrCode getFitStuff (double &deltaChi) const
TrkErrCode getFitStuff (HepVector &derivs, double &deltaChi) const
const TrkRepgetParentRep () const
const TrkRepgetParentRep () const
const TrkRecoTrkgetParentTrack () const
const TrkRecoTrkgetParentTrack () const
bool hasResidual () const
bool hasResidual () const
TrkFundHithit ()
const TrkFundHithit () const
TrkFundHithit ()
const TrkFundHithit () const
double hitLen () const
double hitLen () const
double hitRms () const
double hitRms () const
virtual const TrajectoryhitTraj () const
virtual const TrajectoryhitTraj () const
bool isActive () const
bool isActive () const
bool isUsable () const
bool isUsable () const
const MdcLayerlayer () const
const MdcLayerlayer () const
unsigned layerNumber () const
int layernumber () const
unsigned layerNumber () const
int layernumber () const
virtual const MdcHitmdcHit () const
virtual const MdcHitmdcHit () const
virtual const MdcHitOnTrackmdcHitOnTrack () const
 MdcHitOnTrack (const TrkFundHit &fundHit, const MdcHit &baseHit, int ambig, double fittime)
virtual const MdcHitOnTrackmdcHitOnTrack () const
 MdcHitOnTrack (const TrkFundHit &fundHit, const MdcHit &baseHit, int ambig, double fittime)
bool mustUse () const
bool mustUse () const
bool operator< (const TrkHitOnTrk &rhs) const
bool operator< (const TrkHitOnTrk &rhs) const
bool operator== (const TrkHitOnTrk &) const
bool operator== (const TrkHitOnTrk &) const
TrkRecoTrkparentTrack () const
TrkRecoTrkparentTrack () const
PdtPid::PidType particleType () const
PdtPid::PidType particleType () const
virtual void print (std::ostream &) const
virtual void print (std::ostream &) const
virtual void printAll (std::ostream &) const
virtual void printAll (std::ostream &) const
double rawTime () const
double rawTime () const
bool resid (double &resid, double &residErr, bool exclude=false) const
double resid (bool exclude=false) const
bool resid (double &resid, double &residErr, bool exclude=false) const
double resid (bool exclude=false) const
double residual () const
double residual () const
void setActivity (bool turnOn)
void setActivity (bool turnOn)
void setAmbig (int a)
void setAmbig (int a)
void setFltLen (double f)
void setFltLen (double f)
void setHitRms (double newRms)
void setHitRms (double newRms)
void setT0 (double t0)
void setT0 (double t0)
void setUsability (int usability)
void setUsability (int usability)
virtual unsigned status () const =0
virtual unsigned status () const =0
virtual const SvtHitOnTrack * svtHitOnTrack () const
virtual const SvtHitOnTrack * svtHitOnTrack () const
virtual unsigned tdcIndex () const =0
virtual unsigned tdcIndex () const =0
virtual bool timeAbsolute (double &t, double &tErr) const
virtual bool timeAbsolute (double &t, double &tErr) const
virtual bool timeResid (double &t, double &tErr) const
virtual bool timeResid (double &t, double &tErr) const
const TrkDifTrajtrkTraj () const
const TrkDifTrajtrkTraj () const
double weight () const
double weight () const
TrkEnums::TrkViewInfo whatView () const
TrkEnums::TrkViewInfo whatView () const
int whichView () const
int whichView () const
int wire () const
int wire () const
int wireAmbig () const
int wireAmbig () const
virtual ~MdcHitOnTrack ()
virtual ~MdcHitOnTrack ()

Protected Member Functions

const MdcHitbaseHit () const
const MdcHitbaseHit () const
void changeBase (MdcHit *newBase)
void changeBase (MdcHit *newBase)
bool isBeyondEndflange () const
bool isBeyondEndflange () const
 MdcHitOnTrack (const MdcHitOnTrack &hitToBeCopied, TrkRep *newRep, const TrkDifTraj *trkTraj, const MdcHit *hb=0)
 MdcHitOnTrack (const TrkFundHit *baseHit, int ambig, double fittime, int layer, int wire)
 MdcHitOnTrack (const MdcHitOnTrack &hitToBeCopied, TrkRep *newRep, const TrkDifTraj *trkTraj, const MdcHit *hb=0)
 MdcHitOnTrack (const TrkFundHit *baseHit, int ambig, double fittime, int layer, int wire)
TrkRepparentRep () const
TrkRepparentRep () const
void setHitLen (double h)
void setHitLen (double h)
void setHitResid (double newResid)
void setHitResid (double newResid)
void setUnusedHit ()
void setUnusedHit ()
void setUsedHit ()
void setUsedHit ()
bool updateAmbiguity (double dca)
bool updateAmbiguity (double dca)
virtual TrkErrCode updateMeasurement (const TrkDifTraj *traj, bool maintainAmbiguity)
virtual TrkErrCode updateMeasurement (const TrkDifTraj *traj, bool maintainAmbiguity)
TrkErrCode updatePoca (const TrkDifTraj *trkTraj, bool maintainAmbiguity)
TrkErrCode updatePoca (const TrkDifTraj *trkTraj, bool maintainAmbiguity)

Protected Attributes

double _hitLen
double _hitRms
bool _isActive
int _isUsable
TrkRep_parentRep
TrkRep_parentRep
TrkPoca_poca
TrkPoca_poca
double _resid
TrkFundHit_theHit
TrkFundHit_theHit
double _tolerance
double _trkLen
const TrkDifTraj_trkTraj
const TrkDifTraj_trkTraj

Private Member Functions

bool driftCurrent () const
bool driftCurrent () const
double driftVelocity () const
double driftVelocity () const
 MdcHitOnTrack (const MdcHitOnTrack &)
 MdcHitOnTrack (const MdcHitOnTrack &)
MdcHitOnTrackoperator= (const MdcHitOnTrack &)
MdcHitOnTrackoperator= (const MdcHitOnTrack &)
void updateCorrections ()
void updateCorrections ()

Private Attributes

int _ambig
const MdcHit_dHit
const MdcHit_dHit
double _drift [2]
double _endLen
double _fitTime
const Trajectory_hitTraj
const Trajectory_hitTraj
double _startLen

Friends

class TrkBase::Functors::setActive
class TrkBase::Functors::setParent
class TrkBase::Functors::updateMeasurement

Member Typedef Documentation

typedef std::unary_function<TrkHitOnTrk,bool> TrkHitOnTrk::predicate_type [inherited]
 

typedef std::unary_function<TrkHitOnTrk,bool> TrkHitOnTrk::predicate_type [inherited]
 


Constructor & Destructor Documentation

MdcHitOnTrack::MdcHitOnTrack const TrkFundHit fundHit,
const MdcHit baseHit,
int  ambig,
double  fittime
 

00027 : TrkHitOnTrk(&fundHit,10.e-4),
00028   _ambig(ambig),
00029   _hitTraj(baseHit.hitTraj()),  
00030   _fitTime(baseHit.rawTime()-t0*1e-9),
00031   _dHit(&baseHit)
00032 {
00033   // need to flag somehow that that we haven't computed things yet...
00034   //   now, we know that _drift[0] is for ambig <0, and _drift[1] is ambig >0
00035   //   and _drift is signed according to ambig. Thus _drift[0] should be -tive
00036   //   and _drift[1] should be +tive. To indicate this are not yet initialized,
00037   //   put 'impossible' values here...
00038   _drift[0] = +9999;
00039   _drift[1] = -9999;
00040   setHitResid(-21212121.0);
00041   setHitRms( 0.02 );
00042   setHitLen(0.5 * baseHit.layer()->zLength());
00043   setFltLen(0.);
00044   _startLen = hitTraj()->lowRange() - 5.;
00045   _endLen   = hitTraj()->hiRange()  + 5.;
00046 }

MdcHitOnTrack::~MdcHitOnTrack  )  [virtual]
 

00091 { ; }

MdcHitOnTrack::MdcHitOnTrack const TrkFundHit baseHit,
int  ambig,
double  fittime,
int  layer,
int  wire
[protected]
 

MdcHitOnTrack::MdcHitOnTrack const MdcHitOnTrack hitToBeCopied,
TrkRep newRep,
const TrkDifTraj trkTraj,
const MdcHit hb = 0
[protected]
 

00078 : TrkHitOnTrk(hot,newRep,trkTraj)
00079 {
00080   _ambig = hot._ambig;
00081   _hitTraj  = hot._hitTraj;
00082   _fitTime  = hot._fitTime;
00083   _drift[0] = hot._drift[0];
00084   _drift[1] = hot._drift[1];
00085   _startLen = hot._startLen;
00086   _endLen   = hot._endLen;
00087   _dHit = (hb==0?hot._dHit:hb);
00088 }

MdcHitOnTrack::MdcHitOnTrack const MdcHitOnTrack  )  [private]
 

MdcHitOnTrack::MdcHitOnTrack const TrkFundHit fundHit,
const MdcHit baseHit,
int  ambig,
double  fittime
 

virtual MdcHitOnTrack::~MdcHitOnTrack  )  [virtual]
 

MdcHitOnTrack::MdcHitOnTrack const TrkFundHit baseHit,
int  ambig,
double  fittime,
int  layer,
int  wire
[protected]
 

MdcHitOnTrack::MdcHitOnTrack const MdcHitOnTrack hitToBeCopied,
TrkRep newRep,
const TrkDifTraj trkTraj,
const MdcHit hb = 0
[protected]
 

MdcHitOnTrack::MdcHitOnTrack const MdcHitOnTrack  )  [private]
 


Member Function Documentation

int MdcHitOnTrack::ambig  )  const [inline, virtual]
 

Reimplemented from TrkHitOnTrk.

00059 { return _ambig; }  // wire wrt track direction

int MdcHitOnTrack::ambig  )  const [inline, virtual]
 

Reimplemented from TrkHitOnTrk.

00059 { return _ambig; }  // wire wrt track direction

const MdcHit* MdcHitOnTrack::baseHit  )  const [inline, protected]
 

00114 { return _dHit; }

const MdcHit* MdcHitOnTrack::baseHit  )  const [inline, protected]
 

00114 { return _dHit; }

void MdcHitOnTrack::changeBase MdcHit newBase  )  [protected]
 

void MdcHitOnTrack::changeBase MdcHit newBase  )  [protected]
 

00347 {
00348   _dHit = newBase;
00349 }

double MdcHitOnTrack::charge  )  const
 

double MdcHitOnTrack::charge  )  const
 

00326 {
00327   return _dHit->charge();
00328 }

virtual TrkHitOnTrk* TrkHitOnTrk::clone TrkRep parentRep,
const TrkDifTraj trkTraj = 0
const [pure virtual, inherited]
 

Implemented in MdcRecoHitOnTrack, TrkBmSpotOnTrk, MdcRecoHitOnTrack, and TrkBmSpotOnTrk.

virtual TrkHitOnTrk* TrkHitOnTrk::clone TrkRep parentRep,
const TrkDifTraj trkTraj = 0
const [pure virtual, inherited]
 

Implemented in MdcRecoHitOnTrack, TrkBmSpotOnTrk, MdcRecoHitOnTrack, and TrkBmSpotOnTrk.

double MdcHitOnTrack::dcaToWire  )  const
 

double MdcHitOnTrack::dcaToWire  )  const
 

00101 {
00102   double dca = -9999.;
00103   if ( getParentRep() == 0 ) {
00104     //     cout << "no parent rep" << endl;
00105     return dca;
00106   }
00107   // WARNING: cannot use the internal _poca, as it lags one iteration
00108   //          behind the fit... therfore use _EXTERNAL_ residual
00109   if (isActive())  {  // FIXME: currently can only use 'resid()' if isActive..
00110     dca = resid()+drift();
00111   } else {
00112     TrkPoca poca(getParentRep()->traj(), fltLen(), *hitTraj(), hitLen(),
00113         _tolerance);
00114     if (poca.status().success()) dca = poca.doca();
00115   }
00116   return dca;
00117 }

double MdcHitOnTrack::dipAngle  )  const
 

double MdcHitOnTrack::dipAngle  )  const
 

00170 {
00171   return getParentRep()==0?0:Constants::pi/2-getParentRep()->traj().direction(fltLen()).theta();
00172 }

double MdcHitOnTrack::drift double  dca  )  const [inline]
 

00069 { return _drift[dca<0?0:1]; }

double MdcHitOnTrack::drift void   )  const [inline]
 

00067                              { return _ambig!=0 ? _drift[_ambig<0 ? 0:1] 
00068       : (_drift[1]-_drift[0])*0.5; }

double MdcHitOnTrack::drift double  dca  )  const [inline]
 

00069 { return _drift[dca<0?0:1]; }

double MdcHitOnTrack::drift  )  const [inline]
 

00067                              { return _ambig!=0 ? _drift[_ambig<0 ? 0:1] 
00068       : (_drift[1]-_drift[0])*0.5; }

bool MdcHitOnTrack::driftCurrent  )  const [inline, private]
 

00122 { return ambig()*_drift[ambig()<0?0:1]>0; }

bool MdcHitOnTrack::driftCurrent  )  const [inline, private]
 

00122 { return ambig()*_drift[ambig()<0?0:1]>0; }

double MdcHitOnTrack::driftVelocity  )  const [private]
 

double MdcHitOnTrack::driftVelocity  )  const [private]
 

00246 {
00247   const TrkRep* tkRep = getParentRep();
00248   assert(tkRep != 0);
00249   double tof =  tkRep->arrivalTime(fltLen());
00250   static HepPoint3D pos; static Hep3Vector dir;
00251   _trkTraj->getInfo(fltLen(), pos, dir);
00252   double eAngle = BesAngle(dir.phi() - pos.phi());
00253   double dAngle =Constants::pi/2 - dir.theta();
00254   double z = pos.z();
00255   // note the special case for INCOMING tracks:
00256   //    wire left of track implies hit on the right side of wire
00257   int wireAmb= fabs(eAngle)<Constants::pi/2?_ambig:-_ambig;
00258 
00259   static const double epsilon = 0.5e-9; // tof are in s;
00260   double dist1 =  _dHit->driftDist(tof+epsilon, wireAmb, eAngle, dAngle, z);
00261   double dist2 =  _dHit->driftDist(tof-epsilon, wireAmb, eAngle, dAngle, z);
00262 
00263   return (dist2-dist1)/(2*epsilon); // velocity in cm/s
00264 }

double MdcHitOnTrack::entranceAngle  )  const
 

double MdcHitOnTrack::entranceAngle  )  const
 

00150 {
00151   static Hep3Vector dir;
00152   static HepPoint3D pos;
00153   if (getParentRep() == 0) return 0.;
00154   getParentRep()->traj().getInfo(fltLen(), pos, dir);
00155 
00156   double angle = dir.phi() - _dHit->phi(-pos.z());
00157   while(angle<-Constants::pi/2.) angle +=Constants::pi;
00158   while(angle>Constants::pi/2.) angle -=Constants::pi;
00159   return angle;
00160 }

double MdcHitOnTrack::entranceAngleHit  )  const
 

double MdcHitOnTrack::entranceAngleHit  )  const
 

00139 {
00140   static Hep3Vector dir;
00141   static HepPoint3D pos;
00142   if (getParentRep() == 0) return 0.;
00143   getParentRep()->traj().getInfo(fltLen(), pos, dir);
00144 
00145   return BesAngle(dir.phi() - pos.phi());
00146 }

double MdcHitOnTrack::fitTime  )  const [inline]
 

00063 { return _fitTime; }

double MdcHitOnTrack::fitTime  )  const [inline]
 

00063 { return _fitTime; }

double TrkHitOnTrk::fltLen  )  const [inline, inherited]
 

00091 {return _trkLen;}

double TrkHitOnTrk::fltLen  )  const [inline, inherited]
 

00091 {return _trkLen;}

TrkErrCode TrkHitOnTrk::getFitStuff double &  deltaChi  )  const [inherited]
 

TrkErrCode TrkHitOnTrk::getFitStuff HepVector &  derivs,
double &  deltaChi
const [inherited]
 

TrkErrCode TrkHitOnTrk::getFitStuff double &  deltaChi  )  const [inherited]
 

00272 {
00273   assert (_trkTraj == &(getParentRep()->traj()));
00274   deltaChi=_resid/hitRms(); // NOTE: use _INTERNAL_ residual
00275   return TrkErrCode(TrkErrCode::succeed);
00276 }

TrkErrCode TrkHitOnTrk::getFitStuff HepVector &  derivs,
double &  deltaChi
const [inherited]
 

00249 {
00250   if (_poca==0 || _poca->status().failure()) {
00251     return TrkErrCode(TrkErrCode::fail);
00252   }
00253   // FIXME: I wish I could tell poca to NOT iterate
00254   //        and ONLY compute the distance & derivatives...
00255   TrkDifPoca poca(*_trkTraj,fltLen(),*hitTraj(), hitLen(),_tolerance);
00256   if (poca.status().failure()) {
00257     return TrkErrCode(TrkErrCode::fail);
00258   }
00259   if (derivs.num_row() != 0) {
00260     poca.fetchDerivs(derivs);
00261   } else {
00262     derivs = poca.derivs();
00263   }
00264   double sigInv = 1. / hitRms();
00265   deltaChi = _resid * sigInv; // NOTE: use _INTERNAL_ residual
00266   derivs *= sigInv;
00267   return TrkErrCode(TrkErrCode::succeed);
00268 }

const TrkRep* TrkHitOnTrk::getParentRep  )  const [inline, inherited]
 

00073 {return _parentRep;}

const TrkRep* TrkHitOnTrk::getParentRep  )  const [inline, inherited]
 

00073 {return _parentRep;}

const TrkRecoTrk* TrkHitOnTrk::getParentTrack  )  const [inherited]
 

const TrkRecoTrk * TrkHitOnTrk::getParentTrack  )  const [inherited]
 

00153 {
00154   return getParentRep()->parentTrack();
00155 }

bool TrkHitOnTrk::hasResidual  )  const [inline, inherited]
 

00104 { return _poca != 0; }

bool TrkHitOnTrk::hasResidual  )  const [inline, inherited]
 

00104 { return _poca != 0; }

TrkFundHit* TrkHitOnTrk::hit void   )  [inline, inherited]
 

00076 {return _theHit;}

const TrkFundHit* TrkHitOnTrk::hit void   )  const [inline, inherited]
 

00075 {return _theHit;}

TrkFundHit* TrkHitOnTrk::hit  )  [inline, inherited]
 

00076 {return _theHit;}

const TrkFundHit* TrkHitOnTrk::hit  )  const [inline, inherited]
 

00075 {return _theHit;}

double TrkHitOnTrk::hitLen  )  const [inline, inherited]
 

00092 {return _hitLen;}

double TrkHitOnTrk::hitLen  )  const [inline, inherited]
 

00092 {return _hitLen;}

double TrkHitOnTrk::hitRms  )  const [inline, inherited]
 

00089 {return _hitRms;}

double TrkHitOnTrk::hitRms  )  const [inline, inherited]
 

00089 {return _hitRms;}

virtual const Trajectory* MdcHitOnTrack::hitTraj  )  const [virtual]
 

Implements TrkHitOnTrk.

const Trajectory * MdcHitOnTrack::hitTraj  )  const [virtual]
 

Implements TrkHitOnTrk.

00332 {
00333   return _hitTraj;
00334 }

bool TrkHitOnTrk::isActive  )  const [inline, inherited]
 

bool TrkHitOnTrk::isActive  )  const [inline, inherited]
 

00200 {return _isActive;}

bool MdcHitOnTrack::isBeyondEndflange  )  const [inline, protected]
 

00107     { return (hitLen() < _startLen || hitLen() > _endLen); }

bool MdcHitOnTrack::isBeyondEndflange  )  const [inline, protected]
 

00107     { return (hitLen() < _startLen || hitLen() > _endLen); }

bool TrkHitOnTrk::isUsable  )  const [inline, inherited]
 

bool TrkHitOnTrk::isUsable  )  const [inline, inherited]
 

00201 {return (_isUsable > 0);}

const MdcLayer* MdcHitOnTrack::layer  )  const
 

const MdcLayer * MdcHitOnTrack::layer  )  const
 

00302 {
00303   return _dHit->layer();
00304 }

unsigned MdcHitOnTrack::layerNumber  )  const [virtual]
 

Implements TrkHitOnTrk.

int MdcHitOnTrack::layernumber  )  const
 

unsigned MdcHitOnTrack::layerNumber  )  const [virtual]
 

Implements TrkHitOnTrk.

00164 {
00165   return layernumber();
00166 }

int MdcHitOnTrack::layernumber  )  const
 

00296 {
00297   return _dHit->layernumber();
00298 }

virtual const MdcHit* MdcHitOnTrack::mdcHit  )  const [virtual]
 

Reimplemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

const MdcHit * MdcHitOnTrack::mdcHit  )  const [virtual]
 

Reimplemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

00338 {
00339   return 0;
00340 }

virtual const MdcHitOnTrack* MdcHitOnTrack::mdcHitOnTrack  )  const [virtual]
 

Reimplemented from TrkHitOnTrk.

const MdcHitOnTrack * MdcHitOnTrack::mdcHitOnTrack  )  const [virtual]
 

Reimplemented from TrkHitOnTrk.

00133 {
00134   return this;
00135 }

bool TrkHitOnTrk::mustUse  )  const [inline, inherited]
 

bool TrkHitOnTrk::mustUse  )  const [inline, inherited]
 

00202 {return (_isUsable > 1);}

bool TrkHitOnTrk::operator< const TrkHitOnTrk rhs  )  const [inline, inherited]
 

00099 { return fltLen()<rhs.fltLen();}

bool TrkHitOnTrk::operator< const TrkHitOnTrk rhs  )  const [inline, inherited]
 

00099 { return fltLen()<rhs.fltLen();}

MdcHitOnTrack& MdcHitOnTrack::operator= const MdcHitOnTrack  )  [private]
 

MdcHitOnTrack& MdcHitOnTrack::operator= const MdcHitOnTrack  )  [private]
 

bool TrkHitOnTrk::operator== const TrkHitOnTrk  )  const [inherited]
 

bool TrkHitOnTrk::operator== const TrkHitOnTrk  )  const [inherited]
 

00176 {
00177   return this == &rhs;
00178 }

TrkRep* TrkHitOnTrk::parentRep  )  const [inline, protected, inherited]
 

00177 { return _parentRep;}

TrkRep* TrkHitOnTrk::parentRep  )  const [inline, protected, inherited]
 

00177 { return _parentRep;}

TrkRecoTrk* TrkHitOnTrk::parentTrack  )  const [inherited]
 

TrkRecoTrk * TrkHitOnTrk::parentTrack  )  const [inherited]
 

00147 {
00148   return parentRep()->parentTrack();
00149 }

PdtPid::PidType TrkHitOnTrk::particleType  )  const [inherited]
 

PdtPid::PidType TrkHitOnTrk::particleType  )  const [inherited]
 

00159 {
00160   return getParentRep()->particleType();
00161 }

virtual void TrkHitOnTrk::print std::ostream  )  const [virtual, inherited]
 

void TrkHitOnTrk::print std::ostream  )  const [virtual, inherited]
 

00132 {
00133   hit()->printAll(o);
00134   o << " hitlen " << hitLen() 
00135     << " fltlen " << fltLen()
00136     << " act " << (isActive() != 0) << endl;
00137 }

virtual void TrkHitOnTrk::printAll std::ostream  )  const [virtual, inherited]
 

void TrkHitOnTrk::printAll std::ostream  )  const [virtual, inherited]
 

00141 {
00142   print(o);
00143 }

double MdcHitOnTrack::rawTime  )  const
 

double MdcHitOnTrack::rawTime  )  const
 

00320 {
00321   return _dHit->rawTime();
00322 }

bool TrkHitOnTrk::resid double &  resid,
double &  residErr,
bool  exclude = false
const [inherited]
 

double TrkHitOnTrk::resid bool  exclude = false  )  const [inherited]
 

bool TrkHitOnTrk::resid double &  resid,
double &  residErr,
bool  exclude = false
const [inherited]
 

00206 {
00207   assert(getParentRep()!=0);
00208   return getParentRep()->resid(this,resid,residErr,exclude);
00209 }

double TrkHitOnTrk::resid bool  exclude = false  )  const [inherited]
 

00192 {
00193   double r(-99999.9),re(-9999.9);
00194   bool s=getParentRep()->resid(this,r,re,exclude);
00195   if (!s && r<-99999.8) {
00196 #ifdef MDCPATREC_ROUTINE
00197     std::cout<<"ErrMsg(routine) "
00198       << "error calling parentRep()->residual()" << std::endl;
00199 #endif
00200   }
00201   return r;
00202 }

double TrkHitOnTrk::residual  )  const [inherited]
 

double TrkHitOnTrk::residual  )  const [inherited]
 

00213 {
00214   assert (_trkTraj == &(getParentRep()->traj()));
00215   return _resid;
00216 }

void TrkHitOnTrk::setActivity bool  turnOn  )  [inherited]
 

void TrkHitOnTrk::setActivity bool  turnOn  )  [inherited]
 

00097 {
00098   if (!isUsable() || isActive()==turnOn) return;
00099   if (getParentRep() != 0) {    // needed until Rep-less HoTs go away
00100     turnOn ? parentRep()->activateHot(this)
00101            : parentRep()->deactivateHot(this);
00102   } else {
00103     _isActive = turnOn;
00104   }
00105 }

void MdcHitOnTrack::setAmbig int  a  )  [inline, virtual]
 

Reimplemented from TrkHitOnTrk.

00096 { _ambig = a<0?-1:a>0?1:0; }

void MdcHitOnTrack::setAmbig int  a  )  [inline, virtual]
 

Reimplemented from TrkHitOnTrk.

00096 { _ambig = a<0?-1:a>0?1:0; }

void TrkHitOnTrk::setFltLen double  f  )  [inline, inherited]
 

00147 {_trkLen = f;}

void TrkHitOnTrk::setFltLen double  f  )  [inline, inherited]
 

00147 {_trkLen = f;}

void TrkHitOnTrk::setHitLen double  h  )  [inline, protected, inherited]
 

00178 {_hitLen = h;}

void TrkHitOnTrk::setHitLen double  h  )  [inline, protected, inherited]
 

00178 {_hitLen = h;}

void TrkHitOnTrk::setHitResid double  newResid  )  [inline, protected, inherited]
 

00176 {_resid = newResid;}

void TrkHitOnTrk::setHitResid double  newResid  )  [inline, protected, inherited]
 

00176 {_resid = newResid;}

void TrkHitOnTrk::setHitRms double  newRms  )  [inline, inherited]
 

00154 {_hitRms = newRms;}

void TrkHitOnTrk::setHitRms double  newRms  )  [inline, inherited]
 

00154 {_hitRms = newRms;}

void MdcHitOnTrack::setT0 double  t0  ) 
 

void MdcHitOnTrack::setT0 double  t0  ) 
 

00095 { 
00096   _fitTime= _dHit->rawTime()-t0*1e-9; 
00097 }

void TrkHitOnTrk::setUnusedHit  )  [protected, inherited]
 

void TrkHitOnTrk::setUnusedHit  )  [protected, inherited]
 

00171 {
00172   if (hit() != 0) hit()->setUnusedHit(this);
00173 }

void TrkHitOnTrk::setUsability int  usability  )  [inherited]
 

void TrkHitOnTrk::setUsability int  usability  )  [inherited]
 

00109 {
00110   _isUsable = usability;
00111   if (isActive() && !isUsable()) {
00112     _isActive = false;
00113     if(getParentRep() != 0)parentRep()->deactivateHot(this);
00114   }
00115   if (!isActive() && mustUse()) {
00116     _isActive = true;
00117     if(getParentRep() != 0)parentRep()->activateHot(this);
00118   }
00119 }

void TrkHitOnTrk::setUsedHit  )  [protected, inherited]
 

void TrkHitOnTrk::setUsedHit  )  [protected, inherited]
 

00165 {
00166   if (hit() != 0) hit()->setUsedHit(this);
00167 }

virtual unsigned MdcHitOnTrack::status  )  const [pure virtual]
 

Implemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

virtual unsigned MdcHitOnTrack::status  )  const [pure virtual]
 

Implemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

virtual const SvtHitOnTrack* TrkHitOnTrk::svtHitOnTrack  )  const [virtual, inherited]
 

const SvtHitOnTrack * TrkHitOnTrk::svtHitOnTrack  )  const [virtual, inherited]
 

00031 {return 0;}

virtual unsigned MdcHitOnTrack::tdcIndex  )  const [pure virtual]
 

Implemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

virtual unsigned MdcHitOnTrack::tdcIndex  )  const [pure virtual]
 

Implemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

virtual bool MdcHitOnTrack::timeAbsolute double &  t,
double &  tErr
const [virtual]
 

Implements TrkHitOnTrk.

bool MdcHitOnTrack::timeAbsolute double &  t,
double &  tErr
const [virtual]
 

Implements TrkHitOnTrk.

00278 {
00279   double tresid(-1.0);
00280   if(timeResid(tresid,tErr)){
00281     // add back the track time
00282     t = tresid + getParentRep()->parentTrack()->trackT0();
00283     return true;
00284   } else
00285     return false;
00286 }

virtual bool MdcHitOnTrack::timeResid double &  t,
double &  tErr
const [virtual]
 

Implements TrkHitOnTrk.

bool MdcHitOnTrack::timeResid double &  t,
double &  tErr
const [virtual]
 

Implements TrkHitOnTrk.

00268 {
00269   double v = driftVelocity();
00270   if (v <= 0) return false;
00271   t = (fabs(drift())-fabs(dcaToWire()))/v;
00272   tErr= hitRms()/v;
00273   return true;
00274 }

const TrkDifTraj* TrkHitOnTrk::trkTraj  )  const [inline, inherited]
 

00077 { return _trkTraj;}

const TrkDifTraj* TrkHitOnTrk::trkTraj  )  const [inline, inherited]
 

00077 { return _trkTraj;}

bool MdcHitOnTrack::updateAmbiguity double  dca  )  [protected]
 

bool MdcHitOnTrack::updateAmbiguity double  dca  )  [protected]
 

00121 {
00122   if (dca < 0 && ambig() >= 0) {
00123     setAmbig(-1); return isActive();
00124   } else if (dca > 0 && ambig() <= 0) {
00125     setAmbig(1); return isActive();
00126   } else {
00127     return false;
00128   }
00129 }

void MdcHitOnTrack::updateCorrections  )  [private]
 

void MdcHitOnTrack::updateCorrections  )  [private]
 

00201 {
00202   const TrkRep* tkRep = getParentRep();
00203   assert(tkRep != 0);
00204   static HepPoint3D pos; static Hep3Vector dir;
00205   _trkTraj->getInfo(fltLen(), pos, dir);
00206 
00207   // for bes3 cosmic test
00208   double newFltLen = 0.;
00209   if (mdcHit()->isCosmicFit()){
00210     HepPoint3D poca = tkRep->position(0.);
00211     if ( pos.y() > poca.y()){
00212       newFltLen -= fltLen();
00213     }else{
00214       newFltLen += fltLen();
00215     }
00216   }else{
00217     newFltLen = fltLen();
00218   }
00219 
00220   //double tof = tkRep->arrivalTime(fltLen());
00221   double tof = tkRep->arrivalTime(newFltLen);
00222   // at this point, since dcaToWire is computed, _ambig must be either -1 or +1
00223   assert( ambig() == -1 || ambig() == 1 );
00224   double eAngle = BesAngle(dir.phi() - pos.phi());
00225   double dAngle =Constants::pi/2 - dir.theta();
00226   double z = pos.z();
00227   // note the special case for INCOMING tracks:
00228   //    wire left of track implies hit on the right side of wire
00229   int wireAmb= fabs(eAngle)<Constants::pi/2?_ambig:-_ambig;
00230   // provide the underlying hit with the *external* information
00231   // needed to compute the drift distance, i.e. those numbers that
00232   // the hit cannot figure out by itself...
00233   double dist =  _dHit->driftDist(tof, wireAmb, eAngle, dAngle, z); assert(dist>0);
00234   _fitTime = _dHit->driftTime(tof,z);
00235   _drift[ambig()<0?0:1] = ambig() * dist;
00236   assert( driftCurrent() );
00237 
00238   double newSig = _dHit->sigma(dist, wireAmb, eAngle, dAngle, z);
00239 
00240   assert(newSig>0);
00241   setHitRms(newSig);
00242 }

virtual TrkErrCode MdcHitOnTrack::updateMeasurement const TrkDifTraj traj,
bool  maintainAmbiguity
[protected, virtual]
 

Implements TrkHitOnTrk.

TrkErrCode MdcHitOnTrack::updateMeasurement const TrkDifTraj traj,
bool  maintainAmbiguity
[protected, virtual]
 

Implements TrkHitOnTrk.

00176 {
00177   TrkErrCode status=updatePoca(traj,maintainAmb);
00178   if (status.failure()) {
00179 #ifdef MDCPATREC_DEBUG
00180     std::cout<<" ErrMsg(warning) " << "MdcHitOnTrack::updateMeasurement failed " << status << std::endl;
00181 #endif
00182     return status;
00183   }
00184   assert (_poca!=0);
00185   double dca=_poca->doca();
00186   bool forceIteration = (maintainAmb&&ambig()!=0)?false:updateAmbiguity(dca);
00187   assert(ambig()!=0);
00188   // Check for hits beyond end plates.  !!Turn off hit if it is == temp. hack
00189   if (isBeyondEndflange()) setUsability(false);
00190   if (forceIteration || !driftCurrent() ) {
00191     updateCorrections(); // force recomputation of drift for current ambig(), setting of hitRms
00192     forceIteration=true;
00193   }
00194   setHitResid(dca-drift());
00195   return !forceIteration?status:
00196     TrkErrCode(TrkErrCode::succeed, 11, "Ambiguity flipped");
00197 }

TrkErrCode TrkHitOnTrk::updatePoca const TrkDifTraj trkTraj,
bool  maintainAmbiguity
[protected, inherited]
 

TrkErrCode TrkHitOnTrk::updatePoca const TrkDifTraj trkTraj,
bool  maintainAmbiguity
[protected, inherited]
 

00220 {
00221   _trkTraj = (trkTraj!=0?trkTraj:&(getParentRep()->traj()));
00222   if (_poca==0) {
00223     _poca = new TrkPoca(*_trkTraj,fltLen(),
00224         *hitTraj(), hitLen(),_tolerance);
00225   } else {
00226     *_poca = TrkPoca(*_trkTraj,fltLen(),
00227         *hitTraj(), hitLen(),_tolerance);
00228   }
00229   if(_poca->status().failure()) {
00230     if(isActive()){
00231 #ifdef MDCPATREC_WARNING
00232       std::cout<<"ErrMsg(warning) "
00233         << " TrkPoca failed in TrkHitOnTrk::updatePoca"
00234         << std::endl;
00235 #endif
00236     }
00237     delete _poca; _poca=0;
00238     return TrkErrCode(TrkErrCode::fail,4);
00239   }
00240   _trkLen = _poca->flt1();
00241   _hitLen = _poca->flt2();
00242   double dca=_poca->doca();
00243   if (!maintainAmb) setAmbig(dca>0?+1:-1);
00244   return TrkErrCode(TrkErrCode::succeed);
00245 }

double TrkHitOnTrk::weight  )  const [inherited]
 

double TrkHitOnTrk::weight  )  const [inherited]
 

00123 {
00124   // could be cached
00125   double rms=hitRms();
00126   assert(rms > 0);
00127   return double(1) / ( rms * rms );
00128 }

TrkEnums::TrkViewInfo MdcHitOnTrack::whatView  )  const [virtual]
 

Implements TrkHitOnTrk.

TrkEnums::TrkViewInfo MdcHitOnTrack::whatView  )  const [virtual]
 

Implements TrkHitOnTrk.

00290 {
00291   return _dHit->whatView();
00292 }

int MdcHitOnTrack::whichView  )  const
 

Reimplemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

int MdcHitOnTrack::whichView  )  const
 

Reimplemented in MdcRecoHitOnTrack, and MdcRecoHitOnTrack.

00314 {
00315   return _dHit->whichView();
00316 }

int MdcHitOnTrack::wire  )  const
 

int MdcHitOnTrack::wire  )  const
 

00308 {
00309   return _dHit->wirenumber();
00310 }

int MdcHitOnTrack::wireAmbig  )  const [inline]
 

00060                                  { // hit wrt the wire location
00061       return fabs(entranceAngle())<Constants::pi/2?ambig():-ambig();} 

int MdcHitOnTrack::wireAmbig  )  const [inline]
 

00060                                  { // hit wrt the wire location
00061       return fabs(entranceAngle())<Constants::pi/2?ambig():-ambig();} 


Friends And Related Function Documentation

TrkBase::Functors::setActive [friend, inherited]
 

TrkBase::Functors::setParent [friend, inherited]
 

TrkBase::Functors::updateMeasurement [friend, inherited]
 


Member Data Documentation

int MdcHitOnTrack::_ambig [private]
 

const MdcHit* MdcHitOnTrack::_dHit [private]
 

const MdcHit* MdcHitOnTrack::_dHit [private]
 

double MdcHitOnTrack::_drift [private]
 

double MdcHitOnTrack::_endLen [private]
 

double MdcHitOnTrack::_fitTime [private]
 

double TrkHitOnTrk::_hitLen [protected, inherited]
 

double TrkHitOnTrk::_hitRms [protected, inherited]
 

const Trajectory* MdcHitOnTrack::_hitTraj [private]
 

const Trajectory* MdcHitOnTrack::_hitTraj [private]
 

bool TrkHitOnTrk::_isActive [protected, inherited]
 

int TrkHitOnTrk::_isUsable [protected, inherited]
 

TrkRep* TrkHitOnTrk::_parentRep [protected, inherited]
 

TrkRep* TrkHitOnTrk::_parentRep [protected, inherited]
 

TrkPoca* TrkHitOnTrk::_poca [protected, inherited]
 

TrkPoca* TrkHitOnTrk::_poca [protected, inherited]
 

double TrkHitOnTrk::_resid [protected, inherited]
 

double MdcHitOnTrack::_startLen [private]
 

TrkFundHit* TrkHitOnTrk::_theHit [protected, inherited]
 

TrkFundHit* TrkHitOnTrk::_theHit [protected, inherited]
 

double TrkHitOnTrk::_tolerance [protected, inherited]
 

double TrkHitOnTrk::_trkLen [protected, inherited]
 

const TrkDifTraj* TrkHitOnTrk::_trkTraj [protected, inherited]
 

const TrkDifTraj* TrkHitOnTrk::_trkTraj [protected, inherited]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:26:11 2011 for BOSS6.5.5 by  doxygen 1.3.9.1