ATLAS Offline Software
EventSaverFlatNtuple.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 
7 #include "TopEvent/Event.h"
8 #include "TopEvent/EventTools.h"
14 
17 
18 #include "TFile.h"
19 #include <cmath>
20 #include <iostream>
21 #include <regex>
22 #include <boost/algorithm/string.hpp>
23 
25 
27 
30 
32 
33 namespace top {
35  asg::AsgTool("top::EventSaverFlatNtuple"),
36  m_config(nullptr),
37  m_sfRetriever(nullptr),
38  m_outputFile(nullptr),
39  m_truthTreeManager(nullptr),
40  m_particleLevelTreeManager(nullptr),
41 
42  m_weight_mc(0.),
43  m_weight_beamspot(0.),
44  m_weight_pileup(0.),
45 
46  m_weight_fwdElSF(0.),
47  m_weight_fwdElSF_FWDEL_SF_ID_UP(0.),
48  m_weight_fwdElSF_FWDEL_SF_ID_DOWN(0.),
49 
50  // cumulative SF
51  m_weight_leptonSF(0.),
52 
53  m_weight_leptonSF_EL_SF_Reco_UP(0.),
54  m_weight_leptonSF_EL_SF_Reco_DOWN(0.),
55  m_weight_leptonSF_EL_SF_ID_UP(0.),
56  m_weight_leptonSF_EL_SF_ID_DOWN(0.),
57  m_weight_leptonSF_EL_SF_Isol_UP(0.),
58  m_weight_leptonSF_EL_SF_Isol_DOWN(0.),
59 
60  // Muon ID SF systematics (regular)
61  m_weight_leptonSF_MU_SF_ID_STAT_UP(0.),
62  m_weight_leptonSF_MU_SF_ID_STAT_DOWN(0.),
63  m_weight_leptonSF_MU_SF_ID_SYST_UP(0.),
64  m_weight_leptonSF_MU_SF_ID_SYST_DOWN(0.),
65  // Muon ID SF systematics (low pt)
66  m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_UP(0.),
67  m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_DOWN(0.),
68  m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_UP(0.),
69  m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_DOWN(0.),
70  m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_UP(0.),
71  m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_DOWN(0.),
72  m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_UP(0.),
73  m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_DOWN(0.),
74  m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_UP(0.),
75  m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_DOWN(0.),
76  m_weight_leptonSF_MU_SF_ID_MATCHING_UP(0.),
77  m_weight_leptonSF_MU_SF_ID_MATCHING_DOWN(0.),
78  m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_UP(0.),
79  m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_DOWN(0.),
80  m_weight_leptonSF_MU_SF_ID_MC_XSEC_UP(0.),
81  m_weight_leptonSF_MU_SF_ID_MC_XSEC_DOWN(0.),
82  m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_UP(0.),
83  m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_DOWN(0.),
84  m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_UP(0.),
85  m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_DOWN(0.),
86  m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_UP(0.),
87  m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_DOWN(0.),
88  m_weight_leptonSF_MU_SF_ID_TRUTH_UP(0.),
89  m_weight_leptonSF_MU_SF_ID_TRUTH_DOWN(0.),
90  m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_UP(0.),
91  m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_DOWN(0.),
92  m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP(0.),
93  m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN(0.),
94  m_weight_leptonSF_MU_SF_ID_CR1_UP(0.),
95  m_weight_leptonSF_MU_SF_ID_CR1_DOWN(0.),
96  m_weight_leptonSF_MU_SF_ID_CR2_UP(0.),
97  m_weight_leptonSF_MU_SF_ID_CR2_DOWN(0.),
98  m_weight_leptonSF_MU_SF_ID_CR3_UP(0.),
99  m_weight_leptonSF_MU_SF_ID_CR3_DOWN(0.),
100  m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_UP(0.),
101  m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_DOWN(0.),
102  m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_UP(0.),
103  m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_DOWN(0.),
104  m_weight_leptonSF_MU_SF_ID_TAGPT_UP(0.),
105  m_weight_leptonSF_MU_SF_ID_TAGPT_DOWN(0.),
106  m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_UP(0.),
107  m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_DOWN(0.),
108  m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_UP(0.),
109  m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_DOWN(0.),
110 
111  // Muon isolation SF systematics
112  m_weight_leptonSF_MU_SF_Isol_STAT_UP(0.),
113  m_weight_leptonSF_MU_SF_Isol_STAT_DOWN(0.),
114  m_weight_leptonSF_MU_SF_Isol_SYST_UP(0.),
115  m_weight_leptonSF_MU_SF_Isol_SYST_DOWN(0.),
116  m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_UP(0.),
117  m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_DOWN(0.),
118  m_weight_leptonSF_MU_SF_Isol_DRMUJ_UP(0.),
119  m_weight_leptonSF_MU_SF_Isol_DRMUJ_DOWN(0.),
120  m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_UP(0.),
121  m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_DOWN(0.),
122  m_weight_leptonSF_MU_SF_Isol_MC_XSEC_UP(0.),
123  m_weight_leptonSF_MU_SF_Isol_MC_XSEC_DOWN(0.),
124  m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_UP(0.),
125  m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_DOWN(0.),
126  m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_UP(0.),
127  m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_DOWN(0.),
128  m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_UP(0.),
129  m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_DOWN(0.),
130  m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_UP(0.),
131  m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_DOWN(0.),
132  m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_UP(0.),
133  m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_DOWN(0.),
134  //Muon TTVA SF systematics
135  m_weight_leptonSF_MU_SF_TTVA_STAT_UP(0.),
136  m_weight_leptonSF_MU_SF_TTVA_STAT_DOWN(0.),
137  m_weight_leptonSF_MU_SF_TTVA_SYST_UP(0.),
138  m_weight_leptonSF_MU_SF_TTVA_SYST_DOWN(0.),
139  m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_UP(0.),
140  m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_DOWN(0.),
141  m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_UP(0.),
142  m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_DOWN(0.),
143  m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_UP(0.),
144  m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_DOWN(0.),
145  m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_UP(0.),
146  m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_DOWN(0.),
147  m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_UP(0.),
148  m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_DOWN(0.),
149  m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_UP(0.),
150  m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_DOWN(0.),
151 
152  // triggers
153  m_weight_trigger(0.),
154  m_weight_trigger_EL_SF_UP(0.),
155  m_weight_trigger_EL_SF_DOWN(0.),
156  m_weight_trigger_MU_SF_STAT_UP(0.),
157  m_weight_trigger_MU_SF_STAT_DOWN(0.),
158  m_weight_trigger_MU_SF_SYST_UP(0.),
159  m_weight_trigger_MU_SF_SYST_DOWN(0.),
160  m_weight_trigger_PH_UNCERT_UP(0.),
161  m_weight_trigger_PH_UNCERT_DOWN(0.),
162 
163  m_ASMdecorName("ASM_weight"),
164  m_ASMweights(),
165 
166  m_eventNumber(0),
167  m_runNumber(0),
168  m_randomRunNumber(0),
169  m_mcChannelNumber(0),
170 
171  m_mu_original(0.),
172  m_mu(0.),
173  m_mu_actual_original(0.),
174  m_mu_actual(0.),
175 
176  m_backgroundFlags(0),
177  m_hasBadMuon(0),
178  m_makeRCJets(false),
179  m_makeVarRCJets(false),
180  m_useRCJSS(false),
181  m_useRCAdditionalJSS(false),
182  m_useVarRCJSS(false),
183  m_useVarRCAdditionalJSS(false),
184  m_met_met(0.),
185  m_met_sumet(0.),
186  m_met_phi(0.),
187  m_met_sig(0.),
188  m_met_sigHT(0.),
189  m_met_sigET(0.),
190  m_met_sigRho(0.),
191  m_met_sigVarL(0.),
192  m_met_sigVarT(0.),
193  m_met_met_withLooseObjects(0.),
194  m_met_phi_withLooseObjects(0.) {
195  m_weight_leptonSF_EL_SF_CorrModel_Reco_UP = std::vector<float>();
196  m_weight_leptonSF_EL_SF_CorrModel_Reco_DOWN = std::vector<float>();
197  m_weight_leptonSF_EL_SF_CorrModel_ID_UP = std::vector<float>();
198  m_weight_leptonSF_EL_SF_CorrModel_ID_DOWN = std::vector<float>();
199  m_weight_leptonSF_EL_SF_CorrModel_Iso_UP = std::vector<float>();
200  m_weight_leptonSF_EL_SF_CorrModel_Iso_DOWN = std::vector<float>();
201  }
202 
205  i != m_extraTruthVars_int.end(); ++i)
206  delete (*i).second;
207 
209  i != m_extraTruthVars_float.end(); ++i)
210  delete (*i).second;
211  }
212 
213  std::shared_ptr<top::TopConfig> EventSaverFlatNtuple::topConfig() {
214  return m_config;
215  }
216 
217  std::vector<std::shared_ptr<top::TreeManager> > EventSaverFlatNtuple::treeManagers() {
218  return m_treeManagers;
219  }
220 
221  std::shared_ptr<top::TreeManager> EventSaverFlatNtuple::truthTreeManager() {
222  return m_truthTreeManager;
223  }
224 
225  std::shared_ptr<top::TreeManager> EventSaverFlatNtuple::particleLevelTreeManager() {
227  }
228 
229  //std::shared_ptr<top::ScaleFactorRetriever> EventSaverFlatNtuple::scaleFactorRetriever()
231  return m_sfRetriever;
232  }
233 
234  std::vector<top::TreeManager::BranchFilter>& EventSaverFlatNtuple::branchFilters() {
235  return m_branchFilters;
236  }
237 
238  void EventSaverFlatNtuple::initialize(std::shared_ptr<top::TopConfig> config, TFile* file,
239  const std::vector<std::string>& extraBranches) {
240  m_config = config;
241  m_outputFile = file;
242  m_extraBranches = extraBranches;
243  m_selectionDecisions.resize(m_extraBranches.size());
244 
245  // set the branch filters
246  branchFilters().push_back(std::bind(&EventSaverFlatNtuple::filterBranches, this, std::placeholders::_1,
247  std::placeholders::_2));
248 
249  // fixed-R re-clustering (RC)
250  if (config->useRCJets()) {
251  m_makeRCJets = true;
252  m_useRCJSS = config->useRCJetSubstructure();
253  m_useRCAdditionalJSS = config->useRCJetAdditionalSubstructure();
254  }
255 
256  // variable-R re-clustering (VarRC)
257  if (config->useVarRCJets()) {
258  m_makeVarRCJets = true;
259  m_VarRCjetBranches.clear(); // clear map of branches just in case
260  m_VarRCjetsubBranches.clear();
263 
264 
265  boost::split(m_VarRCJetRho, config->VarRCJetRho(), boost::is_any_of(","));
266  boost::split(m_VarRCJetMassScale, config->VarRCJetMassScale(), boost::is_any_of(","));
267 
268  m_useVarRCJSS = config->useVarRCJetSubstructure();
269  m_useVarRCAdditionalJSS = config->useVarRCJetAdditionalSubstructure();
270  } // end make VarRC jets
271 
272  //make a tree for each systematic
273  std::string nominalTTreeName("SetMe"), nominalLooseTTreeName("SetMe");
274  if (m_config->doTightEvents()) {
275  for (const auto& treeName : *config->systAllTTreeNames()) {
276  if (treeName.first == m_config->nominalHashValue() || m_config->doTightSysts()) {
277  m_treeManagers.push_back(std::shared_ptr<top::TreeManager>(new top::TreeManager(treeName.second, file,
278  m_config->
279  outputFileNEventAutoFlush(),
280  m_config->
281  outputFileBasketSizePrimitive(),
282  m_config->
283  outputFileBasketSizeVector())));
284  m_treeManagers.back()->branchFilters() = branchFilters();
285  if (treeName.first == m_config->nominalHashValue()) {
286  nominalTTreeName = treeName.second;
287  }
288  }
289  }
290  }
291 
292  if (m_config->doLooseEvents()) {
293  for (const auto& treeName : *config->systAllTTreeNames()) {
294  if (treeName.first == m_config->nominalHashValue() || m_config->doLooseSysts()) {
295  m_treeManagers.push_back(std::shared_ptr<top::TreeManager>(new top::TreeManager(treeName.second + "_Loose",
296  file,
297  m_config->
298  outputFileNEventAutoFlush(),
299  m_config->outputFileBasketSizePrimitive(),
300  m_config->
301  outputFileBasketSizeVector())));
302  m_treeManagers.back()->branchFilters() = branchFilters();
303  if (treeName.first == m_config->nominalHashValue()) {
304  nominalLooseTTreeName = treeName.second + "_Loose";
305  }
306  }
307  }
308  }
309 
310  // Truth tree
311  if (m_config->isMC()) {
312  if (asg::ToolStore::contains<ScaleFactorRetriever>("top::ScaleFactorRetriever")) {
313  m_sfRetriever = asg::ToolStore::get<ScaleFactorRetriever>("top::ScaleFactorRetriever");
314  } else {
315  top::ScaleFactorRetriever* topSFR = new top::ScaleFactorRetriever("top::ScaleFactorRetriever");
316  top::check(asg::setProperty(topSFR, "config", m_config), "Failed to set config");
317  top::check(topSFR->initialize(), "Failed to initalialise");
318  m_sfRetriever = topSFR;
319  }
320 
322  std::shared_ptr<top::TreeManager>(new top::TreeManager("truth", file, m_config->outputFileNEventAutoFlush(),
323  m_config->outputFileBasketSizePrimitive(),
324  m_config->outputFileBasketSizeVector()));
325  m_truthTreeManager->branchFilters() = branchFilters();
326  m_truthTreeManager->makeOutputVariable(m_weight_mc, "weight_mc");
327  m_truthTreeManager->makeOutputVariable(m_eventNumber, "eventNumber");
328  m_truthTreeManager->makeOutputVariable(m_runNumber, "runNumber");
329  m_truthTreeManager->makeOutputVariable(m_mu, "mu");
330  m_truthTreeManager->makeOutputVariable(m_mu_actual, "mu_actual");
331  m_truthTreeManager->makeOutputVariable(m_weight_pileup, "weight_pileup");
332  m_truthTreeManager->makeOutputVariable(m_weight_beamspot, "weight_beamspot");
333  if (m_config->isMC() && m_config->doPileupReweighting()) m_truthTreeManager->makeOutputVariable(m_randomRunNumber,
334  "randomRunNumber");
335 
336  m_truthTreeManager->makeOutputVariable(m_mcChannelNumber, "mcChannelNumber");
337 
338  // Only if you really really want it - this is BIG
339  if (m_config->useTruthParticles() && m_config->doTruthBlockInfo()) {
340  m_truthTreeManager->makeOutputVariable(m_mc_pt, "mc_pt");
341  m_truthTreeManager->makeOutputVariable(m_mc_eta, "mc_eta");
342  m_truthTreeManager->makeOutputVariable(m_mc_phi, "mc_phi");
343  m_truthTreeManager->makeOutputVariable(m_mc_e, "mc_e");
344  m_truthTreeManager->makeOutputVariable(m_mc_pdgId, "mc_pdgId");
345  m_truthTreeManager->makeOutputVariable(m_mc_charge, "mc_charge");
346  m_truthTreeManager->makeOutputVariable(m_mc_status, "mc_status");
347  m_truthTreeManager->makeOutputVariable(m_mc_barcode, "mc_barcode");
348  }
349 
350  // PDF information
351  if (m_config->doTruthPDFInfo()) {
352  if (m_config->doTruthPDFInfoInNominalTrees()) {//if PDF info requested to be saved in nominal trees of truth one
353  for (const auto& systematicTree : m_treeManagers) {//loop on systematic trees to only get the nominal ones
354  if (systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName) {
355  systematicTree->makeOutputVariable(m_PDFinfo_X1, "PDFinfo_X1");
356  systematicTree->makeOutputVariable(m_PDFinfo_X2, "PDFinfo_X2");
357  systematicTree->makeOutputVariable(m_PDFinfo_PDGID1, "PDFinfo_PDGID1");
358  systematicTree->makeOutputVariable(m_PDFinfo_PDGID2, "PDFinfo_PDGID2");
359  systematicTree->makeOutputVariable(m_PDFinfo_Q, "PDFinfo_Q");
360  systematicTree->makeOutputVariable(m_PDFinfo_XF1, "PDFinfo_XF1");
361  systematicTree->makeOutputVariable(m_PDFinfo_XF2, "PDFinfo_XF2");
362  }
363  }
364  } else {
365  m_truthTreeManager->makeOutputVariable(m_PDFinfo_X1, "PDFinfo_X1");
366  m_truthTreeManager->makeOutputVariable(m_PDFinfo_X2, "PDFinfo_X2");
367  m_truthTreeManager->makeOutputVariable(m_PDFinfo_PDGID1, "PDFinfo_PDGID1");
368  m_truthTreeManager->makeOutputVariable(m_PDFinfo_PDGID2, "PDFinfo_PDGID2");
369  m_truthTreeManager->makeOutputVariable(m_PDFinfo_Q, "PDFinfo_Q");
370  m_truthTreeManager->makeOutputVariable(m_PDFinfo_XF1, "PDFinfo_XF1");
371  m_truthTreeManager->makeOutputVariable(m_PDFinfo_XF2, "PDFinfo_XF2");
372  }
373  }
374 
375  // MC Generator weights
376  if (m_config->doMCGeneratorWeights()) {
377  if (m_config->doMCGeneratorWeightsInNominalTrees()) {//if MCGeneratorWeights requested to be saved in nominal
378  // trees of truth one
379  for (const auto& systematicTree : m_treeManagers) {//loop on systematic trees to only get the nominal ones
380  if (systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName) {
381  systematicTree->makeOutputVariable(m_mc_generator_weights, "mc_generator_weights");
382  }
383  }
384  } else {
385  m_truthTreeManager->makeOutputVariable(m_mc_generator_weights, "mc_generator_weights");
386  }
387  }
388 
389  if (m_config->saveLHAPDFEvent()) {
390  for (const auto& pdfset : m_config->LHAPDFSets())
391  m_PDF_eventWeights[ pdfset ] = std::vector<float>();
392 
393  for (auto& pdf : m_PDF_eventWeights) {
394  if (m_config->doLHAPDFInNominalTrees()) {//if PDF weights requested to be saved in nominal trees instead of
395  // truth one
396  for (const auto& systematicTree : m_treeManagers) {//loop on systematic trees to only get the nominal ones
397  if (systematicTree->name() == nominalTTreeName ||
398  systematicTree->name() ==
399  nominalLooseTTreeName) systematicTree->makeOutputVariable(pdf.second, pdf.first);
400  }
401  } else {
402  m_truthTreeManager->makeOutputVariable(pdf.second, pdf.first);
403  }
404  }
405  }
406  }
407 
408  if (m_config->useLargeRJets()) {
409  for (const std::pair<std::string, std::string>& taggerName : m_config->boostedJetTaggers())
410  m_boostedJetTaggersNames.push_back(taggerName.second);
411  for (const std::pair<const std::string, std::string>& taggerSF : m_config->boostedTaggerSFnames())
412  m_boostedJetTaggersNamesCalibrated.push_back(taggerSF.first);
413  }
414 
415  if (m_config->useJets()) {
416  for (const auto& algo_tool : m_config->bTagAlgos()) {
417  const std::string& algo = algo_tool.first;
418  DLx.emplace(algo, SG::AuxElement::ConstAccessor<float>("AnalysisTop_" + algo));
419  m_jet_DLx[algo] = std::vector<float>();
420  m_jet_DLx_pb[algo] = std::vector<float>();
421  m_jet_DLx_pc[algo] = std::vector<float>();
422  m_jet_DLx_pu[algo] = std::vector<float>();
423  m_jet_DLx_ptau[algo] = std::vector<float>();
424  }
425  }
426 
427  if (m_config->useTrackJets()) {
428  for (const auto& algo_tool : m_config->bTagAlgos_trkJet()) {
429  const std::string& algo = algo_tool.first;
430  DLx.emplace(algo, SG::AuxElement::ConstAccessor<float>("AnalysisTop_" + algo));
431  m_tjet_DLx[algo] = std::vector<float>();
432  m_tjet_DLx_pb[algo] = std::vector<float>();
433  m_tjet_DLx_pc[algo] = std::vector<float>();
434  m_tjet_DLx_pu[algo] = std::vector<float>();
435  }
436  }
437 
438  //loop over systematics and attach variables
439  for (const auto& systematicTree : m_treeManagers) {
440  if (m_config->isMC()) {
441  systematicTree->makeOutputVariable(m_weight_mc, "weight_mc");
442 
443  //some event weights
444  systematicTree->makeOutputVariable(m_weight_pileup, "weight_pileup");
445  systematicTree->makeOutputVariable(m_weight_beamspot, "weight_beamspot");
446  systematicTree->makeOutputVariable(m_weight_leptonSF, "weight_leptonSF");
447  systematicTree->makeOutputVariable(m_weight_trigger, "weight_trigger");
448 
449  if (m_config->useFwdElectrons()) systematicTree->makeOutputVariable(m_weight_fwdElSF, "weight_fwdElSF");
450 
451  if (m_config->usePhotons()) systematicTree->makeOutputVariable(m_weight_photonSF, "weight_photonSF");
452 
453  if (m_config->useTaus()) systematicTree->makeOutputVariable(m_weight_tauSF,
454  "weight_tauSF");
455 
456  // nominal b-tagging SFs
457  for (const std::string& tagWP : m_config->bTagWP_calib()) {
458  // skip uncalibrated though available WPs
459  m_weight_bTagSF[tagWP] = 0.;
460  systematicTree->makeOutputVariable(m_weight_bTagSF[tagWP], "weight_bTagSF_" + shortBtagWP(tagWP));
461  if (m_config->storePerJetBtagSFs() && m_config->isMC()) {
462  m_perjet_weight_bTagSF[tagWP] = std::vector<float>();
463  m_perjet_weight_bTagSF_eigen_B_up[tagWP] = std::vector<std::vector<float> >();
464  m_perjet_weight_bTagSF_eigen_B_down[tagWP] = std::vector<std::vector<float> >();
465  m_perjet_weight_bTagSF_eigen_C_up[tagWP] = std::vector<std::vector<float> >();
466  m_perjet_weight_bTagSF_eigen_C_down[tagWP] = std::vector<std::vector<float> >();
467  m_perjet_weight_bTagSF_eigen_Light_up[tagWP] = std::vector<std::vector<float> >();
468  m_perjet_weight_bTagSF_eigen_Light_down[tagWP] = std::vector<std::vector<float> >();
469  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF[tagWP],
470  "weight_perjet_bTagSF_" + shortBtagWP(tagWP));
471  if ((systematicTree->name() != nominalTTreeName) && (systematicTree->name() != nominalLooseTTreeName) && !(m_config->dumpBtagSystsInSystTrees())) continue;
472  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_eigen_B_up[tagWP], "weight_perjet_bTagSF_" + shortBtagWP(
473  tagWP) + "_eigenvars_B_up");
474  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_eigen_B_down[tagWP], "weight_perjet_bTagSF_" + shortBtagWP(
475  tagWP) + "_eigenvars_B_down");
476  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_eigen_C_up[tagWP], "weight_perjet_bTagSF_" + shortBtagWP(
477  tagWP) + "_eigenvars_C_up");
478  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_eigen_C_down[tagWP], "weight_perjet_bTagSF_" + shortBtagWP(
479  tagWP) + "_eigenvars_C_down");
480  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_eigen_Light_up[tagWP], "weight_perjet_bTagSF_" + shortBtagWP(
481  tagWP) + "_eigenvars_Light_up");
482  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_eigen_Light_down[tagWP], "weight_perjet_bTagSF_" + shortBtagWP(
483  tagWP) + "_eigenvars_Light_down");
484  for (const std::string& name : m_config->btagging_namedSysts(tagWP)) {
485  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_named_up[tagWP][name], "weight_perjet_bTagSF_" + shortBtagWP(
486  tagWP) + "_" + betterBtagNamedSyst(name) + "_up");
487  systematicTree->makeOutputVariable(m_perjet_weight_bTagSF_named_down[tagWP][name], "weight_perjet_bTagSF_" + shortBtagWP(
488  tagWP) + "_" + betterBtagNamedSyst(name) + "_down");
489  }
490  }
491  }
492  if (m_config->useTrackJets()) {
493  for (const std::string& tagWP : m_config->bTagWP_calib_trkJet()) {
494  // skip uncalibrated though available WPs
495  m_weight_trackjet_bTagSF[tagWP] = 0.;
496  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF[tagWP],
497  "weight_trackjet_bTagSF_" + shortBtagWP(tagWP));
498  if (m_config->storePerJetBtagSFs() && m_config->isMC()) {
499  m_perjet_weight_trackjet_bTagSF[tagWP] = std::vector<float>();
500  m_perjet_weight_trackjet_bTagSF_eigen_B_up[tagWP] = std::vector<std::vector<float> >();
501  m_perjet_weight_trackjet_bTagSF_eigen_B_down[tagWP] = std::vector<std::vector<float> >();
502  m_perjet_weight_trackjet_bTagSF_eigen_C_up[tagWP] = std::vector<std::vector<float> >();
503  m_perjet_weight_trackjet_bTagSF_eigen_C_down[tagWP] = std::vector<std::vector<float> >();
504  m_perjet_weight_trackjet_bTagSF_eigen_Light_up[tagWP] = std::vector<std::vector<float> >();
505  m_perjet_weight_trackjet_bTagSF_eigen_Light_down[tagWP] = std::vector<std::vector<float> >();
506  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
507  tagWP));
508  if ((systematicTree->name() != nominalTTreeName) && (systematicTree->name() != nominalLooseTTreeName) && !(m_config->dumpBtagSystsInSystTrees())) continue;
509  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_eigen_B_up[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
510  tagWP) + "_eigenvars_B_up");
511  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_eigen_B_down[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
512  tagWP) + "_eigenvars_B_down");
513  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_eigen_C_up[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
514  tagWP) + "_eigenvars_C_up");
515  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_eigen_C_down[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
516  tagWP) + "_eigenvars_C_down");
517  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_eigen_Light_up[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
518  tagWP) + "_eigenvars_Light_up");
519  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_eigen_Light_down[tagWP], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
520  tagWP) + "_eigenvars_Light_down");
521  for (const std::string& name : m_config->trkjet_btagging_namedSysts(tagWP)) {
522  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_named_up[tagWP][name], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
523  tagWP) + "_" + betterBtagNamedSyst(name) + "_up");
524  systematicTree->makeOutputVariable(m_perjet_weight_trackjet_bTagSF_named_down[tagWP][name], "weight_perjet_trackjet_bTagSF_" + shortBtagWP(
525  tagWP) + "_" + betterBtagNamedSyst(name) + "_down");
526  }
527  }
528  }
529  }
530 
531 
532  systematicTree->makeOutputVariable(m_weight_jvt, "weight_jvt");
533  if (m_config->getfJVTWP() != "None") systematicTree->makeOutputVariable(m_weight_forwardjvt, "weight_forwardjvt");
534 
535  if (m_config->isSherpa22Vjets()) systematicTree->makeOutputVariable(m_weight_sherpa_22_vjets,
536  "weight_sherpa_22_vjets");
537 
538  if (systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName) {
539  systematicTree->makeOutputVariable(m_weight_pileup_UP, "weight_pileup_UP");
540  systematicTree->makeOutputVariable(m_weight_pileup_DOWN, "weight_pileup_DOWN");
541 
542  if (m_config->useFwdElectrons()) {
543  systematicTree->makeOutputVariable(m_weight_fwdElSF_FWDEL_SF_ID_UP, "weight_fwdElSF_FWDEL_SF_ID_UP");
544  systematicTree->makeOutputVariable(m_weight_fwdElSF_FWDEL_SF_ID_DOWN, "weight_fwdElSF_FWDEL_SF_ID_DOWN");
545  }
546  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_Reco_UP, "weight_leptonSF_EL_SF_Reco_UP");
547  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_Reco_DOWN, "weight_leptonSF_EL_SF_Reco_DOWN");
548  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_ID_UP, "weight_leptonSF_EL_SF_ID_UP");
549  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_ID_DOWN, "weight_leptonSF_EL_SF_ID_DOWN");
550  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_Isol_UP, "weight_leptonSF_EL_SF_Isol_UP");
551  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_Isol_DOWN, "weight_leptonSF_EL_SF_Isol_DOWN");
552 
553  systematicTree->makeOutputVariable(m_weight_trigger_EL_SF_UP, "weight_trigger_EL_SF_Trigger_UP");
554  systematicTree->makeOutputVariable(m_weight_trigger_EL_SF_DOWN, "weight_trigger_EL_SF_Trigger_DOWN");
555 
556  if (m_config->electronEfficiencySystematicModel() != "TOTAL") {
557  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_CorrModel_Reco_UP,
558  "weight_leptonSF_EL_SF_" + m_config->electronEfficiencySystematicModel() +
559  "_Reco_UP");
560  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_CorrModel_Reco_DOWN,
561  "weight_leptonSF_EL_SF_" + m_config->electronEfficiencySystematicModel() +
562  "_Reco_DOWN");
563  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_CorrModel_ID_UP,
564  "weight_leptonSF_EL_SF_" + m_config->electronEfficiencySystematicModel() +
565  "_ID_UP");
566  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_CorrModel_ID_DOWN,
567  "weight_leptonSF_EL_SF_" + m_config->electronEfficiencySystematicModel() +
568  "_ID_DOWN");
569  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_CorrModel_Iso_UP,
570  "weight_leptonSF_EL_SF_" + m_config->electronEfficiencySystematicModel() +
571  "_Iso_UP");
572  systematicTree->makeOutputVariable(m_weight_leptonSF_EL_SF_CorrModel_Iso_DOWN,
573  "weight_leptonSF_EL_SF_" + m_config->electronEfficiencySystematicModel() +
574  "_Iso_DOWN");
575  }
576 
577  systematicTree->makeOutputVariable(m_weight_trigger_MU_SF_STAT_UP,
578  "weight_trigger_MU_SF_STAT_UP");
579  systematicTree->makeOutputVariable(m_weight_trigger_MU_SF_STAT_DOWN,
580  "weight_trigger_MU_SF_STAT_DOWN");
581  systematicTree->makeOutputVariable(m_weight_trigger_MU_SF_SYST_UP,
582  "weight_trigger_MU_SF_SYST_UP");
583  systematicTree->makeOutputVariable(m_weight_trigger_MU_SF_SYST_DOWN,
584  "weight_trigger_MU_SF_SYST_DOWN");
585  // Muon ID SF systematics (regular)
586  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_STAT_UP, "weight_leptonSF_MU_SF_ID_STAT_UP");
587  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_STAT_DOWN,
588  "weight_leptonSF_MU_SF_ID_STAT_DOWN");
589  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_UP,
590  "weight_leptonSF_MU_SF_ID_STAT_LOWPT_UP");
591  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_DOWN,
592  "weight_leptonSF_MU_SF_ID_STAT_LOWPT_DOWN");
593  if (m_config->muonBreakDownSystematics()) {
594  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_UP,
595  "weight_leptonSF_MU_SF_ID_BKG_FRACTION_UP");
596  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_DOWN,
597  "weight_leptonSF_MU_SF_ID_BKG_FRACTION_DOWN");
598  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_UP,
599  "weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_UP");
600  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_DOWN,
601  "weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_DOWN");
602  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_UP,
603  "weight_leptonSF_MU_SF_ID_LUMI_UNCERT_UP");
604  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_DOWN,
605  "weight_leptonSF_MU_SF_ID_LUMI_UNCERT_DOWN");
606  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_MATCHING_UP,
607  "weight_leptonSF_MU_SF_ID_MATCHING_UP");
608  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_MATCHING_DOWN,
609  "weight_leptonSF_MU_SF_ID_MATCHING_DOWN");
610  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_UP,
611  "weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_UP");
612  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_DOWN,
613  "weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_DOWN");
614  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_MC_XSEC_UP,
615  "weight_leptonSF_MU_SF_ID_MC_XSEC_UP");
616  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_MC_XSEC_DOWN,
617  "weight_leptonSF_MU_SF_ID_MC_XSEC_DOWN");
618  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_UP,
619  "weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_UP");
620  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_DOWN,
621  "weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_DOWN");
622  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_UP,
623  "weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_UP");
624  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_DOWN,
625  "weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_DOWN");
626  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_UP,
627  "weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_UP");
628  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_DOWN,
629  "weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_DOWN");
630  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_TRUTH_UP,
631  "weight_leptonSF_MU_SF_ID_TRUTH_UP");
632  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_TRUTH_DOWN,
633  "weight_leptonSF_MU_SF_ID_TRUTH_DOWN");
634  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_UP,
635  "weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_UP");
636  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_DOWN,
637  "weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_DOWN");
638  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_CR1_UP,
639  "weight_leptonSF_MU_SF_ID_CR1_UP");
640  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_CR1_DOWN,
641  "weight_leptonSF_MU_SF_ID_CR1_DOWN");
642  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_CR2_UP,
643  "weight_leptonSF_MU_SF_ID_CR2_UP");
644  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_CR2_DOWN,
645  "weight_leptonSF_MU_SF_ID_CR2_DOWN");
646  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_CR3_UP,
647  "weight_leptonSF_MU_SF_ID_CR3_UP");
648  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_CR3_DOWN,
649  "weight_leptonSF_MU_SF_ID_CR3_DOWN");
650  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_UP,
651  "weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_UP");
652  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_DOWN,
653  "weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_DOWN");
654  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_UP,
655  "weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_UP");
656  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_DOWN,
657  "weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_DOWN");
658  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_TAGPT_UP,
659  "weight_leptonSF_MU_SF_ID_TAGPT_UP");
660  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_TAGPT_DOWN,
661  "weight_leptonSF_MU_SF_ID_TAGPT_DOWN");
662  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_UP,
663  "weight_leptonSF_MU_SF_ID_EXTRAPOLATION_UP");
664  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_DOWN,
665  "weight_leptonSF_MU_SF_ID_EXTRAPOLATION_DOWN");
666  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_UP,
667  "weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_UP");
668  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_DOWN,
669  "weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_DOWN");
670  } else {
671  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_UP,
672  "weight_leptonSF_MU_SF_ID_SYST_LOWPT_UP");
673  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_DOWN,
674  "weight_leptonSF_MU_SF_ID_SYST_LOWPT_DOWN");
675  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_SYST_UP, "weight_leptonSF_MU_SF_ID_SYST_UP");
676  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_SYST_DOWN,
677  "weight_leptonSF_MU_SF_ID_SYST_DOWN");
678  }
679  if (systematicTree->name() == nominalTTreeName && m_config->muonQuality() == "HighPt") {
680  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP,
681  "weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP");
682  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN,
683  "weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN");
684  }
685  if (systematicTree->name() == nominalLooseTTreeName && m_config->muonQualityLoose() == "HighPt") {
686  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP,
687  "weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP");
688  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN,
689  "weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN");
690  }
691  // Muon isolation and TTVA SF systematics
692  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_STAT_UP,
693  "weight_leptonSF_MU_SF_Isol_STAT_UP");
694  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_STAT_DOWN,
695  "weight_leptonSF_MU_SF_Isol_STAT_DOWN");
696  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_STAT_UP,
697  "weight_leptonSF_MU_SF_TTVA_STAT_UP");
698  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_STAT_DOWN,
699  "weight_leptonSF_MU_SF_TTVA_STAT_DOWN");
700  if (m_config->muonBreakDownSystematics()) {
701 
702  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_UP,
703  "weight_leptonSF_MU_SF_Isol_BKG_FRACTION_UP");
704  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_DOWN,
705  "weight_leptonSF_MU_SF_Isol_BKG_FRACTION_DOWN");
706  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_DRMUJ_UP,
707  "weight_leptonSF_MU_SF_Isol_DRMUJ_UP");
708  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_DRMUJ_DOWN,
709  "weight_leptonSF_MU_SF_Isol_DRMUJ_DOWN");
710  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_UP,
711  "weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_UP");
712  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_DOWN,
713  "weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_DOWN");
714  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_MC_XSEC_UP,
715  "weight_leptonSF_MU_SF_Isol_MC_XSEC_UP");
716  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_MC_XSEC_DOWN,
717  "weight_leptonSF_MU_SF_Isol_MC_XSEC_DOWN");
718  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_UP,
719  "weight_leptonSF_MU_SF_Isol_MLLWINDOW_UP");
720  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_DOWN,
721  "weight_leptonSF_MU_SF_Isol_MLLWINDOW_DOWN");
722  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_UP,
723  "weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_UP");
724  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_DOWN,
725  "weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_DOWN");
726  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_UP,
727  "weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_UP");
728  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_DOWN,
729  "weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_DOWN");
730  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_UP,
731  "weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_UP");
732  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_DOWN,
733  "weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_DOWN");
734  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_UP,
735  "weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_UP");
736  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_DOWN,
737  "weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_DOWN");
738 
739  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_UP,
740  "weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_UP");
741  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_DOWN,
742  "weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_DOWN");
743  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_UP,
744  "weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_UP");
745  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_DOWN,
746  "weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_DOWN");
747  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_UP,
748  "weight_leptonSF_MU_SF_TTVA_MC_XSEC_UP");
749  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_DOWN,
750  "weight_leptonSF_MU_SF_TTVA_MC_XSEC_DOWN");
751  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_UP,
752  "weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_UP");
753  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_DOWN,
754  "weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_DOWN");
755  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_UP,
756  "weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_UP");
757  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_DOWN,
758  "weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_DOWN");
759  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_UP,
760  "weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_UP");
761  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_DOWN,
762  "weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_DOWN");
763  } else {
764  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_SYST_UP,
765  "weight_leptonSF_MU_SF_Isol_SYST_UP");
766  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_Isol_SYST_DOWN,
767  "weight_leptonSF_MU_SF_Isol_SYST_DOWN");
768  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_SYST_UP,
769  "weight_leptonSF_MU_SF_TTVA_SYST_UP");
770  systematicTree->makeOutputVariable(m_weight_leptonSF_MU_SF_TTVA_SYST_DOWN,
771  "weight_leptonSF_MU_SF_TTVA_SYST_DOWN");
772  }
773 
774  if (m_config->useTaus()) {
775  // Tau-electron overlap removal
777  i = top::topSFSyst(i + 1)) {
778  if (top::tauSF_alias.find(i) == top::tauSF_alias.end()) continue;
780  systematicTree->makeOutputVariable(m_weight_tauSF_variations[i], ("weight_tauSF_" + top::tauSF_alias.at(
781  i)).Data());
782  }
783  }
784 
785  if (m_config->usePhotons()) {
786  systematicTree->makeOutputVariable(m_weight_photonSF_ID_UP,
787  "weight_photonSF_ID_UP");
788  systematicTree->makeOutputVariable(m_weight_photonSF_ID_DOWN,
789  "weight_photonSF_ID_DOWN");
790  systematicTree->makeOutputVariable(m_weight_photonSF_effIso_UP,
791  "weight_photonSF_effIso_UP");
792  systematicTree->makeOutputVariable(m_weight_photonSF_effIso_DOWN,
793  "weight_photonSF_effIso_DOWN");
794  systematicTree->makeOutputVariable(m_weight_trigger_PH_UNCERT_UP,
795  "weight_trigger_PH_UNCERT_UP");
796  systematicTree->makeOutputVariable(m_weight_trigger_PH_UNCERT_DOWN,
797  "weight_trigger_PH_UNCERT_DOWN");
798  }
799 
800  systematicTree->makeOutputVariable(m_weight_jvt_up, "weight_jvt_UP");
801  systematicTree->makeOutputVariable(m_weight_jvt_down, "weight_jvt_DOWN");
802  if (m_config->getfJVTWP() != "None") {
803  systematicTree->makeOutputVariable(m_weight_forwardjvt_up, "weight_forwardjvt_UP");
804  systematicTree->makeOutputVariable(m_weight_forwardjvt_down, "weight_forwardjvt_DOWN");
805  }
806  }
807 
808  // for b-tagging SFs, can also have systematic-shifted in systematics trees
809  if (systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName ||
810  m_config->dumpBtagSystsInSystTrees()) {
811  // b-tagging SFs: eigenvectors and named systematics
812  for (const std::string& tagWP : m_config->bTagWP_calib()) {
813  // up
814  systematicTree->makeOutputVariable(m_weight_bTagSF_eigen_B_up[tagWP], "weight_bTagSF_" + shortBtagWP(
815  tagWP) + "_eigenvars_B_up");
816  systematicTree->makeOutputVariable(m_weight_bTagSF_eigen_C_up[tagWP], "weight_bTagSF_" + shortBtagWP(
817  tagWP) + "_eigenvars_C_up");
818  systematicTree->makeOutputVariable(m_weight_bTagSF_eigen_Light_up[tagWP],
819  "weight_bTagSF_" + shortBtagWP(tagWP) + "_eigenvars_Light_up");
820  // down
821  systematicTree->makeOutputVariable(m_weight_bTagSF_eigen_B_down[tagWP], "weight_bTagSF_" + shortBtagWP(
822  tagWP) + "_eigenvars_B_down");
823  systematicTree->makeOutputVariable(m_weight_bTagSF_eigen_C_down[tagWP], "weight_bTagSF_" + shortBtagWP(
824  tagWP) + "_eigenvars_C_down");
825  systematicTree->makeOutputVariable(m_weight_bTagSF_eigen_Light_down[tagWP],
826  "weight_bTagSF_" + shortBtagWP(tagWP) + "_eigenvars_Light_down");
827  // named systematics
828  for (const auto& name : m_config->btagging_namedSysts(tagWP)) {
829  systematicTree->makeOutputVariable(m_weight_bTagSF_named_up[tagWP][name],
830  "weight_bTagSF_" + shortBtagWP(tagWP) + "_" + betterBtagNamedSyst(
831  name) + "_up");
832  systematicTree->makeOutputVariable(m_weight_bTagSF_named_down[tagWP][name], "weight_bTagSF_" + shortBtagWP(
833  tagWP) + "_" + betterBtagNamedSyst(name) + "_down");
834  }
835  }
836  if (m_config->useTrackJets()) {
837  for (const std::string& tagWP : m_config->bTagWP_calib_trkJet()) {
838  // up
839  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_eigen_B_up[tagWP], "weight_trackjet_bTagSF_" + shortBtagWP(
840  tagWP) + "_eigenvars_B_up");
841  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_eigen_C_up[tagWP], "weight_trackjet_bTagSF_" + shortBtagWP(
842  tagWP) + "_eigenvars_C_up");
843  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_eigen_Light_up[tagWP], "weight_trackjet_bTagSF_" + shortBtagWP(
844  tagWP) + "_eigenvars_Light_up");
845  // down
846  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_eigen_B_down[tagWP], "weight_trackjet_bTagSF_" + shortBtagWP(
847  tagWP) + "_eigenvars_B_down");
848  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_eigen_C_down[tagWP], "weight_trackjet_bTagSF_" + shortBtagWP(
849  tagWP) + "_eigenvars_C_down");
850  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_eigen_Light_down[tagWP], "weight_trackjet_bTagSF_" + shortBtagWP(
851  tagWP) + "_eigenvars_Light_down");
852  // named systematics
853  for (const auto& name : m_config->trkjet_btagging_namedSysts(tagWP)) {
854  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_named_up[tagWP][name], "weight_trackjet_bTagSF_" + shortBtagWP(
855  tagWP) + "_" + betterBtagNamedSyst(name) + "_up");
856  systematicTree->makeOutputVariable(m_weight_trackjet_bTagSF_named_down[tagWP][name], "weight_trackjet_bTagSF_" + shortBtagWP(
857  tagWP) + "_" + betterBtagNamedSyst(name) + "_down");
858  }
859  }
860  }
861  }
862  }
863 
865  if (!m_config->isMC() && systematicTree->name() == nominalLooseTTreeName && m_config->doFakesMMWeightsIFF()) {
866  systematicTree->makeOutputVariable(m_ASMweights, m_ASMdecorName);
867  }
868 
870  if (m_config->saveBootstrapWeights()) {
871  systematicTree->makeOutputVariable(m_weight_poisson, "weight_poisson");
872  }
873 
874  //event info
875  systematicTree->makeOutputVariable(m_eventNumber, "eventNumber");
876  systematicTree->makeOutputVariable(m_runNumber, "runNumber");
877  if (m_config->isMC() && m_config->doPileupReweighting()) systematicTree->makeOutputVariable(m_randomRunNumber,
878  "randomRunNumber");
879  systematicTree->makeOutputVariable(m_mcChannelNumber, "mcChannelNumber");
880  systematicTree->makeOutputVariable(m_mu, "mu");
881  systematicTree->makeOutputVariable(m_mu_actual, "mu_actual");
882  if (!m_config->isMC()) {
883  systematicTree->makeOutputVariable(m_mu_original, "mu_original_xAOD");
884  systematicTree->makeOutputVariable(m_mu_actual_original, "mu_actual_original_xAOD");
885  }
886  systematicTree->makeOutputVariable(m_backgroundFlags, "backgroundFlags");
887  if (m_config->useMuons()) systematicTree->makeOutputVariable(m_hasBadMuon, "hasBadMuon");
888 
889  //electrons
890  if (m_config->useElectrons()) {
891  systematicTree->makeOutputVariable(m_el_pt, "el_pt");
892  systematicTree->makeOutputVariable(m_el_eta, "el_eta");
893  systematicTree->makeOutputVariable(m_el_cl_eta, "el_cl_eta");
894  systematicTree->makeOutputVariable(m_el_phi, "el_phi");
895  systematicTree->makeOutputVariable(m_el_e, "el_e");
896  systematicTree->makeOutputVariable(m_el_charge, "el_charge");
897  systematicTree->makeOutputVariable(m_el_topoetcone20, "el_topoetcone20");
898  systematicTree->makeOutputVariable(m_el_ptvarcone20, "el_ptvarcone20");
899  if (systematicTree->name().find("Loose") != std::string::npos) {
900  systematicTree->makeOutputVariable(m_el_isTight, "el_isTight");
901  }
902  systematicTree->makeOutputVariable(m_el_CF, "el_CF");
903  systematicTree->makeOutputVariable(m_el_d0sig, "el_d0sig");
904  systematicTree->makeOutputVariable(m_el_delta_z0_sintheta, "el_delta_z0_sintheta");
905  if (m_config->isMC()) {
906  systematicTree->makeOutputVariable(m_el_true_type, "el_true_type");
907  systematicTree->makeOutputVariable(m_el_true_origin, "el_true_origin");
908  systematicTree->makeOutputVariable(m_el_true_firstEgMotherTruthType, "el_true_firstEgMotherTruthType");
909  systematicTree->makeOutputVariable(m_el_true_firstEgMotherTruthOrigin, "el_true_firstEgMotherTruthOrigin");
910  systematicTree->makeOutputVariable(m_el_true_firstEgMotherPdgId, "el_true_firstEgMotherPdgId");
911  systematicTree->makeOutputVariable(m_el_true_isPrompt, "el_true_isPrompt");
912  systematicTree->makeOutputVariable(m_el_true_isChargeFl, "el_true_isChargeFl");
913  }
914  if (m_config->enablePromptLeptonImprovedVetoStudies()) {
915  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonRNN_conversion, "PLIV_el_PromptLeptonRNN_conversion");
916  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonRNN_non_prompt_b, "PLIV_el_PromptLeptonRNN_non_prompt_b");
917  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonRNN_non_prompt_c, "PLIV_el_PromptLeptonRNN_non_prompt_c");
918  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonRNN_prompt, "PLIV_el_PromptLeptonRNN_prompt");
919  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_MVAXBin, "PLIV_el_PromptLeptonImprovedInput_MVAXBin");
920  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack, "PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack");
921  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_topoetcone30rel, "PLIV_el_PromptLeptonImprovedInput_topoetcone30rel");
922  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel, "PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel");
923  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_PtFrac, "PLIV_el_PromptLeptonImprovedInput_PtFrac");
924  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_DRlj, "PLIV_el_PromptLeptonImprovedInput_DRlj");
925  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel, "PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel");
926  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_PtRel, "PLIV_el_PromptLeptonImprovedInput_PtRel");
927  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx, "PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx");
928  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedVetoBARR, "PLIV_el_PromptLeptonImprovedVetoBARR");
929  systematicTree->makeOutputVariable(m_PLIV_el_PromptLeptonImprovedVetoECAP, "PLIV_el_PromptLeptonImprovedVetoECAP");
930  }
931  }
932 
933  //forward electrons
934  if (m_config->useFwdElectrons()) {
935  systematicTree->makeOutputVariable(m_fwdel_pt, "fwdel_pt");
936  systematicTree->makeOutputVariable(m_fwdel_eta, "fwdel_eta");
937  systematicTree->makeOutputVariable(m_fwdel_phi, "fwdel_phi");
938  systematicTree->makeOutputVariable(m_fwdel_e, "fwdel_e");
939  systematicTree->makeOutputVariable(m_fwdel_etcone20, "fwdel_etcone20");
940  systematicTree->makeOutputVariable(m_fwdel_etcone30, "fwdel_etcone30");
941  systematicTree->makeOutputVariable(m_fwdel_etcone40, "fwdel_etcone40");
942  if (systematicTree->name().find("Loose") != std::string::npos) {
943  systematicTree->makeOutputVariable(m_fwdel_isTight, "fwdel_isTight");
944  }
945  }//end of fwd electrons branches
946 
947  //muons
948  if (m_config->useMuons()) {
949  systematicTree->makeOutputVariable(m_mu_pt, "mu_pt");
950  systematicTree->makeOutputVariable(m_mu_eta, "mu_eta");
951  systematicTree->makeOutputVariable(m_mu_phi, "mu_phi");
952  systematicTree->makeOutputVariable(m_mu_e, "mu_e");
953  systematicTree->makeOutputVariable(m_mu_charge, "mu_charge");
954  systematicTree->makeOutputVariable(m_mu_topoetcone20, "mu_topoetcone20");
955  systematicTree->makeOutputVariable(m_mu_ptvarcone30, "mu_ptvarcone30");
956  if (systematicTree->name().find("Loose") != std::string::npos) {
957  systematicTree->makeOutputVariable(m_mu_isTight, "mu_isTight");
958  }
959  systematicTree->makeOutputVariable(m_mu_d0sig, "mu_d0sig");
960  systematicTree->makeOutputVariable(m_mu_delta_z0_sintheta, "mu_delta_z0_sintheta");
961  if (m_config->isMC()) {
962  systematicTree->makeOutputVariable(m_mu_true_type, "mu_true_type");
963  systematicTree->makeOutputVariable(m_mu_true_origin, "mu_true_origin");
964  systematicTree->makeOutputVariable(m_mu_true_isPrompt, "mu_true_isPrompt");
965  }
966  if (m_config->enablePromptLeptonImprovedVetoStudies()) {
967  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonRNN_non_prompt_b, "PLIV_mu_PromptLeptonRNN_non_prompt_b");
968  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonRNN_non_prompt_c, "PLIV_mu_PromptLeptonRNN_non_prompt_c");
969  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonRNN_prompt, "PLIV_mu_PromptLeptonRNN_prompt");
970  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_MVAXBin, "PLIV_mu_PromptLeptonImprovedInput_MVAXBin");
971  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel, "PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel");
972  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_PtFrac, "PLIV_mu_PromptLeptonImprovedInput_PtFrac");
973  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_DRlj, "PLIV_mu_PromptLeptonImprovedInput_DRlj");
974  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel, "PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel");
975  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel, "PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel");
976  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest, "PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest");
977  systematicTree->makeOutputVariable(m_PLIV_mu_PromptLeptonImprovedVeto, "PLIV_mu_PromptLeptonImprovedVeto");
978  }
979  }
980 
981  //soft muons
982  if (m_config->useSoftMuons()) {
983  systematicTree->makeOutputVariable(m_softmu_pt, "softmu_pt");
984  systematicTree->makeOutputVariable(m_softmu_eta, "softmu_eta");
985  systematicTree->makeOutputVariable(m_softmu_phi, "softmu_phi");
986  systematicTree->makeOutputVariable(m_softmu_e, "softmu_e");
987  systematicTree->makeOutputVariable(m_softmu_charge, "softmu_charge");
988  systematicTree->makeOutputVariable(m_softmu_d0, "softmu_d0");
989  systematicTree->makeOutputVariable(m_softmu_d0sig, "softmu_d0sig");
990  systematicTree->makeOutputVariable(m_softmu_delta_z0_sintheta, "softmu_delta_z0_sintheta");
991  if (m_config->isMC()) {
992  systematicTree->makeOutputVariable(m_softmu_true_type, "softmu_true_type");
993  systematicTree->makeOutputVariable(m_softmu_true_origin, "softmu_true_origin");
994  systematicTree->makeOutputVariable(m_softmu_SF_ID, "softmu_SF_ID");
995 
996  if (systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName) {
997  systematicTree->makeOutputVariable(m_softmu_SF_ID_STAT_UP, "softmu_SF_ID_STAT_UP");
998  systematicTree->makeOutputVariable(m_softmu_SF_ID_STAT_DOWN, "softmu_SF_ID_STAT_DOWN");
999  systematicTree->makeOutputVariable(m_softmu_SF_ID_SYST_UP, "softmu_SF_ID_SYST_UP");
1000  systematicTree->makeOutputVariable(m_softmu_SF_ID_SYST_DOWN, "softmu_SF_ID_SYST_DOWN");
1001  systematicTree->makeOutputVariable(m_softmu_SF_ID_STAT_LOWPT_UP, "softmu_SF_ID_STAT_LOWPT_UP");
1002  systematicTree->makeOutputVariable(m_softmu_SF_ID_STAT_LOWPT_DOWN, "softmu_SF_ID_STAT_LOWPT_DOWN");
1003  systematicTree->makeOutputVariable(m_softmu_SF_ID_SYST_LOWPT_UP, "softmu_SF_ID_SYST_LOWPT_UP");
1004  systematicTree->makeOutputVariable(m_softmu_SF_ID_SYST_LOWPT_DOWN, "softmu_SF_ID_SYST_LOWPT_DOWN");
1005  }
1006  if(m_config->softmuonAdditionalTruthInfo())
1007  {
1008  if(m_config->softmuonAdditionalTruthInfoCheckPartonOrigin()) systematicTree->makeOutputVariable(m_softmu_parton_origin_flag, "softmu_parton_origin_flag");
1009  systematicTree->makeOutputVariable(m_softmu_particle_origin_flag, "softmu_particle_origin_flag");
1010  systematicTree->makeOutputVariable(m_softmu_parent_pdgid,"softmu_parent_pdgid");
1011  systematicTree->makeOutputVariable(m_softmu_b_hadron_parent_pdgid,"softmu_b_hadron_parent_pdgid");
1012  systematicTree->makeOutputVariable(m_softmu_c_hadron_parent_pdgid,"softmu_c_hadron_parent_pdgid");
1013  }
1014  }//end of if (m_config->isMC())
1015  }//end of if (m_config->useSoftMuons())
1016 
1017  //photons
1018  if (m_config->usePhotons()) {
1019  systematicTree->makeOutputVariable(m_ph_pt, "ph_pt");
1020  systematicTree->makeOutputVariable(m_ph_eta, "ph_eta");
1021  systematicTree->makeOutputVariable(m_ph_phi, "ph_phi");
1022  systematicTree->makeOutputVariable(m_ph_e, "ph_e");
1023  systematicTree->makeOutputVariable(m_ph_iso, "ph_iso");
1024  }
1025 
1026  //taus
1027  if (m_config->useTaus()) {
1028  systematicTree->makeOutputVariable(m_tau_pt, "tau_pt");
1029  systematicTree->makeOutputVariable(m_tau_eta, "tau_eta");
1030  systematicTree->makeOutputVariable(m_tau_phi, "tau_phi");
1031  systematicTree->makeOutputVariable(m_tau_e, "tau_e");
1032  systematicTree->makeOutputVariable(m_tau_charge, "tau_charge");
1033  }
1034 
1035  //jets
1036  if (m_config->useJets()) {
1037  systematicTree->makeOutputVariable(m_jet_pt, "jet_pt");
1038  systematicTree->makeOutputVariable(m_jet_eta, "jet_eta");
1039  systematicTree->makeOutputVariable(m_jet_phi, "jet_phi");
1040  systematicTree->makeOutputVariable(m_jet_e, "jet_e");
1041  systematicTree->makeOutputVariable(m_jet_jvt, "jet_jvt");
1042  if (m_config->doForwardJVTinMET() || m_config->getfJVTWP() != "None") {
1043  systematicTree->makeOutputVariable(m_jet_fjvt, "jet_forwardjvt");
1044  systematicTree->makeOutputVariable(m_jet_passfjvt, "jet_passforwardjvt");
1045  }
1046  if (m_config->isMC() && m_config->jetStoreTruthLabels()) {
1047  systematicTree->makeOutputVariable(m_jet_truthflav, "jet_truthflav");
1048  systematicTree->makeOutputVariable(m_jet_truthPartonLabel, "jet_truthPartonLabel");
1049  systematicTree->makeOutputVariable(m_jet_isTrueHS, "jet_isTrueHS");
1050  systematicTree->makeOutputVariable(m_jet_HadronConeExclExtendedTruthLabelID, "jet_truthflavExtended");
1051  }
1052 
1053 
1054  if (m_config->useJetGhostTrack()) {
1055  systematicTree->makeOutputVariable(m_jet_ghostTrack_pt, "jet_ghostTrack_pt");
1056  systematicTree->makeOutputVariable(m_jet_ghostTrack_eta, "jet_ghostTrack_eta");
1057  systematicTree->makeOutputVariable(m_jet_ghostTrack_phi, "jet_ghostTrack_phi");
1058  systematicTree->makeOutputVariable(m_jet_ghostTrack_e, "jet_ghostTrack_e");
1059  systematicTree->makeOutputVariable(m_jet_ghostTrack_d0, "jet_ghostTrack_d0");
1060  systematicTree->makeOutputVariable(m_jet_ghostTrack_z0, "jet_ghostTrack_z0");
1061  systematicTree->makeOutputVariable(m_jet_ghostTrack_qOverP, "jet_ghostTrack_qOverP");
1062  }
1063 
1064 
1065  for (const std::string& tagWP : m_config->bTagWP()) {
1066  if (tagWP.find("Continuous") == std::string::npos)
1067  systematicTree->makeOutputVariable(m_jet_isbtagged[tagWP], "jet_isbtagged_" + shortBtagWP(tagWP));
1068  else
1069  systematicTree->makeOutputVariable(m_jet_tagWeightBin[tagWP], "jet_tagWeightBin_" + tagWP);
1070  }
1071 
1072  for (const auto& algo : m_jet_DLx) {
1073  systematicTree->makeOutputVariable(m_jet_DLx[algo.first], "jet_" + algo.first);
1074  systematicTree->makeOutputVariable(m_jet_DLx_pb[algo.first], "jet_" + algo.first + "_pb");
1075  systematicTree->makeOutputVariable(m_jet_DLx_pc[algo.first], "jet_" + algo.first + "_pc");
1076  systematicTree->makeOutputVariable(m_jet_DLx_pu[algo.first], "jet_" + algo.first + "_pu");
1077  systematicTree->makeOutputVariable(m_jet_DLx_ptau[algo.first], "jet_" + algo.first + "_ptau");
1078  }
1079  }
1080 
1081  // fail-JVT jets
1082  if (m_config->saveFailJVTJets()) {
1083  systematicTree->makeOutputVariable(m_failJvt_jet_pt, "failJvt_jet_pt");
1084  systematicTree->makeOutputVariable(m_failJvt_jet_eta, "failJvt_jet_eta");
1085  systematicTree->makeOutputVariable(m_failJvt_jet_phi, "failJvt_jet_phi");
1086  systematicTree->makeOutputVariable(m_failJvt_jet_e, "failJvt_jet_e");
1087  systematicTree->makeOutputVariable(m_failJvt_jet_jvt, "failJvt_jet_jvt");
1088  if (m_config->doForwardJVTinMET() || m_config->getfJVTWP() != "None") {
1089  systematicTree->makeOutputVariable(m_failJvt_jet_fjvt, "failJvt_jet_forwardjvt");
1090  systematicTree->makeOutputVariable(m_failJvt_jet_passfjvt, "failJvt_jet_passforwardjvt");
1091  }
1092  if (m_config->isMC() && m_config->jetStoreTruthLabels()) {
1093  systematicTree->makeOutputVariable(m_failJvt_jet_truthflav, "failJvt_jet_truthflav");
1094  systematicTree->makeOutputVariable(m_failJvt_jet_truthPartonLabel, "failJvt_jet_truthPartonLabel");
1095  systematicTree->makeOutputVariable(m_failJvt_jet_isTrueHS, "failJvt_jet_isTrueHS");
1096  systematicTree->makeOutputVariable(m_failJvt_jet_HadronConeExclExtendedTruthLabelID,
1097  "failJvt_jet_truthflavExtended");
1098  }
1099 
1100  if (m_config->useJetGhostTrack()) {
1101  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_pt, "failJvt_jet_ghostTrack_pt");
1102  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_eta, "failJvt_jet_ghostTrack_eta");
1103  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_phi, "failJvt_jet_ghostTrack_phi");
1104  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_e, "failJvt_jet_ghostTrack_e");
1105  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_d0, "failJvt_jet_ghostTrack_d0");
1106  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_z0, "failJvt_jet_ghostTrack_z0");
1107  systematicTree->makeOutputVariable(m_failJvt_jet_ghostTrack_qOverP, "failJvt_jet_ghostTrack_qOverP");
1108  }
1109  }
1110 
1111  // fail-FJVT jets
1112  if (m_config->getfJVTWP() != "None" && m_config->saveFailForwardJVTJets()) {
1113  systematicTree->makeOutputVariable(m_failFJvt_jet_pt, "failforwardJvt_jet_pt");
1114  systematicTree->makeOutputVariable(m_failFJvt_jet_eta, "failforwardJvt_jet_eta");
1115  systematicTree->makeOutputVariable(m_failFJvt_jet_phi, "failforwardJvt_jet_phi");
1116  systematicTree->makeOutputVariable(m_failFJvt_jet_e, "failforwardJvt_jet_e");
1117  systematicTree->makeOutputVariable(m_failFJvt_jet_jvt, "failforwardJvt_jet_jvt");
1118  systematicTree->makeOutputVariable(m_failFJvt_jet_fjvt, "failforwardJvt_jet_forwardjvt");
1119  systematicTree->makeOutputVariable(m_failFJvt_jet_passjvt, "failforwardJvt_jet_passjvt");
1120 
1121  if (m_config->isMC() && m_config->jetStoreTruthLabels()) {
1122  systematicTree->makeOutputVariable(m_failFJvt_jet_truthflav, "failforwardJvt_jet_truthflav");
1123  systematicTree->makeOutputVariable(m_failFJvt_jet_truthPartonLabel, "failforwardJvt_jet_truthPartonLabel");
1124  systematicTree->makeOutputVariable(m_failFJvt_jet_isTrueHS, "failforwardJvt_jet_isTrueHS");
1125  systematicTree->makeOutputVariable(m_failFJvt_jet_HadronConeExclExtendedTruthLabelID,
1126  "failforwardJvt_jet_truthflavExtended");
1127  }
1128 
1129  if (m_config->useJetGhostTrack()) {
1130  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_pt, "failforwardJvt_jet_ghostTrack_pt");
1131  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_eta, "failforwardJvt_jet_ghostTrack_eta");
1132  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_phi, "failforwardJvt_jet_ghostTrack_phi");
1133  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_e, "failforwardJvt_jet_ghostTrack_e");
1134  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_d0, "failforwardJvt_jet_ghostTrack_d0");
1135  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_z0, "failforwardJvt_jet_ghostTrack_z0");
1136  systematicTree->makeOutputVariable(m_failFJvt_jet_ghostTrack_qOverP, "failforwardJvt_jet_ghostTrack_qOverP");
1137  }
1138  }
1139 
1140  //large-R jets
1141  if (m_config->useLargeRJets()) {
1142  systematicTree->makeOutputVariable(m_ljet_pt, "ljet_pt");
1143  systematicTree->makeOutputVariable(m_ljet_eta, "ljet_eta");
1144  systematicTree->makeOutputVariable(m_ljet_phi, "ljet_phi");
1145  systematicTree->makeOutputVariable(m_ljet_e, "ljet_e");
1146  systematicTree->makeOutputVariable(m_ljet_m, "ljet_m");
1147 
1148  for (const auto& it : m_config->largeRJetSubstructureVariables()) {
1149  systematicTree->makeOutputVariable(m_ljet_substructure[it.first],"ljet_"+it.first);
1150  }
1151 
1152  for (const std::string& taggerName : m_boostedJetTaggersNames) {
1153  systematicTree->makeOutputVariable(m_ljet_isTagged[taggerName], "ljet_isTagged_" + taggerName);
1154  systematicTree->makeOutputVariable(m_ljet_taggingPassedRangeCheck[taggerName], "ljet_passedRangeCheck_" + taggerName);
1155  }
1156 
1157  if (m_config->isMC()) {
1158  systematicTree->makeOutputVariable(m_ljet_truthLabel, "ljet_truthLabel");
1159  for (const std::string& taggerName : m_boostedJetTaggersNamesCalibrated) {
1160  systematicTree->makeOutputVariable(m_ljet_tagSF[taggerName], "ljet_tagSF_" + taggerName);
1161  }
1162 
1163  if ((systematicTree->name() == nominalTTreeName || systematicTree->name() == nominalLooseTTreeName)) {
1164  for (const std::string& taggerName : m_boostedJetTaggersNamesCalibrated) {
1165  systematicTree->makeOutputVariable(m_ljet_tagSFSysVars[taggerName],"ljet_tagSF_" + taggerName + "_variations");
1166  }
1167  }
1168  }
1169  }
1170 
1171  //track jets
1172  if (m_config->useTrackJets()) {
1173  systematicTree->makeOutputVariable(m_tjet_pt, "tjet_pt");
1174  systematicTree->makeOutputVariable(m_tjet_eta, "tjet_eta");
1175  systematicTree->makeOutputVariable(m_tjet_phi, "tjet_phi");
1176  systematicTree->makeOutputVariable(m_tjet_e, "tjet_e");
1177  for (const auto& tagWP : m_config->bTagWP_trkJet()) {
1178  if (tagWP.find("Continuous") == std::string::npos)
1179  systematicTree->makeOutputVariable(m_tjet_isbtagged[tagWP], "tjet_isbtagged_" + shortBtagWP(tagWP));
1180  else
1181  systematicTree->makeOutputVariable(m_tjet_tagWeightBin[tagWP], "tjet_tagWeightBin_" + tagWP);
1182  }
1183 
1184  for (const auto& algo : m_tjet_DLx) {
1185  systematicTree->makeOutputVariable(m_tjet_DLx[algo.first], "tjet_" + algo.first);
1186  systematicTree->makeOutputVariable(m_tjet_DLx_pb[algo.first], "tjet_" + algo.first + "_pb");
1187  systematicTree->makeOutputVariable(m_tjet_DLx_pc[algo.first], "tjet_" + algo.first + "_pc");
1188  systematicTree->makeOutputVariable(m_tjet_DLx_pu[algo.first], "tjet_" + algo.first + "_pu");
1189  }
1190  }
1191 
1192  if (m_config->useTracks()) {
1193  systematicTree->makeOutputVariable(m_track_pt, "track_pt");
1194  systematicTree->makeOutputVariable(m_track_eta, "track_eta");
1195  systematicTree->makeOutputVariable(m_track_phi, "track_phi");
1196  systematicTree->makeOutputVariable(m_track_e, "track_e");
1197  systematicTree->makeOutputVariable(m_track_charge, "track_charge");
1198  systematicTree->makeOutputVariable(m_track_d0, "track_d0");
1199  systematicTree->makeOutputVariable(m_track_d0_significance, "track_d0_significance");
1200  systematicTree->makeOutputVariable(m_track_z0, "track_z0");
1201  systematicTree->makeOutputVariable(m_track_z0_significance, "track_z0_significance");
1202  systematicTree->makeOutputVariable(m_track_phi0, "track_phi0");
1203  systematicTree->makeOutputVariable(m_track_theta, "track_theta");
1204  systematicTree->makeOutputVariable(m_track_qOverP, "track_qOverP");
1205  systematicTree->makeOutputVariable(m_track_chiSquared, "track_chiSquared");
1206  systematicTree->makeOutputVariable(m_track_numberDoF, "track_numberDoF");
1207  }
1208 
1209 
1210 
1211  // RC branches
1212  if (m_makeRCJets) {
1213  systematicTree->makeOutputVariable(m_rcjet_pt, "rcjet_pt");
1214  systematicTree->makeOutputVariable(m_rcjet_eta, "rcjet_eta");
1215  systematicTree->makeOutputVariable(m_rcjet_phi, "rcjet_phi");
1216  systematicTree->makeOutputVariable(m_rcjet_e, "rcjet_e");
1217  systematicTree->makeOutputVariable(m_rcjet_d12, "rcjet_d12"); // requires >= 2 subjets
1218  systematicTree->makeOutputVariable(m_rcjet_d23, "rcjet_d23"); // requires >= 3 subjets
1219  systematicTree->makeOutputVariable(m_rcjetsub_pt, "rcjetsub_pt"); // vector of vectors for subjet info
1220  systematicTree->makeOutputVariable(m_rcjetsub_eta, "rcjetsub_eta");
1221  systematicTree->makeOutputVariable(m_rcjetsub_phi, "rcjetsub_phi");
1222  systematicTree->makeOutputVariable(m_rcjetsub_e, "rcjetsub_e");
1223 
1225  systematicTree->makeOutputVariable(m_rrcjet_pt, "rrcjet_pt");
1226  systematicTree->makeOutputVariable(m_rrcjet_eta, "rrcjet_eta");
1227  systematicTree->makeOutputVariable(m_rrcjet_phi, "rrcjet_phi");
1228  systematicTree->makeOutputVariable(m_rrcjet_e, "rrcjet_e");
1229  }
1230  if (m_useRCJSS) {
1231  // RCJet SS from Clusters
1232  systematicTree->makeOutputVariable(m_rcjet_tau32_clstr, "rcjet_tau32_clstr");
1233  systematicTree->makeOutputVariable(m_rcjet_tau21_clstr, "rcjet_tau21_clstr");
1234  systematicTree->makeOutputVariable(m_rcjet_tau3_clstr, "rcjet_tau3_clstr");
1235  systematicTree->makeOutputVariable(m_rcjet_tau2_clstr, "rcjet_tau2_clstr");
1236  systematicTree->makeOutputVariable(m_rcjet_tau1_clstr, "rcjet_tau1_clstr");
1237  systematicTree->makeOutputVariable(m_rcjet_d12_clstr, "rcjet_d12_clstr");
1238  systematicTree->makeOutputVariable(m_rcjet_d23_clstr, "rcjet_d23_clstr");
1239  systematicTree->makeOutputVariable(m_rcjet_Qw_clstr, "rcjet_Qw_clstr");
1240  systematicTree->makeOutputVariable(m_rcjet_nconstituent_clstr, "rcjet_nconstituent_clstr");
1241  systematicTree->makeOutputVariable(m_rcjet_D2_clstr, "rcjet_D2_clstr");
1242  systematicTree->makeOutputVariable(m_rcjet_ECF1_clstr, "rcjet_ECF1_clstr");
1243  systematicTree->makeOutputVariable(m_rcjet_ECF2_clstr, "rcjet_ECF2_clstr");
1244  systematicTree->makeOutputVariable(m_rcjet_ECF3_clstr, "rcjet_ECF3_clstr");
1245  }
1246  if (m_useRCAdditionalJSS) {
1247  systematicTree->makeOutputVariable(m_rcjet_gECF332_clstr, "rcjet_gECF332_clstr");
1248  systematicTree->makeOutputVariable(m_rcjet_gECF461_clstr, "rcjet_gECF461_clstr");
1249  systematicTree->makeOutputVariable(m_rcjet_gECF322_clstr, "rcjet_gECF322_clstr");
1250  systematicTree->makeOutputVariable(m_rcjet_gECF331_clstr, "rcjet_gECF331_clstr");
1251  systematicTree->makeOutputVariable(m_rcjet_gECF422_clstr, "rcjet_gECF422_clstr");
1252  systematicTree->makeOutputVariable(m_rcjet_gECF441_clstr, "rcjet_gECF441_clstr");
1253  systematicTree->makeOutputVariable(m_rcjet_gECF212_clstr, "rcjet_gECF212_clstr");
1254  systematicTree->makeOutputVariable(m_rcjet_gECF321_clstr, "rcjet_gECF321_clstr");
1255  systematicTree->makeOutputVariable(m_rcjet_gECF311_clstr, "rcjet_gECF311_clstr");
1256  systematicTree->makeOutputVariable(m_rcjet_L1_clstr, "rcjet_L1_clstr");
1257  systematicTree->makeOutputVariable(m_rcjet_L2_clstr, "rcjet_L2_clstr");
1258  systematicTree->makeOutputVariable(m_rcjet_L3_clstr, "rcjet_L3_clstr");
1259  systematicTree->makeOutputVariable(m_rcjet_L4_clstr, "rcjet_L4_clstr");
1260  systematicTree->makeOutputVariable(m_rcjet_L5_clstr, "rcjet_L5_clstr");
1261  }
1262  }
1263  // vRC branches
1264  if (m_makeVarRCJets) {
1265  std::string VarRC = "vrcjet";
1266 
1267  for (auto& rho : m_VarRCJetRho) {
1268  for (auto& mass_scale : m_VarRCJetMassScale) {
1269  std::replace(rho.begin(), rho.end(), '.', '_');
1270  std::string name = rho + mass_scale;
1271  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_pt"], VarRC + "_" + name + "_pt");
1272  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_eta"], VarRC + "_" + name + "_eta");
1273  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_phi"], VarRC + "_" + name + "_phi");
1274  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_e"], VarRC + "_" + name + "_e");
1275  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_d12"], VarRC + "_" + name + "_d12"); // requires
1276  // >=
1277  // 2
1278  // subjets
1279  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_d23"], VarRC + "_" + name + "_d23"); // requires
1280  // >=
1281  // 3
1282  // subjets
1283  systematicTree->makeOutputVariable(m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_pt"], VarRC + "sub_" + name + "_pt"); // vector
1284  // of
1285  // vectors
1286  // for
1287  // subjet
1288  // info
1289  systematicTree->makeOutputVariable(m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_eta"], VarRC + "sub_" + name + "_eta");
1290  systematicTree->makeOutputVariable(m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_phi"], VarRC + "sub_" + name + "_phi");
1291  systematicTree->makeOutputVariable(m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_e"], VarRC + "sub_" + name + "_e");
1292 
1294  systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_" + name + "_pt"], "vrrcjet_" + name + "_pt");
1295  systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_" + name + "_eta"], "vrrcjet_" + name + "_eta");
1296  systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_" + name + "_phi"], "vrrcjet_" + name + "_phi");
1297  systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_" + name + "_e"], "vrrcjet_" + name + "_e");
1298  }
1299  if (m_useVarRCJSS) {
1300  // RCJet SS from Clusters
1301  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_tau32_clstr"], VarRC + "_" + name + "_tau32_clstr");
1302  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_tau21_clstr"], VarRC + "_" + name + "_tau21_clstr");
1303  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_tau3_clstr"], VarRC + "_" + name + "_tau3_clstr");
1304  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_tau2_clstr"], VarRC + "_" + name + "_tau2_clstr");
1305  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_tau1_clstr"], VarRC + "_" + name + "_tau1_clstr");
1306 
1307  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_d12_clstr"], VarRC + "_" + name + "_d12_clstr");
1308  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_d23_clstr"], VarRC + "_" + name + "_d23_clstr");
1309  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_Qw_clstr"], VarRC + "_" + name + "_Qw_clstr");
1310 
1311  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_D2_clstr"], VarRC + "_" + name + "_D2_clstr");
1312  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_ECF1_clstr"], VarRC + "_" + name + "_ECF1_clstr");
1313  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_ECF2_clstr"], VarRC + "_" + name + "_ECF2_clstr");
1314  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_ECF3_clstr"], VarRC + "_" + name + "_ECF3_clstr");
1315  }
1317 
1318  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF332_clstr"], VarRC + "_" + name + "_gECF332_clstr");
1319  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF461_clstr"], VarRC + "_" + name + "_gECF461_clstr");
1320  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF322_clstr"], VarRC + "_" + name + "_gECF322_clstr");
1321  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF331_clstr"], VarRC + "_" + name + "_gECF331_clstr");
1322  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF422_clstr"], VarRC + "_" + name + "_gECF422_clstr");
1323  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF441_clstr"], VarRC + "_" + name + "_gECF441_clstr");
1324  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF212_clstr"], VarRC + "_" + name + "_gECF212_clstr");
1325  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF321_clstr"], VarRC + "_" + name + "_gECF321_clstr");
1326  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_gECF311_clstr"], VarRC + "_" + name + "_gECF311_clstr");
1327 
1328  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_L1_clstr"], VarRC + "_" + name + "_L1_clstr");
1329  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_L2_clstr"], VarRC + "_" + name + "_L2_clstr");
1330  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_L3_clstr"], VarRC + "_" + name + "_L3_clstr");
1331  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_L4_clstr"], VarRC + "_" + name + "_L4_clstr");
1332  systematicTree->makeOutputVariable(m_VarRCjetBranches[VarRC + "_" + name + "_L5_clstr"], VarRC + "_" + name + "_L5_clstr");
1333  }
1334  } // end loop over mass parameters
1335  } // end loop over multipliers for mass scale
1336  } // end if VarRC jets
1337 
1338  //met
1339  systematicTree->makeOutputVariable(m_met_met, "met_met");
1340  systematicTree->makeOutputVariable(m_met_sumet, "met_sumet");
1341  systematicTree->makeOutputVariable(m_met_phi, "met_phi");
1342  if(m_config->METSignificance()){
1343  systematicTree->makeOutputVariable(m_met_sig, "met_sig");
1344  systematicTree->makeOutputVariable(m_met_sigET, "met_sigET");
1345  systematicTree->makeOutputVariable(m_met_sigHT, "met_sigHT");
1346  systematicTree->makeOutputVariable(m_met_sigRho, "met_sigRho");
1347  systematicTree->makeOutputVariable(m_met_sigVarL, "met_sigVarL");
1348  systematicTree->makeOutputVariable(m_met_sigVarT, "met_sigVarT");
1349  }
1350  //these are for specific studies on the met, turned off by default, and turned on with the WriteMETBuiltWithLooseObjects option
1351  if(m_config->writeMETBuiltWithLooseObjects())
1352  {
1353  systematicTree->makeOutputVariable(m_met_met_withLooseObjects, "met_met_withLooseObjects");
1354  systematicTree->makeOutputVariable(m_met_phi_withLooseObjects, "met_phi_withLooseObjects");
1355  }
1356 
1357  if (m_config->doKLFitter()) {
1359  systematicTree->makeOutputVariable(m_klfitter_logLikelihood, "klfitter_logLikelihood");
1360  systematicTree->makeOutputVariable(m_klfitter_eventProbability, "klfitter_eventProbability");
1361  systematicTree->makeOutputVariable(m_klfitter_selected, "klfitter_selected");
1362 
1363  // If FULL information is requested
1364  if (m_config->KLFitterOutput() == "FULL") {
1366  systematicTree->makeOutputVariable(m_klfitter_selection, "klfitter_selection");
1367  systematicTree->makeOutputVariable(m_klfitter_minuitDidNotConverge, "klfitter_minuitDidNotConverge");
1368  systematicTree->makeOutputVariable(m_klfitter_fitAbortedDueToNaN, "klfitter_fitAbortedDueToNaN");
1369  systematicTree->makeOutputVariable(m_klfitter_atLeastOneFitParameterAtItsLimit, "klfitter_atLeastOneFitParameterAtItsLimit");
1370  systematicTree->makeOutputVariable(m_klfitter_invalidTransferFunctionAtConvergence, "klfitter_invalidTransferFunctionAtConvergence");
1372  systematicTree->makeOutputVariable(m_klfitter_parameters_size, "klfitter_parameters_size");
1373  systematicTree->makeOutputVariable(m_klfitter_parameters, "klfitter_parameters");
1374  systematicTree->makeOutputVariable(m_klfitter_parameterErrors, "klfitter_parameterErrors");
1375  systematicTree->makeOutputVariable(m_klfitter_bestPermutation, "klfitter_bestPermutation");
1376  }
1377 
1378  if (m_config->KLFitterOutput() == "FULL" || m_config->KLFitterOutput() == "JETPERM_ONLY") {
1380  if (m_config->KLFitterLH() == "ttbar" || m_config->KLFitterLH() == "ttZTrilepton" || m_config->KLFitterLH() == "ttH" || m_config->KLFitterLH() == "ttbar_JetAngles" || m_config->KLFitterLH() == "ttbar_Angular" || m_config->KLFitterLH() == "ttbar_BoostedLJets") {
1381  systematicTree->makeOutputVariable(m_klfitter_model_bhad_pt, "klfitter_model_bhad_pt");
1382  systematicTree->makeOutputVariable(m_klfitter_model_bhad_eta, "klfitter_model_bhad_eta");
1383  systematicTree->makeOutputVariable(m_klfitter_model_bhad_phi, "klfitter_model_bhad_phi");
1384  systematicTree->makeOutputVariable(m_klfitter_model_bhad_E, "klfitter_model_bhad_E");
1385  systematicTree->makeOutputVariable(m_klfitter_model_bhad_jetIndex, "klfitter_model_bhad_jetIndex");
1386 
1387  systematicTree->makeOutputVariable(m_klfitter_model_blep_pt, "klfitter_model_blep_pt");
1388  systematicTree->makeOutputVariable(m_klfitter_model_blep_eta, "klfitter_model_blep_eta");
1389  systematicTree->makeOutputVariable(m_klfitter_model_blep_phi, "klfitter_model_blep_phi");
1390  systematicTree->makeOutputVariable(m_klfitter_model_blep_E, "klfitter_model_blep_E");
1391  systematicTree->makeOutputVariable(m_klfitter_model_blep_jetIndex, "klfitter_model_blep_jetIndex");
1392 
1393  systematicTree->makeOutputVariable(m_klfitter_model_lq1_pt, "klfitter_model_lq1_pt");
1394  systematicTree->makeOutputVariable(m_klfitter_model_lq1_eta, "klfitter_model_lq1_eta");
1395  systematicTree->makeOutputVariable(m_klfitter_model_lq1_phi, "klfitter_model_lq1_phi");
1396  systematicTree->makeOutputVariable(m_klfitter_model_lq1_E, "klfitter_model_lq1_E");
1397  systematicTree->makeOutputVariable(m_klfitter_model_lq1_jetIndex, "klfitter_model_lq1_jetIndex");
1398 
1399  systematicTree->makeOutputVariable(m_klfitter_model_lep_pt, "klfitter_model_lep_pt");
1400  systematicTree->makeOutputVariable(m_klfitter_model_lep_eta, "klfitter_model_lep_eta");
1401  systematicTree->makeOutputVariable(m_klfitter_model_lep_phi, "klfitter_model_lep_phi");
1402  systematicTree->makeOutputVariable(m_klfitter_model_lep_E, "klfitter_model_lep_E");
1403 
1404  systematicTree->makeOutputVariable(m_klfitter_model_nu_pt, "klfitter_model_nu_pt");
1405  systematicTree->makeOutputVariable(m_klfitter_model_nu_eta, "klfitter_model_nu_eta");
1406  systematicTree->makeOutputVariable(m_klfitter_model_nu_phi, "klfitter_model_nu_phi");
1407  systematicTree->makeOutputVariable(m_klfitter_model_nu_E, "klfitter_model_nu_E");
1408 
1409  if (m_config->KLFitterLH() != "ttbar_BoostedLJets") {
1410  systematicTree->makeOutputVariable(m_klfitter_model_lq2_pt, "klfitter_model_lq2_pt");
1411  systematicTree->makeOutputVariable(m_klfitter_model_lq2_eta, "klfitter_model_lq2_eta");
1412  systematicTree->makeOutputVariable(m_klfitter_model_lq2_phi, "klfitter_model_lq2_phi");
1413  systematicTree->makeOutputVariable(m_klfitter_model_lq2_E, "klfitter_model_lq2_E");
1414  systematicTree->makeOutputVariable(m_klfitter_model_lq2_jetIndex, "klfitter_model_lq2_jetIndex");
1415 
1416  if (m_config->KLFitterLH() == "ttZTrilepton") {
1417  systematicTree->makeOutputVariable(m_klfitter_model_lep_index, "klfitter_model_lep_index");
1418 
1419  systematicTree->makeOutputVariable(m_klfitter_model_lepZ1_pt, "klfitter_model_lepZ1_pt");
1420  systematicTree->makeOutputVariable(m_klfitter_model_lepZ1_eta, "klfitter_model_lepZ1_eta");
1421  systematicTree->makeOutputVariable(m_klfitter_model_lepZ1_phi, "klfitter_model_lepZ1_phi");
1422  systematicTree->makeOutputVariable(m_klfitter_model_lepZ1_E, "klfitter_model_lepZ1_E");
1423  systematicTree->makeOutputVariable(m_klfitter_model_lepZ1_index, "klfitter_model_lepZ1_index");
1424 
1425  systematicTree->makeOutputVariable(m_klfitter_model_lepZ2_pt, "klfitter_model_lepZ2_pt");
1426  systematicTree->makeOutputVariable(m_klfitter_model_lepZ2_eta, "klfitter_model_lepZ2_eta");
1427  systematicTree->makeOutputVariable(m_klfitter_model_lepZ2_phi, "klfitter_model_lepZ2_phi");
1428  systematicTree->makeOutputVariable(m_klfitter_model_lepZ2_E, "klfitter_model_lepZ2_E");
1429  systematicTree->makeOutputVariable(m_klfitter_model_lepZ2_index, "klfitter_model_lepZ2_index");
1430  }
1431 
1432  if (m_config->KLFitterLH() == "ttH") {
1433  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b1_pt, "klfitter_model_Higgs_b1_pt");
1434  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b1_eta, "klfitter_model_Higgs_b1_eta");
1435  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b1_phi, "klfitter_model_Higgs_b1_phi");
1436  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b1_E, "klfitter_model_Higgs_b1_E");
1437  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b1_jetIndex, "klfitter_model_Higgs_b1_jetIndex");
1438 
1439  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b2_pt, "klfitter_model_Higgs_b2_pt");
1440  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b2_eta, "klfitter_model_Higgs_b2_eta");
1441  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b2_phi, "klfitter_model_Higgs_b2_phi");
1442  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b2_E, "klfitter_model_Higgs_b2_E");
1443  systematicTree->makeOutputVariable(m_klfitter_model_Higgs_b2_jetIndex, "klfitter_model_Higgs_b2_jetIndex");
1444  }
1445  }
1446  } else if (m_config->KLFitterLH() == "ttbar_AllHadronic") {
1447  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top1_pt, "klfitter_model_b_from_top1_pt");
1448  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top1_eta, "klfitter_model_b_from_top1_eta");
1449  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top1_phi, "klfitter_model_b_from_top1_phi");
1450  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top1_E, "klfitter_model_b_from_top1_E");
1451  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top1_jetIndex, "klfitter_model_b_from_top1_jetIndex");
1452 
1453  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top2_pt, "klfitter_model_b_from_top2_pt");
1454  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top2_eta, "klfitter_model_b_from_top2_eta");
1455  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top2_phi, "klfitter_model_b_from_top2_phi");
1456  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top2_E, "klfitter_model_b_from_top2_E");
1457  systematicTree->makeOutputVariable(m_klfitter_model_b_from_top2_jetIndex, "klfitter_model_b_from_top2_jetIndex");
1458 
1459  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top1_pt, "klfitter_model_lj1_from_top1_pt");
1460  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top1_eta, "klfitter_model_lj1_from_top1_eta");
1461  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top1_phi, "klfitter_model_lj1_from_top1_phi");
1462  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top1_E, "klfitter_model_lj1_from_top1_E");
1463  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top1_jetIndex, "klfitter_model_lj1_from_top1_jetIndex");
1464 
1465  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top1_pt, "klfitter_model_lj2_from_top1_pt");
1466  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top1_eta, "klfitter_model_lj2_from_top1_eta");
1467  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top1_phi, "klfitter_model_lj2_from_top1_phi");
1468  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top1_E, "klfitter_model_lj2_from_top1_E");
1469  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top1_jetIndex, "klfitter_model_lj2_from_top1_jetIndex");
1470 
1471  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top2_pt, "klfitter_model_lj1_from_top2_pt");
1472  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top2_eta, "klfitter_model_lj1_from_top2_eta");
1473  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top2_phi, "klfitter_model_lj1_from_top2_phi");
1474  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top2_E, "klfitter_model_lj1_from_top2_E");
1475  systematicTree->makeOutputVariable(m_klfitter_model_lj1_from_top2_jetIndex, "klfitter_model_lj1_from_top2_jetIndex");
1476 
1477  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top2_pt, "klfitter_model_lj2_from_top2_pt");
1478  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top2_eta, "klfitter_model_lj2_from_top2_eta");
1479  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top2_phi, "klfitter_model_lj2_from_top2_phi");
1480  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top2_E, "klfitter_model_lj2_from_top2_E");
1481  systematicTree->makeOutputVariable(m_klfitter_model_lj2_from_top2_jetIndex, "klfitter_model_lj2_from_top2_jetIndex");
1482  }
1483  }
1484 
1485  if (m_config->KLFitterOutput() == "FULL" || m_config->KLFitterOutput() == "FITTEDTOPS_ONLY") {
1486  if (m_config->KLFitterLH() == "ttbar" || m_config->KLFitterLH() == "ttZTrilepton" || m_config->KLFitterLH() == "ttH" || m_config->KLFitterLH() == "ttbar_JetAngles" || m_config->KLFitterLH() == "ttbar_Angular") {
1487  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topLep_pt, "klfitter_bestPerm_topLep_pt");
1488  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topLep_eta, "klfitter_bestPerm_topLep_eta");
1489  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topLep_phi, "klfitter_bestPerm_topLep_phi");
1490  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topLep_E, "klfitter_bestPerm_topLep_E");
1491  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topLep_m, "klfitter_bestPerm_topLep_m");
1492 
1493  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topHad_pt, "klfitter_bestPerm_topHad_pt");
1494  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topHad_eta, "klfitter_bestPerm_topHad_eta");
1495  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topHad_phi, "klfitter_bestPerm_topHad_phi");
1496  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topHad_E, "klfitter_bestPerm_topHad_E");
1497  systematicTree->makeOutputVariable(m_klfitter_bestPerm_topHad_m, "klfitter_bestPerm_topHad_m");
1498 
1499  systematicTree->makeOutputVariable(m_klfitter_bestPerm_ttbar_pt, "klfitter_bestPerm_ttbar_pt");
1500  systematicTree->makeOutputVariable(m_klfitter_bestPerm_ttbar_eta, "klfitter_bestPerm_ttbar_eta");
1501  systematicTree->makeOutputVariable(m_klfitter_bestPerm_ttbar_phi, "klfitter_bestPerm_ttbar_phi");
1502  systematicTree->makeOutputVariable(m_klfitter_bestPerm_ttbar_E, "klfitter_bestPerm_ttbar_E");
1503  systematicTree->makeOutputVariable(m_klfitter_bestPerm_ttbar_m, "klfitter_bestPerm_ttbar_m");
1504  }
1505  }
1506  }
1507 
1508  if (m_config->doPseudoTop()) {
1509  systematicTree->makeOutputVariable(m_PseudoTop_Reco_ttbar_pt, "PseudoTop_Reco_ttbar_pt");
1510  systematicTree->makeOutputVariable(m_PseudoTop_Reco_ttbar_eta, "PseudoTop_Reco_ttbar_eta");
1511  systematicTree->makeOutputVariable(m_PseudoTop_Reco_ttbar_phi, "PseudoTop_Reco_ttbar_phi");
1512  systematicTree->makeOutputVariable(m_PseudoTop_Reco_ttbar_m, "PseudoTop_Reco_ttbar_m");
1513  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_had_pt, "PseudoTop_Reco_top_had_pt");
1514  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_had_eta, "PseudoTop_Reco_top_had_eta");
1515  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_had_phi, "PseudoTop_Reco_top_had_phi");
1516  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_had_m, "PseudoTop_Reco_top_had_m");
1517  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_lep_pt, "PseudoTop_Reco_top_lep_pt");
1518  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_lep_eta, "PseudoTop_Reco_top_lep_eta");
1519  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_lep_phi, "PseudoTop_Reco_top_lep_phi");
1520  systematicTree->makeOutputVariable(m_PseudoTop_Reco_top_lep_m, "PseudoTop_Reco_top_lep_m");
1521  }
1522 
1523  //extra branches telling you if the event passed / failed a selection
1524  int index(0);
1525  for (const auto& branchName : m_extraBranches) {
1527  systematicTree->makeOutputVariable(m_selectionDecisions[index], branchName);
1528  // Add all triggers to a map so we don't get any duplicates
1529  for (const auto& trigger_name : m_config->allTriggers_Tight(branchName)) {
1530  m_triggerDecisions [trigger_name.first] = 0;
1531  }
1532  for (const auto& trigger_name : m_config->allTriggers_Loose(branchName)) {
1533  // let's make sure this isn't done twice
1534  if (m_triggerDecisions.find(trigger_name.first) != m_triggerDecisions.end()
1535  && m_triggerPrescales.find(trigger_name.first) != m_triggerPrescales.end()) continue;
1536  m_triggerDecisions [trigger_name.first] = 0;
1537  }
1538  for (const auto& trigger_name : m_config->electronTriggers_Tight(branchName))
1539  m_el_trigMatched [trigger_name.first] = std::vector<char>();
1540  for (const auto& trigger_name : m_config->electronTriggers_Loose(branchName)) {
1541  // let's make sure this isn't done twice
1542  if (m_el_trigMatched.find(trigger_name.first) != m_el_trigMatched.end()) continue;
1543  m_el_trigMatched [trigger_name.first] = std::vector<char>();
1544  }
1545  for (const auto& trigger_name : m_config->muonTriggers_Tight(branchName))
1546  m_mu_trigMatched [trigger_name.first] = std::vector<char>();
1547  for (const auto& trigger_name : m_config->muonTriggers_Loose(branchName)) {
1548  // let's make sure this isn't done twice
1549  if (m_mu_trigMatched.find(trigger_name.first) != m_mu_trigMatched.end()) continue;
1550  m_mu_trigMatched [trigger_name.first] = std::vector<char>();
1551  }
1552  for (const auto& trigger_name : m_config->photonTriggers_Tight(branchName))
1553  m_ph_trigMatched [trigger_name.first] = std::vector<char>();
1554  for (const auto& trigger_name : m_config->photonTriggers_Loose(branchName)) {
1555  // let's make sure this isn't done twice
1556  if (m_ph_trigMatched.find(trigger_name.first) != m_ph_trigMatched.end()) continue;
1557  m_ph_trigMatched [trigger_name.first] = std::vector<char>();
1558  }
1559  ++index;
1560  }
1561 
1562  for (auto& trig_name : m_triggerDecisions)
1563  systematicTree->makeOutputVariable(trig_name.second, trig_name.first);
1564  for (auto& trig_name : m_el_trigMatched)
1565  systematicTree->makeOutputVariable(trig_name.second, "el_trigMatch_" + trig_name.first);
1566  for (auto& trig_name : m_mu_trigMatched)
1567  systematicTree->makeOutputVariable(trig_name.second, "mu_trigMatch_" + trig_name.first);
1568  for (auto& trig_name : m_ph_trigMatched)
1569  systematicTree->makeOutputVariable(trig_name.second, "ph_trigMatch_" + trig_name.first);
1570  }
1571 
1573  }
1574 
1576  if (m_config->isMC() && m_config->doMCGeneratorWeights()) {
1578  }
1579 
1580  if (m_config->isMC() && m_config->doTruthPDFInfo()) {
1581  loadPdfInfo();
1582  }
1583 
1584  if (m_config->isMC() && m_config->saveLHAPDFEvent()) {
1585  loadPdfWeights();
1586  }
1587  }
1588 
1589  void EventSaverFlatNtuple::setupParticleLevelTreeManager(/*const top::ParticleLevelEvent& plEvent*/) {
1590  // Quick return if particle level is disabled or the tree is already initialised.
1591  // If particle level is disabled, no tree will be created.
1592  if (not m_config->doTopParticleLevel() or m_particleLevelTreeManager) {
1593  return;
1594  }
1595 
1596  m_particleLevelTreeManager = std::make_shared<top::TreeManager>("particleLevel", m_outputFile, m_config->outputFileNEventAutoFlush(), m_config->outputFileBasketSizePrimitive(), m_config->outputFileBasketSizeVector());
1597 
1598  m_particleLevelTreeManager->branchFilters() = branchFilters();
1599  m_particleLevelTreeManager->makeOutputVariable(m_weight_mc, "weight_mc");
1600 
1601  //event info
1602  m_particleLevelTreeManager->makeOutputVariable(m_eventNumber, "eventNumber");
1603  m_particleLevelTreeManager->makeOutputVariable(m_runNumber, "runNumber");
1604  if (m_config->isMC() && m_config->doPileupReweighting()) m_particleLevelTreeManager->makeOutputVariable(m_randomRunNumber, "randomRunNumber");
1605  m_particleLevelTreeManager->makeOutputVariable(m_mcChannelNumber, "mcChannelNumber");
1606  m_particleLevelTreeManager->makeOutputVariable(m_mu, "mu");
1607  m_particleLevelTreeManager->makeOutputVariable(m_mu_actual, "mu_actual");
1608  m_particleLevelTreeManager->makeOutputVariable(m_weight_pileup, "weight_pileup");
1609  m_particleLevelTreeManager->makeOutputVariable(m_weight_beamspot, "weight_beamspot");
1610 
1611  if (m_config->doPseudoTop()) {
1612  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_ttbar_pt, "PseudoTop_Particle_ttbar_pt");
1613  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_ttbar_eta, "PseudoTop_Particle_ttbar_eta");
1614  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_ttbar_phi, "PseudoTop_Particle_ttbar_phi");
1615  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_ttbar_m, "PseudoTop_Particle_ttbar_m");
1616  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_had_pt, "PseudoTop_Particle_top_had_pt");
1617  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_had_eta, "PseudoTop_Particle_top_had_eta");
1618  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_had_phi, "PseudoTop_Particle_top_had_phi");
1619  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_had_m, "PseudoTop_Particle_top_had_m");
1620  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_lep_pt, "PseudoTop_Particle_top_lep_pt");
1621  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_lep_eta, "PseudoTop_Particle_top_lep_eta");
1622  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_lep_phi, "PseudoTop_Particle_top_lep_phi");
1623  m_particleLevelTreeManager->makeOutputVariable(m_PseudoTop_Particle_top_lep_m, "PseudoTop_Particle_top_lep_m");
1624  }
1625 
1626  //electrons
1627  if (m_config->useTruthElectrons()) {
1628  m_particleLevelTreeManager->makeOutputVariable(m_el_pt, "el_pt");
1629  m_particleLevelTreeManager->makeOutputVariable(m_el_eta, "el_eta");
1630  m_particleLevelTreeManager->makeOutputVariable(m_el_phi, "el_phi");
1631  m_particleLevelTreeManager->makeOutputVariable(m_el_e, "el_e");
1632  m_particleLevelTreeManager->makeOutputVariable(m_el_charge, "el_charge");
1633 
1634  m_particleLevelTreeManager->makeOutputVariable(m_el_true_type, "el_true_type");
1635  m_particleLevelTreeManager->makeOutputVariable(m_el_true_origin, "el_true_origin");
1636 
1637  m_particleLevelTreeManager->makeOutputVariable(m_el_pt_bare, "el_pt_bare");
1638  m_particleLevelTreeManager->makeOutputVariable(m_el_eta_bare, "el_eta_bare");
1639  m_particleLevelTreeManager->makeOutputVariable(m_el_phi_bare, "el_phi_bare");
1640  m_particleLevelTreeManager->makeOutputVariable(m_el_e_bare, "el_e_bare");
1641  }
1642 
1643  //muons
1644  if (m_config->useTruthMuons()) {
1645  m_particleLevelTreeManager->makeOutputVariable(m_mu_pt, "mu_pt");
1646  m_particleLevelTreeManager->makeOutputVariable(m_mu_eta, "mu_eta");
1647  m_particleLevelTreeManager->makeOutputVariable(m_mu_phi, "mu_phi");
1648  m_particleLevelTreeManager->makeOutputVariable(m_mu_e, "mu_e");
1649  m_particleLevelTreeManager->makeOutputVariable(m_mu_charge, "mu_charge");
1650 
1651  m_particleLevelTreeManager->makeOutputVariable(m_mu_true_type, "mu_true_type");
1652  m_particleLevelTreeManager->makeOutputVariable(m_mu_true_origin, "mu_true_origin");
1653 
1654  m_particleLevelTreeManager->makeOutputVariable(m_mu_pt_bare, "mu_pt_bare");
1655  m_particleLevelTreeManager->makeOutputVariable(m_mu_eta_bare, "mu_eta_bare");
1656  m_particleLevelTreeManager->makeOutputVariable(m_mu_phi_bare, "mu_phi_bare");
1657  m_particleLevelTreeManager->makeOutputVariable(m_mu_e_bare, "mu_e_bare");
1658 
1659  if(m_config->useSoftMuons())
1660  {
1661  m_particleLevelTreeManager->makeOutputVariable(m_softmu_pt, "softmu_pt");
1662  m_particleLevelTreeManager->makeOutputVariable(m_softmu_eta, "softmu_eta");
1663  m_particleLevelTreeManager->makeOutputVariable(m_softmu_phi, "softmu_phi");
1664  m_particleLevelTreeManager->makeOutputVariable(m_softmu_e, "softmu_e");
1665  m_particleLevelTreeManager->makeOutputVariable(m_softmu_charge, "softmu_charge");
1666 
1667  m_particleLevelTreeManager->makeOutputVariable(m_softmu_true_type, "softmu_true_type");
1668  m_particleLevelTreeManager->makeOutputVariable(m_softmu_true_origin, "softmu_true_origin");
1669 
1670  if(m_config->softmuonAdditionalTruthInfo())
1671  {
1672  if(m_config->softmuonAdditionalTruthInfoCheckPartonOrigin()) m_particleLevelTreeManager->makeOutputVariable(m_softmu_parton_origin_flag, "softmu_parton_origin_flag");
1673  m_particleLevelTreeManager->makeOutputVariable(m_softmu_particle_origin_flag, "softmu_particle_origin_flag");
1674  m_particleLevelTreeManager->makeOutputVariable(m_softmu_parent_pdgid,"softmu_parent_pdgid");
1675  m_particleLevelTreeManager->makeOutputVariable(m_softmu_b_hadron_parent_pdgid,"softmu_b_hadron_parent_pdgid");
1676  m_particleLevelTreeManager->makeOutputVariable(m_softmu_c_hadron_parent_pdgid,"softmu_c_hadron_parent_pdgid");
1677  }
1678  }
1679  }//end of muons branches
1680 
1681  //photons
1682  if (m_config->useTruthPhotons()) {
1683  m_particleLevelTreeManager->makeOutputVariable(m_ph_pt, "ph_pt");
1684  m_particleLevelTreeManager->makeOutputVariable(m_ph_eta, "ph_eta");
1685  m_particleLevelTreeManager->makeOutputVariable(m_ph_phi, "ph_phi");
1686  m_particleLevelTreeManager->makeOutputVariable(m_ph_e, "ph_e");
1687  }
1688 
1689  //jets
1690  if (m_config->useTruthJets()) {
1691  m_particleLevelTreeManager->makeOutputVariable(m_jet_pt, "jet_pt");
1692  m_particleLevelTreeManager->makeOutputVariable(m_jet_eta, "jet_eta");
1693  m_particleLevelTreeManager->makeOutputVariable(m_jet_phi, "jet_phi");
1694  m_particleLevelTreeManager->makeOutputVariable(m_jet_e, "jet_e");
1695 
1696  m_particleLevelTreeManager->makeOutputVariable(m_jet_Ghosts_BHadron_Final_Count, "jet_nGhosts_bHadron");
1697  m_particleLevelTreeManager->makeOutputVariable(m_jet_Ghosts_CHadron_Final_Count, "jet_nGhosts_cHadron");
1698  }
1699 
1700  //large R jets
1701  if (m_config->useTruthLargeRJets()) {
1702  m_particleLevelTreeManager->makeOutputVariable(m_ljet_pt, "ljet_pt");
1703  m_particleLevelTreeManager->makeOutputVariable(m_ljet_eta, "ljet_eta");
1704  m_particleLevelTreeManager->makeOutputVariable(m_ljet_phi, "ljet_phi");
1705  m_particleLevelTreeManager->makeOutputVariable(m_ljet_e, "ljet_e");
1706 
1707  m_particleLevelTreeManager->makeOutputVariable(m_ljet_Ghosts_BHadron_Final_Count, "ljet_nGhosts_bHadron");
1708  m_particleLevelTreeManager->makeOutputVariable(m_ljet_Ghosts_CHadron_Final_Count, "ljet_nGhosts_cHadron");
1709  }
1710 
1711  //taus
1712  if (m_config->useTruthTaus()) {
1713  m_particleLevelTreeManager->makeOutputVariable(m_tau_pt, "tau_pt");
1714  m_particleLevelTreeManager->makeOutputVariable(m_tau_eta, "tau_eta");
1715  m_particleLevelTreeManager->makeOutputVariable(m_tau_phi, "tau_phi");
1716  m_particleLevelTreeManager->makeOutputVariable(m_tau_e, "tau_e");
1717  m_particleLevelTreeManager->makeOutputVariable(m_tau_charge, "tau_charge");
1718  m_particleLevelTreeManager->makeOutputVariable(m_tau_isHadronic, "tau_isHadronic");
1719  }
1720 
1721  // RC branches
1722  if (m_makeRCJets) {
1723  // create the branches
1724  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_pt, "rcjet_pt");
1725  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_eta, "rcjet_eta");
1726  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_phi, "rcjet_phi");
1727  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_e, "rcjet_e");
1728  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_d12, "rcjet_d12"); // requires >= 2 subjets
1729  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_d23, "rcjet_d23"); // requires >= 3 subjets
1730  m_particleLevelTreeManager->makeOutputVariable(m_rcjetsub_pt, "rcjetsub_pt"); // vector of vectors for subjet
1731  // info
1732  m_particleLevelTreeManager->makeOutputVariable(m_rcjetsub_eta, "rcjetsub_eta");
1733  m_particleLevelTreeManager->makeOutputVariable(m_rcjetsub_phi, "rcjetsub_phi");
1734  m_particleLevelTreeManager->makeOutputVariable(m_rcjetsub_e, "rcjetsub_e");
1735  m_particleLevelTreeManager->makeOutputVariable(m_rcjetsub_Ghosts_BHadron_Final_Count, "rcjetsub_nGhosts_bHadron");
1736  m_particleLevelTreeManager->makeOutputVariable(m_rcjetsub_Ghosts_CHadron_Final_Count, "rcjetsub_nGhosts_cHadron");
1737 
1739  m_particleLevelTreeManager->makeOutputVariable(m_rrcjet_pt, "rrcjet_pt");
1740  m_particleLevelTreeManager->makeOutputVariable(m_rrcjet_eta, "rrcjet_eta");
1741  m_particleLevelTreeManager->makeOutputVariable(m_rrcjet_phi, "rrcjet_phi");
1742  m_particleLevelTreeManager->makeOutputVariable(m_rrcjet_e, "rrcjet_e");
1743  }
1744 
1745  if (m_useRCJSS) {
1746  // RCJet SS from Clusters
1747  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_tau32_clstr, "rcjet_tau32_clstr");
1748  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_tau21_clstr, "rcjet_tau21_clstr");
1749  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_tau3_clstr, "rcjet_tau3_clstr");
1750  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_tau2_clstr, "rcjet_tau2_clstr");
1751  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_tau1_clstr, "rcjet_tau1_clstr");
1752 
1753  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_d12_clstr, "rcjet_d12_clstr");
1754  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_d23_clstr, "rcjet_d23_clstr");
1755  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_Qw_clstr, "rcjet_Qw_clstr");
1756 
1757  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_nconstituent_clstr, "rcjet_nconstituent_clstr");
1758 
1759  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_D2_clstr, "rcjet_D2_clstr");
1760  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_ECF1_clstr, "rcjet_ECF1_clstr");
1761  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_ECF2_clstr, "rcjet_ECF2_clstr");
1762  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_ECF3_clstr, "rcjet_ECF3_clstr");
1763 
1764  }
1765  if (m_useRCAdditionalJSS) {
1766 
1767  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF332_clstr, "rcjet_gECF332_clstr");
1768  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF461_clstr, "rcjet_gECF461_clstr");
1769  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF322_clstr, "rcjet_gECF322_clstr");
1770  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF331_clstr, "rcjet_gECF331_clstr");
1771  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF422_clstr, "rcjet_gECF422_clstr");
1772  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF441_clstr, "rcjet_gECF441_clstr");
1773  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF212_clstr, "rcjet_gECF212_clstr");
1774  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF321_clstr, "rcjet_gECF321_clstr");
1775  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_gECF311_clstr, "rcjet_gECF311_clstr");
1776 
1777  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_L1_clstr, "rcjet_L1_clstr");
1778  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_L2_clstr, "rcjet_L2_clstr");
1779  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_L3_clstr, "rcjet_L3_clstr");
1780  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_L4_clstr, "rcjet_L4_clstr");
1781  m_particleLevelTreeManager->makeOutputVariable(m_rcjet_L5_clstr, "rcjet_L5_clstr");
1782  }
1783  }
1784 
1785  if (m_makeVarRCJets) {
1786  std::string VarRC = "vrcjet";
1787 
1788  for (auto& rho : m_VarRCJetRho) {
1789  for (auto& mass_scale : m_VarRCJetMassScale) {
1790  std::replace(rho.begin(), rho.end(), '.', '_');
1791  std::string name = rho + mass_scale;
1792  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_pt"], VarRC + "_" + name + "_pt");
1793  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_eta"], VarRC + "_" + name + "_eta");
1794  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_phi"], VarRC + "_" + name + "_phi");
1795  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_e"], VarRC + "_" + name + "_e");
1796  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d12"], VarRC + "_" + name + "_d12"); // requires
1797  // >=
1798  // 2
1799  // subjets
1800  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d23"], VarRC + "_" + name + "_d23"); // requires
1801  // >=
1802  // 3
1803  // subjets
1804  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_pt"], VarRC + "sub_" + name + "_pt"); // vector
1805  // of
1806  // vectors
1807  // for
1808  // subjet
1809  // info
1810  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_eta"], VarRC + "sub_" + name + "_eta");
1811  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_phi"], VarRC + "sub_" + name + "_phi");
1812  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_e"], VarRC + "sub_" + name + "_e");
1813 
1815  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_" + name + "_pt"], "vrrcjet_" + name + "_pt");
1816  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_" + name + "_eta"], "vrrcjet_" + name + "_eta");
1817  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_" + name + "_phi"], "vrrcjet_" + name + "_phi");
1818  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_" + name + "_e"], "vrrcjet_" + name + "_e");
1819  }
1820  if (m_useVarRCJSS) {
1821  // RCJet SS from Clusters
1822  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau32_clstr"], VarRC + "_" + name + "_tau32_clstr");
1823  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau21_clstr"], VarRC + "_" + name + "_tau21_clstr");
1824  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau3_clstr"], VarRC + "_" + name + "_tau3_clstr");
1825  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau2_clstr"], VarRC + "_" + name + "_tau2_clstr");
1826  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau1_clstr"], VarRC + "_" + name + "_tau1_clstr");
1827 
1828  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d12_clstr"], VarRC + "_" + name + "_d12_clstr");
1829  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d23_clstr"], VarRC + "_" + name + "_d23_clstr");
1830  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_Qw_clstr"], VarRC + "_" + name + "_Qw_clstr");
1831  }
1833  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF332_clstr"], VarRC + "_" + name + "_gECF332_clstr");
1834  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF461_clstr"], VarRC + "_" + name + "_gECF461_clstr");
1835  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF322_clstr"], VarRC + "_" + name + "_gECF322_clstr");
1836  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF331_clstr"], VarRC + "_" + name + "_gECF331_clstr");
1837  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF422_clstr"], VarRC + "_" + name + "_gECF422_clstr");
1838  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF441_clstr"], VarRC + "_" + name + "_gECF441_clstr");
1839  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF212_clstr"], VarRC + "_" + name + "_gECF212_clstr");
1840  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF321_clstr"], VarRC + "_" + name + "_gECF321_clstr");
1841  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF311_clstr"], VarRC + "_" + name + "_gECF311_clstr");
1842 
1843  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L1_clstr"], VarRC + "_" + name + "_L1_clstr");
1844  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L2_clstr"], VarRC + "_" + name + "_L2_clstr");
1845  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L3_clstr"], VarRC + "_" + name + "_L3_clstr");
1846  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L4_clstr"], VarRC + "_" + name + "_L4_clstr");
1847  m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L5_clstr"], VarRC + "_" + name + "_L5_clstr");
1848  }
1849  } // end loop over mass parameters
1850  } // end loop over multipliers for mass scale
1851  } // end if VarRC jets
1852 
1853  //met
1854  if (m_config->useTruthMET()) {
1855  m_particleLevelTreeManager->makeOutputVariable(m_met_met, "met_met");
1856  m_particleLevelTreeManager->makeOutputVariable(m_met_phi, "met_phi");
1857  }
1858 
1859  // Setup PDF info branches if PDF info is requested.
1860  if (m_config->doTruthPDFInfo()) {
1861  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_X1, "PDFinfo_X1");
1862  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_X2, "PDFinfo_X2");
1863  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_PDGID1, "PDFinfo_PDGID1");
1864  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_PDGID2, "PDFinfo_PDGID2");
1865  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_Q, "PDFinfo_Q");
1866  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_XF1, "PDFinfo_XF1");
1867  m_particleLevelTreeManager->makeOutputVariable(m_PDFinfo_XF2, "PDFinfo_XF2");
1868  }
1869 
1870  // Setup MC generator weights branch if requested.
1871  if (m_config->doMCGeneratorWeights()) {
1872  m_particleLevelTreeManager->makeOutputVariable(m_mc_generator_weights, "mc_generator_weights");
1873  }
1874 
1875  // Setup PDF weight branches if PDF systematics are requested,
1876  if (m_config->saveLHAPDFEvent()) {
1877  for (auto& pdf : m_PDF_eventWeights) {
1878  m_particleLevelTreeManager->makeOutputVariable(pdf.second, pdf.first);
1879  }
1880  }
1881 
1882  // Setup the selection decision branches. This is a two-step process:
1883  //
1884  // (1) First, we need to create an array of variables which will be used to
1885  // store the data in the TTree. The variable
1886  // m_particleLevel_SelectionDecisions is just that: A std::vector of
1887  // pairs, thwere the .first corresponds to the name of the selection,
1888  // and the .second is the actual variable.
1889  // (2) Secondly, we need to attach the newly created variables to the
1890  // particle level tree manager.
1892  for (const auto& selection : m_extraBranches) {
1893  m_particleLevel_SelectionDecisions.push_back(std::make_pair(selection, int()));
1894  }
1895 
1896  for (auto& selectionDecision : m_particleLevel_SelectionDecisions) {
1897  m_particleLevelTreeManager->makeOutputVariable(selectionDecision.second, selectionDecision.first);
1898  }
1899  }
1900 
1902  int index(0);
1903 
1904  for (const auto& branchName : m_extraBranches) {
1905  m_selectionDecisions[index] = event.m_info->auxdataConst<int>(branchName);
1906  ++index;
1907  }
1908  }
1909 
1911  for (const auto& trigger : m_triggerDecisions)
1912  m_triggerDecisions[trigger.first] = event.m_info->auxdataConst<char>("TRIGDEC_" + RCU::substitute(RCU::substitute(trigger.first, ".", "p"), "-", "_"));
1913  }
1914 
1916  // record the event?
1917  if (m_config->saveOnlySelectedEvents() && !event.m_saveEvent) return;
1918 
1919  this->cleanEvent();
1920  this->calculateEvent(event);
1921  this->fillEvent(event);
1922  }
1923 
1925  /* Doing nothing for now, but we should put here the (re-)initialisation to dummy values
1926  * of all variables later calculated in calculateEvent(const top::Event& event)
1927  * For example all weights set to 1, all vectors cleaned, all kinematic or angular variables set to -99999.
1928  */
1929  }
1930 
1932  //We have decorated event-info with a variable for each selection - with pass / fail
1934 
1936 
1937  //some event weights
1938  m_weight_mc = 0.;
1939  m_weight_beamspot = 0.;
1940  if (m_config->isMC()) {
1941  m_weight_mc = event.m_info->auxdataConst<float>("AnalysisTop_eventWeight");
1942  m_weight_beamspot = event.m_info->beamSpotWeight();
1943  }
1944 
1945  if (m_config->isMC()) {
1947 
1951 
1953 
1955 
1956  // fill the map of scalar b-tag SF values written to output
1957  for (auto& weight_bTagSF : m_weight_bTagSF)
1959  if (m_config->useTrackJets()) {
1962  }
1963 
1966 
1967  if (m_config->isSherpa22Vjets()) {
1968  if (event.m_info->isAvailable<double>("Sherpa22VJetsWeight")) {
1969  m_weight_sherpa_22_vjets = event.m_info->auxdataConst<double>("Sherpa22VJetsWeight");
1970  }
1971  }
1972 
1973  // writing the systematic-shifted SFs only in the nominal (or nominal_Loose) tree
1974  if (event.m_hashValue == m_config->nominalHashValue()) {
1975  if (m_config->useFwdElectrons()) {
1978  }
1979 
1980  m_weight_pileup_UP = m_sfRetriever->pileupSF(event, +1); // up variation
1981  m_weight_pileup_DOWN = m_sfRetriever->pileupSF(event, -1); // down variation
1982 
1991 
1992  if (m_config->electronEfficiencySystematicModel() != "TOTAL") {
1999  }
2004  // Muon ID SF systematics (regular)
2009  if (m_config->muonBreakDownSystematics()) {
2046  } else {
2051  }
2052  if (m_config->doTightEvents() && m_config->muonQuality() == "HighPt") {
2055  }
2056  if (m_config->doLooseEvents() && m_config->muonQualityLoose() == "HighPt") {
2059  }
2060  // Muon isolation SF systematics
2063 
2066  if (m_config->muonBreakDownSystematics()) {
2085 
2098  } else {
2103  }
2104 
2105  if (m_config->useTaus()) {
2106  // Tau-electron overlap removal
2107  for (auto& tauSFvariation: m_weight_tauSF_variations) {
2108  tauSFvariation.second = m_sfRetriever->tauSF(event, tauSFvariation.first);
2109  }
2110  }
2111 
2112  if (m_config->usePhotons()) {
2119  }
2120 
2121 
2124  if (m_config->getfJVTWP() != "None"){
2127  }
2128  }
2129 
2130  // for b-tagging SFs, can also have systematic-shifted in systematics trees
2131  if (event.m_hashValue == m_config->nominalHashValue() || m_config->dumpBtagSystsInSystTrees()) {
2132  for (const std::string& tagWP : m_config->bTagWP_calib()) {
2135  m_weight_bTagSF_eigen_B_down[tagWP], tagWP);
2138  m_weight_bTagSF_eigen_C_down[tagWP], tagWP);
2141  m_weight_bTagSF_eigen_Light_down[tagWP], tagWP);
2142  for (const auto& name : m_config->btagging_namedSysts(tagWP)) {
2145  }
2146  }
2147  if (m_config->useTrackJets()) {
2148  for (const std::string& tagWP : m_config->bTagWP_calib_trkJet()) {
2151  m_weight_trackjet_bTagSF_eigen_B_down[tagWP], tagWP, true);
2154  m_weight_trackjet_bTagSF_eigen_C_down[tagWP], tagWP, true);
2157  m_weight_trackjet_bTagSF_eigen_Light_down[tagWP], tagWP, true);
2158  for (const auto& name : m_config->trkjet_btagging_namedSysts(tagWP)) {
2161  }
2162  }
2163  }
2164  }
2165  }
2166 
2168  if (m_config->saveBootstrapWeights()) {
2169  m_weight_poisson = event.m_info->auxdataConst<std::vector<int> >("weight_poisson");
2170  }
2171 
2173  if (event.m_hashValue == m_config->nominalHashValue() && !m_config->isMC() && m_config->doFakesMMWeightsIFF()) {
2174  if (event.m_info->isAvailable<std::vector<float> >(m_ASMdecorName.c_str())) {
2175  m_ASMweights = event.m_info->auxdataConst<std::vector<float> >(m_ASMdecorName.c_str());
2176  }
2177  }
2178 
2179  //event info
2180  m_eventNumber = event.m_info->eventNumber();
2181  m_runNumber = event.m_info->runNumber();
2182  m_randomRunNumber = 0;
2183  if (m_config->isMC() && m_config->doPileupReweighting()) {
2184  if (event.m_info->isAvailable<unsigned int>("RandomRunNumber")) m_randomRunNumber = event.m_info->auxdataConst<unsigned int>("RandomRunNumber");
2185  }
2186  m_mcChannelNumber = 0;
2187 
2188  if (m_config->isMC()) m_mcChannelNumber = event.m_info->mcChannelNumber();
2189 
2190  // (non-collision-)background flags
2191  m_backgroundFlags = 0;
2192  static const SG::AtomicConstAccessor<unsigned int> bkgFlagsAcc("backgroundFlags");
2193  if (bkgFlagsAcc.isAvailable(*(event.m_info))) m_backgroundFlags = bkgFlagsAcc(*(event.m_info));
2194 
2195  // hasBadMuon flag
2196  m_hasBadMuon = 0;
2197  if (m_config->useMuons() && event.m_info->isAvailable<char>("AnalysisTop_HASBADMUON")) m_hasBadMuon = event.m_info->auxdataConst<char>("AnalysisTop_HASBADMUON");
2198 
2199  // mu values (original and corrected by pileup reweighting tool)
2200  m_mu_original = event.m_info->averageInteractionsPerCrossing();
2201  m_mu_actual_original = event.m_info->actualInteractionsPerCrossing();
2202 
2203  // set these all to zero (maybe not the most sensible value...)
2204  m_mu = 0;
2205  m_mu_actual = 0;
2206 
2207  if (m_config->isMC()) {
2208  m_mu = m_mu_original;
2210  }
2211  if (!m_config->isMC()) {
2212  // If we have the corrected mu value from pileup reweighting then save that
2213  // instead of mu value in (d)xAOD.
2214  if (event.m_info->isAvailable<float>("corrected_averageInteractionsPerCrossing")) m_mu = event.m_info->auxdataConst<float>("corrected_averageInteractionsPerCrossing");
2215  if (event.m_info->isAvailable<float>("corrected_actualInteractionsPerCrossing")) m_mu_actual = event.m_info->auxdataConst<float>("corrected_actualInteractionsPerCrossing");
2216  }
2217 
2218  ATH_MSG_DEBUG(" mu = " << m_mu_original << " -> " << m_mu);
2219 
2220  //forward electrons
2221  if (m_config->useFwdElectrons()) {
2222  unsigned int i(0);
2223  unsigned int n_electrons = event.m_fwdElectrons.size();
2224  m_fwdel_pt.resize(n_electrons);
2225  m_fwdel_eta.resize(n_electrons);
2226  m_fwdel_phi.resize(n_electrons);
2227  m_fwdel_e.resize(n_electrons);
2228  m_fwdel_etcone20.resize(n_electrons);
2229  m_fwdel_etcone30.resize(n_electrons);
2230  m_fwdel_etcone40.resize(n_electrons);
2231  m_fwdel_isTight.resize(n_electrons);
2232 
2233  for (const auto* const elPtr : event.m_fwdElectrons) {
2234  m_fwdel_pt[i] = elPtr->pt();
2235  m_fwdel_eta[i] = elPtr->eta();
2236  m_fwdel_phi[i] = elPtr->phi();
2237  m_fwdel_e[i] = elPtr->e();
2238 
2239  float etcone20 = 0.0;
2240  elPtr->isolationValue(etcone20, xAOD::Iso::topoetcone20);
2241  float etcone30 = 0.0;
2242  elPtr->isolationValue(etcone30, xAOD::Iso::topoetcone30);
2243  float etcone40 = 0.0;
2244  elPtr->isolationValue(etcone40, xAOD::Iso::topoetcone40);
2245 
2249 
2250  if (event.m_isLoose) {
2251  if (elPtr->isAvailable<char>("passPreORSelection")) {
2252  m_fwdel_isTight[i] = elPtr->auxdataConst<char>("passPreORSelection");
2253  }
2254  }
2255 
2256  ++i;
2257  }//end of loop on fwd electrons
2258  }//end of fwd electrons filling
2259 
2260  //electrons
2261  if (m_config->useElectrons()) {
2262  unsigned int i(0);
2263  unsigned int n_electrons = event.m_electrons.size();
2264  m_el_pt.resize(n_electrons);
2265  m_el_eta.resize(n_electrons);
2266  m_el_cl_eta.resize(n_electrons);
2267  m_el_phi.resize(n_electrons);
2268  m_el_e.resize(n_electrons);
2269  m_el_charge.resize(n_electrons);
2270  m_el_topoetcone20.resize(n_electrons);
2271  m_el_ptvarcone20.resize(n_electrons);
2272  m_el_isTight.resize(n_electrons);
2273  m_el_CF.resize(n_electrons);
2274  for (const auto& trigger : m_el_trigMatched)
2275  m_el_trigMatched[trigger.first].resize(n_electrons);
2276  m_el_d0sig.resize(n_electrons);
2277  m_el_delta_z0_sintheta.resize(n_electrons);
2278  if (m_config->isMC()) {
2279  m_el_true_type.resize(n_electrons);
2280  m_el_true_origin.resize(n_electrons);
2281  m_el_true_firstEgMotherTruthOrigin.resize(n_electrons);
2282  m_el_true_firstEgMotherTruthType.resize(n_electrons);
2283  m_el_true_firstEgMotherPdgId.resize(n_electrons);
2284  m_el_true_isPrompt.resize(n_electrons);
2285  m_el_true_isChargeFl.resize(n_electrons);
2286  }
2287  if (m_config->enablePromptLeptonImprovedVetoStudies()) {
2288  m_PLIV_el_PromptLeptonRNN_conversion.resize(n_electrons);
2289  m_PLIV_el_PromptLeptonRNN_non_prompt_b.resize(n_electrons);
2290  m_PLIV_el_PromptLeptonRNN_non_prompt_c.resize(n_electrons);
2291  m_PLIV_el_PromptLeptonRNN_prompt.resize(n_electrons);
2292  m_PLIV_el_PromptLeptonImprovedInput_MVAXBin.resize(n_electrons);
2296  m_PLIV_el_PromptLeptonImprovedInput_PtFrac.resize(n_electrons);
2297  m_PLIV_el_PromptLeptonImprovedInput_DRlj.resize(n_electrons);
2299  m_PLIV_el_PromptLeptonImprovedInput_PtRel.resize(n_electrons);
2301  m_PLIV_el_PromptLeptonImprovedVetoBARR.resize(n_electrons);
2302  m_PLIV_el_PromptLeptonImprovedVetoECAP.resize(n_electrons);
2303  }
2304 
2305  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonRNN_conversion("PromptLeptonRNN_conversion");
2306  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonRNN_non_prompt_b("PromptLeptonRNN_non_prompt_b");
2307  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonRNN_non_prompt_c("PromptLeptonRNN_non_prompt_c");
2308  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonRNN_prompt("PromptLeptonRNN_prompt");
2309  static const SG::AuxElement::Accessor<short> PLIV_el_PromptLeptonImprovedInput_MVAXBin("PromptLeptonImprovedInput_MVAXBin");
2310  static const SG::AuxElement::Accessor<short> PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack("PromptLeptonImprovedInput_TrackJetNTrack");
2311  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_topoetcone30rel("PromptLeptonImprovedInput_topoetcone30rel");
2312  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel("PromptLeptonImprovedInput_ptvarcone30rel");
2313  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_PtFrac("PromptLeptonImprovedInput_PtFrac");
2314  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_DRlj("PromptLeptonImprovedInput_DRlj");
2315  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel("PromptLeptonImprovedInput_CaloClusterSumEtRel");
2316  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_PtRel("PromptLeptonImprovedInput_PtRel");
2317  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx("PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx");
2318  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedVetoBARR("PromptLeptonImprovedVetoBARR");
2319  static const SG::AuxElement::Accessor<float> PLIV_el_PromptLeptonImprovedVetoECAP("PromptLeptonImprovedVetoECAP");
2320 
2321  for (const auto* const elPtr : event.m_electrons) {
2322  m_el_pt[i] = elPtr->pt();
2323  m_el_eta[i] = elPtr->eta();
2324  m_el_cl_eta[i] = elPtr->caloCluster()->etaBE(2);
2325  m_el_phi[i] = elPtr->phi();
2326  m_el_e[i] = elPtr->e();
2327  m_el_charge[i] = elPtr->charge();
2328  elPtr->isolationValue(m_el_topoetcone20[i], xAOD::Iso::topoetcone20);
2329  elPtr->isolationValue(m_el_ptvarcone20[i], xAOD::Iso::ptvarcone20);
2330  if (event.m_isLoose) {
2331  if (elPtr->isAvailable<char>("passPreORSelection")) {
2332  m_el_isTight[i] = elPtr->auxdataConst<char>("passPreORSelection");
2333  }
2334  }
2335  if (elPtr->isAvailable<char>("passChargeID")) m_el_CF[i] = elPtr->auxdataConst<char>("passChargeID");
2336  for (const auto& trigger : m_el_trigMatched) {
2337  std::string trig = "TRIGMATCH_" + trigger.first;
2338  m_el_trigMatched[trigger.first][i] = elPtr->auxdataConst<char>(trig);
2339  }
2340  if (elPtr->isAvailable<float>("d0sig")) m_el_d0sig[i] = elPtr->auxdataConst<float>("d0sig");
2341  if (elPtr->isAvailable<float>("delta_z0_sintheta")) m_el_delta_z0_sintheta[i] = elPtr->auxdataConst<float>("delta_z0_sintheta");
2342 
2343  if (m_config->enablePromptLeptonImprovedVetoStudies()) {
2344  m_PLIV_el_PromptLeptonRNN_conversion[i] = PLIV_el_PromptLeptonRNN_conversion.isAvailable(*elPtr) ? PLIV_el_PromptLeptonRNN_conversion(*elPtr) : -999.;
2345  m_PLIV_el_PromptLeptonRNN_non_prompt_b[i] = PLIV_el_PromptLeptonRNN_non_prompt_b.isAvailable(*elPtr) ? PLIV_el_PromptLeptonRNN_non_prompt_b(*elPtr) : -999.;
2346  m_PLIV_el_PromptLeptonRNN_non_prompt_c[i] = PLIV_el_PromptLeptonRNN_non_prompt_c.isAvailable(*elPtr) ? PLIV_el_PromptLeptonRNN_non_prompt_c(*elPtr) : -999.;
2347  m_PLIV_el_PromptLeptonRNN_prompt[i] = PLIV_el_PromptLeptonRNN_prompt.isAvailable(*elPtr) ? PLIV_el_PromptLeptonRNN_prompt(*elPtr) : -999.;
2348  m_PLIV_el_PromptLeptonImprovedInput_MVAXBin[i] = PLIV_el_PromptLeptonImprovedInput_MVAXBin.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_MVAXBin(*elPtr) : -999.;
2349  m_PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack[i] = PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack(*elPtr) : -999.;
2350  m_PLIV_el_PromptLeptonImprovedInput_topoetcone30rel[i] = PLIV_el_PromptLeptonImprovedInput_topoetcone30rel.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_topoetcone30rel(*elPtr) : -999.;
2351  m_PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel[i] = PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel(*elPtr) : -999.;
2352  m_PLIV_el_PromptLeptonImprovedInput_PtFrac[i] = PLIV_el_PromptLeptonImprovedInput_PtFrac.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_PtFrac(*elPtr) : -999.;
2353  m_PLIV_el_PromptLeptonImprovedInput_DRlj[i] = PLIV_el_PromptLeptonImprovedInput_DRlj.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_DRlj(*elPtr) : -999.;
2354  m_PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel[i] = PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel(*elPtr) : -999.;
2355  m_PLIV_el_PromptLeptonImprovedInput_PtRel[i] = PLIV_el_PromptLeptonImprovedInput_PtRel.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_PtRel(*elPtr) : -999.;
2356  m_PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx[i] = PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx(*elPtr) : -999.;
2357  m_PLIV_el_PromptLeptonImprovedVetoBARR[i] = PLIV_el_PromptLeptonImprovedVetoBARR.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedVetoBARR(*elPtr) : -999.;
2358  m_PLIV_el_PromptLeptonImprovedVetoECAP[i] = PLIV_el_PromptLeptonImprovedVetoECAP.isAvailable(*elPtr) ? PLIV_el_PromptLeptonImprovedVetoECAP(*elPtr) : -999.;
2359  }
2360 
2361  //retrieve the truth-matching variables from MCTruthClassifier
2362  if (m_config->isMC()) {
2363  m_el_true_type[i] = 0;
2364  m_el_true_origin[i] = 0;
2368  static const SG::AuxElement::Accessor<int> typeel("truthType");
2369  static const SG::AuxElement::Accessor<int> origel("truthOrigin");
2370  static const SG::AuxElement::Accessor<int> firstEgMotherTruthType("firstEgMotherTruthType");
2371  static const SG::AuxElement::Accessor<int> firstEgMotherTruthOrigin("firstEgMotherTruthOrigin");
2372  static const SG::AuxElement::Accessor<int> firstEgMotherPdgId("firstEgMotherPdgId");
2373 
2374  if (typeel.isAvailable(*elPtr)) m_el_true_type[i] = typeel(*elPtr);
2375  if (origel.isAvailable(*elPtr)) m_el_true_origin[i] = origel(*elPtr);
2376  if (firstEgMotherTruthType.isAvailable(*elPtr)) m_el_true_firstEgMotherTruthType[i] = firstEgMotherTruthType(*elPtr);
2377  if (firstEgMotherTruthOrigin.isAvailable(*elPtr)) m_el_true_firstEgMotherTruthOrigin[i] = firstEgMotherTruthOrigin(*elPtr);
2378  if (firstEgMotherPdgId.isAvailable(*elPtr)) m_el_true_firstEgMotherPdgId[i] = firstEgMotherPdgId(*elPtr);
2379 
2381  m_el_true_isPrompt[i] = isPrompt_isChargeFl.first;
2382  m_el_true_isChargeFl[i] = isPrompt_isChargeFl.second;
2383  }
2384  ++i;
2385  }
2386  }
2387 
2388  //muons
2389  if (m_config->useMuons()) {
2390  unsigned int i(0);
2391  unsigned int n_muons = event.m_muons.size();
2392  m_mu_pt.resize(n_muons);
2393  m_mu_eta.resize(n_muons);
2394  m_mu_phi.resize(n_muons);
2395  m_mu_e.resize(n_muons);
2396  m_mu_charge.resize(n_muons);
2397  m_mu_topoetcone20.resize(n_muons);
2398  m_mu_ptvarcone30.resize(n_muons);
2399  m_mu_isTight.resize(n_muons);
2400  for (const auto& trigger : m_mu_trigMatched)
2401  m_mu_trigMatched[trigger.first].resize(n_muons);
2402  m_mu_d0sig.resize(n_muons);
2403  m_mu_delta_z0_sintheta.resize(n_muons);
2404  if (m_config->isMC()) {
2405  m_mu_true_type.resize(n_muons);
2406  m_mu_true_origin.resize(n_muons);
2407  m_mu_true_isPrompt.resize(n_muons);
2408  }
2409  if (m_config->enablePromptLeptonImprovedVetoStudies()) {
2412  m_PLIV_mu_PromptLeptonRNN_prompt.resize(n_muons);
2420  m_PLIV_mu_PromptLeptonImprovedVeto.resize(n_muons);
2421  }
2422 
2423  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonRNN_non_prompt_b("PromptLeptonRNN_non_prompt_b");
2424  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonRNN_non_prompt_c("PromptLeptonRNN_non_prompt_c");
2425  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonRNN_prompt("PromptLeptonRNN_prompt");
2426  static const SG::AuxElement::Accessor<short> PLIV_mu_PromptLeptonImprovedInput_MVAXBin("PromptLeptonImprovedInput_MVAXBin");
2427  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel("PromptLeptonImprovedInput_topoetcone30rel");
2428  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedInput_PtFrac("PromptLeptonImprovedInput_PtFrac");
2429  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedInput_DRlj("PromptLeptonImprovedInput_DRlj");
2430  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel("PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel");
2431  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel("PromptLeptonImprovedInput_CaloClusterERel");
2432  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest("PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest");
2433  static const SG::AuxElement::Accessor<float> PLIV_mu_PromptLeptonImprovedVeto("PromptLeptonImprovedVeto");
2434 
2435  for (const auto* const muPtr : event.m_muons) {
2436  m_mu_pt[i] = muPtr->pt();
2437  m_mu_eta[i] = muPtr->eta();
2438  m_mu_phi[i] = muPtr->phi();
2439  m_mu_e[i] = muPtr->e();
2440  m_mu_charge[i] = muPtr->charge();
2441  muPtr->isolation(m_mu_topoetcone20[i], xAOD::Iso::topoetcone20);
2442  muPtr->isolation(m_mu_ptvarcone30[i], xAOD::Iso::ptvarcone30);
2443  if (event.m_isLoose) {
2444  if (muPtr->isAvailable<char>("passPreORSelection")) {
2445  m_mu_isTight[i] = muPtr->auxdataConst<char>("passPreORSelection");
2446  }
2447  }
2448  for (const auto& trigger : m_mu_trigMatched) {
2449  std::string trig = "TRIGMATCH_" + trigger.first;
2450  m_mu_trigMatched[trigger.first][i] = muPtr->auxdataConst<char>(trig);
2451  }
2452  if (muPtr->isAvailable<float>("d0sig")) m_mu_d0sig[i] = muPtr->auxdataConst<float>("d0sig");
2453  if (muPtr->isAvailable<float>("delta_z0_sintheta")) m_mu_delta_z0_sintheta[i] = muPtr->auxdataConst<float>("delta_z0_sintheta");
2454 
2455  if (m_config->enablePromptLeptonImprovedVetoStudies()) {
2456  m_PLIV_mu_PromptLeptonRNN_non_prompt_b[i] = PLIV_mu_PromptLeptonRNN_non_prompt_b.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonRNN_non_prompt_b(*muPtr) : -999.;
2457  m_PLIV_mu_PromptLeptonRNN_non_prompt_c[i] = PLIV_mu_PromptLeptonRNN_non_prompt_c.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonRNN_non_prompt_c(*muPtr) : -999.;
2458  m_PLIV_mu_PromptLeptonRNN_prompt[i] = PLIV_mu_PromptLeptonRNN_prompt.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonRNN_prompt(*muPtr) : -999.;
2459  m_PLIV_mu_PromptLeptonImprovedInput_MVAXBin[i] = PLIV_mu_PromptLeptonImprovedInput_MVAXBin.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_MVAXBin(*muPtr) : -999.;
2460  m_PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel[i] = PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel(*muPtr) : -999.;
2461  m_PLIV_mu_PromptLeptonImprovedInput_PtFrac[i] = PLIV_mu_PromptLeptonImprovedInput_PtFrac.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_PtFrac(*muPtr) : -999.;
2462  m_PLIV_mu_PromptLeptonImprovedInput_DRlj[i] = PLIV_mu_PromptLeptonImprovedInput_DRlj.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_DRlj(*muPtr) : -999.;
2463  m_PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel[i] = PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel(*muPtr) : -999.;
2464  m_PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel[i] = PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel(*muPtr) : -999.;
2465  m_PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest[i] = PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest(*muPtr) : -999.;
2466  m_PLIV_mu_PromptLeptonImprovedVeto[i] = PLIV_mu_PromptLeptonImprovedVeto.isAvailable(*muPtr) ? PLIV_mu_PromptLeptonImprovedVeto(*muPtr) : -999.;
2467  }
2468 
2469  //retrieve the truth-matching variables from MCTruthClassifier
2470  if (m_config->isMC()) {
2471  static const SG::AuxElement::Accessor<int> acc_mctt("truthType");
2472  static const SG::AuxElement::Accessor<int> acc_mcto("truthOrigin");
2473  m_mu_true_type[i] = 0;
2474  m_mu_true_origin[i] = 0;
2475  if (acc_mctt.isAvailable(*muPtr)) m_mu_true_type[i] = acc_mctt(*muPtr);
2476  if (acc_mcto.isAvailable(*muPtr)) m_mu_true_origin[i] = acc_mcto(*muPtr);
2478  }
2479  ++i;
2480  }
2481  }
2482 
2483  //soft muons
2484  if (m_config->useSoftMuons()) {
2485  unsigned int i(0);
2486  unsigned int n_muons = event.m_softmuons.size();
2487 
2488  m_softmu_pt.resize(n_muons);
2489  m_softmu_eta.resize(n_muons);
2490  m_softmu_phi.resize(n_muons);
2491  m_softmu_e.resize(n_muons);
2492  m_softmu_charge.resize(n_muons);
2493  m_softmu_d0.resize(n_muons);
2494  m_softmu_d0sig.resize(n_muons);
2495  m_softmu_delta_z0_sintheta.resize(n_muons);
2496 
2497  if (m_config->isMC()) {
2498  m_softmu_true_type.resize(n_muons);
2499  m_softmu_true_origin.resize(n_muons);
2500  m_softmu_true_isPrompt.resize(n_muons);
2501  m_softmu_SF_ID.resize(n_muons);
2502  m_softmu_SF_ID_STAT_UP.resize(n_muons);
2503  m_softmu_SF_ID_STAT_DOWN.resize(n_muons);
2504  m_softmu_SF_ID_SYST_UP.resize(n_muons);
2505  m_softmu_SF_ID_SYST_DOWN.resize(n_muons);
2506  m_softmu_SF_ID_STAT_LOWPT_UP.resize(n_muons);
2507  m_softmu_SF_ID_STAT_LOWPT_DOWN.resize(n_muons);
2508  m_softmu_SF_ID_SYST_LOWPT_UP.resize(n_muons);
2509  m_softmu_SF_ID_SYST_LOWPT_DOWN.resize(n_muons);
2510 
2511  if(m_config->softmuonAdditionalTruthInfo())
2512  {
2513  m_softmu_parton_origin_flag.resize(n_muons);
2514  m_softmu_particle_origin_flag.resize(n_muons);
2515  m_softmu_parent_pdgid.resize(n_muons);
2516  m_softmu_b_hadron_parent_pdgid.resize(n_muons);
2517  m_softmu_c_hadron_parent_pdgid.resize(n_muons);
2518  }
2519  }
2520 
2521  for (const auto* const muPtr : event.m_softmuons) {
2522  m_softmu_pt[i] = muPtr->pt();
2523  m_softmu_eta[i] = muPtr->eta();
2524  m_softmu_phi[i] = muPtr->phi();
2525  m_softmu_e[i] = muPtr->e();
2526  m_softmu_charge[i] = muPtr->charge();
2527 
2528  m_softmu_d0[i] = 999.;
2529  m_softmu_d0sig[i] = 999.;
2530  m_softmu_delta_z0_sintheta[i] = 999.;
2531 
2532  const xAOD::TrackParticle* mutrack = muPtr->primaryTrackParticle();
2533 
2534  if (mutrack) m_softmu_d0[i] = mutrack->d0();
2535  if (muPtr->isAvailable<float>("d0sig")) m_softmu_d0sig[i] = muPtr->auxdataConst<float>("d0sig");
2536  if (muPtr->isAvailable<float>("delta_z0_sintheta")) m_softmu_delta_z0_sintheta[i] = muPtr->auxdataConst<float>("delta_z0_sintheta");
2537 
2538  if (m_config->isMC()) {
2540  if (event.m_hashValue == m_config->nominalHashValue()) {
2549  }
2550 
2551  static const SG::AuxElement::Accessor<int> acc_mctt("truthType");
2552  static const SG::AuxElement::Accessor<int> acc_mcto("truthOrigin");
2553  m_softmu_true_type[i] = 0;
2554  m_softmu_true_origin[i] = 0;
2555  if (acc_mctt.isAvailable(*muPtr)) m_softmu_true_type[i] = acc_mctt(*muPtr);
2556  if (acc_mcto.isAvailable(*muPtr)) m_softmu_true_origin[i] = acc_mcto(*muPtr);
2558 
2559  if(m_config->softmuonAdditionalTruthInfo())
2560  {
2561  //these truth info are written in SoftMuonObjectCollectionMaker.cxx
2562 
2564  if(m_config->softmuonAdditionalTruthInfoCheckPartonOrigin())
2565  {
2566  static const SG::AuxElement::Accessor<top::LepPartonOriginFlag> leppartonoriginflag("LepPartonOriginFlag");
2567  if(leppartonoriginflag.isAvailable(*muPtr)) m_softmu_parton_origin_flag[i]=static_cast<int>(leppartonoriginflag(*muPtr));
2568  }
2573  static const SG::AuxElement::Accessor<top::LepParticleOriginFlag> lepparticleoriginflag("LepParticleOriginFlag");
2574  if(lepparticleoriginflag.isAvailable(*muPtr)) m_softmu_particle_origin_flag[i]=static_cast<int>(lepparticleoriginflag(*muPtr));
2575 
2576  static const SG::AuxElement::Accessor<const xAOD::TruthParticle*> Mother("truthMotherLink");
2577  const xAOD::TruthParticle* mother = 0;
2578  if(Mother.isAvailable(*muPtr)) mother=Mother(*muPtr);
2579  if(mother) m_softmu_parent_pdgid[i]=mother->pdgId();
2580 
2581  static const SG::AuxElement::Accessor<const xAOD::TruthParticle*> BMother("truthBMotherLink");
2582  const xAOD::TruthParticle* Bmother = 0;
2583  if(BMother.isAvailable(*muPtr)) Bmother=BMother(*muPtr);
2584  if(Bmother) m_softmu_b_hadron_parent_pdgid[i]=Bmother->pdgId();
2585 
2586  static const SG::AuxElement::Accessor<const xAOD::TruthParticle*> CMother("truthCMotherLink");
2587  const xAOD::TruthParticle* Cmother = 0;
2588  if(CMother.isAvailable(*muPtr)) Cmother=CMother(*muPtr);
2589  if(Cmother) m_softmu_c_hadron_parent_pdgid[i]=Cmother->pdgId();
2590 
2591  if(m_config->softmuonAdditionalTruthInfoDoVerbose()) asg::msgUserCode::ATH_MSG_INFO("writing soft muon with pt="<<m_softmu_pt[i] <<" parton_origin_flag="<<m_softmu_parton_origin_flag[i]<<" particle_origin_flag="<<m_softmu_particle_origin_flag[i]<<" parent_pdg_id="<<m_softmu_parent_pdgid[i]<<" b_hadron_parent_pdg_id="<<m_softmu_b_hadron_parent_pdgid[i]<<" c_hadron_parent_pdg_id="<<m_softmu_c_hadron_parent_pdgid[i]);
2592  }
2593  }//end of if (m_config->isMC())
2594  ++i;
2595  }//end of loop on softmuons
2596  }//end of if (m_config->useSoftMuons())
2597 
2598  //photons
2599  if (m_config->usePhotons()) {
2600  unsigned int i(0);
2601  m_ph_pt.resize(event.m_photons.size());
2602  m_ph_eta.resize(event.m_photons.size());
2603  m_ph_phi.resize(event.m_photons.size());
2604  m_ph_e.resize(event.m_photons.size());
2605  m_ph_iso.resize(event.m_photons.size());
2606  for (const auto& trigger : m_ph_trigMatched)
2607  m_ph_trigMatched[trigger.first].resize(event.m_photons.size());
2608  for (const auto* const phPtr : event.m_photons) {
2609  m_ph_pt[i] = phPtr->pt();
2610  m_ph_eta[i] = phPtr->eta();
2611  m_ph_phi[i] = phPtr->phi();
2612  m_ph_e[i] = phPtr->e();
2613 
2614  m_ph_iso[i] = 0.;
2615  if (phPtr->isAvailable<float>("ptvarcone20")) m_ph_iso[i] = phPtr->auxdata<float>("ptvarcone20");
2616  for (const auto& trigger : m_ph_trigMatched) {
2617  std::string trig = "TRIGMATCH_" + trigger.first;
2618  m_ph_trigMatched[trigger.first][i] = phPtr->auxdataConst<char>(trig);
2619  }
2620 
2621  ++i;
2622  }
2623  }
2624 
2625 
2626  //taus
2627  if (m_config->useTaus()) {
2628  unsigned int i(0);
2629  m_tau_pt.resize(event.m_tauJets.size());
2630  m_tau_eta.resize(event.m_tauJets.size());
2631  m_tau_phi.resize(event.m_tauJets.size());
2632  m_tau_e.resize(event.m_tauJets.size());
2633  m_tau_charge.resize(event.m_tauJets.size());
2634  for (const auto* const tauPtr : event.m_tauJets) {
2635  m_tau_pt[i] = tauPtr->pt();
2636  m_tau_eta[i] = tauPtr->eta();
2637  m_tau_phi[i] = tauPtr->phi();
2638  m_tau_e[i] = tauPtr->e();
2639  m_tau_charge[i] = tauPtr->charge();
2640  ++i;
2641  }
2642  }
2643 
2644  // tracks
2645  if (m_config->useTracks()) {
2646 
2647  m_track_pt.resize(event.m_tracks.size());
2648  m_track_eta.resize(event.m_tracks.size());
2649  m_track_phi.resize(event.m_tracks.size());
2650  m_track_e.resize(event.m_tracks.size());
2651  m_track_charge.resize(event.m_tracks.size());
2652  m_track_d0.resize(event.m_tracks.size());
2653  m_track_d0_significance.resize(event.m_tracks.size());
2654  m_track_z0.resize(event.m_tracks.size());
2655  m_track_z0_significance.resize(event.m_tracks.size());
2656  m_track_phi0.resize(event.m_tracks.size());
2657  m_track_theta.resize(event.m_tracks.size());
2658  m_track_qOverP.resize(event.m_tracks.size());
2659  m_track_chiSquared.resize(event.m_tracks.size());
2660  m_track_numberDoF.resize(event.m_tracks.size());
2661 
2662  unsigned int i = 0;
2663  for (const auto* const trkPtr : event.m_tracks){
2664 
2665  m_track_pt[i] = trkPtr->pt();
2666  m_track_eta[i] = trkPtr->eta();
2667  m_track_phi[i] = trkPtr->phi();
2668  m_track_e[i] = trkPtr->e();
2669  m_track_charge[i] = trkPtr->charge();
2670  m_track_d0[i] = trkPtr->d0();
2672  m_track_z0[i] = trkPtr->z0();
2674  m_track_phi0[i] = trkPtr->phi0();
2675  m_track_theta[i] = trkPtr->theta();
2676  m_track_qOverP[i] = trkPtr->qOverP();
2677  m_track_chiSquared[i] = trkPtr->chiSquared();
2678  m_track_numberDoF[i] = trkPtr->numberDoF();
2679 
2680  ++i;
2681 
2682  }
2683 
2684  }
2685 
2686 
2687 
2688  //jets
2689  if (m_config->useJets()) {
2690  unsigned int i(0);
2691  m_jet_pt.resize(event.m_jets.size());
2692  m_jet_eta.resize(event.m_jets.size());
2693  m_jet_phi.resize(event.m_jets.size());
2694  m_jet_e.resize(event.m_jets.size());
2695  m_jet_jvt.resize(event.m_jets.size());
2696  m_jet_fjvt.resize(event.m_jets.size());
2697  m_jet_passfjvt.resize(event.m_jets.size());
2698 
2699  // ghost tracks
2700  if (m_config->useJetGhostTrack()) {
2701  m_jet_ghostTrack_pt.clear();
2702  m_jet_ghostTrack_eta.clear();
2703  m_jet_ghostTrack_phi.clear();
2704  m_jet_ghostTrack_e.clear();
2705  m_jet_ghostTrack_d0.clear();
2706  m_jet_ghostTrack_z0.clear();
2707  m_jet_ghostTrack_qOverP.clear();
2708 
2709 
2710  m_jet_ghostTrack_pt.resize(event.m_jets.size());
2711  m_jet_ghostTrack_eta.resize(event.m_jets.size());
2712  m_jet_ghostTrack_phi.resize(event.m_jets.size());
2713  m_jet_ghostTrack_e.resize(event.m_jets.size());
2714  m_jet_ghostTrack_d0.resize(event.m_jets.size());
2715  m_jet_ghostTrack_z0.resize(event.m_jets.size());
2716  m_jet_ghostTrack_qOverP.resize(event.m_jets.size());
2717  }
2718 
2719  for (const auto& algo : m_jet_DLx) {
2720  m_jet_DLx[algo.first].resize(event.m_jets.size());
2721  m_jet_DLx_pb[algo.first].resize(event.m_jets.size());
2722  m_jet_DLx_pc[algo.first].resize(event.m_jets.size());
2723  m_jet_DLx_pu[algo.first].resize(event.m_jets.size());
2724  m_jet_DLx_ptau[algo.first].resize(event.m_jets.size());
2725  }
2726  if (m_config->isMC()) {
2727  m_jet_truthflav.resize(event.m_jets.size());
2728  m_jet_truthPartonLabel.resize(event.m_jets.size());
2729  m_jet_isTrueHS.resize(event.m_jets.size());
2730  m_jet_HadronConeExclExtendedTruthLabelID.resize(event.m_jets.size());
2731  }
2732 
2733  for (const std::string& tagWP : m_config->bTagWP()) { // all WPs are considered, also uncalibrated
2734  if (tagWP.find("Continuous") == std::string::npos)
2735  m_jet_isbtagged[tagWP].resize(event.m_jets.size());
2736  else
2737  m_jet_tagWeightBin[tagWP].resize(event.m_jets.size());
2738  }
2739 
2740  if (m_config->isMC() && m_config->storePerJetBtagSFs()) {
2741  for (const std::string& tagWP : m_config->bTagWP_calib()) { // only calibrated WPs
2742  m_perjet_weight_bTagSF[tagWP].resize(event.m_jets.size());
2743  m_perjet_weight_bTagSF_eigen_B_up[tagWP].resize(event.m_jets.size(), std::vector<float>(m_config->btagging_num_B_eigenvars(tagWP)));
2744  m_perjet_weight_bTagSF_eigen_B_down[tagWP].resize(event.m_jets.size(), std::vector<float>(m_config->btagging_num_B_eigenvars(tagWP)));
2745  m_perjet_weight_bTagSF_eigen_C_up[tagWP].resize(event.m_jets.size(), std::vector<float>(m_config->btagging_num_C_eigenvars(tagWP)));
2746  m_perjet_weight_bTagSF_eigen_C_down[tagWP].resize(event.m_jets.size(), std::vector<float>(m_config->btagging_num_C_eigenvars(tagWP)));
2747  m_perjet_weight_bTagSF_eigen_Light_up[tagWP].resize(event.m_jets.size(), std::vector<float>(m_config->btagging_num_Light_eigenvars(tagWP)));
2748  m_perjet_weight_bTagSF_eigen_Light_down[tagWP].resize(event.m_jets.size(), std::vector<float>(m_config->btagging_num_Light_eigenvars(tagWP)));
2749  for (const std::string& name : m_config->btagging_namedSysts(tagWP)) {
2750  m_perjet_weight_bTagSF_named_up[tagWP][name].resize(event.m_jets.size());
2751  m_perjet_weight_bTagSF_named_down[tagWP][name].resize(event.m_jets.size());
2752  }
2753  }
2754  }
2755  for (const auto* const jetPtr : event.m_jets) {
2756  m_jet_pt[i] = jetPtr->pt();
2757  m_jet_eta[i] = jetPtr->eta();
2758  m_jet_phi[i] = jetPtr->phi();
2759  m_jet_e[i] = jetPtr->e();
2760  if (m_config->isMC()) {
2761  m_jet_truthflav[i] = -99;
2762  if (jetPtr->isAvailable<int>("HadronConeExclTruthLabelID")) {
2763  jetPtr->getAttribute("HadronConeExclTruthLabelID", m_jet_truthflav[i]);
2764  }
2765  m_jet_truthPartonLabel[i] = -99;
2766  if (jetPtr->isAvailable<int>("PartonTruthLabelID")) {
2767  jetPtr->getAttribute("PartonTruthLabelID", m_jet_truthPartonLabel[i]);
2768  }
2769  m_jet_isTrueHS[i] = false;
2770  if (jetPtr->isAvailable<char>("AnalysisTop_isHS")) {
2771  jetPtr->getAttribute("AnalysisTop_isHS", m_jet_isTrueHS[i]);
2772  }
2774  if (jetPtr->isAvailable<int>("HadronConeExclExtendedTruthLabelID")) {
2775  jetPtr->getAttribute("HadronConeExclExtendedTruthLabelID", m_jet_HadronConeExclExtendedTruthLabelID[i]);
2776  }
2777  }
2778 
2779  if (m_config->useJetGhostTrack() && m_jet_pt[i] > m_config->jetPtGhostTracks() && std::abs(m_jet_eta[i])<m_config->jetEtaGhostTracks()) {
2780  static const SG::AuxElement::Accessor< float > accD0("d0");
2781  static const SG::AuxElement::Accessor< float > accZ0("z0");
2782  static const SG::AuxElement::Accessor< float > accQOverP("qOverP");
2783 
2784  std::vector<const xAOD::TrackParticle*> ghostTracks;
2785 
2786  if(jetPtr->getAssociatedObjects<xAOD::TrackParticle>(m_config->decoKeyJetGhostTrack(event.m_hashValue),ghostTracks)) {
2787 
2788  const unsigned int nghostTracks = ghostTracks.size();
2789 
2790  m_jet_ghostTrack_pt[i].clear();
2791  m_jet_ghostTrack_eta[i].clear();
2792  m_jet_ghostTrack_phi[i].clear();
2793  m_jet_ghostTrack_e[i].clear();
2794  m_jet_ghostTrack_d0[i].clear();
2795  m_jet_ghostTrack_z0[i].clear();
2796  m_jet_ghostTrack_qOverP[i].clear();
2797 
2798  m_jet_ghostTrack_pt[i].reserve(nghostTracks);
2799  m_jet_ghostTrack_eta[i].reserve(nghostTracks);
2800  m_jet_ghostTrack_phi[i].reserve(nghostTracks);
2801  m_jet_ghostTrack_e[i].reserve(nghostTracks);
2802  m_jet_ghostTrack_d0[i].reserve(nghostTracks);
2803  m_jet_ghostTrack_z0[i].reserve(nghostTracks);
2804  m_jet_ghostTrack_qOverP[i].reserve(nghostTracks);
2805 
2806 
2807  for (unsigned int iGhost = 0; iGhost < nghostTracks; ++iGhost) {
2808 
2809  top::check(ghostTracks.at(iGhost), "Error in EventSaverFlatNtuple: Found jet with null pointer in ghost track vector.");
2810 
2811  if(ghostTracks.at(iGhost)->auxdataConst< char >("passPreORSelection") != 1)
2812  { continue;}
2813 
2814  m_jet_ghostTrack_pt[i].emplace_back(ghostTracks.at(iGhost)->pt());
2815  m_jet_ghostTrack_eta[i].emplace_back(ghostTracks.at(iGhost)->eta());
2816  m_jet_ghostTrack_phi[i].emplace_back(ghostTracks.at(iGhost)->phi());
2817  m_jet_ghostTrack_e[i].emplace_back(ghostTracks.at(iGhost)->e());
2818  m_jet_ghostTrack_d0[i].emplace_back(accD0(*ghostTracks.at(iGhost)));
2819  m_jet_ghostTrack_z0[i].emplace_back(accZ0(*ghostTracks.at(iGhost)));
2820  m_jet_ghostTrack_qOverP[i].emplace_back(accQOverP(*ghostTracks.at(iGhost)));
2821 
2822  }
2823 
2824  }
2825  }
2826 
2827  for (const std::string& tagWP : m_config->bTagWP()) { // all WPs are considered, also uncalibrated
2828  if (tagWP.find("Continuous") == std::string::npos) {
2829  m_jet_isbtagged[tagWP][i] = false;
2830  if (jetPtr->isAvailable<char>("isbtagged_" + tagWP))
2831  m_jet_isbtagged[tagWP][i] = jetPtr->auxdataConst<char>("isbtagged_" + tagWP);
2832  } else {
2833  m_jet_tagWeightBin[tagWP][i] = -2; // AT default value
2834  if (jetPtr->isAvailable<int>("tagWeightBin_" + tagWP))
2835  m_jet_tagWeightBin[tagWP][i] = jetPtr->auxdataConst<int>("tagWeightBin_" + tagWP);
2836  }
2837  }
2838 
2839  if (m_config->isMC() && m_config->storePerJetBtagSFs()) {
2840  for (const std::string& tagWP : m_config->bTagWP_calib()) {
2841  m_perjet_weight_bTagSF[tagWP][i] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_nom");
2842  for (size_t ivar = 0; ivar < m_config->btagging_num_B_eigenvars(tagWP); ++ivar) {
2843  m_perjet_weight_bTagSF_eigen_B_up[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_B_" + std::to_string(ivar) + "__1up");
2844  m_perjet_weight_bTagSF_eigen_B_down[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_B_" + std::to_string(ivar) + "__1down");
2845  }
2846  for (size_t ivar = 0; ivar < m_config->btagging_num_C_eigenvars(tagWP); ++ivar) {
2847  m_perjet_weight_bTagSF_eigen_C_up[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_C_" + std::to_string(ivar) + "__1up");
2848  m_perjet_weight_bTagSF_eigen_C_down[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_C_" + std::to_string(ivar) + "__1down");
2849  }
2850  for (size_t ivar = 0; ivar < m_config->btagging_num_Light_eigenvars(tagWP); ++ivar) {
2851  m_perjet_weight_bTagSF_eigen_Light_up[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_Light_" + std::to_string(ivar) + "__1up");
2852  m_perjet_weight_bTagSF_eigen_Light_down[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_Light_" + std::to_string(ivar) + "__1down");
2853  }
2854  for (const std::string& name : m_config->btagging_namedSysts(tagWP)) {
2855  m_perjet_weight_bTagSF_named_up[tagWP][name][i] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_" + name + "__1up");
2856  m_perjet_weight_bTagSF_named_down[tagWP][name][i] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_" + name + "__1down");
2857  }
2858  }
2859  }
2860 
2861  // for studies on high performance b-tagging
2862  // the following are in DC14
2863 
2864  m_jet_jvt[i] = -1;
2865  if (jetPtr->isAvailable<float>("NNJvt")) {
2866  m_jet_jvt[i] = jetPtr->auxdataConst<float>("NNJvt");
2867  }
2868 
2869  m_jet_fjvt[i] = -1;
2870  if (jetPtr->isAvailable<float>("fJvt")){
2871  m_jet_fjvt[i] = jetPtr->auxdataConst<float>("fJvt");
2872  }
2873  m_jet_passfjvt[i] = -1;
2874  if (jetPtr->isAvailable<char>("AnalysisTop_fJVTdecision")){
2875  m_jet_passfjvt[i] = jetPtr->getAttribute<char>("AnalysisTop_fJVTdecision");
2876  }
2877 
2878  ++i;
2879  }
2880  // loop over selected DL1 algos and fill all calo jet b-tagging information
2881  // the accessor uses decoration created in TopSystematicObjectMaker/JetObjectCollectionMaker
2882  // calculated by BtaggingSelectionTool
2883  for (const auto& algo : m_jet_DLx) {
2884  std::vector<float>& m_jet_DLx_pick = m_jet_DLx.at(algo.first);
2885  std::vector<float>& m_jet_DLx_pb_pick = m_jet_DLx_pb.at(algo.first);
2886  std::vector<float>& m_jet_DLx_pc_pick = m_jet_DLx_pc.at(algo.first);
2887  std::vector<float>& m_jet_DLx_pu_pick = m_jet_DLx_pu.at(algo.first);
2888  std::vector<float>& m_jet_DLx_ptau_pick = m_jet_DLx_ptau.at(algo.first);
2889  const SG::AuxElement::ConstAccessor<float>& DLx_acc = DLx.at(algo.first);
2890  i = 0;
2891  for (const auto* const jetPtr : event.m_jets) {
2892  m_jet_DLx_pick[i] = DLx_acc(*jetPtr);
2893 
2895  if (btag) {
2896  // exception for GN2v00 tagger
2897  std::string taggerName = algo.first;
2898  if(taggerName == "GN2v00LegacyWP" || taggerName == "GN2v00NewAliasWP"){
2899  taggerName = "GN2v00";
2900  }
2901 
2902  double pu = -999;
2903  double pc = -999;
2904  double pb = -999;
2905  double ptau = -999;
2906 
2907  btag->pu(taggerName, pu);
2908  btag->pc(taggerName, pc);
2909  btag->pb(taggerName, pb);
2910  btag->ptau(taggerName, ptau);
2911 
2912  m_jet_DLx_pb_pick[i] = pb;
2913  m_jet_DLx_pc_pick[i] = pc;
2914  m_jet_DLx_pu_pick[i] = pu;
2915  m_jet_DLx_ptau_pick[i] = ptau;
2916  }
2917  ++i;
2918  }
2919  }
2920  }
2921 
2922  // fail-JVT jets
2923  // btagging info is removed since btagging calibration isn't available for fail-JVT jets
2924  if (m_config->saveFailJVTJets()) {
2925  unsigned int i(0);
2926  m_failJvt_jet_pt.resize(event.m_failJvt_jets.size());
2927  m_failJvt_jet_eta.resize(event.m_failJvt_jets.size());
2928  m_failJvt_jet_phi.resize(event.m_failJvt_jets.size());
2929  m_failJvt_jet_e.resize(event.m_failJvt_jets.size());
2930  m_failJvt_jet_jvt.resize(event.m_failJvt_jets.size());
2931  m_failJvt_jet_fjvt.resize(event.m_failJvt_jets.size());
2932  m_failJvt_jet_passfjvt.resize(event.m_failJvt_jets.size());
2933 
2934  // ghost tracks
2935  // fail-JVT jet could still have some ghost tracks, so these variables are kept
2936  if (m_config->useJetGhostTrack()) {
2937 
2938  m_failJvt_jet_ghostTrack_pt.resize(event.m_failJvt_jets.size());
2939  m_failJvt_jet_ghostTrack_eta.resize(event.m_failJvt_jets.size());
2940  m_failJvt_jet_ghostTrack_phi.resize(event.m_failJvt_jets.size());
2941  m_failJvt_jet_ghostTrack_e.resize(event.m_failJvt_jets.size());
2942  m_failJvt_jet_ghostTrack_d0.resize(event.m_failJvt_jets.size());
2943  m_failJvt_jet_ghostTrack_z0.resize(event.m_failJvt_jets.size());
2944  m_failJvt_jet_ghostTrack_qOverP.resize(event.m_failJvt_jets.size());
2945  }
2946 
2947  if (m_config->isMC()) {
2948  m_failJvt_jet_truthflav.resize(event.m_failJvt_jets.size());
2949  m_failJvt_jet_truthPartonLabel.resize(event.m_failJvt_jets.size());
2950  m_failJvt_jet_isTrueHS.resize(event.m_failJvt_jets.size());
2951  m_failJvt_jet_HadronConeExclExtendedTruthLabelID.resize(event.m_failJvt_jets.size());
2952  }
2953 
2954  for (const auto* const jetPtr : event.m_failJvt_jets) {
2955  m_failJvt_jet_pt[i] = jetPtr->pt();
2956  m_failJvt_jet_eta[i] = jetPtr->eta();
2957  m_failJvt_jet_phi[i] = jetPtr->phi();
2958  m_failJvt_jet_e[i] = jetPtr->e();
2959  if (m_config->isMC()) {
2960  m_failJvt_jet_truthflav[i] = -99;
2961  if (jetPtr->isAvailable<int>("HadronConeExclTruthLabelID")) {
2962  jetPtr->getAttribute("HadronConeExclTruthLabelID", m_failJvt_jet_truthflav[i]);
2963  }
2965  if (jetPtr->isAvailable<int>("PartonTruthLabelID")) {
2966  jetPtr->getAttribute("PartonTruthLabelID", m_failJvt_jet_truthPartonLabel[i]);
2967  }
2968  m_failJvt_jet_isTrueHS[i] = false;
2969  if (jetPtr->isAvailable<char>("AnalysisTop_isHS")) {
2970  jetPtr->getAttribute("AnalysisTop_isHS", m_failJvt_jet_isTrueHS[i]);
2971  }
2973  if (jetPtr->isAvailable<int>("HadronConeExclExtendedTruthLabelID")) {
2974  jetPtr->getAttribute("HadronConeExclExtendedTruthLabelID", m_failJvt_jet_HadronConeExclExtendedTruthLabelID[i]);
2975  }
2976  }
2977 
2978  if (m_config->useJetGhostTrack() && m_failJvt_jet_pt[i] > m_config->jetPtGhostTracks() && std::abs(m_failJvt_jet_eta[i])<m_config->jetEtaGhostTracks()) {
2979  static const SG::AuxElement::Accessor< float > accD0("d0");
2980  static const SG::AuxElement::Accessor< float > accZ0("z0");
2981  static const SG::AuxElement::Accessor< float > accQOverP("qOverP");
2982 
2983  std::vector<const xAOD::TrackParticle*> ghostTracks;
2984  if(jetPtr->getAssociatedObjects<xAOD::TrackParticle>(m_config->decoKeyJetGhostTrack(event.m_hashValue),ghostTracks)) {
2985 
2986  const unsigned int nghostTracks = ghostTracks.size();
2987 
2988  m_failJvt_jet_ghostTrack_pt[i].clear();
2991  m_failJvt_jet_ghostTrack_e[i].clear();
2992  m_failJvt_jet_ghostTrack_d0[i].clear();
2993  m_failJvt_jet_ghostTrack_z0[i].clear();
2995 
2996  m_failJvt_jet_ghostTrack_pt[i].reserve(nghostTracks);
2997  m_failJvt_jet_ghostTrack_eta[i].reserve(nghostTracks);
2998  m_failJvt_jet_ghostTrack_phi[i].reserve(nghostTracks);
2999  m_failJvt_jet_ghostTrack_e[i].reserve(nghostTracks);
3000  m_failJvt_jet_ghostTrack_d0[i].reserve(nghostTracks);
3001  m_failJvt_jet_ghostTrack_z0[i].reserve(nghostTracks);
3002  m_failJvt_jet_ghostTrack_qOverP[i].reserve(nghostTracks);
3003 
3004  for (unsigned int iGhost = 0; iGhost < nghostTracks; ++iGhost) {
3005 
3006  top::check(ghostTracks.at(iGhost), "Error in EventSaverFlatNtuple: Found jet with null pointer in ghost track vector.");
3007 
3008  if(ghostTracks.at(iGhost)->auxdataConst< char >("passPreORSelection") != 1)
3009  {continue;}
3010 
3011  m_failJvt_jet_ghostTrack_pt[i].emplace_back(ghostTracks.at(iGhost)->pt());
3012  m_failJvt_jet_ghostTrack_eta[i].emplace_back(ghostTracks.at(iGhost)->eta());
3013  m_failJvt_jet_ghostTrack_phi[i].emplace_back(ghostTracks.at(iGhost)->phi());
3014  m_failJvt_jet_ghostTrack_e[i].emplace_back(ghostTracks.at(iGhost)->e());
3015  m_failJvt_jet_ghostTrack_d0[i].emplace_back(accD0(*ghostTracks.at(iGhost)));
3016  m_failJvt_jet_ghostTrack_z0[i].emplace_back(accZ0(*ghostTracks.at(iGhost)));
3017  m_failJvt_jet_ghostTrack_qOverP[i].emplace_back(accQOverP(*ghostTracks.at(iGhost)));
3018  }
3019 
3020  }
3021  }
3022 
3023  m_failJvt_jet_jvt[i] = -1;
3024  if (jetPtr->isAvailable<float>("NNJvt")) {
3025  m_failJvt_jet_jvt[i] = jetPtr->auxdataConst<float>("NNJvt");
3026  }
3027 
3028  m_failJvt_jet_fjvt[i] = -1;
3029  if (jetPtr->isAvailable<float>("fJvt")) {
3030  m_failJvt_jet_fjvt[i] = jetPtr->auxdataConst<float>("fJvt");
3031  }
3032  m_failJvt_jet_passfjvt[i] = -1;
3033  if (jetPtr->isAvailable<char>("AnalysisTop_fJVTdecision")) {
3034  m_failJvt_jet_passfjvt[i] = jetPtr->getAttribute<char>("AnalysisTop_fJVTdecision");
3035  }
3036 
3037  ++i;
3038  }
3039  }//ifSaveJVT
3040 
3041  // fail-FJVT jets
3042  // btagging info removed as this is only looking at forward jets
3043  if (m_config->getfJVTWP() != "None" && m_config->saveFailForwardJVTJets()) {
3044  unsigned int i(0);
3045  m_failFJvt_jet_pt.resize(event.m_failFJvt_jets.size());
3046  m_failFJvt_jet_eta.resize(event.m_failFJvt_jets.size());
3047  m_failFJvt_jet_phi.resize(event.m_failFJvt_jets.size());
3048  m_failFJvt_jet_e.resize(event.m_failFJvt_jets.size());
3049  m_failFJvt_jet_jvt.resize(event.m_failFJvt_jets.size());
3050  m_failFJvt_jet_fjvt.resize(event.m_failFJvt_jets.size());
3051  m_failFJvt_jet_passjvt.resize(event.m_failFJvt_jets.size());
3052 
3053  // ghost tracks
3054  // fail-FJVT jet could still have some ghost tracks, so these variables are kept
3055  if (m_config->useJetGhostTrack()) {
3056 
3057  m_failFJvt_jet_ghostTrack_pt.resize(event.m_failFJvt_jets.size());
3058  m_failFJvt_jet_ghostTrack_eta.resize(event.m_failFJvt_jets.size());
3059  m_failFJvt_jet_ghostTrack_phi.resize(event.m_failFJvt_jets.size());
3060  m_failFJvt_jet_ghostTrack_e.resize(event.m_failFJvt_jets.size());
3061  m_failFJvt_jet_ghostTrack_d0.resize(event.m_failFJvt_jets.size());
3062  m_failFJvt_jet_ghostTrack_z0.resize(event.m_failFJvt_jets.size());
3063  m_failFJvt_jet_ghostTrack_qOverP.resize(event.m_failFJvt_jets.size());
3064  }
3065 
3066  if (m_config->isMC()) {
3067  m_failFJvt_jet_truthflav.resize(event.m_failFJvt_jets.size());
3068  m_failFJvt_jet_truthPartonLabel.resize(event.m_failFJvt_jets.size());
3069  m_failFJvt_jet_isTrueHS.resize(event.m_failFJvt_jets.size());
3070  m_failFJvt_jet_HadronConeExclExtendedTruthLabelID.resize(event.m_failFJvt_jets.size());
3071  }
3072 
3073  for (const auto* const jetPtr : event.m_failFJvt_jets) {
3074  m_failFJvt_jet_pt[i] = jetPtr->pt();
3075  m_failFJvt_jet_eta[i] = jetPtr->eta();
3076  m_failFJvt_jet_phi[i] = jetPtr->phi();
3077  m_failFJvt_jet_e[i] = jetPtr->e();
3078  if (m_config->isMC()) {
3079  m_failFJvt_jet_truthflav[i] = -99;
3080  if (jetPtr->isAvailable<int>("HadronConeExclTruthLabelID")) {
3081  jetPtr->getAttribute("HadronConeExclTruthLabelID", m_failFJvt_jet_truthflav[i]);
3082  }
3084  if (jetPtr->isAvailable<int>("PartonTruthLabelID")) {
3085  jetPtr->getAttribute("PartonTruthLabelID", m_failFJvt_jet_truthPartonLabel[i]);
3086  }
3087  m_failFJvt_jet_isTrueHS[i] = false;
3088  if (jetPtr->isAvailable<char>("AnalysisTop_isHS")) {
3089  jetPtr->getAttribute("AnalysisTop_isHS", m_failFJvt_jet_isTrueHS[i]);
3090  }
3092  if (jetPtr->isAvailable<int>("HadronConeExclExtendedTruthLabelID")) {
3093  jetPtr->getAttribute("HadronConeExclExtendedTruthLabelID", m_failFJvt_jet_HadronConeExclExtendedTruthLabelID[i]);
3094  }
3095  }
3096 
3097  if (m_config->useJetGhostTrack() && m_failFJvt_jet_pt[i] > m_config->jetPtGhostTracks() && std::abs(m_failFJvt_jet_eta[i])<m_config->jetEtaGhostTracks()) {
3098  static const SG::AuxElement::Accessor< float > accD0("d0");
3099  static const SG::AuxElement::Accessor< float > accZ0("z0");
3100  static const SG::AuxElement::Accessor< float > accQOverP("qOverP");
3101 
3102  std::vector<const xAOD::TrackParticle*> ghostTracks;
3103  if(jetPtr->getAssociatedObjects<xAOD::TrackParticle>(m_config->decoKeyJetGhostTrack(event.m_hashValue),ghostTracks)) {
3104 
3105  const unsigned int nghostTracks = ghostTracks.size();
3106 
3110  m_failFJvt_jet_ghostTrack_e[i].clear();
3114 
3115  m_failFJvt_jet_ghostTrack_pt[i].reserve(nghostTracks);
3116  m_failFJvt_jet_ghostTrack_eta[i].reserve(nghostTracks);
3117  m_failFJvt_jet_ghostTrack_phi[i].reserve(nghostTracks);
3118  m_failFJvt_jet_ghostTrack_e[i].reserve(nghostTracks);
3119  m_failFJvt_jet_ghostTrack_d0[i].reserve(nghostTracks);
3120  m_failFJvt_jet_ghostTrack_z0[i].reserve(nghostTracks);
3121  m_failFJvt_jet_ghostTrack_qOverP[i].reserve(nghostTracks);
3122 
3123 
3124  for (unsigned int iGhost = 0; iGhost < nghostTracks; ++iGhost) {
3125  top::check(ghostTracks.at(iGhost), "Error in EventSaverFlatNtuple: Found jet with null pointer in ghost track vector.");
3126 
3127  if(ghostTracks.at(iGhost)->auxdataConst< char >("passPreORSelection") != 1)
3128  { continue;}
3129 
3130 
3131  m_failFJvt_jet_ghostTrack_pt[i].emplace_back(ghostTracks.at(iGhost)->pt());
3132  m_failFJvt_jet_ghostTrack_eta[i].emplace_back(ghostTracks.at(iGhost)->eta());
3133  m_failFJvt_jet_ghostTrack_phi[i].emplace_back(ghostTracks.at(iGhost)->phi());
3134  m_failFJvt_jet_ghostTrack_e[i].emplace_back(ghostTracks.at(iGhost)->e());
3135  m_failFJvt_jet_ghostTrack_d0[i].emplace_back(accD0(*ghostTracks.at(iGhost)));
3136  m_failFJvt_jet_ghostTrack_z0[i].emplace_back(accZ0(*ghostTracks.at(iGhost)));
3137  m_failFJvt_jet_ghostTrack_qOverP[i].emplace_back(accQOverP(*ghostTracks.at(iGhost)));
3138  }
3139 
3140 
3141  }
3142  }
3143 
3144  m_failFJvt_jet_jvt[i] = -1;
3145  if (jetPtr->isAvailable<float>("NNJvt")) {
3146  m_failFJvt_jet_jvt[i] = jetPtr->auxdataConst<float>("NNJvt");
3147  }
3148  m_failFJvt_jet_passjvt[i] = -1;
3149  if (jetPtr->isAvailable<char>("NNJvtPass")) {
3150  m_failFJvt_jet_passjvt[i] = jetPtr->getAttribute<char>("NNJvtPass");
3151  }
3152  m_failFJvt_jet_fjvt[i] = -1;
3153  if (jetPtr->isAvailable<float>("fJvt")) {
3154  m_failFJvt_jet_fjvt[i] = jetPtr->auxdataConst<float>("fJvt");
3155  }
3156 
3157  ++i;
3158  }
3159  }//ifSaveFJVT
3160 
3161 
3162  //large-R jets
3163  if (m_config->useLargeRJets()) {
3164  unsigned int i(0);
3165  const unsigned int nLargeRJets = event.m_largeJets.size();
3166  m_ljet_pt.resize(nLargeRJets);
3167  m_ljet_eta.resize(nLargeRJets);
3168  m_ljet_phi.resize(nLargeRJets);
3169  m_ljet_e.resize(nLargeRJets);
3170  m_ljet_m.resize(nLargeRJets);
3171 
3172  for (const auto& it : m_config->largeRJetSubstructureVariables()) {
3173  m_ljet_substructure[it.first].resize(nLargeRJets);
3174  }
3175 
3176  for (const std::string& taggerName : m_boostedJetTaggersNames) {
3177  m_ljet_isTagged[taggerName].resize(nLargeRJets);
3178  m_ljet_taggingPassedRangeCheck[taggerName].resize(nLargeRJets);
3179  }
3180  if (m_config->isMC()) {
3181  m_ljet_truthLabel.resize(nLargeRJets);
3182  for (const std::string& taggerName : m_boostedJetTaggersNamesCalibrated) {
3183  m_ljet_tagSF[taggerName].resize(nLargeRJets);
3184  if (event.m_hashValue == m_config->nominalHashValue()) {
3185  m_ljet_tagSFSysVars[taggerName].resize(nLargeRJets);
3186  }
3187  }
3188  } // end isMC()
3189 
3190  for (const auto* const jetPtr : event.m_largeJets) {
3191  m_ljet_pt[i] = jetPtr->pt();
3192  m_ljet_eta[i] = jetPtr->eta();
3193  m_ljet_phi[i] = jetPtr->phi();
3194  m_ljet_e[i] = jetPtr->e();
3195  m_ljet_m[i] = jetPtr->m();
3196 
3197  for (const auto& it : m_config->largeRJetSubstructureVariables()) {
3198  m_ljet_substructure[it.first][i] = jetPtr->isAvailable<float>(it.second) ? jetPtr->auxdata<float>(it.second) : -999;
3199  }
3200 
3201  for (const std::string& taggerName : m_boostedJetTaggersNames) {
3202  m_ljet_isTagged[taggerName][i] = jetPtr->getAttribute<bool>(taggerName + "_Tagged");
3203  m_ljet_taggingPassedRangeCheck[taggerName][i] = jetPtr->auxdata<char>(taggerName + "_passedRangeCheck");
3204  }
3205 
3206  if (m_config->isMC()) {
3207  m_ljet_truthLabel[i] = jetPtr->auxdata<int>("R10TruthLabel_R22v1");
3208  for (const std::pair<const std::string, std::string>& tagSF : m_config->boostedTaggerSFnames()) {
3209  const std::string& taggerName = tagSF.first;
3210  const std::string& sfNameNominal = tagSF.second;
3211 
3212  m_ljet_tagSF[taggerName][i] = jetPtr->auxdata<float>(sfNameNominal);
3213 
3214  if (event.m_hashValue == m_config->nominalHashValue()) {
3215  const std::vector<std::string>& sysNames = m_config->boostedTaggersSFSysNames().at(taggerName);
3216  m_ljet_tagSFSysVars[taggerName][i].resize(sysNames.size());
3217  for(size_t iname = 0; iname<sysNames.size();iname++) {
3218  m_ljet_tagSFSysVars[taggerName][i][iname] = jetPtr->auxdata<float>(sysNames[iname]);
3219  } // end loop over SF variations in nominal TTree
3220  } // end if nominal TTree
3221  } // end loop over taggers
3222  } // end isMC
3223  ++i;
3224  }
3225  }
3226 
3227  //track jets
3228  if (m_config->useTrackJets()) {
3229  unsigned int i(0);
3230  m_tjet_pt.resize(event.m_trackJets.size());
3231  m_tjet_eta.resize(event.m_trackJets.size());
3232  m_tjet_phi.resize(event.m_trackJets.size());
3233  m_tjet_e.resize(event.m_trackJets.size());
3234  for (const auto& algo : m_tjet_DLx) {
3235  m_tjet_DLx[algo.first].resize(event.m_trackJets.size());
3236  m_tjet_DLx_pb[algo.first].resize(event.m_trackJets.size());
3237  m_tjet_DLx_pc[algo.first].resize(event.m_trackJets.size());
3238  m_tjet_DLx_pu[algo.first].resize(event.m_trackJets.size());
3239  }
3240 
3241  for (const std::string& tagWP : m_config->bTagWP_trkJet()) { // all WPs are considered, also uncalibrated
3242  if (tagWP.find("Continuous") == std::string::npos)
3243  m_tjet_isbtagged[tagWP].resize(event.m_trackJets.size());
3244  else
3245  m_tjet_tagWeightBin[tagWP].resize(event.m_trackJets.size());
3246  }
3247 
3248  if (m_config->isMC() && m_config->storePerJetBtagSFs()) {
3249  for (const std::string& tagWP : m_config->bTagWP_calib_trkJet()) { // only calibrated WPs
3250  m_perjet_weight_trackjet_bTagSF[tagWP].resize(event.m_trackJets.size());
3251  m_perjet_weight_trackjet_bTagSF_eigen_B_up[tagWP].resize(event.m_trackJets.size(), std::vector<float>(m_config->trkjet_btagging_num_B_eigenvars(tagWP)));
3252  m_perjet_weight_trackjet_bTagSF_eigen_B_down[tagWP].resize(event.m_trackJets.size(), std::vector<float>(m_config->trkjet_btagging_num_B_eigenvars(tagWP)));
3253  m_perjet_weight_trackjet_bTagSF_eigen_C_up[tagWP].resize(event.m_trackJets.size(), std::vector<float>(m_config->trkjet_btagging_num_C_eigenvars(tagWP)));
3254  m_perjet_weight_trackjet_bTagSF_eigen_C_down[tagWP].resize(event.m_trackJets.size(), std::vector<float>(m_config->trkjet_btagging_num_C_eigenvars(tagWP)));
3255  m_perjet_weight_trackjet_bTagSF_eigen_Light_up[tagWP].resize(event.m_trackJets.size(), std::vector<float>(m_config->trkjet_btagging_num_Light_eigenvars(tagWP)));
3256  m_perjet_weight_trackjet_bTagSF_eigen_Light_down[tagWP].resize(event.m_trackJets.size(), std::vector<float>(m_config->trkjet_btagging_num_Light_eigenvars(tagWP)));
3257  for (const std::string& name : m_config->trkjet_btagging_namedSysts(tagWP)) {
3258  m_perjet_weight_trackjet_bTagSF_named_up[tagWP][name].resize(event.m_trackJets.size());
3259  m_perjet_weight_trackjet_bTagSF_named_down[tagWP][name].resize(event.m_trackJets.size());
3260  }
3261  }
3262  }
3263  for (const auto* const jetPtr : event.m_trackJets) {
3264  m_tjet_pt[i] = jetPtr->pt();
3265  m_tjet_eta[i] = jetPtr->eta();
3266  m_tjet_phi[i] = jetPtr->phi();
3267  m_tjet_e[i] = jetPtr->e();
3268 
3269  for (const std::string& tagWP : m_config->bTagWP_trkJet()) { // all WPs are considered, also uncalibrated
3270  if (tagWP.find("Continuous") == std::string::npos) {
3271  m_tjet_isbtagged[tagWP][i] = false;
3272  if (jetPtr->isAvailable<char>("isbtagged_" + tagWP))
3273  m_tjet_isbtagged[tagWP][i] = jetPtr->auxdataConst<char>("isbtagged_" + tagWP);
3274  } else {
3275  m_tjet_tagWeightBin[tagWP][i] = -2; // AT default value
3276  if (jetPtr->isAvailable<int>("tagWeightBin_" + tagWP))
3277  m_tjet_tagWeightBin[tagWP][i] = jetPtr->auxdataConst<int>("tagWeightBin_" + tagWP);
3278  }
3279  }
3280 
3281  if (m_config->isMC() && m_config->storePerJetBtagSFs()) {
3282  for (const std::string& tagWP : m_config->bTagWP_calib_trkJet()) {
3283  m_perjet_weight_trackjet_bTagSF[tagWP][i] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_nom");
3284  for (size_t ivar = 0; ivar < m_config->trkjet_btagging_num_B_eigenvars(tagWP); ++ivar) {
3285  m_perjet_weight_trackjet_bTagSF_eigen_B_up[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_B_" + std::to_string(ivar) + "__1up");
3286  m_perjet_weight_trackjet_bTagSF_eigen_B_down[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_B_" + std::to_string(ivar) + "__1down");
3287  }
3288  for (size_t ivar = 0; ivar < m_config->trkjet_btagging_num_C_eigenvars(tagWP); ++ivar) {
3289  m_perjet_weight_trackjet_bTagSF_eigen_C_up[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_C_" + std::to_string(ivar) + "__1up");
3290  m_perjet_weight_trackjet_bTagSF_eigen_C_down[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_C_" + std::to_string(ivar) + "__1down");
3291  }
3292  for (size_t ivar = 0; ivar < m_config->trkjet_btagging_num_Light_eigenvars(tagWP); ++ivar) {
3293  m_perjet_weight_trackjet_bTagSF_eigen_Light_up[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_Light_" + std::to_string(ivar) + "__1up");
3294  m_perjet_weight_trackjet_bTagSF_eigen_Light_down[tagWP][i][ivar] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_FT_EFF_Eigen_Light_" + std::to_string(ivar) + "__1down");
3295  }
3296  for (const std::string& name : m_config->trkjet_btagging_namedSysts(tagWP)) {
3297  m_perjet_weight_trackjet_bTagSF_named_up[tagWP][name][i] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_" + name + "__1up");
3298  m_perjet_weight_trackjet_bTagSF_named_down[tagWP][name][i] = jetPtr->auxdataConst<float>("btag_SF_" + tagWP + "_" + name + "__1down");
3299  }
3300  }
3301  }
3302  ++i;
3303  }
3304 
3305  // loop over selected DL1 algos and fill all track jet b-tagging information
3306  // the accessor uses decoration created in TopSystematicObjectMaker/JetObjectCollectionMaker
3307  // calculated by BtaggingSelectionTool
3308  for (const auto& algo : m_tjet_DLx) {
3309  std::vector<float>& m_tjet_DLx_pick = m_tjet_DLx.at(algo.first);
3310  std::vector<float>& m_tjet_DLx_pb_pick = m_tjet_DLx_pb.at(algo.first);
3311  std::vector<float>& m_tjet_DLx_pc_pick = m_tjet_DLx_pc.at(algo.first);
3312  std::vector<float>& m_tjet_DLx_pu_pick = m_tjet_DLx_pu.at(algo.first);
3313  const SG::AuxElement::ConstAccessor<float>& DLx_acc = DLx.at(algo.first);
3314  i = 0;
3315  for (const auto* const jetPtr : event.m_trackJets) {
3316  m_tjet_DLx_pick[i] = DLx_acc(*jetPtr);
3317 
3319  if (btag) {
3320  double pu = -999;
3321  double pc = -999;
3322  double pb = -999;
3323  btag->pu(algo.first, pu);
3324  btag->pc(algo.first, pc);
3325  btag->pb(algo.first, pb);
3326  m_tjet_DLx_pb_pick[i] = pb;
3327  m_tjet_DLx_pc_pick[i] = pc;
3328  m_tjet_DLx_pu_pick[i] = pu;
3329  }
3330  ++i;
3331  }
3332  }
3333  }
3334 
3335  if (m_makeRCJets) {
3336  // re-clustered jet substructure
3337  static const SG::AuxElement::ConstAccessor<float> RCSplit12("Split12");
3338  static const SG::AuxElement::ConstAccessor<float> RCSplit23("Split23");
3339 
3340 
3341 
3342  // re-clustered jet substructure from clusters
3343  static const SG::AuxElement::ConstAccessor<float> Tau21_clstr("Tau21_clstr");
3344  static const SG::AuxElement::ConstAccessor<float> Tau32_clstr("Tau32_clstr");
3345  static const SG::AuxElement::ConstAccessor<float> Tau3_clstr("Tau3_clstr");
3346  static const SG::AuxElement::ConstAccessor<float> Tau2_clstr("Tau2_clstr");
3347  static const SG::AuxElement::ConstAccessor<float> Tau1_clstr("Tau1_clstr");
3348  static const SG::AuxElement::ConstAccessor<float> D2_clstr("D2_clstr");
3349  static const SG::AuxElement::ConstAccessor<float> ECF1_clstr("ECF1_clstr");
3350  static const SG::AuxElement::ConstAccessor<float> ECF2_clstr("ECF2_clstr");
3351  static const SG::AuxElement::ConstAccessor<float> ECF3_clstr("ECF3_clstr");
3352  static const SG::AuxElement::ConstAccessor<float> d12_clstr("d12_clstr");
3353  static const SG::AuxElement::ConstAccessor<float> d23_clstr("d23_clstr");
3354  static const SG::AuxElement::ConstAccessor<float> Qw_clstr("Qw_clstr");
3355  static const SG::AuxElement::ConstAccessor<float> nconstituent_clstr("nconstituent_clstr");
3356 
3357  static const SG::AuxElement::ConstAccessor<float> gECF332_clstr("gECF332_clstr");
3358  static const SG::AuxElement::ConstAccessor<float> gECF461_clstr("gECF461_clstr");
3359  static const SG::AuxElement::ConstAccessor<float> gECF322_clstr("gECF322_clstr");
3360  static const SG::AuxElement::ConstAccessor<float> gECF331_clstr("gECF331_clstr");
3361  static const SG::AuxElement::ConstAccessor<float> gECF422_clstr("gECF422_clstr");
3362  static const SG::AuxElement::ConstAccessor<float> gECF441_clstr("gECF441_clstr");
3363  static const SG::AuxElement::ConstAccessor<float> gECF212_clstr("gECF212_clstr");
3364  static const SG::AuxElement::ConstAccessor<float> gECF321_clstr("gECF321_clstr");
3365  static const SG::AuxElement::ConstAccessor<float> gECF311_clstr("gECF311_clstr");
3366  static const SG::AuxElement::ConstAccessor<float> L1_clstr("L1_clstr");
3367  static const SG::AuxElement::ConstAccessor<float> L2_clstr("L2_clstr");
3368  static const SG::AuxElement::ConstAccessor<float> L3_clstr("L3_clstr");
3369  static const SG::AuxElement::ConstAccessor<float> L4_clstr("L4_clstr");
3370  static const SG::AuxElement::ConstAccessor<float> L5_clstr("L5_clstr");
3371  // store also the jet that is rebuilt to calculate the JSS
3372  static const SG::AuxElement::ConstAccessor<float> RRCJet_pt("RRCJet_pt");
3373  static const SG::AuxElement::ConstAccessor<float> RRCJet_eta("RRCJet_eta");
3374  static const SG::AuxElement::ConstAccessor<float> RRCJet_phi("RRCJet_phi");
3375  static const SG::AuxElement::ConstAccessor<float> RRCJet_e("RRCJet_e");
3376 
3377  // Initialize the vectors to be saved as branches
3378  unsigned int sizeOfRCjets(event.m_RCJets.size());
3379 
3380  m_rcjet_pt.clear();
3381  m_rcjet_eta.clear();
3382  m_rcjet_phi.clear();
3383  m_rcjet_e.clear();
3384  m_rcjet_d12.clear();
3385  m_rcjet_d23.clear();
3386  m_rcjetsub_pt.clear();
3387  m_rcjetsub_eta.clear();
3388  m_rcjetsub_phi.clear();
3389  m_rcjetsub_e.clear();
3390  m_rrcjet_pt.clear();
3391  m_rrcjet_eta.clear();
3392  m_rrcjet_phi.clear();
3393  m_rrcjet_e.clear();
3394 
3395 
3396  m_rcjet_tau32_clstr.clear();
3397  m_rcjet_tau21_clstr.clear();
3398  m_rcjet_tau3_clstr.clear();
3399  m_rcjet_tau2_clstr.clear();
3400  m_rcjet_tau1_clstr.clear();
3401 
3402  m_rcjet_D2_clstr.clear();
3403  m_rcjet_ECF1_clstr.clear();
3404  m_rcjet_ECF2_clstr.clear();
3405  m_rcjet_ECF3_clstr.clear();
3406 
3407  m_rcjet_d12_clstr.clear();
3408  m_rcjet_d23_clstr.clear();
3409  m_rcjet_Qw_clstr.clear();
3411  m_rcjet_gECF332_clstr.clear();
3412  m_rcjet_gECF461_clstr.clear();
3413  m_rcjet_gECF322_clstr.clear();
3414  m_rcjet_gECF331_clstr.clear();
3415  m_rcjet_gECF422_clstr.clear();
3416  m_rcjet_gECF441_clstr.clear();
3417  m_rcjet_gECF212_clstr.clear();
3418  m_rcjet_gECF321_clstr.clear();
3419  m_rcjet_gECF311_clstr.clear();
3420  m_rcjet_L1_clstr.clear();
3421  m_rcjet_L2_clstr.clear();
3422  m_rcjet_L3_clstr.clear();
3423  m_rcjet_L4_clstr.clear();
3424  m_rcjet_L5_clstr.clear();
3425 
3426  m_rcjet_pt.resize(sizeOfRCjets, -999.);
3427  m_rcjet_eta.resize(sizeOfRCjets, -999.);
3428  m_rcjet_phi.resize(sizeOfRCjets, -999.);
3429  m_rcjet_e.resize(sizeOfRCjets, -999.);
3430  m_rcjet_d12.resize(sizeOfRCjets, -999.);
3431  m_rcjet_d23.resize(sizeOfRCjets, -999.);
3432  m_rcjetsub_pt.resize(sizeOfRCjets, std::vector<float>());
3433  m_rcjetsub_eta.resize(sizeOfRCjets, std::vector<float>());
3434  m_rcjetsub_phi.resize(sizeOfRCjets, std::vector<float>());
3435  m_rcjetsub_e.resize(sizeOfRCjets, std::vector<float>());
3436 
3438  m_rrcjet_pt.resize(sizeOfRCjets, -999.);
3439  m_rrcjet_eta.resize(sizeOfRCjets, -999.);
3440  m_rrcjet_phi.resize(sizeOfRCjets, -999.);
3441  m_rrcjet_e.resize(sizeOfRCjets, -999.);
3442  }
3443  if (m_useRCJSS) {
3444  m_rcjet_tau32_clstr.resize(sizeOfRCjets, -999.);
3445  m_rcjet_tau21_clstr.resize(sizeOfRCjets, -999.);
3446  m_rcjet_tau1_clstr.resize(sizeOfRCjets, -999.);
3447  m_rcjet_tau2_clstr.resize(sizeOfRCjets, -999.);
3448  m_rcjet_tau3_clstr.resize(sizeOfRCjets, -999.);
3449 
3450  m_rcjet_d12_clstr.resize(sizeOfRCjets, -999.);
3451  m_rcjet_d23_clstr.resize(sizeOfRCjets, -999.);
3452  m_rcjet_Qw_clstr.resize(sizeOfRCjets, -999.);
3453  m_rcjet_nconstituent_clstr.resize(sizeOfRCjets, -999.);
3454 
3455  m_rcjet_D2_clstr.resize(sizeOfRCjets, -999.);
3456  m_rcjet_ECF1_clstr.resize(sizeOfRCjets, -999.);
3457  m_rcjet_ECF2_clstr.resize(sizeOfRCjets, -999.);
3458  m_rcjet_ECF3_clstr.resize(sizeOfRCjets, -999.);
3459  }
3460  if (m_useRCAdditionalJSS) {
3461 
3462  m_rcjet_gECF332_clstr.resize(sizeOfRCjets, -999.);
3463  m_rcjet_gECF461_clstr.resize(sizeOfRCjets, -999.);
3464  m_rcjet_gECF322_clstr.resize(sizeOfRCjets, -999.);
3465  m_rcjet_gECF331_clstr.resize(sizeOfRCjets, -999.);
3466  m_rcjet_gECF422_clstr.resize(sizeOfRCjets, -999.);
3467  m_rcjet_gECF441_clstr.resize(sizeOfRCjets, -999.);
3468  m_rcjet_gECF212_clstr.resize(sizeOfRCjets, -999.);
3469  m_rcjet_gECF321_clstr.resize(sizeOfRCjets, -999.);
3470  m_rcjet_gECF311_clstr.resize(sizeOfRCjets, -999.);
3471 
3472  m_rcjet_L1_clstr.resize(sizeOfRCjets, -999.);
3473  m_rcjet_L2_clstr.resize(sizeOfRCjets, -999.);
3474  m_rcjet_L3_clstr.resize(sizeOfRCjets, -999.);
3475  m_rcjet_L4_clstr.resize(sizeOfRCjets, -999.);
3476  m_rcjet_L5_clstr.resize(sizeOfRCjets, -999.);
3477  }
3478  unsigned int i = 0;
3479  for (auto jet_itr = event.m_RCJets.begin(); jet_itr != event.m_RCJets.end(); ++jet_itr) {
3480  const xAOD::Jet* rc_jet = *jet_itr;
3481 
3482 
3483  m_rcjet_pt[i] = rc_jet->pt();
3484  m_rcjet_eta[i] = rc_jet->eta();
3485  m_rcjet_phi[i] = rc_jet->phi();
3486  m_rcjet_e[i] = rc_jet->e();
3487 
3488  m_rcjet_d12[i] = (RCSplit12.isAvailable(*rc_jet)) ? RCSplit12(*rc_jet) : -999.;
3489  m_rcjet_d23[i] = (RCSplit23.isAvailable(*rc_jet)) ? RCSplit23(*rc_jet) : -999.;
3490 
3492  m_rrcjet_pt[i] = (RRCJet_pt.isAvailable(*rc_jet)) ? RRCJet_pt(*rc_jet) : -999.;
3493  m_rrcjet_eta[i] = (RRCJet_eta.isAvailable(*rc_jet)) ? RRCJet_eta(*rc_jet) : -999.;
3494  m_rrcjet_phi[i] = (RRCJet_phi.isAvailable(*rc_jet)) ? RRCJet_phi(*rc_jet) : -999.;
3495  m_rrcjet_e[i] = (RRCJet_e.isAvailable(*rc_jet)) ? RRCJet_e(*rc_jet) : -999.;
3496  }
3497  if (m_useRCJSS) {
3498  m_rcjet_tau32_clstr[i] = (Tau32_clstr.isAvailable(*rc_jet)) ? Tau32_clstr(*rc_jet) : -999.;
3499  m_rcjet_tau21_clstr[i] = (Tau21_clstr.isAvailable(*rc_jet)) ? Tau21_clstr(*rc_jet) : -999.;
3500  m_rcjet_tau3_clstr[i] = (Tau3_clstr.isAvailable(*rc_jet)) ? Tau3_clstr(*rc_jet) : -999.;
3501  m_rcjet_tau2_clstr[i] = (Tau2_clstr.isAvailable(*rc_jet)) ? Tau2_clstr(*rc_jet) : -999.;
3502  m_rcjet_tau1_clstr[i] = (Tau1_clstr.isAvailable(*rc_jet)) ? Tau1_clstr(*rc_jet) : -999.;
3503 
3504  m_rcjet_d12_clstr[i] = (d12_clstr.isAvailable(*rc_jet)) ? d12_clstr(*rc_jet) : -999.;
3505  m_rcjet_d23_clstr[i] = (d23_clstr.isAvailable(*rc_jet)) ? d23_clstr(*rc_jet) : -999.;
3506  m_rcjet_Qw_clstr[i] = (Qw_clstr.isAvailable(*rc_jet)) ? Qw_clstr(*rc_jet) : -999.;
3507  m_rcjet_nconstituent_clstr[i] = (nconstituent_clstr.isAvailable(*rc_jet)) ? nconstituent_clstr(*rc_jet) : -999.;
3508 
3509  m_rcjet_D2_clstr[i] = (D2_clstr.isAvailable(*rc_jet)) ? D2_clstr(*rc_jet) : -999.;
3510  m_rcjet_ECF1_clstr[i] = (ECF1_clstr.isAvailable(*rc_jet)) ? ECF1_clstr(*rc_jet) : -999.;
3511  m_rcjet_ECF2_clstr[i] = (ECF2_clstr.isAvailable(*rc_jet)) ? ECF2_clstr(*rc_jet) : -999.;
3512  m_rcjet_ECF3_clstr[i] = (ECF3_clstr.isAvailable(*rc_jet)) ? ECF3_clstr(*rc_jet) : -999.;
3513 
3514  }
3515  if (m_useRCAdditionalJSS) {
3516 
3517  m_rcjet_gECF332_clstr[i] = (gECF332_clstr.isAvailable(*rc_jet)) ? gECF332_clstr(*rc_jet) : -999.;
3518  m_rcjet_gECF461_clstr[i] = (gECF461_clstr.isAvailable(*rc_jet)) ? gECF461_clstr(*rc_jet) : -999.;
3519  m_rcjet_gECF322_clstr[i] = (gECF322_clstr.isAvailable(*rc_jet)) ? gECF322_clstr(*rc_jet) : -999.;
3520  m_rcjet_gECF331_clstr[i] = (gECF331_clstr.isAvailable(*rc_jet)) ? gECF331_clstr(*rc_jet) : -999.;
3521  m_rcjet_gECF422_clstr[i] = (gECF422_clstr.isAvailable(*rc_jet)) ? gECF422_clstr(*rc_jet) : -999.;
3522  m_rcjet_gECF441_clstr[i] = (gECF441_clstr.isAvailable(*rc_jet)) ? gECF441_clstr(*rc_jet) : -999.;
3523  m_rcjet_gECF212_clstr[i] = (gECF212_clstr.isAvailable(*rc_jet)) ? gECF212_clstr(*rc_jet) : -999.;
3524  m_rcjet_gECF321_clstr[i] = (gECF321_clstr.isAvailable(*rc_jet)) ? gECF321_clstr(*rc_jet) : -999.;
3525  m_rcjet_gECF311_clstr[i] = (gECF311_clstr.isAvailable(*rc_jet)) ? gECF311_clstr(*rc_jet) : -999.;
3526 
3527  m_rcjet_L1_clstr[i] = (L1_clstr.isAvailable(*rc_jet)) ? L1_clstr(*rc_jet) : -999.;
3528  m_rcjet_L2_clstr[i] = (L2_clstr.isAvailable(*rc_jet)) ? L2_clstr(*rc_jet) : -999.;
3529  m_rcjet_L3_clstr[i] = (L3_clstr.isAvailable(*rc_jet)) ? L3_clstr(*rc_jet) : -999.;
3530  m_rcjet_L4_clstr[i] = (L4_clstr.isAvailable(*rc_jet)) ? L4_clstr(*rc_jet) : -999.;
3531  m_rcjet_L5_clstr[i] = (L5_clstr.isAvailable(*rc_jet)) ? L5_clstr(*rc_jet) : -999.;
3532  }
3533 
3534  // loop over subjets
3535  m_rcjetsub_pt[i].clear(); // clear the vector size (otherwise it grows out of control!)
3536  m_rcjetsub_eta[i].clear();
3537  m_rcjetsub_phi[i].clear();
3538  m_rcjetsub_e[i].clear();
3539 
3540  const xAOD::Jet* subjet(nullptr);
3541  for (const auto *rc_jet_subjet : rc_jet->getConstituents()) {
3542  subjet = static_cast<const xAOD::Jet*>(rc_jet_subjet->rawConstituent());
3543  m_rcjetsub_pt[i].push_back(subjet->pt());
3544  m_rcjetsub_eta[i].push_back(subjet->eta());
3545  m_rcjetsub_phi[i].push_back(subjet->phi());
3546  m_rcjetsub_e[i].push_back(subjet->e());
3547  } // end for-loop over subjets
3548  ++i;
3549  } // end for-loop over re-clustered jets
3550  } // end if make rcjets
3551  // end re-clustered jets
3552 
3553  /**********************************/
3554  // VarRC jets
3555  if (m_makeVarRCJets) {
3556  std::string VarRC = "vrcjet";
3557  for (auto& rho : m_VarRCJetRho) {
3558  for (auto& mass_scale : m_VarRCJetMassScale) {
3559  std::replace(rho.begin(), rho.end(), '.', '_');
3560  std::string name = rho + mass_scale;
3561 
3562  // re-clustered jet substructure
3563  static const SG::AuxElement::ConstAccessor<float> VarRCSplit12("Split12");
3564  static const SG::AuxElement::ConstAccessor<float> VarRCSplit23("Split23");
3565 
3566  // re-clustered jet substructure from clusters
3567  static const SG::AuxElement::ConstAccessor<float> Tau21_clstr("Tau21_clstr");
3568  static const SG::AuxElement::ConstAccessor<float> Tau32_clstr("Tau32_clstr");
3569  static const SG::AuxElement::ConstAccessor<float> Tau3_clstr("Tau3_clstr");
3570  static const SG::AuxElement::ConstAccessor<float> Tau2_clstr("Tau2_clstr");
3571  static const SG::AuxElement::ConstAccessor<float> Tau1_clstr("Tau1_clstr");
3572  static const SG::AuxElement::ConstAccessor<float> D2_clstr("D2_clstr");
3573  static const SG::AuxElement::ConstAccessor<float> ECF1_clstr("ECF1_clstr");
3574  static const SG::AuxElement::ConstAccessor<float> ECF2_clstr("ECF2_clstr");
3575  static const SG::AuxElement::ConstAccessor<float> ECF3_clstr("ECF3_clstr");
3576  static const SG::AuxElement::ConstAccessor<float> d12_clstr("d12_clstr");
3577  static const SG::AuxElement::ConstAccessor<float> d23_clstr("d23_clstr");
3578  static const SG::AuxElement::ConstAccessor<float> Qw_clstr("Qw_clstr");
3579 
3580  static const SG::AuxElement::ConstAccessor<float> gECF332_clstr("gECF332_clstr");
3581  static const SG::AuxElement::ConstAccessor<float> gECF461_clstr("gECF461_clstr");
3582  static const SG::AuxElement::ConstAccessor<float> gECF322_clstr("gECF322_clstr");
3583  static const SG::AuxElement::ConstAccessor<float> gECF331_clstr("gECF331_clstr");
3584  static const SG::AuxElement::ConstAccessor<float> gECF422_clstr("gECF422_clstr");
3585  static const SG::AuxElement::ConstAccessor<float> gECF441_clstr("gECF441_clstr");
3586  static const SG::AuxElement::ConstAccessor<float> gECF212_clstr("gECF212_clstr");
3587  static const SG::AuxElement::ConstAccessor<float> gECF321_clstr("gECF321_clstr");
3588  static const SG::AuxElement::ConstAccessor<float> gECF311_clstr("gECF311_clstr");
3589  static const SG::AuxElement::ConstAccessor<float> L1_clstr("L1_clstr");
3590  static const SG::AuxElement::ConstAccessor<float> L2_clstr("L2_clstr");
3591  static const SG::AuxElement::ConstAccessor<float> L3_clstr("L3_clstr");
3592  static const SG::AuxElement::ConstAccessor<float> L4_clstr("L4_clstr");
3593  static const SG::AuxElement::ConstAccessor<float> L5_clstr("L5_clstr");
3594  // store also the jet that is rebuilt to calculate the JSS
3595  static const SG::AuxElement::ConstAccessor<float> RRCJet_pt("RRCJet_pt");
3596  static const SG::AuxElement::ConstAccessor<float> RRCJet_eta("RRCJet_eta");
3597  static const SG::AuxElement::ConstAccessor<float> RRCJet_phi("RRCJet_phi");
3598  static const SG::AuxElement::ConstAccessor<float> RRCJet_e("RRCJet_e");
3599 
3600  // Initialize the vectors to be saved as branches
3601 
3602  xAOD::JetContainer* vrc_jets = event.m_VarRCJets[name].get();
3603  unsigned int sizeOfRCjets = vrc_jets->size();
3604  m_VarRCjetBranches[VarRC + "_" + name + "_pt"].resize(sizeOfRCjets, -999.);
3605  m_VarRCjetBranches[VarRC + "_" + name + "_eta"].resize(sizeOfRCjets, -999.);
3606  m_VarRCjetBranches[VarRC + "_" + name + "_phi"].resize(sizeOfRCjets, -999.);
3607  m_VarRCjetBranches[VarRC + "_" + name + "_e"].resize(sizeOfRCjets, -999.);
3608  m_VarRCjetBranches[VarRC + "_" + name + "_d12"].resize(sizeOfRCjets, -999.);
3609  m_VarRCjetBranches[VarRC + "_" + name + "_d23"].resize(sizeOfRCjets, -999.);
3610  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_pt"].resize(sizeOfRCjets, std::vector<float>());
3611  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_eta"].resize(sizeOfRCjets, std::vector<float>());
3612  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_phi"].resize(sizeOfRCjets, std::vector<float>());
3613  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_e"].resize(sizeOfRCjets, std::vector<float>());
3614 
3616  m_VarRCjetBranches["vrrcjet_" + name + "_pt"].resize(sizeOfRCjets, -999.);
3617  m_VarRCjetBranches["vrrcjet_" + name + "_eta"].resize(sizeOfRCjets, -999.);
3618  m_VarRCjetBranches["vrrcjet_" + name + "_phi"].resize(sizeOfRCjets, -999.);
3619  m_VarRCjetBranches["vrrcjet_" + name + "_e"].resize(sizeOfRCjets, -999.);
3620  }
3621  if (m_useVarRCJSS) {
3622  m_VarRCjetBranches[VarRC + "_" + name + "_tau32_clstr"].resize(sizeOfRCjets, -999.);
3623  m_VarRCjetBranches[VarRC + "_" + name + "_tau21_clstr"].resize(sizeOfRCjets, -999.);
3624  m_VarRCjetBranches[VarRC + "_" + name + "_tau1_clstr"].resize(sizeOfRCjets, -999.);
3625  m_VarRCjetBranches[VarRC + "_" + name + "_tau2_clstr"].resize(sizeOfRCjets, -999.);
3626  m_VarRCjetBranches[VarRC + "_" + name + "_tau3_clstr"].resize(sizeOfRCjets, -999.);
3627 
3628  m_VarRCjetBranches[VarRC + "_" + name + "_d12_clstr"].resize(sizeOfRCjets, -999.);
3629  m_VarRCjetBranches[VarRC + "_" + name + "_d23_clstr"].resize(sizeOfRCjets, -999.);
3630  m_VarRCjetBranches[VarRC + "_" + name + "_Qw_clstr"].resize(sizeOfRCjets, -999.);
3631 
3632  m_VarRCjetBranches[VarRC + "_" + name + "_D2_clstr"].resize(sizeOfRCjets, -999.);
3633  m_VarRCjetBranches[VarRC + "_" + name + "_ECF1_clstr"].resize(sizeOfRCjets, -999.);
3634  m_VarRCjetBranches[VarRC + "_" + name + "_ECF2_clstr"].resize(sizeOfRCjets, -999.);
3635  m_VarRCjetBranches[VarRC + "_" + name + "_ECF3_clstr"].resize(sizeOfRCjets, -999.);
3636  }
3638  m_VarRCjetBranches[VarRC + "_" + name + "_gECF332_clstr"].resize(sizeOfRCjets, -999.);
3639  m_VarRCjetBranches[VarRC + "_" + name + "_gECF461_clstr"].resize(sizeOfRCjets, -999.);
3640  m_VarRCjetBranches[VarRC + "_" + name + "_gECF322_clstr"].resize(sizeOfRCjets, -999.);
3641  m_VarRCjetBranches[VarRC + "_" + name + "_gECF331_clstr"].resize(sizeOfRCjets, -999.);
3642  m_VarRCjetBranches[VarRC + "_" + name + "_gECF422_clstr"].resize(sizeOfRCjets, -999.);
3643  m_VarRCjetBranches[VarRC + "_" + name + "_gECF441_clstr"].resize(sizeOfRCjets, -999.);
3644  m_VarRCjetBranches[VarRC + "_" + name + "_gECF212_clstr"].resize(sizeOfRCjets, -999.);
3645  m_VarRCjetBranches[VarRC + "_" + name + "_gECF321_clstr"].resize(sizeOfRCjets, -999.);
3646  m_VarRCjetBranches[VarRC + "_" + name + "_gECF311_clstr"].resize(sizeOfRCjets, -999.);
3647 
3648  m_VarRCjetBranches[VarRC + "_" + name + "_L1_clstr"].resize(sizeOfRCjets, -999.);
3649  m_VarRCjetBranches[VarRC + "_" + name + "_L2_clstr"].resize(sizeOfRCjets, -999.);
3650  m_VarRCjetBranches[VarRC + "_" + name + "_L3_clstr"].resize(sizeOfRCjets, -999.);
3651  m_VarRCjetBranches[VarRC + "_" + name + "_L4_clstr"].resize(sizeOfRCjets, -999.);
3652  m_VarRCjetBranches[VarRC + "_" + name + "_L5_clstr"].resize(sizeOfRCjets, -999.);
3653  }
3654 
3655 
3656  unsigned int i = 0;
3657 
3658  for (auto jet_ptr : *vrc_jets) {
3659  const xAOD::Jet* rc_jet = jet_ptr;
3660 
3661  m_VarRCjetBranches[VarRC + "_" + name + "_pt"][i] = rc_jet->pt();
3662  m_VarRCjetBranches[VarRC + "_" + name + "_eta"][i] = rc_jet->eta();
3663  m_VarRCjetBranches[VarRC + "_" + name + "_phi"][i] = rc_jet->phi();
3664  m_VarRCjetBranches[VarRC + "_" + name + "_e"][i] = rc_jet->e();
3665 
3666  m_VarRCjetBranches[VarRC + "_" + name + "_d12"][i] = (VarRCSplit12.isAvailable(*rc_jet)) ? VarRCSplit12(*rc_jet) : -999.;
3667  m_VarRCjetBranches[VarRC + "_" + name + "_d23"][i] = (VarRCSplit23.isAvailable(*rc_jet)) ? VarRCSplit23(*rc_jet) : -999.;
3668 
3670  m_VarRCjetBranches["vrrcjet_" + name + "_pt"][i] = (RRCJet_pt.isAvailable(*rc_jet)) ? RRCJet_pt(*rc_jet) : -999.;
3671  m_VarRCjetBranches["vrrcjet_" + name + "_eta"][i] = (RRCJet_eta.isAvailable(*rc_jet)) ? RRCJet_eta(*rc_jet) : -999.;
3672  m_VarRCjetBranches["vrrcjet_" + name + "_phi"][i] = (RRCJet_phi.isAvailable(*rc_jet)) ? RRCJet_phi(*rc_jet) : -999.;
3673  m_VarRCjetBranches["vrrcjet_" + name + "_e"][i] = (RRCJet_e.isAvailable(*rc_jet)) ? RRCJet_e(*rc_jet) : -999.;
3674  }
3675  if (m_useVarRCJSS) {
3676  m_VarRCjetBranches[VarRC + "_" + name + "_tau32_clstr"][i] = (Tau32_clstr.isAvailable(*rc_jet)) ? Tau32_clstr(*rc_jet) : -999.;
3677  m_VarRCjetBranches[VarRC + "_" + name + "_tau21_clstr"][i] = (Tau21_clstr.isAvailable(*rc_jet)) ? Tau21_clstr(*rc_jet) : -999.;
3678  m_VarRCjetBranches[VarRC + "_" + name + "_tau3_clstr"][i] = (Tau3_clstr.isAvailable(*rc_jet)) ? Tau3_clstr(*rc_jet) : -999.;
3679  m_VarRCjetBranches[VarRC + "_" + name + "_tau2_clstr"][i] = (Tau2_clstr.isAvailable(*rc_jet)) ? Tau2_clstr(*rc_jet) : -999.;
3680  m_VarRCjetBranches[VarRC + "_" + name + "_tau1_clstr"][i] = (Tau1_clstr.isAvailable(*rc_jet)) ? Tau1_clstr(*rc_jet) : -999.;
3681 
3682  m_VarRCjetBranches[VarRC + "_" + name + "_d12_clstr"][i] = (d12_clstr.isAvailable(*rc_jet)) ? d12_clstr(*rc_jet) : -999.;
3683  m_VarRCjetBranches[VarRC + "_" + name + "_d23_clstr"][i] = (d23_clstr.isAvailable(*rc_jet)) ? d23_clstr(*rc_jet) : -999.;
3684  m_VarRCjetBranches[VarRC + "_" + name + "_Qw_clstr"][i] = (Qw_clstr.isAvailable(*rc_jet)) ? Qw_clstr(*rc_jet) : -999.;
3685 
3686  m_VarRCjetBranches[VarRC + "_" + name + "_D2_clstr"][i] = (D2_clstr.isAvailable(*rc_jet)) ? D2_clstr(*rc_jet) : -999.;
3687  m_VarRCjetBranches[VarRC + "_" + name + "_ECF1_clstr"][i] = (ECF1_clstr.isAvailable(*rc_jet)) ? ECF1_clstr(*rc_jet) : -999.;
3688  m_VarRCjetBranches[VarRC + "_" + name + "_ECF2_clstr"][i] = (ECF2_clstr.isAvailable(*rc_jet)) ? ECF2_clstr(*rc_jet) : -999.;
3689  m_VarRCjetBranches[VarRC + "_" + name + "_ECF3_clstr"][i] = (ECF3_clstr.isAvailable(*rc_jet)) ? ECF3_clstr(*rc_jet) : -999.;
3690  }
3692  m_VarRCjetBranches[VarRC + "_" + name + "_gECF332_clstr"][i] = (gECF332_clstr.isAvailable(*rc_jet)) ? gECF332_clstr(*rc_jet) : -999.;
3693  m_VarRCjetBranches[VarRC + "_" + name + "_gECF461_clstr"][i] = (gECF461_clstr.isAvailable(*rc_jet)) ? gECF461_clstr(*rc_jet) : -999.;
3694  m_VarRCjetBranches[VarRC + "_" + name + "_gECF322_clstr"][i] = (gECF322_clstr.isAvailable(*rc_jet)) ? gECF322_clstr(*rc_jet) : -999.;
3695  m_VarRCjetBranches[VarRC + "_" + name + "_gECF331_clstr"][i] = (gECF331_clstr.isAvailable(*rc_jet)) ? gECF331_clstr(*rc_jet) : -999.;
3696  m_VarRCjetBranches[VarRC + "_" + name + "_gECF422_clstr"][i] = (gECF422_clstr.isAvailable(*rc_jet)) ? gECF422_clstr(*rc_jet) : -999.;
3697  m_VarRCjetBranches[VarRC + "_" + name + "_gECF441_clstr"][i] = (gECF441_clstr.isAvailable(*rc_jet)) ? gECF441_clstr(*rc_jet) : -999.;
3698  m_VarRCjetBranches[VarRC + "_" + name + "_gECF212_clstr"][i] = (gECF212_clstr.isAvailable(*rc_jet)) ? gECF212_clstr(*rc_jet) : -999.;
3699  m_VarRCjetBranches[VarRC + "_" + name + "_gECF321_clstr"][i] = (gECF321_clstr.isAvailable(*rc_jet)) ? gECF321_clstr(*rc_jet) : -999.;
3700  m_VarRCjetBranches[VarRC + "_" + name + "_gECF311_clstr"][i] = (gECF311_clstr.isAvailable(*rc_jet)) ? gECF311_clstr(*rc_jet) : -999.;
3701 
3702  m_VarRCjetBranches[VarRC + "_" + name + "_L1_clstr"][i] = (L1_clstr.isAvailable(*rc_jet)) ? L1_clstr(*rc_jet) : -999.;
3703  m_VarRCjetBranches[VarRC + "_" + name + "_L2_clstr"][i] = (L2_clstr.isAvailable(*rc_jet)) ? L2_clstr(*rc_jet) : -999.;
3704  m_VarRCjetBranches[VarRC + "_" + name + "_L3_clstr"][i] = (L3_clstr.isAvailable(*rc_jet)) ? L3_clstr(*rc_jet) : -999.;
3705  m_VarRCjetBranches[VarRC + "_" + name + "_L4_clstr"][i] = (L4_clstr.isAvailable(*rc_jet)) ? L4_clstr(*rc_jet) : -999.;
3706  m_VarRCjetBranches[VarRC + "_" + name + "_L5_clstr"][i] = (L5_clstr.isAvailable(*rc_jet)) ? L5_clstr(*rc_jet) : -999.;
3707  }
3708 
3709 
3710  // loop over subjets
3711  const xAOD::Jet* subjet(nullptr);
3712  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_pt"][i].clear(); // clear the vector size (otherwise it
3713  // grows out of control!)
3714  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_eta"][i].clear();
3715  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_phi"][i].clear();
3716  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_e"][i].clear();
3717  for (const auto *rc_jet_subjet : rc_jet->getConstituents()) {
3718  subjet = static_cast<const xAOD::Jet*>(rc_jet_subjet->rawConstituent());
3719  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_pt"][i].push_back(subjet->pt());
3720  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_eta"][i].push_back(subjet->eta());
3721  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_phi"][i].push_back(subjet->phi());
3722  m_VarRCjetsubBranches[VarRC + "_" + name + "_sub_e"][i].push_back(subjet->e());
3723  } // end for-loop over subjets
3724  ++i;
3725  } // end for-loop over re-clustered jets
3726  } // end loop over mass parameters
3727  } // end loop over multipliers for mass scale
3728  } // end if make VarRC jets
3729  // end VarRC jets
3730 
3731 
3732  //met
3733  m_met_met = event.m_met->met();
3734  m_met_sumet = event.m_met->sumet();
3735  m_met_phi = event.m_met->phi();
3736  if(m_config->METSignificance()){
3737  if( event.m_met->isAvailable<float>("metSig")){
3738  m_met_sig = event.m_met->auxdata<float>("metSig");
3739  }
3740  if( event.m_met->isAvailable<float>("metSigET")){
3741  m_met_sigET = event.m_met->auxdata<float>("metSigET");
3742  }
3743  if( event.m_met->isAvailable<float>("metSigHT")){
3744  m_met_sigHT = event.m_met->auxdata<float>("metSigHT");
3745  }
3746  if( event.m_met->isAvailable<float>("metSigRho")){
3747  m_met_sigRho = event.m_met->auxdata<float>("metSigRho");
3748  }
3749  if( event.m_met->isAvailable<float>("metSigVarL")){
3750  m_met_sigVarL = event.m_met->auxdata<float>("metSigVarL");
3751  }
3752  if( event.m_met->isAvailable<float>("metSigVarT")){
3753  m_met_sigVarT = event.m_met->auxdata<float>("metSigVarT");
3754  }
3755  }
3756 
3757  if(m_config->writeMETBuiltWithLooseObjects())
3758  {
3759  const xAOD::MissingETContainer* mets(nullptr);
3760  if(event.m_isLoose) top::check(evtStore()->retrieve(mets, m_config->sgKeyMissingEtLoose(event.m_hashValue)+"WithLooseObjects"), "Failed to retrieve MET");
3761  else top::check(evtStore()->retrieve(mets, m_config->sgKeyMissingEt(event.m_hashValue)+"WithLooseObjects"), "Failed to retrieve MET");
3762 
3763  m_met_met_withLooseObjects=(*mets)["FinalTrk"]->met();
3764  m_met_phi_withLooseObjects=(*mets)["FinalTrk"]->phi();
3765  }
3766 
3767  //KLFitter
3768  if (m_config->doKLFitter()) {
3769  unsigned int nPermutations(0), iPerm(0), bestPerm(0);
3770  bool validKLFitter(false);
3771  m_klfitter_selected = 0;
3772  if (event.m_KLFitterResults != nullptr) {
3773  validKLFitter = true;
3774  m_klfitter_selected = 1;
3775  nPermutations = event.m_KLFitterResults->size();
3776  }
3777 
3778  m_klfitter_selection.resize(nPermutations);
3779  m_klfitter_minuitDidNotConverge.resize(nPermutations);
3780  m_klfitter_fitAbortedDueToNaN.resize(nPermutations);
3781  m_klfitter_atLeastOneFitParameterAtItsLimit.resize(nPermutations);
3783 
3785  m_klfitter_bestPermutation.resize(nPermutations);
3786  m_klfitter_logLikelihood.resize(nPermutations);
3787  m_klfitter_eventProbability.resize(nPermutations);
3788  m_klfitter_parameters_size.resize(nPermutations);
3789  m_klfitter_parameters.resize(nPermutations);
3790  m_klfitter_parameterErrors.resize(nPermutations);
3791 
3792  if (m_config->KLFitterLH() == "ttbar" || m_config->KLFitterLH() == "ttZTrilepton" || m_config->KLFitterLH() == "ttH" || m_config->KLFitterLH() == "ttbar_JetAngles" || m_config->KLFitterLH() == "ttbar_Angular" || m_config->KLFitterLH() == "ttbar_BoostedLJets") {
3794  m_klfitter_model_bhad_pt.resize(nPermutations);
3795  m_klfitter_model_bhad_eta.resize(nPermutations);
3796  m_klfitter_model_bhad_phi.resize(nPermutations);
3797  m_klfitter_model_bhad_E.resize(nPermutations);
3798  m_klfitter_model_bhad_jetIndex.resize(nPermutations);
3799 
3800  m_klfitter_model_blep_pt.resize(nPermutations);
3801  m_klfitter_model_blep_eta.resize(nPermutations);
3802  m_klfitter_model_blep_phi.resize(nPermutations);
3803  m_klfitter_model_blep_E.resize(nPermutations);
3804  m_klfitter_model_blep_jetIndex.resize(nPermutations);
3805 
3806  m_klfitter_model_lq1_pt.resize(nPermutations);
3807  m_klfitter_model_lq1_eta.resize(nPermutations);
3808  m_klfitter_model_lq1_phi.resize(nPermutations);
3809  m_klfitter_model_lq1_E.resize(nPermutations);
3810  m_klfitter_model_lq1_jetIndex.resize(nPermutations);
3811 
3812  if (m_config->KLFitterLH() != "ttbar_BoostedLJets") {
3813  m_klfitter_model_lq2_pt.resize(nPermutations);
3814  m_klfitter_model_lq2_eta.resize(nPermutations);
3815  m_klfitter_model_lq2_phi.resize(nPermutations);
3816  m_klfitter_model_lq2_E.resize(nPermutations);
3817  m_klfitter_model_lq2_jetIndex.resize(nPermutations);
3818 
3819  if (m_config->KLFitterLH() == "ttH") {
3820  m_klfitter_model_Higgs_b1_pt.resize(nPermutations);
3821  m_klfitter_model_Higgs_b1_eta.resize(nPermutations);
3822  m_klfitter_model_Higgs_b1_phi.resize(nPermutations);
3823  m_klfitter_model_Higgs_b1_E.resize(nPermutations);
3824  m_klfitter_model_Higgs_b1_jetIndex.resize(nPermutations);
3825 
3826  m_klfitter_model_Higgs_b2_pt.resize(nPermutations);
3827  m_klfitter_model_Higgs_b2_eta.resize(nPermutations);
3828  m_klfitter_model_Higgs_b2_phi.resize(nPermutations);
3829  m_klfitter_model_Higgs_b2_E.resize(nPermutations);
3830  m_klfitter_model_Higgs_b2_jetIndex.resize(nPermutations);
3831  }
3832  }
3833 
3834  m_klfitter_model_lep_pt.resize(nPermutations);
3835  m_klfitter_model_lep_eta.resize(nPermutations);
3836  m_klfitter_model_lep_phi.resize(nPermutations);
3837  m_klfitter_model_lep_E.resize(nPermutations);
3838  m_klfitter_model_lep_index.resize(nPermutations);
3839 
3840  m_klfitter_model_lepZ1_pt.resize(nPermutations);
3841  m_klfitter_model_lepZ1_eta.resize(nPermutations);
3842  m_klfitter_model_lepZ1_phi.resize(nPermutations);
3843  m_klfitter_model_lepZ1_E.resize(nPermutations);
3844  m_klfitter_model_lepZ1_index.resize(nPermutations);
3845 
3846  m_klfitter_model_lepZ2_pt.resize(nPermutations);
3847  m_klfitter_model_lepZ2_eta.resize(nPermutations);
3848  m_klfitter_model_lepZ2_phi.resize(nPermutations);
3849  m_klfitter_model_lepZ2_E.resize(nPermutations);
3850  m_klfitter_model_lepZ2_index.resize(nPermutations);
3851 
3852  m_klfitter_model_nu_pt.resize(nPermutations);
3853  m_klfitter_model_nu_eta.resize(nPermutations);
3854  m_klfitter_model_nu_phi.resize(nPermutations);
3855  m_klfitter_model_nu_E.resize(nPermutations);
3856  } else if (m_config->KLFitterLH() == "ttbar_AllHadronic") {
3857  m_klfitter_model_b_from_top1_pt.resize(nPermutations);
3858  m_klfitter_model_b_from_top1_eta.resize(nPermutations);
3859  m_klfitter_model_b_from_top1_phi.resize(nPermutations);
3860  m_klfitter_model_b_from_top1_E.resize(nPermutations);
3861  m_klfitter_model_b_from_top1_jetIndex.resize(nPermutations);
3862 
3863  m_klfitter_model_b_from_top2_pt.resize(nPermutations);
3864  m_klfitter_model_b_from_top2_eta.resize(nPermutations);
3865  m_klfitter_model_b_from_top2_phi.resize(nPermutations);
3866  m_klfitter_model_b_from_top2_E.resize(nPermutations);
3867  m_klfitter_model_b_from_top2_jetIndex.resize(nPermutations);
3868 
3869  m_klfitter_model_lj1_from_top1_pt.resize(nPermutations);
3870  m_klfitter_model_lj1_from_top1_eta.resize(nPermutations);
3871  m_klfitter_model_lj1_from_top1_phi.resize(nPermutations);
3872  m_klfitter_model_lj1_from_top1_E.resize(nPermutations);
3873  m_klfitter_model_lj1_from_top1_jetIndex.resize(nPermutations);
3874 
3875  m_klfitter_model_lj2_from_top1_pt.resize(nPermutations);
3876  m_klfitter_model_lj2_from_top1_eta.resize(nPermutations);
3877  m_klfitter_model_lj2_from_top1_phi.resize(nPermutations);
3878  m_klfitter_model_lj2_from_top1_E.resize(nPermutations);
3879  m_klfitter_model_lj2_from_top1_jetIndex.resize(nPermutations);
3880 
3881  m_klfitter_model_lj1_from_top2_pt.resize(nPermutations);
3882  m_klfitter_model_lj1_from_top2_eta.resize(nPermutations);
3883  m_klfitter_model_lj1_from_top2_phi.resize(nPermutations);
3884  m_klfitter_model_lj1_from_top2_E.resize(nPermutations);
3885  m_klfitter_model_lj1_from_top2_jetIndex.resize(nPermutations);
3886 
3887  m_klfitter_model_lj2_from_top2_pt.resize(nPermutations);
3888  m_klfitter_model_lj2_from_top2_eta.resize(nPermutations);
3889  m_klfitter_model_lj2_from_top2_phi.resize(nPermutations);
3890  m_klfitter_model_lj2_from_top2_E.resize(nPermutations);
3891  m_klfitter_model_lj2_from_top2_jetIndex.resize(nPermutations);
3892  }
3893 
3894  if (validKLFitter) {
3895  for (const auto* const klPtr : *event.m_KLFitterResults) {
3896  m_klfitter_selection[iPerm] = "unknown";
3897  std::hash<std::string> st_hash;
3898  for (unsigned int s = 0; s < m_config->allSelectionNames()->size(); ++s) {
3899  if (st_hash(m_config->allSelectionNames()->at(s)) == klPtr->selectionCode()) {
3900  m_klfitter_selection[iPerm] = m_config->allSelectionNames()->at(s);
3901  break;
3902  }
3903  }
3904  m_klfitter_minuitDidNotConverge[iPerm] = klPtr->minuitDidNotConverge();
3905  m_klfitter_fitAbortedDueToNaN[iPerm] = klPtr->fitAbortedDueToNaN();
3906  m_klfitter_atLeastOneFitParameterAtItsLimit[iPerm] = klPtr->atLeastOneFitParameterAtItsLimit();
3907  m_klfitter_invalidTransferFunctionAtConvergence[iPerm] = klPtr->invalidTransferFunctionAtConvergence();
3908 
3910  m_klfitter_bestPermutation[iPerm] = klPtr->bestPermutation();
3911  if (klPtr->bestPermutation() == 1) {
3912  bestPerm = iPerm;
3913  }
3914  m_klfitter_logLikelihood[iPerm] = klPtr->logLikelihood();
3915  m_klfitter_eventProbability[iPerm] = klPtr->eventProbability();
3916  m_klfitter_parameters_size[iPerm] = klPtr->parameters().size();
3917  m_klfitter_parameters[iPerm] = klPtr->parameters();
3918  m_klfitter_parameterErrors[iPerm] = klPtr->parameterErrors();
3919 
3921  if (m_config->KLFitterLH() == "ttbar" || m_config->KLFitterLH() == "ttZTrilepton" || m_config->KLFitterLH() == "ttH" || m_config->KLFitterLH() == "ttbar_JetAngles" || m_config->KLFitterLH() == "ttbar_Angular" || m_config->KLFitterLH() == "ttbar_BoostedLJets") {
3922  m_klfitter_model_bhad_pt[iPerm] = klPtr->model_bhad_pt();
3923  m_klfitter_model_bhad_eta[iPerm] = klPtr->model_bhad_eta();
3924  m_klfitter_model_bhad_phi[iPerm] = klPtr->model_bhad_phi();
3925  m_klfitter_model_bhad_E[iPerm] = klPtr->model_bhad_E();
3926  m_klfitter_model_bhad_jetIndex[iPerm] = klPtr->model_bhad_jetIndex();
3927 
3928  m_klfitter_model_blep_pt[iPerm] = klPtr->model_blep_pt();
3929  m_klfitter_model_blep_eta[iPerm] = klPtr->model_blep_eta();
3930  m_klfitter_model_blep_phi[iPerm] = klPtr->model_blep_phi();
3931  m_klfitter_model_blep_E[iPerm] = klPtr->model_blep_E();
3932  m_klfitter_model_blep_jetIndex[iPerm] = klPtr->model_blep_jetIndex();
3933 
3934  m_klfitter_model_lq1_pt[iPerm] = klPtr->model_lq1_pt();
3935  m_klfitter_model_lq1_eta[iPerm] = klPtr->model_lq1_eta();
3936  m_klfitter_model_lq1_phi[iPerm] = klPtr->model_lq1_phi();
3937  m_klfitter_model_lq1_E[iPerm] = klPtr->model_lq1_E();
3938  m_klfitter_model_lq1_jetIndex[iPerm] = klPtr->model_lq1_jetIndex();
3939 
3940  if (m_config->KLFitterLH() != "ttbar_BoostedLJets") {
3941  m_klfitter_model_lq2_pt[iPerm] = klPtr->model_lq2_pt();
3942  m_klfitter_model_lq2_eta[iPerm] = klPtr->model_lq2_eta();
3943  m_klfitter_model_lq2_phi[iPerm] = klPtr->model_lq2_phi();
3944  m_klfitter_model_lq2_E[iPerm] = klPtr->model_lq2_E();
3945  m_klfitter_model_lq2_jetIndex[iPerm] = klPtr->model_lq2_jetIndex();
3946 
3947  if (m_config->KLFitterLH() == "ttH") {
3948  m_klfitter_model_Higgs_b1_pt[iPerm] = klPtr->model_Higgs_b1_pt();
3949  m_klfitter_model_Higgs_b1_eta[iPerm] = klPtr->model_Higgs_b1_eta();
3950  m_klfitter_model_Higgs_b1_phi[iPerm] = klPtr->model_Higgs_b1_phi();
3951  m_klfitter_model_Higgs_b1_E[iPerm] = klPtr->model_Higgs_b1_E();
3952  m_klfitter_model_Higgs_b1_jetIndex[iPerm] = klPtr->model_Higgs_b1_jetIndex();
3953 
3954  m_klfitter_model_Higgs_b2_pt[iPerm] = klPtr->model_Higgs_b2_pt();
3955  m_klfitter_model_Higgs_b2_eta[iPerm] = klPtr->model_Higgs_b2_eta();
3956  m_klfitter_model_Higgs_b2_phi[iPerm] = klPtr->model_Higgs_b2_phi();
3957  m_klfitter_model_Higgs_b2_E[iPerm] = klPtr->model_Higgs_b2_E();
3958  m_klfitter_model_Higgs_b2_jetIndex[iPerm] = klPtr->model_Higgs_b2_jetIndex();
3959  }
3960  }
3961  m_klfitter_model_lep_pt[iPerm] = klPtr->model_lep_pt();
3962  m_klfitter_model_lep_eta[iPerm] = klPtr->model_lep_eta();
3963  m_klfitter_model_lep_phi[iPerm] = klPtr->model_lep_phi();
3964  m_klfitter_model_lep_E[iPerm] = klPtr->model_lep_E();
3965  m_klfitter_model_lep_index[iPerm] = klPtr->model_lep_index();
3966 
3967  m_klfitter_model_lepZ1_pt[iPerm] = klPtr->model_lepZ1_pt();
3968  m_klfitter_model_lepZ1_eta[iPerm] = klPtr->model_lepZ1_eta();
3969  m_klfitter_model_lepZ1_phi[iPerm] = klPtr->model_lepZ1_phi();
3970  m_klfitter_model_lepZ1_E[iPerm] = klPtr->model_lepZ1_E();
3971  m_klfitter_model_lepZ1_index[iPerm] = klPtr->model_lepZ1_index();
3972 
3973  m_klfitter_model_lepZ2_pt[iPerm] = klPtr->model_lepZ2_pt();
3974  m_klfitter_model_lepZ2_eta[iPerm] = klPtr->model_lepZ2_eta();
3975  m_klfitter_model_lepZ2_phi[iPerm] = klPtr->model_lepZ2_phi();
3976  m_klfitter_model_lepZ2_E[iPerm] = klPtr->model_lepZ2_E();
3977  m_klfitter_model_lepZ2_index[iPerm] = klPtr->model_lepZ2_index();
3978 
3979  m_klfitter_model_nu_pt[iPerm] = klPtr->model_nu_pt();
3980  m_klfitter_model_nu_eta[iPerm] = klPtr->model_nu_eta();
3981  m_klfitter_model_nu_phi[iPerm] = klPtr->model_nu_phi();
3982  m_klfitter_model_nu_E[iPerm] = klPtr->model_nu_E();
3983  } else if (m_config->KLFitterLH() == "ttbar_AllHadronic") {
3984  m_klfitter_model_b_from_top1_pt[iPerm] = klPtr->model_b_from_top1_pt();
3985  m_klfitter_model_b_from_top1_eta[iPerm] = klPtr->model_b_from_top1_eta();
3986  m_klfitter_model_b_from_top1_phi[iPerm] = klPtr->model_b_from_top1_phi();
3987  m_klfitter_model_b_from_top1_E[iPerm] = klPtr->model_b_from_top1_E();
3988  m_klfitter_model_b_from_top1_jetIndex[iPerm] = klPtr->model_b_from_top1_jetIndex();
3989 
3990  m_klfitter_model_b_from_top2_pt[iPerm] = klPtr->model_b_from_top2_pt();
3991  m_klfitter_model_b_from_top2_eta[iPerm] = klPtr->model_b_from_top2_eta();
3992  m_klfitter_model_b_from_top2_phi[iPerm] = klPtr->model_b_from_top2_phi();
3993  m_klfitter_model_b_from_top2_E[iPerm] = klPtr->model_b_from_top2_E();
3994  m_klfitter_model_b_from_top2_jetIndex[iPerm] = klPtr->model_b_from_top2_jetIndex();
3995 
3996  m_klfitter_model_lj1_from_top1_pt[iPerm] = klPtr->model_lj1_from_top1_pt();
3997  m_klfitter_model_lj1_from_top1_eta[iPerm] = klPtr->model_lj1_from_top1_eta();
3998  m_klfitter_model_lj1_from_top1_phi[iPerm] = klPtr->model_lj1_from_top1_phi();
3999  m_klfitter_model_lj1_from_top1_E[iPerm] = klPtr->model_lj1_from_top1_E();
4000  m_klfitter_model_lj1_from_top1_jetIndex[iPerm] = klPtr->model_lj1_from_top1_jetIndex();
4001 
4002  m_klfitter_model_lj2_from_top1_pt[iPerm] = klPtr->model_lj2_from_top1_pt();
4003  m_klfitter_model_lj2_from_top1_eta[iPerm] = klPtr->model_lj2_from_top1_eta();
4004  m_klfitter_model_lj2_from_top1_phi[iPerm] = klPtr->model_lj2_from_top1_phi();
4005  m_klfitter_model_lj2_from_top1_E[iPerm] = klPtr->model_lj2_from_top1_E();
4006  m_klfitter_model_lj2_from_top1_jetIndex[iPerm] = klPtr->model_lj2_from_top1_jetIndex();
4007 
4008  m_klfitter_model_lj1_from_top2_pt[iPerm] = klPtr->model_lj1_from_top2_pt();
4009  m_klfitter_model_lj1_from_top2_eta[iPerm] = klPtr->model_lj1_from_top2_eta();
4010  m_klfitter_model_lj1_from_top2_phi[iPerm] = klPtr->model_lj1_from_top2_phi();
4011  m_klfitter_model_lj1_from_top2_E[iPerm] = klPtr->model_lj1_from_top2_E();
4012  m_klfitter_model_lj1_from_top2_jetIndex[iPerm] = klPtr->model_lj1_from_top2_jetIndex();
4013 
4014  m_klfitter_model_lj2_from_top2_pt[iPerm] = klPtr->model_lj2_from_top2_pt();
4015  m_klfitter_model_lj2_from_top2_eta[iPerm] = klPtr->model_lj2_from_top2_eta();
4016  m_klfitter_model_lj2_from_top2_phi[iPerm] = klPtr->model_lj2_from_top2_phi();
4017  m_klfitter_model_lj2_from_top2_E[iPerm] = klPtr->model_lj2_from_top2_E();
4018  m_klfitter_model_lj2_from_top2_jetIndex[iPerm] = klPtr->model_lj2_from_top2_jetIndex();
4019  }
4020 
4021 
4022  ++iPerm;
4023  }
4024 
4025  // now take the best permutation and build the tops and the ttbar system!
4026  if (m_config->KLFitterLH() == "ttbar" || m_config->KLFitterLH() == "ttZTrilepton" || m_config->KLFitterLH() == "ttH" || m_config->KLFitterLH() == "ttbar_JetAngles" || m_config->KLFitterLH() == "ttbar_Angular") {
4027  if (nPermutations != 0) {
4028  TLorentzVector bhad, blep, lq1, lq2, lep, nu, top_had, top_lep, ttbar;
4029 
4030  bhad.SetPtEtaPhiE(m_klfitter_model_bhad_pt[bestPerm], m_klfitter_model_bhad_eta[bestPerm], m_klfitter_model_bhad_phi[bestPerm], m_klfitter_model_bhad_E[bestPerm]);
4031  blep.SetPtEtaPhiE(m_klfitter_model_blep_pt[bestPerm], m_klfitter_model_blep_eta[bestPerm], m_klfitter_model_blep_phi[bestPerm], m_klfitter_model_blep_E[bestPerm]);
4032  lq1.SetPtEtaPhiE(m_klfitter_model_lq1_pt[bestPerm], m_klfitter_model_lq1_eta[bestPerm], m_klfitter_model_lq1_phi[bestPerm], m_klfitter_model_lq1_E[bestPerm]);
4033  lq2.SetPtEtaPhiE(m_klfitter_model_lq2_pt[bestPerm], m_klfitter_model_lq2_eta[bestPerm], m_klfitter_model_lq2_phi[bestPerm], m_klfitter_model_lq2_E[bestPerm]);
4034  lep.SetPtEtaPhiE(m_klfitter_model_lep_pt[bestPerm], m_klfitter_model_lep_eta[bestPerm], m_klfitter_model_lep_phi[bestPerm], m_klfitter_model_lep_E[bestPerm]);
4035  nu.SetPtEtaPhiE(m_klfitter_model_nu_pt[bestPerm], m_klfitter_model_nu_eta[bestPerm], m_klfitter_model_nu_phi[bestPerm], m_klfitter_model_nu_E[bestPerm]);
4036 
4037  top_had = bhad + lq1 + lq2;
4038  top_lep = blep + lep + nu;
4039  ttbar = top_had + top_lep;
4040 
4041  m_klfitter_bestPerm_topLep_pt = top_lep.Pt();
4042  m_klfitter_bestPerm_topLep_eta = top_lep.Eta();
4043  m_klfitter_bestPerm_topLep_phi = top_lep.Phi();
4044  m_klfitter_bestPerm_topLep_E = top_lep.E();
4045  m_klfitter_bestPerm_topLep_m = top_lep.M();
4046 
4047  m_klfitter_bestPerm_topHad_pt = top_had.Pt();
4048  m_klfitter_bestPerm_topHad_eta = top_had.Eta();
4049  m_klfitter_bestPerm_topHad_phi = top_had.Phi();
4050  m_klfitter_bestPerm_topHad_E = top_had.E();
4051  m_klfitter_bestPerm_topHad_m = top_had.M();
4052 
4053  m_klfitter_bestPerm_ttbar_pt = ttbar.Pt();
4054  m_klfitter_bestPerm_ttbar_eta = ttbar.Eta();
4055  m_klfitter_bestPerm_ttbar_phi = ttbar.Phi();
4056  m_klfitter_bestPerm_ttbar_E = ttbar.E();
4057  m_klfitter_bestPerm_ttbar_m = ttbar.M();
4058  }
4059  }
4060  }
4061  }
4062 
4063  if (m_config->doPseudoTop()) {
4064  const xAOD::PseudoTopResultContainer* pseudoTopResultContainer(nullptr);
4065  const xAOD::PseudoTopResult* pseudoTopResult(nullptr);
4066 
4067  if ((!event.m_isLoose && evtStore()->contains<xAOD::PseudoTopResultContainer>(topConfig()->sgKeyPseudoTop(event.m_hashValue))) ||
4068  (event.m_isLoose && evtStore()->contains<xAOD::PseudoTopResultContainer>(topConfig()->sgKeyPseudoTopLoose(event.m_hashValue)))) {
4069  if (!event.m_isLoose) {
4070  top::check(evtStore()->retrieve(pseudoTopResultContainer, topConfig()->sgKeyPseudoTop(event.m_hashValue)), "Failed to retrieve PseudoTop");
4071  } else {
4072  top::check(evtStore()->retrieve(pseudoTopResultContainer, topConfig()->sgKeyPseudoTopLoose(event.m_hashValue)), "Failed to retrieve PseudoTop");
4073  }
4074 
4075  pseudoTopResult = pseudoTopResultContainer->at(0);
4076 
4077  m_PseudoTop_Reco_ttbar_pt = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_ttbar_pt");
4078  m_PseudoTop_Reco_ttbar_eta = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_ttbar_eta");
4079  m_PseudoTop_Reco_ttbar_phi = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_ttbar_phi");
4080  m_PseudoTop_Reco_ttbar_m = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_ttbar_m");
4081 
4082  m_PseudoTop_Reco_top_lep_pt = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_lep_pt");
4083  m_PseudoTop_Reco_top_lep_eta = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_lep_eta");
4084  m_PseudoTop_Reco_top_lep_phi = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_lep_phi");
4085  m_PseudoTop_Reco_top_lep_m = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_lep_m");
4086 
4087  m_PseudoTop_Reco_top_had_pt = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_had_pt");
4088  m_PseudoTop_Reco_top_had_eta = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_had_eta");
4089  m_PseudoTop_Reco_top_had_phi = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_had_phi");
4090  m_PseudoTop_Reco_top_had_m = pseudoTopResult->auxdecor<float>("PseudoTop_Reco_top_had_m");
4091  }
4092  }
4093  }
4094 
4096  //do it!
4097  m_treeManagers[event.m_ttreeIndex]->fill();
4098  }
4099 
4101  this->cleanTruthEvent();
4102  this->calculateTruthEvent();
4103  this->fillTruthEvent();
4104  }
4105 
4107  /* Doing nothing for now, but we should put here the (re-)initialisation to dummy values
4108  * of all variables later calculated in cleanTruthEvent()
4109  * For example all weights set to 1, all vectors cleaned, all kinematic or angular variables set to -99999.
4110  */
4111  }
4112 
4114 
4115  const xAOD::EventInfo* eventInfo(nullptr);
4116 
4117  top::check(evtStore()->retrieve(eventInfo, m_config->sgKeyEventInfo()), "Failed to retrieve EventInfo");
4118 
4119 
4120  if(m_config->isDataOverlay()){
4121  eventInfo->auxdecor<unsigned int>("RandomRunNumber") = eventInfo->runNumber();
4122  eventInfo->auxdecor<unsigned int>("RandomLumiBlockNumber") = eventInfo->lumiBlock();
4123  eventInfo->auxdecor<float>("PileupWeight") = 1.;
4124  }
4125 
4126  m_weight_mc = eventInfo->auxdataConst<float>("AnalysisTop_eventWeight");
4127  m_weight_beamspot = eventInfo->beamSpotWeight();
4128  m_eventNumber = eventInfo->eventNumber();
4129  m_runNumber = eventInfo->runNumber();
4130  m_mcChannelNumber = eventInfo->mcChannelNumber();
4131  m_mu = eventInfo->averageInteractionsPerCrossing();
4133 
4134  if (m_config->doPileupReweighting() && !m_config->isTruthDxAOD()) {
4135  m_weight_pileup = eventInfo->auxdataConst<float>("PileupWeight");
4136  m_randomRunNumber = eventInfo->auxdataConst<unsigned int>("RandomRunNumber");
4137  } else {
4138  m_weight_pileup = NAN;
4139  m_randomRunNumber = 0;
4140  }
4141 
4142  //MC particle
4143  if (m_config->useTruthParticles() && m_config->doTruthBlockInfo()) {
4144  const xAOD::TruthParticleContainer* truth(nullptr);
4145  top::check(evtStore()->retrieve(truth, m_config->sgKeyMCParticle()), "Failed to retrieve TruthParticleContainer");
4146 
4147  if (truth != nullptr) {
4148  unsigned int i(0);
4149  unsigned int truthSize = truth->size();
4150  m_mc_pt.resize(truthSize);
4151  m_mc_eta.resize(truthSize);
4152  m_mc_phi.resize(truthSize);
4153  m_mc_e.resize(truthSize);
4154  m_mc_pdgId.resize(truthSize);
4155  m_mc_charge.resize(truthSize);
4156  m_mc_status.resize(truthSize);
4157  m_mc_barcode.resize(truthSize);
4158 
4159  for (const auto* const mcPtr : *truth) {
4160  // Fix for
4161  // Warning in <TVector3::PseudoRapidity>: transvers momentum = 0! return +/- 10e10
4162 
4163  float eta(-999.9);
4164 
4165  if (!(mcPtr->p4().CosTheta() * mcPtr->p4().CosTheta() >= 1 && mcPtr->p4().Pz() != 0)) {
4166  eta = mcPtr->eta();
4167  }
4168 
4169  m_mc_pt[i] = mcPtr->pt();
4170  m_mc_eta[i] = eta;
4171  m_mc_phi[i] = mcPtr->phi();
4172  m_mc_e[i] = mcPtr->e();
4173  m_mc_pdgId[i] = mcPtr->pdgId();
4174  m_mc_charge[i] = mcPtr->charge();
4175  m_mc_status[i] = mcPtr->status();
4176  m_mc_barcode[i] = HepMC::uniqueID(mcPtr);
4177 
4178  ++i;
4179  }
4180  }
4181  }
4182 
4183  if (m_config->doTopPartonHistory()) {
4184  const xAOD::PartonHistoryContainer* partonHistoryContainer(nullptr);
4185  const xAOD::PartonHistory* partonHistory(nullptr);
4186  if (evtStore()->contains<xAOD::PartonHistoryContainer>(m_config->sgKeyTopPartonHistory())) {
4187  top::check(evtStore()->retrieve(partonHistoryContainer, m_config->sgKeyTopPartonHistory()), "Failed to retrieve Top Parton History");
4188  if (partonHistoryContainer->size() == 1) {
4189  partonHistory = partonHistoryContainer->at(0);
4190  }
4191  }
4192 
4193  if (partonHistory != nullptr) {
4194  if (!m_config->isTopPartonHistoryRegisteredInNtuple()) {
4195  registerObjectIntoTruthTree(*(partonHistory));
4196  m_config->setTopPartonHistoryRegisteredInNtuple();
4197  }
4198  saveObjectIntoTruthTree(*(partonHistory));
4199  }
4200  }
4201  }
4202 
4204  if(m_config->doTopPartonLevel()) m_truthTreeManager->fill();
4205  }
4206 
4208  // Quick return if particle level is disabled.
4209  if (not m_config->doTopParticleLevel()) {
4210  return;
4211  }
4212  // No need to attempt to write out anything for non-MC data.
4213  if (!m_config->isMC()) {
4214  return;
4215  }
4216  this->cleanParticleLevelEvent();
4217  this->calculateParticleLevelEvent(plEvent);
4218  this->fillParticleLevelEvent();
4219  }
4220 
4222  /* Doing nothing for now, but we should put here the (re-)initialisation to dummy values
4223  * of all variables later calculated in calculateParticleLevelEvent(const top::ParticleLevelEvent& plEvent)
4224  * For example all weights set to 1, all vectors cleaned, all kinematic or angular variables set to -99999.
4225  */
4226  }
4227 
4229  for (auto& selectionDecision : m_particleLevel_SelectionDecisions) {
4230  selectionDecision.second = plEvent.m_selectionDecisions[ selectionDecision.first ];
4231  }
4232 
4233  m_weight_mc = plEvent.m_info->auxdataConst<float>("AnalysisTop_eventWeight");
4235 
4236  m_eventNumber = plEvent.m_info->eventNumber();
4237  m_runNumber = plEvent.m_info->runNumber();
4239 
4242 
4243  if (m_config->doPileupReweighting() && !m_config->isTruthDxAOD()) {
4244  m_weight_pileup = plEvent.m_info->auxdataConst<float>("PileupWeight");
4245  m_randomRunNumber = plEvent.m_info->auxdataConst<unsigned int>("RandomRunNumber");
4246  } else {
4247  m_weight_pileup = NAN;
4248  m_randomRunNumber = 0;
4249  }
4250 
4251  //electrons
4252  if (m_config->useTruthElectrons()) {
4253  unsigned int i = 0;
4254 
4255  m_el_pt.resize(plEvent.m_electrons->size());
4256  m_el_eta.resize(plEvent.m_electrons->size());
4257  m_el_phi.resize(plEvent.m_electrons->size());
4258  m_el_e.resize(plEvent.m_electrons->size());
4259  m_el_charge.resize(plEvent.m_electrons->size());
4260 
4261  m_el_pt_bare.resize(plEvent.m_electrons->size());
4262  m_el_eta_bare.resize(plEvent.m_electrons->size());
4263  m_el_phi_bare.resize(plEvent.m_electrons->size());
4264  m_el_e_bare.resize(plEvent.m_electrons->size());
4265 
4266  m_el_true_type.resize(plEvent.m_electrons->size());
4267  m_el_true_origin.resize(plEvent.m_electrons->size());
4268 
4269  for (const auto *elPtr : *plEvent.m_electrons) {
4270  m_el_pt[i] = elPtr->pt();
4271  m_el_eta[i] = elPtr->eta();
4272  m_el_phi[i] = elPtr->phi();
4273  m_el_e[i] = elPtr->e();
4274  m_el_charge[i] = elPtr->charge();
4275 
4276  m_el_pt_bare[i] = elPtr->auxdata<float>("pt_bare");
4277  m_el_eta_bare[i] = elPtr->auxdata<float>("eta_bare");
4278  m_el_phi_bare[i] = elPtr->auxdata<float>("phi_bare");
4279  m_el_e_bare[i] = elPtr->auxdata<float>("e_bare");
4280 
4281  if(elPtr->isAvailable<unsigned int>("particleType")) m_el_true_type[i] = elPtr->auxdata<unsigned int>("particleType");
4282  else if(elPtr->isAvailable<unsigned int>("classifierParticleType")) m_el_true_type[i] = elPtr->auxdata<unsigned int>("classifierParticleType");
4283  else m_el_true_type[i] = 0;
4284 
4285  if(elPtr->isAvailable<unsigned int>("particleOrigin")) m_el_true_origin[i] = elPtr->auxdata<unsigned int>("particleOrigin");
4286  else if(elPtr->isAvailable<unsigned int>("classifierParticleOrigin")) m_el_true_origin[i] = elPtr->auxdata<unsigned int>("classifierParticleOrigin");
4287  else m_el_true_origin[i] = 0;
4288 
4289  ++i;
4290  }
4291  }
4292 
4293  //muons
4294  if (m_config->useTruthMuons()) {
4295  unsigned int i = 0;
4296 
4297  m_mu_pt.resize(plEvent.m_muons->size());
4298  m_mu_eta.resize(plEvent.m_muons->size());
4299  m_mu_phi.resize(plEvent.m_muons->size());
4300  m_mu_e.resize(plEvent.m_muons->size());
4301  m_mu_charge.resize(plEvent.m_muons->size());
4302 
4303  m_mu_pt_bare.resize(plEvent.m_muons->size());
4304  m_mu_eta_bare.resize(plEvent.m_muons->size());
4305  m_mu_phi_bare.resize(plEvent.m_muons->size());
4306  m_mu_e_bare.resize(plEvent.m_muons->size());
4307 
4308  m_mu_true_type.resize(plEvent.m_muons->size());
4309  m_mu_true_origin.resize(plEvent.m_muons->size());
4310 
4311  for (const auto *muPtr : *plEvent.m_muons) {
4312  m_mu_pt[i] = muPtr->pt();
4313  m_mu_eta[i] = muPtr->eta();
4314  m_mu_phi[i] = muPtr->phi();
4315  m_mu_e[i] = muPtr->e();
4316  m_mu_charge[i] = muPtr->charge();
4317 
4318  m_mu_pt_bare[i] = muPtr->auxdata<float>("pt_bare");
4319  m_mu_eta_bare[i] = muPtr->auxdata<float>("eta_bare");
4320  m_mu_phi_bare[i] = muPtr->auxdata<float>("phi_bare");
4321  m_mu_e_bare[i] = muPtr->auxdata<float>("e_bare");
4322 
4323  if(muPtr->isAvailable<unsigned int>("particleType")) m_mu_true_type[i] = muPtr->auxdata<unsigned int>("particleType");
4324  else if(muPtr->isAvailable<unsigned int>("classifierParticleType")) m_mu_true_type[i] = muPtr->auxdata<unsigned int>("classifierParticleType");
4325  else m_mu_true_type[i] = 0;
4326 
4327  if(muPtr->isAvailable<unsigned int>("particleOrigin")) m_mu_true_origin[i] = muPtr->auxdata<unsigned int>("particleOrigin");
4328  else if(muPtr->isAvailable<unsigned int>("classifierParticleOrigin")) m_mu_true_origin[i] = muPtr->auxdata<unsigned int>("classifierParticleOrigin");
4329  else m_mu_true_origin[i] = 0;
4330 
4331  ++i;
4332  }
4333 
4334  i=0;
4335  if(m_config->useSoftMuons()) {
4336 
4337  m_softmu_pt.resize(plEvent.m_softmuons->size());
4338  m_softmu_eta.resize(plEvent.m_softmuons->size());
4339  m_softmu_phi.resize(plEvent.m_softmuons->size());
4340  m_softmu_e.resize(plEvent.m_softmuons->size());
4341  m_softmu_charge.resize(plEvent.m_softmuons->size());
4342 
4343  m_softmu_true_type.resize(plEvent.m_softmuons->size());
4344  m_softmu_true_origin.resize(plEvent.m_softmuons->size());
4345 
4346  if(m_config->softmuonAdditionalTruthInfo())
4347  {
4348  m_softmu_parton_origin_flag.resize(plEvent.m_softmuons->size());
4349  m_softmu_particle_origin_flag.resize(plEvent.m_softmuons->size());
4350  m_softmu_parent_pdgid.resize(plEvent.m_softmuons->size());
4351  m_softmu_b_hadron_parent_pdgid.resize(plEvent.m_softmuons->size());
4352  m_softmu_c_hadron_parent_pdgid.resize(plEvent.m_softmuons->size());
4353  }
4354 
4355  for (const auto *muPtr : *plEvent.m_softmuons) {
4356  m_softmu_pt[i] = muPtr->pt();
4357  m_softmu_eta[i] = muPtr->eta();
4358  m_softmu_phi[i] = muPtr->phi();
4359  m_softmu_e[i] = muPtr->e();
4360  m_softmu_charge[i] = muPtr->charge();
4361 
4362  if(muPtr->isAvailable<unsigned int>("particleType")) m_softmu_true_type[i] = muPtr->auxdata<unsigned int>("particleType");
4363  else if(muPtr->isAvailable<unsigned int>("classifierParticleType")) m_softmu_true_type[i] = muPtr->auxdata<unsigned int>("classifierParticleType");
4364  else m_softmu_true_type[i] = 0;
4365 
4366  if(muPtr->isAvailable<unsigned int>("particleOrigin")) m_softmu_true_origin[i] = muPtr->auxdata<unsigned int>("particleOrigin");
4367  else if(muPtr->isAvailable<unsigned int>("classifierParticleOrigin")) m_softmu_true_origin[i] = muPtr->auxdata<unsigned int>("classifierParticleOrigin");
4368  else m_softmu_true_origin[i] = 0;
4369 
4370  if(m_config->softmuonAdditionalTruthInfo())
4371  {
4372 
4374  if(m_config->softmuonAdditionalTruthInfoCheckPartonOrigin())
4375  {
4376  static const SG::AuxElement::Accessor<top::LepPartonOriginFlag> leppartonoriginflag("LepPartonOriginFlag");
4377  if(leppartonoriginflag.isAvailable(*muPtr)) m_softmu_parton_origin_flag[i]=static_cast<int>(leppartonoriginflag(*muPtr));
4378  }
4383  static const SG::AuxElement::Accessor<top::LepParticleOriginFlag> lepparticleoriginflag("LepParticleOriginFlag");
4384  if(lepparticleoriginflag.isAvailable(*muPtr)) m_softmu_particle_origin_flag[i]=static_cast<int>(lepparticleoriginflag(*muPtr));
4385 
4386  static const SG::AuxElement::Accessor<const xAOD::TruthParticle*> Mother("truthMotherLink");
4387  const xAOD::TruthParticle* mother = 0;
4388  if(Mother.isAvailable(*muPtr)) mother=Mother(*muPtr);
4389  if(mother) m_softmu_parent_pdgid[i]=mother->pdgId();
4390 
4391  static const SG::AuxElement::Accessor<const xAOD::TruthParticle*> BMother("truthBMotherLink");
4392  const xAOD::TruthParticle* Bmother = 0;
4393  if(BMother.isAvailable(*muPtr)) Bmother=BMother(*muPtr);
4394  if(Bmother) m_softmu_b_hadron_parent_pdgid[i]=Bmother->pdgId();
4395 
4396  static const SG::AuxElement::Accessor<const xAOD::TruthParticle*> CMother("truthCMotherLink");
4397  const xAOD::TruthParticle* Cmother = 0;
4398  if(CMother.isAvailable(*muPtr)) Cmother=CMother(*muPtr);
4399  if(Cmother) m_softmu_c_hadron_parent_pdgid[i]=Cmother->pdgId();
4400 
4401  if(m_config->softmuonAdditionalTruthInfoDoVerbose()) asg::msgUserCode::ATH_MSG_INFO("writing truth soft muon with pt="<<m_softmu_pt[i] <<" parton_origin_flag="<<m_softmu_parton_origin_flag[i]<<" particle_origin_flag="<<m_softmu_particle_origin_flag[i]<<" parent_pdg_id="<<m_softmu_parent_pdgid[i]<<" b_hadron_parent_pdg_id="<<m_softmu_b_hadron_parent_pdgid[i]<<" c_hadron_parent_pdg_id="<<m_softmu_c_hadron_parent_pdgid[i]);
4402  }
4403 
4404  ++i;
4405  }
4406  }//end of soft muons part
4407  }//end of muons part
4408 
4409  //photons
4410  if (m_config->useTruthPhotons()) {
4411  unsigned int i(0);
4412  m_ph_pt.resize(plEvent.m_photons->size());
4413  m_ph_eta.resize(plEvent.m_photons->size());
4414  m_ph_phi.resize(plEvent.m_photons->size());
4415  m_ph_e.resize(plEvent.m_photons->size());
4416  for (const auto* const phPtr : *plEvent.m_photons) {
4417  m_ph_pt[i] = phPtr->pt();
4418  m_ph_eta[i] = phPtr->eta();
4419  m_ph_phi[i] = phPtr->phi();
4420  m_ph_e[i] = phPtr->e();
4421 
4422  ++i;
4423  }
4424  }
4425 
4426  static const SG::AuxElement::ConstAccessor<int> ghostBHadronsFinalCount("GhostBHadronsFinalCount");
4427  static const SG::AuxElement::ConstAccessor<int> ghostCHadronsFinalCount("GhostCHadronsFinalCount");
4428 
4429  //jets
4430  if (m_config->useTruthJets()) {
4431  unsigned int i = 0;
4432 
4433  m_jet_pt.resize(plEvent.m_jets->size());
4434  m_jet_eta.resize(plEvent.m_jets->size());
4435  m_jet_phi.resize(plEvent.m_jets->size());
4436  m_jet_e.resize(plEvent.m_jets->size());
4437  m_jet_Ghosts_BHadron_Final_Count.resize(plEvent.m_jets->size());
4438  m_jet_Ghosts_CHadron_Final_Count.resize(plEvent.m_jets->size());
4439  for (const auto *jetPtr : *plEvent.m_jets) {
4440  m_jet_pt[i] = jetPtr->pt();
4441  m_jet_eta[i] = jetPtr->eta();
4442  m_jet_phi[i] = jetPtr->phi();
4443  m_jet_e[i] = jetPtr->e();
4444 
4445  if(ghostBHadronsFinalCount.isAvailable(*jetPtr)) {
4446  m_jet_Ghosts_BHadron_Final_Count[i] = ghostBHadronsFinalCount(*jetPtr);
4447  }
4448  else {
4449  ATH_MSG_DEBUG("Found a jet with no GhostBHadronFinalCount auxdata");
4451  }
4452 
4453  if(ghostCHadronsFinalCount.isAvailable(*jetPtr)) {
4454  m_jet_Ghosts_CHadron_Final_Count[i] = ghostCHadronsFinalCount(*jetPtr);
4455  }
4456  else {
4457  ATH_MSG_DEBUG("Found a jet with no GhostCHadronFinalCount auxdata");
4459  }
4460 
4461  ++i;
4462  }
4463  }
4464 
4465  //large R jets
4466  if (m_config->useTruthLargeRJets()) {
4467  unsigned int i = 0;
4468 
4469  m_ljet_pt.resize(plEvent.m_largeRJets->size());
4470  m_ljet_eta.resize(plEvent.m_largeRJets->size());
4471  m_ljet_phi.resize(plEvent.m_largeRJets->size());
4472  m_ljet_e.resize(plEvent.m_largeRJets->size());
4475  for (const auto *jetPtr : *plEvent.m_largeRJets) {
4476  m_ljet_pt[i] = jetPtr->pt();
4477  m_ljet_eta[i] = jetPtr->eta();
4478  m_ljet_phi[i] = jetPtr->phi();
4479  m_ljet_e[i] = jetPtr->e();
4480 
4481  if(ghostBHadronsFinalCount.isAvailable(*jetPtr)) {
4482  m_ljet_Ghosts_BHadron_Final_Count[i] = ghostBHadronsFinalCount(*jetPtr);
4483  }
4484  else {
4485  ATH_MSG_DEBUG("Found a jet with no GhostBHadronFinalCount auxdata");
4487  }
4488 
4489  if(ghostCHadronsFinalCount.isAvailable(*jetPtr)) {
4490  m_ljet_Ghosts_CHadron_Final_Count[i] = ghostCHadronsFinalCount(*jetPtr);
4491  }
4492  else {
4493  ATH_MSG_DEBUG("Found a jet with no GhostCHadronFinalCount auxdata");
4495  }
4496 
4497  ++i;
4498  }
4499  }
4500 
4501  //Taus
4502  if (m_config->useTruthTaus()) {
4503  unsigned int i = 0;
4504 
4505  m_tau_pt.resize(plEvent.m_taus->size());
4506  m_tau_eta.resize(plEvent.m_taus->size());
4507  m_tau_phi.resize(plEvent.m_taus->size());
4508  m_tau_e.resize(plEvent.m_taus->size());
4509  m_tau_charge.resize(plEvent.m_taus->size());
4510  m_tau_isHadronic.resize(plEvent.m_taus->size());
4511 
4512  for (const auto *tauPtr : *plEvent.m_taus) {
4513  m_tau_pt[i] = tauPtr->pt();
4514  m_tau_eta[i] = tauPtr->eta();
4515  m_tau_phi[i] = tauPtr->phi();
4516  m_tau_e[i] = tauPtr->e();
4517  m_tau_charge[i] = tauPtr->charge();
4518  if (tauPtr->isAvailable<char>("IsHadronicTau")) {
4519  m_tau_isHadronic[i] = tauPtr->auxdata<char>("IsHadronicTau");
4520  }
4521 
4522  ++i;
4523  }
4524  }
4525 
4526  if (m_makeRCJets) {
4527  // re-clustered jet substructure
4528  static const SG::AuxElement::ConstAccessor<float> RCSplit12("Split12");
4529  static const SG::AuxElement::ConstAccessor<float> RCSplit23("Split23");
4530 
4531  // re-clustered jet substructure from clusters
4532  static const SG::AuxElement::ConstAccessor<float> Tau21_clstr("Tau21_clstr");
4533  static const SG::AuxElement::ConstAccessor<float> Tau32_clstr("Tau32_clstr");
4534  static const SG::AuxElement::ConstAccessor<float> Tau3_clstr("Tau3_clstr");
4535  static const SG::AuxElement::ConstAccessor<float> Tau2_clstr("Tau2_clstr");
4536  static const SG::AuxElement::ConstAccessor<float> Tau1_clstr("Tau1_clstr");
4537  static const SG::AuxElement::ConstAccessor<float> D2_clstr("D2_clstr");
4538  static const SG::AuxElement::ConstAccessor<float> ECF1_clstr("ECF1_clstr");
4539  static const SG::AuxElement::ConstAccessor<float> ECF2_clstr("ECF2_clstr");
4540  static const SG::AuxElement::ConstAccessor<float> ECF3_clstr("ECF3_clstr");
4541  static const SG::AuxElement::ConstAccessor<float> d12_clstr("d12_clstr");
4542  static const SG::AuxElement::ConstAccessor<float> d23_clstr("d23_clstr");
4543  static const SG::AuxElement::ConstAccessor<float> Qw_clstr("Qw_clstr");
4544  static const SG::AuxElement::ConstAccessor<float> nconstituent_clstr("nconstituent_clstr");
4545 
4546  static const SG::AuxElement::ConstAccessor<float> gECF332_clstr("gECF332_clstr");
4547  static const SG::AuxElement::ConstAccessor<float> gECF461_clstr("gECF461_clstr");
4548  static const SG::AuxElement::ConstAccessor<float> gECF322_clstr("gECF322_clstr");
4549  static const SG::AuxElement::ConstAccessor<float> gECF331_clstr("gECF331_clstr");
4550  static const SG::AuxElement::ConstAccessor<float> gECF422_clstr("gECF422_clstr");
4551  static const SG::AuxElement::ConstAccessor<float> gECF441_clstr("gECF441_clstr");
4552  static const SG::AuxElement::ConstAccessor<float> gECF212_clstr("gECF212_clstr");
4553  static const SG::AuxElement::ConstAccessor<float> gECF321_clstr("gECF321_clstr");
4554  static const SG::AuxElement::ConstAccessor<float> gECF311_clstr("gECF311_clstr");
4555  static const SG::AuxElement::ConstAccessor<float> L1_clstr("L1_clstr");
4556  static const SG::AuxElement::ConstAccessor<float> L2_clstr("L2_clstr");
4557  static const SG::AuxElement::ConstAccessor<float> L3_clstr("L3_clstr");
4558  static const SG::AuxElement::ConstAccessor<float> L4_clstr("L4_clstr");
4559  static const SG::AuxElement::ConstAccessor<float> L5_clstr("L5_clstr");
4560  // store also the jet that is rebuilt to calculate the JSS
4561  static const SG::AuxElement::ConstAccessor<float> RRCJet_pt("RRCJet_pt");
4562  static const SG::AuxElement::ConstAccessor<float> RRCJet_eta("RRCJet_eta");
4563  static const SG::AuxElement::ConstAccessor<float> RRCJet_phi("RRCJet_phi");
4564  static const SG::AuxElement::ConstAccessor<float> RRCJet_e("RRCJet_e");
4565 
4566 
4567  // Initialize the vectors to be saved as branches
4568  unsigned int sizeOfRCjets(plEvent.m_RCJets.size());
4569 
4570  m_rcjet_pt.clear();
4571  m_rcjet_eta.clear();
4572  m_rcjet_phi.clear();
4573  m_rcjet_e.clear();
4574  m_rcjet_d12.clear();
4575  m_rcjet_d23.clear();
4576  m_rcjetsub_pt.clear();
4577  m_rcjetsub_eta.clear();
4578  m_rcjetsub_phi.clear();
4579  m_rcjetsub_e.clear();
4582 
4583 
4584  m_rcjet_tau32_clstr.clear();
4585  m_rcjet_tau21_clstr.clear();
4586  m_rcjet_tau3_clstr.clear();
4587  m_rcjet_tau2_clstr.clear();
4588  m_rcjet_tau1_clstr.clear();
4589  m_rcjet_D2_clstr.clear();
4590  m_rcjet_ECF1_clstr.clear();
4591  m_rcjet_ECF2_clstr.clear();
4592  m_rcjet_ECF3_clstr.clear();
4593  m_rcjet_d12_clstr.clear();
4594  m_rcjet_d23_clstr.clear();
4595  m_rcjet_Qw_clstr.clear();
4597 
4598  m_rcjet_gECF332_clstr.clear();
4599  m_rcjet_gECF461_clstr.clear();
4600  m_rcjet_gECF322_clstr.clear();
4601  m_rcjet_gECF331_clstr.clear();
4602  m_rcjet_gECF422_clstr.clear();
4603  m_rcjet_gECF441_clstr.clear();
4604  m_rcjet_gECF212_clstr.clear();
4605  m_rcjet_gECF321_clstr.clear();
4606  m_rcjet_gECF311_clstr.clear();
4607  m_rcjet_L1_clstr.clear();
4608  m_rcjet_L2_clstr.clear();
4609  m_rcjet_L3_clstr.clear();
4610  m_rcjet_L4_clstr.clear();
4611  m_rcjet_L5_clstr.clear();
4612 
4613  m_rcjet_pt.resize(sizeOfRCjets, -999.);
4614  m_rcjet_eta.resize(sizeOfRCjets, -999.);
4615  m_rcjet_phi.resize(sizeOfRCjets, -999.);
4616  m_rcjet_e.resize(sizeOfRCjets, -999.);
4617  m_rcjet_d12.resize(sizeOfRCjets, -999.);
4618  m_rcjet_d23.resize(sizeOfRCjets, -999.);
4619  m_rcjetsub_pt.resize(sizeOfRCjets, std::vector<float>());
4620  m_rcjetsub_eta.resize(sizeOfRCjets, std::vector<float>());
4621  m_rcjetsub_phi.resize(sizeOfRCjets, std::vector<float>());
4622  m_rcjetsub_e.resize(sizeOfRCjets, std::vector<float>());
4623  m_rcjetsub_Ghosts_BHadron_Final_Count.resize(sizeOfRCjets, std::vector<int>());
4624  m_rcjetsub_Ghosts_CHadron_Final_Count.resize(sizeOfRCjets, std::vector<int>());
4625 
4627  m_rrcjet_pt.resize(sizeOfRCjets, -999.);
4628  m_rrcjet_eta.resize(sizeOfRCjets, -999.);
4629  m_rrcjet_phi.resize(sizeOfRCjets, -999.);
4630  m_rrcjet_e.resize(sizeOfRCjets, -999.);
4631  }
4632  if (m_useRCJSS) {
4633  m_rcjet_tau32_clstr.resize(sizeOfRCjets, -999.);
4634  m_rcjet_tau21_clstr.resize(sizeOfRCjets, -999.);
4635  m_rcjet_tau1_clstr.resize(sizeOfRCjets, -999.);
4636  m_rcjet_tau2_clstr.resize(sizeOfRCjets, -999.);
4637  m_rcjet_tau3_clstr.resize(sizeOfRCjets, -999.);
4638 
4639  m_rcjet_d12_clstr.resize(sizeOfRCjets, -999.);
4640  m_rcjet_d23_clstr.resize(sizeOfRCjets, -999.);
4641  m_rcjet_Qw_clstr.resize(sizeOfRCjets, -999.);
4642  m_rcjet_nconstituent_clstr.resize(sizeOfRCjets, -999.);
4643 
4644  m_rcjet_D2_clstr.resize(sizeOfRCjets, -999.);
4645  m_rcjet_ECF1_clstr.resize(sizeOfRCjets, -999.);
4646  m_rcjet_ECF2_clstr.resize(sizeOfRCjets, -999.);
4647  m_rcjet_ECF3_clstr.resize(sizeOfRCjets, -999.);
4648  }
4649  if (m_useRCAdditionalJSS) {
4650  m_rcjet_gECF332_clstr.resize(sizeOfRCjets, -999.);
4651  m_rcjet_gECF461_clstr.resize(sizeOfRCjets, -999.);
4652  m_rcjet_gECF322_clstr.resize(sizeOfRCjets, -999.);
4653  m_rcjet_gECF331_clstr.resize(sizeOfRCjets, -999.);
4654  m_rcjet_gECF422_clstr.resize(sizeOfRCjets, -999.);
4655  m_rcjet_gECF441_clstr.resize(sizeOfRCjets, -999.);
4656  m_rcjet_gECF212_clstr.resize(sizeOfRCjets, -999.);
4657  m_rcjet_gECF321_clstr.resize(sizeOfRCjets, -999.);
4658  m_rcjet_gECF311_clstr.resize(sizeOfRCjets, -999.);
4659 
4660  m_rcjet_L1_clstr.resize(sizeOfRCjets, -999.);
4661  m_rcjet_L2_clstr.resize(sizeOfRCjets, -999.);
4662  m_rcjet_L3_clstr.resize(sizeOfRCjets, -999.);
4663  m_rcjet_L4_clstr.resize(sizeOfRCjets, -999.);
4664  m_rcjet_L5_clstr.resize(sizeOfRCjets, -999.);
4665  }
4666  unsigned int i = 0;
4667  for (const auto *rc_jet : plEvent.m_RCJets) {
4668  m_rcjet_pt[i] = rc_jet->pt();
4669  m_rcjet_eta[i] = rc_jet->eta();
4670  m_rcjet_phi[i] = rc_jet->phi();
4671  m_rcjet_e[i] = rc_jet->e();
4672 
4673  m_rcjet_d12[i] = (RCSplit12.isAvailable(*rc_jet)) ? RCSplit12(*rc_jet) : -999.;
4674  m_rcjet_d23[i] = (RCSplit23.isAvailable(*rc_jet)) ? RCSplit23(*rc_jet) : -999.;
4675 
4677  m_rrcjet_pt[i] = (RRCJet_pt.isAvailable(*rc_jet)) ? RRCJet_pt(*rc_jet) : -999.;
4678  m_rrcjet_eta[i] = (RRCJet_eta.isAvailable(*rc_jet)) ? RRCJet_eta(*rc_jet) : -999.;
4679  m_rrcjet_phi[i] = (RRCJet_phi.isAvailable(*rc_jet)) ? RRCJet_phi(*rc_jet) : -999.;
4680  m_rrcjet_e[i] = (RRCJet_e.isAvailable(*rc_jet)) ? RRCJet_e(*rc_jet) : -999.;
4681  }
4682  if (m_useRCJSS) {
4683  m_rcjet_tau32_clstr[i] = (Tau32_clstr.isAvailable(*rc_jet)) ? Tau32_clstr(*rc_jet) : -999.;
4684  m_rcjet_tau21_clstr[i] = (Tau21_clstr.isAvailable(*rc_jet)) ? Tau21_clstr(*rc_jet) : -999.;
4685  m_rcjet_tau3_clstr[i] = (Tau3_clstr.isAvailable(*rc_jet)) ? Tau3_clstr(*rc_jet) : -999.;
4686  m_rcjet_tau2_clstr[i] = (Tau2_clstr.isAvailable(*rc_jet)) ? Tau2_clstr(*rc_jet) : -999.;
4687  m_rcjet_tau1_clstr[i] = (Tau1_clstr.isAvailable(*rc_jet)) ? Tau1_clstr(*rc_jet) : -999.;
4688 
4689  m_rcjet_d12_clstr[i] = (d12_clstr.isAvailable(*rc_jet)) ? d12_clstr(*rc_jet) : -999.;
4690  m_rcjet_d23_clstr[i] = (d23_clstr.isAvailable(*rc_jet)) ? d23_clstr(*rc_jet) : -999.;
4691  m_rcjet_Qw_clstr[i] = (Qw_clstr.isAvailable(*rc_jet)) ? Qw_clstr(*rc_jet) : -999.;
4692  m_rcjet_nconstituent_clstr[i] = (nconstituent_clstr.isAvailable(*rc_jet)) ? nconstituent_clstr(*rc_jet) : -999.;
4693 
4694  m_rcjet_D2_clstr[i] = (D2_clstr.isAvailable(*rc_jet)) ? D2_clstr(*rc_jet) : -999.;
4695  m_rcjet_ECF1_clstr[i] = (ECF1_clstr.isAvailable(*rc_jet)) ? ECF1_clstr(*rc_jet) : -999.;
4696  m_rcjet_ECF2_clstr[i] = (ECF2_clstr.isAvailable(*rc_jet)) ? ECF2_clstr(*rc_jet) : -999.;
4697  m_rcjet_ECF3_clstr[i] = (ECF3_clstr.isAvailable(*rc_jet)) ? ECF3_clstr(*rc_jet) : -999.;
4698  }
4699  if (m_useRCAdditionalJSS) {
4700  m_rcjet_gECF332_clstr[i] = (gECF332_clstr.isAvailable(*rc_jet)) ? gECF332_clstr(*rc_jet) : -999.;
4701  m_rcjet_gECF461_clstr[i] = (gECF461_clstr.isAvailable(*rc_jet)) ? gECF461_clstr(*rc_jet) : -999.;
4702  m_rcjet_gECF322_clstr[i] = (gECF322_clstr.isAvailable(*rc_jet)) ? gECF322_clstr(*rc_jet) : -999.;
4703  m_rcjet_gECF331_clstr[i] = (gECF331_clstr.isAvailable(*rc_jet)) ? gECF331_clstr(*rc_jet) : -999.;
4704  m_rcjet_gECF422_clstr[i] = (gECF422_clstr.isAvailable(*rc_jet)) ? gECF422_clstr(*rc_jet) : -999.;
4705  m_rcjet_gECF441_clstr[i] = (gECF441_clstr.isAvailable(*rc_jet)) ? gECF441_clstr(*rc_jet) : -999.;
4706  m_rcjet_gECF212_clstr[i] = (gECF212_clstr.isAvailable(*rc_jet)) ? gECF212_clstr(*rc_jet) : -999.;
4707  m_rcjet_gECF321_clstr[i] = (gECF321_clstr.isAvailable(*rc_jet)) ? gECF321_clstr(*rc_jet) : -999.;
4708  m_rcjet_gECF311_clstr[i] = (gECF311_clstr.isAvailable(*rc_jet)) ? gECF311_clstr(*rc_jet) : -999.;
4709 
4710  m_rcjet_L1_clstr[i] = (L1_clstr.isAvailable(*rc_jet)) ? L1_clstr(*rc_jet) : -999.;
4711  m_rcjet_L2_clstr[i] = (L2_clstr.isAvailable(*rc_jet)) ? L2_clstr(*rc_jet) : -999.;
4712  m_rcjet_L3_clstr[i] = (L3_clstr.isAvailable(*rc_jet)) ? L3_clstr(*rc_jet) : -999.;
4713  m_rcjet_L4_clstr[i] = (L4_clstr.isAvailable(*rc_jet)) ? L4_clstr(*rc_jet) : -999.;
4714  m_rcjet_L5_clstr[i] = (L5_clstr.isAvailable(*rc_jet)) ? L5_clstr(*rc_jet) : -999.;
4715  }
4716 
4717  // loop over subjets
4718  m_rcjetsub_pt[i].clear(); // clear the vector size (otherwise it grows out of control!)
4719  m_rcjetsub_eta[i].clear();
4720  m_rcjetsub_phi[i].clear();
4721  m_rcjetsub_e[i].clear();
4722 
4723  const xAOD::Jet* subjet(nullptr);
4724  for (const auto *rc_jet_subjet : rc_jet->getConstituents()) {
4725  subjet = static_cast<const xAOD::Jet*>(rc_jet_subjet->rawConstituent());
4726  m_rcjetsub_pt[i].push_back(subjet->pt());
4727  m_rcjetsub_eta[i].push_back(subjet->eta());
4728  m_rcjetsub_phi[i].push_back(subjet->phi());
4729  m_rcjetsub_e[i].push_back(subjet->e());
4730 
4731  if(ghostBHadronsFinalCount.isAvailable(*subjet)) {
4732  m_rcjetsub_Ghosts_BHadron_Final_Count[i].push_back(ghostBHadronsFinalCount(*subjet));
4733  }
4734  else {
4735  ATH_MSG_DEBUG("Found a jet with no GhostBHadronFinalCount auxdata");
4737  }
4738 
4739  if(ghostCHadronsFinalCount.isAvailable(*subjet)) {
4740  m_rcjetsub_Ghosts_CHadron_Final_Count[i].push_back(ghostCHadronsFinalCount(*subjet));
4741  }
4742  else {
4743  ATH_MSG_DEBUG("Found a jet with no GhostCHadronFinalCount auxdata");
4745  }
4746 
4747  } // end for-loop over subjets
4748  ++i;
4749  } // end for-loop over re-clustered jets
4750  }
4751 
4752  // VarRC jets
4753  if (m_makeVarRCJets) {
4754  std::string VarRC = "vrcjet";
4755  for (auto& rho : m_VarRCJetRho) {
4756  for (auto& mass_scale : m_VarRCJetMassScale) {
4757  std::replace(rho.begin(), rho.end(), '.', '_');
4758  std::string name = rho + mass_scale;
4759 
4760  // re-clustered jet substructure
4761  static const SG::AuxElement::ConstAccessor<float> VarRCSplit12("Split12");
4762  static const SG::AuxElement::ConstAccessor<float> VarRCSplit23("Split23");
4763  // re-clustered jet substructure from clusters
4764  static const SG::AuxElement::ConstAccessor<float> Tau21_clstr("Tau21_clstr");
4765  static const SG::AuxElement::ConstAccessor<float> Tau32_clstr("Tau32_clstr");
4766  static const SG::AuxElement::ConstAccessor<float> Tau3_clstr("Tau3_clstr");
4767  static const SG::AuxElement::ConstAccessor<float> Tau2_clstr("Tau2_clstr");
4768  static const SG::AuxElement::ConstAccessor<float> Tau1_clstr("Tau1_clstr");
4769  static const SG::AuxElement::ConstAccessor<float> D2_clstr("D2_clstr");
4770  static const SG::AuxElement::ConstAccessor<float> ECF1_clstr("ECF1_clstr");
4771  static const SG::AuxElement::ConstAccessor<float> ECF2_clstr("ECF2_clstr");
4772  static const SG::AuxElement::ConstAccessor<float> ECF3_clstr("ECF3_clstr");
4773  static const SG::AuxElement::ConstAccessor<float> d12_clstr("d12_clstr");
4774  static const SG::AuxElement::ConstAccessor<float> d23_clstr("d23_clstr");
4775  static const SG::AuxElement::ConstAccessor<float> Qw_clstr("Qw_clstr");
4776 
4777  static const SG::AuxElement::ConstAccessor<float> gECF332_clstr("gECF332_clstr");
4778  static const SG::AuxElement::ConstAccessor<float> gECF461_clstr("gECF461_clstr");
4779  static const SG::AuxElement::ConstAccessor<float> gECF322_clstr("gECF322_clstr");
4780  static const SG::AuxElement::ConstAccessor<float> gECF331_clstr("gECF331_clstr");
4781  static const SG::AuxElement::ConstAccessor<float> gECF422_clstr("gECF422_clstr");
4782  static const SG::AuxElement::ConstAccessor<float> gECF441_clstr("gECF441_clstr");
4783  static const SG::AuxElement::ConstAccessor<float> gECF212_clstr("gECF212_clstr");
4784  static const SG::AuxElement::ConstAccessor<float> gECF321_clstr("gECF321_clstr");
4785  static const SG::AuxElement::ConstAccessor<float> gECF311_clstr("gECF311_clstr");
4786  static const SG::AuxElement::ConstAccessor<float> L1_clstr("L1_clstr");
4787  static const SG::AuxElement::ConstAccessor<float> L2_clstr("L2_clstr");
4788  static const SG::AuxElement::ConstAccessor<float> L3_clstr("L3_clstr");
4789  static const SG::AuxElement::ConstAccessor<float> L4_clstr("L4_clstr");
4790  static const SG::AuxElement::ConstAccessor<float> L5_clstr("L5_clstr");
4791  // store also the jet that is rebuilt to calculate the JSS
4792  static const SG::AuxElement::ConstAccessor<float> RRCJet_pt("RRCJet_pt");
4793  static const SG::AuxElement::ConstAccessor<float> RRCJet_eta("RRCJet_eta");
4794  static const SG::AuxElement::ConstAccessor<float> RRCJet_phi("RRCJet_phi");
4795  static const SG::AuxElement::ConstAccessor<float> RRCJet_e("RRCJet_e");
4796 
4797  // Initialize the vectors to be saved as branches
4798 
4799  xAOD::JetContainer* vrc_jets = plEvent.m_VarRCJets[name].get();
4800  unsigned int sizeOfRCjets = vrc_jets->size();
4801  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_pt"].resize(sizeOfRCjets, -999.);
4802  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_eta"].resize(sizeOfRCjets, -999.);
4803  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_phi"].resize(sizeOfRCjets, -999.);
4804  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_e"].resize(sizeOfRCjets, -999.);
4805  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d12"].resize(sizeOfRCjets, -999.);
4806  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d23"].resize(sizeOfRCjets, -999.);
4807  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_pt"].resize(sizeOfRCjets, std::vector<float>());
4808  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_eta"].resize(sizeOfRCjets, std::vector<float>());
4809  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_phi"].resize(sizeOfRCjets, std::vector<float>());
4810  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_e"].resize(sizeOfRCjets, std::vector<float>());
4812  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_pt"].resize(sizeOfRCjets, -999.);
4813  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_eta"].resize(sizeOfRCjets, -999.);
4814  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_phi"].resize(sizeOfRCjets, -999.);
4815  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_e"].resize(sizeOfRCjets, -999.);
4816  }
4817  if (m_useVarRCJSS) {
4818  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau32_clstr"].resize(sizeOfRCjets, -999.);
4819  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau21_clstr"].resize(sizeOfRCjets, -999.);
4820  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau1_clstr"].resize(sizeOfRCjets, -999.);
4821  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau2_clstr"].resize(sizeOfRCjets, -999.);
4822  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau3_clstr"].resize(sizeOfRCjets, -999.);
4823 
4824  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d12_clstr"].resize(sizeOfRCjets, -999.);
4825  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d23_clstr"].resize(sizeOfRCjets, -999.);
4826  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_Qw_clstr"].resize(sizeOfRCjets, -999.);
4827 
4828  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_D2_clstr"].resize(sizeOfRCjets, -999.);
4829  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_ECF1_clstr"].resize(sizeOfRCjets, -999.);
4830  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_ECF2_clstr"].resize(sizeOfRCjets, -999.);
4831  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_ECF3_clstr"].resize(sizeOfRCjets, -999.);
4832  }
4834  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF332_clstr"].resize(sizeOfRCjets, -999.);
4835  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF461_clstr"].resize(sizeOfRCjets, -999.);
4836  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF322_clstr"].resize(sizeOfRCjets, -999.);
4837  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF331_clstr"].resize(sizeOfRCjets, -999.);
4838  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF422_clstr"].resize(sizeOfRCjets, -999.);
4839  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF441_clstr"].resize(sizeOfRCjets, -999.);
4840  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF212_clstr"].resize(sizeOfRCjets, -999.);
4841  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF321_clstr"].resize(sizeOfRCjets, -999.);
4842  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF311_clstr"].resize(sizeOfRCjets, -999.);
4843 
4844  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L1_clstr"].resize(sizeOfRCjets, -999.);
4845  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L2_clstr"].resize(sizeOfRCjets, -999.);
4846  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L3_clstr"].resize(sizeOfRCjets, -999.);
4847  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L4_clstr"].resize(sizeOfRCjets, -999.);
4848  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L5_clstr"].resize(sizeOfRCjets, -999.);
4849  }
4850 
4851  unsigned int i = 0;
4852 
4853  for (auto jet_ptr : *vrc_jets) {
4854  const xAOD::Jet* rc_jet = jet_ptr;
4855 
4856  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_pt"][i] = rc_jet->pt();
4857  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_eta"][i] = rc_jet->eta();
4858  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_phi"][i] = rc_jet->phi();
4859  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_e"][i] = rc_jet->e();
4860 
4861  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d12"][i] = (VarRCSplit12.isAvailable(*rc_jet)) ? VarRCSplit12(*rc_jet) : -999.;
4862  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d23"][i] = (VarRCSplit23.isAvailable(*rc_jet)) ? VarRCSplit23(*rc_jet) : -999.;
4863 
4865  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_pt"][i] = (RRCJet_pt.isAvailable(*rc_jet)) ? RRCJet_pt(*rc_jet) : -999.;
4866  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_eta"][i] = (RRCJet_eta.isAvailable(*rc_jet)) ? RRCJet_eta(*rc_jet) : -999.;
4867  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_phi"][i] = (RRCJet_phi.isAvailable(*rc_jet)) ? RRCJet_phi(*rc_jet) : -999.;
4868  m_VarRCjetBranchesParticle["vrrcjet_" + name + "_e"][i] = (RRCJet_e.isAvailable(*rc_jet)) ? RRCJet_e(*rc_jet) : -999.;
4869  }
4870  if (m_useVarRCJSS) {
4871  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau32_clstr"][i] = (Tau32_clstr.isAvailable(*rc_jet)) ? Tau32_clstr(*rc_jet) : -999.;
4872  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau21_clstr"][i] = (Tau21_clstr.isAvailable(*rc_jet)) ? Tau21_clstr(*rc_jet) : -999.;
4873  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau3_clstr"][i] = (Tau3_clstr.isAvailable(*rc_jet)) ? Tau3_clstr(*rc_jet) : -999.;
4874  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau2_clstr"][i] = (Tau2_clstr.isAvailable(*rc_jet)) ? Tau2_clstr(*rc_jet) : -999.;
4875  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_tau1_clstr"][i] = (Tau1_clstr.isAvailable(*rc_jet)) ? Tau1_clstr(*rc_jet) : -999.;
4876 
4877  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d12_clstr"][i] = (d12_clstr.isAvailable(*rc_jet)) ? d12_clstr(*rc_jet) : -999.;
4878  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_d23_clstr"][i] = (d23_clstr.isAvailable(*rc_jet)) ? d23_clstr(*rc_jet) : -999.;
4879  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_Qw_clstr"][i] = (Qw_clstr.isAvailable(*rc_jet)) ? Qw_clstr(*rc_jet) : -999.;
4880 
4881  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_D2_clstr"][i] = (D2_clstr.isAvailable(*rc_jet)) ? D2_clstr(*rc_jet) : -999.;
4882  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_ECF1_clstr"][i] = (ECF1_clstr.isAvailable(*rc_jet)) ? ECF1_clstr(*rc_jet) : -999.;
4883  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_ECF2_clstr"][i] = (ECF2_clstr.isAvailable(*rc_jet)) ? ECF2_clstr(*rc_jet) : -999.;
4884  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_ECF3_clstr"][i] = (ECF3_clstr.isAvailable(*rc_jet)) ? ECF3_clstr(*rc_jet) : -999.;
4885  }
4887  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF332_clstr"][i] = (gECF332_clstr.isAvailable(*rc_jet)) ? gECF332_clstr(*rc_jet) : -999.;
4888  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF461_clstr"][i] = (gECF461_clstr.isAvailable(*rc_jet)) ? gECF461_clstr(*rc_jet) : -999.;
4889  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF322_clstr"][i] = (gECF322_clstr.isAvailable(*rc_jet)) ? gECF322_clstr(*rc_jet) : -999.;
4890  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF331_clstr"][i] = (gECF331_clstr.isAvailable(*rc_jet)) ? gECF331_clstr(*rc_jet) : -999.;
4891  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF422_clstr"][i] = (gECF422_clstr.isAvailable(*rc_jet)) ? gECF422_clstr(*rc_jet) : -999.;
4892  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF441_clstr"][i] = (gECF441_clstr.isAvailable(*rc_jet)) ? gECF441_clstr(*rc_jet) : -999.;
4893  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF212_clstr"][i] = (gECF212_clstr.isAvailable(*rc_jet)) ? gECF212_clstr(*rc_jet) : -999.;
4894  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF321_clstr"][i] = (gECF321_clstr.isAvailable(*rc_jet)) ? gECF321_clstr(*rc_jet) : -999.;
4895  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_gECF311_clstr"][i] = (gECF311_clstr.isAvailable(*rc_jet)) ? gECF311_clstr(*rc_jet) : -999.;
4896 
4897  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L1_clstr"][i] = (L1_clstr.isAvailable(*rc_jet)) ? L1_clstr(*rc_jet) : -999.;
4898  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L2_clstr"][i] = (L2_clstr.isAvailable(*rc_jet)) ? L2_clstr(*rc_jet) : -999.;
4899  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L3_clstr"][i] = (L3_clstr.isAvailable(*rc_jet)) ? L3_clstr(*rc_jet) : -999.;
4900  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L4_clstr"][i] = (L4_clstr.isAvailable(*rc_jet)) ? L4_clstr(*rc_jet) : -999.;
4901  m_VarRCjetBranchesParticle[VarRC + "_" + name + "_L5_clstr"][i] = (L5_clstr.isAvailable(*rc_jet)) ? L5_clstr(*rc_jet) : -999.;
4902  }
4903 
4904  // loop over subjets
4905  const xAOD::Jet* subjet(nullptr);
4906  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_pt"][i].clear(); // clear the vector size
4907  // (otherwise it grows out of
4908  // control!)
4909  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_eta"][i].clear();
4910  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_phi"][i].clear();
4911  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_e"][i].clear();
4912  for (const auto *rc_jet_subjet : rc_jet->getConstituents()) {
4913  subjet = static_cast<const xAOD::Jet*>(rc_jet_subjet->rawConstituent());
4914 
4915  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_pt"][i].push_back(subjet->pt());
4916  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_eta"][i].push_back(subjet->eta());
4917  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_phi"][i].push_back(subjet->phi());
4918  m_VarRCjetsubBranchesParticle[VarRC + "_" + name + "_sub_e"][i].push_back(subjet->e());
4919  } // end for-loop over subjets
4920  ++i;
4921  } // end for-loop over re-clustered jets
4922  } // end loop over mass parameters
4923  } // end loop over multipliers for mass scale
4924  } // end if make VarRC jets
4925  // end VarRC jets
4926 
4927 
4928 
4929  //met
4930  if (m_config->useTruthMET()) {
4931  m_met_met = plEvent.m_met->met();
4932  m_met_phi = plEvent.m_met->phi();
4933  }
4934 
4935  if (m_config->doPseudoTop()) {
4936  const xAOD::PseudoTopResultContainer* pseudoTopResultContainer(nullptr);
4937  const xAOD::PseudoTopResult* pseudoTopResult(nullptr);
4938 
4939  if (evtStore()->contains<xAOD::PseudoTopResultContainer>(m_config->sgKeyPseudoTop(0))) {
4940  top::check(evtStore()->retrieve(pseudoTopResultContainer, m_config->sgKeyPseudoTop(0)), "Failed to retrieve PseudoTop");
4941 
4942  pseudoTopResult = pseudoTopResultContainer->at(0);
4943 
4944  m_PseudoTop_Particle_ttbar_pt = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_ttbar_pt");
4945  m_PseudoTop_Particle_ttbar_eta = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_ttbar_eta");
4946  m_PseudoTop_Particle_ttbar_phi = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_ttbar_phi");
4947  m_PseudoTop_Particle_ttbar_m = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_ttbar_m");
4948 
4949  m_PseudoTop_Particle_top_lep_pt = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_lep_pt");
4950  m_PseudoTop_Particle_top_lep_eta = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_lep_eta");
4951  m_PseudoTop_Particle_top_lep_phi = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_lep_phi");
4952  m_PseudoTop_Particle_top_lep_m = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_lep_m");
4953 
4954  m_PseudoTop_Particle_top_had_pt = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_had_pt");
4955  m_PseudoTop_Particle_top_had_eta = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_had_eta");
4956  m_PseudoTop_Particle_top_had_phi = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_had_phi");
4957  m_PseudoTop_Particle_top_had_m = pseudoTopResult->auxdecor<float>("PseudoTop_Particle_top_had_m");
4958  }
4959  }
4960  }
4961 
4963  //do it!
4965  }
4966 
4968  m_outputFile->Write();
4969  }
4970 
4972  const xAOD::TruthEventContainer* truthEvent(nullptr);
4973 
4974  top::check(evtStore()->retrieve(truthEvent, m_config->sgKeyTruthEvent()), "Failed to retrieve truth PDF info");
4975 
4976  if (truthEvent != nullptr) {
4977  unsigned int i(0);
4978  unsigned int truthEventSize = truthEvent->size();
4979  m_PDFinfo_X1.resize(truthEventSize);
4980  m_PDFinfo_X2.resize(truthEventSize);
4981  m_PDFinfo_PDGID1.resize(truthEventSize);
4982  m_PDFinfo_PDGID2.resize(truthEventSize);
4983  m_PDFinfo_Q.resize(truthEventSize);
4984  m_PDFinfo_XF1.resize(truthEventSize);
4985  m_PDFinfo_XF2.resize(truthEventSize);
4986 
4987  for (const auto* const tePtr : *truthEvent) {
4988  // LMTODO: ASG tools/pdfInfo() can't be used yet, since scale Q is not available
4989  // xAOD::TruthEvent::PdfInfo _pdfInfo=tePtr->pdfInfo();
4990  // if _pdfInfo.valid() { m_PDFinfo_X1[i] = _pdfInfo.x1; //etc. }
4991  std::string PDFinfoVarName = "X1";
4992  if (truthEvent->isAvailable<float>(PDFinfoVarName)) m_PDFinfo_X1[i] = (*tePtr).auxdataConst< float >(PDFinfoVarName);
4993  PDFinfoVarName = "X2";
4994  if (truthEvent->isAvailable<float>(PDFinfoVarName)) m_PDFinfo_X2[i] = (*tePtr).auxdataConst< float >(PDFinfoVarName);
4995  PDFinfoVarName = "PDGID1";
4996  if (truthEvent->isAvailable<int>(PDFinfoVarName)) m_PDFinfo_PDGID1[i] = (*tePtr).auxdataConst< int >(PDFinfoVarName);
4997  PDFinfoVarName = "PDGID2";
4998  if (truthEvent->isAvailable<int>(PDFinfoVarName)) m_PDFinfo_PDGID2[i] = (*tePtr).auxdataConst< int >(PDFinfoVarName);
4999  PDFinfoVarName = "XF1";
5000  if (truthEvent->isAvailable<float>(PDFinfoVarName)) m_PDFinfo_XF1[i] = (*tePtr).auxdataConst< float >(PDFinfoVarName);
5001  PDFinfoVarName = "XF2";
5002  if (truthEvent->isAvailable<float>(PDFinfoVarName)) m_PDFinfo_XF2[i] = (*tePtr).auxdataConst< float >(PDFinfoVarName);
5003  PDFinfoVarName = "Q";
5004  if (truthEvent->isAvailable<float>(PDFinfoVarName)) m_PDFinfo_Q[i] = (*tePtr).auxdataConst< float >(PDFinfoVarName);
5005  ++i;
5006  }
5007  }
5008  }
5009 
5011  const xAOD::TruthEventContainer* truthEvent(nullptr);
5012 
5013  top::check(evtStore()->retrieve(truthEvent, m_config->sgKeyTruthEvent()), "Failed to retrieve truth PDF info");
5014 
5015  for (const auto *tePtr : *truthEvent) {
5016  for (const std::string& pdf_name : m_config->LHAPDFSets()) {
5017  if (tePtr->isAvailable<std::vector<float> >("AnalysisTop_" + pdf_name + "_Weights")) {
5018  m_PDF_eventWeights[ pdf_name ] = tePtr->auxdata<std::vector<float> >("AnalysisTop_" + pdf_name + "_Weights");
5019  }
5020  }
5021  }
5022  }
5023 
5025  const xAOD::EventInfo* eventInfo(nullptr);
5026  top::check(evtStore()->retrieve(eventInfo, m_config->sgKeyEventInfo()), "Failed to retrieve EventInfo for loading of MCGenWeights!");
5027  m_mc_generator_weights = eventInfo->mcEventWeights();
5028  }
5029 
5030  // This bit is new
5031  // It is not optimal and can do with a lot of improvement
5032  // Consider it a first pass
5033  //
5034  // We can save xAOD objects into flat ntuple by looking at their SG::AuxElement data
5035  //
5036  // inspired by:
5037  // https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD/xAODCore/tags/xAODCore-00-00-93/Root/PrintHelpers.cxx
5038 
5040  // If the container doesn't have an auxiliary store, bail now:
5041  if (!obj.container()->getConstStore()) return;
5042 
5043  // Get a convenience pointer to the aux type registry:
5045 
5046  // Get the auxiliary IDs of the object:
5047  const SG::auxid_set_t& auxids =
5048  (obj.container()->getConstStore() ?
5049  obj.container()->getConstStore()->getAuxIDs() :
5050  obj.getConstStore()->getAuxIDs());
5051 
5052  // find the variables and fill them
5053  for (SG::auxid_t auxid : auxids) {
5054  // get the type of the variable
5055  const std::type_info* ti = reg.getType(auxid);
5056  // get the name of the variable
5057  const std::string name = reg.getName(auxid);
5058 
5059  // Add variable
5060  if (*ti == typeid(int)) {
5061  m_extraTruthVars_int.insert(std::make_pair(name, new int));
5062  } else if (*ti == typeid(float)) {
5063  m_extraTruthVars_float.insert(std::make_pair(name, new float));
5064  } else {
5065  ATH_MSG_INFO("insertObjectIntoTruthTree - you need another variable map for more types!");
5066  }
5067  }
5068 
5069  // add the variables to the truthTreeManager
5070  for (std::unordered_map<std::string, int*>::const_iterator i = m_extraTruthVars_int.begin(); i != m_extraTruthVars_int.end(); ++i) {
5071  m_truthTreeManager->makeOutputVariable(*(*i).second, (*i).first);
5072  }
5073  for (std::unordered_map<std::string, float*>::const_iterator i = m_extraTruthVars_float.begin(); i != m_extraTruthVars_float.end(); ++i) {
5074  m_truthTreeManager->makeOutputVariable(*(*i).second, (*i).first);
5075  }
5076  }
5077 
5079  // If the container doesn't have an auxiliary store, bail now:
5080  if (!obj.container()->getConstStore()) return;
5081 
5082  // Get a convenience pointer to the aux type registry:
5084  // Get the auxiliary IDs of the object:
5085  const SG::auxid_set_t& auxids =
5086  (obj.container()->getConstStore() ?
5087  obj.container()->getConstStore()->getAuxIDs() :
5088  obj.getConstStore()->getAuxIDs());
5089 
5090  // setup new variables
5091  for (SG::auxid_t auxid : auxids) {
5092  // get the type of the variable
5093  const std::type_info* ti = reg.getType(auxid);
5094  // get the name of the variable
5095  const std::string name = reg.getName(auxid);
5096 
5097  // Add variable
5098  if (*ti == typeid(int)) {
5100  if (itr != m_extraTruthVars_int.end()) {
5101  *((*itr).second) = obj.auxdataConst<int> (name);
5102  }
5103  } else if (*ti == typeid(float)) {
5105  if (itr != m_extraTruthVars_float.end()) {
5106  *((*itr).second) = obj.auxdataConst<float> (name);
5107  }
5108  } else {
5109  ATH_MSG_INFO("saveObjectIntoTruthTree - you need another variable map for more types!");
5110  }
5111  }
5112  }
5113 
5114  // get short name for FixedCutBEff_* WPs
5115  std::string EventSaverFlatNtuple::shortBtagWP(std::string const& WP) const {
5116  std::string str = "FixedCutBEff_";
5117  std::string out = WP;
5118  if (out.find(str) != std::string::npos) {
5119  out.replace(out.find(str), str.length(), "");
5120  }
5121  return out;
5122  }
5123 
5124  // remove "FT_EFF_", spaces, and "-" in named systematics
5125  std::string EventSaverFlatNtuple::betterBtagNamedSyst(const std::string& name) {
5126  std::string str = "FT_EFF_";
5127  std::string out = name;
5128  if (out.find(str) != std::string::npos) {
5129  out.replace(out.find(str), str.length(), "");
5130  }
5131  str = " ";
5132  while (out.find(str) != std::string::npos) {
5133  out.replace(out.find(str), str.length(), "_");
5134  }
5135  str = "-";
5136  while (out.find(str) != std::string::npos) {
5137  out.replace(out.find(str), str.length(), "_");
5138  }
5139  return out;
5140  }
5141 
5142  //new prompt lepton classification below based on
5143  // https://twiki.cern.ch/twiki/pub/AtlasProtected/IsolationFakeForum/MakeTruthClassification.hxx
5144  //these represent the latest IFF recommendations
5145  std::pair<bool, bool> EventSaverFlatNtuple::isPromptElectron(int type, int origin, int egMotherType, int egMotherOrigin, int egMotherPdgId, int RecoCharge) {
5146  // 43 is "diboson" origin, but is needed due to buggy origin flags in Sherpa ttbar
5147  bool isprompt = (type == 2 ||
5148  (type == 4 && origin == 5 && fabs(egMotherPdgId) == 11) ||
5149  // bkg electrons from ElMagDecay with origin top, W or Z, higgs, diBoson
5150  (type == 4 && origin == 7 && egMotherType == 2 && (egMotherOrigin == 10 || egMotherOrigin == 12 || egMotherOrigin == 13 || egMotherOrigin == 14 || egMotherOrigin == 43) && fabs(egMotherPdgId) == 11) ||
5151  // unknown electrons from multi-boson (sherpa 222, di-boson)
5152  (type == 1 && egMotherType == 2 && egMotherOrigin == 47 && fabs(egMotherPdgId) == 11));
5153 
5154  bool isChargeFl = false;
5155 
5156  if (egMotherPdgId * RecoCharge > 0) isChargeFl = true;
5157  if (isprompt) return std::make_pair(true, isChargeFl); //charge flipped electrons are also considered prompt
5158 
5159  // bkg photons from photon conv from FSR (must check!!)
5160  if (type == 4 && origin == 5 && egMotherOrigin == 40) return std::make_pair(true, false);
5161 
5162  // non-iso photons from FSR for the moment but we must check!! (must check!!)
5163  if (type == 15 && origin == 40) return std::make_pair(true, false);
5164 
5165  // mainly in Sherpa Zee, but some also in Zmumu
5166  if (type == 4 && origin == 7 && egMotherType == 15 && egMotherOrigin == 40) return std::make_pair(true, false);
5167 
5168  return std::make_pair(false, false);
5169  }
5170 
5172  // 43 is "diboson" origin, but is needed due to buggy origin flags in Sherpa ttbar
5173  bool prompt = (type == 6 &&
5174  (origin == 10 || origin == 12 || origin == 13 || origin == 14 || origin == 15 || origin == 22 || origin == 43));
5175 
5176  return prompt;
5177  }
5178 
5179  int EventSaverFlatNtuple::filterBranches(const top::TreeManager* treeManager, const std::string& variable) {
5180  std::vector<std::string> filteredBranches;
5181  if(treeManager->name() == "truth") filteredBranches= m_config->filterPartonLevelBranches();
5182  else if(treeManager->name() == "particleLevel") filteredBranches= m_config->filterParticleLevelBranches();
5183  else if(treeManager->name() == "nominal_Loose") filteredBranches= m_config->filterNominalLooseBranches();
5184  else if(treeManager->name() == "nominal") {
5185  if (m_config->filterNominalBranches().empty()) {
5186  filteredBranches= m_config->filterBranches();
5187  } else {
5188  filteredBranches= m_config->filterNominalBranches();
5189  }
5190  } else filteredBranches= m_config->filterBranches();
5191 
5192  // lambda to test a wildcard on the variable
5193  auto matches_wildcard = [&variable] (const std::string& wildcard) {
5194  std::smatch match;
5195  std::regex_search(variable, match, std::regex(wildcard));
5196  if (!match.empty()) return true;
5197 
5198  return false;
5199  };
5200 
5201  for (std::string filter : filteredBranches) {
5202  // replace "*" with ".*"
5203  filter = regex_replace(filter, std::regex("\\*"), ".*");
5204  // check for a match
5205  if (matches_wildcard(("^" + filter).c_str())) return 0;
5206  }
5207 
5208  return -1;
5209  }
5210 } // namespace
top::EventSaverFlatNtuple::m_met_met_withLooseObjects
float m_met_met_withLooseObjects
Definition: EventSaverFlatNtuple.h:811
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_CorrModel_ID_DOWN
std::vector< float > m_weight_leptonSF_EL_SF_CorrModel_ID_DOWN
Definition: EventSaverFlatNtuple.h:274
top::EventSaverFlatNtuple::m_failFJvt_jet_eta
std::vector< float > m_failFJvt_jet_eta
Definition: EventSaverFlatNtuple.h:686
top::MU_SF_TTVA_LUMI_UNCERT_UP
@ MU_SF_TTVA_LUMI_UNCERT_UP
Definition: ScaleFactorRetriever.h:88
top::MU_SF_ID_SUPRESSION_SCALE_UP
@ MU_SF_ID_SUPRESSION_SCALE_UP
Definition: ScaleFactorRetriever.h:67
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_named_up
std::unordered_map< std::string, std::unordered_map< std::string, std::vector< float > > > m_perjet_weight_trackjet_bTagSF_named_up
Definition: EventSaverFlatNtuple.h:457
top::EventSaverFlatNtuple::m_rcjet_L1_clstr
std::vector< float > m_rcjet_L1_clstr
Definition: EventSaverFlatNtuple.h:793
top::EventSaverFlatNtuple::m_klfitter_model_lq2_pt
std::vector< float > m_klfitter_model_lq2_pt
Definition: EventSaverFlatNtuple.h:851
xAOD::BTagging_v1::ptau
bool ptau(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:374
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_MATCHING_DOWN
float m_weight_leptonSF_MU_SF_ID_MATCHING_DOWN
Definition: EventSaverFlatNtuple.h:296
top::MU_SF_ID_MATCHING_LOWPT_UP
@ MU_SF_ID_MATCHING_LOWPT_UP
Definition: ScaleFactorRetriever.h:63
top::EventSaverFlatNtuple::m_mc_pdgId
std::vector< int > m_mc_pdgId
Definition: EventSaverFlatNtuple.h:981
top::EventSaverFlatNtuple::m_jet_ghostTrack_pt
std::vector< std::vector< float > > m_jet_ghostTrack_pt
Definition: EventSaverFlatNtuple.h:633
top::EventSaverFlatNtuple::m_rrcjet_e
std::vector< float > m_rrcjet_e
Definition: EventSaverFlatNtuple.h:766
top::EventSaverFlatNtuple::m_mc_pt
std::vector< float > m_mc_pt
Definition: EventSaverFlatNtuple.h:976
top::EventSaverFlatNtuple::m_VarRCjetBranches
std::map< std::string, std::vector< float > > m_VarRCjetBranches
Definition: EventSaverFlatNtuple.h:747
top::EventSaverFlatNtuple::m_el_CF
std::vector< char > m_el_CF
Definition: EventSaverFlatNtuple.h:498
top::ParticleLevelEvent::m_muons
const xAOD::TruthParticleContainer * m_muons
Pointer to truth level muons.
Definition: ParticleLevelEvent.h:45
top::EventSaverFlatNtuple::m_weight_jvt
float m_weight_jvt
Definition: EventSaverFlatNtuple.h:402
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_DOWN
float m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_DOWN
Definition: EventSaverFlatNtuple.h:304
top::EventSaverFlatNtuple::m_weight_bTagSF_named_up
std::unordered_map< std::string, std::unordered_map< std::string, float > > m_weight_bTagSF_named_up
Definition: EventSaverFlatNtuple.h:447
top::EventSaverFlatNtuple::m_rcjet_L2_clstr
std::vector< float > m_rcjet_L2_clstr
Definition: EventSaverFlatNtuple.h:794
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonRNN_non_prompt_b
std::vector< float > m_PLIV_mu_PromptLeptonRNN_non_prompt_b
Definition: EventSaverFlatNtuple.h:584
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
top::EventSaverFlatNtuple::m_mu_eta
std::vector< float > m_mu_eta
Definition: EventSaverFlatNtuple.h:522
top::EL_SF_ID_UP
@ EL_SF_ID_UP
Definition: ScaleFactorRetriever.h:35
top::EventSaverFlatNtuple::m_met_sigHT
float m_met_sigHT
Definition: EventSaverFlatNtuple.h:805
top::EventSaverFlatNtuple::m_rcjetsub_eta
std::vector< std::vector< float > > m_rcjetsub_eta
Definition: EventSaverFlatNtuple.h:759
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topLep_m
float m_klfitter_bestPerm_topLep_m
Definition: EventSaverFlatNtuple.h:933
top::EventSaverFlatNtuple::DLx
std::unordered_map< std::string, SG::AuxElement::ConstAccessor< float > > DLx
Definition: EventSaverFlatNtuple.h:723
BTaggingUtilities.h
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b1_jetIndex
std::vector< unsigned int > m_klfitter_model_Higgs_b1_jetIndex
Definition: EventSaverFlatNtuple.h:861
xAOD::Iso::ptvarcone30
@ ptvarcone30
Definition: IsolationType.h:56
top::EventSaverFlatNtuple::m_klfitter_model_lq2_phi
std::vector< float > m_klfitter_model_lq2_phi
Definition: EventSaverFlatNtuple.h:853
AtomicConstAccessor.h
Access an auxiliary variable atomically.
top::EventSaverFlatNtuple::m_mu_actual_original
float m_mu_actual_original
Definition: EventSaverFlatNtuple.h:476
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_DOWN
float m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_DOWN
Definition: EventSaverFlatNtuple.h:351
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel
std::vector< float > m_PLIV_mu_PromptLeptonImprovedInput_CaloClusterERel
Definition: EventSaverFlatNtuple.h:592
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_DOWN
float m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_DOWN
Definition: EventSaverFlatNtuple.h:349
xAOD::PartonHistory
Interface class.
Definition: PartonHistory.h:48
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF
std::unordered_map< std::string, float > m_weight_trackjet_bTagSF
Definition: EventSaverFlatNtuple.h:395
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_UP
float m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_UP
Definition: EventSaverFlatNtuple.h:291
top::EventSaverFlatNtuple::m_klfitter_parameters
std::vector< std::vector< double > > m_klfitter_parameters
Definition: EventSaverFlatNtuple.h:829
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_pt
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_pt
Definition: EventSaverFlatNtuple.h:676
top::EventSaverFlatNtuple::m_triggerDecisions
std::unordered_map< std::string, char > m_triggerDecisions
Decisions on if the event passed / failed a particular trigger.
Definition: EventSaverFlatNtuple.h:237
top::EventSaverFlatNtuple::m_PseudoTop_Particle_ttbar_phi
float m_PseudoTop_Particle_ttbar_phi
Definition: EventSaverFlatNtuple.h:963
top::EventSaverFlatNtuple::m_jet_ghostTrack_e
std::vector< std::vector< float > > m_jet_ghostTrack_e
Definition: EventSaverFlatNtuple.h:636
top::EventSaverFlatNtuple::loadPdfInfo
void loadPdfInfo()
Helper function to load the PDF info from the current truth event and write it into the branch output...
Definition: EventSaverFlatNtuple.cxx:4971
top::EventSaverFlatNtuple::recordSelectionDecision
void recordSelectionDecision(const top::Event &event)
For each selection that we run in the top-xaod code, we "decorate" event info with a variable saying ...
Definition: EventSaverFlatNtuple.cxx:1901
top::EventSaverFlatNtuple::m_mu_e
std::vector< float > m_mu_e
Definition: EventSaverFlatNtuple.h:524
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_STAT_DOWN
float m_weight_leptonSF_MU_SF_Isol_STAT_DOWN
Definition: EventSaverFlatNtuple.h:331
top::EventSaverFlatNtuple::m_jet_eta
std::vector< float > m_jet_eta
Definition: EventSaverFlatNtuple.h:617
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b2_eta
std::vector< float > m_klfitter_model_Higgs_b2_eta
Definition: EventSaverFlatNtuple.h:864
top::EventSaverFlatNtuple::m_jet_HadronConeExclExtendedTruthLabelID
std::vector< int > m_jet_HadronConeExclExtendedTruthLabelID
Definition: EventSaverFlatNtuple.h:627
top::EventSaverFlatNtuple::m_met_sig
float m_met_sig
Definition: EventSaverFlatNtuple.h:804
top::EventSaverFlatNtuple::m_extraTruthVars_float
std::unordered_map< std::string, float * > m_extraTruthVars_float
Definition: EventSaverFlatNtuple.h:1020
top::MU_SF_ID_CR3_DOWN
@ MU_SF_ID_CR3_DOWN
Definition: ScaleFactorRetriever.h:73
FlavorTagDiscriminants::hbb_key::subjet
const std::string subjet
Definition: HbbConstants.h:18
top::EL_SF_ID_DOWN
@ EL_SF_ID_DOWN
Definition: ScaleFactorRetriever.h:35
top::topSFSyst
topSFSyst
– Top SF enmu, as CP::SystematicSet won't do the job –///
Definition: ScaleFactorRetriever.h:28
top::EventSaverFlatNtuple::m_weight_pileup_UP
float m_weight_pileup_UP
– Pileup SF systematics –///
Definition: EventSaverFlatNtuple.h:254
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_eigen_B_up
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_trackjet_bTagSF_eigen_B_up
Definition: EventSaverFlatNtuple.h:421
top::EventSaverFlatNtuple::m_jet_e
std::vector< float > m_jet_e
Definition: EventSaverFlatNtuple.h:619
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_DOWN
float m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_DOWN
Definition: EventSaverFlatNtuple.h:335
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topHad_E
float m_klfitter_bestPerm_topHad_E
Definition: EventSaverFlatNtuple.h:938
top::EL_SF_Trigger_DOWN
@ EL_SF_Trigger_DOWN
Definition: ScaleFactorRetriever.h:31
top::MU_SF_ID_BKG_FRACTION_DOWN
@ MU_SF_ID_BKG_FRACTION_DOWN
Definition: ScaleFactorRetriever.h:59
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
top::EventSaverFlatNtuple::execute
virtual void execute() override
Execute stuff common for reco/particle/parton level, e.g.
Definition: EventSaverFlatNtuple.cxx:1575
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonRNN_prompt
std::vector< float > m_PLIV_mu_PromptLeptonRNN_prompt
Definition: EventSaverFlatNtuple.h:586
top::ParticleLevelEvent::m_info
const xAOD::EventInfo * m_info
Pointer to the event info object.
Definition: ParticleLevelEvent.h:39
xAOD::Iso::topoetcone20
@ topoetcone20
Topo-cluster ET-sum.
Definition: IsolationType.h:48
top::EventSaverFlatNtuple::m_track_pt
std::vector< float > m_track_pt
Definition: EventSaverFlatNtuple.h:642
top::EventSaverFlatNtuple::m_mu_true_isPrompt
std::vector< char > m_mu_true_isPrompt
Definition: EventSaverFlatNtuple.h:536
top::FWDEL_SF_ID_UP
@ FWDEL_SF_ID_UP
Definition: ScaleFactorRetriever.h:127
top::EventSaverFlatNtuple::m_rcjet_eta
std::vector< float > m_rcjet_eta
Definition: EventSaverFlatNtuple.h:753
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_DOWN
float m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_DOWN
Definition: EventSaverFlatNtuple.h:361
top::EventSaverFlatNtuple::m_rcjet_d23_clstr
std::vector< float > m_rcjet_d23_clstr
Definition: EventSaverFlatNtuple.h:780
top::EventSaverFlatNtuple::m_klfitter_model_lq2_E
std::vector< float > m_klfitter_model_lq2_E
Definition: EventSaverFlatNtuple.h:854
top::EventSaverFlatNtuple::m_ASMdecorName
std::string m_ASMdecorName
– weights for matrix-method fakes estimate, for each selection and configuration –///
Definition: EventSaverFlatNtuple.h:463
top::EventSaverFlatNtuple::m_failJvt_jet_pt
std::vector< float > m_failJvt_jet_pt
Definition: EventSaverFlatNtuple.h:665
top::MU_SF_Isol_STAT_UP
@ MU_SF_Isol_STAT_UP
Definition: ScaleFactorRetriever.h:53
xAOD::Iso::ptvarcone20
@ ptvarcone20
Mini-Isolation http://arxiv.org/abs/1007.2221.
Definition: IsolationType.h:55
top::EventSaverFlatNtuple::m_rcjet_Qw_clstr
std::vector< float > m_rcjet_Qw_clstr
Definition: EventSaverFlatNtuple.h:781
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_eta
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_eta
Definition: EventSaverFlatNtuple.h:677
top
TopConfig A simple configuration that is NOT a singleton.
Definition: AnalysisTrackingHelper.cxx:58
top::EventSaverFlatNtuple::m_track_d0
std::vector< float > m_track_d0
Definition: EventSaverFlatNtuple.h:646
top::EventSaverFlatNtuple::m_weight_bTagSF_eigen_Light_up
std::unordered_map< std::string, std::vector< float > > m_weight_bTagSF_eigen_Light_up
Definition: EventSaverFlatNtuple.h:436
top::EventSaverFlatNtuple::m_fwdel_isTight
std::vector< char > m_fwdel_isTight
Definition: EventSaverFlatNtuple.h:518
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_SYST_DOWN
float m_weight_leptonSF_MU_SF_TTVA_SYST_DOWN
Definition: EventSaverFlatNtuple.h:355
top::EventSaverFlatNtuple::m_failJvt_jet_truthflav
std::vector< int > m_failJvt_jet_truthflav
Definition: EventSaverFlatNtuple.h:672
top::EventSaverFlatNtuple::m_track_phi
std::vector< float > m_track_phi
Definition: EventSaverFlatNtuple.h:644
top::EventSaverFlatNtuple::m_rcjetsub_Ghosts_CHadron_Final_Count
std::vector< std::vector< int > > m_rcjetsub_Ghosts_CHadron_Final_Count
Definition: EventSaverFlatNtuple.h:1014
top::EventSaverFlatNtuple::m_tjet_tagWeightBin
std::unordered_map< std::string, std::vector< int > > m_tjet_tagWeightBin
Definition: EventSaverFlatNtuple.h:729
top::EventSaverFlatNtuple::m_rrcjet_phi
std::vector< float > m_rrcjet_phi
Definition: EventSaverFlatNtuple.h:765
top::EventSaverFlatNtuple::m_failJvt_jet_passfjvt
std::vector< char > m_failJvt_jet_passfjvt
Definition: EventSaverFlatNtuple.h:671
TrackParticlexAODHelpers.h
top::EventSaverFlatNtuple::m_softmu_delta_z0_sintheta
std::vector< float > m_softmu_delta_z0_sintheta
Definition: EventSaverFlatNtuple.h:549
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top1_jetIndex
std::vector< unsigned int > m_klfitter_model_lj2_from_top1_jetIndex
Definition: EventSaverFlatNtuple.h:914
top::EventSaverFlatNtuple::m_mu_isTight
std::vector< char > m_mu_isTight
Definition: EventSaverFlatNtuple.h:530
top::EventSaverFlatNtuple::loadPdfWeights
void loadPdfWeights()
Helper function to load the PDF weights from the current truth event and write them into the branch o...
Definition: EventSaverFlatNtuple.cxx:5010
top::EventSaverFlatNtuple::m_failJvt_jet_e
std::vector< float > m_failJvt_jet_e
Definition: EventSaverFlatNtuple.h:668
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_eigen_C_down
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_bTagSF_eigen_C_down
Definition: EventSaverFlatNtuple.h:431
top::EventSaverFlatNtuple::m_klfitter_model_nu_phi
std::vector< float > m_klfitter_model_nu_phi
Definition: EventSaverFlatNtuple.h:889
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
top::EventSaverFlatNtuple::m_klfitter_model_blep_jetIndex
std::vector< unsigned int > m_klfitter_model_blep_jetIndex
Definition: EventSaverFlatNtuple.h:843
top::EventSaverFlatNtuple::m_failFJvt_jet_phi
std::vector< float > m_failFJvt_jet_phi
Definition: EventSaverFlatNtuple.h:687
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
top::MU_SF_TTVA_EXTRAPOLATION_UP
@ MU_SF_TTVA_EXTRAPOLATION_UP
Definition: ScaleFactorRetriever.h:92
top::EL_SF_Reco_UP
@ EL_SF_Reco_UP
Definition: ScaleFactorRetriever.h:33
top::EventSaverFlatNtuple::m_ljet_substructure
std::unordered_map< std::string, std::vector< float > > m_ljet_substructure
Definition: EventSaverFlatNtuple.h:712
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top2_E
std::vector< float > m_klfitter_model_lj1_from_top2_E
Definition: EventSaverFlatNtuple.h:919
top::EventSaverFlatNtuple::finalize
virtual void finalize() override
Not used by the flat ntuple code yet, but needed by the xAOD code.
Definition: EventSaverFlatNtuple.cxx:4967
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_STAT_UP
float m_weight_leptonSF_MU_SF_TTVA_STAT_UP
Definition: EventSaverFlatNtuple.h:352
top::EventSaverFlatNtuple::m_mu_charge
std::vector< float > m_mu_charge
Definition: EventSaverFlatNtuple.h:525
SG::AuxTypeRegistry::instance
static AuxTypeRegistry & instance()
Return the singleton registry instance.
Definition: AuxTypeRegistry.cxx:49
top::EventSaverFlatNtuple::m_softmu_charge
std::vector< float > m_softmu_charge
Definition: EventSaverFlatNtuple.h:546
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_named_up
std::unordered_map< std::string, std::unordered_map< std::string, std::vector< float > > > m_perjet_weight_bTagSF_named_up
Definition: EventSaverFlatNtuple.h:453
top::EventSaverFlatNtuple::m_mu_eta_bare
std::vector< float > m_mu_eta_bare
Definition: EventSaverFlatNtuple.h:1005
top::EventSaverFlatNtuple::m_rcjet_ECF3_clstr
std::vector< float > m_rcjet_ECF3_clstr
Definition: EventSaverFlatNtuple.h:777
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
top::EventSaverFlatNtuple::m_klfitter_model_lq1_phi
std::vector< float > m_klfitter_model_lq1_phi
Definition: EventSaverFlatNtuple.h:847
top::EventSaverFlatNtuple::m_track_e
std::vector< float > m_track_e
Definition: EventSaverFlatNtuple.h:645
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_SYST_UP
float m_weight_leptonSF_MU_SF_TTVA_SYST_UP
Definition: EventSaverFlatNtuple.h:354
top::EventSaverFlatNtuple::m_met_phi
float m_met_phi
Definition: EventSaverFlatNtuple.h:803
top::EventSaverFlatNtuple::m_mc_phi
std::vector< float > m_mc_phi
Definition: EventSaverFlatNtuple.h:978
top::EventSaverFlatNtuple::m_useRCAdditionalJSS
bool m_useRCAdditionalJSS
Definition: EventSaverFlatNtuple.h:737
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_UP
float m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_UP
Definition: EventSaverFlatNtuple.h:346
top::EventSaverFlatNtuple::m_klfitter_model_bhad_pt
std::vector< float > m_klfitter_model_bhad_pt
Model.
Definition: EventSaverFlatNtuple.h:833
top::EventSaverFlatNtuple::m_jet_Ghosts_BHadron_Final_Count
std::vector< int > m_jet_Ghosts_BHadron_Final_Count
Definition: EventSaverFlatNtuple.h:1009
top::EventSaverFlatNtuple::m_ph_eta
std::vector< float > m_ph_eta
Definition: EventSaverFlatNtuple.h:598
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_DOWN
float m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_DOWN
Definition: EventSaverFlatNtuple.h:326
xAOD::EventInfo_v1::mcEventWeights
const std::vector< float > & mcEventWeights() const
The weights of all the MC events used in the simulation.
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_e
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_e
Definition: EventSaverFlatNtuple.h:699
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_UP
float m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_UP
Definition: EventSaverFlatNtuple.h:297
top::ParticleLevelEvent::m_selectionDecisions
std::unordered_map< std::string, int > m_selectionDecisions
Definition: ParticleLevelEvent.h:76
top::BTAG_SF_NAMED_DOWN
@ BTAG_SF_NAMED_DOWN
Definition: ScaleFactorRetriever.h:121
top::ScaleFactorRetriever::tauSF
float tauSF(const top::Event &event, const top::topSFSyst SFSyst) const
: get the tauSF for all taus in event
Definition: ScaleFactorRetriever.cxx:1325
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topHad_eta
float m_klfitter_bestPerm_topHad_eta
Definition: EventSaverFlatNtuple.h:936
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
top::MU_SF_ID_TAGPT_UP
@ MU_SF_ID_TAGPT_UP
Definition: ScaleFactorRetriever.h:76
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top1_E
std::vector< float > m_klfitter_model_lj1_from_top1_E
Definition: EventSaverFlatNtuple.h:907
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top1_jetIndex
std::vector< unsigned int > m_klfitter_model_lj1_from_top1_jetIndex
Definition: EventSaverFlatNtuple.h:908
index
Definition: index.py:1
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top2_jetIndex
std::vector< unsigned int > m_klfitter_model_lj2_from_top2_jetIndex
Definition: EventSaverFlatNtuple.h:926
top::EventSaverFlatNtuple::m_ljet_Ghosts_BHadron_Final_Count
std::vector< int > m_ljet_Ghosts_BHadron_Final_Count
Definition: EventSaverFlatNtuple.h:1011
top::EventSaverFlatNtuple::fillParticleLevelEvent
virtual void fillParticleLevelEvent()
Definition: EventSaverFlatNtuple.cxx:4962
SG::AuxElement
Base class for elements of a container that can have aux data.
Definition: AuxElement.h:446
top::EventSaverFlatNtuple::m_el_true_type
std::vector< int > m_el_true_type
Definition: EventSaverFlatNtuple.h:502
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top1_eta
std::vector< float > m_klfitter_model_b_from_top1_eta
Definition: EventSaverFlatNtuple.h:893
IsoCloseByCorrectionTest.WP
WP
Definition: IsoCloseByCorrectionTest.py:56
top::MU_SF_ID_LUMI_UNCERT_DOWN
@ MU_SF_ID_LUMI_UNCERT_DOWN
Definition: ScaleFactorRetriever.h:61
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_lep_pt
float m_PseudoTop_Particle_top_lep_pt
Definition: EventSaverFlatNtuple.h:969
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedVeto
std::vector< float > m_PLIV_mu_PromptLeptonImprovedVeto
Definition: EventSaverFlatNtuple.h:594
top::EventSaverFlatNtuple::m_el_eta
std::vector< float > m_el_eta
Definition: EventSaverFlatNtuple.h:487
top::MU_SF_Trigger_STAT_UP
@ MU_SF_Trigger_STAT_UP
Definition: ScaleFactorRetriever.h:44
top::EventSaverFlatNtuple::m_weight_fwdElSF
float m_weight_fwdElSF
—Fwd electrons –///
Definition: EventSaverFlatNtuple.h:257
top::EventSaverFlatNtuple::m_track_z0_significance
std::vector< float > m_track_z0_significance
Definition: EventSaverFlatNtuple.h:651
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top1_E
std::vector< float > m_klfitter_model_lj2_from_top1_E
Definition: EventSaverFlatNtuple.h:913
xAOD::MissingET_v1::phi
float phi() const
Returns .
top::EventSaverFlatNtuple::m_failJvt_jet_HadronConeExclExtendedTruthLabelID
std::vector< int > m_failJvt_jet_HadronConeExclExtendedTruthLabelID
Definition: EventSaverFlatNtuple.h:675
top::EventSaverFlatNtuple::m_mu_e_bare
std::vector< float > m_mu_e_bare
Definition: EventSaverFlatNtuple.h:1007
top::EventSaverFlatNtuple::m_rcjet_ECF1_clstr
std::vector< float > m_rcjet_ECF1_clstr
Definition: EventSaverFlatNtuple.h:775
top::EventSaverFlatNtuple::m_klfitter_model_lepZ2_index
std::vector< unsigned int > m_klfitter_model_lepZ2_index
Definition: EventSaverFlatNtuple.h:885
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_DOWN
float m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:287
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_had_pt
float m_PseudoTop_Reco_top_had_pt
Definition: EventSaverFlatNtuple.h:953
top::EventSaverFlatNtuple::m_mc_e
std::vector< float > m_mc_e
Definition: EventSaverFlatNtuple.h:979
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_MVAXBin
std::vector< short > m_PLIV_el_PromptLeptonImprovedInput_MVAXBin
Definition: EventSaverFlatNtuple.h:573
top::EventSaverFlatNtuple::m_mu_phi_bare
std::vector< float > m_mu_phi_bare
Definition: EventSaverFlatNtuple.h:1006
top::EventSaverFlatNtuple::m_rcjet_tau32_clstr
std::vector< float > m_rcjet_tau32_clstr
Definition: EventSaverFlatNtuple.h:768
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_MC_XSEC_UP
float m_weight_leptonSF_MU_SF_Isol_MC_XSEC_UP
Definition: EventSaverFlatNtuple.h:340
top::EventSaverFlatNtuple::betterBtagNamedSyst
std::string betterBtagNamedSyst(const std::string &WP)
remove "FT_EFF_" and spaces in named systematics
Definition: EventSaverFlatNtuple.cxx:5125
top::EventSaverFlatNtuple::m_weight_tauSF_variations
std::map< top::topSFSyst, float > m_weight_tauSF_variations
Definition: EventSaverFlatNtuple.h:382
top::EventSaverFlatNtuple::m_failFJvt_jet_e
std::vector< float > m_failFJvt_jet_e
Definition: EventSaverFlatNtuple.h:688
top::EventSaverFlatNtuple::cleanParticleLevelEvent
virtual void cleanParticleLevelEvent()
Definition: EventSaverFlatNtuple.cxx:4221
top::EventSaverFlatNtuple::m_klfitter_bestPerm_ttbar_E
float m_klfitter_bestPerm_ttbar_E
Definition: EventSaverFlatNtuple.h:944
top::EventSaverFlatNtuple::treeManagers
std::vector< std::shared_ptr< top::TreeManager > > treeManagers()
Allow classes that build on top of this to access the tree managers.
Definition: EventSaverFlatNtuple.cxx:217
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_DOWN
float m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_DOWN
Definition: EventSaverFlatNtuple.h:302
top::EventSaverFlatNtuple::m_mc_generator_weights
std::vector< float > m_mc_generator_weights
Definition: EventSaverFlatNtuple.h:995
top::MU_SF_ID_SYST_LOWPT_UP
@ MU_SF_ID_SYST_LOWPT_UP
Definition: ScaleFactorRetriever.h:51
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
top::EventSaverFlatNtuple::m_PseudoTop_Reco_ttbar_m
float m_PseudoTop_Reco_ttbar_m
Definition: EventSaverFlatNtuple.h:952
top::EventSaverFlatNtuple::m_VarRCjetBranchesParticle
std::map< std::string, std::vector< float > > m_VarRCjetBranchesParticle
Definition: EventSaverFlatNtuple.h:749
top::EventSaverFlatNtuple::m_failFJvt_jet_passjvt
std::vector< char > m_failFJvt_jet_passjvt
Definition: EventSaverFlatNtuple.h:691
top::ParticleLevelEvent::m_jets
const xAOD::JetContainer * m_jets
Pointer to truth level jets.
Definition: ParticleLevelEvent.h:54
top::PHOTON_EFF_TRIGGER_UNCERTAINTY_UP
@ PHOTON_EFF_TRIGGER_UNCERTAINTY_UP
Definition: ScaleFactorRetriever.h:116
skel.it
it
Definition: skel.GENtoEVGEN.py:423
top::MU_SF_Isol_LUMI_UNCERT_UP
@ MU_SF_Isol_LUMI_UNCERT_UP
Definition: ScaleFactorRetriever.h:80
top::MU_SF_ID_QCD_TEMPLATE_DOWN
@ MU_SF_ID_QCD_TEMPLATE_DOWN
Definition: ScaleFactorRetriever.h:66
top::EventSaverFlatNtuple::isPromptElectron
std::pair< bool, bool > isPromptElectron(int type, int origin, int egMotherType, int egMotherOrigin, int egMotherPdgId, int RecoCharge)
Definition: EventSaverFlatNtuple.cxx:5145
top::EventSaverFlatNtuple::m_branchFilters
std::vector< top::TreeManager::BranchFilter > m_branchFilters
branch filters - cf ANALYSISTO-61
Definition: EventSaverFlatNtuple.h:224
asg
Definition: DataHandleTestTool.h:28
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top1_E
std::vector< float > m_klfitter_model_b_from_top1_E
Definition: EventSaverFlatNtuple.h:895
top::EventSaverFlatNtuple::m_weight_trigger
float m_weight_trigger
– triggers –///
Definition: EventSaverFlatNtuple.h:370
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_eigen_B_up
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_bTagSF_eigen_B_up
Definition: EventSaverFlatNtuple.h:419
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_lep_eta
float m_PseudoTop_Particle_top_lep_eta
Definition: EventSaverFlatNtuple.h:970
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_had_phi
float m_PseudoTop_Reco_top_had_phi
Definition: EventSaverFlatNtuple.h:955
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_named_up
std::unordered_map< std::string, std::unordered_map< std::string, float > > m_weight_trackjet_bTagSF_named_up
Definition: EventSaverFlatNtuple.h:449
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel
std::vector< float > m_PLIV_mu_PromptLeptonImprovedInput_topoetcone30rel
Definition: EventSaverFlatNtuple.h:588
top::TAU_SF_END
@ TAU_SF_END
Definition: ScaleFactorRetriever.h:112
top::EventSaverFlatNtuple::m_softmu_SF_ID
std::vector< float > m_softmu_SF_ID
Definition: EventSaverFlatNtuple.h:553
top::EventSaverFlatNtuple::m_klfitter_parameterErrors
std::vector< std::vector< double > > m_klfitter_parameterErrors
Definition: EventSaverFlatNtuple.h:830
top::EventSaverFlatNtuple::m_el_charge
std::vector< float > m_el_charge
Definition: EventSaverFlatNtuple.h:491
top::MU_SF_TTVA_SUPRESSION_SCALE_UP
@ MU_SF_TTVA_SUPRESSION_SCALE_UP
Definition: ScaleFactorRetriever.h:91
top::EventSaverFlatNtuple::m_met_sigVarT
float m_met_sigVarT
Definition: EventSaverFlatNtuple.h:809
top::EventSaverFlatNtuple::m_track_theta
std::vector< float > m_track_theta
Definition: EventSaverFlatNtuple.h:653
top::EventSaverFlatNtuple::m_el_d0sig
std::vector< float > m_el_d0sig
Definition: EventSaverFlatNtuple.h:500
xAOD::Iso::etcone40
@ etcone40
Definition: IsolationType.h:34
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest
std::vector< float > m_PLIV_mu_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest
Definition: EventSaverFlatNtuple.h:593
top::EventSaverFlatNtuple::m_weight_trigger_PH_UNCERT_DOWN
float m_weight_trigger_PH_UNCERT_DOWN
Definition: EventSaverFlatNtuple.h:378
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
xAOD::Iso::topoetcone30
@ topoetcone30
Definition: IsolationType.h:49
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_had_eta
float m_PseudoTop_Reco_top_had_eta
Definition: EventSaverFlatNtuple.h:954
top::tauSF_alias
const std::map< topSFSyst, TString > tauSF_alias
Definition: ScaleFactorRetriever.h:179
top::MU_SF_ID_BAD_MUON_VETO_UP
@ MU_SF_ID_BAD_MUON_VETO_UP
Definition: ScaleFactorRetriever.h:70
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top2_pt
std::vector< float > m_klfitter_model_lj1_from_top2_pt
Definition: EventSaverFlatNtuple.h:916
top::EventSaverFlatNtuple::calculateEvent
virtual void calculateEvent(const top::Event &event)
Definition: EventSaverFlatNtuple.cxx:1931
top::EventSaverFlatNtuple::m_failJvt_jet_eta
std::vector< float > m_failJvt_jet_eta
Definition: EventSaverFlatNtuple.h:666
top::EventSaverFlatNtuple::m_mc_charge
std::vector< double > m_mc_charge
Definition: EventSaverFlatNtuple.h:980
top::EventSaverFlatNtuple::m_sfRetriever
top::ScaleFactorRetriever * m_sfRetriever
Scale factors.
Definition: EventSaverFlatNtuple.h:203
top::EventSaverFlatNtuple::m_runNumber
unsigned int m_runNumber
Definition: EventSaverFlatNtuple.h:471
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_CorrModel_Reco_UP
std::vector< float > m_weight_leptonSF_EL_SF_CorrModel_Reco_UP
– electron SF advanded correlation model systematics –///
Definition: EventSaverFlatNtuple.h:271
top::EventSaverFlatNtuple::m_klfitter_model_lepZ1_eta
std::vector< float > m_klfitter_model_lepZ1_eta
Definition: EventSaverFlatNtuple.h:876
top::MU_SF_ID_STAT_LOWPT_DOWN
@ MU_SF_ID_STAT_LOWPT_DOWN
Definition: ScaleFactorRetriever.h:50
top::EventSaverFlatNtuple::m_weight_jvt_down
float m_weight_jvt_down
Definition: EventSaverFlatNtuple.h:404
top::PHOTON_EFF_ISO_DOWN
@ PHOTON_EFF_ISO_DOWN
Definition: ScaleFactorRetriever.h:115
xAOD::Jet_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: Jet_v1.cxx:54
top::EventSaverFlatNtuple::m_weight_photonSF_effIso_UP
float m_weight_photonSF_effIso_UP
Definition: EventSaverFlatNtuple.h:388
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_DRlj
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_DRlj
Definition: EventSaverFlatNtuple.h:578
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_eigen_Light_down
std::unordered_map< std::string, std::vector< float > > m_weight_trackjet_bTagSF_eigen_Light_down
Definition: EventSaverFlatNtuple.h:439
top::EventSaverFlatNtuple::m_klfitter_model_lq1_pt
std::vector< float > m_klfitter_model_lq1_pt
Definition: EventSaverFlatNtuple.h:845
top::MU_SF_ID_MATCHING_UP
@ MU_SF_ID_MATCHING_UP
Definition: ScaleFactorRetriever.h:62
top::MU_SF_ID_TRUTH_UP
@ MU_SF_ID_TRUTH_UP
Definition: ScaleFactorRetriever.h:68
top::EventSaverFlatNtuple::truthTreeManager
std::shared_ptr< top::TreeManager > truthTreeManager()
Definition: EventSaverFlatNtuple.cxx:221
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top2_phi
std::vector< float > m_klfitter_model_b_from_top2_phi
Definition: EventSaverFlatNtuple.h:900
top::EventSaverFlatNtuple::loadMCGeneratorWeights
void loadMCGeneratorWeights()
Helper function to load the OTF-computed MC generator weights.
Definition: EventSaverFlatNtuple.cxx:5024
top::EventSaverFlatNtuple::m_rcjet_gECF332_clstr
std::vector< float > m_rcjet_gECF332_clstr
Definition: EventSaverFlatNtuple.h:784
top::EventSaverFlatNtuple::m_track_d0_significance
std::vector< float > m_track_d0_significance
Definition: EventSaverFlatNtuple.h:650
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top1_pt
std::vector< float > m_klfitter_model_b_from_top1_pt
Definition: EventSaverFlatNtuple.h:892
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_DOWN
float m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_DOWN
Definition: EventSaverFlatNtuple.h:345
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF
std::unordered_map< std::string, std::vector< float > > m_perjet_weight_trackjet_bTagSF
Definition: EventSaverFlatNtuple.h:399
xAOD::Iso::etcone30
@ etcone30
Definition: IsolationType.h:33
top::EventSaverFlatNtuple::m_track_z0
std::vector< float > m_track_z0
Definition: EventSaverFlatNtuple.h:647
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_lep_m
float m_PseudoTop_Particle_top_lep_m
Definition: EventSaverFlatNtuple.h:972
top::EventSaverFlatNtuple::m_jet_ghostTrack_z0
std::vector< std::vector< float > > m_jet_ghostTrack_z0
Definition: EventSaverFlatNtuple.h:638
top::EventSaverFlatNtuple::m_ph_pt
std::vector< float > m_ph_pt
Definition: EventSaverFlatNtuple.h:597
top::EventSaverFlatNtuple::m_mu_ptvarcone30
std::vector< float > m_mu_ptvarcone30
Definition: EventSaverFlatNtuple.h:527
top::EventSaverFlatNtuple::m_rcjetsub_e
std::vector< std::vector< float > > m_rcjetsub_e
Definition: EventSaverFlatNtuple.h:761
top::EventSaverFlatNtuple::m_triggerPrescales
std::unordered_map< std::string, float > m_triggerPrescales
Pre-scale of the trigger menu for each event.
Definition: EventSaverFlatNtuple.h:240
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topLep_E
float m_klfitter_bestPerm_topLep_E
Definition: EventSaverFlatNtuple.h:932
top::EventSaverFlatNtuple::m_weight_trigger_MU_SF_SYST_DOWN
float m_weight_trigger_MU_SF_SYST_DOWN
Definition: EventSaverFlatNtuple.h:376
top::MU_SF_Isol_SHERPA_POWHEG_DOWN
@ MU_SF_Isol_SHERPA_POWHEG_DOWN
Definition: ScaleFactorRetriever.h:84
top::EventSaverFlatNtuple::m_tau_phi
std::vector< float > m_tau_phi
Definition: EventSaverFlatNtuple.h:610
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topHad_phi
float m_klfitter_bestPerm_topHad_phi
Definition: EventSaverFlatNtuple.h:937
top::EventSaverFlatNtuple::m_softmu_SF_ID_STAT_DOWN
std::vector< float > m_softmu_SF_ID_STAT_DOWN
Definition: EventSaverFlatNtuple.h:555
top::EventSaverFlatNtuple::m_klfitter_bestPerm_ttbar_m
float m_klfitter_bestPerm_ttbar_m
Definition: EventSaverFlatNtuple.h:945
top::EventSaverFlatNtuple::m_weight_fwdElSF_FWDEL_SF_ID_DOWN
float m_weight_fwdElSF_FWDEL_SF_ID_DOWN
Definition: EventSaverFlatNtuple.h:259
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_UP
float m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_UP
Definition: EventSaverFlatNtuple.h:325
top::MU_SF_ID_HIGHETA_PROBEIP_DOWN
@ MU_SF_ID_HIGHETA_PROBEIP_DOWN
Definition: ScaleFactorRetriever.h:74
top::EventSaverFlatNtuple::m_jet_DLx_pc
std::unordered_map< std::string, std::vector< float > > m_jet_DLx_pc
Definition: EventSaverFlatNtuple.h:660
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_eigen_B_down
std::unordered_map< std::string, std::vector< float > > m_weight_trackjet_bTagSF_eigen_B_down
Definition: EventSaverFlatNtuple.h:417
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_had_m
float m_PseudoTop_Particle_top_had_m
Definition: EventSaverFlatNtuple.h:968
top::ParticleLevelEvent::m_taus
const xAOD::TruthParticleContainer * m_taus
Pointer to truth level photons.
Definition: ParticleLevelEvent.h:66
top::EventSaverFlatNtuple::m_softmu_parent_pdgid
std::vector< int > m_softmu_parent_pdgid
Definition: EventSaverFlatNtuple.h:564
top::EventSaverFlatNtuple::m_met_sigET
float m_met_sigET
Definition: EventSaverFlatNtuple.h:806
top::EventSaverFlatNtuple::m_klfitter_model_lep_phi
std::vector< float > m_klfitter_model_lep_phi
Definition: EventSaverFlatNtuple.h:871
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_TRUTH_DOWN
float m_weight_leptonSF_MU_SF_ID_TRUTH_DOWN
Definition: EventSaverFlatNtuple.h:308
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top2_phi
std::vector< float > m_klfitter_model_lj2_from_top2_phi
Definition: EventSaverFlatNtuple.h:924
top::EL_SF_Trigger_UP
@ EL_SF_Trigger_UP
Definition: ScaleFactorRetriever.h:31
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_had_phi
float m_PseudoTop_Particle_top_had_phi
Definition: EventSaverFlatNtuple.h:967
top::MU_SF_ID_EXTRAPOLATION_UP
@ MU_SF_ID_EXTRAPOLATION_UP
Definition: ScaleFactorRetriever.h:77
xAOD::Jet_v1::getConstituents
JetConstituentVector getConstituents() const
Return a vector of consituents. The object behaves like vector<const IParticle*>. See JetConstituentV...
Definition: Jet_v1.cxx:147
top::EventSaverFlatNtuple::m_failJvt_jet_phi
std::vector< float > m_failJvt_jet_phi
Definition: EventSaverFlatNtuple.h:667
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_ID_UP
float m_weight_leptonSF_EL_SF_ID_UP
Definition: EventSaverFlatNtuple.h:266
top::EventSaverFlatNtuple::m_ph_trigMatched
std::unordered_map< std::string, std::vector< char > > m_ph_trigMatched
Definition: EventSaverFlatNtuple.h:605
top::EventSaverFlatNtuple::weight_bTagSF
const std::unordered_map< std::string, float > & weight_bTagSF() const
Definition: EventSaverFlatNtuple.h:1086
top::EventSaverFlatNtuple::m_softmu_eta
std::vector< float > m_softmu_eta
Definition: EventSaverFlatNtuple.h:543
top::EventSaverFlatNtuple::m_softmu_SF_ID_STAT_LOWPT_DOWN
std::vector< float > m_softmu_SF_ID_STAT_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:559
top::EventSaverFlatNtuple::m_weight_trigger_EL_SF_DOWN
float m_weight_trigger_EL_SF_DOWN
Definition: EventSaverFlatNtuple.h:372
top::EventSaverFlatNtuple::m_fwdel_etcone30
std::vector< float > m_fwdel_etcone30
Definition: EventSaverFlatNtuple.h:516
top::EventSaverFlatNtuple::m_el_true_firstEgMotherPdgId
std::vector< int > m_el_true_firstEgMotherPdgId
Definition: EventSaverFlatNtuple.h:506
python.DomainsRegistry.reg
reg
globals -----------------------------------------------------------------—
Definition: DomainsRegistry.py:343
top::EventSaverFlatNtuple::m_el_e
std::vector< float > m_el_e
Definition: EventSaverFlatNtuple.h:490
top::EventSaverFlatNtuple::m_klfitter_model_lepZ1_phi
std::vector< float > m_klfitter_model_lepZ1_phi
Definition: EventSaverFlatNtuple.h:877
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_d0
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_d0
Definition: EventSaverFlatNtuple.h:680
StringUtil.h
top::MU_SF_ID_BAD_MUON_VETO_DOWN
@ MU_SF_ID_BAD_MUON_VETO_DOWN
Definition: ScaleFactorRetriever.h:70
top::EventSaverFlatNtuple::m_makeRCJets
bool m_makeRCJets
Definition: EventSaverFlatNtuple.h:734
top::EventSaverFlatNtuple::m_weight_leptonSF
float m_weight_leptonSF
– Lepton SF –///
Definition: EventSaverFlatNtuple.h:262
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top2_eta
std::vector< float > m_klfitter_model_lj1_from_top2_eta
Definition: EventSaverFlatNtuple.h:917
top::EventSaverFlatNtuple::m_mu_actual
float m_mu_actual
Definition: EventSaverFlatNtuple.h:477
top::EventSaverFlatNtuple::m_jet_isTrueHS
std::vector< char > m_jet_isTrueHS
Definition: EventSaverFlatNtuple.h:626
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topHad_pt
float m_klfitter_bestPerm_topHad_pt
Definition: EventSaverFlatNtuple.h:935
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_DOWN
float m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_DOWN
Definition: EventSaverFlatNtuple.h:367
top::EventSaverFlatNtuple::m_softmu_SF_ID_STAT_UP
std::vector< float > m_softmu_SF_ID_STAT_UP
Definition: EventSaverFlatNtuple.h:554
top::JVT_UP
@ JVT_UP
Definition: ScaleFactorRetriever.h:123
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_UP
float m_weight_leptonSF_MU_SF_ID_PT_DEPENDENCY_UP
Definition: EventSaverFlatNtuple.h:301
xAOD::TrackParticle_v1::d0
float d0() const
Returns the parameter.
SG::AuxElement::auxdecor
Decorator< T, ALLOC >::reference_type auxdecor(const std::string &name) const
Fetch an aux decoration, as a non-const reference.
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
top::EventSaverFlatNtuple::m_klfitter_model_nu_E
std::vector< float > m_klfitter_model_nu_E
Definition: EventSaverFlatNtuple.h:890
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_DRMUJ_DOWN
float m_weight_leptonSF_MU_SF_Isol_DRMUJ_DOWN
Definition: EventSaverFlatNtuple.h:337
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_DOWN
float m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:310
top::ScaleFactorRetriever::softmuonSF_ID
float softmuonSF_ID(const xAOD::Muon &x, const top::topSFSyst SFSyst) const
Definition: ScaleFactorRetriever.cxx:1053
top::EventSaverFlatNtuple::saveObjectIntoTruthTree
void saveObjectIntoTruthTree(const SG::AuxElement &obj)
Definition: EventSaverFlatNtuple.cxx:5078
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_UP
float m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_UP
Definition: EventSaverFlatNtuple.h:356
top::EventSaverFlatNtuple::m_softmu_true_type
std::vector< int > m_softmu_true_type
Definition: EventSaverFlatNtuple.h:550
EventTools.h
A few functions for doing operations on particles / events. Currently holds code for dR,...
top::EventSaverFlatNtuple::m_ph_phi
std::vector< float > m_ph_phi
Definition: EventSaverFlatNtuple.h:599
top::EventSaverFlatNtuple::m_klfitter_model_lq1_eta
std::vector< float > m_klfitter_model_lq1_eta
Definition: EventSaverFlatNtuple.h:846
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_MVAXBin
std::vector< short > m_PLIV_mu_PromptLeptonImprovedInput_MVAXBin
Definition: EventSaverFlatNtuple.h:587
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedVetoECAP
std::vector< float > m_PLIV_el_PromptLeptonImprovedVetoECAP
Definition: EventSaverFlatNtuple.h:583
top::EventSaverFlatNtuple::~EventSaverFlatNtuple
virtual ~EventSaverFlatNtuple()
Does nothing.
Definition: EventSaverFlatNtuple.cxx:203
top::EventSaverFlatNtuple::m_el_phi_bare
std::vector< float > m_el_phi_bare
Definition: EventSaverFlatNtuple.h:1001
top::MU_SF_ID_SYST_LOWPT_DOWN
@ MU_SF_ID_SYST_LOWPT_DOWN
Definition: ScaleFactorRetriever.h:51
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_CorrModel_Iso_UP
std::vector< float > m_weight_leptonSF_EL_SF_CorrModel_Iso_UP
Definition: EventSaverFlatNtuple.h:275
top::MU_SF_ID_HIGHETA_PROBEISO_DOWN
@ MU_SF_ID_HIGHETA_PROBEISO_DOWN
Definition: ScaleFactorRetriever.h:75
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_Reco_UP
float m_weight_leptonSF_EL_SF_Reco_UP
– Lepton SF - electron SF systematics –///
Definition: EventSaverFlatNtuple.h:264
top::MU_SF_Trigger_SYST_UP
@ MU_SF_Trigger_SYST_UP
Definition: ScaleFactorRetriever.h:45
top::MU_SF_ID_FIT_MODEL_LOWPT_DOWN
@ MU_SF_ID_FIT_MODEL_LOWPT_DOWN
Definition: ScaleFactorRetriever.h:60
top::EventSaverFlatNtuple::m_PDFinfo_X2
std::vector< float > m_PDFinfo_X2
Definition: EventSaverFlatNtuple.h:987
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_UP
float m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_UP
Definition: EventSaverFlatNtuple.h:293
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top2_pt
std::vector< float > m_klfitter_model_b_from_top2_pt
Definition: EventSaverFlatNtuple.h:898
top::EventSaverFlatNtuple::m_klfitter_bestPerm_ttbar_pt
float m_klfitter_bestPerm_ttbar_pt
Definition: EventSaverFlatNtuple.h:941
top::EventSaverFlatNtuple::m_klfitter_model_nu_pt
std::vector< float > m_klfitter_model_nu_pt
Definition: EventSaverFlatNtuple.h:887
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_eigen_Light_up
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_trackjet_bTagSF_eigen_Light_up
Definition: EventSaverFlatNtuple.h:443
covarianceTool.filter
filter
Definition: covarianceTool.py:514
top::MU_SF_Trigger_STAT_DOWN
@ MU_SF_Trigger_STAT_DOWN
Definition: ScaleFactorRetriever.h:44
HitType::wildcard
@ wildcard
top::MU_SF_Trigger_SYST_DOWN
@ MU_SF_Trigger_SYST_DOWN
Definition: ScaleFactorRetriever.h:45
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top2_eta
std::vector< float > m_klfitter_model_lj2_from_top2_eta
Definition: EventSaverFlatNtuple.h:923
top::ParticleLevelEvent::m_largeRJets
const xAOD::JetContainer * m_largeRJets
Pointer to the truth level large R jets.
Definition: ParticleLevelEvent.h:63
top::ScaleFactorRetriever::leptonSF
float leptonSF(const top::Event &event, const top::topSFSyst SFSyst) const
Definition: ScaleFactorRetriever.cxx:85
top::EventSaverFlatNtuple::m_rcjet_tau3_clstr
std::vector< float > m_rcjet_tau3_clstr
Definition: EventSaverFlatNtuple.h:770
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topLep_pt
float m_klfitter_bestPerm_topLep_pt
Definition: EventSaverFlatNtuple.h:929
SG::AuxTypeRegistry
Handle mappings between names and auxid_t.
Definition: AuxTypeRegistry.h:62
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP
float m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_UP
Definition: EventSaverFlatNtuple.h:311
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_CR3_UP
float m_weight_leptonSF_MU_SF_ID_CR3_UP
Definition: EventSaverFlatNtuple.h:317
top::EventSaverFlatNtuple::m_softmu_SF_ID_SYST_LOWPT_UP
std::vector< float > m_softmu_SF_ID_SYST_LOWPT_UP
Definition: EventSaverFlatNtuple.h:560
top::EventSaverFlatNtuple::m_selectionDecisions
std::vector< int > m_selectionDecisions
Definition of event variables.
Definition: EventSaverFlatNtuple.h:234
top::BTAG_SF_EIGEN_C
@ BTAG_SF_EIGEN_C
Definition: ScaleFactorRetriever.h:119
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top1_phi
std::vector< float > m_klfitter_model_lj1_from_top1_phi
Definition: EventSaverFlatNtuple.h:906
xAOD::EventInfo_v1::mcChannelNumber
uint32_t mcChannelNumber() const
The MC generator's channel number.
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_Reco_DOWN
float m_weight_leptonSF_EL_SF_Reco_DOWN
Definition: EventSaverFlatNtuple.h:265
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_TRUTH_UP
float m_weight_leptonSF_MU_SF_ID_TRUTH_UP
Definition: EventSaverFlatNtuple.h:307
top::EventSaverFlatNtuple::m_useRCJSS
bool m_useRCJSS
Definition: EventSaverFlatNtuple.h:736
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_pt
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_pt
Definition: EventSaverFlatNtuple.h:696
top::EventSaverFlatNtuple::topConfig
std::shared_ptr< top::TopConfig > topConfig()
Allow child classes to access the configuration object.
Definition: EventSaverFlatNtuple.cxx:213
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_DOWN
float m_weight_leptonSF_MU_SF_ID_LUMI_UNCERT_DOWN
Definition: EventSaverFlatNtuple.h:294
SG::AuxElement::auxdataConst
Accessor< T, ALLOC >::const_reference_type auxdataConst(const std::string &name) const
Fetch an aux data variable, as a const reference.
top::EventSaverFlatNtuple::m_mu_topoetcone20
std::vector< float > m_mu_topoetcone20
Definition: EventSaverFlatNtuple.h:526
EventSaverFlatNtuple.h
top::EventSaverFlatNtuple::m_klfitter_model_lep_eta
std::vector< float > m_klfitter_model_lep_eta
Definition: EventSaverFlatNtuple.h:870
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_UP
float m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_UP
Definition: EventSaverFlatNtuple.h:289
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_UP
float m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_UP
Definition: EventSaverFlatNtuple.h:338
top::EventSaverFlatNtuple::calculateParticleLevelEvent
virtual void calculateParticleLevelEvent(const top::ParticleLevelEvent &plEvent)
Definition: EventSaverFlatNtuple.cxx:4228
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_DOWN
float m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_DOWN
Definition: EventSaverFlatNtuple.h:359
top::EventSaverFlatNtuple::m_el_true_isPrompt
std::vector< char > m_el_true_isPrompt
Definition: EventSaverFlatNtuple.h:507
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
top::EventSaverFlatNtuple::setupParticleLevelTreeManager
void setupParticleLevelTreeManager()
Internal function which configures the particle level tree manager.
Definition: EventSaverFlatNtuple.cxx:1589
top::MU_SF_ID_MC_XSEC_DOWN
@ MU_SF_ID_MC_XSEC_DOWN
Definition: ScaleFactorRetriever.h:64
top::EventSaverFlatNtuple::m_weight_trigger_MU_SF_STAT_UP
float m_weight_trigger_MU_SF_STAT_UP
Definition: EventSaverFlatNtuple.h:373
top::EventSaverFlatNtuple::filterBranches
int filterBranches(const top::TreeManager *, const std::string &variable)
Definition: EventSaverFlatNtuple.cxx:5179
top::EventSaverFlatNtuple::m_klfitter_model_lq2_eta
std::vector< float > m_klfitter_model_lq2_eta
Definition: EventSaverFlatNtuple.h:852
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_STAT_DOWN
float m_weight_leptonSF_MU_SF_ID_STAT_DOWN
Definition: EventSaverFlatNtuple.h:280
top::EventSaverFlatNtuple::m_makeVarRCJets
bool m_makeVarRCJets
Definition: EventSaverFlatNtuple.h:735
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_UP
float m_weight_leptonSF_MU_SF_ID_SYST_LOWPT_UP
Definition: EventSaverFlatNtuple.h:286
top::EventSaverFlatNtuple::m_met_sigRho
float m_met_sigRho
Definition: EventSaverFlatNtuple.h:807
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
top::EventSaverFlatNtuple::m_randomRunNumber
unsigned int m_randomRunNumber
Definition: EventSaverFlatNtuple.h:472
top::EventSaverFlatNtuple::m_met_met
float m_met_met
Definition: EventSaverFlatNtuple.h:801
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_DOWN
float m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_DOWN
Definition: EventSaverFlatNtuple.h:306
top::EventSaverFlatNtuple::m_tau_pt
std::vector< float > m_tau_pt
Definition: EventSaverFlatNtuple.h:608
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_DOWN
float m_weight_leptonSF_MU_SF_Isol_SHERPA_POWHEG_DOWN
Definition: EventSaverFlatNtuple.h:347
top::EventSaverFlatNtuple::m_el_topoetcone20
std::vector< float > m_el_topoetcone20
Definition: EventSaverFlatNtuple.h:493
SG::auxid_t
size_t auxid_t
Identifier for a particular aux data item.
Definition: AuxTypes.h:27
xAOD::PseudoTopResult
Interface class.
Definition: PseudoTopResult.h:18
top::EventSaverFlatNtuple::m_ljet_tagSF
std::unordered_map< std::string, std::vector< float > > m_ljet_tagSF
Definition: EventSaverFlatNtuple.h:715
top::ParticleLevelEvent::m_RCJets
xAOD::JetContainer m_RCJets
Container of recluster jets (can be sorted)
Definition: ParticleLevelEvent.h:57
top::EventSaverFlatNtuple::m_softmu_phi
std::vector< float > m_softmu_phi
Definition: EventSaverFlatNtuple.h:544
top::EventSaverFlatNtuple::m_rcjet_gECF212_clstr
std::vector< float > m_rcjet_gECF212_clstr
Definition: EventSaverFlatNtuple.h:790
top::MU_SF_Isol_SYST_DOWN
@ MU_SF_Isol_SYST_DOWN
Definition: ScaleFactorRetriever.h:54
top::EventSaverFlatNtuple::m_weight_trigger_MU_SF_STAT_DOWN
float m_weight_trigger_MU_SF_STAT_DOWN
Definition: EventSaverFlatNtuple.h:374
top::EventSaverFlatNtuple::m_el_ptvarcone20
std::vector< float > m_el_ptvarcone20
Definition: EventSaverFlatNtuple.h:494
top::EventSaverFlatNtuple::m_klfitter_model_blep_E
std::vector< float > m_klfitter_model_blep_E
Definition: EventSaverFlatNtuple.h:842
top::EventSaverFlatNtuple::m_failFJvt_jet_jvt
std::vector< float > m_failFJvt_jet_jvt
Definition: EventSaverFlatNtuple.h:689
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_DRlj
std::vector< float > m_PLIV_mu_PromptLeptonImprovedInput_DRlj
Definition: EventSaverFlatNtuple.h:590
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_MC_XSEC_UP
float m_weight_leptonSF_MU_SF_ID_MC_XSEC_UP
Definition: EventSaverFlatNtuple.h:299
top::EventSaverFlatNtuple::m_jet_isbtagged
std::unordered_map< std::string, std::vector< char > > m_jet_isbtagged
Definition: EventSaverFlatNtuple.h:628
top::EventSaverFlatNtuple::m_weight_photonSF_ID_DOWN
float m_weight_photonSF_ID_DOWN
Definition: EventSaverFlatNtuple.h:387
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topHad_m
float m_klfitter_bestPerm_topHad_m
Definition: EventSaverFlatNtuple.h:939
top::ParticleLevelEvent::m_VarRCJets
std::unordered_map< std::string, std::shared_ptr< xAOD::JetContainer > > m_VarRCJets
Containers of variable-R reclustered jets (can be sorted)
Definition: ParticleLevelEvent.h:60
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_SYST_UP
float m_weight_leptonSF_MU_SF_ID_SYST_UP
Definition: EventSaverFlatNtuple.h:281
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN
float m_weight_leptonSF_MU_SF_ID_BAD_MUON_VETO_DOWN
Definition: EventSaverFlatNtuple.h:312
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_eta
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_eta
Definition: EventSaverFlatNtuple.h:697
top::MU_SF_Isol_LUMI_UNCERT_DOWN
@ MU_SF_Isol_LUMI_UNCERT_DOWN
Definition: ScaleFactorRetriever.h:80
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_phi
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_phi
Definition: EventSaverFlatNtuple.h:678
top::EventSaverFlatNtuple::m_tjet_DLx_pu
std::unordered_map< std::string, std::vector< float > > m_tjet_DLx_pu
Definition: EventSaverFlatNtuple.h:727
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_eigen_B_up
std::unordered_map< std::string, std::vector< float > > m_weight_trackjet_bTagSF_eigen_B_up
Definition: EventSaverFlatNtuple.h:416
top::EventSaverFlatNtuple::m_klfitter_model_lepZ2_eta
std::vector< float > m_klfitter_model_lepZ2_eta
Definition: EventSaverFlatNtuple.h:882
top::TAU_SF_NOMINAL
@ TAU_SF_NOMINAL
Definition: ScaleFactorRetriever.h:94
top::EventSaverFlatNtuple::m_softmu_SF_ID_STAT_LOWPT_UP
std::vector< float > m_softmu_SF_ID_STAT_LOWPT_UP
Definition: EventSaverFlatNtuple.h:558
top::EventSaverFlatNtuple::m_jet_DLx
std::unordered_map< std::string, std::vector< float > > m_jet_DLx
Definition: EventSaverFlatNtuple.h:658
top::EventSaverFlatNtuple::m_klfitter_atLeastOneFitParameterAtItsLimit
std::vector< short > m_klfitter_atLeastOneFitParameterAtItsLimit
Definition: EventSaverFlatNtuple.h:821
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_lep_phi
float m_PseudoTop_Reco_top_lep_phi
Definition: EventSaverFlatNtuple.h:959
top::EventSaverFlatNtuple::m_fwdel_e
std::vector< float > m_fwdel_e
Definition: EventSaverFlatNtuple.h:514
top::EventSaverFlatNtuple::m_weight_poisson
std::vector< int > m_weight_poisson
Weights for bootstrapping.
Definition: EventSaverFlatNtuple.h:467
top::EventSaverFlatNtuple::m_weight_tauSF
float m_weight_tauSF
Definition: EventSaverFlatNtuple.h:381
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_TAGPT_DOWN
float m_weight_leptonSF_MU_SF_ID_TAGPT_DOWN
Definition: EventSaverFlatNtuple.h:324
top::EventSaverFlatNtuple::m_klfitter_model_lep_E
std::vector< float > m_klfitter_model_lep_E
Definition: EventSaverFlatNtuple.h:872
top::EventSaverFlatNtuple::m_ljet_phi
std::vector< float > m_ljet_phi
Definition: EventSaverFlatNtuple.h:707
top::EventSaverFlatNtuple::m_el_e_bare
std::vector< float > m_el_e_bare
Definition: EventSaverFlatNtuple.h:1002
top::EventSaverFlatNtuple::m_rcjet_phi
std::vector< float > m_rcjet_phi
Definition: EventSaverFlatNtuple.h:754
top::EventSaverFlatNtuple::m_jet_DLx_pb
std::unordered_map< std::string, std::vector< float > > m_jet_DLx_pb
Definition: EventSaverFlatNtuple.h:659
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top2_jetIndex
std::vector< unsigned int > m_klfitter_model_b_from_top2_jetIndex
Definition: EventSaverFlatNtuple.h:902
top::EventSaverFlatNtuple::m_failFJvt_jet_truthflav
std::vector< int > m_failFJvt_jet_truthflav
Definition: EventSaverFlatNtuple.h:692
top::ScaleFactorRetriever::triggerSF
float triggerSF(const top::Event &event, const top::topSFSyst SFSyst) const
Definition: ScaleFactorRetriever.cxx:176
top::EventSaverFlatNtuple::m_rrcjet_eta
std::vector< float > m_rrcjet_eta
Definition: EventSaverFlatNtuple.h:764
xAOD::BTagging_v1::pc
bool pc(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:367
top::MU_SF_TTVA_MC_XSEC_UP
@ MU_SF_TTVA_MC_XSEC_UP
Definition: ScaleFactorRetriever.h:89
top::EventSaverFlatNtuple::m_el_true_origin
std::vector< int > m_el_true_origin
Definition: EventSaverFlatNtuple.h:503
top::EventSaverFlatNtuple::EventSaverFlatNtuple
EventSaverFlatNtuple()
A default constructor so that this class can be created at run-time by ROOT.
Definition: EventSaverFlatNtuple.cxx:34
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
top::EventSaverFlatNtuple::isPromptMuon
bool isPromptMuon(int type, int origin)
Definition: EventSaverFlatNtuple.cxx:5171
top::BTAG_SF_EIGEN_LIGHT
@ BTAG_SF_EIGEN_LIGHT
Definition: ScaleFactorRetriever.h:120
top::EventSaverFlatNtuple::m_tau_e
std::vector< float > m_tau_e
Definition: EventSaverFlatNtuple.h:611
top::EventSaverFlatNtuple::m_rcjet_pt
std::vector< float > m_rcjet_pt
Definition: EventSaverFlatNtuple.h:752
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b2_jetIndex
std::vector< unsigned int > m_klfitter_model_Higgs_b2_jetIndex
Definition: EventSaverFlatNtuple.h:867
top::EventSaverFlatNtuple::m_failFJvt_jet_pt
std::vector< float > m_failFJvt_jet_pt
Definition: EventSaverFlatNtuple.h:685
top::EventSaverFlatNtuple::m_weight_bTagSF_eigen_B_up
std::unordered_map< std::string, std::vector< float > > m_weight_bTagSF_eigen_B_up
Definition: EventSaverFlatNtuple.h:414
top::EventSaverFlatNtuple::m_rcjet_gECF311_clstr
std::vector< float > m_rcjet_gECF311_clstr
Definition: EventSaverFlatNtuple.h:792
top::EventSaverFlatNtuple::m_klfitter_bestPerm_ttbar_phi
float m_klfitter_bestPerm_ttbar_phi
Definition: EventSaverFlatNtuple.h:943
lumiFormat.i
int i
Definition: lumiFormat.py:92
top::EventSaverFlatNtuple::particleLevelTreeManager
std::shared_ptr< top::TreeManager > particleLevelTreeManager()
Return a shared pointer to the top::TreeManager object that is used for the particle level output tre...
Definition: EventSaverFlatNtuple.cxx:225
top::EventSaverFlatNtuple::m_failFJvt_jet_isTrueHS
std::vector< char > m_failFJvt_jet_isTrueHS
Definition: EventSaverFlatNtuple.h:694
top::ScaleFactorRetriever::btagSF_eigen_vars
void btagSF_eigen_vars(const top::Event &event, const top::topSFSyst SFSyst, std::vector< float > &btagSF_up, std::vector< float > &btagSF_down, std::string WP="FixedCutBEff_77", bool do_trackjets=false) const
Definition: ScaleFactorRetriever.cxx:1514
top::EventSaverFlatNtuple::m_fwdel_etcone20
std::vector< float > m_fwdel_etcone20
Definition: EventSaverFlatNtuple.h:515
top::EventSaverFlatNtuple::m_mu
float m_mu
Definition: EventSaverFlatNtuple.h:475
top::EventSaverFlatNtuple::m_ljet_eta
std::vector< float > m_ljet_eta
Definition: EventSaverFlatNtuple.h:706
top::MU_SF_ID_BKG_FRACTION_UP
@ MU_SF_ID_BKG_FRACTION_UP
Definition: ScaleFactorRetriever.h:59
top::EventSaverFlatNtuple::m_rcjet_gECF321_clstr
std::vector< float > m_rcjet_gECF321_clstr
Definition: EventSaverFlatNtuple.h:791
top::EventSaverFlatNtuple::m_failJvt_jet_isTrueHS
std::vector< char > m_failJvt_jet_isTrueHS
Definition: EventSaverFlatNtuple.h:674
top::EventSaverFlatNtuple::m_weight_photonSF_ID_UP
float m_weight_photonSF_ID_UP
Definition: EventSaverFlatNtuple.h:386
xAOD::Iso::etcone20
@ etcone20
Calorimeter isolation.
Definition: IsolationType.h:32
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_d0
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_d0
Definition: EventSaverFlatNtuple.h:700
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_eigen_Light_down
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_trackjet_bTagSF_eigen_Light_down
Definition: EventSaverFlatNtuple.h:444
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_CR1_UP
float m_weight_leptonSF_MU_SF_ID_CR1_UP
Definition: EventSaverFlatNtuple.h:313
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topLep_phi
float m_klfitter_bestPerm_topLep_phi
Definition: EventSaverFlatNtuple.h:931
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_CR3_DOWN
float m_weight_leptonSF_MU_SF_ID_CR3_DOWN
Definition: EventSaverFlatNtuple.h:318
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_UP
float m_weight_leptonSF_MU_SF_Isol_BKG_FRACTION_UP
Definition: EventSaverFlatNtuple.h:334
top::MU_SF_TTVA_LUMI_UNCERT_DOWN
@ MU_SF_TTVA_LUMI_UNCERT_DOWN
Definition: ScaleFactorRetriever.h:88
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b2_pt
std::vector< float > m_klfitter_model_Higgs_b2_pt
Definition: EventSaverFlatNtuple.h:863
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_UP
float m_weight_leptonSF_MU_SF_Isol_QCD_TEMPLATE_UP
Definition: EventSaverFlatNtuple.h:344
top::EventSaverFlatNtuple::m_klfitter_model_lq1_jetIndex
std::vector< unsigned int > m_klfitter_model_lq1_jetIndex
Definition: EventSaverFlatNtuple.h:849
top::EventSaverFlatNtuple::m_weight_forwardjvt
float m_weight_forwardjvt
Definition: EventSaverFlatNtuple.h:406
top::EventSaverFlatNtuple::m_rcjet_gECF331_clstr
std::vector< float > m_rcjet_gECF331_clstr
Definition: EventSaverFlatNtuple.h:787
top::EventSaverFlatNtuple::m_rcjetsub_phi
std::vector< std::vector< float > > m_rcjetsub_phi
Definition: EventSaverFlatNtuple.h:760
top::EventSaverFlatNtuple::m_mc_status
std::vector< int > m_mc_status
Definition: EventSaverFlatNtuple.h:982
top::MU_SF_Isol_QCD_TEMPLATE_DOWN
@ MU_SF_Isol_QCD_TEMPLATE_DOWN
Definition: ScaleFactorRetriever.h:83
top::EventSaverFlatNtuple::m_rcjet_d23
std::vector< float > m_rcjet_d23
Definition: EventSaverFlatNtuple.h:757
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_eigen_B_down
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_bTagSF_eigen_B_down
Definition: EventSaverFlatNtuple.h:420
top::MU_SF_ID_CR2_UP
@ MU_SF_ID_CR2_UP
Definition: ScaleFactorRetriever.h:72
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
top::EventSaverFlatNtuple::m_klfitter_model_bhad_phi
std::vector< float > m_klfitter_model_bhad_phi
Definition: EventSaverFlatNtuple.h:835
TreeManager.h
top::MU_SF_Isol_SUPRESSION_SCALE_DOWN
@ MU_SF_Isol_SUPRESSION_SCALE_DOWN
Definition: ScaleFactorRetriever.h:85
top::EventSaverFlatNtuple::saveParticleLevelEvent
virtual void saveParticleLevelEvent(const top::ParticleLevelEvent &plEvent) override
Store the particle level event's content in the particle level TTree as flat n-tuple.
Definition: EventSaverFlatNtuple.cxx:4207
top::EventSaverFlatNtuple::m_el_trigMatched
std::unordered_map< std::string, std::vector< char > > m_el_trigMatched
Definition: EventSaverFlatNtuple.h:499
top::EventSaverFlatNtuple::m_el_isTight
std::vector< char > m_el_isTight
Definition: EventSaverFlatNtuple.h:497
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top1_phi
std::vector< float > m_klfitter_model_b_from_top1_phi
Definition: EventSaverFlatNtuple.h:894
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top1_pt
std::vector< float > m_klfitter_model_lj2_from_top1_pt
Definition: EventSaverFlatNtuple.h:910
top::MU_SF_Isol_QCD_TEMPLATE_UP
@ MU_SF_Isol_QCD_TEMPLATE_UP
Definition: ScaleFactorRetriever.h:83
top::nominal
@ nominal
Definition: ScaleFactorRetriever.h:29
top::EventSaverFlatNtuple::m_track_phi0
std::vector< float > m_track_phi0
Definition: EventSaverFlatNtuple.h:652
xAOD::TrackingHelpers::z0significance
double z0significance(const xAOD::TrackParticle *tp, const xAOD::Vertex *vx=NULL)
Get the impact parameter significance of a track particle in the z direction.
Definition: TrackParticlexAODHelpers.cxx:65
top::EventSaverFlatNtuple::m_jet_fjvt
std::vector< float > m_jet_fjvt
Definition: EventSaverFlatNtuple.h:621
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_UP
float m_weight_leptonSF_MU_SF_TTVA_LUMI_UNCERT_UP
Definition: EventSaverFlatNtuple.h:358
top::MU_SF_Isol_EXTRAPOLATION_DOWN
@ MU_SF_Isol_EXTRAPOLATION_DOWN
Definition: ScaleFactorRetriever.h:86
SG::AtomicConstAccessor
Access an auxiliary variable atomically.
Definition: AtomicConstAccessor.h:45
top::EventSaverFlatNtuple::m_weight_bTagSF_named_down
std::unordered_map< std::string, std::unordered_map< std::string, float > > m_weight_bTagSF_named_down
Definition: EventSaverFlatNtuple.h:448
top::EventSaverFlatNtuple::m_weight_trigger_PH_UNCERT_UP
float m_weight_trigger_PH_UNCERT_UP
Definition: EventSaverFlatNtuple.h:377
top::EventSaverFlatNtuple::m_tjet_DLx_pb
std::unordered_map< std::string, std::vector< float > > m_tjet_DLx_pb
Definition: EventSaverFlatNtuple.h:725
top::EventSaverFlatNtuple::m_PseudoTop_Reco_ttbar_eta
float m_PseudoTop_Reco_ttbar_eta
Definition: EventSaverFlatNtuple.h:950
plotBeamSpotCompare.ivar
int ivar
Definition: plotBeamSpotCompare.py:383
top::EventSaverFlatNtuple::m_fwdel_pt
std::vector< float > m_fwdel_pt
Definition: EventSaverFlatNtuple.h:511
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b1_eta
std::vector< float > m_klfitter_model_Higgs_b1_eta
Definition: EventSaverFlatNtuple.h:858
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_eigen_C_down
std::unordered_map< std::string, std::vector< float > > m_weight_trackjet_bTagSF_eigen_C_down
Definition: EventSaverFlatNtuple.h:428
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_SYST_UP
float m_weight_leptonSF_MU_SF_Isol_SYST_UP
Definition: EventSaverFlatNtuple.h:332
top::FJVT_UP
@ FJVT_UP
Definition: ScaleFactorRetriever.h:125
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_eigen_C_up
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_bTagSF_eigen_C_up
Definition: EventSaverFlatNtuple.h:430
top::MU_SF_Isol_MLLWINDOW_UP
@ MU_SF_Isol_MLLWINDOW_UP
Definition: ScaleFactorRetriever.h:82
top::EventSaverFlatNtuple::m_el_delta_z0_sintheta
std::vector< float > m_el_delta_z0_sintheta
Definition: EventSaverFlatNtuple.h:501
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_UP
float m_weight_leptonSF_MU_SF_TTVA_EXTRAPOLATION_UP
Definition: EventSaverFlatNtuple.h:366
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:113
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_MATCHING_UP
float m_weight_leptonSF_MU_SF_ID_MATCHING_UP
Definition: EventSaverFlatNtuple.h:295
top::EventSaverFlatNtuple::shortBtagWP
std::string shortBtagWP(std::string const &WP) const
shorten name of b-tagging working point (FixedCutBEff_*)
Definition: EventSaverFlatNtuple.cxx:5115
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_UP
float m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_UP
Definition: EventSaverFlatNtuple.h:327
top::EventSaverFlatNtuple::m_ljet_tagSFSysVars
std::unordered_map< std::string, std::vector< std::vector< float > > > m_ljet_tagSFSysVars
Definition: EventSaverFlatNtuple.h:716
file
TFile * file
Definition: tile_monitor.h:29
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b2_phi
std::vector< float > m_klfitter_model_Higgs_b2_phi
Definition: EventSaverFlatNtuple.h:865
dumpFileToPlots.treeName
string treeName
Definition: dumpFileToPlots.py:20
top::EventSaverFlatNtuple::m_track_qOverP
std::vector< float > m_track_qOverP
Definition: EventSaverFlatNtuple.h:648
top::ScaleFactorRetriever::btagSF
float btagSF(const top::Event &event, const top::topSFSyst SFSyst=top::topSFSyst::nominal, std::string WP="FixedCutBEff_77", bool do_trackjets=false, std::string uncert_name="") const
Missing important functionality, but testing...
Definition: ScaleFactorRetriever.cxx:1451
top::EventSaverFlatNtuple::m_klfitter_model_lepZ2_E
std::vector< float > m_klfitter_model_lepZ2_E
Definition: EventSaverFlatNtuple.h:884
top::check
void check(bool thingToCheck, const std::string &usefulFailureMessage)
Print an error message and terminate if thingToCheck is false.
Definition: EventTools.cxx:15
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_lep_eta
float m_PseudoTop_Reco_top_lep_eta
Definition: EventSaverFlatNtuple.h:958
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_eigen_Light_up
std::unordered_map< std::string, std::vector< float > > m_weight_trackjet_bTagSF_eigen_Light_up
Definition: EventSaverFlatNtuple.h:438
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_eigen_B_down
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_trackjet_bTagSF_eigen_B_down
Definition: EventSaverFlatNtuple.h:422
top::EventSaverFlatNtuple::m_met_sigVarL
float m_met_sigVarL
Definition: EventSaverFlatNtuple.h:808
top::EventSaverFlatNtuple::m_jet_ghostTrack_phi
std::vector< std::vector< float > > m_jet_ghostTrack_phi
Definition: EventSaverFlatNtuple.h:635
python.selection.variable
variable
Definition: selection.py:33
top::EventSaverFlatNtuple::m_jet_tagWeightBin
std::unordered_map< std::string, std::vector< int > > m_jet_tagWeightBin
Definition: EventSaverFlatNtuple.h:629
top::EventSaverFlatNtuple::m_ASMweights
std::vector< float > m_ASMweights
Definition: EventSaverFlatNtuple.h:464
top::EventSaverFlatNtuple::m_rcjet_gECF461_clstr
std::vector< float > m_rcjet_gECF461_clstr
Definition: EventSaverFlatNtuple.h:785
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_named_down
std::unordered_map< std::string, std::unordered_map< std::string, std::vector< float > > > m_perjet_weight_bTagSF_named_down
Definition: EventSaverFlatNtuple.h:455
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_PtFrac
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_PtFrac
Definition: EventSaverFlatNtuple.h:577
top::EventSaverFlatNtuple::m_eventNumber
unsigned long long m_eventNumber
Definition: EventSaverFlatNtuple.h:470
top::EventSaverFlatNtuple::m_rcjet_e
std::vector< float > m_rcjet_e
Definition: EventSaverFlatNtuple.h:755
top::EventSaverFlatNtuple::m_tau_charge
std::vector< float > m_tau_charge
Definition: EventSaverFlatNtuple.h:612
top::ParticleLevelEvent
Definition: ParticleLevelEvent.h:24
top::EventSaverFlatNtuple::m_el_true_firstEgMotherTruthOrigin
std::vector< int > m_el_true_firstEgMotherTruthOrigin
Definition: EventSaverFlatNtuple.h:505
top::ScaleFactorRetriever::fjvtSF
float fjvtSF(const top::Event &event, const top::topSFSyst SFsyst) const
fJVT Efficiency SFs
Definition: ScaleFactorRetriever.cxx:1584
top::MU_SF_TTVA_QCD_TEMPLATE_DOWN
@ MU_SF_TTVA_QCD_TEMPLATE_DOWN
Definition: ScaleFactorRetriever.h:90
top::EventSaverFlatNtuple::m_rcjet_gECF441_clstr
std::vector< float > m_rcjet_gECF441_clstr
Definition: EventSaverFlatNtuple.h:789
top::EventSaverFlatNtuple::m_rcjet_gECF322_clstr
std::vector< float > m_rcjet_gECF322_clstr
Definition: EventSaverFlatNtuple.h:786
top::EventSaverFlatNtuple::m_mcChannelNumber
unsigned int m_mcChannelNumber
Definition: EventSaverFlatNtuple.h:473
top::EventSaverFlatNtuple::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: EventSaverFlatNtuple.h:58
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_CorrModel_ID_UP
std::vector< float > m_weight_leptonSF_EL_SF_CorrModel_ID_UP
Definition: EventSaverFlatNtuple.h:273
top::EventSaverFlatNtuple::m_jet_pt
std::vector< float > m_jet_pt
Definition: EventSaverFlatNtuple.h:616
top::EventSaverFlatNtuple::m_jet_ghostTrack_qOverP
std::vector< std::vector< float > > m_jet_ghostTrack_qOverP
Definition: EventSaverFlatNtuple.h:639
top::PHOTON_IDSF_DOWN
@ PHOTON_IDSF_DOWN
Definition: ScaleFactorRetriever.h:114
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_CR2_DOWN
float m_weight_leptonSF_MU_SF_ID_CR2_DOWN
Definition: EventSaverFlatNtuple.h:316
top::EventSaverFlatNtuple::m_jet_truthflav
std::vector< int > m_jet_truthflav
Definition: EventSaverFlatNtuple.h:624
top::EventSaverFlatNtuple::m_rcjet_tau2_clstr
std::vector< float > m_rcjet_tau2_clstr
Definition: EventSaverFlatNtuple.h:771
top::RECO
@ RECO
Definition: ScaleFactorRetriever.h:213
top::EventSaverFlatNtuple::m_weight_bTagSF_eigen_Light_down
std::unordered_map< std::string, std::vector< float > > m_weight_bTagSF_eigen_Light_down
Definition: EventSaverFlatNtuple.h:437
top::EventSaverFlatNtuple::m_VarRCJetMassScale
std::vector< std::string > m_VarRCJetMassScale
Definition: EventSaverFlatNtuple.h:742
top::EventSaverFlatNtuple::m_rcjet_ECF2_clstr
std::vector< float > m_rcjet_ECF2_clstr
Definition: EventSaverFlatNtuple.h:776
top::MU_SF_Isol_BKG_FRACTION_UP
@ MU_SF_Isol_BKG_FRACTION_UP
Definition: ScaleFactorRetriever.h:78
top::EventSaverFlatNtuple::m_fwdel_etcone40
std::vector< float > m_fwdel_etcone40
Definition: EventSaverFlatNtuple.h:517
top::EventSaverFlatNtuple::m_rcjet_L3_clstr
std::vector< float > m_rcjet_L3_clstr
Definition: EventSaverFlatNtuple.h:795
top::EventSaverFlatNtuple::m_rrcjet_pt
std::vector< float > m_rrcjet_pt
Definition: EventSaverFlatNtuple.h:763
top::EventSaverFlatNtuple::m_tjet_e
std::vector< float > m_tjet_e
Definition: EventSaverFlatNtuple.h:722
Event.h
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedVetoBARR
std::vector< float > m_PLIV_el_PromptLeptonImprovedVetoBARR
Definition: EventSaverFlatNtuple.h:582
top::EventSaverFlatNtuple::m_klfitter_model_bhad_eta
std::vector< float > m_klfitter_model_bhad_eta
Definition: EventSaverFlatNtuple.h:834
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_ptvarcone30rel
Definition: EventSaverFlatNtuple.h:576
top::MU_SF_TTVA_BKG_FRACTION_UP
@ MU_SF_TTVA_BKG_FRACTION_UP
Definition: ScaleFactorRetriever.h:87
xAOD::BTagging_v1
Definition: BTagging_v1.h:39
top::MU_SF_TTVA_BKG_FRACTION_DOWN
@ MU_SF_TTVA_BKG_FRACTION_DOWN
Definition: ScaleFactorRetriever.h:87
selection
std::string selection
Definition: fbtTestBasics.cxx:73
top::MU_SF_ID_SUPRESSION_SCALE_DOWN
@ MU_SF_ID_SUPRESSION_SCALE_DOWN
Definition: ScaleFactorRetriever.h:67
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
top::MU_SF_ID_STAT_LOWPT_UP
@ MU_SF_ID_STAT_LOWPT_UP
Definition: ScaleFactorRetriever.h:50
top::EventSaverFlatNtuple::m_ljet_isTagged
std::unordered_map< std::string, std::vector< char > > m_ljet_isTagged
Definition: EventSaverFlatNtuple.h:713
top::ScaleFactorRetriever::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: ScaleFactorRetriever.cxx:30
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_CorrModel_Iso_DOWN
std::vector< float > m_weight_leptonSF_EL_SF_CorrModel_Iso_DOWN
Definition: EventSaverFlatNtuple.h:276
xAOD::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
top::EventSaverFlatNtuple::m_weight_trigger_EL_SF_UP
float m_weight_trigger_EL_SF_UP
Definition: EventSaverFlatNtuple.h:371
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonRNN_non_prompt_c
std::vector< float > m_PLIV_el_PromptLeptonRNN_non_prompt_c
Definition: EventSaverFlatNtuple.h:571
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top2_phi
std::vector< float > m_klfitter_model_lj1_from_top2_phi
Definition: EventSaverFlatNtuple.h:918
top::EventSaverFlatNtuple::m_weight_forwardjvt_down
float m_weight_forwardjvt_down
Definition: EventSaverFlatNtuple.h:408
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_UP
float m_weight_leptonSF_MU_SF_ID_QCD_TEMPLATE_UP
Definition: EventSaverFlatNtuple.h:303
top::EventSaverFlatNtuple::registerObjectIntoTruthTree
void registerObjectIntoTruthTree(const SG::AuxElement &obj)
Definition: EventSaverFlatNtuple.cxx:5039
top::EventSaverFlatNtuple::m_extraTruthVars_int
std::unordered_map< std::string, int * > m_extraTruthVars_int
Definition: EventSaverFlatNtuple.h:1019
top::MU_SF_Isol_STAT_DOWN
@ MU_SF_Isol_STAT_DOWN
Definition: ScaleFactorRetriever.h:53
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_eigen_C_down
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_trackjet_bTagSF_eigen_C_down
Definition: EventSaverFlatNtuple.h:433
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b2_E
std::vector< float > m_klfitter_model_Higgs_b2_E
Definition: EventSaverFlatNtuple.h:866
top::EventSaverFlatNtuple::m_jet_truthPartonLabel
std::vector< int > m_jet_truthPartonLabel
Definition: EventSaverFlatNtuple.h:625
top::EventSaverFlatNtuple::m_rcjet_d12
std::vector< float > m_rcjet_d12
Definition: EventSaverFlatNtuple.h:756
top::ScaleFactorRetriever::photonSF
float photonSF(const top::Event &event, const top::topSFSyst SFSyst) const
: get the photonSF for all photons in event
Definition: ScaleFactorRetriever.cxx:1411
top::EventSaverFlatNtuple::fillTruthEvent
virtual void fillTruthEvent()
Definition: EventSaverFlatNtuple.cxx:4203
xAOD::Jet_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: Jet_v1.cxx:49
top::EventSaverFlatNtuple::m_klfitter_selection
std::vector< std::string > m_klfitter_selection
Selection.
Definition: EventSaverFlatNtuple.h:817
top::EventSaverFlatNtuple::m_ljet_truthLabel
std::vector< int > m_ljet_truthLabel
Definition: EventSaverFlatNtuple.h:710
top::ScaleFactorRetriever::jvtSF
float jvtSF(const top::Event &event, const top::topSFSyst SFsyst) const
JVT Efficiency SFs.
Definition: ScaleFactorRetriever.cxx:1569
top::EL_SF_Isol_DOWN
@ EL_SF_Isol_DOWN
Definition: ScaleFactorRetriever.h:37
top::MU_SF_Isol_SYST_UP
@ MU_SF_Isol_SYST_UP
Definition: ScaleFactorRetriever.h:54
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_UP
float m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_UP
Definition: EventSaverFlatNtuple.h:342
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_Isol_DOWN
float m_weight_leptonSF_EL_SF_Isol_DOWN
Definition: EventSaverFlatNtuple.h:269
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_CR2_UP
float m_weight_leptonSF_MU_SF_ID_CR2_UP
Definition: EventSaverFlatNtuple.h:315
top::MU_SF_TTVA_SUPRESSION_SCALE_DOWN
@ MU_SF_TTVA_SUPRESSION_SCALE_DOWN
Definition: ScaleFactorRetriever.h:91
top::MU_SF_Isol_DRMUJ_DOWN
@ MU_SF_Isol_DRMUJ_DOWN
Definition: ScaleFactorRetriever.h:79
top::EventSaverFlatNtuple::m_klfitter_model_lepZ1_index
std::vector< unsigned int > m_klfitter_model_lepZ1_index
Definition: EventSaverFlatNtuple.h:879
top::MU_SF_Isol_MLLWINDOW_DOWN
@ MU_SF_Isol_MLLWINDOW_DOWN
Definition: ScaleFactorRetriever.h:82
top::MU_SF_ID_SYST_UP
@ MU_SF_ID_SYST_UP
Definition: ScaleFactorRetriever.h:48
top::ScaleFactorRetriever
Definition: ScaleFactorRetriever.h:216
top::MU_SF_TTVA_STAT_UP
@ MU_SF_TTVA_STAT_UP
Definition: ScaleFactorRetriever.h:56
xAOD::BTagging_v1::pu
bool pu(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:353
xAOD::EventInfo_v1::averageInteractionsPerCrossing
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
Definition: EventInfo_v1.cxx:397
top::EventSaverFlatNtuple::m_mu_delta_z0_sintheta
std::vector< float > m_mu_delta_z0_sintheta
Definition: EventSaverFlatNtuple.h:533
top::EventSaverFlatNtuple::m_rcjet_gECF422_clstr
std::vector< float > m_rcjet_gECF422_clstr
Definition: EventSaverFlatNtuple.h:788
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_eigen_Light_down
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_bTagSF_eigen_Light_down
Definition: EventSaverFlatNtuple.h:442
top::EventSaverFlatNtuple::m_softmu_true_isPrompt
std::vector< int > m_softmu_true_isPrompt
Definition: EventSaverFlatNtuple.h:552
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b1_pt
std::vector< float > m_klfitter_model_Higgs_b1_pt
Definition: EventSaverFlatNtuple.h:857
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
top::EventSaverFlatNtuple::m_particleLevelTreeManager
std::shared_ptr< top::TreeManager > m_particleLevelTreeManager
The top::TreeManager used for the particle level data output.
Definition: EventSaverFlatNtuple.h:213
top::EventSaverFlatNtuple::m_weight_bTagSF_eigen_C_up
std::unordered_map< std::string, std::vector< float > > m_weight_bTagSF_eigen_C_up
Definition: EventSaverFlatNtuple.h:425
top::EventSaverFlatNtuple::m_el_pt_bare
std::vector< float > m_el_pt_bare
Definition: EventSaverFlatNtuple.h:999
top::MU_SF_ID_PT_DEPENDENCY_UP
@ MU_SF_ID_PT_DEPENDENCY_UP
Definition: ScaleFactorRetriever.h:65
top::EventSaverFlatNtuple::m_tau_eta
std::vector< float > m_tau_eta
Definition: EventSaverFlatNtuple.h:609
top::EventSaverFlatNtuple::m_useVarRCJSS
bool m_useVarRCJSS
Definition: EventSaverFlatNtuple.h:738
top::MU_SF_TTVA_QCD_TEMPLATE_UP
@ MU_SF_TTVA_QCD_TEMPLATE_UP
Definition: ScaleFactorRetriever.h:90
top::EventSaverFlatNtuple::m_weight_fwdElSF_FWDEL_SF_ID_UP
float m_weight_fwdElSF_FWDEL_SF_ID_UP
Definition: EventSaverFlatNtuple.h:258
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonRNN_non_prompt_b
std::vector< float > m_PLIV_el_PromptLeptonRNN_non_prompt_b
Definition: EventSaverFlatNtuple.h:570
top::EventSaverFlatNtuple::m_useVarRCAdditionalJSS
bool m_useVarRCAdditionalJSS
Definition: EventSaverFlatNtuple.h:739
top::PHOTON_EFF_TRIGGER_UNCERTAINTY_DOWN
@ PHOTON_EFF_TRIGGER_UNCERTAINTY_DOWN
Definition: ScaleFactorRetriever.h:117
top::ScaleFactorRetriever::fwdElectronSF
float fwdElectronSF(const top::Event &event, const top::topSFSyst SFSyst, const top::topSFComp SFComp=top::topSFComp::ALL) const
Definition: ScaleFactorRetriever.cxx:359
top::EventSaverFlatNtuple::m_rcjet_d12_clstr
std::vector< float > m_rcjet_d12_clstr
Definition: EventSaverFlatNtuple.h:779
top::MU_SF_ID_CR3_UP
@ MU_SF_ID_CR3_UP
Definition: ScaleFactorRetriever.h:73
top::EventSaverFlatNtuple::m_weight_bTagSF
std::unordered_map< std::string, float > m_weight_bTagSF
Definition: EventSaverFlatNtuple.h:394
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_phi
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_phi
Definition: EventSaverFlatNtuple.h:698
top::MU_SF_Isol_MC_XSEC_UP
@ MU_SF_Isol_MC_XSEC_UP
Definition: ScaleFactorRetriever.h:81
top::EventSaverFlatNtuple::m_tjet_eta
std::vector< float > m_tjet_eta
Definition: EventSaverFlatNtuple.h:720
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top1_jetIndex
std::vector< unsigned int > m_klfitter_model_b_from_top1_jetIndex
Definition: EventSaverFlatNtuple.h:896
TruthTools.h
top::EventSaverFlatNtuple::m_track_eta
std::vector< float > m_track_eta
Definition: EventSaverFlatNtuple.h:643
MagicNumbers.h
top::EventSaverFlatNtuple::m_failJvt_jet_jvt
std::vector< float > m_failJvt_jet_jvt
Definition: EventSaverFlatNtuple.h:669
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_UP
float m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_UP
Definition: EventSaverFlatNtuple.h:284
top::EventSaverFlatNtuple::saveEvent
virtual void saveEvent(const top::Event &event) override
Run for every event (actually every systematic for every event).
Definition: EventSaverFlatNtuple.cxx:1915
top::MU_SF_Isol_BKG_FRACTION_DOWN
@ MU_SF_Isol_BKG_FRACTION_DOWN
Definition: ScaleFactorRetriever.h:78
top::EventSaverFlatNtuple::saveTruthEvent
virtual void saveTruthEvent() override
@breif Run for every event
Definition: EventSaverFlatNtuple.cxx:4100
top::EventSaverFlatNtuple::m_klfitter_model_lq1_E
std::vector< float > m_klfitter_model_lq1_E
Definition: EventSaverFlatNtuple.h:848
top::EventSaverFlatNtuple::m_jet_passfjvt
std::vector< char > m_jet_passfjvt
Definition: EventSaverFlatNtuple.h:622
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_TAGPT_UP
float m_weight_leptonSF_MU_SF_ID_TAGPT_UP
Definition: EventSaverFlatNtuple.h:323
top::MU_SF_ID_PT_DEPENDENCY_DOWN
@ MU_SF_ID_PT_DEPENDENCY_DOWN
Definition: ScaleFactorRetriever.h:65
top::EventSaverFlatNtuple::m_met_sumet
float m_met_sumet
Definition: EventSaverFlatNtuple.h:802
top::EventSaverFlatNtuple::m_rcjet_tau1_clstr
std::vector< float > m_rcjet_tau1_clstr
Definition: EventSaverFlatNtuple.h:772
top::EventSaverFlatNtuple::m_weight_bTagSF_eigen_C_down
std::unordered_map< std::string, std::vector< float > > m_weight_bTagSF_eigen_C_down
Definition: EventSaverFlatNtuple.h:426
top::ISOLATION
@ ISOLATION
Definition: ScaleFactorRetriever.h:213
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top2_E
std::vector< float > m_klfitter_model_lj2_from_top2_E
Definition: EventSaverFlatNtuple.h:925
top::EventSaverFlatNtuple::m_truthTreeManager
std::shared_ptr< top::TreeManager > m_truthTreeManager
Definition: EventSaverFlatNtuple.h:210
top::TreeManager::name
const std::string & name() const
name of the TTree
Definition: TreeManager.cxx:57
top::EventSaverFlatNtuple::m_rcjet_nconstituent_clstr
std::vector< float > m_rcjet_nconstituent_clstr
Definition: EventSaverFlatNtuple.h:782
top::MU_SF_Isol_SHERPA_POWHEG_UP
@ MU_SF_Isol_SHERPA_POWHEG_UP
Definition: ScaleFactorRetriever.h:84
LArCellConditions.prompt
string prompt
Definition: LArCellConditions.py:71
top::EventSaverFlatNtuple::m_tjet_pt
std::vector< float > m_tjet_pt
Definition: EventSaverFlatNtuple.h:719
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b1_phi
std::vector< float > m_klfitter_model_Higgs_b1_phi
Definition: EventSaverFlatNtuple.h:859
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel
std::vector< float > m_PLIV_mu_PromptLeptonImprovedInput_ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500rel
Definition: EventSaverFlatNtuple.h:591
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_CR1_DOWN
float m_weight_leptonSF_MU_SF_ID_CR1_DOWN
Definition: EventSaverFlatNtuple.h:314
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_UP
float m_weight_leptonSF_MU_SF_Isol_EXTRAPOLATION_UP
Definition: EventSaverFlatNtuple.h:350
top::EventSaverFlatNtuple::fillEvent
virtual void fillEvent(const top::Event &event)
Definition: EventSaverFlatNtuple.cxx:4095
top::EventSaverFlatNtuple::m_PDFinfo_PDGID1
std::vector< int > m_PDFinfo_PDGID1
Definition: EventSaverFlatNtuple.h:988
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_CandVertex_normDistToPriVtxLongitudinalBest_ThetaCutVtx
Definition: EventSaverFlatNtuple.h:581
top::EventSaverFlatNtuple::m_rcjet_L4_clstr
std::vector< float > m_rcjet_L4_clstr
Definition: EventSaverFlatNtuple.h:796
top::EventSaverFlatNtuple::m_ph_e
std::vector< float > m_ph_e
Definition: EventSaverFlatNtuple.h:600
top::EventSaverFlatNtuple::m_klfitter_logLikelihood
std::vector< float > m_klfitter_logLikelihood
Definition: EventSaverFlatNtuple.h:826
TopConfig.h
top::EventSaverFlatNtuple::m_klfitter_model_lepZ2_pt
std::vector< float > m_klfitter_model_lepZ2_pt
Definition: EventSaverFlatNtuple.h:881
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_UP
float m_weight_leptonSF_MU_SF_Isol_SUPRESSION_SCALE_UP
Definition: EventSaverFlatNtuple.h:348
top::EventSaverFlatNtuple::m_VarRCJetRho
std::vector< std::string > m_VarRCJetRho
Definition: EventSaverFlatNtuple.h:741
top::EventSaverFlatNtuple::m_jet_phi
std::vector< float > m_jet_phi
Definition: EventSaverFlatNtuple.h:618
top::EventSaverFlatNtuple::m_outputFile
TFile * m_outputFile
The file where everything goes.
Definition: EventSaverFlatNtuple.h:206
top::EventSaverFlatNtuple::m_met_phi_withLooseObjects
float m_met_phi_withLooseObjects
Definition: EventSaverFlatNtuple.h:812
top::EventSaverFlatNtuple::m_ljet_e
std::vector< float > m_ljet_e
Definition: EventSaverFlatNtuple.h:708
top::EventSaverFlatNtuple::m_tjet_DLx_pc
std::unordered_map< std::string, std::vector< float > > m_tjet_DLx_pc
Definition: EventSaverFlatNtuple.h:726
top::EventSaverFlatNtuple::m_klfitter_model_blep_pt
std::vector< float > m_klfitter_model_blep_pt
Definition: EventSaverFlatNtuple.h:839
top::ParticleLevelEvent::m_electrons
const xAOD::TruthParticleContainer * m_electrons
Pointer to truth level electrons.
Definition: ParticleLevelEvent.h:42
top::EventSaverFlatNtuple::cleanEvent
virtual void cleanEvent()
Definition: EventSaverFlatNtuple.cxx:1924
top::MU_SF_ID_HIGHETA_PROBEISO_UP
@ MU_SF_ID_HIGHETA_PROBEISO_UP
Definition: ScaleFactorRetriever.h:75
top::EventSaverFlatNtuple::m_weight_photonSF_effIso_DOWN
float m_weight_photonSF_effIso_DOWN
Definition: EventSaverFlatNtuple.h:389
top::EventSaverFlatNtuple::m_klfitter_bestPerm_topLep_eta
float m_klfitter_bestPerm_topLep_eta
Definition: EventSaverFlatNtuple.h:930
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonImprovedInput_PtFrac
std::vector< float > m_PLIV_mu_PromptLeptonImprovedInput_PtFrac
Definition: EventSaverFlatNtuple.h:589
top::PHOTON_IDSF_UP
@ PHOTON_IDSF_UP
Definition: ScaleFactorRetriever.h:114
top::EventSaverFlatNtuple::m_softmu_SF_ID_SYST_UP
std::vector< float > m_softmu_SF_ID_SYST_UP
Definition: EventSaverFlatNtuple.h:556
top::EventSaverFlatNtuple::m_mu_trigMatched
std::unordered_map< std::string, std::vector< char > > m_mu_trigMatched
Definition: EventSaverFlatNtuple.h:531
top::EventSaverFlatNtuple::m_extraBranches
std::vector< std::string > m_extraBranches
names of the passed / failed branches.
Definition: EventSaverFlatNtuple.h:221
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_z0
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_z0
Definition: EventSaverFlatNtuple.h:681
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
top::EventSaverFlatNtuple::m_klfitter_bestPermutation
std::vector< unsigned int > m_klfitter_bestPermutation
Global result.
Definition: EventSaverFlatNtuple.h:825
top::EventSaverFlatNtuple::m_PDFinfo_XF2
std::vector< float > m_PDFinfo_XF2
Definition: EventSaverFlatNtuple.h:992
top::EventSaverFlatNtuple::m_hasBadMuon
unsigned int m_hasBadMuon
Definition: EventSaverFlatNtuple.h:483
top::EventSaverFlatNtuple::m_klfitter_model_lepZ1_pt
std::vector< float > m_klfitter_model_lepZ1_pt
Definition: EventSaverFlatNtuple.h:875
top::EventSaverFlatNtuple::m_track_charge
std::vector< float > m_track_charge
Definition: EventSaverFlatNtuple.h:649
top::MU_SF_ID_HIGHETA_PROBEIP_UP
@ MU_SF_ID_HIGHETA_PROBEIP_UP
Definition: ScaleFactorRetriever.h:74
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_STAT_UP
float m_weight_leptonSF_MU_SF_ID_STAT_UP
Definition: EventSaverFlatNtuple.h:279
top::EventSaverFlatNtuple::m_ph_iso
std::vector< float > m_ph_iso
Definition: EventSaverFlatNtuple.h:604
xAOD::BTaggingUtilities::getBTagging
const BTagging * getBTagging(const SG::AuxElement &part)
Access the default xAOD::BTagging object associated to an object.
Definition: BTaggingUtilities.cxx:37
top::EL_SF_Isol_UP
@ EL_SF_Isol_UP
Definition: ScaleFactorRetriever.h:37
top::EventSaverFlatNtuple::m_weight_forwardjvt_up
float m_weight_forwardjvt_up
Definition: EventSaverFlatNtuple.h:407
top::MU_SF_ID_CR2_DOWN
@ MU_SF_ID_CR2_DOWN
Definition: ScaleFactorRetriever.h:72
top::EventSaverFlatNtuple::m_PDFinfo_X1
std::vector< float > m_PDFinfo_X1
Definition: EventSaverFlatNtuple.h:986
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_eigen_C_up
std::unordered_map< std::string, std::vector< float > > m_weight_trackjet_bTagSF_eigen_C_up
Definition: EventSaverFlatNtuple.h:427
CheckAppliedSFs.pu
pu
Definition: CheckAppliedSFs.py:311
top::MU_SF_ID_TAGPT_DOWN
@ MU_SF_ID_TAGPT_DOWN
Definition: ScaleFactorRetriever.h:76
top::EventSaverFlatNtuple::m_softmu_particle_origin_flag
std::vector< int > m_softmu_particle_origin_flag
Definition: EventSaverFlatNtuple.h:563
top::EventSaverFlatNtuple::m_softmu_SF_ID_SYST_LOWPT_DOWN
std::vector< float > m_softmu_SF_ID_SYST_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:561
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_lep_m
float m_PseudoTop_Reco_top_lep_m
Definition: EventSaverFlatNtuple.h:960
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
top::MU_SF_Isol_EXTRAPOLATION_UP
@ MU_SF_Isol_EXTRAPOLATION_UP
Definition: ScaleFactorRetriever.h:86
top::EventSaverFlatNtuple::m_mu_true_origin
std::vector< int > m_mu_true_origin
Definition: EventSaverFlatNtuple.h:535
RCU::substitute
std::string substitute(const std::string &str, const std::string &pattern, const std::string &with)
effects: substitute all occurences of "pattern" with "with" in the string "str" returns: the substitu...
Definition: StringUtil.cxx:24
top::EventSaverFlatNtuple::m_boostedJetTaggersNames
std::vector< std::string > m_boostedJetTaggersNames
Definition: EventSaverFlatNtuple.h:246
top::EventSaverFlatNtuple::m_klfitter_eventProbability
std::vector< float > m_klfitter_eventProbability
Definition: EventSaverFlatNtuple.h:827
top::EventSaverFlatNtuple::m_klfitter_bestPerm_ttbar_eta
float m_klfitter_bestPerm_ttbar_eta
Definition: EventSaverFlatNtuple.h:942
DeMoScan.index
string index
Definition: DeMoScan.py:362
top::EventSaverFlatNtuple::m_mu_pt
std::vector< float > m_mu_pt
Definition: EventSaverFlatNtuple.h:521
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_qOverP
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_qOverP
Definition: EventSaverFlatNtuple.h:682
top::EventSaverFlatNtuple::m_failFJvt_jet_fjvt
std::vector< float > m_failFJvt_jet_fjvt
Definition: EventSaverFlatNtuple.h:690
top::EventSaverFlatNtuple::m_mu_d0sig
std::vector< float > m_mu_d0sig
Definition: EventSaverFlatNtuple.h:532
top::EventSaverFlatNtuple::m_failFJvt_jet_truthPartonLabel
std::vector< int > m_failFJvt_jet_truthPartonLabel
Definition: EventSaverFlatNtuple.h:693
top::EventSaverFlatNtuple::m_weight_beamspot
float m_weight_beamspot
Definition: EventSaverFlatNtuple.h:251
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_SYST_DOWN
float m_weight_leptonSF_MU_SF_ID_SYST_DOWN
Definition: EventSaverFlatNtuple.h:282
top::EventSaverFlatNtuple::m_el_cl_eta
std::vector< float > m_el_cl_eta
Definition: EventSaverFlatNtuple.h:488
top::MU_SF_ID_QCD_TEMPLATE_UP
@ MU_SF_ID_QCD_TEMPLATE_UP
Definition: ScaleFactorRetriever.h:66
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_Isol_UP
float m_weight_leptonSF_EL_SF_Isol_UP
Definition: EventSaverFlatNtuple.h:268
top::EventSaverFlatNtuple::m_tjet_isbtagged
std::unordered_map< std::string, std::vector< char > > m_tjet_isbtagged
Definition: EventSaverFlatNtuple.h:728
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_had_m
float m_PseudoTop_Reco_top_had_m
Definition: EventSaverFlatNtuple.h:956
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_DOWN
float m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_DOWN
Definition: EventSaverFlatNtuple.h:320
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top1_pt
std::vector< float > m_klfitter_model_lj1_from_top1_pt
Definition: EventSaverFlatNtuple.h:904
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_lep_phi
float m_PseudoTop_Particle_top_lep_phi
Definition: EventSaverFlatNtuple.h:971
xAOD::Jet_v1::e
virtual double e() const
The total energy of the particle.
Definition: Jet_v1.cxx:63
top::EventSaverFlatNtuple::m_weight_jvt_up
float m_weight_jvt_up
Definition: EventSaverFlatNtuple.h:403
top::EventSaverFlatNtuple::m_PLIV_mu_PromptLeptonRNN_non_prompt_c
std::vector< float > m_PLIV_mu_PromptLeptonRNN_non_prompt_c
Definition: EventSaverFlatNtuple.h:585
top::EventSaverFlatNtuple::m_rcjet_L5_clstr
std::vector< float > m_rcjet_L5_clstr
Definition: EventSaverFlatNtuple.h:797
top::EventSaverFlatNtuple::m_weight_sherpa_22_vjets
float m_weight_sherpa_22_vjets
Definition: EventSaverFlatNtuple.h:411
top::EventSaverFlatNtuple::m_klfitter_model_blep_eta
std::vector< float > m_klfitter_model_blep_eta
Definition: EventSaverFlatNtuple.h:840
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_had_pt
float m_PseudoTop_Particle_top_had_pt
Definition: EventSaverFlatNtuple.h:965
top::EventSaverFlatNtuple::m_PseudoTop_Particle_ttbar_pt
float m_PseudoTop_Particle_ttbar_pt
Definition: EventSaverFlatNtuple.h:961
top::EventSaverFlatNtuple::m_el_true_isChargeFl
std::vector< char > m_el_true_isChargeFl
Definition: EventSaverFlatNtuple.h:508
top::MU_SF_ID_TRUTH_LOWPT_UP
@ MU_SF_ID_TRUTH_LOWPT_UP
Definition: ScaleFactorRetriever.h:69
top::ScaleFactorRetriever::pileupSF
static float pileupSF(const top::Event &event, int var=0)
Definition: ScaleFactorRetriever.cxx:68
top::ParticleLevelEvent::m_photons
const xAOD::TruthParticleContainer * m_photons
Pointer to truth level photons.
Definition: ParticleLevelEvent.h:51
top::EventSaverFlatNtuple::m_klfitter_model_bhad_jetIndex
std::vector< unsigned int > m_klfitter_model_bhad_jetIndex
Definition: EventSaverFlatNtuple.h:837
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_STAT_DOWN
float m_weight_leptonSF_MU_SF_TTVA_STAT_DOWN
Definition: EventSaverFlatNtuple.h:353
top::JVT_DOWN
@ JVT_DOWN
Definition: ScaleFactorRetriever.h:123
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
top::BTAG_SF_NAMED_UP
@ BTAG_SF_NAMED_UP
Definition: ScaleFactorRetriever.h:121
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF
std::unordered_map< std::string, std::vector< float > > m_perjet_weight_bTagSF
Definition: EventSaverFlatNtuple.h:398
top::EventSaverFlatNtuple::m_klfitter_model_bhad_E
std::vector< float > m_klfitter_model_bhad_E
Definition: EventSaverFlatNtuple.h:836
top::EventSaverFlatNtuple::m_failJvt_jet_fjvt
std::vector< float > m_failJvt_jet_fjvt
Definition: EventSaverFlatNtuple.h:670
top::EventSaverFlatNtuple::m_PDFinfo_XF1
std::vector< float > m_PDFinfo_XF1
Definition: EventSaverFlatNtuple.h:991
top::MU_SF_ID_MATCHING_LOWPT_DOWN
@ MU_SF_ID_MATCHING_LOWPT_DOWN
Definition: ScaleFactorRetriever.h:63
top::EventSaverFlatNtuple::m_softmu_pt
std::vector< float > m_softmu_pt
Definition: EventSaverFlatNtuple.h:542
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_UP
float m_weight_leptonSF_MU_SF_ID_SUPRESSION_SCALE_UP
Definition: EventSaverFlatNtuple.h:305
top::EventSaverFlatNtuple::m_PDF_eventWeights
std::unordered_map< std::string, std::vector< float > > m_PDF_eventWeights
Definition: EventSaverFlatNtuple.h:243
top::EventSaverFlatNtuple::m_klfitter_fitAbortedDueToNaN
std::vector< short > m_klfitter_fitAbortedDueToNaN
Definition: EventSaverFlatNtuple.h:820
top::EventSaverFlatNtuple::m_weight_pileup
float m_weight_pileup
Definition: EventSaverFlatNtuple.h:252
top::EventSaverFlatNtuple::m_ljet_m
std::vector< float > m_ljet_m
Definition: EventSaverFlatNtuple.h:709
config
std::vector< std::string > config
Definition: fbtTestBasics.cxx:72
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_MC_XSEC_DOWN
float m_weight_leptonSF_MU_SF_ID_MC_XSEC_DOWN
Definition: EventSaverFlatNtuple.h:300
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top1_phi
std::vector< float > m_klfitter_model_lj2_from_top1_phi
Definition: EventSaverFlatNtuple.h:912
top::TreeManager
A class that hopefully makes making a flat ntuple tree a bit easier since you don't need to worry abo...
Definition: TreeManager.h:26
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_DOWN
float m_weight_leptonSF_MU_SF_ID_EXTRAPOLATION_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:328
top::EventSaverFlatNtuple::cleanTruthEvent
virtual void cleanTruthEvent()
Definition: EventSaverFlatNtuple.cxx:4106
top::MU_SF_TTVA_MC_XSEC_DOWN
@ MU_SF_TTVA_MC_XSEC_DOWN
Definition: ScaleFactorRetriever.h:89
AuxTypeRegistry.h
Handle mappings between names and auxid_t.
top::EventSaverFlatNtuple::branchFilters
std::vector< top::TreeManager::BranchFilter > & branchFilters()
Function to access the branch filters - cf ANALYSISTO-61.
Definition: EventSaverFlatNtuple.cxx:234
top::EventSaverFlatNtuple::m_PDFinfo_PDGID2
std::vector< int > m_PDFinfo_PDGID2
Definition: EventSaverFlatNtuple.h:989
PowhegPythia8EvtGen_jetjet.pdf
pdf
Definition: PowhegPythia8EvtGen_jetjet.py:4
top::EventSaverFlatNtuple::m_weight_trackjet_bTagSF_named_down
std::unordered_map< std::string, std::unordered_map< std::string, float > > m_weight_trackjet_bTagSF_named_down
Definition: EventSaverFlatNtuple.h:450
top::EventSaverFlatNtuple::m_mc_eta
std::vector< float > m_mc_eta
Definition: EventSaverFlatNtuple.h:977
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_named_down
std::unordered_map< std::string, std::unordered_map< std::string, std::vector< float > > > m_perjet_weight_trackjet_bTagSF_named_down
Definition: EventSaverFlatNtuple.h:460
top::EventSaverFlatNtuple::m_PseudoTop_Particle_ttbar_m
float m_PseudoTop_Particle_ttbar_m
Definition: EventSaverFlatNtuple.h:964
top::MU_SF_ID_LUMI_UNCERT_UP
@ MU_SF_ID_LUMI_UNCERT_UP
Definition: ScaleFactorRetriever.h:61
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_CorrModel_Reco_DOWN
std::vector< float > m_weight_leptonSF_EL_SF_CorrModel_Reco_DOWN
Definition: EventSaverFlatNtuple.h:272
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_DOWN
float m_weight_leptonSF_MU_SF_Isol_MLLWINDOW_DOWN
Definition: EventSaverFlatNtuple.h:343
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_SYST_DOWN
float m_weight_leptonSF_MU_SF_Isol_SYST_DOWN
Definition: EventSaverFlatNtuple.h:333
top::EventSaverFlatNtuple::m_weight_trigger_MU_SF_SYST_UP
float m_weight_trigger_MU_SF_SYST_UP
Definition: EventSaverFlatNtuple.h:375
top::EventSaverFlatNtuple::m_ljet_taggingPassedRangeCheck
std::unordered_map< std::string, std::vector< char > > m_ljet_taggingPassedRangeCheck
Definition: EventSaverFlatNtuple.h:714
top::EventSaverFlatNtuple::m_softmu_b_hadron_parent_pdgid
std::vector< int > m_softmu_b_hadron_parent_pdgid
Definition: EventSaverFlatNtuple.h:565
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_DRMUJ_UP
float m_weight_leptonSF_MU_SF_Isol_DRMUJ_UP
Definition: EventSaverFlatNtuple.h:336
top::EventSaverFlatNtuple::m_mu_pt_bare
std::vector< float > m_mu_pt_bare
Definition: EventSaverFlatNtuple.h:1004
top::EventSaverFlatNtuple::m_weight_leptonSF_EL_SF_ID_DOWN
float m_weight_leptonSF_EL_SF_ID_DOWN
Definition: EventSaverFlatNtuple.h:267
top::EventSaverFlatNtuple::m_softmu_d0sig
std::vector< float > m_softmu_d0sig
Definition: EventSaverFlatNtuple.h:548
top::EventSaverFlatNtuple::m_PseudoTop_Particle_ttbar_eta
float m_PseudoTop_Particle_ttbar_eta
Definition: EventSaverFlatNtuple.h:962
top::EventSaverFlatNtuple::m_config
std::shared_ptr< top::TopConfig > m_config
Configuration.
Definition: EventSaverFlatNtuple.h:199
top::EventSaverFlatNtuple::m_rcjet_tau21_clstr
std::vector< float > m_rcjet_tau21_clstr
Definition: EventSaverFlatNtuple.h:769
SG::auxid_set_t
A set of aux data identifiers.
Definition: AuxTypes.h:47
SG::ConstAccessor< T, AuxAllocator_t< T > >::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
top::MU_SF_ID_MC_XSEC_UP
@ MU_SF_ID_MC_XSEC_UP
Definition: ScaleFactorRetriever.h:64
top::EventSaverFlatNtuple::calculateTruthEvent
virtual void calculateTruthEvent()
Definition: EventSaverFlatNtuple.cxx:4113
top::EventSaverFlatNtuple::m_jet_ghostTrack_eta
std::vector< std::vector< float > > m_jet_ghostTrack_eta
Definition: EventSaverFlatNtuple.h:634
top::EventSaverFlatNtuple::m_jet_jvt
std::vector< float > m_jet_jvt
Definition: EventSaverFlatNtuple.h:620
top::EventSaverFlatNtuple::m_PseudoTop_Reco_ttbar_phi
float m_PseudoTop_Reco_ttbar_phi
Definition: EventSaverFlatNtuple.h:951
top::EventSaverFlatNtuple::m_failJvt_jet_truthPartonLabel
std::vector< int > m_failJvt_jet_truthPartonLabel
Definition: EventSaverFlatNtuple.h:673
top::EventSaverFlatNtuple::m_weight_pileup_DOWN
float m_weight_pileup_DOWN
Definition: EventSaverFlatNtuple.h:255
top::EventSaverFlatNtuple::m_softmu_SF_ID_SYST_DOWN
std::vector< float > m_softmu_SF_ID_SYST_DOWN
Definition: EventSaverFlatNtuple.h:557
top::MU_SF_ID_STAT_UP
@ MU_SF_ID_STAT_UP
Definition: ScaleFactorRetriever.h:47
str
Definition: BTagTrackIpAccessor.cxx:11
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top1_eta
std::vector< float > m_klfitter_model_lj1_from_top1_eta
Definition: EventSaverFlatNtuple.h:905
top::MU_SF_TTVA_EXTRAPOLATION_DOWN
@ MU_SF_TTVA_EXTRAPOLATION_DOWN
Definition: ScaleFactorRetriever.h:92
top::MU_SF_ID_STAT_DOWN
@ MU_SF_ID_STAT_DOWN
Definition: ScaleFactorRetriever.h:47
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_DOWN
float m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_DOWN
Definition: EventSaverFlatNtuple.h:365
top::Event
Very simple class to hold event data after reading from a file.
Definition: Event.h:49
top::EventSaverFlatNtuple::m_klfitter_invalidTransferFunctionAtConvergence
std::vector< short > m_klfitter_invalidTransferFunctionAtConvergence
Definition: EventSaverFlatNtuple.h:822
top::EventSaverFlatNtuple::m_klfitter_model_lepZ1_E
std::vector< float > m_klfitter_model_lepZ1_E
Definition: EventSaverFlatNtuple.h:878
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_topoetcone30rel
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_topoetcone30rel
Definition: EventSaverFlatNtuple.h:575
top::EventSaverFlatNtuple::m_PseudoTop_Particle_top_had_eta
float m_PseudoTop_Particle_top_had_eta
Definition: EventSaverFlatNtuple.h:966
top::EventSaverFlatNtuple::m_backgroundFlags
unsigned int m_backgroundFlags
Definition: EventSaverFlatNtuple.h:480
top::MU_SF_Isol_MC_XSEC_DOWN
@ MU_SF_Isol_MC_XSEC_DOWN
Definition: ScaleFactorRetriever.h:81
top::EventSaverFlatNtuple::m_fwdel_phi
std::vector< float > m_fwdel_phi
Definition: EventSaverFlatNtuple.h:513
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top2_eta
std::vector< float > m_klfitter_model_b_from_top2_eta
Definition: EventSaverFlatNtuple.h:899
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_z0
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_z0
Definition: EventSaverFlatNtuple.h:701
top::EventSaverFlatNtuple::m_VarRCjetsubBranches
std::map< std::string, std::vector< std::vector< float > > > m_VarRCjetsubBranches
Definition: EventSaverFlatNtuple.h:748
top::EventSaverFlatNtuple::m_klfitter_model_lj1_from_top2_jetIndex
std::vector< unsigned int > m_klfitter_model_lj1_from_top2_jetIndex
Definition: EventSaverFlatNtuple.h:920
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
top::EventSaverFlatNtuple::m_softmu_d0
std::vector< float > m_softmu_d0
Definition: EventSaverFlatNtuple.h:547
top::EventSaverFlatNtuple::m_klfitter_model_lq2_jetIndex
std::vector< unsigned int > m_klfitter_model_lq2_jetIndex
Definition: EventSaverFlatNtuple.h:855
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_DOWN
float m_weight_leptonSF_MU_SF_ID_MATCHING_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:298
top::EventSaverFlatNtuple::m_softmu_parton_origin_flag
std::vector< int > m_softmu_parton_origin_flag
Definition: EventSaverFlatNtuple.h:562
top::EventSaverFlatNtuple::m_softmu_e
std::vector< float > m_softmu_e
Definition: EventSaverFlatNtuple.h:545
top::EventSaverFlatNtuple::m_klfitter_minuitDidNotConverge
std::vector< short > m_klfitter_minuitDidNotConverge
Error flags.
Definition: EventSaverFlatNtuple.h:819
top::EventSaverFlatNtuple::m_softmu_true_origin
std::vector< int > m_softmu_true_origin
Definition: EventSaverFlatNtuple.h:551
xAOD::Iso::topoetcone40
@ topoetcone40
Definition: IsolationType.h:50
top::MU_SF_ID_TRUTH_LOWPT_DOWN
@ MU_SF_ID_TRUTH_LOWPT_DOWN
Definition: ScaleFactorRetriever.h:69
top::EventSaverFlatNtuple::m_mu_original
float m_mu_original
Definition: EventSaverFlatNtuple.h:474
top::EventSaverFlatNtuple::m_perjet_weight_trackjet_bTagSF_eigen_C_up
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_trackjet_bTagSF_eigen_C_up
Definition: EventSaverFlatNtuple.h:432
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_DOWN
float m_weight_leptonSF_MU_SF_ID_BKG_FRACTION_DOWN
Definition: EventSaverFlatNtuple.h:290
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_UP
float m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_UP
Definition: EventSaverFlatNtuple.h:321
top::MU_SF_Isol_DRMUJ_UP
@ MU_SF_Isol_DRMUJ_UP
Definition: ScaleFactorRetriever.h:79
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonRNN_prompt
std::vector< float > m_PLIV_el_PromptLeptonRNN_prompt
Definition: EventSaverFlatNtuple.h:572
top::EventSaverFlatNtuple::m_boostedJetTaggersNamesCalibrated
std::vector< std::string > m_boostedJetTaggersNamesCalibrated
Definition: EventSaverFlatNtuple.h:247
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_MC_XSEC_DOWN
float m_weight_leptonSF_MU_SF_Isol_MC_XSEC_DOWN
Definition: EventSaverFlatNtuple.h:341
top::MU_SF_ID_MATCHING_DOWN
@ MU_SF_ID_MATCHING_DOWN
Definition: ScaleFactorRetriever.h:62
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_CaloClusterSumEtRel
Definition: EventSaverFlatNtuple.h:579
top::EventSaverFlatNtuple::m_rcjet_D2_clstr
std::vector< float > m_rcjet_D2_clstr
Definition: EventSaverFlatNtuple.h:774
top::EventSaverFlatNtuple::m_ljet_Ghosts_CHadron_Final_Count
std::vector< int > m_ljet_Ghosts_CHadron_Final_Count
Definition: EventSaverFlatNtuple.h:1012
top::EventSaverFlatNtuple::m_PseudoTop_Reco_top_lep_pt
float m_PseudoTop_Reco_top_lep_pt
Definition: EventSaverFlatNtuple.h:957
top::MU_SF_ID_TRUTH_DOWN
@ MU_SF_ID_TRUTH_DOWN
Definition: ScaleFactorRetriever.h:68
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_DOWN
float m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_DOWN
Definition: EventSaverFlatNtuple.h:363
top::EventSaverFlatNtuple::recordTriggerDecision
void recordTriggerDecision(const top::Event &event)
Definition: EventSaverFlatNtuple.cxx:1910
top::EventSaverFlatNtuple::m_jet_DLx_pu
std::unordered_map< std::string, std::vector< float > > m_jet_DLx_pu
Definition: EventSaverFlatNtuple.h:661
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_DOWN
float m_weight_leptonSF_MU_SF_Isol_LUMI_UNCERT_DOWN
Definition: EventSaverFlatNtuple.h:339
xAOD::TruthParticle_v1::pdgId
int pdgId() const
PDG ID code.
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_DOWN
float m_weight_leptonSF_MU_SF_ID_STAT_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:285
top::EventSaverFlatNtuple::m_softmu_c_hadron_parent_pdgid
std::vector< int > m_softmu_c_hadron_parent_pdgid
Definition: EventSaverFlatNtuple.h:566
top::ParticleLevelEvent::m_softmuons
const xAOD::TruthParticleContainer * m_softmuons
Pointer to truth level soft-muons.
Definition: ParticleLevelEvent.h:48
top::EventSaverFlatNtuple::m_klfitter_model_lep_pt
std::vector< float > m_klfitter_model_lep_pt
Definition: EventSaverFlatNtuple.h:869
top::EventSaverFlatNtuple::scaleFactorRetriever
top::ScaleFactorRetriever * scaleFactorRetriever()
Return a shared pointer to the top::ScaleFactorRetriever object which allows us to easily access the ...
Definition: EventSaverFlatNtuple.cxx:230
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonRNN_conversion
std::vector< float > m_PLIV_el_PromptLeptonRNN_conversion
Definition: EventSaverFlatNtuple.h:569
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_DOWN
float m_weight_leptonSF_MU_SF_TTVA_BKG_FRACTION_DOWN
Definition: EventSaverFlatNtuple.h:357
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_DOWN
float m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEISO_DOWN
Definition: EventSaverFlatNtuple.h:322
python.PyAthena.obj
obj
Definition: PyAthena.py:135
top::ParticleLevelEvent::m_met
const xAOD::MissingET * m_met
Definition: ParticleLevelEvent.h:69
top::EventSaverFlatNtuple::m_klfitter_model_lepZ2_phi
std::vector< float > m_klfitter_model_lepZ2_phi
Definition: EventSaverFlatNtuple.h:883
top::EventSaverFlatNtuple::m_klfitter_model_lep_index
std::vector< unsigned int > m_klfitter_model_lep_index
Definition: EventSaverFlatNtuple.h:873
top::BTAG_SF_EIGEN_B
@ BTAG_SF_EIGEN_B
Definition: ScaleFactorRetriever.h:119
top::EventSaverFlatNtuple::m_PDFinfo_Q
std::vector< float > m_PDFinfo_Q
Definition: EventSaverFlatNtuple.h:990
ParticleLevelEvent.h
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_TrackJetNTrack
Definition: EventSaverFlatNtuple.h:574
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_UP
float m_weight_leptonSF_MU_SF_TTVA_MC_XSEC_UP
Definition: EventSaverFlatNtuple.h:360
top::MU_SF_TTVA_STAT_DOWN
@ MU_SF_TTVA_STAT_DOWN
Definition: ScaleFactorRetriever.h:56
xAOD::Jet_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
Definition: Jet_v1.cxx:44
top::EventSaverFlatNtuple::m_fwdel_eta
std::vector< float > m_fwdel_eta
Definition: EventSaverFlatNtuple.h:512
top::MU_SF_ID_FIT_MODEL_LOWPT_UP
@ MU_SF_ID_FIT_MODEL_LOWPT_UP
Definition: ScaleFactorRetriever.h:60
top::EventSaverFlatNtuple::m_weight_photonSF
float m_weight_photonSF
Definition: EventSaverFlatNtuple.h:385
top::PHOTON_EFF_ISO_UP
@ PHOTON_EFF_ISO_UP
Definition: ScaleFactorRetriever.h:115
top::EventSaverFlatNtuple::m_el_phi
std::vector< float > m_el_phi
Definition: EventSaverFlatNtuple.h:489
top::EventSaverFlatNtuple::m_rcjetsub_pt
std::vector< std::vector< float > > m_rcjetsub_pt
Definition: EventSaverFlatNtuple.h:758
top::EventSaverFlatNtuple::m_particleLevel_SelectionDecisions
std::vector< std::pair< std::string, int > > m_particleLevel_SelectionDecisions
The array of variables used for storing the particle level selection decisions.
Definition: EventSaverFlatNtuple.h:218
top::EventSaverFlatNtuple::m_mu_phi
std::vector< float > m_mu_phi
Definition: EventSaverFlatNtuple.h:523
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top1_eta
std::vector< float > m_klfitter_model_lj2_from_top1_eta
Definition: EventSaverFlatNtuple.h:911
top::EventSaverFlatNtuple::m_klfitter_model_nu_eta
std::vector< float > m_klfitter_model_nu_eta
Definition: EventSaverFlatNtuple.h:888
top::EventSaverFlatNtuple::m_VarRCjetsubBranchesParticle
std::map< std::string, std::vector< std::vector< float > > > m_VarRCjetsubBranchesParticle
Definition: EventSaverFlatNtuple.h:750
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
top::EventSaverFlatNtuple::m_PseudoTop_Reco_ttbar_pt
float m_PseudoTop_Reco_ttbar_pt
Definition: EventSaverFlatNtuple.h:949
top::ScaleFactorRetriever::electronSFSystVariationVector
std::vector< float > electronSFSystVariationVector(const top::Event &event, const top::topSFComp SFComp, int var=1) const
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_Isol_STAT_UP
float m_weight_leptonSF_MU_SF_Isol_STAT_UP
Definition: EventSaverFlatNtuple.h:330
top::FWDEL_SF_ID_DOWN
@ FWDEL_SF_ID_DOWN
Definition: ScaleFactorRetriever.h:127
top::EventSaverFlatNtuple::m_tjet_DLx
std::unordered_map< std::string, std::vector< float > > m_tjet_DLx
Definition: EventSaverFlatNtuple.h:724
top::EL_SF_Reco_DOWN
@ EL_SF_Reco_DOWN
Definition: ScaleFactorRetriever.h:33
top::EventSaverFlatNtuple::m_rcjetsub_Ghosts_BHadron_Final_Count
std::vector< std::vector< int > > m_rcjetsub_Ghosts_BHadron_Final_Count
Definition: EventSaverFlatNtuple.h:1013
top::EventSaverFlatNtuple::m_tjet_phi
std::vector< float > m_tjet_phi
Definition: EventSaverFlatNtuple.h:721
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_UP
float m_weight_leptonSF_MU_SF_ID_TRUTH_LOWPT_UP
Definition: EventSaverFlatNtuple.h:309
top::EventSaverFlatNtuple::m_klfitter_selected
short m_klfitter_selected
Definition: EventSaverFlatNtuple.h:815
MissingETContainer.h
top::MU_SF_TTVA_SYST_UP
@ MU_SF_TTVA_SYST_UP
Definition: ScaleFactorRetriever.h:57
xAOD::EventInfo_v1::beamSpotWeight
float beamSpotWeight() const
Weight for beam spot size reweighting.
Definition: EventInfo_v1.cxx:970
top::EventSaverFlatNtuple::m_track_numberDoF
std::vector< uint8_t > m_track_numberDoF
Definition: EventSaverFlatNtuple.h:655
top::EventSaverFlatNtuple::m_weight_mc
float m_weight_mc
Definition: EventSaverFlatNtuple.h:250
top::EventSaverFlatNtuple::m_ljet_pt
std::vector< float > m_ljet_pt
Definition: EventSaverFlatNtuple.h:705
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_DOWN
float m_weight_leptonSF_MU_SF_ID_FIT_MODEL_LOWPT_DOWN
Definition: EventSaverFlatNtuple.h:292
top::EventSaverFlatNtuple::m_klfitter_model_blep_phi
std::vector< float > m_klfitter_model_blep_phi
Definition: EventSaverFlatNtuple.h:841
top::EventSaverFlatNtuple::m_treeManagers
std::vector< std::shared_ptr< top::TreeManager > > m_treeManagers
A simple way to write out branches, without having to worry about the type.
Definition: EventSaverFlatNtuple.h:209
python.SystemOfUnits.pc
float pc
Definition: SystemOfUnits.py:99
top::MU_SF_Isol_SUPRESSION_SCALE_UP
@ MU_SF_Isol_SUPRESSION_SCALE_UP
Definition: ScaleFactorRetriever.h:85
top::EventSaverFlatNtuple::m_track_chiSquared
std::vector< float > m_track_chiSquared
Definition: EventSaverFlatNtuple.h:654
xAOD::MissingET_v1::met
float met() const
Returns .
fitman.rho
rho
Definition: fitman.py:532
match
bool match(std::string s1, std::string s2)
match the individual directories of two strings
Definition: hcg.cxx:356
top::EventSaverFlatNtuple::m_jet_DLx_ptau
std::unordered_map< std::string, std::vector< float > > m_jet_DLx_ptau
Definition: EventSaverFlatNtuple.h:662
top::EventSaverFlatNtuple::m_el_eta_bare
std::vector< float > m_el_eta_bare
Definition: EventSaverFlatNtuple.h:1000
top::EventSaverFlatNtuple::m_PLIV_el_PromptLeptonImprovedInput_PtRel
std::vector< float > m_PLIV_el_PromptLeptonImprovedInput_PtRel
Definition: EventSaverFlatNtuple.h:580
top::MU_SF_TTVA_SYST_DOWN
@ MU_SF_TTVA_SYST_DOWN
Definition: ScaleFactorRetriever.h:57
top::EventSaverFlatNtuple::m_jet_ghostTrack_d0
std::vector< std::vector< float > > m_jet_ghostTrack_d0
Definition: EventSaverFlatNtuple.h:637
AsymptMatrixTool.h
PhysDESDM_Quirks.trigger
trigger
Definition: PhysDESDM_Quirks.py:27
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_UP
float m_weight_leptonSF_MU_SF_ID_HIGHETA_PROBEIP_UP
Definition: EventSaverFlatNtuple.h:319
top::EventSaverFlatNtuple::m_tau_isHadronic
std::vector< char > m_tau_isHadronic
Definition: EventSaverFlatNtuple.h:613
top::FJVT_DOWN
@ FJVT_DOWN
Definition: ScaleFactorRetriever.h:125
top::EventSaverFlatNtuple::m_failFJvt_jet_HadronConeExclExtendedTruthLabelID
std::vector< int > m_failFJvt_jet_HadronConeExclExtendedTruthLabelID
Definition: EventSaverFlatNtuple.h:695
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_UP
float m_weight_leptonSF_MU_SF_TTVA_SUPRESSION_SCALE_UP
Definition: EventSaverFlatNtuple.h:364
xAOD::EventInfo_v1::actualInteractionsPerCrossing
float actualInteractionsPerCrossing() const
Average interactions per crossing for the current BCID - for in-time pile-up.
Definition: EventInfo_v1.cxx:380
top::MU_SF_ID_SYST_DOWN
@ MU_SF_ID_SYST_DOWN
Definition: ScaleFactorRetriever.h:48
top::EventSaverFlatNtuple::m_klfitter_model_lj2_from_top2_pt
std::vector< float > m_klfitter_model_lj2_from_top2_pt
Definition: EventSaverFlatNtuple.h:922
top::EventSaverFlatNtuple::m_mc_barcode
std::vector< int > m_mc_barcode
Definition: EventSaverFlatNtuple.h:983
top::MU_SF_ID_CR1_UP
@ MU_SF_ID_CR1_UP
Definition: ScaleFactorRetriever.h:71
xAOD::BTagging_v1::pb
bool pb(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:360
top::EventSaverFlatNtuple::m_el_true_firstEgMotherTruthType
std::vector< int > m_el_true_firstEgMotherTruthType
Definition: EventSaverFlatNtuple.h:504
top::EventSaverFlatNtuple::m_mu_true_type
std::vector< int > m_mu_true_type
Definition: EventSaverFlatNtuple.h:534
top::EventSaverFlatNtuple::m_klfitter_parameters_size
std::vector< unsigned int > m_klfitter_parameters_size
Definition: EventSaverFlatNtuple.h:828
top::EventSaverFlatNtuple::m_failJvt_jet_ghostTrack_e
std::vector< std::vector< float > > m_failJvt_jet_ghostTrack_e
Definition: EventSaverFlatNtuple.h:679
top::MU_SF_ID_EXTRAPOLATION_DOWN
@ MU_SF_ID_EXTRAPOLATION_DOWN
Definition: ScaleFactorRetriever.h:77
top::EventSaverFlatNtuple::m_klfitter_model_Higgs_b1_E
std::vector< float > m_klfitter_model_Higgs_b1_E
Definition: EventSaverFlatNtuple.h:860
top::EventSaverFlatNtuple::m_klfitter_model_b_from_top2_E
std::vector< float > m_klfitter_model_b_from_top2_E
Definition: EventSaverFlatNtuple.h:901
top::EventSaverFlatNtuple::m_weight_bTagSF_eigen_B_down
std::unordered_map< std::string, std::vector< float > > m_weight_bTagSF_eigen_B_down
Definition: EventSaverFlatNtuple.h:415
top::EventSaverFlatNtuple::m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_UP
float m_weight_leptonSF_MU_SF_TTVA_QCD_TEMPLATE_UP
Definition: EventSaverFlatNtuple.h:362
top::EventSaverFlatNtuple::m_failFJvt_jet_ghostTrack_qOverP
std::vector< std::vector< float > > m_failFJvt_jet_ghostTrack_qOverP
Definition: EventSaverFlatNtuple.h:702
top::EventSaverFlatNtuple::m_perjet_weight_bTagSF_eigen_Light_up
std::unordered_map< std::string, std::vector< std::vector< float > > > m_perjet_weight_bTagSF_eigen_Light_up
Definition: EventSaverFlatNtuple.h:441
top::EventSaverFlatNtuple::m_jet_Ghosts_CHadron_Final_Count
std::vector< int > m_jet_Ghosts_CHadron_Final_Count
Definition: EventSaverFlatNtuple.h:1010
top::MU_SF_ID_CR1_DOWN
@ MU_SF_ID_CR1_DOWN
Definition: ScaleFactorRetriever.h:71
top::EventSaverFlatNtuple::m_el_pt
std::vector< float > m_el_pt
Definition: EventSaverFlatNtuple.h:486