Skip to content

Commit

Permalink
Optionally vary nominal trigger eff-s by their stat unc-s
Browse files Browse the repository at this point in the history
  • Loading branch information
ktht committed Jun 15, 2018
1 parent f336f0f commit cfb2b2a
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 31 deletions.
21 changes: 12 additions & 9 deletions interface/TauTriggerSFs2017.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
class TauTriggerSFs2017
{
public:

enum { kCentral, kStatUp, kStatDown };

TauTriggerSFs2017(const std::string& inputFileName, const std::string& tauMVAWP = "medium");
~TauTriggerSFs2017();

Expand All @@ -28,33 +31,33 @@ class TauTriggerSFs2017
* @return Values of efficiencies
*/
// This is the efficiency for a single leg of the di-tau trigger
double getDiTauEfficiencyData(double pt, double eta, double phi);
double getDiTauEfficiencyData(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);
// This is the efficiency for the tau leg of the mu-tau trigger
double getMuTauEfficiencyData(double pt, double eta, double phi);
double getMuTauEfficiencyData(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);
// This is the efficiency for the tau leg of the e-tau trigger
double getETauEfficiencyData(double pt, double eta, double phi);
double getETauEfficiencyData(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);

/**
* @brief Funtions to access efficiencies in MC
* @return Values of efficiencies
*/
// This is the efficiency for a single leg of the di-tau trigger
double getDiTauEfficiencyMC(double pt, double eta, double phi);
double getDiTauEfficiencyMC(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);
// This is the efficiency for the tau leg of the mu-tau trigger
double getMuTauEfficiencyMC(double pt, double eta, double phi);
double getMuTauEfficiencyMC(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);
// This is the efficiency for the tau leg of the e-tau trigger
double getETauEfficiencyMC(double pt, double eta, double phi);
double getETauEfficiencyMC(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);

/**
* @brief Funtions to access data/MC scale-factors
* @return Values of scale-factors
*/
// This is the SF for a single leg of the di-tau trigger
double getDiTauScaleFactor(double pt, double eta, double phi);
double getDiTauScaleFactor(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);
// This is the SF for the tau leg of the mu-tau trigger
double getMuTauScaleFactor(double pt, double eta, double phi);
double getMuTauScaleFactor(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);
// This is the SF for the tau leg of the e-tau trigger
double getETauScaleFactor(double pt, double eta, double phi);
double getETauScaleFactor(double pt, double eta, double phi, int central_or_shift = TauTriggerSFs2017::kCentral);

protected:
std::string inputFileName_;
Expand Down
53 changes: 31 additions & 22 deletions src/TauTriggerSFs2017.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ TauTriggerSFs2017::~TauTriggerSFs2017()
delete inputFile_;
}

double getEfficiency(double pt, double eta, double phi, const TH1* effHist, const TH2* etaPhi, const TH2* etaPhiAvg)
double getEfficiency(double pt, double eta, double phi, const TH1* effHist, const TH2* etaPhi, const TH2* etaPhiAvg, int central_or_shift = TauTriggerSFs2017::kCentral)
{
const TAxis* effHist_xAxis = effHist->GetXaxis();
double ptMin = effHist_xAxis->GetXmin() + 1.e-1;
Expand All @@ -78,6 +78,15 @@ double getEfficiency(double pt, double eta, double phi, const TH1* effHist, cons
assert(effHist_idxBin >= 1 && effHist_idxBin <= effHist->GetNbinsX());
double eff = effHist->GetBinContent(effHist_idxBin);

double effErr = effHist->GetBinError(effHist_idxBin);
switch(central_or_shift)
{
case TauTriggerSFs2017::kCentral: break;
case TauTriggerSFs2017::kStatUp: eff += effErr; break;
case TauTriggerSFs2017::kStatDown: eff -= effErr; break;
default: assert(0);
}

// Adjust SF based on (eta, phi) location
// keep eta barrel boundaries within SF region
// but, for taus outside eta limits or with unralistic
Expand Down Expand Up @@ -105,20 +114,20 @@ double getEfficiency(double pt, double eta, double phi, const TH1* effHist, cons
return eff;
}

double TauTriggerSFs2017::getDiTauEfficiencyData(double pt, double eta, double phi)
double TauTriggerSFs2017::getDiTauEfficiencyData(double pt, double eta, double phi, int central_or_shift)
{
return getEfficiency(pt, eta, phi, diTauData_, diTauEtaPhiData_, diTauEtaPhiAvgData_);
return getEfficiency(pt, eta, phi, diTauData_, diTauEtaPhiData_, diTauEtaPhiAvgData_, central_or_shift);
}

double TauTriggerSFs2017::getDiTauEfficiencyMC(double pt, double eta, double phi)
double TauTriggerSFs2017::getDiTauEfficiencyMC(double pt, double eta, double phi, int central_or_shift)
{
return getEfficiency(pt, eta, phi, diTauMC_, diTauEtaPhiMC_, diTauEtaPhiAvgMC_);
return getEfficiency(pt, eta, phi, diTauMC_, diTauEtaPhiMC_, diTauEtaPhiAvgMC_, central_or_shift);
}

double TauTriggerSFs2017::getDiTauScaleFactor(double pt, double eta, double phi)
double TauTriggerSFs2017::getDiTauScaleFactor(double pt, double eta, double phi, int central_or_shift)
{
double effData = getDiTauEfficiencyData(pt, eta, phi);
double effMC = getDiTauEfficiencyMC(pt, eta, phi);
double effData = getDiTauEfficiencyData(pt, eta, phi, central_or_shift);
double effMC = getDiTauEfficiencyMC(pt, eta, phi, central_or_shift);
if ( effMC < 1e-5 ) {
std::cerr << "Eff MC is suspiciously low. Please contact Tau POG." << std::endl;
std::cerr << Form(" - DiTau Trigger SF for Tau MVA: %s pT: %3.3f eta: %3.3f phi: %3.3f", tauMVAWP_.data(), pt, eta, phi) << std::endl;
Expand All @@ -129,20 +138,20 @@ double TauTriggerSFs2017::getDiTauScaleFactor(double pt, double eta, double phi)
return sf;
}

double TauTriggerSFs2017::getMuTauEfficiencyData(double pt, double eta, double phi)
double TauTriggerSFs2017::getMuTauEfficiencyData(double pt, double eta, double phi, int central_or_shift)
{
return getEfficiency(pt, eta, phi, muTauData_, muTauEtaPhiData_, muTauEtaPhiAvgData_);
return getEfficiency(pt, eta, phi, muTauData_, muTauEtaPhiData_, muTauEtaPhiAvgData_, central_or_shift);
}

double TauTriggerSFs2017::getMuTauEfficiencyMC(double pt, double eta, double phi)
double TauTriggerSFs2017::getMuTauEfficiencyMC(double pt, double eta, double phi, int central_or_shift)
{
return getEfficiency(pt, eta, phi, muTauMC_, muTauEtaPhiMC_, muTauEtaPhiAvgMC_);
return getEfficiency(pt, eta, phi, muTauMC_, muTauEtaPhiMC_, muTauEtaPhiAvgMC_, central_or_shift);
}

double TauTriggerSFs2017::getMuTauScaleFactor(double pt, double eta, double phi)
double TauTriggerSFs2017::getMuTauScaleFactor(double pt, double eta, double phi, int central_or_shift)
{
double effData = getMuTauEfficiencyData(pt, eta, phi);
double effMC = getMuTauEfficiencyMC(pt, eta, phi);
double effData = getMuTauEfficiencyData(pt, eta, phi, central_or_shift);
double effMC = getMuTauEfficiencyMC(pt, eta, phi, central_or_shift);
if ( effMC < 1e-5 ) {
std::cerr << "Eff MC is suspiciously low. Please contact Tau POG." << std::endl;
std::cerr << Form(" - MuTau Trigger SF for Tau MVA: %s pT: %3.3f eta: %3.3f phi: %3.3f", tauMVAWP_.data(), pt, eta, phi) << std::endl;
Expand All @@ -153,20 +162,20 @@ double TauTriggerSFs2017::getMuTauScaleFactor(double pt, double eta, double phi)
return sf;
}

double TauTriggerSFs2017::getETauEfficiencyData(double pt, double eta, double phi)
double TauTriggerSFs2017::getETauEfficiencyData(double pt, double eta, double phi, int central_or_shift)
{
return getEfficiency(pt, eta, phi, eTauData_, eTauEtaPhiData_, eTauEtaPhiAvgData_);
return getEfficiency(pt, eta, phi, eTauData_, eTauEtaPhiData_, eTauEtaPhiAvgData_, central_or_shift);
}

double TauTriggerSFs2017::getETauEfficiencyMC(double pt, double eta, double phi)
double TauTriggerSFs2017::getETauEfficiencyMC(double pt, double eta, double phi, int central_or_shift)
{
return getEfficiency(pt, eta, phi, eTauMC_, eTauEtaPhiMC_, eTauEtaPhiAvgMC_);
return getEfficiency(pt, eta, phi, eTauMC_, eTauEtaPhiMC_, eTauEtaPhiAvgMC_, central_or_shift);
}

double TauTriggerSFs2017::getETauScaleFactor(double pt, double eta, double phi)
double TauTriggerSFs2017::getETauScaleFactor(double pt, double eta, double phi, int central_or_shift)
{
double effData = getETauEfficiencyData(pt, eta, phi);
double effMC = getETauEfficiencyMC(pt, eta, phi);
double effData = getETauEfficiencyData(pt, eta, phi, central_or_shift);
double effMC = getETauEfficiencyMC(pt, eta, phi, central_or_shift);
if ( effMC < 1e-5 ) {
std::cerr << "Eff MC is suspiciously low. Please contact Tau POG." << std::endl;
std::cerr << Form(" - ETau Trigger SF for Tau MVA: %s pT: %3.3f eta: %3.3f phi: %3.3f", tauMVAWP_.data(), pt, eta, phi) << std::endl;
Expand Down

0 comments on commit cfb2b2a

Please sign in to comment.