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

TrkOutAvgTimeCalculator Class Reference

#include <TrkOutAvgTimeCalculator.h>

Inheritance diagram for TrkOutAvgTimeCalculator:

TrkTimeCalculator TrkTimeCalculator List of all members.

Public Member Functions

bool trackTime (const TrkRecoTrk &trk, double &time, double &timeerr) const
virtual bool trackTime (const TrkRecoTrk &trk, double &time, double &timeerr, int &nHotsUsed) const
virtual bool trackTime (const TrkRecoTrk &trk, double &time, double &timeerr, int &nHotsUsed) const
 TrkOutAvgTimeCalculator (const TrkHotSelector &selector, double maxpull)
 TrkOutAvgTimeCalculator (const TrkHotSelector &selector, double maxpull)
virtual ~TrkOutAvgTimeCalculator ()
virtual ~TrkOutAvgTimeCalculator ()

Protected Member Functions

bool useHot (const TrkHitOnTrk &x) const
bool useHot (const TrkHitOnTrk &x) const

Private Member Functions

TrkOutAvgTimeCalculatoroperator= (const TrkOutAvgTimeCalculator &)
TrkOutAvgTimeCalculatoroperator= (const TrkOutAvgTimeCalculator &)
 TrkOutAvgTimeCalculator (const TrkOutAvgTimeCalculator &)
 TrkOutAvgTimeCalculator (const TrkOutAvgTimeCalculator &)

Private Attributes

double _maxpull

Constructor & Destructor Documentation

TrkOutAvgTimeCalculator::TrkOutAvgTimeCalculator const TrkHotSelector selector,
double  maxpull
 

00025                                                                                                :
00026   TrkTimeCalculator(selector),_maxpull(maxpull)
00027 {}

TrkOutAvgTimeCalculator::~TrkOutAvgTimeCalculator  )  [virtual]
 

00030 {}

TrkOutAvgTimeCalculator::TrkOutAvgTimeCalculator const TrkOutAvgTimeCalculator  )  [private]
 

TrkOutAvgTimeCalculator::TrkOutAvgTimeCalculator const TrkHotSelector selector,
double  maxpull
 

virtual TrkOutAvgTimeCalculator::~TrkOutAvgTimeCalculator  )  [virtual]
 

TrkOutAvgTimeCalculator::TrkOutAvgTimeCalculator const TrkOutAvgTimeCalculator  )  [private]
 


Member Function Documentation

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

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

bool TrkTimeCalculator::trackTime const TrkRecoTrk trk,
double &  time,
double &  timeerr
const [inline, inherited]
 

00037   { int dummy; return trackTime(trk,time,timeerr,dummy);}

virtual bool TrkOutAvgTimeCalculator::trackTime const TrkRecoTrk trk,
double &  time,
double &  timeerr,
int &  nHotsUsed
const [virtual]
 

Implements TrkTimeCalculator.

bool TrkOutAvgTimeCalculator::trackTime const TrkRecoTrk trk,
double &  time,
double &  timeerr,
int &  nHotsUsed
const [virtual]
 

Implements TrkTimeCalculator.

00036 {
00037   const TrkHitList *hotlist = trk.hits();
00038   std::vector<ws> l;
00039   ws sum;
00040   for(TrkHitList::hot_iterator i(hotlist->begin());i!=hotlist->end();++i){
00041     double hottime,hottimeerr;
00042     if(!useHot(*i) || !i->timeResid(hottime,hottimeerr)) continue;
00043     hottime*=1e9; hottimeerr*=1e9;
00044     ws x(hottime,double(1)/(hottimeerr*hottimeerr));
00045     l.push_back(x);
00046     sum +=x;
00047   }
00048   if (_maxpull>0 && sum.n()>2 && sum.isPhysical()) { // do pull based pruning
00049     std::vector<ws>::iterator worst=l.end();
00050     do {
00051         worst=l.end(); double worstPull = _maxpull;
00052         for(std::vector<ws>::iterator i=l.begin();i!=l.end();++i) {
00053               ws u(sum); u-=*i;
00054               if (!u.isPhysical()) {
00055 #ifdef MDCPATREC_WARNING
00056                 std::cout<<"ErrMsg(warning) rounding problem?" << std::endl;
00057 #endif
00058                       continue;
00059               }
00060               double p = fabs(u.pull( *i ));
00061               if (p>worstPull) { worstPull = p; worst = i; }
00062         }
00063         if (worst!=l.end()) {
00064                 sum-=*worst; l.erase(worst);
00065         }
00066     } while (sum.isPhysical() && sum.n()>2 && worst!=l.end());
00067   }
00068   if (sum.isPhysical()) {
00069           time = sum.mean()*1e-9 + trk.trackT0();;
00070           timeerr = sum.sigma()*1e-9;
00071           nHotsUsed = sum.n();
00072           return true;
00073   }
00074   return false;
00075 }

bool TrkTimeCalculator::useHot const TrkHitOnTrk x  )  const [inline, protected, inherited]
 

00039 { return _selector.useHot(x);}

bool TrkTimeCalculator::useHot const TrkHitOnTrk x  )  const [inline, protected, inherited]
 

00039 { return _selector.useHot(x);}


Member Data Documentation

double TrkOutAvgTimeCalculator::_maxpull [private]
 


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