18#include "TrkBase/TrkRep.h"
19#include "MdcGeom/Constants.h"
20#include "MdcRecoUtil/DifIndepPar.h"
21#include "MdcRecoUtil/DifPoint.h"
22#include "MdcRecoUtil/DifVector.h"
23#include "MdcRecoUtil/Pdt.h"
24#include "MdcRecoUtil/PdtEntry.h"
25#include "ProbTools/ChisqConsistency.h"
26#include "ProxyDict/IfdIntKey.h"
27#include "TrkBase/TrkDifTraj.h"
28#include "TrkBase/TrkErrCode.h"
29#include "TrkBase/TrkExchangePar.h"
30#include "TrkBase/TrkFunctors.h"
31#include "TrkBase/TrkHitOnTrk.h"
32#include "TrkBase/TrkHotListEmpty.h"
33#include "TrkBase/TrkHotListFull.h"
34#include "TrkBase/TrkRecoTrk.h"
66 bool takeownership ) {
75 assert( hotlist != 0 );
82 double stFndRng,
double endFndRng )
101 init( right._parentTrack, right._partHypo );
136 hot->setActive(
true );
149 hot->setActive(
false );
161 if ( _betainv < 0.0 )
164 mass2 = mass2 * mass2;
165 double ptot2 =
momentum( 0. ).mag2();
166 assert( ptot2 != 0.0 );
167 _betainv = sqrt( ( ptot2 + mass2 ) / ptot2 );
169 double tof = fltL * _betainv * cinv;
182 symErr.assign( err );
186#ifdef MDCPATREC_ROUTINE
187 cout <<
"ErrMsg(routine) "
188 <<
"Pos " << err.num_row() <<
" " << err.num_col() << endl
194 <<
"x deriv: " << endl
196 <<
"y deriv: " << endl
202 Hep3Vector pointDir( point.x(), point.y() );
203 double dirMag = pointDir.mag();
205 double delx = dist * point.x() / dirMag;
206 double dely = dist * point.y() / dirMag;
208 HepMatrix
weight = err.inverse( ierr );
210 weight( 2, 2 ) * dely * dely;
211#ifdef MDCPATREC_DEBUG
212 cout << point << endl;
213 cout << symErr << endl;
214 cout <<
"delta: " << delx <<
" " << dely << endl;
215 cout <<
"chisq: " <<
chisq << endl;
218 delx = dist *
cos( phi0 );
219 dely = dist *
sin( phi0 );
221 weight( 2, 2 ) * dely * dely;
222#ifdef MDCPATREC_DEBUG
223 cout <<
"delta: " << delx <<
" " << dely << endl;
224 cout <<
"chisq: " <<
chisq << endl;
225 cout << endl << endl;
270 bool exclude )
const {
272 if ( h->
parentRep() !=
this )
return false;
274 if ( exclude )
return false;
**********INTEGER nmxhep !maximum number of particles DOUBLE PRECISION vhep INTEGER jdahep COMMON hepevt $ !serial number $ !number of particles $ !status code $ !particle ident KF $ !parent particles $ !childreen particles $ !four momentum
HepGeom::Point3D< double > HepPoint3D
double sin(const BesAngle a)
double cos(const BesAngle a)
*********Class see also m_nmax DOUBLE PRECISION m_MasPhot DOUBLE PRECISION m_phsu DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_r2 DOUBLE PRECISION m_WtMass INTEGER m_nmax INTEGER m_Nevgen INTEGER m_IsFSR INTEGER m_MarTot *COMMON c_KarFin $ !Output file $ !Event serial number $ !alpha QED at Thomson limit $ !minimum energy at CMS for remooval $ !infrared dimensionless $ !dummy photon IR regulator $ !crude photon multiplicity enhancement factor *EVENT $ !MC crude volume of PhhSpace *Sfactors $ !YFS formfactor IR part only $ !YFS formfactor non IR finite part $ !mass weight
HepSymMatrix & covariance()
HepVector derivatives() const
const DifIndepPar * indepPar() const
HepSymMatrix errorMatrix(const HepSymMatrix &e) const
static PdtEntry * lookup(const std::string &name)
virtual HepPoint3D position(double) const =0
virtual Hep3Vector direction(double) const =0
virtual double chisq() const =0
virtual int nDof() const =0
virtual const TrkDifTraj & traj() const =0
virtual void getDFInfo2(double fltLen, DifPoint &pos, DifVector &direction) const
TrkFitStatus & operator=(const TrkFitStatus &)
virtual TrkExchangePar helix(double fltL) const =0
void setParent(TrkHitOnTrk &hot, TrkRep *parent) const
TrkRep * parentRep() const
const TrkRep * getParentRep() const
virtual void remove(TrkHitOnTrk *)=0
virtual void append(TrkHitOnTrk *)=0
virtual double endFoundRange() const =0
virtual int nSvt(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const =0
virtual TrkHotList * clone(TrkBase::Functors::cloneHot) const =0
virtual TrkHotList * resetParent(TrkBase::Functors::setParent)
virtual double startFoundRange() const =0
virtual int nActive(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const =0
virtual int nMdc(TrkEnums::TrkViewInfo view=TrkEnums::bothView) const =0
virtual void updateHots()=0
virtual void removeHot(TrkHitOnTrk *theHot)
virtual HepPoint3D position(double fltL) const
virtual double arrivalTime(double fltL) const
TrkRecoTrk * parentTrack()
std::auto_ptr< TrkHotList > _hotList
virtual int nActive() const
virtual BesPointErr positionErr(double fltL) const
virtual double endFoundRange() const
TrkRep & operator=(const TrkRep &)
virtual PdtPid::PidType particleType() const
virtual void deactivateHot(TrkHitOnTrk *theHot)
virtual TrkRep * clone(TrkRecoTrk *newTrack) const =0
virtual const IfdKey & myKey() const
virtual void activateHot(TrkHitOnTrk *theHot)
TrkRep(const TrkHotList &inHots, TrkRecoTrk *trk, PdtPid::PidType hypo)
virtual bool resid(const TrkHitOnTrk *theHot, double &residual, double &residErr, bool exclude=false) const
virtual void updateHots()
double endValidRange() const
virtual ChisqConsistency chisqConsistency() const
double startValidRange() const
virtual BesVectorErr directionErr(double fltL) const
virtual TrkHotList * hotList()
virtual void addHot(TrkHitOnTrk *theHot)
virtual double startFoundRange() const
virtual Hep3Vector direction(double fltL) const
bool operator==(const TrkRep &)