CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes

CachingVertex< N > Class Template Reference

#include <CachingVertex.h>

List of all members.

Public Types

typedef ROOT::Math::SMatrix
< double, N-2, N-2,
ROOT::Math::MatRepStd< double,
N-2, N-2 > > 
AlgebraicMatrixMM
typedef ROOT::Math::SMatrix
< double, N, N,
ROOT::Math::MatRepSym< double,
N > > 
AlgebraicSymMatrixNN
typedef
ReferenceCountingPointer
< VertexTrack< N > > 
RefCountedVertexTrack
typedef std::map
< RefCountedVertexTrack,
AlgebraicMatrixMM
TrackMap
typedef std::map
< RefCountedVertexTrack,
TrackMap
TrackToTrackMap

Public Member Functions

 CachingVertex (const GlobalPoint &pos, const GlobalError &posErr, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const GlobalPoint &pos, const GlobalWeight &posWeight, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const GlobalPoint &priorPos, const GlobalError &priorErr, const GlobalPoint &pos, const GlobalError &posErr, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const VertexState &priorVertexState, const VertexState &aVertexState, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const VertexState &aVertexState, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq, const TrackToTrackMap &covMap)
 CachingVertex (const GlobalPoint &priorPos, const GlobalError &priorErr, const GlobalPoint &pos, const GlobalWeight &posWeight, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const VertexState &priorVertexState, const VertexState &aVertexState, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq, const TrackToTrackMap &covMap)
 CachingVertex ()
 CachingVertex (const AlgebraicVector3 &weightTimesPosition, const GlobalWeight &posWeight, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const GlobalPoint &priorPos, const GlobalError &priorErr, const AlgebraicVector3 &weightTimesPosition, const GlobalWeight &posWeight, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
 CachingVertex (const VertexState &aVertexState, const std::vector< RefCountedVertexTrack > &tks, float totalChiSq)
float degreesOfFreedom () const
GlobalError error () const
bool hasPrior () const
bool isValid () const
 operator TransientVertex () const
GlobalPoint position () const
GlobalError priorError () const
GlobalPoint priorPosition () const
VertexState priorVertexState () const
AlgebraicMatrixMM tkToTkCovariance (const RefCountedVertexTrack t1, const RefCountedVertexTrack t2) const
bool tkToTkCovarianceIsAvailable () const
float totalChiSquared () const
std::vector
< RefCountedVertexTrack
tracks () const
VertexState vertexState () const
GlobalWeight weight () const
AlgebraicVector3 weightTimesPosition () const

Private Member Functions

void computeNDF () const

Private Attributes

float theChiSquared
TrackToTrackMap theCovMap
bool theCovMapAvailable
float theNDF
bool theNDFAvailable
VertexState thePriorVertexState
std::vector
< RefCountedVertexTrack
theTracks
bool theValid
VertexState theVertexState
bool withPrior

Detailed Description

template<unsigned int N>
class CachingVertex< N >

Class for vertices fitted with Kalman and linear fit algorithms. Provides access to temporary data to speed up the vertex update.

Definition at line 26 of file CachingVertex.h.


Member Typedef Documentation

template<unsigned int N>
typedef ROOT::Math::SMatrix<double,N-2,N-2,ROOT::Math::MatRepStd<double,N-2,N-2> > CachingVertex< N >::AlgebraicMatrixMM

Definition at line 32 of file CachingVertex.h.

template<unsigned int N>
typedef ROOT::Math::SMatrix<double,N,N,ROOT::Math::MatRepSym<double,N> > CachingVertex< N >::AlgebraicSymMatrixNN

Definition at line 31 of file CachingVertex.h.

template<unsigned int N>
typedef ReferenceCountingPointer<VertexTrack<N> > CachingVertex< N >::RefCountedVertexTrack

Definition at line 30 of file CachingVertex.h.

template<unsigned int N>
typedef std::map<RefCountedVertexTrack, AlgebraicMatrixMM > CachingVertex< N >::TrackMap

Definition at line 33 of file CachingVertex.h.

template<unsigned int N>
typedef std::map<RefCountedVertexTrack, TrackMap > CachingVertex< N >::TrackToTrackMap

Definition at line 34 of file CachingVertex.h.


Constructor & Destructor Documentation

template<unsigned int N>
CachingVertex< N >::CachingVertex ( const GlobalPoint pos,
const GlobalError posErr,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Constructors

Definition at line 10 of file CachingVertex.cc.

  : theVertexState(pos, posErr),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), withPrior(false), 
    theValid(true)

{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const GlobalPoint pos,
const GlobalWeight posWeight,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 24 of file CachingVertex.cc.

  : theVertexState(pos, posWeight),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), withPrior(false), 
    theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const AlgebraicVector3 weightTimesPosition,
const GlobalWeight posWeight,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 37 of file CachingVertex.cc.

  : theVertexState(weightTimesPosition, posWeight),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), withPrior(false), 
    theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const GlobalPoint priorPos,
const GlobalError priorErr,
const GlobalPoint pos,
const GlobalError posErr,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 84 of file CachingVertex.cc.

  : theVertexState(pos, posErr),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), 
    thePriorVertexState(priorPos, priorErr), withPrior(true), theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const GlobalPoint priorPos,
const GlobalError priorErr,
const GlobalPoint pos,
const GlobalWeight posWeight,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 99 of file CachingVertex.cc.

  : theVertexState(pos, posWeight),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), 
    thePriorVertexState(priorPos, priorErr), withPrior(true), theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const GlobalPoint priorPos,
const GlobalError priorErr,
const AlgebraicVector3 weightTimesPosition,
const GlobalWeight posWeight,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 114 of file CachingVertex.cc.

  : theVertexState(weightTimesPosition, posWeight),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), 
    thePriorVertexState(priorPos, priorErr), withPrior(true), theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const VertexState aVertexState,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 48 of file CachingVertex.cc.

  : theVertexState(aVertexState),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false), 
    theTracks(tks), theCovMapAvailable(false), withPrior(false), 
    theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const VertexState priorVertexState,
const VertexState aVertexState,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq 
)

Definition at line 72 of file CachingVertex.cc.

  : theVertexState(aVertexState), theChiSquared(totalChiSq),
    theNDF(0), theNDFAvailable(false), theTracks(tks),
    theCovMapAvailable(false), thePriorVertexState(priorVertexState),
    withPrior(true), theValid(true)
{}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const VertexState aVertexState,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq,
const TrackToTrackMap covMap 
)

Definition at line 59 of file CachingVertex.cc.

References CachingVertex< N >::theCovMap, and CachingVertex< N >::theCovMapAvailable.

  : theVertexState(aVertexState),
    theChiSquared(totalChiSq), theNDF(0), theNDFAvailable(false),
    theTracks(tks), theCovMap(covMap), theCovMapAvailable(true), 
    withPrior(false), theValid(true)
{
  if (theCovMap.empty()) theCovMapAvailable = false;
}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( const VertexState priorVertexState,
const VertexState aVertexState,
const std::vector< RefCountedVertexTrack > &  tks,
float  totalChiSq,
const TrackToTrackMap covMap 
)

Definition at line 128 of file CachingVertex.cc.

References CachingVertex< N >::theCovMap, and CachingVertex< N >::theCovMapAvailable.

  : theVertexState(aVertexState), theChiSquared(totalChiSq),
    theNDF(0), theNDFAvailable(false), theTracks(tks),
    theCovMap(covMap), theCovMapAvailable(true), 
    thePriorVertexState(priorVertexState), withPrior(true), theValid(true)
{
  if (theCovMap.empty()) theCovMapAvailable = false;
}
template<unsigned int N>
CachingVertex< N >::CachingVertex ( )

Constructor for invalid CachingVertex

Definition at line 142 of file CachingVertex.cc.

  : theChiSquared(-1), theNDF(0), theNDFAvailable(false), theTracks(),
    theCovMapAvailable(false), withPrior(false), 
    theValid(false)
{}

Member Function Documentation

template<unsigned int N>
void CachingVertex< N >::computeNDF ( ) const [private]

Definition at line 185 of file CachingVertex.cc.

{
  theNDF = 0;
  for (typename std::vector<RefCountedVertexTrack>::const_iterator itk = theTracks.begin(); 
       itk != theTracks.end(); ++itk) {
    theNDF += (**itk).weight(); // adds up weights
  }
  theNDF *= 2.; // times 2df for each track
  if (!withPrior) theNDF -= 3.; // 3 position coordinates fitted
  theNDFAvailable = true;
}
template<unsigned int N>
float CachingVertex< N >::degreesOfFreedom ( ) const
template<unsigned int N>
GlobalError CachingVertex< N >::error ( ) const
template<unsigned int N>
bool CachingVertex< N >::hasPrior ( ) const [inline]
template<unsigned int N>
bool CachingVertex< N >::isValid ( void  ) const [inline]
template<unsigned int N>
CachingVertex< N >::operator TransientVertex ( ) const

Definition at line 238 of file CachingVertex.cc.

References i, j, TransientVertex::refittedTracks(), TransientVertex::tkToTkCovariance(), and TransientVertex::weightMap().

{
  //If the vertex is invalid, return an invalid TV !
  if (!isValid()) return TransientVertex();

  typedef std::map<reco::TransientTrack, float> TransientTrackToFloatMap;

// Construct Track vector
  std::vector<reco::TransientTrack> ttVect;
  ttVect.reserve(theTracks.size());
  std::vector<reco::TransientTrack> refTTVect;
  TransientTrackToFloatMap theWeightMap;
  TTtoTTmap ttCovMap;
  // float theMinWeight = 0.5;

  for (typename std::vector<RefCountedVertexTrack>::const_iterator i = theTracks.begin();
       i != theTracks.end(); ++i) {
    // discard tracks with too low weight
    // if ((**i).weight() < theMinWeight) continue;

    reco::TransientTrack t1((**i).linearizedTrack()->track());
    ttVect.push_back(t1);
    //Fill in the weight map
    theWeightMap[t1] = (**i).weight();

    //Fill in the tk-to-tk covariance map
    if (theCovMapAvailable) {
      for (typename std::vector<RefCountedVertexTrack>::const_iterator j = (i+1);
           j != theTracks.end(); ++j) {
        reco::TransientTrack t2((**j).linearizedTrack()->track());
        ttCovMap[t1][t2] = tkToTkCovariance(*i, *j);
      }
    }
    if ((**i).refittedStateAvailable()) {
      refTTVect.push_back( (**i).refittedState()->transientTrack()) ;
    }
  }
  TransientVertex tv;
  if (withPrior) {
    tv =  TransientVertex(priorVertexState(), vertexState(), ttVect, totalChiSquared(), degreesOfFreedom());
  } else {
    tv = TransientVertex(vertexState(), ttVect, totalChiSquared(), degreesOfFreedom());
  }
  tv.weightMap(theWeightMap);
  if (theCovMapAvailable) tv.tkToTkCovariance(ttCovMap);
  if (!refTTVect.empty()) tv.refittedTracks(refTTVect);
  return tv;
}
template<unsigned int N>
GlobalPoint CachingVertex< N >::position ( void  ) const
template<unsigned int N>
GlobalError CachingVertex< N >::priorError ( ) const [inline]

Definition at line 94 of file CachingVertex.h.

Referenced by GsfVertexUpdator::add(), and GsfVertexMerger::merge().

{return priorVertexState().error();}
template<unsigned int N>
GlobalPoint CachingVertex< N >::priorPosition ( ) const [inline]

Definition at line 93 of file CachingVertex.h.

Referenced by GsfVertexUpdator::add(), and GsfVertexMerger::merge().

{return priorVertexState().position();}
template<unsigned int N>
VertexState CachingVertex< N >::priorVertexState ( ) const [inline]
template<unsigned int N>
CachingVertex< N >::AlgebraicMatrixMM CachingVertex< N >::tkToTkCovariance ( const RefCountedVertexTrack  t1,
const RefCountedVertexTrack  t2 
) const

Track to track covariance

Definition at line 200 of file CachingVertex.cc.

Referenced by FinalTreeBuilder::momentumPart(), and InvariantMassFromVertex::uncertainty().

{
  if (!tkToTkCovarianceIsAvailable()) {
   throw VertexException("CachingVertex::TkTkCovariance requested before been calculated");
  } 
  else {
    RefCountedVertexTrack tr1;
    RefCountedVertexTrack tr2;
    bool transp = false;
    if(t1 < t2) {
      tr1 = t1;    
      tr2 = t2;
    }
    else {
      tr1 = t2;    
      tr2 = t1;
      transp = true;
    }
    typename TrackToTrackMap::const_iterator it = theCovMap.find(tr1);
    if (it !=  theCovMap.end()) {
      const TrackMap & tm = it->second;
      typename TrackMap::const_iterator nit = tm.find(tr2);
      if (nit != tm.end()) {
        if (transp) return( ROOT::Math::Transpose(nit->second) );
        else return( nit->second);
      }
      else {
        throw VertexException("CachingVertex::requested TkTkCovariance does not exist");
      }       
    }
    else {
      throw VertexException("CachingVertex::requested TkTkCovariance does not exist");
    }     
  }
}
template<unsigned int N>
bool CachingVertex< N >::tkToTkCovarianceIsAvailable ( ) const [inline]
template<unsigned int N>
float CachingVertex< N >::totalChiSquared ( ) const [inline]
template<unsigned int N>
std::vector<RefCountedVertexTrack> CachingVertex< N >::tracks ( void  ) const [inline]
template<unsigned int N>
VertexState CachingVertex< N >::vertexState ( ) const [inline]
template<unsigned int N>
GlobalWeight CachingVertex< N >::weight ( ) const

Definition at line 163 of file CachingVertex.cc.

Referenced by SequentialVertexSmoother< N >::smooth().

{
  return theVertexState.weight();
}
template<unsigned int N>
AlgebraicVector3 CachingVertex< N >::weightTimesPosition ( ) const

Definition at line 170 of file CachingVertex.cc.


Member Data Documentation

template<unsigned int N>
float CachingVertex< N >::theChiSquared [private]

Definition at line 116 of file CachingVertex.h.

Referenced by CachingVertex< 5 >::totalChiSquared().

template<unsigned int N>
TrackToTrackMap CachingVertex< N >::theCovMap [private]

Definition at line 120 of file CachingVertex.h.

Referenced by CachingVertex< N >::CachingVertex().

template<unsigned int N>
bool CachingVertex< N >::theCovMapAvailable [private]
template<unsigned int N>
float CachingVertex< N >::theNDF [mutable, private]

Definition at line 117 of file CachingVertex.h.

template<unsigned int N>
bool CachingVertex< N >::theNDFAvailable [mutable, private]

Definition at line 118 of file CachingVertex.h.

template<unsigned int N>
VertexState CachingVertex< N >::thePriorVertexState [mutable, private]

Definition at line 122 of file CachingVertex.h.

Referenced by CachingVertex< 5 >::priorVertexState().

template<unsigned int N>
std::vector<RefCountedVertexTrack> CachingVertex< N >::theTracks [private]

Definition at line 119 of file CachingVertex.h.

Referenced by CachingVertex< 5 >::tracks().

template<unsigned int N>
bool CachingVertex< N >::theValid [private]

Definition at line 125 of file CachingVertex.h.

Referenced by CachingVertex< 5 >::isValid().

template<unsigned int N>
VertexState CachingVertex< N >::theVertexState [mutable, private]

Definition at line 115 of file CachingVertex.h.

Referenced by CachingVertex< 5 >::vertexState().

template<unsigned int N>
bool CachingVertex< N >::withPrior [private]

Definition at line 123 of file CachingVertex.h.

Referenced by CachingVertex< 5 >::hasPrior().