ATLAS Offline Software
VBFForwardJetsFilter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "GaudiKernel/PhysicalConstants.h"
7 #include "GaudiKernel/SystemOfUnits.h"
8 #include "xAODJet/JetContainer.h"
10 
11 // Pt High --> Low
13 public:
14  bool operator () (const xAOD::Jet *t1, const xAOD::Jet *t2) const {
15  return (t1->pt() > t2->pt());
16  }
17 };
18 
19 
20 VBFForwardJetsFilter::VBFForwardJetsFilter(const std::string & name, ISvcLocator * pSvcLocator)
21  : GenFilter (name, pSvcLocator)
22 {
24  declareProperty("JetMaxEta",m_JetMaxEta = 5.);
25  declareProperty("NJets",m_NJets = 2);
27  declareProperty("Jet1MaxEta",m_Jet1MaxEta = 5.);
29  declareProperty("Jet2MaxEta",m_Jet2MaxEta = 5.);
30  declareProperty("UseOppositeSignEtaJet1Jet2",m_UseOppositeSignEtaJet1Jet2 = false);
32  declareProperty("DeltaEtaJJ",m_DeltaEtaJJ = 2.0);
33  declareProperty("UseLeadingJJ",m_UseLeadingJJ = false);
34  declareProperty("TruthJetContainer", m_TruthJetContainerName = "AntiKt4TruthJets");
36  declareProperty("LGMaxEta",m_LGMaxEta = 2.5);
37  declareProperty("DeltaRJLG",m_DeltaRJLG = 0.05);
38  declareProperty("RatioPtJLG",m_RatioPtJLG = 0.3);
39 }
40 
41 
43  ATH_MSG_INFO("*** Jet selection ***");
44  ATH_MSG_INFO("xAOD::JetContainer=" << m_TruthJetContainerName);
45  ATH_MSG_INFO("JetMinPt=" << m_JetMinPt);
46  ATH_MSG_INFO("JetMaxEta=" << m_JetMaxEta);
47  ATH_MSG_INFO("*** Apply number of jets(=Nj)? ***");
48  ATH_MSG_INFO("NJets=" << m_NJets);
49  ATH_MSG_INFO("*** Leading 1st jet (Nj>=1) ***");
50  ATH_MSG_INFO("Jet1MinPt=" << m_Jet1MinPt);
51  ATH_MSG_INFO("Jet1MaxEta=" << m_Jet1MaxEta);
52  ATH_MSG_INFO("*** Leading 2nd jet (Nj>=2) ***");
53  ATH_MSG_INFO("Jet2MinPt=" << m_Jet2MinPt);
54  ATH_MSG_INFO("Jet2MaxEta=" << m_Jet2MaxEta);
55  ATH_MSG_INFO("*** 1st and 2nd jets in opposite eta region (Nj>=2) ***");
56  ATH_MSG_INFO("UseOppositeSignEtaJet1Jet2=" << m_UseOppositeSignEtaJet1Jet2);
57  ATH_MSG_INFO("*** Mass of JJ (Nj>=2) ***");
58  ATH_MSG_INFO("MassJJ=" << m_MassJJ);
59  ATH_MSG_INFO("*** DeltaEta of JJ (Nj>=2) ***");
60  ATH_MSG_INFO("DeltaEtaJJ=" << m_DeltaEtaJJ);
61  ATH_MSG_INFO("*** Use only 1st and 2nd jets ***");
62  ATH_MSG_INFO("UseLeadingJJ=" << m_UseLeadingJJ);
63  ATH_MSG_INFO("*** e/gamma/tau/ matching ***");
64  ATH_MSG_INFO("LGMinPt=" << m_LGMinPt);
65  ATH_MSG_INFO("LGMaxEta=" << m_LGMaxEta);
66  ATH_MSG_INFO("DeltaRJLG=" << m_DeltaRJLG);
67  ATH_MSG_INFO("RatioPtJLG=" << m_RatioPtJLG);
68 
69  if (m_Jet1MinPt >= 0.) {
71  ATH_MSG_ERROR("Inconsistent filter condition (Jet1)");
72  return StatusCode::FAILURE;
73  }
74  }
75 
76  if (m_Jet2MinPt >= 0.) {
78  ATH_MSG_ERROR("Inconsistent filter condition (Jet2)");
79  return StatusCode::FAILURE;
80  }
81  }
82 
83  return StatusCode::SUCCESS;
84 }
85 
86 
88  const xAOD::JetContainer* truthjetTES;
90  ATH_MSG_DEBUG("xAOD::JetContainer size = " << truthjetTES->size());
91 
92  // Get MCTruth Photon/Electon/Tau(HadronicDecay)
93  std::vector<HepMC::ConstGenParticlePtr> MCTruthPhotonList;
94  std::vector<HepMC::ConstGenParticlePtr> MCTruthElectronList;
95  std::vector<CLHEP::HepLorentzVector> MCTruthTauList;
97  for (itr = events()->begin(); itr!=events()->end(); ++itr) {
98  const HepMC::GenEvent* genEvt = (*itr);
99 #ifdef HEPMC3
100  for (const auto& pitr: *genEvt) {
101  // photon
102  if ( MC::isPhoton(pitr) && MC::isStable(pitr) &&
103  pitr->momentum().perp() >= m_LGMinPt && std::abs(pitr->momentum().pseudoRapidity()) <= m_LGMaxEta) {
104  MCTruthPhotonList.push_back(pitr);
105  ATH_MSG_INFO("photon pt(Gaudi::Units::GeV) = " << pitr->momentum().perp()/Gaudi::Units::GeV << " eta = " << pitr->momentum().pseudoRapidity());
106  }
107  // electon
108  if ( MC::isElectron(pitr) && MC::isStable(pitr) &&
109  pitr->momentum().perp() >= m_LGMinPt && std::abs(pitr->momentum().pseudoRapidity()) <= m_LGMaxEta) {
110  MCTruthElectronList.push_back(pitr);
111  ATH_MSG_INFO("electron pt(Gaudi::Units::GeV) = " << pitr->momentum().perp()/Gaudi::Units::GeV << " eta = " << pitr->momentum().pseudoRapidity());
112  }
113  // tau
114  if ( MC::isTau(pitr) && MC::isPhysical(pitr) ) {
115  auto& tau = pitr;
116  int leptonic = 0;
117  for (const auto& beg: tau->end_vertex()->particles_out() ) {
118  if ( beg->production_vertex() != tau->end_vertex() ) continue;
119  if ( std::abs( beg->pdg_id() ) == 12 ) leptonic = 1;
120  if ( std::abs( beg->pdg_id() ) == 14 ) leptonic = 2;
121  if ( std::abs( beg->pdg_id() ) == 15 ) leptonic = 11;
122  }
123 
124  if (leptonic == 0) {
125  CLHEP::HepLorentzVector nutau = sumDaughterNeutrinos( tau );
126  CLHEP::HepLorentzVector tauvis = CLHEP::HepLorentzVector(tau->momentum().px()-nutau.px(),
127  tau->momentum().py()-nutau.py(),
128  tau->momentum().pz()-nutau.pz(),
129  tau->momentum().e()-nutau.e());
130  if (tauvis.vect().perp() >= m_LGMinPt && std::abs(tauvis.vect().pseudoRapidity()) <= m_LGMaxEta) {
131  MCTruthTauList.push_back(tauvis);
132  ATH_MSG_INFO("had-tau pt(Gaudi::Units::GeV) = " << tauvis.vect().perp()/Gaudi::Units::GeV << " eta = " << tauvis.vect().pseudoRapidity());
133  }
134  }
135  }
136  }
137 #else
138  for (HepMC::GenEvent::particle_const_iterator pitr = genEvt->particles_begin(); pitr != genEvt->particles_end(); ++pitr) {
139  // photon
140  if ( MC::isPhoton(*pitr) && MC::isStable(*pitr) &&
141  (*pitr)->momentum().perp() >= m_LGMinPt && std::abs((*pitr)->momentum().pseudoRapidity()) <= m_LGMaxEta) {
142  MCTruthPhotonList.push_back((*pitr));
143  ATH_MSG_INFO("photon pt(Gaudi::Units::GeV) = " << (*pitr)->momentum().perp()/Gaudi::Units::GeV << " eta = " << (*pitr)->momentum().pseudoRapidity());
144  }
145  // electon
146  if ( MC::isElectron(*pitr) && MC::isStable(*pitr) &&
147  (*pitr)->momentum().perp() >= m_LGMinPt && std::abs((*pitr)->momentum().pseudoRapidity()) <= m_LGMaxEta) {
148  MCTruthElectronList.push_back((*pitr));
149  ATH_MSG_INFO("electron pt(Gaudi::Units::GeV) = " << (*pitr)->momentum().perp()/Gaudi::Units::GeV << " eta = " << (*pitr)->momentum().pseudoRapidity());
150  }
151  // tau
152  if ( MC::isTau(*pitr) && MC::isPhysical(*pitr) ) {
153  HepMC::GenParticle *tau = (*pitr);
154  HepMC::GenVertex::particles_out_const_iterator begin = tau->end_vertex()->particles_out_const_begin();
155  HepMC::GenVertex::particles_out_const_iterator end = tau->end_vertex()->particles_out_const_end();
156  int leptonic = 0;
157  for ( ; begin != end; begin++ ) {
158  if ( (*begin)->production_vertex() != tau->end_vertex() ) continue;
159  if ( std::abs( (*begin)->pdg_id() ) == 12 ) leptonic = 1;
160  if ( std::abs( (*begin)->pdg_id() ) == 14 ) leptonic = 2;
161  if ( std::abs( (*begin)->pdg_id() ) == 15 ) leptonic = 11;
162  }
163 
164  if (leptonic == 0) {
165  CLHEP::HepLorentzVector nutau = sumDaughterNeutrinos( tau );
166  CLHEP::HepLorentzVector tauvis = CLHEP::HepLorentzVector(tau->momentum().px()-nutau.px(),
167  tau->momentum().py()-nutau.py(),
168  tau->momentum().pz()-nutau.pz(),
169  tau->momentum().e()-nutau.e());
170  if (tauvis.vect().perp() >= m_LGMinPt && std::abs(tauvis.vect().pseudoRapidity()) <= m_LGMaxEta) {
171  MCTruthTauList.push_back(tauvis);
172  ATH_MSG_INFO("had-tau pt(Gaudi::Units::GeV) = " << tauvis.vect().perp()/Gaudi::Units::GeV << " eta = " << tauvis.vect().pseudoRapidity());
173  }
174  }
175  }
176  }
177 #endif
178  }
179 
180  // Select TruthJets
181  std::vector<const xAOD::Jet*> jetList;
182  for (xAOD::JetContainer::const_iterator it_truth = truthjetTES->begin(); it_truth != truthjetTES->end(); ++it_truth) {
183  if ( (*it_truth)->pt() > m_JetMinPt && std::abs( (*it_truth)->eta() ) < m_JetMaxEta ) {
184  jetList.push_back(*it_truth);
185  ATH_MSG_INFO("jet pt(Gaudi::Units::GeV) = " << (*it_truth)->pt()/Gaudi::Units::GeV << " eta = " << (*it_truth)->eta());
186  }
187  }
188 
189  // Remove e/gamma/tau(had) from TruthJets
190  removePseudoJets(jetList, MCTruthPhotonList, MCTruthElectronList, MCTruthTauList);
191  ATH_MSG_INFO("# of jets = " << jetList.size());
192  std::sort(jetList.begin(), jetList.end(), High2LowByJetClassPt());
193 
194  // Number of Jets
195  int flagNJets = -1;
196  if (m_NJets >= 1) flagNJets = int(jetList.size()) >= m_NJets ? 1 : 0;
197 
198  // Leading 1st jet
199  int flag1stJet = -1;
200  if (m_Jet1MinPt >= 0.) {
201  flag1stJet = 0;
202  if (jetList.size() >= 1) {
203  const xAOD::Jet *j1 = jetList[0];
204  if (j1->pt() > m_Jet1MinPt && std::abs(j1->eta()) < m_Jet1MaxEta) {
205  flag1stJet = 1;
206  }
207  }
208  }
209 
210  // Leading 2nd jet
211  int flag2ndJet = -1;
212  if (m_Jet2MinPt >= 0.) {
213  flag2ndJet = 0;
214  if (jetList.size() >= 2) {
215  const xAOD::Jet *j2 = jetList[1];
216  if (j2->pt() > m_Jet2MinPt && std::abs(j2->eta()) < m_Jet2MaxEta) {
217  flag2ndJet = 1;
218  }
219  }
220  }
221 
222  // Sign of Eta
223  int flagSign = -1;
225  flagSign = 0;
226  if (jetList.size() >= 2) {
227  const xAOD::Jet *j1 = jetList[0];
228  const xAOD::Jet *j2 = jetList[1];
229  if (j1->eta()*j2->eta() < 0.) flagSign = 1;
230  }
231  }
232 
233  // DeltaEta and Mass of JJ
234  int flagJJ = -1;
235  if (m_DeltaEtaJJ >= 0. || m_MassJJ >= 0.) {
236  flagJJ = 0;
237  if (jetList.size() >= 2) {
238  int okDeltaEtaJJ = m_DeltaEtaJJ >= 0. ? 0 : 1;
239  int okMassJJ = m_MassJJ >= 0. ? 0 : 1;
240  for (unsigned i=0;i<jetList.size()-1;++i) {
241  for (unsigned j=i+1;j<jetList.size();++j) {
242  double dEta = std::abs(jetList[i]->eta()-jetList[j]->eta());
243  double Mjj = (jetList[i]->p4()+jetList[j]->p4()).M();
244  ATH_MSG_INFO("DeltaEtaJJ = " << dEta << " MassJJ(Gaudi::Units::GeV) = " << Mjj/Gaudi::Units::GeV << " (" << i << ", " << j << ")");
245  if (okDeltaEtaJJ == 0 && dEta > m_DeltaEtaJJ) okDeltaEtaJJ = 1;
246  if (okMassJJ == 0 && Mjj > m_MassJJ) okMassJJ = 1;
247  if (okDeltaEtaJJ && okMassJJ) {
248  flagJJ = 1;
249  break;
250  }
251  if (m_UseLeadingJJ) break;
252  }
253  if (flagJJ == 1) break;
254  if (m_UseLeadingJJ) break;
255  }
256  }
257  }
258 
259  ATH_MSG_INFO("NJets OK? : " << flagNJets);
260  ATH_MSG_INFO("1stJet OK? : " << flag1stJet);
261  ATH_MSG_INFO("2ndJet OK? : " << flag2ndJet);
262  ATH_MSG_INFO("Sign OK? : " << flagSign);
263  // cppcheck-suppress shiftNegative
264  ATH_MSG_INFO("JJ OK? : " << flagJJ);
265 
266  setFilterPassed(flagNJets != 0 && flag1stJet != 0 && flag2ndJet != 0 && flagSign != 0 && flagJJ != 0);
267  return StatusCode::SUCCESS;
268 }
269 
270 
272  CLHEP::HepLorentzVector nu( 0, 0, 0, 0);
273 
274  if ( ( std::abs( part->pdg_id() ) == 12 ) || ( std::abs( part->pdg_id() ) == 14 ) || ( std::abs( part->pdg_id() ) == 16 ) ) {
275  nu.setPx(part->momentum().px());
276  nu.setPy(part->momentum().py());
277  nu.setPz(part->momentum().pz());
278  nu.setE(part->momentum().e());
279  return nu;
280  }
281 
282  if ( !part->end_vertex() ) return nu;
283 
284  for (const auto& daughterparticle: *(part->end_vertex())) nu += sumDaughterNeutrinos( daughterparticle );
285  return nu;
286 }
287 
288 
289 double VBFForwardJetsFilter::getMinDeltaR(const xAOD::Jet *jet, std::vector<HepMC::ConstGenParticlePtr> &list) const{
290  double minDR = 999.;
291  for (unsigned i=0;i<list.size();++i) {
292  if (list[i]->momentum().perp() != 0.) {
293  double dphi = jet->phi()-list[i]->momentum().phi();
294  double deta = jet->eta()-list[i]->momentum().pseudoRapidity();
295  if (dphi > M_PI) { dphi -= 2.*M_PI; }
296  if (dphi < -M_PI) { dphi += 2.*M_PI; }
297  double dr = std::sqrt(deta*deta+dphi*dphi);
298  double ratio_pt= std::abs((jet->pt()-list[i]->momentum().perp())/list[i]->momentum().perp());
299  if (ratio_pt < m_RatioPtJLG && dr < minDR) minDR = dr;
300  }
301  }
302  return minDR;
303 }
304 
305 
306 double VBFForwardJetsFilter::getMinDeltaR(const xAOD::Jet *jet, std::vector<CLHEP::HepLorentzVector> &list) const {
307  double minDR = 999.;
308  for (unsigned i=0;i<list.size();++i) {
309  if (list[i].vect().perp() != 0.) {
310  double dphi = jet->phi()-list[i].phi();
311  double deta = jet->eta()-list[i].vect().pseudoRapidity();
312  if (dphi > M_PI) { dphi -= 2.*M_PI; }
313  if (dphi < -M_PI) { dphi += 2.*M_PI; }
314  double dr = std::sqrt(deta*deta+dphi*dphi);
315  double ratio_pt= std::abs((jet->pt()-list[i].vect().perp())/list[i].vect().perp());
316  if (ratio_pt < m_RatioPtJLG && dr < minDR) minDR = dr;
317  }
318  }
319  return minDR;
320 }
321 
322 
323 void VBFForwardJetsFilter::removePseudoJets( std::vector<const xAOD::Jet*> &jetList,
324  std::vector<HepMC::ConstGenParticlePtr> &MCTruthPhotonList,
325  std::vector<HepMC::ConstGenParticlePtr> &MCTruthElectronList,
326  std::vector<CLHEP::HepLorentzVector> &MCTruthTauList) {
327  std::vector<const xAOD::Jet*> orgJetList = jetList;
328  jetList.clear();
329  for (unsigned i=0;i<orgJetList.size();++i) {
330  const xAOD::Jet *jet = orgJetList[i];
331  double dR1 = getMinDeltaR(jet,MCTruthPhotonList);
332  double dR2 = getMinDeltaR(jet,MCTruthElectronList);
333  double dR3 = getMinDeltaR(jet,MCTruthTauList);
334  if (dR1 > m_DeltaRJLG && dR2 > m_DeltaRJLG && dR3 > m_DeltaRJLG) jetList.push_back(jet);
335  }
336 }
VBFForwardJetsFilter::filterEvent
virtual StatusCode filterEvent()
Definition: VBFForwardJetsFilter.cxx:87
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
VBFForwardJetsFilter::filterInitialize
virtual StatusCode filterInitialize()
Definition: VBFForwardJetsFilter.cxx:42
VBFForwardJetsFilter::sumDaughterNeutrinos
CLHEP::HepLorentzVector sumDaughterNeutrinos(const HepMC::ConstGenParticlePtr &tau) const
Definition: VBFForwardJetsFilter.cxx:271
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
perp
Scalar perp() const
perp method - perpenticular length
Definition: AmgMatrixBasePlugin.h:35
VBFForwardJetsFilter::m_NJets
int m_NJets
Definition: VBFForwardJetsFilter.h:27
VBFForwardJetsFilter::m_RatioPtJLG
double m_RatioPtJLG
Definition: VBFForwardJetsFilter.h:39
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
VBFForwardJetsFilter::m_Jet1MinPt
double m_Jet1MinPt
Definition: VBFForwardJetsFilter.h:28
VBFForwardJetsFilter::VBFForwardJetsFilter
VBFForwardJetsFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: VBFForwardJetsFilter.cxx:20
High2LowByJetClassPt::operator()
bool operator()(const xAOD::Jet *t1, const xAOD::Jet *t2) const
Definition: VBFForwardJetsFilter.cxx:14
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
M_PI
#define M_PI
Definition: ActiveFraction.h:11
VBFForwardJetsFilter::m_UseOppositeSignEtaJet1Jet2
bool m_UseOppositeSignEtaJet1Jet2
Definition: VBFForwardJetsFilter.h:32
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
python.DataFormatRates.events
events
Definition: DataFormatRates.py:105
VBFForwardJetsFilter::m_MassJJ
double m_MassJJ
Definition: VBFForwardJetsFilter.h:34
VBFForwardJetsFilter::m_Jet1MaxEta
double m_Jet1MaxEta
Definition: VBFForwardJetsFilter.h:29
VBFForwardJetsFilter::m_JetMinPt
double m_JetMinPt
Definition: VBFForwardJetsFilter.h:25
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
MC::isPhysical
bool isPhysical(const T &p)
Definition: HepMCHelpers.h:32
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
GenFilter
Base class for event generator filtering modules.
Definition: GenFilter.h:30
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
VBFForwardJetsFilter::m_UseLeadingJJ
bool m_UseLeadingJJ
Definition: VBFForwardJetsFilter.h:35
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
doubleTestComp.j1
j1
Definition: doubleTestComp.py:21
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
VBFForwardJetsFilter::m_Jet2MaxEta
double m_Jet2MaxEta
Definition: VBFForwardJetsFilter.h:31
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::EgammaHelpers::isElectron
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
Definition: EgammaxAODHelpers.cxx:12
VBFForwardJetsFilter::m_LGMaxEta
double m_LGMaxEta
Definition: VBFForwardJetsFilter.h:37
VBFForwardJetsFilter::m_LGMinPt
double m_LGMinPt
Definition: VBFForwardJetsFilter.h:36
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
VBFForwardJetsFilter::m_DeltaEtaJJ
double m_DeltaEtaJJ
Definition: VBFForwardJetsFilter.h:33
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
isTau
bool isTau(const T &p)
Definition: AtlasPID.h:148
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
WriteBchToCool.beg
beg
Definition: WriteBchToCool.py:69
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
VBFForwardJetsFilter::removePseudoJets
void removePseudoJets(std::vector< const xAOD::Jet * > &jetList, std::vector< HepMC::ConstGenParticlePtr > &MCTruthPhotonList, std::vector< HepMC::ConstGenParticlePtr > &MCTruthElectronList, std::vector< CLHEP::HepLorentzVector > &MCTruthTauList)
Definition: VBFForwardJetsFilter.cxx:323
VBFForwardJetsFilter::getMinDeltaR
double getMinDeltaR(const xAOD::Jet *jet, std::vector< HepMC::ConstGenParticlePtr > &list) const
Definition: VBFForwardJetsFilter.cxx:289
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
ALFA_EventTPCnv_Dict::t2
std::vector< ALFA_RawDataContainer_p1 > t2
Definition: ALFA_EventTPCnvDict.h:44
High2LowByJetClassPt
Definition: VBFForwardJetsFilter.cxx:12
MC::isStable
bool isStable(const T &p)
Definition: HepMCHelpers.h:30
JetContainer.h
xAOD::EgammaHelpers::isPhoton
bool isPhoton(const xAOD::Egamma *eg)
is the object a photon
Definition: EgammaxAODHelpers.cxx:21
VBFForwardJetsFilter::m_Jet2MinPt
double m_Jet2MinPt
Definition: VBFForwardJetsFilter.h:30
VBFForwardJetsFilter::m_JetMaxEta
double m_JetMaxEta
Definition: VBFForwardJetsFilter.h:26
VBFForwardJetsFilter::m_TruthJetContainerName
std::string m_TruthJetContainerName
Definition: VBFForwardJetsFilter.h:41
VBFForwardJetsFilter.h
VBFForwardJetsFilter::m_DeltaRJLG
double m_DeltaRJLG
Definition: VBFForwardJetsFilter.h:38
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:525
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
doubleTestComp.j2
j2
Definition: doubleTestComp.py:22
HepMCHelpers.h
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
GenParticle
@ GenParticle
Definition: TruthClasses.h:30