ATLAS Offline Software
Loading...
Searching...
No Matches
CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass Class Reference
Collaboration diagram for CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass:

Public Member Functions

 nFMethodPileupBasedBinnedClass (const nlohmann::json &jsonConfig)
double getPFake (const double muactual, const int N_fake, const double SF_fake_low, const double SF_fake_high) const

Private Attributes

std::vector< double > m_muactualBins {}
std::vector< double > m_nFBins {}
double m_lowMuHighMuThreshold = -999

Detailed Description

Definition at line 81 of file SSVWeightsAlg.h.

Constructor & Destructor Documentation

◆ nFMethodPileupBasedBinnedClass()

CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass::nFMethodPileupBasedBinnedClass ( const nlohmann::json & jsonConfig)

Definition at line 714 of file SSVWeightsAlg.cxx.

715 : m_muactualBins(jsonConfig["nF_pileup_based_binned"]["muactual_bins"].get<std::vector<double>>()),
716 m_nFBins(jsonConfig["nF_pileup_based_binned"]["values"].get<std::vector<double>>())
717 {
718 // Extract information from JSON file for nFMethodPileupBasedBinned
719 m_lowMuHighMuThreshold = jsonConfig["CalibrationInformation"]["lowMuHighMuThreshold"];
720 }
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:132

Member Function Documentation

◆ getPFake()

double CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass::getPFake ( const double muactual,
const int N_fake,
const double SF_fake_low,
const double SF_fake_high ) const

Definition at line 724 of file SSVWeightsAlg.cxx.

728 {
729
730 double nF = 0;
731 double P_fake = 1;
732
733 // Find the correct bin for muactual
734 for (size_t j = 0; j < m_muactualBins.size() - 1; ++j) {
735 if (muactual >= m_muactualBins[j] && muactual < m_muactualBins[j + 1]) {
736 nF = m_nFBins[j];
737 const auto denom = poisson_pmf(N_fake, nF);
738 if (denom == 0.)[[unlikely]]{
739 continue;
740 }
741 if (muactual < m_lowMuHighMuThreshold){
742 P_fake = poisson_pmf(N_fake, SF_fake_low * nF) / denom;
743 } else {
744 P_fake = poisson_pmf(N_fake, SF_fake_high * nF) / denom;
745 }
746 break; // Bin found, no need to continue loop
747 }
748 }
749 return P_fake;
750 }
static double poisson_pmf(const int k, const double lambda)
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
#define unlikely(x)

Member Data Documentation

◆ m_lowMuHighMuThreshold

double CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass::m_lowMuHighMuThreshold = -999
private

Definition at line 92 of file SSVWeightsAlg.h.

◆ m_muactualBins

std::vector<double> CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass::m_muactualBins {}
private

Definition at line 90 of file SSVWeightsAlg.h.

90{};

◆ m_nFBins

std::vector<double> CP::SSVWeightsAlg::nFMethodPileupBasedBinnedClass::m_nFBins {}
private

Definition at line 91 of file SSVWeightsAlg.h.

91{};

The documentation for this class was generated from the following files: