DAS
3.0
Das Analysis System
|
Classes | |
class | IDApplier |
class | TriggerApplier |
Enumerations | |
enum | Selector { None = 0u, CutBasedIdLoose = 1u<< 0, CutBasedIdMedium = 1u<< 1, CutBasedIdMediumPrompt = 1u<< 2, CutBasedIdTight = 1u<< 3, CutBasedIdGlobalHighPt = 1u<< 4, CutBasedIdTrkHighPt = 1u<< 5, PFIsoVeryLoose = 1u<< 6, PFIsoLoose = 1u<< 7, PFIsoMedium = 1u<< 8, PFIsoTight = 1u<< 9, PFIsoVeryTight = 1u<<10, TkIsoLoose = 1u<<11, TkIsoTight = 1u<<12, SoftCutBasedId = 1u<<13, SoftMvaId = 1u<<14, MvaLoose = 1u<<15, MvaMedium = 1u<<16, MvaTight = 1u<<17, MiniIsoLoose = 1u<<18, MiniIsoMedium = 1u<<19, MiniIsoTight = 1u<<20, MiniIsoVeryTight = 1u<<21 } |
Functions | |
bool | PassTriggerSelection (const Trigger &trg, const vector< RecMuon > &recMuons, int year) |
void | applyDimuonTriggerStrategy (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
void | applyMuonSelection (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
void | applyRochesterCorr (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
vector< float > | GetMassEdges (int nbins=100, double M=3000, double m=30) |
void | getDimuonSpectrum (const vector< fs::path > &inputs, const fs::path &output, const int steering, const DT::Slice slice={1, 0}) |
void | getZmmgControlPlots (const vector< fs::path > &inputs, const fs::path &output, const int steering, const DT::Slice slice={1, 0}) |
std::tuple< std::filesystem::path, std::string > | getLocation (const std::string &location) |
enum Selector |
Adapted from CMSSW
void DAS::Muon::applyDimuonTriggerStrategy | ( | const vector< fs::path > & | inputs, |
const fs::path & | output, | ||
const pt::ptree & | config, | ||
const int | steering, | ||
const DT::Slice | slice = {1,0} |
||
) |
Code to apply the Double Muon trigger SFs documented at the following link: https://indico.cern.ch/event/1106050/contributions/4653418/ Expecting one the following triggers:
HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass8_v
<– expected from n-tupliserHLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass8_v
HLT_Mu17_TrkIsoVVL_Mu8_TrkIsoVVL_DZ_Mass3p8_v
<– expected from n-tupliserHLT_Mu19_TrkIsoVVL_Mu9_TrkIsoVVL_DZ_Mass3p8_v
The code was written assuming the calibration files found in /eos/cms/store/group/phys_muon/jmijusko/DoubleMuonTrigger_SF_UL/
which contains the following TH2D
s with axes corresponding to the respective muon pseudorapidities and bin content to the efficiency.
ScaleFactor[WP]_UL[year]
ScaleFactor[WP]_UL[year]_stat
ScaleFactor[WP]_UL[year]_syst
ScaleFactor[WP]_UL[year]_alt
(except for 2018)ScaleFactor[WP]_UL[year]_massBin
(except for 2018)ScaleFactor[WP]_UL[year]_massRange
(except for 2018) where [WP]
= Tight
or Medium
(for both ID and ISO) [year]
= 2016_HIPM
, 2016
, 2017
, or 2018
inputs | input ROOT files (n-tuples) |
output | output ROOT file (n-tuple) |
config | config handled with `Darwin::Tools::options` |
steering | parameters obtained from explicit options |
slice | number and index of slice |
void DAS::Muon::applyMuonSelection | ( | const vector< fs::path > & | inputs, |
const fs::path & | output, | ||
const pt::ptree & | config, | ||
const int | steering, | ||
const DT::Slice | slice = {1,0} |
||
) |
Generic executable for all types of muon efficiency corrections. The command should be called once for each table.
==== RECO NUM = TrackerMuons DEN = genTracks
==== Muon ID NUM = HighPtID LooseID MediumID MediumPromptID SoftID TightID TrkHighPtID DEN = TrackerMuons
==== Muon ISO DEN \ NUM LooseRelIso LooseRelTkIso TightRelIso TightRelTkIso LooseID x MediumID x x MediumPromptID x x TightID & IPCut x x HighPtID & IPCut x x TrkHighPtID & IPCut x x
==== trigger DEN \ NUM IsoMu24 IsoMu24_or_Mu50 Mu50_or_OldMu100_or_TkMu100 IdMedium & PFIsoMedium x x IdTight & PFIsoTight x x IdGlobalHighPt & TkIsoLoose x
==== tracking Quoting the TWiki:
Official tracking POG SFs, where the probe is a standalone muon and it is required to be matched to a generalTrack in its vicinity, are independent of momentum. The SFs are found to be above 0.99, and are considered equivalent to unity. You can find the detailed plots per eta and pT bins in this TWiki. The recommendation are to not apply them, unless you target a precison analysis.
inputs | input ROOT files (n-tuples) |
output | output ROOT file (n-tuple) |
config | config handled with `Darwin::Tools::options` |
steering | parameters obtained from explicit options |
slice | number and index of slice |
void DAS::Muon::applyRochesterCorr | ( | const vector< fs::path > & | inputs, |
const fs::path & | output, | ||
const pt::ptree & | config, | ||
const int | steering, | ||
const DT::Slice | slice = {1,0} |
||
) |
set nmembers comment
Default 0 1 default, reference based on madgraph sample, with adhoc ewk (sw2eff and Z width) and Z pt (to match data) weights. Stat 1 100 pre-generated stat. replicas; Zpt 2 1 derived without reweighting reference pt to data. Ewk 3 1 derived without applying ad-hoc ewk weights deltaM 4 1 one representative set for alternative profile deltaM mass window
For statistical replicas, std. dev. gives uncertainty. For the rest, difference wrt the cental is assigned as syst. error. Total uncertainty is calculated as a quadrature sum of all components.
inputs | input ROOT files (n-tuples) |
output | output ROOT file (n-tuple) |
config | config handled with `Darwin::Tools::options` |
steering | parameters obtained from explicit options |
slice | number and index of slice |
void DAS::Muon::getDimuonSpectrum | ( | const vector< fs::path > & | inputs, |
const fs::path & | output, | ||
const int | steering, | ||
const DT::Slice | slice = {1, 0} |
||
) |
Obtain dimuon spectrum.
inputs | input ROOT files (n-tuples) |
output | output ROOT file (n-tuple) |
steering | parameters obtained from explicit options |
slice | number and index of slice |
std::tuple<std::filesystem::path, std::string> DAS::Muon::getLocation | ( | const std::string & | location | ) |
vector<float> DAS::Muon::GetMassEdges | ( | int | nbins = 100 , |
double | M = 3000 , |
||
double | m = 30 |
||
) |
void DAS::Muon::getZmmgControlPlots | ( | const vector< fs::path > & | inputs, |
const fs::path & | output, | ||
const int | steering, | ||
const DT::Slice | slice = {1, 0} |
||
) |
Obtain angular separation plots and fake/miss rates of photons/muons.