12 #include "CLHEP/Units/SystemOfUnits.h"
20 m_applySinThetaCorrection(true),
25 m_extrapolator(
"Trk::Extrapolator/InDetExtrapolator"),
28 declareInterface<Trk::IIsoTrackSelectorTool>(
this);
55 return StatusCode::FAILURE;
62 return StatusCode::FAILURE;
65 return StatusCode::SUCCESS;
95 if (!trackParameters){
96 ATH_MSG_DEBUG(
"No parameters to start from on track, discard this one.");
104 ATH_MSG_VERBOSE(
"TrackParticle " << (
passed ?
"passed" :
"did not pass") <<
" isolation track selector.");
117 Gaudi::Hive::currentContext(),
123 if (!trackAtBL)
return false;
125 double d0track_wrtBL = trackAtBL->parameters()[
Trk::d0];
127 double z0track_wrtBL = trackAtBL->parameters()[
Trk::z0]*sinTheta;
129 double z0ref_wrtBL = atl.parameters()[
Trk::z0] * sinThetaRef;
134 << d0track_wrtBL <<
" (cut is : | " <<
m_d0max <<
" | ).");
138 <<
" cut wrt reference :"
139 << (z0track_wrtBL-z0ref_wrtBL) <<
" (cut is : | " <<
m_z0stMax <<
" | ).");
142 if (!trackAtBL->covariance()){
143 ATH_MSG_VERBOSE(
"Can not apply significance cut on Parameters w/o Error. Ignore Track.");
150 double d0sig2 = (d0track_wrtBL*d0track_wrtBL)/covTrackD0;
152 ATH_MSG_VERBOSE(
"TrackParameters " << (
passed ?
"passed" :
"did not pass" ) <<
" d0 significance^2 cut wrt BL : "
154 double deltaZ = z0ref_wrtBL - z0track_wrtBL;
155 double z0Err2 = covTrackZ0;
162 double dZIPdTheta =
deltaZ*cosTheta;
163 double dZIPdz0 = sinTheta;
164 double DTheta2 = dZIPdTheta*dZIPdTheta*covTrackTheta;
165 double DZ02 = dZIPdz0*dZIPdz0*covTrackZ0;
166 double DThetaZ0 = 2.*dZIPdTheta*dZIPdz0*covTrackZ0Theta;
168 z0Err2 = DTheta2 + DZ02 + DThetaZ0;
172 ATH_MSG_VERBOSE(
"TrackParameters " << (
passed ?
"passed" :
"did not pass" ) <<
" z0*sin(theta) significance cut wrt BL : "