ATLAS Offline Software
InclusiveTrackFilterTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 namespace InDet {
10 
12  {
14  };
15 
16  InclusiveTrackFilterTool::InclusiveTrackFilterTool(const std::string& name) :
17  InDetTrackSystematicsTool(name)
18  {
19 #ifndef XAOD_STANDALONE
20  declareInterface<IInclusiveTrackFilterTool>(this);
21 #endif
22  }
23 
25  {
26 
27  m_rnd = std::make_unique<TRandom3>(m_seed);
28 
29  TH2* trkLRTEff_tmp = nullptr;
30  ATH_CHECK( initObject<TH2>( trkLRTEff_tmp,
31  m_calibFileLRTEff,
32  m_calibHistLRTEff) );
33 
34  m_trkLRTEff = std::unique_ptr<TH2>(trkLRTEff_tmp);
35 
37 
38  return StatusCode::SUCCESS;
39  }
40 
41 
42  InclusiveTrackFilterTool::~InclusiveTrackFilterTool()
43  {
44  }
45 
47  {
48 
49  if ( track == nullptr) {
50  ATH_MSG_DEBUG( "Pointer to track is null!" );
51  return false;
52  }
53 
54  static const SG::ConstAccessor<unsigned long> patternRecoInfoAcc ("patternRecoInfo");
55  if (patternRecoInfoAcc.isAvailable(*track) ) {
56  const std::bitset<xAOD::NumberOfTrackRecoInfo> patternReco = track->patternRecoInfo();
57  if(not patternReco.test(49)) {
58  ATH_MSG_DEBUG( "Applying LRT uncertainties to non-LRT track! Skipping" );
59  return true;
60  }
61  }
62 
63  if ( isActive( TRK_EFF_LARGED0_GLOBAL ) ) {
64  float probDrop = std::abs(m_trkEffSystScale); // default is one; adjust this parameter to increase / decrease the effect
65  probDrop *= std::abs(getTrackUncertainty( track ));
66 
67  if ( m_rnd->Uniform(0, 1) < probDrop ) return false;
68  }
69 
70  return true;
71  }
72 
73  float InclusiveTrackFilterTool::getTrackUncertainty(const xAOD::TrackParticle* track) const
74  {
75  if (m_trkLRTEff == nullptr) {
76  ATH_MSG_ERROR( "LRT track efficiency histogram is not property initialized!" );
77  return 0.;
78  }
79  return m_trkLRTEff->GetBinContent(std::as_const(m_trkLRTEff)->FindBin(track->radiusOfFirstHit(), track->eta()));
80  }
81 
82  bool InclusiveTrackFilterTool::isAffectedBySystematic( const CP::SystematicVariation& syst ) const
83  {
84  return InDetTrackSystematicsTool::isAffectedBySystematic( syst );
85  }
86 
87  CP::SystematicSet InclusiveTrackFilterTool::affectingSystematics() const
88  {
89  return FilterSystematics;
90  }
91 
92  CP::SystematicSet InclusiveTrackFilterTool::recommendedSystematics() const
93  {
94  return InDetTrackSystematicsTool::recommendedSystematics();
95  }
96 
97  StatusCode InclusiveTrackFilterTool::applySystematicVariation( const CP::SystematicSet& systs )
98  {
99  return InDetTrackSystematicsTool::applySystematicVariation(systs);
100  }
101 
102 
103 } // namespace InDet
RootHelpers::FindBin
Int_t FindBin(const TAxis *axis, const double x)
Definition: RootHelpers.cxx:14
InDet
DUMMY Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
initialize
void initialize()
Definition: run_EoverP.cxx:894
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
InclusiveTrackFilterTool.h
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
CP::SystematicVariation
Definition: SystematicVariation.h:47
InDet::FilterSystematics
static const CP::SystematicSet FilterSystematics
Definition: InclusiveTrackFilterTool.cxx:11
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::TrackSystematicMap
static const std::unordered_map< InDet::TrackSystematic, CP::SystematicVariation, std::hash< int > > TrackSystematicMap
Definition: InDetTrackSystematics.h:56
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TH2
Definition: rootspy.cxx:373
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
InDet::TRK_EFF_LARGED0_GLOBAL
@ TRK_EFF_LARGED0_GLOBAL
Definition: InDetTrackSystematics.h:41
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
TrackParticleContainer.h