ATLAS Offline Software
Loading...
Searching...
No Matches
GeneralTauPlots.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
6#include "GeneralTauPlots.h"
8
9namespace Tau{
10
11GeneralTauPlots::GeneralTauPlots(PlotBase* pParent, const std::string& sDir, const std::string& sTauJetContainerName):
12 PlotBase(pParent, sDir),
13 m_oTauKinematicPlots(this, "", sTauJetContainerName),
14 m_sTauJetContainerName(sTauJetContainerName)
15{
16}
17
19
20 m_tauCharge = Book1D("Charge",m_sTauJetContainerName + " Tau charge; charge; # Taus",7,-3.,4.);
21 m_tauNChargedTracks = Book1D("NChargedTracks", m_sTauJetContainerName + " Tau n charged tracks; nCharged; # Taus",10,0.,10.);
22 m_tauNIsolatedTracks = Book1D("NIsolatedTracks", m_sTauJetContainerName + " Tau n isolated tracks; nIsolated; # Taus",10,0.,10.);
23 m_tauNCoreTracks = Book1D("NCoreTracks",m_sTauJetContainerName + " Tau n core tracks; nCore; # Taus",15,0.,15.);
24 m_tauNWideTracks = Book1D("NWideTracks",m_sTauJetContainerName + " Tau n wide tracks; nWide; # Taus",20,0.,20.);
25 m_ptHighPt = Book1D("ptHighPt", m_sTauJetContainerName+" HighPt"+"; pt; # Taus",20, 0.0, 1500.0);
26 m_RNNEleScore = Book1D("RNNEleScore", m_sTauJetContainerName+" RNNEleScore;RNNEleScore;# Tau", 50,0.,1.);
27 m_RNNEleScoreSigTrans = Book1D("RNNEleScoreSigTrans", m_sTauJetContainerName+" RNNEleScoreSigTrans;RNNEleScoreSigTrans;"+"# Tau", 50,0.,1.);
28 m_GNNEleScore = Book1D("GNNEleScore", m_sTauJetContainerName+" GNNEleScore;GNNEleScore;# Tau", 75,0.,15.);
29 m_GNNEleScoreSigTrans = Book1D("GNNEleScoreSigTrans", m_sTauJetContainerName+" GNNEleScoreSigTrans;GNNEleScoreSigTrans;"+"# Tau", 50,0.,1.);
30 m_GNTauScore = Book1D("GNTauScore", m_sTauJetContainerName+" GNTauScore;GNTauScore;# Tau", 50,0.,1.);
31 m_GNTauScoreSigTrans = Book1D("GNTauScoreSigTrans", m_sTauJetContainerName+" GNTauScoreSigTrans;GNTauScoreSigTrans;"+"# Tau", 50,0.,1.);
32 m_ptGNTauLoose = Book1D("ptGNTauSigLoose",m_sTauJetContainerName+" GNTauSigLoose; pt; # Taus", 20, 0.0, 150.0);
33 m_ptGNTauLooseHighPt = Book1D("ptGNTauSigLooseHighPt", m_sTauJetContainerName+" GNTauSigLooseHighPt; pt"+"; # Taus",20, 0.0, 1500.0);
34 m_ptGNTauMedium = Book1D("ptGNTauSigMedium",m_sTauJetContainerName+" GNTauSigMedium; pt; # Taus", 20, 0.0, 150.0);
35 m_ptGNTauMediumHighPt = Book1D("ptGNTauSigMediumHighPt", m_sTauJetContainerName+" GNTauSigMediumHighPt; pt"+"; # Taus",20, 0.0, 1500.0);
36 m_ptGNTauTight = Book1D("ptGNTauSigTight",m_sTauJetContainerName+" GNTauSigTight; pt; # Taus", 20, 0.0, 150.0);
37 m_ptGNTauTightHighPt = Book1D("ptGNTauSigTightHighPt", m_sTauJetContainerName+" GNTauSigTightHighPt; pt"+"; # Taus",20, 0.0, 1500.0);
38
39 m_tauTrackSummary = Book1D("tauTrackSummary", m_sTauJetContainerName+" Track Type Summary", 7,0,7);
40 m_tauTrackSummary->GetXaxis()->SetLabelSize(0.05);
41 for(int i=1; i<= 7;i++){
42 m_tauTrackSummary->GetXaxis()->SetBinLabel(i,m_lable[i-1]);
43 }
44
45}
46
47void GeneralTauPlots::fill(const xAOD::TauJet& tau, float weight) {
48 m_oTauKinematicPlots.fill(tau, weight);
49 m_tauCharge->Fill(tau.charge(), weight);
50 m_tauNChargedTracks->Fill(tau.nTracks(), weight);
52 m_tauNCoreTracks->Fill(tau.nTracks(xAOD::TauJetParameters::coreTrack), weight);
53 m_tauNWideTracks->Fill(tau.nTracks(xAOD::TauJetParameters::wideTrack), weight);
54 m_ptHighPt->Fill(tau.pt()/Athena::Units::GeV, weight);
55
56
57 static const SG::ConstAccessor<float> acc_RNNEleScore("RNNEleScore");
58 if ( acc_RNNEleScore.isAvailable(tau) ) {
59 float rnnScore = tau.discriminant(xAOD::TauJetParameters::RNNEleScore);
60 if ( rnnScore > -2.0 ) m_RNNEleScore->Fill(rnnScore, weight);
61 }
62 static const SG::ConstAccessor<float> acc_RNNEleScoreSigTrans("RNNEleScoreSigTrans_v1");
63 if ( acc_RNNEleScoreSigTrans.isAvailable(tau) ) {
64 float rnnScore = acc_RNNEleScoreSigTrans(tau);
65 m_RNNEleScoreSigTrans->Fill(rnnScore, weight);
66 }
67 static const SG::ConstAccessor<float> acc_GNNEleScore("TauGNNeVetoScore");
68 if ( acc_GNNEleScore.isAvailable(tau) ) {
69 m_GNNEleScore->Fill(acc_GNNEleScore(tau), weight);
70 }
71 static const SG::ConstAccessor<float> acc_GNNEleScoreSigTrans("TauGNNeVetoSigTrans");
72 if ( acc_GNNEleScoreSigTrans.isAvailable(tau) ) {
73 m_GNNEleScoreSigTrans->Fill(acc_GNNEleScoreSigTrans(tau), weight);
74 }
75 static const SG::ConstAccessor<float> acc_GNTauScore("GNTauScore_v0prune");
76 if ( acc_GNTauScore.isAvailable(tau) ) {
77 float gntauScore = acc_GNTauScore(tau);
78 if ( gntauScore > -2.0 ) m_GNTauScore->Fill(gntauScore, weight);
79 }
80 static const SG::ConstAccessor<float> acc_GNTauScoreSigTrans("GNTauScoreSigTrans_v0prune");
81 if ( acc_GNTauScoreSigTrans.isAvailable(tau) ) {
82 float gntauScoreSigTrans = acc_GNTauScoreSigTrans(tau);
83 if ( gntauScoreSigTrans > -2.0 ) m_GNTauScoreSigTrans->Fill(gntauScoreSigTrans, weight);
84 }
85
86 static const SG::ConstAccessor<char> acc_GNTauL("GNTauL_v0prune");
87 if( acc_GNTauL.isAvailable(tau) && acc_GNTauL(tau)) {
88 m_ptGNTauLoose ->Fill(tau.pt()/Athena::Units::GeV, weight);
89 m_ptGNTauLooseHighPt->Fill(tau.pt()/Athena::Units::GeV, weight);
90 }
91 static const SG::ConstAccessor<char> acc_GNTauM("GNTauM_v0prune");
92 if( acc_GNTauM.isAvailable(tau) && acc_GNTauM(tau)) {
93 m_ptGNTauMedium ->Fill(tau.pt()/Athena::Units::GeV, weight);
94 m_ptGNTauMediumHighPt->Fill(tau.pt()/Athena::Units::GeV, weight);
95 }
96 static const SG::ConstAccessor<char> acc_GNTauT("GNTauT_v0prune");
97 if( acc_GNTauT.isAvailable(tau) && acc_GNTauT(tau)) {
98 m_ptGNTauTight ->Fill(tau.pt()/Athena::Units::GeV, weight);
99 m_ptGNTauTightHighPt->Fill(tau.pt()/Athena::Units::GeV, weight);
100 }
101
102 // fill histogram with track summary type
103 for(int j=0; j < 7; j++){
104 int tracktype;
105 if( j==0) { tracktype = tau.nTracks(xAOD::TauJetParameters::coreTrack);}
106 else if( j==1) { tracktype = tau.nTracks(xAOD::TauJetParameters::wideTrack);}
107 else if( j==2) { continue;}
108 else if( j==3) { tracktype = tau.nTracks();}
109 else if( j==4) { tracktype = tau.nTracks(xAOD::TauJetParameters::classifiedIsolation);}
110 else if( j==5) { tracktype = tau.nTracks(xAOD::TauJetParameters::classifiedConversion);}
111 else { tracktype = tau.nTracks(xAOD::TauJetParameters::classifiedFake);}
112
113 for(int i=0; i < tracktype; i++){
114 m_tauTrackSummary->Fill(j+0.5, weight);
115 }
116 }
117}
118
119
120}
Wrapper to avoid constant divisions when using units.
TH1D * Book1D(std::string_view name, std::string_view labels, int nBins, float start, float end, bool prependDir=true)
Book a TH1D histogram.
Definition PlotBase.cxx:94
PlotBase(PlotBase *parent, std::string_view sDir)
Definition PlotBase.cxx:29
Helper class to provide constant type-safe access to aux data.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
Tau::TauKinematicPlots m_oTauKinematicPlots
std::string m_sTauJetContainerName
void fill(const xAOD::TauJet &tau, float weight)
const char * m_lable[7]
GeneralTauPlots(PlotBase *pParent, const std::string &sDir, const std::string &sTauJetContainerName)
@ RNNEleScore
RNN score for Ele rejection (not transformed).
Definition TauDefs.h:94
TauJet_v3 TauJet
Definition of the current "tau version".
Definition TauJet.h:17