ATLAS Offline Software
PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <utility>
6 #include "ResolutionPlots.h"
8 #include "TLorentzVector.h"
10 
11 namespace DiTau{
12 
13  ResolutionPlots::ResolutionPlots(PlotBase *pParent, const std::string& sDir, const std::string& sDiTauJetContainerName):
14  PlotBase(pParent, sDir),
15  m_sDiTauJetContainerName{sDiTauJetContainerName} {}
16 
18 
19 
21  m_lead_subjet_ptResolution = Book1D("lead_subjet_ptResolution",m_sDiTauJetContainerName + " lead subjet ptResolution; lead subjet pt(TauReco)/pt(visTauTruth); # Part",100,0.5,1.5);
22  m_lead_subjet_etaResolution = Book1D("lead_subjet_etaResolution",m_sDiTauJetContainerName + " lead subjet etaResolution; lead subjet eta(TauReco) - eta(visTauTruth); # Part",100,-0.1,0.1);
23  m_lead_subjet_phiResolution = Book1D("lead_subjet_phiResolution",m_sDiTauJetContainerName + " lead subjet phiResolution; lead subjet phi(TauReco) - phi(visTauTruth); # Part",100,-0.1,0.1);
24 
25  m_sublead_subjet_ptResolution = Book1D("sublead_subjet_ptResolution",m_sDiTauJetContainerName + " sublead subjet ptResolution; sublead subjet pt(TauReco)/pt(visTauTruth); # Part",100,0.5,1.5);
26  m_sublead_subjet_etaResolution = Book1D("sublead_subjet_etaResolution",m_sDiTauJetContainerName + " sublead subjet etaResolution; sublead subjet eta(TauReco) - eta(visTauTruth); # Part",100,-0.1,0.1);
27  m_sublead_subjet_phiResolution = Book1D("sublead_subjet_phiResolution",m_sDiTauJetContainerName + " sublead subjet phiResolution; sublead subjet phi(TauReco) - phi(visTauTruth); # Part",100,-0.1,0.1);
28 
29  }
30 
31  void ResolutionPlots::fill(const xAOD::DiTauJet& ditau, float weight) {
32 
33  static const SG::ConstAccessor<float> acc_lead_subjet_ptvis("TruthVisLeadPt");
34  static const SG::ConstAccessor<float> acc_lead_subjet_etavis("TruthVisLeadEta");
35  static const SG::ConstAccessor<float> acc_lead_subjet_phivis("TruthVisLeadPhi");
36 
37  static const SG::ConstAccessor<float> acc_sublead_subjet_ptvis("TruthVisSubleadPt");
38  static const SG::ConstAccessor<float> acc_sublead_subjet_etavis("TruthVisSubleadEta");
39  static const SG::ConstAccessor<float> acc_sublead_subjet_phivis("TruthVisSubleadPhi");
40 
41  // fill histograms for the leading subjet
42  float ptratio = -999;
43  float pt = acc_lead_subjet_ptvis(ditau);
44  if(pt>0.) ptratio = ditau.subjetPt(0)/pt;
45  float dphi = xAOD::P4Helpers::deltaPhi(ditau.subjetPhi(0),acc_lead_subjet_phivis(ditau));
46 
47  m_lead_subjet_ptResolution->Fill(ptratio, weight);
48  m_lead_subjet_etaResolution->Fill(ditau.subjetEta(0) - acc_lead_subjet_etavis(ditau), weight);
49  m_lead_subjet_phiResolution->Fill(dphi, weight);
50 
51  // fill histograms for the subleading subjet
52  pt = acc_sublead_subjet_ptvis(ditau);
53  if(pt>0.) ptratio = ditau.subjetPt(1)/pt;
54  dphi = xAOD::P4Helpers::deltaPhi(ditau.subjetPhi(1),acc_sublead_subjet_etavis(ditau));
55 
56  m_sublead_subjet_ptResolution->Fill(ptratio, weight);
57  m_sublead_subjet_etaResolution->Fill(ditau.subjetEta(1) - acc_sublead_subjet_etavis(ditau), weight);
59 
60  }
61 
62 }
PlotBase
Definition: PlotBase.h:34
ResolutionPlots.h
DiTau::ResolutionPlots::m_sDiTauJetContainerName
std::string m_sDiTauJetContainerName
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:29
xAODP4Helpers.h
python.copyTCTOutput.sDir
sDir
Definition: copyTCTOutput.py:59
DiTau::ResolutionPlots::m_sublead_subjet_etaResolution
TH1 * m_sublead_subjet_etaResolution
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:23
xAOD::DiTauJet_v1::subjetPhi
float subjetPhi(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:111
test_pyathena.pt
pt
Definition: test_pyathena.py:11
xAOD::P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: xAODP4Helpers.h:69
SG::ConstAccessor< float >
DiTau::ResolutionPlots::m_lead_subjet_ptResolution
TH1 * m_lead_subjet_ptResolution
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:18
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:190
PlotBase::Book1D
TH1D * Book1D(const std::string &name, const std::string &labels, int nBins, float start, float end, bool prependDir=true)
Book a TH1D histogram.
Definition: PlotBase.cxx:94
DiTau::ResolutionPlots::~ResolutionPlots
virtual ~ResolutionPlots()
DiTau::ResolutionPlots::m_sublead_subjet_ptResolution
TH1 * m_sublead_subjet_ptResolution
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:22
DiTau::ResolutionPlots::initializePlots
void initializePlots()
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.cxx:20
DiTau::ResolutionPlots::m_lead_subjet_phiResolution
TH1 * m_lead_subjet_phiResolution
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:20
DiTau::ResolutionPlots::m_sublead_subjet_phiResolution
TH1 * m_sublead_subjet_phiResolution
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:24
DiTau
Definition: CorePlots.cxx:13
DiTau::ResolutionPlots::fill
void fill(const xAOD::DiTauJet &ditau, float weight)
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.cxx:31
xAOD::DiTauJet_v1::subjetEta
float subjetEta(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:101
xAOD::DiTauJet_v1
Definition: DiTauJet_v1.h:31
DiTau::ResolutionPlots::ResolutionPlots
ResolutionPlots(PlotBase *pParent, const std::string &sDir, const std::string &sDiTauJetContainerName)
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.cxx:13
xAOD::DiTauJet_v1::subjetPt
float subjetPt(unsigned int numSubjet) const
Definition: DiTauJet_v1.cxx:91
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
DiTau::ResolutionPlots::m_lead_subjet_etaResolution
TH1 * m_lead_subjet_etaResolution
Definition: PhysicsAnalysis/TauID/DiTauDQA/src/ResolutionPlots.h:19