CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Protected Attributes

ChargeSignificanceTrajectoryFilter Class Reference

#include <ChargeSignificanceTrajectoryFilter.h>

Inheritance diagram for ChargeSignificanceTrajectoryFilter:
TrajectoryFilter

List of all members.

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 (TempTrajectory &traj) const
virtual bool toBeContinued (Trajectory &traj) const

Protected Member Functions

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

Protected Attributes

double theChargeSignificance

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) [inline, explicit]

Definition at line 17 of file ChargeSignificanceTrajectoryFilter.h.

ChargeSignificanceTrajectoryFilter::ChargeSignificanceTrajectoryFilter ( const edm::ParameterSet pset) [inline, explicit]

Definition at line 19 of file ChargeSignificanceTrajectoryFilter.h.

                                                                            :
    theChargeSignificance(pset.getParameter<double>("chargeSignificance")) {}

Member Function Documentation

virtual std::string ChargeSignificanceTrajectoryFilter::name ( void  ) const [inline, virtual]

Implements TrajectoryFilter.

Definition at line 28 of file ChargeSignificanceTrajectoryFilter.h.

{return "ChargeSignificanceTrajectoryFilter";}
virtual bool ChargeSignificanceTrajectoryFilter::qualityFilter ( const Trajectory traj) const [inline, virtual]

Implements TrajectoryFilter.

Definition at line 22 of file ChargeSignificanceTrajectoryFilter.h.

References Trajectory::isValid().

Referenced by CkfBaseTrajectoryFilter::QF().

{ return traj.isValid();}
virtual bool ChargeSignificanceTrajectoryFilter::qualityFilter ( const TempTrajectory traj) const [inline, virtual]

Implements TrajectoryFilter.

Definition at line 23 of file ChargeSignificanceTrajectoryFilter.h.

References TempTrajectory::isValid().

{ return traj.isValid();}
template<class T >
bool ChargeSignificanceTrajectoryFilter::TBC ( T traj) const [inline, protected]

Definition at line 32 of file ChargeSignificanceTrajectoryFilter.h.

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

                                             {
    const typename T::DataContainer & tms = traj.measurements();
    // Check flip in q-significance. The loop over all TMs could be 
    // avoided by storing the current significant q in the trajectory
    if ( theChargeSignificance>0. ) {
      int qSig(0);
      // skip first two hits (don't rely on significance of q/p)
      for( typename T::DataContainer::size_type itm=2; itm<tms.size(); ++itm ) {
        TrajectoryStateOnSurface tsos = tms[itm].updatedState();
        if ( !tsos.isValid() )  continue;
        double significance = tsos.localParameters().vector()(0) /
          sqrt(tsos.localError().matrix()(0,0));
        // don't deal with measurements compatible with 0
        if ( fabs(significance)<theChargeSignificance )  continue;
        //
        // if charge not yet defined: store first significant Q
        //
        if ( qSig==0 ) {
          qSig = significance>0 ? 1 : -1;
        }
        //
        // else: invalidate and terminate in case of a change of sign
        //
        else {
          if ( (significance<0.&&qSig>0) || (significance>0.&&qSig<0) ) {
            traj.invalidate();
            return false;
          }
        }
      }
    }
    return true;
  }
virtual bool ChargeSignificanceTrajectoryFilter::toBeContinued ( TempTrajectory traj) const [inline, virtual]

Implements TrajectoryFilter.

Definition at line 26 of file ChargeSignificanceTrajectoryFilter.h.

{ return TBC<TempTrajectory>(traj);}
virtual bool ChargeSignificanceTrajectoryFilter::toBeContinued ( Trajectory traj) const [inline, virtual]

Implements TrajectoryFilter.

Definition at line 25 of file ChargeSignificanceTrajectoryFilter.h.

Referenced by CkfBaseTrajectoryFilter::TBC().

{ return TBC<Trajectory>(traj);}

Member Data Documentation

Definition at line 66 of file ChargeSignificanceTrajectoryFilter.h.

Referenced by TBC().