![]() |
![]() |
00001 #ifndef JetMETCorrections_FFTJetObjects_FFTGenericScaleCalculator_h 00002 #define JetMETCorrections_FFTJetObjects_FFTGenericScaleCalculator_h 00003 00004 // 00005 // Generic variable mapper for FFTJet jet corrections 00006 // 00007 #include <cmath> 00008 #include <vector> 00009 00010 #include "JetMETCorrections/FFTJetObjects/interface/AbsFFTSpecificScaleCalculator.h" 00011 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00012 00013 class FFTGenericScaleCalculator : public AbsFFTSpecificScaleCalculator 00014 { 00015 public: 00016 FFTGenericScaleCalculator(const edm::ParameterSet& ps); 00017 00018 inline virtual ~FFTGenericScaleCalculator() {} 00019 00020 virtual void mapFFTJet(const reco::Jet& jet, 00021 const reco::FFTJet<float>& fftJet, 00022 const math::XYZTLorentzVector& current, 00023 double* buf, unsigned dim) const; 00024 private: 00025 inline double f_safeLog(const double x) const 00026 { 00027 if (x > 0.0) 00028 return log(x); 00029 else 00030 return m_minLog; 00031 } 00032 00033 std::vector<double> m_factors; 00034 double m_minLog; 00035 00036 // Variables from the "current" Lorentz vector 00037 int m_eta; 00038 int m_phi; 00039 int m_pt; 00040 int m_logPt; 00041 int m_mass; 00042 int m_logMass; 00043 int m_energy; 00044 int m_logEnergy; 00045 int m_gamma; 00046 int m_logGamma; 00047 00048 // Variables from fftJet 00049 int m_pileup; 00050 int m_ncells; 00051 int m_etSum; 00052 int m_etaWidth; 00053 int m_phiWidth; 00054 int m_averageWidth; 00055 int m_widthRatio; 00056 int m_etaPhiCorr; 00057 int m_fuzziness; 00058 int m_convergenceDistance; 00059 int m_recoScale; 00060 int m_recoScaleRatio; 00061 int m_membershipFactor; 00062 00063 // Variables from the precluster 00064 int m_magnitude; 00065 int m_logMagnitude; 00066 int m_magS1; 00067 int m_LogMagS1; 00068 int m_magS2; 00069 int m_LogMagS2; 00070 int m_driftSpeed; 00071 int m_magSpeed; 00072 int m_lifetime; 00073 int m_scale; 00074 int m_logScale; 00075 int m_nearestNeighborDistance; 00076 int m_clusterRadius; 00077 int m_clusterSeparation; 00078 int m_dRFromJet; 00079 int m_LaplacianS1; 00080 int m_LaplacianS2; 00081 int m_LaplacianS3; 00082 int m_HessianS2; 00083 int m_HessianS4; 00084 int m_HessianS6; 00085 00086 // Variables from reco::Jet 00087 int m_nConstituents; 00088 int m_aveConstituentPt; 00089 int m_logAveConstituentPt; 00090 int m_constituentPtDistribution; 00091 int m_constituentEtaPhiSpread; 00092 00093 // Variables from reco::PFJet 00094 int m_chargedHadronEnergyFraction; 00095 int m_neutralHadronEnergyFraction; 00096 int m_photonEnergyFraction; 00097 int m_electronEnergyFraction; 00098 int m_muonEnergyFraction; 00099 int m_HFHadronEnergyFraction; 00100 int m_HFEMEnergyFraction; 00101 int m_chargedHadronMultiplicity; 00102 int m_neutralHadronMultiplicity; 00103 int m_photonMultiplicity; 00104 int m_electronMultiplicity; 00105 int m_muonMultiplicity; 00106 int m_HFHadronMultiplicity; 00107 int m_HFEMMultiplicity; 00108 int m_chargedEmEnergyFraction; 00109 int m_chargedMuEnergyFraction; 00110 int m_neutralEmEnergyFraction; 00111 int m_EmEnergyFraction; 00112 int m_chargedMultiplicity; 00113 int m_neutralMultiplicity; 00114 }; 00115 00116 #endif // JetMETCorrections_FFTJetObjects_FFTGenericScaleCalculator_h