CMS 3D CMS Logo

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

#include <ChargeSignificanceTrajectoryFilter.h>

Inheritance diagram for ChargeSignificanceTrajectoryFilter:
TrajectoryFilter

Public Member Functions

 ChargeSignificanceTrajectoryFilter (double qsig)
 
 ChargeSignificanceTrajectoryFilter (const edm::ParameterSet &pset)
 
virtual std::string name () const
 
virtual bool qualityFilter (const Trajectory &traj) const
 
virtual bool qualityFilter (const TempTrajectory &traj) const
 
virtual bool toBeContinued (Trajectory &traj) const
 
virtual bool toBeContinued (TempTrajectory &traj) const
 
- Public Member Functions inherited from TrajectoryFilter
virtual bool operator() (TempTrajectory &t) const
 
virtual bool operator() (Trajectory &t) const
 
virtual ~TrajectoryFilter ()
 

Protected Member Functions

template<class T >
bool TBC (T &traj) const
 

Protected Attributes

double theChargeSignificance
 

Additional Inherited Members

- Public Types inherited from TrajectoryFilter
typedef CkfComponentsRecord Record
 
- Static Public Attributes inherited from TrajectoryFilter
static const bool qualityFilterIfNotContributing =true
 
static const bool toBeContinuedIfNotContributing =true
 

Detailed Description

A TrajectoryFilter that stops reconstruction if P_t drops below some value at some confidence level. The CkfTrajectoryBuilder uses this class to implement the minimal P_t cut.

Definition at line 14 of file ChargeSignificanceTrajectoryFilter.h.

Constructor & Destructor Documentation

ChargeSignificanceTrajectoryFilter::ChargeSignificanceTrajectoryFilter ( double  qsig)
inlineexplicit
ChargeSignificanceTrajectoryFilter::ChargeSignificanceTrajectoryFilter ( const edm::ParameterSet pset)
inlineexplicit

Definition at line 19 of file ChargeSignificanceTrajectoryFilter.h.

19  :
20  theChargeSignificance(pset.getParameter<double>("chargeSignificance")) {}
T getParameter(std::string const &) const

Member Function Documentation

virtual std::string ChargeSignificanceTrajectoryFilter::name ( void  ) const
inlinevirtual

Implements TrajectoryFilter.

Definition at line 28 of file ChargeSignificanceTrajectoryFilter.h.

28 {return "ChargeSignificanceTrajectoryFilter";}
virtual bool ChargeSignificanceTrajectoryFilter::qualityFilter ( const Trajectory traj) const
inlinevirtual

Implements TrajectoryFilter.

Definition at line 22 of file ChargeSignificanceTrajectoryFilter.h.

References Trajectory::isValid().

Referenced by CkfBaseTrajectoryFilter::QF().

22 { return traj.isValid();}
bool isValid() const
Definition: Trajectory.h:259
virtual bool ChargeSignificanceTrajectoryFilter::qualityFilter ( const TempTrajectory traj) const
inlinevirtual

Implements TrajectoryFilter.

Definition at line 23 of file ChargeSignificanceTrajectoryFilter.h.

References TempTrajectory::isValid().

23 { return traj.isValid();}
bool isValid() const
template<class T >
bool ChargeSignificanceTrajectoryFilter::TBC ( T traj) const
inlineprotected

Definition at line 32 of file ChargeSignificanceTrajectoryFilter.h.

References TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), LocalTrajectoryError::matrix(), mathSSE::sqrt(), theChargeSignificance, and LocalTrajectoryParameters::vector().

32  {
33  const typename T::DataContainer & tms = traj.measurements();
34  // Check flip in q-significance. The loop over all TMs could be
35  // avoided by storing the current significant q in the trajectory
36  if ( theChargeSignificance>0. ) {
37  int qSig(0);
38  // skip first two hits (don't rely on significance of q/p)
39  for( typename T::DataContainer::size_type itm=2; itm<tms.size(); ++itm ) {
40  TrajectoryStateOnSurface tsos = tms[itm].updatedState();
41  if ( !tsos.isValid() ) continue;
42  double significance = tsos.localParameters().vector()(0) /
43  sqrt(tsos.localError().matrix()(0,0));
44  // don't deal with measurements compatible with 0
45  if ( fabs(significance)<theChargeSignificance ) continue;
46  //
47  // if charge not yet defined: store first significant Q
48  //
49  if ( qSig==0 ) {
50  qSig = significance>0 ? 1 : -1;
51  }
52  //
53  // else: invalidate and terminate in case of a change of sign
54  //
55  else {
56  if ( (significance<0.&&qSig>0) || (significance>0.&&qSig<0) ) {
57  traj.invalidate();
58  return false;
59  }
60  }
61  }
62  }
63  return true;
64  }
const LocalTrajectoryParameters & localParameters() const
uint16_t size_type
AlgebraicVector5 vector() const
T sqrt(T t)
Definition: SSEVec.h:46
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
virtual bool ChargeSignificanceTrajectoryFilter::toBeContinued ( Trajectory traj) const
inlinevirtual

Implements TrajectoryFilter.

Definition at line 25 of file ChargeSignificanceTrajectoryFilter.h.

Referenced by CkfBaseTrajectoryFilter::TBC().

25 { return TBC<Trajectory>(traj);}
virtual bool ChargeSignificanceTrajectoryFilter::toBeContinued ( TempTrajectory traj) const
inlinevirtual

Implements TrajectoryFilter.

Definition at line 26 of file ChargeSignificanceTrajectoryFilter.h.

26 { return TBC<TempTrajectory>(traj);}

Member Data Documentation

double ChargeSignificanceTrajectoryFilter::theChargeSignificance
protected

Definition at line 66 of file ChargeSignificanceTrajectoryFilter.h.

Referenced by TBC().