ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
xAODVBFMjjIntervalFilter Class Reference

#include <xAODVBFMjjIntervalFilter.h>

Inheritance diagram for xAODVBFMjjIntervalFilter:
Collaboration diagram for xAODVBFMjjIntervalFilter:

Public Member Functions

 xAODVBFMjjIntervalFilter (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual StatusCode filterInitialize ()
 
virtual StatusCode filterEvent ()
 
bool ApplyMassDphi (ConstDataVector< xAOD::JetContainer > *jets)
 
double getEventWeight (ConstDataVector< xAOD::JetContainer > *jets) const
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

CLHEP::HepRandomEngine * getRandomEngine (const std::string &streamName, const EventContext &ctx) const
 
bool checkOverlap (double, double, const std::vector< const xAOD::TruthParticle * > &)
 
bool checkOverlap (double, double, const std::vector< TLorentzVector > &)
 
TLorentzVector sumDaughterNeutrinos (const xAOD::TruthParticle *)
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ServiceHandle< IAthRNGSvcm_rndmSvc {this, "RndmSvc", "AthRNGSvc"}
 
double m_olapPt
 
double m_yMax
 
double m_pTavgMin
 
std::string m_TruthJetContainerName
 
double m_norm
 
double m_prob0
 
double m_prob1
 
double m_prob2low
 
double m_prob2high
 
double m_mjjlow
 
bool m_truncatelowmjj
 
double m_mjjhigh
 
bool m_truncatehighmjj
 
bool m_photonjetoverlap
 
bool m_electronjetoverlap
 
bool m_taujetoverlap
 
double m_alpha
 
bool m_ApplyNjet
 
unsigned int m_NJetsMin
 
unsigned int m_NJetsMax
 
bool m_ApplyWeighting
 
bool m_applyDphi
 
double m_dphijj
 
DataObjIDColl m_extendedExtraObjects
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Utility event-mangling functions

Todo:
Replace with HepMC units when available
ServiceHandle< IPartPropSvc > m_ppSvc {this, "PartPropSvc", "PartPropSvc"}
 Handle on the particle property service. More...
 
SG::ReadHandleKey< McEventCollectionm_mcevents_const { this, "McEventKey", "GEN_EVENT", "StoreGate key of the MC event collection" }
 Const handle to the MC event collection. More...
 
void GeVToMeV (HepMC::GenEvent *evt)
 Scale event energies/momenta by x 1000. More...
 
void MeVToGeV (HepMC::GenEvent *evt)
 Scale event energies/momenta by x 1/1000. More...
 
void cmTomm (HepMC::GenEvent *evt)
 Scale event lengths by x 10. More...
 
void mmTocm (HepMC::GenEvent *evt)
 Scale event lengths by x 1/10. More...
 

Detailed Description

Definition at line 22 of file xAODVBFMjjIntervalFilter.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ xAODVBFMjjIntervalFilter()

xAODVBFMjjIntervalFilter::xAODVBFMjjIntervalFilter ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 23 of file xAODVBFMjjIntervalFilter.cxx.

24  : GenFilter(name, pSvcLocator),
25  m_norm(1.) //< @todo Scalefactor always set to 1.0! Remove?
26 {
27  declareProperty("RapidityAcceptance", m_yMax = 5.0);
28  declareProperty("MinSecondJetPT", m_pTavgMin = 15.0 * Gaudi::Units::GeV);
29  declareProperty("MinOverlapPT", m_olapPt = 15.0 * Gaudi::Units::GeV);
30  declareProperty("TruthJetContainerName", m_TruthJetContainerName = "AntiKt4TruthJets");
31  // declareProperty("DoShape", m_doShape = true);
32  declareProperty("NoJetProbability", m_prob0 = 0.0002);
33  declareProperty("OneJetProbability", m_prob1 = 0.001);
34  declareProperty("LowMjjProbability", m_prob2low = 0.005);
35  declareProperty("HighMjjProbability", m_prob2high = 1.0);
36  declareProperty("LowMjj", m_mjjlow = 100.0 * Gaudi::Units::GeV);
37  declareProperty("TruncateAtLowMjj", m_truncatelowmjj = false);
38  declareProperty("HighMjj", m_mjjhigh = 800.0 * Gaudi::Units::GeV);
39  declareProperty("TruncateAtHighMjj", m_truncatehighmjj = false);
40  declareProperty("PhotonJetOverlapRemoval", m_photonjetoverlap = false);
41  declareProperty("ElectronJetOverlapRemoval", m_electronjetoverlap = true);
42  declareProperty("TauJetOverlapRemoval", m_taujetoverlap = false);
44  declareProperty("ApplyNjet", m_ApplyNjet = false);
45  declareProperty("Njets", m_NJetsMin = 2);
46  declareProperty("NjetsMax", m_NJetsMax = -1);
47  declareProperty("ApplyWeighting", m_ApplyWeighting = true);
48  declareProperty("ApplyDphi", m_applyDphi = false);
49  declareProperty("dphijjMax", m_dphijj = 2.5);
50 }

Member Function Documentation

◆ ApplyMassDphi()

bool xAODVBFMjjIntervalFilter::ApplyMassDphi ( ConstDataVector< xAOD::JetContainer > *  jets)

Definition at line 326 of file xAODVBFMjjIntervalFilter.cxx.

327 {
328  if (jets->size() < 2)
329  return false;
330  double mjj = (jets->at(0)->p4() + jets->at(1)->p4()).M();
331  double dphi = std::abs(jets->at(0)->p4().DeltaPhi(jets->at(1)->p4()));
332  ATH_MSG_INFO("mjj " << mjj << " dphi " << dphi);
333  bool pass = true;
334  if (mjj < m_mjjlow)
335  pass = false;
336  if (mjj > m_mjjhigh)
337  pass = false;
338  if (m_applyDphi && dphi > m_dphijj)
339  pass = false;
340 
341  return pass;
342 }

◆ ATLAS_NOT_CONST_THREAD_SAFE() [1/2]

HepMC::GenEvent* event GenBase::ATLAS_NOT_CONST_THREAD_SAFE ( )
inlineinherited

Access the current signal event (first in the McEventCollection)

Note
This function will make a new McEventCollection if there is not already a valid one and MakeMcEvent=True.

Definition at line 76 of file GenBase.h.

76  {
77  if (events()->empty())
78  ATH_MSG_ERROR("McEventCollection is empty during first event access");
79  return *(events()->begin());
80  }

◆ ATLAS_NOT_CONST_THREAD_SAFE() [2/2]

McEventCollection* events GenBase::ATLAS_NOT_CONST_THREAD_SAFE ( )
inherited

Access the current event's McEventCollection.

Note
This function will make a new McEventCollection if there is not already a valid one and MakeMcEvent=True.

◆ checkOverlap() [1/2]

bool xAODVBFMjjIntervalFilter::checkOverlap ( double  eta,
double  phi,
const std::vector< const xAOD::TruthParticle * > &  list 
)
private
Todo:
Provide a helper function for this (and similar)

Definition at line 274 of file xAODVBFMjjIntervalFilter.cxx.

275 {
276  for (size_t i = 0; i < list.size(); ++i)
277  {
278  double pt = list[i]->pt();
279  if (pt > m_olapPt)
280  {
282  double dphi = phi - list[i]->phi();
283  double deta = eta - list[i]->eta();
284  if (dphi > M_PI)
285  {
286  dphi -= 2. * M_PI;
287  }
288  if (dphi < -M_PI)
289  {
290  dphi += 2. * M_PI;
291  }
292  double dr = std::sqrt(deta * deta + dphi * dphi);
293  if (dr < 0.3)
294  return true;
295  }
296  }
297  return false;
298 }

◆ checkOverlap() [2/2]

bool xAODVBFMjjIntervalFilter::checkOverlap ( double  eta,
double  phi,
const std::vector< TLorentzVector > &  list 
)
private
Todo:
Provide a helper function for this (and similar)

Definition at line 300 of file xAODVBFMjjIntervalFilter.cxx.

301 {
302  for (size_t i = 0; i < list.size(); ++i)
303  {
304  double pt = list[i].Vect().Perp();
305  if (pt > m_olapPt)
306  {
308  double dphi = phi - list[i].Phi();
309  double deta = eta - list[i].Vect().PseudoRapidity();
310  if (dphi > M_PI)
311  {
312  dphi -= 2. * M_PI;
313  }
314  if (dphi < -M_PI)
315  {
316  dphi += 2. * M_PI;
317  }
318  double dr = std::sqrt(deta * deta + dphi * dphi);
319  if (dr < 0.3)
320  return true;
321  }
322  }
323  return false;
324 }

◆ cmTomm()

void GenBase::cmTomm ( HepMC::GenEvent *  evt)
protectedinherited

Scale event lengths by x 10.

Definition at line 81 of file GenBase.cxx.

81  {
82  for (HepMC::GenEvent::vertex_iterator vtx = evt->vertices_begin(); vtx != evt->vertices_end(); ++vtx) {
83  const HepMC::FourVector fv((*vtx)->position().x() * 10,
84  (*vtx)->position().y() * 10,
85  (*vtx)->position().z() * 10,
86  (*vtx)->position().t() * 10);
87  (*vtx)->set_position(fv);
88  }
89 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ event_const()

const HepMC::GenEvent* GenBase::event_const ( ) const
inlineinherited

Access the current signal event (const)

Definition at line 83 of file GenBase.h.

83  {
84  if (events_const()->empty())
85  ATH_MSG_ERROR("Const McEventCollection is empty during first event access");
86  return *(events_const()->begin());
87  }

◆ events_const() [1/2]

const McEventCollection* GenBase::events_const ( ) const
inlineinherited

Access the current event's McEventCollection (const)

Definition at line 96 of file GenBase.h.

96  {
97  return events_const( getContext() );
98  }

◆ events_const() [2/2]

const McEventCollection* GenBase::events_const ( const EventContext &  ctx) const
inlineinherited

Definition at line 99 of file GenBase.h.

99  {
101  if (!ret.isValid())
102  ATH_MSG_ERROR("No McEventCollection found in StoreGate with key " << m_mcevents_const.key());
103  return ret.cptr();
104  }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode GenFilter::execute ( )
virtualinherited
Todo:
Probably the filter should only look at the first event... right?

Reimplemented from GenBase.

Definition at line 29 of file GenFilter.cxx.

29  {
30  if (events_const()->empty()) {
31  ATH_MSG_ERROR("No events found in McEventCollection");
32  return StatusCode::FAILURE;
33  } else if (events_const()->size() > 1) {
35  ATH_MSG_WARNING("More than one event in current McEventCollection -- which is valid?");
36  }
38 #ifdef HEPMC3
39  if (filterPassed() || m_keepAll ) {
40 #else
41  if (filterPassed() ) {
42 #endif
43  ATH_MSG_DEBUG("Event passed filter");
44  m_nPass += 1;
45  } else {
46  ATH_MSG_DEBUG("Event failed filter");
47  m_nFail += 1;
48  }
49  // Bail out once we have enough events
50  if (m_nPass >= m_nNeeded && m_nNeeded > 0)
51  sc = StatusCode::FAILURE;
52  return sc;
53 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ filterEvent()

StatusCode xAODVBFMjjIntervalFilter::filterEvent ( )
virtual

Implements GenFilter.

Definition at line 63 of file xAODVBFMjjIntervalFilter.cxx.

64 {
65  // Get random number engine
66  const EventContext& ctx = Gaudi::Hive::currentContext();
67  CLHEP::HepRandomEngine* rndm = this->getRandomEngine(name(), ctx);
68  if (!rndm)
69  {
70  ATH_MSG_ERROR("Failed to retrieve random number engine xAODVBFMjjIntervalFilter");
71  setFilterPassed(false);
72  return StatusCode::SUCCESS;
73  }
74 
75  // Retrieve jet container
76  const xAOD::JetContainer* truthJetCollection = 0;
77  if (!evtStore()->contains<xAOD::JetContainer>(m_TruthJetContainerName) ||
78  evtStore()->retrieve(truthJetCollection, m_TruthJetContainerName).isFailure() ||
79  !truthJetCollection)
80  {
81  ATH_MSG_ERROR("No xAOD::JetContainer found in StoreGate with key " << m_TruthJetContainerName);
82  setFilterPassed(false);
83  return StatusCode::SUCCESS;
84  }
85 
86 // Retrieve TruthGen container from xAOD Gen slimmer, contains all particles witout barcode_zero and
87 // duplicated barcode ones
88  const xAOD::TruthParticleContainer* xTruthParticleContainer;
89  if (evtStore()->retrieve(xTruthParticleContainer, "TruthGen").isFailure()) {
90  ATH_MSG_ERROR("No TruthParticle collection with name " << "TruthGen" << " found in StoreGate!");
91  return StatusCode::FAILURE;
92  }
93 
94 
95  // Find overlap objects
96  std::vector<const xAOD::TruthParticle *> MCTruthPhotonList;
97  std::vector<const xAOD::TruthParticle *> MCTruthElectronList;
98  std::vector<TLorentzVector> MCTruthTauList;
99 
100  // Loop over all particles in the event
101  unsigned int nPart = xTruthParticleContainer->size();
102  for (unsigned int iPart = 0; iPart < nPart; ++iPart) {
103  const xAOD::TruthParticle* pitr = (*xTruthParticleContainer)[iPart];
104 
105  if (m_photonjetoverlap == true)
106  {
107  // photon - copied from VBFForwardJetsFilter.cxx
108  if (MC::isPhoton(pitr) && MC::isStable(pitr) &&
109  pitr->pt() >= m_olapPt &&
110  std::abs(pitr->eta()) <= m_yMax)
111  {
112  MCTruthPhotonList.push_back(pitr);
113  }
114  }
115  if (m_electronjetoverlap == true)
116  {
117  // electron
118  if (MC::isElectron(pitr) && MC::isStable(pitr) &&
119  pitr->pt() >= m_olapPt &&
120  std::abs(pitr->eta()) <= m_yMax)
121  {
122  MCTruthElectronList.push_back(pitr);
123  }
124  }
125  if (m_taujetoverlap == true)
126  {
127  // tau - copied from VBFForwardJetsFilter.cxx
128  if (MC::isTau(pitr) && MC::isPhysical(pitr))
129  {
130  auto tau = pitr;
131  int leptonic = 0;
132  for (size_t thisChild_id = 0; thisChild_id < tau->decayVtx()->nOutgoingParticles(); thisChild_id++)
133  {
134  auto child = tau->decayVtx()->outgoingParticle(thisChild_id);
135  if (child->prodVtx() != tau->decayVtx())
136  continue;
137  if (std::abs(child->pdgId()) == 12)
138  leptonic = 1;
139  if (std::abs(child->pdgId()) == 14)
140  leptonic = 2;
141  if (std::abs(child->pdgId()) == 15)
142  leptonic = 11;
143  }
144 
145  if (leptonic == 0)
146  {
147  TLorentzVector nutau = sumDaughterNeutrinos(tau);
148  TLorentzVector tauvis = TLorentzVector(tau->px() - nutau.Px(),
149  tau->py() - nutau.Py(),
150  tau->pz() - nutau.Pz(),
151  tau->e() - nutau.E());
152  if (tauvis.Vect().Perp() >= m_olapPt && std::abs(tauvis.Vect().PseudoRapidity()) <= m_yMax)
153  {
154  MCTruthTauList.push_back(tauvis);
155  }
156  }
157  }
158  }
159  } //loop over truth particles
160 
161 
162  // Filter based on rapidity acceptance and sort
164  for (xAOD::JetContainer::const_iterator jitr = truthJetCollection->begin(); jitr != truthJetCollection->end(); ++jitr)
165  {
166  if (std::abs((*jitr)->rapidity()) < m_yMax && (*jitr)->pt() >= m_olapPt)
167  {
168  bool JetOverlapsWithPhoton = false;
169  bool JetOverlapsWithElectron = false;
170  bool JetOverlapsWithTau = false;
171 
172  if (m_photonjetoverlap == true)
173  {
174  JetOverlapsWithPhoton = checkOverlap((*jitr)->rapidity(), (*jitr)->phi(), MCTruthPhotonList);
175  }
176  if (m_electronjetoverlap == true)
177  {
178  JetOverlapsWithElectron = checkOverlap((*jitr)->rapidity(), (*jitr)->phi(), MCTruthElectronList);
179  }
180  if (m_taujetoverlap == true)
181  {
182  JetOverlapsWithTau = checkOverlap((*jitr)->rapidity(), (*jitr)->phi(), MCTruthTauList);
183  }
184 
185  if (!JetOverlapsWithPhoton && !JetOverlapsWithElectron && !JetOverlapsWithTau)
186  {
187  filteredJets.push_back(*jitr);
188  }
189  }
190  }
191  filteredJets.sort(High2LowByJetClassPt());
192 
193  if (m_ApplyWeighting)
194  {
195 
196  double eventWeight = 1.0;
197  eventWeight = getEventWeight(&filteredJets);
198  double rnd = rndm->flat();
199  if (1.0 / eventWeight < rnd)
200  {
201  setFilterPassed(false);
202  ATH_MSG_DEBUG("Event failed weighting. Weight is " << eventWeight);
203  return StatusCode::SUCCESS;
204  }
205 
206  // Get MC event collection for setting weight
207  const McEventCollection* mecc = 0;
208  if (evtStore()->retrieve(mecc).isFailure() || !mecc)
209  {
210  setFilterPassed(false);
211  ATH_MSG_ERROR("Could not retrieve MC Event Collection - weight might not work");
212  return StatusCode::SUCCESS;
213  }
214 
215  ATH_MSG_INFO("Event passed. Will weight events " << eventWeight * m_norm);
216  McEventCollection *mec = const_cast<McEventCollection *>(&(*mecc));
217  for (unsigned int i = 0; i < mec->size(); ++i)
218  {
219  if (!(*mec)[i])
220  continue;
221  double existingWeight = (*mec)[i]->weights().size() > 0 ? (*mec)[i]->weights()[0] : 1.;
222  if ((*mec)[i]->weights().size() > 0)
223  {
224  for (unsigned int iw = 0; iw < (*mec)[i]->weights().size(); ++iw) {
225  double existWeight = (*mec)[i]->weights()[iw];
226  (*mec)[i]->weights()[iw] = existWeight * eventWeight * m_norm;
227  }
228 //
229 // (*mec)[i]->weights()[0] = existingWeight * eventWeight * m_norm;
230  }
231  else
232  {
233  (*mec)[i]->weights().push_back(eventWeight * m_norm * existingWeight);
234  }
235 
236 #ifdef HEPMC3
237  (*mec)[i]->add_attribute("filterWeight", std::make_shared<HepMC3::DoubleAttribute>(eventWeight*m_norm));
238 #endif
239 
240  }
241  } // Apply weighting
242  else
243  {
244  // just compute mjj, dphi etc
245  bool pass = ApplyMassDphi(&filteredJets);
246  if (!pass)
247  {
248  setFilterPassed(false);
249  ATH_MSG_DEBUG("Event failed filter");
250  return StatusCode::SUCCESS;
251  }
252  if (m_ApplyNjet)
253  {
254  if (filteredJets.size() < m_NJetsMin)
255  {
256  setFilterPassed(false);
257  return StatusCode::SUCCESS;
258  }
259  if (m_NJetsMax > 0)
260  {
261  if (filteredJets.size() > m_NJetsMax)
262  {
263  setFilterPassed(false);
264  return StatusCode::SUCCESS;
265  }
266  } // Njets <
267  } // Apply Njets filter
268  }
269  // Made it to the end - success!
270  setFilterPassed(true);
271  return StatusCode::SUCCESS;
272 }

◆ filterFinalize()

virtual StatusCode GenFilter::filterFinalize ( )
inlinevirtualinherited

◆ filterInitialize()

StatusCode xAODVBFMjjIntervalFilter::filterInitialize ( )
virtual

Reimplemented from GenFilter.

Definition at line 52 of file xAODVBFMjjIntervalFilter.cxx.

53 {
54  ATH_MSG_INFO("Configured for jets in " << m_TruthJetContainerName << " inside |y|<" << m_yMax);
55 
56  CHECK(m_rndmSvc.retrieve());
57 
59  ATH_MSG_INFO("m_alpha set to" << m_alpha);
60  return StatusCode::SUCCESS;
61 }

◆ finalize()

StatusCode GenFilter::finalize ( )
inherited

Definition at line 56 of file GenFilter.cxx.

56  {
57  ATH_MSG_INFO("Events passed = " << m_nPass << " Events failed = " << m_nFail);
59  return StatusCode::SUCCESS;
60 }

◆ getEventWeight()

double xAODVBFMjjIntervalFilter::getEventWeight ( ConstDataVector< xAOD::JetContainer > *  jets) const

Definition at line 344 of file xAODVBFMjjIntervalFilter.cxx.

345 {
346  double weight = 1.0;
347  if (jets->size() == 0)
348  {
349  weight /= m_prob0;
350  ATH_MSG_DEBUG("Event in 0-jet weighting. Weight is " << weight);
351  }
352  else if (jets->size() == 1)
353  {
354  weight /= m_prob1;
355  ATH_MSG_DEBUG("Event in 1-jet weighting. Weight is " << weight);
356  }
357  else
358  {
359  double mjj = (jets->at(0)->p4() + jets->at(1)->p4()).M();
360  if (mjj < m_mjjlow)
361  {
362  if (m_truncatelowmjj == false)
363  {
364  weight /= m_prob2low;
365  }
366  else
367  {
368  weight = -1.0;
369  }
370  }
371  else if (mjj > m_mjjhigh)
372  {
373  if (m_truncatehighmjj == false)
374  {
375  weight /= m_prob2high;
376  }
377  else
378  {
379  weight = -1.0;
380  }
381  }
382  else
383  {
385  ATH_MSG_DEBUG("WEIGHTING:: " << mjj << "\t" << weight);
386  }
387  }
388  return weight;
389 }

◆ getRandomEngine()

CLHEP::HepRandomEngine * xAODVBFMjjIntervalFilter::getRandomEngine ( const std::string &  streamName,
const EventContext &  ctx 
) const
private

Definition at line 416 of file xAODVBFMjjIntervalFilter.cxx.

418 {
419  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, streamName);
420  std::string rngName = name()+streamName;
421  rngWrapper->setSeed( rngName, ctx );
422  return rngWrapper->getEngine(ctx);
423 }

◆ GeVToMeV()

void GenBase::GeVToMeV ( HepMC::GenEvent *  evt)
protectedinherited

Scale event energies/momenta by x 1000.

Todo:
Add HepMC units awareness and do it differently when HepMC provides this functionality directly (and reference-based FourVector accessors)

Definition at line 61 of file GenBase.cxx.

61  {
62  for (HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p) {
63  const HepMC::FourVector fv((*p)->momentum().px() * 1000,
64  (*p)->momentum().py() * 1000,
65  (*p)->momentum().pz() * 1000,
66  (*p)->momentum().e() * 1000);
67  (*p)->set_momentum(fv);
68  (*p)->set_generated_mass(1000 * (*p)->generated_mass());
69  }
70 }

◆ initialize()

StatusCode GenFilter::initialize ( )
virtualinherited

Reimplemented from GenBase.

Definition at line 20 of file GenFilter.cxx.

20  {
22  m_nPass = 0;
23  m_nFail = 0;
25  return StatusCode::SUCCESS;
26 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ MeVToGeV()

void GenBase::MeVToGeV ( HepMC::GenEvent *  evt)
protectedinherited

Scale event energies/momenta by x 1/1000.

Definition at line 71 of file GenBase.cxx.

71  {
72  for (HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p) {
73  const HepMC::FourVector fv((*p)->momentum().px() / 1000,
74  (*p)->momentum().py() / 1000,
75  (*p)->momentum().pz() / 1000,
76  (*p)->momentum().e() / 1000);
77  (*p)->set_momentum(fv);
78  (*p)->set_generated_mass((*p)->generated_mass() / 1000);
79  }
80 }

◆ mmTocm()

void GenBase::mmTocm ( HepMC::GenEvent *  evt)
protectedinherited

Scale event lengths by x 1/10.

Definition at line 90 of file GenBase.cxx.

90  {
91  for (HepMC::GenEvent::vertex_iterator vtx = evt->vertices_begin(); vtx != evt->vertices_end(); ++vtx) {
92  const HepMC::FourVector fv((*vtx)->position().x() / 10,
93  (*vtx)->position().y() / 10,
94  (*vtx)->position().z() / 10,
95  (*vtx)->position().t() / 10);
96  (*vtx)->set_position(fv);
97  }
98 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ nFailed()

int GenFilter::nFailed ( ) const
inlineinherited

Definition at line 53 of file GenFilter.h.

53 { return m_nFail; }

◆ nNeeded()

int GenFilter::nNeeded ( ) const
inlineinherited

Definition at line 54 of file GenFilter.h.

54 { return m_nNeeded; }

◆ nPassed()

int GenFilter::nPassed ( ) const
inlineinherited

Definition at line 52 of file GenFilter.h.

52 { return m_nPass; }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ particleData()

const HepPDT::ParticleData* GenBase::particleData ( int  pid) const
inlineinherited

Access an element in the particle data table.

Definition at line 126 of file GenBase.h.

126  {
127  return pdt().particle(HepPDT::ParticleID(std::abs(pid)));
128  }

◆ particleTable()

const HepPDT::ParticleDataTable& GenBase::particleTable ( ) const
inlineinherited

Get a particle data table.

Definition at line 118 of file GenBase.h.

118  {
119  return *(m_ppSvc->PDT());
120  }

◆ partPropSvc()

const ServiceHandle<IPartPropSvc> GenBase::partPropSvc ( ) const
inlineinherited

Access the particle property service.

Definition at line 113 of file GenBase.h.

113  {
114  return m_ppSvc;
115  }

◆ pdt()

const HepPDT::ParticleDataTable& GenBase::pdt ( ) const
inlineinherited

Shorter alias to get a particle data table.

Definition at line 123 of file GenBase.h.

123 { return particleTable(); }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sumDaughterNeutrinos()

TLorentzVector xAODVBFMjjIntervalFilter::sumDaughterNeutrinos ( const xAOD::TruthParticle part)
private

Definition at line 391 of file xAODVBFMjjIntervalFilter.cxx.

392 {
393  TLorentzVector nu(0, 0, 0, 0);
394 
395  if ((std::abs(part->pdgId()) == 12) || (std::abs(part->pdgId()) == 14) || (std::abs(part->pdgId()) == 16))
396  {
397  nu.SetPx(part->px());
398  nu.SetPy(part->py());
399  nu.SetPz(part->pz());
400  nu.SetE(part->e());
401  return nu;
402  }
403 
404  if (!part->decayVtx())
405  return nu;
406 
407  for (size_t thisChild_id = 0; thisChild_id < part->decayVtx()->nOutgoingParticles(); thisChild_id++)
408  {
409  auto daughterparticle = part->decayVtx()->outgoingParticle(thisChild_id);
410  nu += sumDaughterNeutrinos(daughterparticle);
411  }
412  return nu;
413 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_alpha

double xAODVBFMjjIntervalFilter::m_alpha
private

Definition at line 59 of file xAODVBFMjjIntervalFilter.h.

◆ m_applyDphi

bool xAODVBFMjjIntervalFilter::m_applyDphi
private

Definition at line 64 of file xAODVBFMjjIntervalFilter.h.

◆ m_ApplyNjet

bool xAODVBFMjjIntervalFilter::m_ApplyNjet
private

Definition at line 60 of file xAODVBFMjjIntervalFilter.h.

◆ m_ApplyWeighting

bool xAODVBFMjjIntervalFilter::m_ApplyWeighting
private

Definition at line 63 of file xAODVBFMjjIntervalFilter.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_dphijj

double xAODVBFMjjIntervalFilter::m_dphijj
private

Definition at line 65 of file xAODVBFMjjIntervalFilter.h.

◆ m_electronjetoverlap

bool xAODVBFMjjIntervalFilter::m_electronjetoverlap
private

Definition at line 57 of file xAODVBFMjjIntervalFilter.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_mcEventKey

std::string GenBase::m_mcEventKey {}
protectedinherited

StoreGate key for the MC event collection (defaults to GEN_EVENT)

Definition at line 137 of file GenBase.h.

◆ m_mcevents_const

SG::ReadHandleKey<McEventCollection> GenBase::m_mcevents_const { this, "McEventKey", "GEN_EVENT", "StoreGate key of the MC event collection" }
privateinherited

Const handle to the MC event collection.

Definition at line 163 of file GenBase.h.

◆ m_mjjhigh

double xAODVBFMjjIntervalFilter::m_mjjhigh
private

Definition at line 54 of file xAODVBFMjjIntervalFilter.h.

◆ m_mjjlow

double xAODVBFMjjIntervalFilter::m_mjjlow
private

Definition at line 52 of file xAODVBFMjjIntervalFilter.h.

◆ m_mkMcEvent

BooleanProperty GenBase::m_mkMcEvent {this, "MakeMcEvent", false, "Create a new MC event collection if it doesn't exist"}
protectedinherited

Flag to determine if a new MC event collection should be made if it doesn't exist.

Definition at line 139 of file GenBase.h.

◆ m_nFail

int GenFilter::m_nFail
protectedinherited

Definition at line 66 of file GenFilter.h.

◆ m_NJetsMax

unsigned int xAODVBFMjjIntervalFilter::m_NJetsMax
private

Definition at line 62 of file xAODVBFMjjIntervalFilter.h.

◆ m_NJetsMin

unsigned int xAODVBFMjjIntervalFilter::m_NJetsMin
private

Definition at line 61 of file xAODVBFMjjIntervalFilter.h.

◆ m_nNeeded

int GenFilter::m_nNeeded
protectedinherited

Definition at line 67 of file GenFilter.h.

◆ m_norm

double xAODVBFMjjIntervalFilter::m_norm
private

Definition at line 45 of file xAODVBFMjjIntervalFilter.h.

◆ m_nPass

int GenFilter::m_nPass
protectedinherited

Definition at line 65 of file GenFilter.h.

◆ m_olapPt

double xAODVBFMjjIntervalFilter::m_olapPt
private

Definition at line 36 of file xAODVBFMjjIntervalFilter.h.

◆ m_photonjetoverlap

bool xAODVBFMjjIntervalFilter::m_photonjetoverlap
private

Definition at line 56 of file xAODVBFMjjIntervalFilter.h.

◆ m_ppSvc

ServiceHandle<IPartPropSvc> GenBase::m_ppSvc {this, "PartPropSvc", "PartPropSvc"}
privateinherited

Handle on the particle property service.

Definition at line 160 of file GenBase.h.

◆ m_prob0

double xAODVBFMjjIntervalFilter::m_prob0
private

Definition at line 48 of file xAODVBFMjjIntervalFilter.h.

◆ m_prob1

double xAODVBFMjjIntervalFilter::m_prob1
private

Definition at line 49 of file xAODVBFMjjIntervalFilter.h.

◆ m_prob2high

double xAODVBFMjjIntervalFilter::m_prob2high
private

Definition at line 51 of file xAODVBFMjjIntervalFilter.h.

◆ m_prob2low

double xAODVBFMjjIntervalFilter::m_prob2low
private

Definition at line 50 of file xAODVBFMjjIntervalFilter.h.

◆ m_pTavgMin

double xAODVBFMjjIntervalFilter::m_pTavgMin
private

Definition at line 38 of file xAODVBFMjjIntervalFilter.h.

◆ m_rndmSvc

ServiceHandle<IAthRNGSvc> xAODVBFMjjIntervalFilter::m_rndmSvc {this, "RndmSvc", "AthRNGSvc"}
private

Definition at line 34 of file xAODVBFMjjIntervalFilter.h.

◆ m_taujetoverlap

bool xAODVBFMjjIntervalFilter::m_taujetoverlap
private

Definition at line 58 of file xAODVBFMjjIntervalFilter.h.

◆ m_truncatehighmjj

bool xAODVBFMjjIntervalFilter::m_truncatehighmjj
private

Definition at line 55 of file xAODVBFMjjIntervalFilter.h.

◆ m_truncatelowmjj

bool xAODVBFMjjIntervalFilter::m_truncatelowmjj
private

Definition at line 53 of file xAODVBFMjjIntervalFilter.h.

◆ m_TruthJetContainerName

std::string xAODVBFMjjIntervalFilter::m_TruthJetContainerName
private

Definition at line 39 of file xAODVBFMjjIntervalFilter.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_yMax

double xAODVBFMjjIntervalFilter::m_yMax
private

Definition at line 37 of file xAODVBFMjjIntervalFilter.h.


The documentation for this class was generated from the following files:
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
xAODVBFMjjIntervalFilter::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: xAODVBFMjjIntervalFilter.h:34
xAODVBFMjjIntervalFilter::getEventWeight
double getEventWeight(ConstDataVector< xAOD::JetContainer > *jets) const
Definition: xAODVBFMjjIntervalFilter.cxx:344
xAODVBFMjjIntervalFilter::m_NJetsMin
unsigned int m_NJetsMin
Definition: xAODVBFMjjIntervalFilter.h:61
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
GenFilter::m_nNeeded
int m_nNeeded
Definition: GenFilter.h:67
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
GenBase::events_const
const McEventCollection * events_const() const
Access the current event's McEventCollection (const)
Definition: GenBase.h:96
SG::ReadHandle< McEventCollection >
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAODVBFMjjIntervalFilter::m_ApplyWeighting
bool m_ApplyWeighting
Definition: xAODVBFMjjIntervalFilter.h:63
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
test_pyathena.pt
pt
Definition: test_pyathena.py:11
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
GenFilter::filterEvent
virtual StatusCode filterEvent()=0
xAODVBFMjjIntervalFilter::m_yMax
double m_yMax
Definition: xAODVBFMjjIntervalFilter.h:37
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
xAODVBFMjjIntervalFilter::m_photonjetoverlap
bool m_photonjetoverlap
Definition: xAODVBFMjjIntervalFilter.h:56
xAODVBFMjjIntervalFilter::m_mjjhigh
double m_mjjhigh
Definition: xAODVBFMjjIntervalFilter.h:54
xAODVBFMjjIntervalFilter::m_norm
double m_norm
Definition: xAODVBFMjjIntervalFilter.h:45
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
GenFilter::filterInitialize
virtual StatusCode filterInitialize()
Definition: GenFilter.h:45
python.DataFormatRates.events
events
Definition: DataFormatRates.py:105
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
xAODVBFMjjIntervalFilter::m_TruthJetContainerName
std::string m_TruthJetContainerName
Definition: xAODVBFMjjIntervalFilter.h:39
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
MC::isPhysical
bool isPhysical(const T &p)
Definition: HepMCHelpers.h:32
GenBase::m_ppSvc
ServiceHandle< IPartPropSvc > m_ppSvc
Handle on the particle property service.
Definition: GenBase.h:160
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAODVBFMjjIntervalFilter::m_dphijj
double m_dphijj
Definition: xAODVBFMjjIntervalFilter.h:65
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
xAODVBFMjjIntervalFilter::sumDaughterNeutrinos
TLorentzVector sumDaughterNeutrinos(const xAOD::TruthParticle *)
Definition: xAODVBFMjjIntervalFilter.cxx:391
lumiFormat.i
int i
Definition: lumiFormat.py:92
ret
T ret(T t)
Definition: rootspy.cxx:260
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
GenBase::m_mcevents_const
SG::ReadHandleKey< McEventCollection > m_mcevents_const
Const handle to the MC event collection.
Definition: GenBase.h:163
xAODVBFMjjIntervalFilter::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, const EventContext &ctx) const
Definition: xAODVBFMjjIntervalFilter.cxx:416
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
xAODVBFMjjIntervalFilter::m_prob2high
double m_prob2high
Definition: xAODVBFMjjIntervalFilter.h:51
xAODVBFMjjIntervalFilter::m_prob0
double m_prob0
Definition: xAODVBFMjjIntervalFilter.h:48
ParticleGun_EoverP_Config.pid
pid
Definition: ParticleGun_EoverP_Config.py:62
jobOptions.ParticleID
ParticleID
Definition: jobOptions.decayer.py:85
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
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
Definition: McEventCollection.h:33
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAODVBFMjjIntervalFilter::m_truncatehighmjj
bool m_truncatehighmjj
Definition: xAODVBFMjjIntervalFilter.h:55
isTau
bool isTau(const T &p)
Definition: AtlasPID.h:148
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
GenBase::particleTable
const HepPDT::ParticleDataTable & particleTable() const
Get a particle data table.
Definition: GenBase.h:118
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::TruthParticle_v1::decayVtx
const TruthVertex_v1 * decayVtx() const
The decay vertex of this particle.
xAODVBFMjjIntervalFilter::m_electronjetoverlap
bool m_electronjetoverlap
Definition: xAODVBFMjjIntervalFilter.h:57
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
xAODVBFMjjIntervalFilter::m_ApplyNjet
bool m_ApplyNjet
Definition: xAODVBFMjjIntervalFilter.h:60
GenFilter::m_nPass
int m_nPass
Definition: GenFilter.h:65
xAOD::TruthParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TruthParticle_v1.cxx:174
xAODVBFMjjIntervalFilter::m_olapPt
double m_olapPt
Definition: xAODVBFMjjIntervalFilter.h:36
GenFilter::filterFinalize
virtual StatusCode filterFinalize()
Definition: GenFilter.h:47
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
xAODVBFMjjIntervalFilter::m_pTavgMin
double m_pTavgMin
Definition: xAODVBFMjjIntervalFilter.h:38
xAODVBFMjjIntervalFilter::m_alpha
double m_alpha
Definition: xAODVBFMjjIntervalFilter.h:59
xAODVBFMjjIntervalFilter::ApplyMassDphi
bool ApplyMassDphi(ConstDataVector< xAOD::JetContainer > *jets)
Definition: xAODVBFMjjIntervalFilter.cxx:326
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
High2LowByJetClassPt
Definition: VBFForwardJetsFilter.cxx:12
AthenaPoolExample_Copy.streamName
string streamName
Definition: AthenaPoolExample_Copy.py:39
MC::isStable
bool isStable(const T &p)
Definition: HepMCHelpers.h:30
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
xAOD::EgammaHelpers::isPhoton
bool isPhoton(const xAOD::Egamma *eg)
is the object a photon
Definition: EgammaxAODHelpers.cxx:21
xAODVBFMjjIntervalFilter::m_truncatelowmjj
bool m_truncatelowmjj
Definition: xAODVBFMjjIntervalFilter.h:53
GenBase::pdt
const HepPDT::ParticleDataTable & pdt() const
Shorter alias to get a particle data table.
Definition: GenBase.h:123
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
GenFilter::m_nFail
int m_nFail
Definition: GenFilter.h:66
xAOD::TruthParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TruthParticle_v1.cxx:166
test_pyathena.filterPassed
filterPassed
now, add a sequencer: it will only execute seqalg1 and 2 and never 3
Definition: test_pyathena.py:38
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
GenFilter::GenFilter
GenFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition: GenFilter.cxx:8
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
xAODVBFMjjIntervalFilter::m_taujetoverlap
bool m_taujetoverlap
Definition: xAODVBFMjjIntervalFilter.h:58
xAODVBFMjjIntervalFilter::m_prob2low
double m_prob2low
Definition: xAODVBFMjjIntervalFilter.h:50
xAODVBFMjjIntervalFilter::m_prob1
double m_prob1
Definition: xAODVBFMjjIntervalFilter.h:49
xAODVBFMjjIntervalFilter::checkOverlap
bool checkOverlap(double, double, const std::vector< const xAOD::TruthParticle * > &)
Definition: xAODVBFMjjIntervalFilter.cxx:274
xAODVBFMjjIntervalFilter::m_mjjlow
double m_mjjlow
Definition: xAODVBFMjjIntervalFilter.h:52
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
xAODVBFMjjIntervalFilter::m_applyDphi
bool m_applyDphi
Definition: xAODVBFMjjIntervalFilter.h:64
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
xAOD::TruthVertex_v1::outgoingParticle
const TruthParticle_v1 * outgoingParticle(size_t index) const
Get one of the outgoing particles.
Definition: TruthVertex_v1.cxx:121
xAODVBFMjjIntervalFilter::m_NJetsMax
unsigned int m_NJetsMax
Definition: xAODVBFMjjIntervalFilter.h:62
GenBase::initialize
virtual StatusCode initialize() override
Definition: GenBase.cxx:17
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >