File indexing completed on 2026-09-27 09:14:59
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef LC_ENERGY_CORRECTION_PLUGINS_H
0009 #define LC_ENERGY_CORRECTION_PLUGINS_H 1
0010
0011 #include "Plugins/EnergyCorrectionsPlugin.h"
0012
0013 namespace lc_content {
0014
0015
0016
0017
0018 class LCEnergyCorrectionPlugins {
0019 public:
0020
0021
0022
0023 class NonLinearityCorrection : public pandora::EnergyCorrectionPlugin {
0024 public:
0025
0026
0027
0028
0029
0030
0031 NonLinearityCorrection(const pandora::FloatVector& inputEnergyCorrectionPoints,
0032 const pandora::FloatVector& outputEnergyCorrectionPoints);
0033
0034 pandora::StatusCode MakeEnergyCorrections(const pandora::Cluster* const pCluster, float& correctedEnergy) const;
0035
0036 private:
0037 pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0038
0039 pandora::FloatVector m_inputEnergyCorrectionPoints;
0040 pandora::FloatVector m_energyCorrections;
0041 };
0042
0043
0044
0045
0046
0047 class CleanCluster : public pandora::EnergyCorrectionPlugin {
0048 public:
0049
0050
0051
0052 CleanCluster();
0053
0054 pandora::StatusCode MakeEnergyCorrections(const pandora::Cluster* const pCluster, float& correctedEnergy) const;
0055
0056 private:
0057
0058
0059
0060
0061
0062
0063 float GetHadronicEnergyInLayer(const pandora::OrderedCaloHitList& orderedCaloHitList,
0064 const unsigned int pseudoLayer) const;
0065
0066 pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0067
0068 float m_minCleanHitEnergy;
0069 float m_minCleanHitEnergyFraction;
0070 float m_minCleanCorrectedHitEnergy;
0071 };
0072
0073
0074
0075
0076
0077 class ScaleHotHadrons : public pandora::EnergyCorrectionPlugin {
0078 public:
0079
0080
0081
0082 ScaleHotHadrons();
0083
0084 pandora::StatusCode MakeEnergyCorrections(const pandora::Cluster* const pCluster, float& correctedEnergy) const;
0085
0086 private:
0087 pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0088
0089 unsigned int m_minHitsForHotHadron;
0090 unsigned int m_maxHitsForHotHadron;
0091 unsigned int m_hotHadronInnerLayerCut;
0092 float m_hotHadronMipFractionCut;
0093 unsigned int m_hotHadronNHitsCut;
0094 float m_hotHadronMipsPerHit;
0095 float m_scaledHotHadronMipsPerHit;
0096 };
0097
0098
0099
0100
0101 class MuonCoilCorrection : public pandora::EnergyCorrectionPlugin {
0102 public:
0103
0104
0105
0106 MuonCoilCorrection();
0107
0108 pandora::StatusCode MakeEnergyCorrections(const pandora::Cluster* const pCluster, float& correctedEnergy) const;
0109
0110 private:
0111 pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0112
0113 float m_muonHitEnergy;
0114 float m_coilEnergyLossCorrection;
0115 unsigned int m_minMuonHitsInInnerLayer;
0116 float m_coilEnergyCorrectionChi;
0117 };
0118 };
0119
0120 }
0121
0122 #endif