CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions
TrajectoryStateCombiner Class Reference

#include <TrajectoryStateCombiner.h>

Public Types

typedef TrajectoryStateOnSurface TSOS
 

Public Member Functions

TSOS combine (const TSOS &pTsos1, const TSOS &pTsos2) const
 
TSOS operator() (const TSOS &pTsos1, const TSOS &pTsos2) const
 

Detailed Description

Combines the information from two trajectory states via a weighted mean. The input states should not be correlated. Ported from ORCA

Date:
2007/05/09 14:17:57
Revision:
1.2
Author
todorov, cerati

Definition at line 15 of file TrajectoryStateCombiner.h.

Member Typedef Documentation

Definition at line 18 of file TrajectoryStateCombiner.h.

Member Function Documentation

TrajectoryStateOnSurface TrajectoryStateCombiner::combine ( const TSOS pTsos1,
const TSOS pTsos2 
) const

Definition at line 7 of file TrajectoryStateCombiner.cc.

References TrajectoryStateOnSurface::globalParameters(), invertPosDefMatrix(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), GlobalTrajectoryParameters::magneticField(), LocalTrajectoryError::matrix(), convertSQLiteXML::ok, LocalTrajectoryParameters::pzSign(), TrajectoryStateOnSurface::surface(), and LocalTrajectoryParameters::vector().

Referenced by CSCPairResidualsConstraint::dphidzFromTrack(), AlignmentMonitorTemplate::event(), AlignmentMonitorMuonResiduals::event(), operator()(), AlignmentMuonHIPTrajectorySelector::produce(), TrackInfoProducerAlgorithm::run(), HIPAlignmentAlgorithm::run(), and TrajectoryAtInvalidHit::TrajectoryAtInvalidHit().

7  {
8 
9  double pzSign = Tsos1.localParameters().pzSign();
10  AlgebraicVector5 x1(Tsos1.localParameters().vector());
11  AlgebraicVector5 x2(Tsos2.localParameters().vector());
12  const AlgebraicSymMatrix55 &C1 = (Tsos1.localError().matrix());
13  const AlgebraicSymMatrix55 &C2 = (Tsos2.localError().matrix());
14 
15  AlgebraicSymMatrix55 Csum = C1 + C2;
16  bool ok = invertPosDefMatrix(Csum);
17  AlgebraicMatrix55 K = C1*Csum;
18 
19  if(!ok) {
20  edm::LogError("MatrixInversionFailure")
21  <<"the inversion of the combined error matrix failed. Impossible to get a combined state."
22  <<"\nmatrix 1:"<<C1
23  <<"\nmatrix 2:"<<C2;
24  return TSOS();
25  }
26 
27  AlgebraicVector5 xcomb = x1 + K*(x2 - x1);
28  //AlgebraicSymMatrix55 Ccomb; Ccomb.assign(K*C2);
29  AlgebraicSymMatrix55 Ccomb = (AlgebraicMatrix55(K*C2)).LowerBlock();
30 
31  TSOS combTsos( LocalTrajectoryParameters(xcomb, pzSign),
32  LocalTrajectoryError(Ccomb), Tsos1.surface(),
33  &(Tsos1.globalParameters().magneticField()));
34  return combTsos;
35 }
TrajectoryStateOnSurface TSOS
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
bool invertPosDefMatrix(ROOT::Math::SMatrix< T, N, N, ROOT::Math::MatRepSym< T, N > > &m)
ROOT::Math::SVector< double, 5 > AlgebraicVector5
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepStd< double, 5, 5 > > AlgebraicMatrix55
TSOS TrajectoryStateCombiner::operator() ( const TSOS pTsos1,
const TSOS pTsos2 
) const
inline

Definition at line 22 of file TrajectoryStateCombiner.h.

References combine().

22  {
23  return combine( pTsos1, pTsos2);
24  }
TSOS combine(const TSOS &pTsos1, const TSOS &pTsos2) const