CMS 3D CMS Logo

Public Member Functions | Private Attributes | Static Private Attributes

Flight2DSvFilter Class Reference

#include <Flight2DSvFilter.h>

List of all members.

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

Detailed Description

Definition at line 8 of file Flight2DSvFilter.h.


Constructor & Destructor Documentation

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.

{}

Member Function Documentation

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()().

                                                                                             {
  double Distance = sqrt (  theTransientVertex.position().x() * theTransientVertex.position().x() 
                      + theTransientVertex.position().y() * theTransientVertex.position().y() );
  return Distance;
}
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; }

Member Data Documentation

const bool Flight2DSvFilter::debug = false [static, private]

Definition at line 38 of file Flight2DSvFilter.h.

Referenced by operator()().

Definition at line 30 of file Flight2DSvFilter.h.

Referenced by Flight2DSvFilter(), and operator()().

Definition at line 32 of file Flight2DSvFilter.h.

Referenced by Flight2DSvFilter(), and operator()().

Definition at line 33 of file Flight2DSvFilter.h.

Referenced by Flight2DSvFilter(), and operator()().

Definition at line 35 of file Flight2DSvFilter.h.

Referenced by Flight2DSvFilter(), operator()(), setPrimaryVertex(), and useNotPV().