18#include "MdcGeom/Constants.h"
22#include "TrkBase/TrkRep.h"
23#include "MdcRecoUtil/Pdt.h"
24#include "MdcRecoUtil/PdtEntry.h"
25#include "TrkBase/TrkDifTraj.h"
26#include "TrkBase/TrkHotListFull.h"
27#include "TrkBase/TrkHotListEmpty.h"
28#include "TrkBase/TrkHitOnTrk.h"
29#include "TrkBase/TrkRecoTrk.h"
30#include "TrkBase/TrkFunctors.h"
31#include "TrkBase/TrkErrCode.h"
32#include "MdcRecoUtil/DifPoint.h"
33#include "MdcRecoUtil/DifVector.h"
34#include "MdcRecoUtil/DifIndepPar.h"
35#include "ProbTools/ChisqConsistency.h"
36#include "ProxyDict/IfdIntKey.h"
37#include "TrkBase/TrkExchangePar.h"
49 :_hotList( hotlist.clone(
TrkBase::Functors::cloneHot(this)) )
92 int ndc,
double stFndRng,
double endFndRng)
114 init(right._parentTrack, right._partHypo);
136 return (&rhs ==
this);
161 hot->setActive(
true);
174 hot->setActive(
false);
196 if (_betainv < 0.0) {
198 mass2 = mass2 * mass2;
200 assert(ptot2 != 0.0);
201 _betainv = sqrt( (ptot2 + mass2)/ ptot2);
203 double tof = fltL * _betainv * cinv;
225#ifdef MDCPATREC_ROUTINE
226 cout<<
"ErrMsg(routine) " <<
"Pos "
227 << err.num_row() <<
" " << err.num_col() << endl
232 <<
"x deriv: " << endl
234 <<
"y deriv: " << endl
240 Hep3Vector pointDir(point.x(), point.y());
241 double dirMag = pointDir.mag();
243 double delx = dist * point.x() / dirMag;
244 double dely = dist * point.y() / dirMag;
246 HepMatrix
weight = err.inverse(ierr);
248 2 *
weight(2,1) * delx * dely +
249 weight(2,2) * dely * dely;
250#ifdef MDCPATREC_DEBUG
251 cout << point << endl;
252 cout << symErr << endl;
253 cout <<
"delta: " << delx <<
" " << dely << endl;
254 cout <<
"chisq: " <<
chisq << endl;
257 delx = dist *
cos(phi0);
258 dely = dist *
sin(phi0);
260 2 *
weight(2,1) * delx * dely +
261 weight(2,2) * dely * dely;
262#ifdef MDCPATREC_DEBUG
263 cout <<
"delta: " << delx <<
" " << dely << endl;
264 cout <<
"chisq: " <<
chisq << endl;
265 cout << endl << endl;
349 double& residual,
double& residErr,
353 if (h->
parentRep() !=
this)
return false;
355 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
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 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 &)