CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MRHChi2MeasurementEstimator.cc
Go to the documentation of this file.
7 
8 std::pair<bool,double>
10  const TransientTrackingRecHit& aRecHit) const {
11  if (!aRecHit.isValid()) {
12  throw cms::Exception("MRHChi2MeasurementEstimator") << "Invalid RecHit passed to the MRHChi2MeasurementEstimator ";
13  }
14 
17 
18  MeasurementExtractor me(tsos);
19  double est=0;
20  double annealing = aRecHit.getAnnealingFactor();
21  LogDebug("MRHChi2MeasurementEstimator") << "Current annealing factor is " << annealing;
23  LogDebug("MRHChi2MeasurementEstimator") << "this hit has " << components.size() << " components";
24  for (TransientTrackingRecHit::ConstRecHitContainer::const_iterator iter = components.begin(); iter != components.end(); iter++){
25  Vec r = asSVector<2>((*iter)->parameters()) - me.measuredParameters<2>(**iter);
26  Mat R = asSMatrix<2>((*iter)->parametersError())*annealing + me.measuredError<2>(**iter);
27  //int ierr = ! R.Invert(); // if (ierr != 0) throw exception; //
29  LogDebug("MRHChi2MeasurementEstimator") << "Hit with weight " << (*iter)->weight();
30  est += ROOT::Math::Similarity(r, R)*((*iter)->weight());
31  }
32  return returnIt(est);
33 }
#define LogDebug(id)
AlgebraicSymMatrix measuredError(const TransientTrackingRecHit &)
ROOT::Math::SMatrix< double, D1, D1, ROOT::Math::MatRepSym< double, D1 > > SymMatrix
std::pair< bool, double > returnIt(double est) const
virtual std::pair< bool, double > estimate(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
bool invertPosDefMatrix(ROOT::Math::SMatrix< T, N, N, ROOT::Math::MatRepSym< T, N > > &m)
std::vector< ConstRecHitPointer > ConstRecHitContainer
ROOT::Math::SVector< double, D1 > Vector
AlgebraicVector measuredParameters(const TransientTrackingRecHit &)
bool isValid() const
virtual ConstRecHitContainer transientHits() const
Composite interface: returns the component hits, if any.