ATLAS Offline Software
InDetTrackSmearingTool.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 /*
3  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4 */
5 
6 #ifndef INDETTRACKSYSTEMATICSTOOLS_INDETTRACKSMEARINGTOOL_H
7 #define INDETTRACKSYSTEMATICSTOOLS_INDETTRACKSMEARINGTOOL_H
8 
9 // Framework include(s):
10 #include "AsgTools/AsgTool.h"
14 
15 //EDM include(s):
17 
18 // Local include(s):
21 
22 #include <TFile.h>
23 #include <TH2F.h>
24 #include <TF2.h>
25 #include <TRandom3.h>
26 
27 namespace InDet {
28 
30  : public virtual IInDetTrackSmearingTool
31  , public virtual InDetTrackSystematicsTool
32  , public virtual CP::CorrectionTool< xAOD::TrackParticleContainer >
33  {
34 
38  public:
40  InDetTrackSmearingTool( const std::string& name );
41 
43  virtual StatusCode initialize() override;
46 
47  // we need explicit forwarding calls because CP::CorrectionTool does not have a pure interface
48  // this isn't really elegant (ideally these would come automatically) but we'd need IInDetTrackSmearingTool
49  // to inherit from CP::CorrectionTool, which would make it not pure-virtual.
50  // at least, forwarding calls are easy enough to read and understand.
52  xAOD::TrackParticle*& out ) override;
54 
56  virtual bool isAffectedBySystematic( const CP::SystematicVariation& ) const override;
58  virtual CP::SystematicSet affectingSystematics() const override;
60  virtual CP::SystematicSet recommendedSystematics() const override;
62  virtual StatusCode applySystematicVariation( const CP::SystematicSet& ) override;
63 
64  private:
65 
67  float GetSmearD0Sigma(const xAOD::TrackParticle&) const;
68  float GetSmearZ0Sigma(const xAOD::TrackParticle&) const;
69 
70  Gaudi::Property<int> m_seed{this, "Seed", 0};
71  std::unique_ptr<TRandom3> m_rnd;
72 
73  // StatusCode initHistogram(TH1*& histogram, std::string rootFileName, std::string histogramName) const;
74  // StatusCode initFunction(TF2*& function, std::string rootFileName, std::string functionName) const;
75  float readHistogram( const TH2*, float pt, float eta ) const;
76 
77  // float readHistogram(TH1* histogram, float pt, float eta) const;
78  // float readHistograms(std::vector<TH1 *> histogram, float pt, float eta) const;
79  // histograms for dead module smearing as a function of p
80  std::unique_ptr<TH2> m_smearD0 = nullptr;
81  std::unique_ptr<TH2> m_smearZ0 = nullptr;
82 
83  // allow the user to configure which calibration files to use if desired
84  Gaudi::Property<std::string> m_calibFileIP_CTIDE{this, "calibFileIP_CTIDE", ""};
85  };
86 
87 }
88 
89 #endif
CorrectionTool.h
InDet::InDetTrackSystematicsTool
Definition: InDetTrackSystematicsTool.h:22
PropertyWrapper.h
InDet::InDetTrackSmearingTool::correctedCopy
virtual CP::CorrectionCode correctedCopy(const xAOD::TrackParticle &in, xAOD::TrackParticle *&out) override
Definition: InDetTrackSmearingTool.cxx:142
InDet::InDetTrackSmearingTool::m_rnd
std::unique_ptr< TRandom3 > m_rnd
Definition: InDetTrackSmearingTool.h:71
InDet::InDetTrackSmearingTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &) override
configure the tool to apply a given list of systematic variations
Definition: InDetTrackSmearingTool.cxx:169
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
IInDetTrackSmearingTool.h
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
InDet::InDetTrackSmearingTool::recommendedSystematics
virtual CP::SystematicSet recommendedSystematics() const override
returns: list of recommended systematics to use with this tool
Definition: InDetTrackSmearingTool.cxx:163
InDet::InDetTrackSmearingTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::TrackParticle &ID) override
Smearing method.
Definition: InDetTrackSmearingTool.cxx:127
CP::SystematicVariation
Definition: SystematicVariation.h:47
InDet::InDetTrackSmearingTool
Definition: InDetTrackSmearingTool.h:33
InDet::IInDetTrackSmearingTool
Simple interface for calibrating/correcting tracks (inner-detector particles)
Definition: IInDetTrackSmearingTool.h:33
InDet::InDetTrackSmearingTool::m_seed
Gaudi::Property< int > m_seed
Definition: InDetTrackSmearingTool.h:70
InDet::InDetTrackSmearingTool::applyContainerCorrection
virtual CP::CorrectionCode applyContainerCorrection(xAOD::TrackParticleContainer &cont) override
Definition: InDetTrackSmearingTool.cxx:148
InDet::InDetTrackSmearingTool::readHistogram
float readHistogram(const TH2 *, float pt, float eta) const
Definition: InDetTrackSmearingTool.cxx:175
InDet::InDetTrackSmearingTool::GetSmearZ0Sigma
float GetSmearZ0Sigma(const xAOD::TrackParticle &) const
Definition: InDetTrackSmearingTool.cxx:98
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
InDet::InDetTrackSmearingTool::m_smearZ0
std::unique_ptr< TH2 > m_smearZ0
Definition: InDetTrackSmearingTool.h:81
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
InDet::InDetTrackSmearingTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const override
returns: list of systematics this tool can be affected by
Definition: InDetTrackSmearingTool.cxx:158
InDet::InDetTrackSmearingTool::m_smearD0
std::unique_ptr< TH2 > m_smearD0
Definition: InDetTrackSmearingTool.h:80
CP::CorrectionTool
Helper base class for "correction tools".
Definition: CorrectionTool.h:42
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
InDetTrackSystematicsTool.h
InDet::InDetTrackSystematicsTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: InDetTrackSystematicsTool.cxx:17
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
AsgTool.h
SystematicVariation.h
TrackParticleContainer.h
InDet::InDetTrackSmearingTool::m_calibFileIP_CTIDE
Gaudi::Property< std::string > m_calibFileIP_CTIDE
Definition: InDetTrackSmearingTool.h:84
InDet::InDetTrackSmearingTool::GetSmearD0Sigma
float GetSmearD0Sigma(const xAOD::TrackParticle &) const
Get smearing widths to add to IPs.
Definition: InDetTrackSmearingTool.cxx:68
InDet::InDetTrackSmearingTool::isAffectedBySystematic
virtual bool isAffectedBySystematic(const CP::SystematicVariation &) const override
returns: whether the tool is affected by the systematic
Definition: InDetTrackSmearingTool.cxx:153