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< doublem_muactualBins {}
std::vector< doublem_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 725 of file SSVWeightsAlg.cxx.

726 : m_muactualBins(jsonConfig["nF_pileup_based_binned"]["muactual_bins"].get<std::vector<double>>()),
727 m_nFBins(jsonConfig["nF_pileup_based_binned"]["values"].get<std::vector<double>>())
728 {
729 // Extract information from JSON file for nFMethodPileupBasedBinned
730 m_lowMuHighMuThreshold = jsonConfig["CalibrationInformation"]["lowMuHighMuThreshold"];
731 }
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 735 of file SSVWeightsAlg.cxx.

739 {
740
741 double nF = 0;
742 double P_fake = 1;
743
744 // Find the correct bin for muactual
745 for (size_t j = 0; j < m_muactualBins.size() - 1; ++j) {
746 if (muactual >= m_muactualBins[j] && muactual < m_muactualBins[j + 1]) {
747 nF = m_nFBins[j];
748 const auto denom = poisson_pmf(N_fake, nF);
749 if (denom == 0.)[[unlikely]]{
750 continue;
751 }
752 if (muactual < m_lowMuHighMuThreshold){
753 P_fake = poisson_pmf(N_fake, SF_fake_low * nF) / denom;
754 } else {
755 P_fake = poisson_pmf(N_fake, SF_fake_high * nF) / denom;
756 }
757 break; // Bin found, no need to continue loop
758 }
759 }
760 return P_fake;
761 }
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: