DAS  3.0
Das Analysis System
IDApplier

Description

Guesses the selection from the histogram name in the maps, and applies it by setting the weights to 0 to muons that don't pass the selection.

Note: tuned for Run 2 UL

+ Inheritance diagram for IDApplier:
+ Collaboration diagram for IDApplier:

Public Member Functions

 IDApplier (const fs::path &filePath, TString name, int year, bool correction, bool uncertainties)
 
- Public Member Functions inherited from CorrectionlibSFApplier< DAS::RecMuon >
 CorrectionlibSFApplier (const std::filesystem::path &filePath, const std::string &name, bool correction, bool uncertainties)
 
virtual ~CorrectionlibSFApplier () noexcept=default
 
void operator() (DAS::RecMuon &object, const Context &... ctx) const
 
void operator() (std::vector< DAS::RecMuon > &objects, const Context &... ctx) const
 
std::vector< std::string > weightNames () const
 

Public Attributes

TString name
 
TString NUM
 
TString DEN
 

Protected Member Functions

bool passes (const RecMuon &muon) const override
 
void inputs (std::vector< correction::Variable::Type > &inputs, const RecMuon &muon) const override
 
std::pair< double, double > varied (std::vector< correction::Variable::Type > &inputs, double sf, const correction::Variable::Type &uncname) const override
 
int binIndex (const RecMuon &muon) const override
 
- Protected Member Functions inherited from CorrectionlibSFApplier< DAS::RecMuon >
void addBinWiseUnc (const std::string &name, const correction::Variable::Type &input)
 
void addGlobalUnc (const std::string &name, const correction::Variable::Type &input)
 
virtual bool passes (const DAS::RecMuon &obj, const Context &... ctx) const=0
 
virtual void inputs (std::vector< correction::Variable::Type > &inputs, const DAS::RecMuon &obj, const Context &... ctx) const=0
 
virtual int binIndex (const DAS::RecMuon &obj, const Context &... ctx) const
 

Static Private Member Functions

static Selector getMask (const string &s)
 

Private Attributes

TH2C binning
 
Selector num
 
Selector den
 

Static Private Attributes

static constexpr std::array eta_bins_run2
 
static constexpr std::array eta_bins_run3
 
static constexpr std::array pt_bins
 

Additional Inherited Members

- Protected Attributes inherited from CorrectionlibSFApplier< DAS::RecMuon >
correction::Correction::Ref m_cref
 

Constructor & Destructor Documentation

◆ IDApplier()

IDApplier ( const fs::path &  filePath,
TString  name,
int  year,
bool  correction,
bool  uncertainties 
)
inline
142  : CorrectionlibSFApplier(filePath, name.Data(), correction,
143  uncertainties)
144  , name ( name )
145  , binning("", "",
146  year > 2018 ? eta_bins_run3.size() - 1: eta_bins_run2.size() - 1,
147  year > 2018 ? eta_bins_run3.data() : eta_bins_run3.data(),
148  pt_bins.size() - 1, pt_bins.data())
149  {
150  // CorrectionlibSFApplier does the Right Thing with the uncertainties
151  // added below: they are just ignored if not requested in the flags.
152  // This helps keep the code simple.
153 
154  auto uncname = name + "_stat";
155  addBinWiseUnc(uncname.Data(), "stat");
156 
157  for (auto var : {"AltSig", "massBin", "massRange", "tagIso"}) {
158  uncname = name + "_" + var;
159  addGlobalUnc(uncname.Data(), var);
160  }
161 
162  name.ReplaceAll("andIPCut", "");
163 
164  DEN = name(TRegexp("_DEN_.*"));
165  name.ReplaceAll(DEN, "");
166  DEN.ReplaceAll("_DEN_", "");
167  den = getMask(DEN.Data());
168 
169  NUM = name;
170  NUM.ReplaceAll("NUM_", "");
171  num = getMask(NUM.Data());
172 
173  cout << "Initialisation of " << __func__ << " done" << endl;
174  }

Member Function Documentation

◆ binIndex()

int binIndex ( const RecMuon muon) const
inlineoverrideprotected

Reimplemented from CorrectionlibSFApplier::binIndex.

Note
Muon scale factors are derived using the raw transverse momentum.
205  {
206  return binning.FindFixBin(muon.p4.Eta(), muon.p4.Pt());
207  }

◆ getMask()

static Selector getMask ( const string &  s)
inlinestaticprivate

Translate table name from Muon POG ROOT file into selector.

112  {
113  // RECO
114  if (s == "TrackerMuons") return Selector::None;
115  if (s == "genTracks" ) return Selector::None;
116 
117  // Muon ID
118  if (s == "LooseID") return Selector::CutBasedIdLoose ;
119  if (s == "MediumID") return Selector::CutBasedIdMedium ;
120  if (s == "MediumPromptID") return Selector::CutBasedIdMediumPrompt;
121  if (s == "SoftID") return Selector::SoftCutBasedId ;
122  if (s == "TightID") return Selector::CutBasedIdTight ; // andIPCut?
123  if (s == "HighPtID") return Selector::CutBasedIdGlobalHighPt; // andIPCut?
124  if (s == "TrkHighPtID") return Selector::CutBasedIdTrkHighPt ; // andIPCut?
125 
126  // Muon ISO
127  if (s == "VeryLooseRelIso") return Selector::PFIsoVeryLoose ;
128  if (s == "LooseRelIso") return Selector::PFIsoLoose ;
129  if (s == "MediumRelIso") return Selector::PFIsoMedium ;
130  if (s == "TightRelIso") return Selector::PFIsoTight ;
131  if (s == "VeryTightRelIso") return Selector::PFIsoVeryTight ;
132  if (s == "VeryVeryTightRelIso") return Selector::PFIsoVeryVeryTight;
133  if (s == "LooseRelTkIso") return Selector::TkIsoLoose ;
134  if (s == "TightRelTkIso") return Selector::TkIsoTight ;
135 
136  BOOST_THROW_EXCEPTION( invalid_argument(s + " is not recognised.") );
137  }

◆ inputs()

void inputs ( std::vector< correction::Variable::Type > &  inputs,
const RecMuon muon 
) const
inlineoverrideprotected
188  {
189  inputs = {muon.p4.Eta(), muon.p4.Pt(), "nominal"};
190  }

◆ passes()

bool passes ( const RecMuon muon) const
inlineoverrideprotected
Todo:
IPCut? (unless it's already included in IPCut?)
178  {
179  if (muon.p4.Pt() < pt_bins.front()) return false;
180 
182  return num == 0 // Non standard, tracker SF
183  || (num & muon.selectors) == num;
184  }

◆ varied()

std::pair<double, double> varied ( std::vector< correction::Variable::Type > &  inputs,
double  sf,
const correction::Variable::Type &  uncname 
) const
inlineoverrideprotectedvirtual

Called to retrieve the up and down variations of a scale factor.

The value comes from addBinWiseUnc or addGlobalUnc.

Implements CorrectionlibSFApplier< DAS::RecMuon >.

195  {
196  inputs[2] = uncname;
197  const auto unc = m_cref->evaluate(inputs);
198  return {sf + unc, sf - unc};
199  }

Member Data Documentation

◆ binning

TH2C binning
private

Dummy histogram to compute bin numbers.

◆ den

Selector den
private

◆ DEN

TString DEN

◆ eta_bins_run2

constexpr std::array eta_bins_run2
staticconstexprprivate
Initial value:
{
-2.4, -2.1, -1.2, -0.9, 0.0, 0.9, 1.2, 2.1, 2.4}

eta binning used for MUO ID scale factors in Run 2

Todo:
Extract bins from correctionlib? See https://github.com/cms-nanoAOD/correctionlib/issues/286

◆ eta_bins_run3

constexpr std::array eta_bins_run3
staticconstexprprivate
Initial value:
{
-2.4, -2.1, -1.6, -1.2, -0.9, -0.3, -0.2, 0.2, 0.3, 0.9, 1.2, 1.6, 2.1, 2.4}

eta binning used for MUO ID scale factors in Run 3

Todo:
Extract bins from correctionlib? See https://github.com/cms-nanoAOD/correctionlib/issues/286

◆ name

TString name

◆ num

Selector num
private

◆ NUM

TString NUM

◆ pt_bins

constexpr std::array pt_bins
staticconstexprprivate
Initial value:
{
15.0, 20.0, 25.0, 30.0, 40.0, 50.0, 60.0, 120.0, 1e5}

pT binning used for MUO ID scale factors

Todo:
Extract bins from correctionlib? See https://github.com/cms-nanoAOD/correctionlib/issues/286

The documentation for this class was generated from the following file:
DAS::Muon::IDApplier::name
TString name
Definition: applyMuonSelection.cc:105
DAS::Muon::TkIsoLoose
@ TkIsoLoose
Definition: applyMuonSelection.cc:53
DAS::Muon::PFIsoVeryTight
@ PFIsoVeryTight
Definition: applyMuonSelection.cc:52
DAS::Muon::IDApplier::pt_bins
static constexpr std::array pt_bins
Definition: applyMuonSelection.cc:99
DAS::CorrectionlibSFApplier< DAS::RecMuon >::addBinWiseUnc
void addBinWiseUnc(const std::string &name, const correction::Variable::Type &input)
Loads a systematic with bin-by-bin correlations.
Definition: GenericSFApplier.h:533
DAS::Muon::IDApplier::num
Selector num
Definition: applyMuonSelection.cc:103
DAS::Muon::PFIsoTight
@ PFIsoTight
Definition: applyMuonSelection.cc:51
Ntupliser_cfg.year
int year
Definition: Ntupliser_cfg.py:67
DAS::Muon::PFIsoVeryVeryTight
@ PFIsoVeryVeryTight
Definition: applyMuonSelection.cc:66
DAS::Muon::CutBasedIdMedium
@ CutBasedIdMedium
Definition: applyMuonSelection.cc:43
DAS::Muon::IDApplier::binning
TH2C binning
Dummy histogram to compute bin numbers.
Definition: applyMuonSelection.cc:101
DAS::Muon::IDApplier::NUM
TString NUM
Definition: applyMuonSelection.cc:105
jercExample.unc
string unc
Definition: jercExample.py:70
DAS::CorrectionlibSFApplier< DAS::RecMuon >::m_cref
correction::Correction::Ref m_cref
Correction to be used.
Definition: GenericSFApplier.h:343
DAS::CorrectionlibSFApplier< DAS::RecMuon >::CorrectionlibSFApplier
CorrectionlibSFApplier(const std::filesystem::path &filePath, const std::string &name, bool correction, bool uncertainties)
Constructor.
Definition: GenericSFApplier.h:418
DAS::Muon::IDApplier::getMask
static Selector getMask(const string &s)
Translate table name from Muon POG ROOT file into selector.
Definition: applyMuonSelection.cc:111
DAS::Muon::PFIsoLoose
@ PFIsoLoose
Definition: applyMuonSelection.cc:49
DAS::Muon::CutBasedIdTrkHighPt
@ CutBasedIdTrkHighPt
Definition: applyMuonSelection.cc:47
DAS::Muon::CutBasedIdTight
@ CutBasedIdTight
Definition: applyMuonSelection.cc:45
DAS::Muon::CutBasedIdMediumPrompt
@ CutBasedIdMediumPrompt
Definition: applyMuonSelection.cc:44
DAS::Muon::PFIsoVeryLoose
@ PFIsoVeryLoose
Definition: applyMuonSelection.cc:48
DAS::Muon::CutBasedIdLoose
@ CutBasedIdLoose
Definition: applyMuonSelection.cc:42
DAS::Muon::IDApplier::inputs
void inputs(std::vector< correction::Variable::Type > &inputs, const RecMuon &muon) const override
Definition: applyMuonSelection.cc:186
DAS::Muon::IDApplier::DEN
TString DEN
Definition: applyMuonSelection.cc:105
DAS::Muon::SoftCutBasedId
@ SoftCutBasedId
Definition: applyMuonSelection.cc:55
DAS::Muon::IDApplier::eta_bins_run3
static constexpr std::array eta_bins_run3
Definition: applyMuonSelection.cc:94
DAS::Muon::CutBasedIdGlobalHighPt
@ CutBasedIdGlobalHighPt
Definition: applyMuonSelection.cc:46
DAS::Muon::TkIsoTight
@ TkIsoTight
Definition: applyMuonSelection.cc:54
jercExample.sf
sf
Definition: jercExample.py:112
DAS::Muon::None
@ None
Definition: applyMuonSelection.cc:41
DAS::CorrectionlibSFApplier< DAS::RecMuon >::addGlobalUnc
void addGlobalUnc(const std::string &name, const correction::Variable::Type &input)
Loads a fully correlated systematic.
Definition: GenericSFApplier.h:549
DAS::Muon::PFIsoMedium
@ PFIsoMedium
Definition: applyMuonSelection.cc:50
DAS::Muon::IDApplier::eta_bins_run2
static constexpr std::array eta_bins_run2
Definition: applyMuonSelection.cc:89
DAS::Muon::IDApplier::den
Selector den
Definition: applyMuonSelection.cc:103