![]() |
![]() |
#include <Flight2DSvFilter.h>
Public Member Functions | |
double | DistanceSignificance2DToBeamLine (const TransientVertex &) const |
double | DistanceToBeamLine (const TransientVertex &) const |
Flight2DSvFilter (double, double, double, int) | |
Flight2DSvFilter (TransientVertex, double, double, double, int) | |
Flight2DSvFilter () | |
TransientVertex | getPrimaryVertex () const |
bool | operator() (const TransientVertex &) const |
void | setPrimaryVertex (const TransientVertex &) |
void | useNotPV () |
~Flight2DSvFilter () | |
Private Attributes | |
double | maxFlightDist2D |
double | minFlightDist2D |
double | minFlightDistSignificance2D |
int | minTracksInVertex |
TransientVertex | PrimaryVertex |
bool | usePrimaryVertex |
Static Private Attributes | |
static const bool | debug = false |
Definition at line 8 of file Flight2DSvFilter.h.
Flight2DSvFilter::Flight2DSvFilter | ( | ) |
Definition at line 7 of file Flight2DSvFilter.cc.
References maxFlightDist2D, minFlightDist2D, minFlightDistSignificance2D, minTracksInVertex, and usePrimaryVertex.
{ // init. data members maxFlightDist2D = 2.5 ; // cm minFlightDist2D = 0.01 ; // cm minFlightDistSignificance2D = 3.0 ; minTracksInVertex = 2 ; usePrimaryVertex = false; }
Flight2DSvFilter::Flight2DSvFilter | ( | double | maxDist2D = 2.5 , |
double | minDist2D = 0.01 , |
||
double | minSign2D = 3.0 , |
||
int | minTracks = 2 |
||
) |
Definition at line 17 of file Flight2DSvFilter.cc.
References maxFlightDist2D, minFlightDist2D, minFlightDistSignificance2D, minTracksInVertex, and usePrimaryVertex.
{ // init. data members maxFlightDist2D = maxDist2D ; // cm minFlightDist2D = minDist2D ; // cm minFlightDistSignificance2D = minSign2D ; minTracksInVertex = minTracks ; usePrimaryVertex = false; }
Flight2DSvFilter::Flight2DSvFilter | ( | TransientVertex | primaryVertex, |
double | maxDist2D = 2.5 , |
||
double | minDist2D = 0.01 , |
||
double | minSign2D = 3.0 , |
||
int | minTracks = 2 |
||
) |
Definition at line 26 of file Flight2DSvFilter.cc.
References TransientVertex::isValid(), maxFlightDist2D, minFlightDist2D, minFlightDistSignificance2D, minTracksInVertex, PrimaryVertex, and usePrimaryVertex.
{ // init. data members maxFlightDist2D = maxDist2D ; // cm minFlightDist2D = minDist2D ; // cm minFlightDistSignificance2D = minSign2D ; minTracksInVertex = minTracks ; if(primaryVertex.isValid()) { PrimaryVertex = primaryVertex; usePrimaryVertex = true; } else usePrimaryVertex = false; }
Flight2DSvFilter::~Flight2DSvFilter | ( | ) | [inline] |
Definition at line 15 of file Flight2DSvFilter.h.
{}
double Flight2DSvFilter::DistanceSignificance2DToBeamLine | ( | const TransientVertex & | theTransientVertex | ) | const |
Definition at line 82 of file Flight2DSvFilter.cc.
References GlobalErrorBase< T, ErrorWeightType >::cxx(), GlobalErrorBase< T, ErrorWeightType >::cyx(), GlobalErrorBase< T, ErrorWeightType >::cyy(), DistanceToBeamLine(), minFlightDist2D, TransientVertex::position(), TransientVertex::positionError(), mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by operator()().
{ double sigmaX = 0.0015 ; double covXp2 = sigmaX * sigmaX; // error on beam double sigmaY = 0.0015 ; double covYp2 = sigmaY * sigmaY; // error on beam double xS = ( theTransientVertex.position().x() ); double xS2 = xS*xS ; double yS = ( theTransientVertex.position().y() ); double yS2 = yS*yS ; double covXs2 = theTransientVertex.positionError().cxx(); double covYs2 = theTransientVertex.positionError().cyy(); double covXsYs = theTransientVertex.positionError().cyx(); double DistanceToBeam = DistanceToBeamLine( theTransientVertex ); double sigmaDistance = 0.0; if(DistanceToBeam > 0.0) sigmaDistance = ( 1 / (DistanceToBeam * DistanceToBeam) ) * ( xS2 * covXs2 + xS2 * covXp2 + yS2 * covYs2 + yS2 * covYp2 + 2 * xS * yS * covXsYs ); double SignificanceForSv=0.0; if( DistanceToBeam - minFlightDist2D >0 && sigmaDistance > 0.0) SignificanceForSv = (DistanceToBeam) / sqrt(sigmaDistance); return(SignificanceForSv); }
double Flight2DSvFilter::DistanceToBeamLine | ( | const TransientVertex & | theTransientVertex | ) | const |
Definition at line 75 of file Flight2DSvFilter.cc.
References TransientVertex::position(), mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by DistanceSignificance2DToBeamLine(), and operator()().
TransientVertex Flight2DSvFilter::getPrimaryVertex | ( | ) | const [inline] |
Definition at line 22 of file Flight2DSvFilter.h.
References PrimaryVertex.
{ return PrimaryVertex; }
bool Flight2DSvFilter::operator() | ( | const TransientVertex & | VertexToFilter | ) | const |
Definition at line 40 of file Flight2DSvFilter.cc.
References gather_cfg::cout, debug, DistanceOfVertices2D::distance(), DistanceSignificance2DToBeamLine(), DistanceToBeamLine(), funct::false, maxFlightDist2D, minFlightDist2D, minFlightDistSignificance2D, minTracksInVertex, TransientVertex::originalTracks(), PrimaryVertex, Measurement1D::significance(), funct::true, usePrimaryVertex, and Measurement1D::value().
{ bool passed = true ; double flightDist=0; double SignificanceForFlightDist=0; if( usePrimaryVertex ) { if (debug) std::cout <<"[Flight2DSvFilter] using PV\n"; DistanceOfVertices2D MyDistanceOfVertices2D; Measurement1D DistanceMeasurement = MyDistanceOfVertices2D.distance( PrimaryVertex , VertexToFilter ); flightDist = DistanceMeasurement.value(); SignificanceForFlightDist = DistanceMeasurement.significance(); } else { if (debug) std::cout <<"[Flight2DSvFilter] NOT using PV\n"; flightDist = DistanceToBeamLine( VertexToFilter ); SignificanceForFlightDist = DistanceSignificance2DToBeamLine( VertexToFilter ); } int NrTracksInVertex = VertexToFilter.originalTracks().size(); if (debug) std::cout <<"[Flight2DSvFilter] ntracks,flightdist,flightdistsign: "<<NrTracksInVertex<<","<<flightDist<<","<<SignificanceForFlightDist<<std::endl; // check condidtions 1 by 1 if ( flightDist > maxFlightDist2D ) passed = false ; if ( flightDist < minFlightDist2D ) passed = false ; if ( SignificanceForFlightDist < minFlightDistSignificance2D ) passed = false ; if ( NrTracksInVertex < minTracksInVertex ) passed = false ; if (debug && !passed) std::cout <<"[Flight2DSvFilter] failed!\n"; return passed ; }
void Flight2DSvFilter::setPrimaryVertex | ( | const TransientVertex & | primaryVertex | ) |
Definition at line 110 of file Flight2DSvFilter.cc.
References PrimaryVertex, and usePrimaryVertex.
{ PrimaryVertex = primaryVertex; usePrimaryVertex = true; }
void Flight2DSvFilter::useNotPV | ( | ) | [inline] |
Definition at line 25 of file Flight2DSvFilter.h.
References usePrimaryVertex.
{ usePrimaryVertex = false; }
const bool Flight2DSvFilter::debug = false [static, private] |
Definition at line 38 of file Flight2DSvFilter.h.
Referenced by operator()().
double Flight2DSvFilter::maxFlightDist2D [private] |
Definition at line 30 of file Flight2DSvFilter.h.
Referenced by Flight2DSvFilter(), and operator()().
double Flight2DSvFilter::minFlightDist2D [private] |
Definition at line 31 of file Flight2DSvFilter.h.
Referenced by DistanceSignificance2DToBeamLine(), Flight2DSvFilter(), and operator()().
double Flight2DSvFilter::minFlightDistSignificance2D [private] |
Definition at line 32 of file Flight2DSvFilter.h.
Referenced by Flight2DSvFilter(), and operator()().
int Flight2DSvFilter::minTracksInVertex [private] |
Definition at line 33 of file Flight2DSvFilter.h.
Referenced by Flight2DSvFilter(), and operator()().
Definition at line 34 of file Flight2DSvFilter.h.
Referenced by Flight2DSvFilter(), getPrimaryVertex(), operator()(), and setPrimaryVertex().
bool Flight2DSvFilter::usePrimaryVertex [private] |
Definition at line 35 of file Flight2DSvFilter.h.
Referenced by Flight2DSvFilter(), operator()(), setPrimaryVertex(), and useNotPV().