ATLAS Offline Software
Loading...
Searching...
No Matches
DerivationFramework::SkimmingToolHIGG5VBF Class Reference

#include <SkimmingToolHIGG5VBF.h>

Inheritance diagram for DerivationFramework::SkimmingToolHIGG5VBF:
Collaboration diagram for DerivationFramework::SkimmingToolHIGG5VBF:

Public Member Functions

 SkimmingToolHIGG5VBF (const std::string &t, const std::string &n, const IInterface *p)
 Constructor with parameters.
 ~SkimmingToolHIGG5VBF ()
 Destructor.
virtual StatusCode initialize () override
virtual StatusCode finalize () override
virtual bool eventPassesFilter () const override
 Check that the current event passes this filter.

Private Member Functions

bool checkAllJetQuality (const TLorentzVector &jet) const
bool checkCentralJetQuality (const TLorentzVector &jet) const
TLorentzVector getCalibedJets (const xAOD::Jet *jet) const

Private Attributes

bool m_debug
ToolHandle< Trig::TrigDecisionToolm_trigDecisionTool
std::atomic< unsigned int > m_ntot
std::atomic< unsigned int > m_npass
std::string m_jetSGKey
std::string m_calibedJetMomKey
bool m_reqNAllJets
unsigned int m_nAllJets
double m_allJetPtCut
double m_allJetEtaCut
bool m_reqNCentralJets
unsigned int m_nCentralJets
double m_centralJetPtCut
double m_centralJetEtaCut
bool m_reqTrigger
std::vector< std::string > m_triggers
bool m_reqVbfMjj
double m_vbfMjjCut
std::string m_phSGKey
bool m_reqPh
double m_phPtCut
double m_centralPhEtaCut

Detailed Description

Constructor & Destructor Documentation

◆ SkimmingToolHIGG5VBF()

DerivationFramework::SkimmingToolHIGG5VBF::SkimmingToolHIGG5VBF ( const std::string & t,
const std::string & n,
const IInterface * p )

Constructor with parameters.

Definition at line 19 of file SkimmingToolHIGG5VBF.cxx.

21 :
22 base_class(t, n, p),
23 m_trigDecisionTool("Trig::TrigDecisionTool/TrigDecisionTool"),
24 m_ntot(0),
25 m_npass(0)
26{
27
28 // for jet multiplicity requirement
29 declareProperty("JetContainerKey", m_jetSGKey="AntiKt4EMTopoJets");
30 declareProperty("CalibedJetMomentKey", m_calibedJetMomKey="DFCommonJets_Calib");
31
32 // for jet multiplicity
33 declareProperty("ReqNAllJets", m_reqNAllJets=false);
34 declareProperty("NumberOfAllJets", m_nAllJets=4);
35 declareProperty("AllJetPtCut", m_allJetPtCut=40.*CLHEP::GeV);
36 declareProperty("AllJetEtaCut", m_allJetEtaCut=4.9);
37
38 declareProperty("ReqNCentralJets", m_reqNCentralJets=false);
39 declareProperty("NumberOfCentralJets", m_nCentralJets=2);
40 declareProperty("CentralJetPtCut", m_centralJetPtCut=40.*CLHEP::GeV);
41 declareProperty("CentralJetEtaCut", m_centralJetEtaCut=2.6);
42
43 // for trigger requirement
44 declareProperty("ReqTrigger", m_reqTrigger=false);
45 declareProperty("Triggers", m_triggers=std::vector<std::string>());
46
47 // for Mjj requirement ()
48 declareProperty("ReqVBFMjj", m_reqVbfMjj=false); // logical "ORed" with ReqPhoton
49 declareProperty("MjjCut", m_vbfMjjCut=0.*CLHEP::GeV);
50
51 declareProperty("DoDebug", m_debug=false);
52
53 // photon requirement (p. rose)
54 declareProperty("PhotonContainerKey", m_phSGKey="Photons");
55 declareProperty("ReqPhoton", m_reqPh=false); // logical "ORed" with ReqVBFMjj
56 declareProperty("PhotonPtCut", m_phPtCut=0.*CLHEP::GeV);
57 declareProperty("CentralPhotonEtaCut", m_centralPhEtaCut=2.6);
58
59}
ToolHandle< Trig::TrigDecisionTool > m_trigDecisionTool

◆ ~SkimmingToolHIGG5VBF()

DerivationFramework::SkimmingToolHIGG5VBF::~SkimmingToolHIGG5VBF ( )

Destructor.

Definition at line 62 of file SkimmingToolHIGG5VBF.cxx.

62 {
63}

Member Function Documentation

◆ checkAllJetQuality()

bool DerivationFramework::SkimmingToolHIGG5VBF::checkAllJetQuality ( const TLorentzVector & jet) const
private

Definition at line 176 of file SkimmingToolHIGG5VBF.cxx.

177{
178 if(jet.Pt()<m_allJetPtCut) return false;
179 if(fabs(jet.Eta())>m_allJetEtaCut) return false;
180
181 return true;
182}

◆ checkCentralJetQuality()

bool DerivationFramework::SkimmingToolHIGG5VBF::checkCentralJetQuality ( const TLorentzVector & jet) const
private

Definition at line 184 of file SkimmingToolHIGG5VBF.cxx.

185{
186 if(jet.Pt()<m_centralJetPtCut) return false;
187 if(fabs(jet.Eta())>m_centralJetEtaCut) return false;
188
189 return true;
190}

◆ eventPassesFilter()

bool DerivationFramework::SkimmingToolHIGG5VBF::eventPassesFilter ( ) const
overridevirtual

Check that the current event passes this filter.

Definition at line 88 of file SkimmingToolHIGG5VBF.cxx.

89{
90 m_ntot++;
91 bool acceptEvent(true);
92
93 StatusCode sc(StatusCode::SUCCESS);
94
95 bool isTriggerFired(m_triggers.empty());
96 for(unsigned int i(0); i<m_triggers.size(); i++) {
97 if(m_trigDecisionTool->isPassed(m_triggers.at(i))) {
98 isTriggerFired = true;
99 break;
100 }
101 }
102
103 // (1) Count Jet Multiplicity
104 std::vector<TLorentzVector> goodAllJets;
105 std::vector<TLorentzVector> goodCentralJets;
106
107 const xAOD::JetContainer *jets(nullptr);
108 ATH_CHECK(evtStore()->retrieve(jets, m_jetSGKey), false);
111 for(; jet_itr != jet_end; ++jet_itr) {
112 TLorentzVector jetP4 = getCalibedJets( (*jet_itr) );
113 if(this->checkAllJetQuality(jetP4)) { goodAllJets.push_back(jetP4); }
114 if(this->checkCentralJetQuality(jetP4)) { goodCentralJets.push_back(jetP4); }
115 }
116
117 // (2) evaluate maximum Mjj in the event
118 double maxM = 0.;
119 for(unsigned int jet_i = 0; jet_i<goodAllJets.size(); jet_i++) {
120 const TLorentzVector& iP4 = goodAllJets.at(jet_i);
121
122 for(unsigned int jet_k=jet_i+1; jet_k<goodAllJets.size(); jet_k++) {
123 const TLorentzVector& kP4 = goodAllJets.at(jet_k);
124
125 const TLorentzVector jjP4 = iP4 + kP4;
126 const double jjM = jjP4.M();
127
128 if (maxM<jjM) {maxM=jjM;}
129 }
130 }
131
132 //get max pt of any photon in the event (p. rose)
133 double maxPhPt=0.;
134 if(m_reqPh){
135 const xAOD::PhotonContainer *phots(nullptr);
136 ATH_CHECK(evtStore()->retrieve(phots, m_phSGKey), false);
137 for (const auto* ph : *phots){
138 if(abs(ph->eta())<m_centralPhEtaCut)
139 if(ph->pt()>maxPhPt) maxPhPt = ph->pt();
140 }//for
141 }//if
142
143
144
145 const bool passNAllJet = (goodAllJets.size()>=m_nAllJets);
146 const bool passNCentralJet = (goodCentralJets.size()>=m_nCentralJets);
147 const bool passMjjCut = (maxM>m_vbfMjjCut);
148 const bool passPhPtCut = (maxPhPt>m_phPtCut);
149
150 if (m_reqNAllJets) { if (not passNAllJet) {acceptEvent=false;} }
151 if (m_reqNCentralJets) { if (not passNCentralJet) {acceptEvent=false;} }
152 //if (m_reqVbfMjj) { if (not passMjjCut) {acceptEvent=false;} }
153 if (m_reqTrigger) { if (not isTriggerFired) {acceptEvent=false;} }
154 //vbf+gamma addition -- logical OR of mjj and phpt cut
155 if(m_reqVbfMjj and not m_reqPh) { if (not passMjjCut) {acceptEvent=false;} }
156 if(m_reqPh and not m_reqVbfMjj) { if (not passPhPtCut) {acceptEvent=false;} }
157 if(m_reqPh and m_reqVbfMjj) { if (not (passMjjCut or passPhPtCut) ) {acceptEvent=false;} }
158
159 if (acceptEvent) {m_npass++;}
160
161 if (m_debug) {
162 printf("dbg> L%3d : event accepted [%s] "
163 "(NJets=%2d [%6s], NCentralJets=%2d [%6s] Mjj=%10.1f [%6s], Trigger [%6s]) \n",
164 __LINE__,
165 acceptEvent? "Y" : "N",
166 (int)goodAllJets.size(), passNAllJet ? "PASSED" : "FAILED",
167 (int)goodCentralJets.size(), passNCentralJet ? "PASSED" : "FAILED",
168 maxM, passMjjCut ? "PASSED" : "FAILED",
169 isTriggerFired ? "PASSED" : "FAILED"
170 );
171 }
172
173 return acceptEvent;
174}
#define ATH_CHECK
Evaluate an expression and check for errors.
static Double_t sc
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
TLorentzVector getCalibedJets(const xAOD::Jet *jet) const
bool checkCentralJetQuality(const TLorentzVector &jet) const
bool checkAllJetQuality(const TLorentzVector &jet) const
::StatusCode StatusCode
StatusCode definition for legacy code.
retrieve(aClass, aKey=None)
Definition PyKernel.py:110
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
JetContainer_v1 JetContainer
Definition of the current "jet container version".

◆ finalize()

StatusCode DerivationFramework::SkimmingToolHIGG5VBF::finalize ( )
overridevirtual

Definition at line 80 of file SkimmingToolHIGG5VBF.cxx.

81{
82 ATH_MSG_VERBOSE("finalize() ...");
83 ATH_MSG_INFO("Processed " << m_ntot << " events, " << m_npass << " events passed filter ");
84 return StatusCode::SUCCESS;
85}
#define ATH_MSG_INFO(x)
#define ATH_MSG_VERBOSE(x)

◆ getCalibedJets()

TLorentzVector DerivationFramework::SkimmingToolHIGG5VBF::getCalibedJets ( const xAOD::Jet * jet) const
private

Definition at line 193 of file SkimmingToolHIGG5VBF.cxx.

194{
195 TLorentzVector rc;
196
197 if(!jet) return rc;
198
199 SG::ConstAccessor<float> ptAcc(m_calibedJetMomKey+"_pt");
200 SG::ConstAccessor<float> etaAcc(m_calibedJetMomKey+"_eta");
201 SG::ConstAccessor<float> phiAcc(m_calibedJetMomKey+"_phi");
202 SG::ConstAccessor<float> mAcc(m_calibedJetMomKey+"_m");
203 const float& pt =ptAcc(*jet);
204 const float& eta=etaAcc(*jet);
205 const float& phi=phiAcc(*jet);
206 const float& m =mAcc(*jet);
207
208 rc.SetPtEtaPhiM(pt, eta, phi, m);
209
210 return rc;
211}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
static Double_t rc

◆ initialize()

StatusCode DerivationFramework::SkimmingToolHIGG5VBF::initialize ( )
overridevirtual

Definition at line 66 of file SkimmingToolHIGG5VBF.cxx.

67{
68 ATH_MSG_VERBOSE("initialize() ...");
69
70 // trigger decision tool
71 if(m_trigDecisionTool.retrieve(DisableTool{!m_reqTrigger}).isFailure()) {
72 ATH_MSG_FATAL("Failed to retrieve tool: " << m_trigDecisionTool);
73 return StatusCode::FAILURE;
74 }
75 ATH_MSG_INFO("Retrieved tool: " << m_trigDecisionTool);
76
77 return StatusCode::SUCCESS;
78}
#define ATH_MSG_FATAL(x)

Member Data Documentation

◆ m_allJetEtaCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_allJetEtaCut
private

Definition at line 65 of file SkimmingToolHIGG5VBF.h.

◆ m_allJetPtCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_allJetPtCut
private

Definition at line 64 of file SkimmingToolHIGG5VBF.h.

◆ m_calibedJetMomKey

std::string DerivationFramework::SkimmingToolHIGG5VBF::m_calibedJetMomKey
private

Definition at line 59 of file SkimmingToolHIGG5VBF.h.

◆ m_centralJetEtaCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_centralJetEtaCut
private

Definition at line 70 of file SkimmingToolHIGG5VBF.h.

◆ m_centralJetPtCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_centralJetPtCut
private

Definition at line 69 of file SkimmingToolHIGG5VBF.h.

◆ m_centralPhEtaCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_centralPhEtaCut
private

Definition at line 88 of file SkimmingToolHIGG5VBF.h.

◆ m_debug

bool DerivationFramework::SkimmingToolHIGG5VBF::m_debug
private

Definition at line 51 of file SkimmingToolHIGG5VBF.h.

◆ m_jetSGKey

std::string DerivationFramework::SkimmingToolHIGG5VBF::m_jetSGKey
private

Definition at line 58 of file SkimmingToolHIGG5VBF.h.

◆ m_nAllJets

unsigned int DerivationFramework::SkimmingToolHIGG5VBF::m_nAllJets
private

Definition at line 63 of file SkimmingToolHIGG5VBF.h.

◆ m_nCentralJets

unsigned int DerivationFramework::SkimmingToolHIGG5VBF::m_nCentralJets
private

Definition at line 68 of file SkimmingToolHIGG5VBF.h.

◆ m_npass

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG5VBF::m_npass
mutableprivate

Definition at line 56 of file SkimmingToolHIGG5VBF.h.

◆ m_ntot

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG5VBF::m_ntot
mutableprivate

Definition at line 55 of file SkimmingToolHIGG5VBF.h.

◆ m_phPtCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_phPtCut
private

Definition at line 87 of file SkimmingToolHIGG5VBF.h.

◆ m_phSGKey

std::string DerivationFramework::SkimmingToolHIGG5VBF::m_phSGKey
private

Definition at line 85 of file SkimmingToolHIGG5VBF.h.

◆ m_reqNAllJets

bool DerivationFramework::SkimmingToolHIGG5VBF::m_reqNAllJets
private

Definition at line 62 of file SkimmingToolHIGG5VBF.h.

◆ m_reqNCentralJets

bool DerivationFramework::SkimmingToolHIGG5VBF::m_reqNCentralJets
private

Definition at line 67 of file SkimmingToolHIGG5VBF.h.

◆ m_reqPh

bool DerivationFramework::SkimmingToolHIGG5VBF::m_reqPh
private

Definition at line 86 of file SkimmingToolHIGG5VBF.h.

◆ m_reqTrigger

bool DerivationFramework::SkimmingToolHIGG5VBF::m_reqTrigger
private

Definition at line 73 of file SkimmingToolHIGG5VBF.h.

◆ m_reqVbfMjj

bool DerivationFramework::SkimmingToolHIGG5VBF::m_reqVbfMjj
private

Definition at line 77 of file SkimmingToolHIGG5VBF.h.

◆ m_trigDecisionTool

ToolHandle<Trig::TrigDecisionTool> DerivationFramework::SkimmingToolHIGG5VBF::m_trigDecisionTool
private

Definition at line 53 of file SkimmingToolHIGG5VBF.h.

◆ m_triggers

std::vector<std::string> DerivationFramework::SkimmingToolHIGG5VBF::m_triggers
private

Definition at line 74 of file SkimmingToolHIGG5VBF.h.

◆ m_vbfMjjCut

double DerivationFramework::SkimmingToolHIGG5VBF::m_vbfMjjCut
private

Definition at line 78 of file SkimmingToolHIGG5VBF.h.


The documentation for this class was generated from the following files: