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 Referencefinal

#include <ChargeSignificanceTrajectoryFilter.h>

Inheritance diagram for ChargeSignificanceTrajectoryFilter:
TrajectoryFilter

Public Member Functions

 ChargeSignificanceTrajectoryFilter (float qsig)
 
 ChargeSignificanceTrajectoryFilter (const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
 
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 void setEvent (const edm::Event &iEvent, const edm::EventSetup &iSetup)
 
virtual ~TrajectoryFilter ()
 

Protected Member Functions

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

Protected Attributes

float 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 ( float  qsig)
inlineexplicit
ChargeSignificanceTrajectoryFilter::ChargeSignificanceTrajectoryFilter ( const edm::ParameterSet pset,
edm::ConsumesCollector iC 
)
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
virtual bool ChargeSignificanceTrajectoryFilter::qualityFilter ( const Trajectory traj) const
inlinevirtual

Implements TrajectoryFilter.

Definition at line 22 of file ChargeSignificanceTrajectoryFilter.h.

References Trajectory::isValid().

22 { return traj.isValid();}
bool isValid() const
Definition: Trajectory.h:269
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 funct::abs(), 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 
37  if ( theChargeSignificance>0. ) {
38 
39  float qSig = 0;
40 
41  // skip first two hits (don't rely on significance of q/p)
42  for( typename T::DataContainer::size_type itm=2; itm<tms.size(); ++itm ) {
43  TrajectoryStateOnSurface const & tsos = tms[itm].updatedState();
44  if ( !tsos.isValid() ) continue;
45 
46  auto significance = tsos.localParameters().vector()(0) /
47  std::sqrt(float(tsos.localError().matrix()(0,0)));
48 
49  // don't deal with measurements compatible with 0
50  if ( std::abs(significance)<theChargeSignificance ) continue;
51 
52  //
53  // if charge not yet defined: store first significant Q
54  //
55  if ( qSig==0 ) qSig = significance;
56 
57  //
58  // invalidate and terminate in case of a change of sign
59  //
60  if (significance*qSig<0) {
61  traj.invalidate();
62  return false;
63  }
64  }
65  }
66  return true;
67  }
const LocalTrajectoryParameters & localParameters() const
uint16_t size_type
AlgebraicVector5 vector() const
T sqrt(T t)
Definition: SSEVec.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
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.

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

float ChargeSignificanceTrajectoryFilter::theChargeSignificance
protected

Definition at line 69 of file ChargeSignificanceTrajectoryFilter.h.

Referenced by TBC().