Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
12 #include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
14 #include "GaudiKernel/IToolSvc.h"
21 static const InterfaceID IID_ITrackSelector(
"Analysis::TrackSelector", 1, 0);
24 const std::string&
name,
const IInterface*
parent) :
30 declareInterface<TrackSelector>(
this);
69 return IID_ITrackSelector;
77 return StatusCode::FAILURE;
85 ATH_MSG_INFO(
"Using InDetEtaDependentCutsSvc. Track selections from config not used");
157 return StatusCode::SUCCESS;
165 return StatusCode::SUCCESS;
173 std::bitset<17> failedCuts;
179 std::bitset<17>& failedCuts,
187 trackD0 = track->d0();
188 trackZ0 = track->z0() -
pv.z();
189 tracksigD0 = std::sqrt(track->definingParametersCovMatrix()(0,0));
190 tracksigZ0 = std::sqrt(track->definingParametersCovMatrix()(1,1));
193 auto ctx = Gaudi::Hive::currentContext();
195 if (perigee==
nullptr) {
199 trackD0 = perigee->parameters()[
Trk::d0];
200 trackZ0 = perigee->parameters()[
Trk::z0];
201 tracksigD0 = std::sqrt((*perigee->covariance())(
Trk::d0,
Trk::d0));
202 tracksigZ0 = std::sqrt((*perigee->covariance())(
Trk::z0,
Trk::z0));
206 <<
" Eta= " << track->eta() <<
" Phi= " << track->phi() <<
" pT= " <<track->pt()
207 <<
" d0= " << trackD0
208 <<
" z0= " << trackZ0 <<
" sigd0= " << tracksigD0 <<
" sigz0: " << tracksigZ0 );
211 double eta = track->eta();
214 if(track->pt() < pTMin_cut) {
216 failedCuts.set(
pTMin);
219 failedCuts.set(
pTMin);
223 if(std::abs(trackD0)>d0_cut) {
225 failedCuts.set(
d0Max);
229 if(std::abs(trackZ0*
sin(track->theta()))>z0_cut) {
231 failedCuts.set(
z0Max);
250 if(std::abs(track->eta())>eta_cut) {
266 ATH_MSG_WARNING(
"#BTAG# expectInnermostPixelLayerHit not computed in TrackSummary: assuming true");
279 if(nhp>=PixHole_cut) {
306 if(
ns < SCTStrip_cut) {
312 if((
np+
ns) < Si_cut) {
339 bool innerHitsCrit = ((nibl+nnibl)>0);
340 bool lowetaCrit = fabs(track->eta())> 1.65 && (
ns+
np)>=11;
341 bool highetaCrit = fabs(track->eta())<=1.65 && (
ns+
np)>=9 ;
342 bool pixholeCrit = (nhp==0) ;
343 bool isTight = innerHitsCrit && pixholeCrit && (lowetaCrit || highetaCrit);
353 double chi2 = track->chiSquared();
354 int ndf = track->numberDoF();
357 Genfun::CumulativeChiSquare myCumulativeChiSquare(
ndf);
358 proba = 1.-myCumulativeChiSquare(
chi2);
382 int passl = ~failedCuts[(
m_Cuts)
i];
static const InterfaceID & interfaceID()
bool m_useAntiPileUpCuts
location of shared map in StoreGate
double m_z0Max
max. d0: |d0|<d0Max
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
bool m_useTrackSummaryInfo
max. pseudo-rapidity
bool m_useDeadSctInfo
if true uses dead pixel sensors from conddb (except b-layer) to compute nPix
bool selectTrack(const Amg::Vector3D &pv, const xAOD::TrackParticle *track, double refPt=0) const
Returns true if the argument track fulfills the selection.
int m_nHitSi
at least n hits in SCT
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
double m_fitChi2OnNdfMax
min. fit chi2 probability
virtual StatusCode finalize() override
bool msgLvl(const MSG::Level lvl) const
double m_pTMin
if true use perigee parameters instead of parameters w.r.t. primary vertex
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
@ numberOfTRTHits
number of TRT hits [unit8_t].
#define ATH_MSG_VERBOSE(x)
int m_antiPileUpNHolePixCut
virtual StatusCode initialize() override
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
double m_antiPileUpSigZ0Cut
std::string m_inputTrackCollection
bool m_useDeadPixInfo
at least n transition hits in TRT
::StatusCode StatusCode
StatusCode definition for legacy code.
bool m_useBLayerHitPrediction
if false the following cuts are ignored
bool m_usepTDepTrackSel
min. pT: |pT|>pTMin
double chi2(TH1 *h0, TH1 *h1)
int m_antiPileUpNHitSiCut
bool m_usePerigeeParameters
Properties for V0 finding: not yet implemented.
bool m_useTrackingTightDefinition
The namespace of all packages in PhysicsAnalysis/JetTagging.
std::string m_outputTrackCollection
location of inputTracks in StoreGate
bool m_useEtaDependentCuts
Eigen::Matrix< double, 3, 1 > Vector3D
int m_nHitPix
at least n hits in Blayer
double m_sigd0Max
max. z0:
bool m_useTrackQualityInfo
if true uses dead SCT sensors to compute nSct
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
int m_nHitSct
at least n hits in pixels
std::atomic< int > m_ntrc[numCuts]
#define ATH_MSG_WARNING(x)
double m_antiPileUpSigD0Cut
activate antiPU cut d0z0
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
double m_fitProb
max. fit chi2
TrackSelector(const std::string &type, const std::string &name, const IInterface *parent)
@ numberOfSCTHits
number of hits in SCT [unit8_t].
ServiceHandle< InDet::IInDetEtaDependentCutsSvc > m_etaDependentCutsSvc
service to get cut values depending on different variable
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Class describing a TrackParticle.
int m_nHitTrtHighE
at least n hits in TRT
int m_nHitTrt
at least n hits in pixels+SCT
double m_fitChi2
if false the following cuts are ignored
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer