ATLAS Offline Software
MuonCaloEnergyTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /***************************************************************************
6 MuonCaloEnergyTool.h - Description
7 -------------------
8 ***************************************************************************/
9 #ifndef MUONCALOENERGYTOOL_H
10 #define MUONCALOENERGYTOOL_H
11 
14 #include "GaudiKernel/ToolHandle.h"
16 #include "PathLengthUtils.h"
23 
24 namespace Rec {
25  class IParticleCaloCellAssociationTool;
26 }
27 
28 namespace Trk {
29  class IParticleCaloExtensionTool;
30  class ITrackParticleCreatorTool;
31  class CaloExtension;
32 } // namespace Trk
33 
34 namespace Rec {
35 
36  class MuonCaloEnergyTool : virtual public IMuonCaloEnergyTool, public AthAlgTool {
37  public:
38  MuonCaloEnergyTool(const std::string&, const std::string&, const IInterface*);
39 
40  virtual ~MuonCaloEnergyTool() = default;
41 
42  virtual StatusCode initialize() override;
43 
44  void calculateMuonEnergies(const Trk::Track* trk, double deltaE, double meanIoni, double sigmaIoni, double& E, double& sigma,
45  double& E_FSR, double& E_expected, double& E_em_meas, double& E_em_exp, double& E_tile_meas,
46  double& E_tile_exp, double& E_HEC_meas, double& E_HEC_exp, double& E_dead_exp,
47  std::vector<Identifier>* crossedCells = 0, std::vector<double>* sigmaNoise_cell = 0,
48  std::vector<double>* E_exp_cell = 0) const override;
49 
50  private:
51  ToolHandle<Trk::IParticleCaloExtensionTool> m_caloExtensionTool {this, "ParticleCaloExtensionTool", "", "Tool to make the step-wise extrapolation"};
52  ToolHandle<Rec::IParticleCaloCellAssociationTool> m_caloCellAssociationTool {this, "ParticleCaloCellAssociationTool", "", "Tool to make the cell association"};
53  ToolHandle<Trk::ITrackParticleCreatorTool> m_particleCreator {this,"TrackParticleCreator", "", "The CB Particle Creator Tool"};
54 
55  SG::ReadCondHandleKey<CaloNoise> m_caloNoiseCDOKey{this, "CaloNoiseKey", "totalNoise", "SG Key of CaloNoise data object"};
56 
57  // DATA MEMBERS
58  Gaudi::Property<double> m_sigmasAboveNoise {this, "SigmasAboveNoise", 4.0 };
59  Gaudi::Property<double> m_emEtCut {this, "EmEtCut", 2.5* Gaudi::Units::GeV };
60  Gaudi::Property<double> m_emF1Cut {this, "EmF1Cut", 0.15 };
61 
62  static constexpr double m_emipEM {0.42};
63  static constexpr double m_emipTile {0.86};
64  static constexpr double m_emipHEC {0.65};
65 
66  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_indetTrackParticleLocation{this, "TrackParticleLocation", "InDetTrackParticles",
67  "ID track particles"};
69  "MuonSpectrometerTrackParticles", "MS track particles"};
70 
71  // PRIVATE METHODS
72  double thresholdCorrection(double E_observed, double E_expected, double sigma_Noise) const;
73  static double etaCorr(double eta) ;
74  };
75 
76 } // namespace Rec
77 
78 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
IMuonCaloEnergyTool.h
Rec::MuonCaloEnergyTool::m_emipTile
static constexpr double m_emipTile
Definition: MuonCaloEnergyTool.h:63
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
Rec::MuonCaloEnergyTool
Definition: MuonCaloEnergyTool.h:36
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
CaloCellSelectorLayerdR.h
Rec::MuonCaloEnergyTool::m_emF1Cut
Gaudi::Property< double > m_emF1Cut
Definition: MuonCaloEnergyTool.h:60
Rec::MuonCaloEnergyTool::etaCorr
static double etaCorr(double eta)
Definition: MuonCaloEnergyTool.cxx:517
Rec::MuonCaloEnergyTool::initialize
virtual StatusCode initialize() override
Definition: MuonCaloEnergyTool.cxx:29
Rec::MuonCaloEnergyTool::MuonCaloEnergyTool
MuonCaloEnergyTool(const std::string &, const std::string &, const IInterface *)
Definition: MuonCaloEnergyTool.cxx:23
Rec::MuonCaloEnergyTool::m_caloNoiseCDOKey
SG::ReadCondHandleKey< CaloNoise > m_caloNoiseCDOKey
Definition: MuonCaloEnergyTool.h:55
Rec::IMuonCaloEnergyTool
Interface for extending Particles with calo cells.
Definition: IMuonCaloEnergyTool.h:28
ITrackParticleCreatorTool.h
SG::ReadHandleKey< xAOD::TrackParticleContainer >
Rec::MuonCaloEnergyTool::m_indetTrackParticleLocation
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_indetTrackParticleLocation
Definition: MuonCaloEnergyTool.h:66
Rec::MuonCaloEnergyTool::m_emEtCut
Gaudi::Property< double > m_emEtCut
Definition: MuonCaloEnergyTool.h:59
Rec::MuonCaloEnergyTool::m_caloExtensionTool
ToolHandle< Trk::IParticleCaloExtensionTool > m_caloExtensionTool
Definition: MuonCaloEnergyTool.h:51
PathLengthUtils.h
Rec::MuonCaloEnergyTool::m_particleCreator
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreator
Definition: MuonCaloEnergyTool.h:53
Rec
Name: MuonSpContainer.h Package : offline/Reconstruction/MuonIdentification/muonEvent.
Definition: FakeTrackBuilder.h:10
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
Rec::MuonCaloEnergyTool::m_muonTrackParticleLocation
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_muonTrackParticleLocation
Definition: MuonCaloEnergyTool.h:68
IParticleCaloCellAssociationTool.h
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
ParticleCellAssociation.h
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
CaloNoise.h
Rec::MuonCaloEnergyTool::m_emipEM
static constexpr double m_emipEM
Definition: MuonCaloEnergyTool.h:62
SG::ReadCondHandleKey< CaloNoise >
IParticleCaloExtensionTool.h
Rec::MuonCaloEnergyTool::m_caloCellAssociationTool
ToolHandle< Rec::IParticleCaloCellAssociationTool > m_caloCellAssociationTool
Definition: MuonCaloEnergyTool.h:52
Rec::MuonCaloEnergyTool::~MuonCaloEnergyTool
virtual ~MuonCaloEnergyTool()=default
Rec::MuonCaloEnergyTool::calculateMuonEnergies
void calculateMuonEnergies(const Trk::Track *trk, double deltaE, double meanIoni, double sigmaIoni, double &E, double &sigma, double &E_FSR, double &E_expected, double &E_em_meas, double &E_em_exp, double &E_tile_meas, double &E_tile_exp, double &E_HEC_meas, double &E_HEC_exp, double &E_dead_exp, std::vector< Identifier > *crossedCells=0, std::vector< double > *sigmaNoise_cell=0, std::vector< double > *E_exp_cell=0) const override
Definition: MuonCaloEnergyTool.cxx:42
Rec::MuonCaloEnergyTool::m_sigmasAboveNoise
Gaudi::Property< double > m_sigmasAboveNoise
Definition: MuonCaloEnergyTool.h:58
AthAlgTool
Definition: AthAlgTool.h:26
Rec::MuonCaloEnergyTool::m_emipHEC
static constexpr double m_emipHEC
Definition: MuonCaloEnergyTool.h:64
Rec::MuonCaloEnergyTool::thresholdCorrection
double thresholdCorrection(double E_observed, double E_expected, double sigma_Noise) const
Definition: MuonCaloEnergyTool.cxx:542