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

#include <JetForwardPFlowJvtTool.h>

Inheritance diagram for JetForwardPFlowJvtTool:
Collaboration diagram for JetForwardPFlowJvtTool:

Public Member Functions

 JetForwardPFlowJvtTool (const std::string &name)
 Constructor with parameters: More...
 
virtual ~JetForwardPFlowJvtTool ()
 Destructor: More...
 
virtual StatusCode initialize () override
 Dummy implementation of the initialisation function. More...
 
virtual StatusCode decorate (const xAOD::JetContainer &jetCont) const override
 Decorate a jet collection without otherwise modifying it. More...
 
float getFJVT (const xAOD::Jet *jet, const std::vector< TVector2 > &pileupMomenta) const
 
bool isForwardJet (const xAOD::Jet *jet) const
 
bool isCentralJet (const xAOD::Jet *jet) const
 
StatusCode tagTruth (const xAOD::JetContainer *jets, const xAOD::JetContainer *truthJets)
 
virtual std::vector< TVector2 > calculateVertexMomenta (const xAOD::JetContainer *jets, int pvind, int vertices) const
 
pflow::puJets buildPFlowPUjets (const xAOD::Vertex &vx) const
 
bool hasCloseByHSjet (const xAOD::Jet *jet, const xAOD::JetContainer *pjets) const
 
double getRpt (const xAOD::Jet *jet) const
 
fastjet::PseudoJet pfoToPseudoJet (const xAOD::PFO *pfo, const CP::PFO_JetMETConfig_charge &theCharge, const xAOD::Vertex *vx) const
 
fastjet::PseudoJet feToPseudoJet (const xAOD::FlowElement *fe, const CP::PFO_JetMETConfig_charge &theCharge, const xAOD::Vertex *vx) const
 
std::size_t getPV () const
 
virtual void print () const
 Print the state of the tool. 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 sysInitialize () override
 Perform system initialization for an algorithm. 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
 
virtual StatusCode modify (xAOD::JetContainer &jets) const override final
 Concrete implementation of the function inherited from IJetModifier. More...
 

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...
 

Protected Attributes

SG::ReadHandleKey< jet::TrackVertexAssociationm_tvaKey {this, "TrackVertexAssociation", "", "Input track-vertex association"}
 
Gaudi::Property< std::string > m_jetContainerName {this, "JetContainer", "", "SG key for the input jet container"}
 
Gaudi::Property< std::string > m_jetsName {this, "jetsName", "AntiKt4PUPFlowJets", "Container name for the output reconstructed PU jets"}
 
Gaudi::Property< std::string > m_jetchargedp4 {this, "jetchargedp4", "JetChargedScaleMomentum", "Name of the jet charged momentum 4-vector"}
 
Gaudi::Property< bool > m_isdata {this, "isdata", false, "True if data"}
 
Gaudi::Property< int > m_pvind {this, "pvind", -1, "Hard-Scatter primary vertex index of the event. If -1 it will be automatically retrieved from the event"}
 
Gaudi::Property< int > m_vertices {this, "vertices", 10, "Number of vertices for which the missing momentum is calculated"}
 
Gaudi::Property< bool > m_includePV {this, "includePV", false, "Flag to include jets and tracks associated to PV in the calculation"}
 
Gaudi::Property< double > m_etaThresh {this, "etaThresh", 2.5, "Maximum eta value for considering a jet as central"}
 
Gaudi::Property< double > m_forwardMinPt {this, "forwardMinPt", 18e3, "Minimum forward jet pt"}
 
Gaudi::Property< double > m_forwardMaxPt {this, "forwardMaxPt", -1, "Maximum forward jet pt. If -1 no threshold is applied"}
 
Gaudi::Property< double > m_centerMinPt {this, "centralMinPt", 20e3, "Minimum central jet pt"}
 
Gaudi::Property< double > m_centerMaxPt {this, "centralMaxPt", -1, "Maximum central jet pt. If -1 no threshold is applied"}
 
Gaudi::Property< double > m_fjvtThresh {this, "fjvtThresh", 15e3, "fjvt threshold value"}
 
Gaudi::Property< double > m_rptCut {this, "rptCut", 0.1, "Rpt cut value for central PU jets contributing in the missing momentum calculation"}
 
Gaudi::Property< double > m_jvtCut {this, "jvtCut", 0.2, "JVT threshold value for considering a central PU jet as HS"}
 
Gaudi::Property< double > m_dzCut {this, "dzCut", 2.0, "Dz=z=-z0 cut for pfo objects participating in the HS vertex jet reco"}
 
Gaudi::Property< double > m_maxRap {this, "maxRap", 2.5, "Maximum rapidity value in fastjet::AreaDefinition"}
 
Gaudi::Property< double > m_neutMaxRap {this, "neutMaxRap", 2.5, "Maximum rapidity value for neutral pfos participating in jet reco"}
 
Gaudi::Property< float > m_weight {this, "weight", 0, "PFO weight value"}
 
Gaudi::Property< bool > m_tightOP {this, "tightOP", false, "If true a tight fjvt threshold value is applied"}
 
SG::ReadHandleKey< xAOD::VertexContainerm_vxContKey {this, "verticesName", "PrimaryVertices", "Container name of vertices to be retrieved"}
 
SG::ReadHandleKey< xAOD::PFOContainerm_PFOKey {this, "PFOName", "CHSParticleFlowObjects", "SG Key for CHS PFO Container"}
 
SG::ReadHandleKey< xAOD::FlowElementContainerm_FEKey {this, "FEName", "", "SG Key for CHS FlowElement Container (overrides PFO if not empty)"}
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey {"EventInfo"}
 
SG::ReadDecorHandleKey< xAOD::JetContainerm_passJvtKey {this, "passJvtName", "NNJvtPass", "SG key for output pass-JVT decoration"}
 
SG::ReadDecorHandleKey< xAOD::PFOm_orKey {this, "ORName", "", "OR label"}
 
SG::ReadDecorHandleKey< xAOD::FlowElementm_orFEKey {this, "ORNameFE", "", "OR label"}
 
SG::WriteDecorHandleKey< xAOD::JetContainerm_fjvtKey {this, "FjvtName", "passOnlyFJVT", "Decorator for passing fJVT threshold (tight or loose)"}
 
SG::WriteDecorHandleKey< xAOD::JetContainerm_fjvtRawKey {this, "FjvtRawName", "fJvt", "Decorator for raw fJVT variable"}
 
SG::WriteDecorHandleKey< xAOD::JetContainerm_isHSKey {this, "isHSName", "isJVTHS", "SG key for output isJVTHS decoration"}
 
SG::WriteDecorHandleKey< xAOD::JetContainerm_isPUKey {this, "isPUName", "isJvtPU", "SG key for output isJVTPU decoration"}
 
ToolHandle< CP::WeightPFOToolm_wpfotool {this,"WeightPFOTool", "", "Weight PFO tool name"}
 
ToolHandle< IJetCalibrationToolm_pfoJES {this,"JetCalibrationTool", "", "Jet calibration tool name"}
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

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

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
 

Detailed Description

Definition at line 89 of file JetForwardPFlowJvtTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ JetForwardPFlowJvtTool()

JetForwardPFlowJvtTool::JetForwardPFlowJvtTool ( const std::string &  name)

Constructor with parameters:

Definition at line 33 of file JetForwardPFlowJvtTool.cxx.

33  :
34  AsgTool(name) {
35  }

◆ ~JetForwardPFlowJvtTool()

JetForwardPFlowJvtTool::~JetForwardPFlowJvtTool ( )
virtualdefault

Destructor:

Member Function Documentation

◆ buildPFlowPUjets()

pflow::puJets JetForwardPFlowJvtTool::buildPFlowPUjets ( const xAOD::Vertex vx) const

Definition at line 188 of file JetForwardPFlowJvtTool.cxx.

188  {
189  pflow::puJets pu_jets;
190  const std::size_t pv_index = (m_pvind==-1) ? getPV() : std::size_t (m_pvind);
191 
192  std::vector<fastjet::PseudoJet> input_pfo;
193  std::set<int> charged_pfo;
194 
196 
197  if (!tvaHandle.isValid()){
198  ATH_MSG_ERROR("Could not retrieve the TrackVertexAssociation: "
199  << m_tvaKey.key());
200  return pu_jets;
201  }
202 
203  if(!m_FEKey.empty()){
205 
206  for(const xAOD::FlowElement* fe : *FlowElementHandle){
207  if (!m_orFEKey.key().empty()){
209  if (!orHandle(*fe)) continue;
210  }
211  if (fe->isCharged()) {
212  const xAOD::TrackParticle* track = dynamic_cast<const xAOD::TrackParticle*>(fe->chargedObject(0));
213 
214  if (vx.index()==pv_index && std::abs((vx.z()-track->z0())*sin(track->theta()))>m_dzCut)
215  continue;
216  if (vx.index()!=pv_index
217  && (!tvaHandle->associatedVertex(track)
218  || vx.index()!=tvaHandle->associatedVertex(track)->index())
219  ) continue;
220  input_pfo.push_back(feToPseudoJet(fe, CP::charged, &vx) );
221  charged_pfo.insert(fe->index());
222  }
223  else if (std::abs(fe->eta())<m_neutMaxRap && !fe->isCharged() && fe->e()>0)
224  {
225  input_pfo.push_back(feToPseudoJet(fe, CP::neutral, &vx) );
226  }
227  }
228  }
229  else{
231 
232  for(const xAOD::PFO* pfo : *PFOHandle){
233  if (!m_orKey.key().empty()){
235  if (!orHandle(*pfo)) continue;
236  }
237  if (pfo->isCharged()) {
238  if (vx.index()==pv_index && std::abs((vx.z()-pfo->track(0)->z0())*sin(pfo->track(0)->theta()))>m_dzCut)
239  continue;
240  if (vx.index()!=pv_index
241  && (!tvaHandle->associatedVertex(pfo->track(0))
242  || vx.index()!=tvaHandle->associatedVertex(pfo->track(0))->index())
243  ) continue;
244  input_pfo.push_back(pfoToPseudoJet(pfo, CP::charged, &vx) );
245  charged_pfo.insert(pfo->index());
246  }
247  else if (std::abs(pfo->eta())<m_neutMaxRap && !pfo->isCharged() && pfo->eEM()>0)
248  {
249  input_pfo.push_back(pfoToPseudoJet(pfo, CP::neutral, &vx) );
250  }
251  }
252  }
253 
254  std::shared_ptr<xAOD::JetContainer> vertjets = std::make_shared<xAOD::JetContainer>();
255  std::shared_ptr<xAOD::JetAuxContainer> vertjetsAux = std::make_shared<xAOD::JetAuxContainer>();
256 
257  vertjets->setStore(vertjetsAux.get());
258  TString newname = m_jetsName.value();
259  newname += vx.index();
260 
261  // Use run/event number as random number seeds.
262  std::vector<int> seeds;
263  auto evtInfoHandle = SG::makeHandle(m_eventInfoKey);
264  if (!evtInfoHandle.isValid())
265  {
266  ATH_MSG_ERROR("Unable to retrieve event info");
267  return pu_jets;
268  }
269  JetClustererHelper::seedsFromEventInfo(evtInfoHandle.cptr(), seeds);
270 
271  fastjet::JetDefinition jet_def(fastjet::antikt_algorithm,0.4);
272  fastjet::AreaDefinition area_def(fastjet::active_area_explicit_ghosts,
273  fastjet::GhostedAreaSpec(fastjet::SelectorAbsRapMax(m_maxRap)));
274  area_def = area_def.with_fixed_seed(seeds);
275  fastjet::ClusterSequenceArea clust_pfo(input_pfo,jet_def,area_def);
276  std::vector<fastjet::PseudoJet> inclusive_jets = sorted_by_pt(clust_pfo.inclusive_jets(5000.));
277 
278  for (size_t i = 0; i < inclusive_jets.size(); i++) {
279  xAOD::Jet* jet= new xAOD::Jet();
280  xAOD::JetFourMom_t tempjetp4(inclusive_jets[i].pt(),
281  inclusive_jets[i].eta(),
282  inclusive_jets[i].phi(),
283  inclusive_jets[i].m());
284  xAOD::JetFourMom_t newArea(inclusive_jets[i].area_4vector().perp(),
285  inclusive_jets[i].area_4vector().eta(),
286  inclusive_jets[i].area_4vector().phi(),
287  inclusive_jets[i].area_4vector().m());
288  vertjets->push_back(jet);
289  jet->setJetP4(tempjetp4);
290  jet->setJetP4("JetConstitScaleMomentum",tempjetp4);
291  jet->setJetP4("JetPileupScaleMomentum",tempjetp4);
292  jet->setAttribute("ActiveArea4vec",newArea);
293  jet->setAttribute("DetectorEta",jet->eta());
294  std::vector<fastjet::PseudoJet> constituents = inclusive_jets[i].constituents();
295  float chargedpart = 0;
296  for (size_t j = 0; j < constituents.size(); j++) {
297  if (charged_pfo.count(constituents[j].user_index())>=1) {
298  chargedpart += constituents[j].perp();
299  }
300  }
301  xAOD::JetFourMom_t chargejetp4(chargedpart,inclusive_jets[i].eta(),inclusive_jets[i].phi(),inclusive_jets[i].m());
302  jet->setJetP4(m_jetchargedp4,chargejetp4);
303  }
304 
305  if((m_pfoJES->modify(*vertjets)).isFailure()){
306  ATH_MSG_ERROR(" Failed to calibrate PU jet container ");
307  return pu_jets;
308  }
309 
310  pu_jets.jetCont = vertjets;
311  pu_jets.jetAuxCont = vertjetsAux;
312  return pu_jets;
313  }

◆ calculateVertexMomenta()

std::vector< TVector2 > JetForwardPFlowJvtTool::calculateVertexMomenta ( const xAOD::JetContainer jets,
int  pvind,
int  vertices 
) const
virtual

Reimplemented in JetBalancePFlowJvtTool.

Definition at line 133 of file JetForwardPFlowJvtTool.cxx.

134  {
135  std::vector<TVector2> pileupMomenta;
136  // -- Retrieve PV index if not provided by user
137  const std::size_t pv_index = (pvind==-1) ? getPV() : std::size_t(pvind);
138 
140 
141  for(const xAOD::Vertex* vx: *vxContHandle) {
142  if(vx->vertexType()!=xAOD::VxType::PriVtx && vx->vertexType()!=xAOD::VxType::PileUp) continue;
143  if(vx->index()==(size_t)pv_index) continue;
144 
145  TString jname = m_jetsName.value();
146  jname += vx->index();
147 
148  pflow::puJets vertjets = buildPFlowPUjets(*vx);
149  if( !vertjets.jetCont || !vertjets.jetAuxCont ){
150  ATH_MSG_WARNING(" Some issue appeared while building the pflow pileup jets for vertex "
151  << vx->index() << " (vxType = " << vx->vertexType()<<" )!" );
152  return pileupMomenta;
153  }
154 
155  TVector2 vertex_met;
156  for( const xAOD::Jet *jet : *(vertjets.jetCont) ) {
157 
158  // Remove jets which are close to hs
159  if (!m_includePV && hasCloseByHSjet(jet,pjets)) continue;
160 
161  // Calculate vertex missing momentum
162  if (isCentralJet(jet) && getRpt(jet)> m_rptCut)
163  {
164  vertex_met += TVector2(jet->pt()*cos(jet->phi()),jet->pt()*sin(jet->phi()) ) ;
165  }
166  else{
167  vertex_met += TVector2(jet->jetP4(m_jetchargedp4).Pt()*cos(jet->jetP4(m_jetchargedp4).Phi()),
168  jet->jetP4(m_jetchargedp4).Pt()*sin(jet->jetP4(m_jetchargedp4).Phi()) );
169  }
170  }
171 
172  pileupMomenta.push_back(vertex_met);
173  if(vertices!=-1 && int(vx->index())==vertices) break;
174  }
175  return pileupMomenta;
176  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

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

◆ decorate()

StatusCode JetForwardPFlowJvtTool::decorate ( const xAOD::JetContainer jets) const
overridevirtual

Decorate a jet collection without otherwise modifying it.

Implements IJetDecorator.

Reimplemented in JetBalancePFlowJvtTool.

Definition at line 93 of file JetForwardPFlowJvtTool.cxx.

93  {
94  std::vector<TVector2> pileupMomenta;
95 
96  pileupMomenta=calculateVertexMomenta(&jetCont,m_pvind, m_vertices);
97 
100  if(pileupMomenta.empty()) {
101  ATH_MSG_DEBUG( "pileupMomenta is empty, this can happen for events with no PU vertices."
102  <<" fJVT won't be computed for this event and will be set to 0 instead." );
103  for(const xAOD::Jet* jetF : jetCont) {
104  fjvtHandle(*jetF) = 1;
105  fjvtRawHandle(*jetF) = 0;
106  }
107  return StatusCode::SUCCESS;
108  }
109 
110  for(const xAOD::Jet* jetF : jetCont) {
111  fjvtHandle(*jetF) = 1;
112  fjvtRawHandle(*jetF) = 0;
113 
114  if (isForwardJet(jetF)){
115  double fjvt = getFJVT(jetF,pileupMomenta);
116  if (fjvt>m_fjvtThresh) fjvtHandle(*jetF) = 0;
117  fjvtRawHandle(*jetF) = fjvt;
118  }
119  }
120  return StatusCode::SUCCESS;
121  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::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; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ feToPseudoJet()

fastjet::PseudoJet JetForwardPFlowJvtTool::feToPseudoJet ( const xAOD::FlowElement fe,
const CP::PFO_JetMETConfig_charge theCharge,
const xAOD::Vertex vx 
) const

Definition at line 337 of file JetForwardPFlowJvtTool.cxx.

337  {
338  TLorentzVector fe_p4;
339  if (CP::charged == theCharge){
340  float pweight = m_weight;
341  if( (m_wpfotool->fillWeight(*fe,pweight)).isSuccess() ){
342  // Create a Peeudojet with the momentum of the selected IParticle
343  fe_p4= TLorentzVector(fe->p4().Px()*pweight,fe->p4().Py()*pweight,fe->p4().Pz()*pweight,fe->e()*pweight);
344  }
345  } else if (CP::neutral == theCharge){
346  fe_p4=FEHelpers::getVertexCorrectedFourVec(*fe, *vx);
347  }
348  fastjet::PseudoJet psj(fe_p4);
349  // User index is used to identify the xAOD object used for the PseudoJet
350  if (CP::charged == theCharge){
351  psj.set_user_index(fe->index());
352  }else{
353  psj.set_user_index(-1);
354  }
355 
356  return psj;
357  }

◆ getFJVT()

float JetForwardPFlowJvtTool::getFJVT ( const xAOD::Jet jet,
const std::vector< TVector2 > &  pileupMomenta 
) const

Definition at line 123 of file JetForwardPFlowJvtTool.cxx.

123  {
124  TVector2 fjet(jet->pt()*cos(jet->phi()),jet->pt()*sin(jet->phi()));
125  double fjvt = 0;
126  for (const TVector2& pu : pileupMomenta) {
127  double projection = pu*fjet/fjet.Mod();
128  if (projection<fjvt) fjvt = projection;
129  }
130  return -1*fjvt/fjet.Mod();
131  }

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getProperty()

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ getPV()

std::size_t JetForwardPFlowJvtTool::getPV ( ) const

Definition at line 377 of file JetForwardPFlowJvtTool.cxx.

377  {
378  if (m_includePV) return -1;
379 
380  //const xAOD::VertexContainer *vxCont = 0;
382  ATH_MSG_DEBUG("Successfully retrieved primary vertex container");
383  for(const xAOD::Vertex *vx : *vxContHandle) {
384  if(vx->vertexType()==xAOD::VxType::PriVtx) return vx->index();
385  }
386  // If no verticies are found in the event the Primary Vertex container will just contain a dummy vertex and no primary vertex
387  if(vxContHandle->empty() ){
388  ATH_MSG_ERROR("Primary vertex container is empty ");
389  } else if(vxContHandle->size() != 1 ){
390  ATH_MSG_WARNING("Couldn't identify the hard-scatter primary vertex (no vertex with \"vx->vertexType()==xAOD::VxType::PriVtx\" in the container)! ");
391  }
392  // this almost certainly isn't what we should do here, the
393  // caller doesn't check this for errors
394  return 0;
395  }

◆ getRpt()

double JetForwardPFlowJvtTool::getRpt ( const xAOD::Jet jet) const

Definition at line 371 of file JetForwardPFlowJvtTool.cxx.

371  {
372  double Rpt;
373  Rpt= jet->jetP4(m_jetchargedp4).Pt()/ jet->pt();
374  return Rpt;
375  }

◆ hasCloseByHSjet()

bool JetForwardPFlowJvtTool::hasCloseByHSjet ( const xAOD::Jet jet,
const xAOD::JetContainer pjets 
) const

Definition at line 178 of file JetForwardPFlowJvtTool.cxx.

178  {
179  for (const xAOD::Jet* pjet : *pjets) {
180  char jet_nnjvtpass=false;
182  jet_nnjvtpass = passJvtHandle(*pjet);
183  if (pjet->p4().DeltaR(jet->p4())<0.3 && jet_nnjvtpass && isCentralJet(pjet) ) return true;
184  }
185  return false;
186  }

◆ initialize()

StatusCode JetForwardPFlowJvtTool::initialize ( )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Reimplemented in JetBalancePFlowJvtTool.

Definition at line 44 of file JetForwardPFlowJvtTool.cxx.

45  {
46  ATH_MSG_INFO ("Initializing " << name() << "...");
47  if (m_tightOP) m_fjvtThresh = 0.53;
48  else m_fjvtThresh = 0.72;
49 
51 
52  if(m_jetContainerName.empty()){
53  ATH_MSG_ERROR("JetForwardPFlowJvtTool needs to have its input jet container configured!");
54  return StatusCode::FAILURE;
55  }
56 
57  //FlowElement jets instead of PFO jets
58  if(!m_FEKey.empty()){
59  if(!m_orFEKey.key().empty()){
60  m_orFEKey = m_jetContainerName + "." + m_orFEKey.key();
61  }
62  }
63  else{ //PFO reconstruction
64  if(!m_orKey.key().empty()){
65  m_orKey = m_jetContainerName + "." + m_orKey.key();
66  }
67  }
68  ATH_CHECK(m_PFOKey.initialize( m_FEKey.empty() ));
69  ATH_CHECK(m_orKey.initialize( m_FEKey.empty() && !m_orKey.key().empty() ));
70  ATH_CHECK(m_FEKey.initialize( !m_FEKey.empty() ));
71  ATH_CHECK(m_orFEKey.initialize( !m_FEKey.empty() && !m_orFEKey.key().empty() ));
73 
74  m_fjvtKey = m_jetContainerName + "." + m_fjvtKey.key();
76  m_isHSKey = m_jetContainerName + "." + m_isHSKey.key();
77  m_isPUKey = m_jetContainerName + "." + m_isPUKey.key();
78  m_passJvtKey = m_jetContainerName + "." + m_passJvtKey.key(); //nnjvt pass
79 
80  ATH_CHECK(m_fjvtKey.initialize());
81  ATH_CHECK(m_fjvtRawKey.initialize());
82  ATH_CHECK(m_isHSKey.initialize());
83  ATH_CHECK(m_isPUKey.initialize());
84  ATH_CHECK(m_passJvtKey.initialize());
85 
86  ATH_CHECK(m_vxContKey.initialize());
87 
88 
89 
90  return StatusCode::SUCCESS;
91  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ isCentralJet()

bool JetForwardPFlowJvtTool::isCentralJet ( const xAOD::Jet jet) const

Definition at line 365 of file JetForwardPFlowJvtTool.cxx.

365  {
366  if (std::abs(jet->eta())>m_etaThresh) return false;
367  if (jet->pt()<m_centerMinPt || (m_centerMaxPt>0 && jet->pt()>m_centerMaxPt)) return false;
368  return true;
369  }

◆ isForwardJet()

bool JetForwardPFlowJvtTool::isForwardJet ( const xAOD::Jet jet) const

Definition at line 359 of file JetForwardPFlowJvtTool.cxx.

359  {
360  if (std::abs(jet->eta())<m_etaThresh) return false;
361  if (jet->pt()<m_forwardMinPt || (m_forwardMaxPt>0 && jet->pt()>m_forwardMaxPt) ) return false;
362  return true;
363  }

◆ modify()

virtual StatusCode IJetDecorator::modify ( xAOD::JetContainer jets) const
inlinefinaloverridevirtualinherited

Concrete implementation of the function inherited from IJetModifier.

Implements IJetModifier.

Definition at line 32 of file IJetDecorator.h.

32 {return decorate(jets);};

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ pfoToPseudoJet()

fastjet::PseudoJet JetForwardPFlowJvtTool::pfoToPseudoJet ( const xAOD::PFO pfo,
const CP::PFO_JetMETConfig_charge theCharge,
const xAOD::Vertex vx 
) const

Definition at line 315 of file JetForwardPFlowJvtTool.cxx.

315  {
316  TLorentzVector pfo_p4;
317  if (CP::charged == theCharge){
318  float pweight = m_weight;
319  if( (m_wpfotool->fillWeight(*pfo,pweight)).isSuccess() ){
320  // Create a PSeudojet with the momentum of the selected IParticle
321  pfo_p4= TLorentzVector(pfo->p4().Px()*pweight,pfo->p4().Py()*pweight,pfo->p4().Pz()*pweight,pfo->e()*pweight);
322  }
323  } else if (CP::neutral == theCharge){
324  pfo_p4= pfo->GetVertexCorrectedEMFourVec(*vx);
325  }
326  fastjet::PseudoJet psj(pfo_p4);
327  // User index is used to identify the xAOD object used for the PSeudoJet
328  if (CP::charged == theCharge){
329  psj.set_user_index(pfo->index());
330  }else{
331  psj.set_user_index(-1);
332  }
333 
334  return psj;
335  }

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ 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< AlgTool > >::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< AlgTool > >::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  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ tagTruth()

StatusCode JetForwardPFlowJvtTool::tagTruth ( const xAOD::JetContainer jets,
const xAOD::JetContainer truthJets 
)

Definition at line 397 of file JetForwardPFlowJvtTool.cxx.

397  {
400 
401  for(const xAOD::Jet *jet : *jets) {
402  bool ishs = false;
403  bool ispu = true;
404  for(const xAOD::Jet *tjet : *truthJets) {
405  if (tjet->p4().DeltaR(jet->p4())<0.3 && tjet->pt()>10e3) ishs = true;
406  if (tjet->p4().DeltaR(jet->p4())<0.6) ispu = false;
407  }
408  isHSHandle(*jet)=ishs;
409  isPUHandle(*jet)=ispu;
410  }
411  return StatusCode::SUCCESS;
412  }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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_centerMaxPt

Gaudi::Property<double> JetForwardPFlowJvtTool::m_centerMaxPt {this, "centralMaxPt", -1, "Maximum central jet pt. If -1 no threshold is applied"}
protected

Definition at line 138 of file JetForwardPFlowJvtTool.h.

◆ m_centerMinPt

Gaudi::Property<double> JetForwardPFlowJvtTool::m_centerMinPt {this, "centralMinPt", 20e3, "Minimum central jet pt"}
protected

Definition at line 137 of file JetForwardPFlowJvtTool.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_dzCut

Gaudi::Property<double> JetForwardPFlowJvtTool::m_dzCut {this, "dzCut", 2.0, "Dz=z=-z0 cut for pfo objects participating in the HS vertex jet reco"}
protected

Definition at line 142 of file JetForwardPFlowJvtTool.h.

◆ m_etaThresh

Gaudi::Property<double> JetForwardPFlowJvtTool::m_etaThresh {this, "etaThresh", 2.5, "Maximum eta value for considering a jet as central"}
protected

Definition at line 134 of file JetForwardPFlowJvtTool.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> JetForwardPFlowJvtTool::m_eventInfoKey {"EventInfo"}
protected

Definition at line 155 of file JetForwardPFlowJvtTool.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_FEKey

SG::ReadHandleKey<xAOD::FlowElementContainer> JetForwardPFlowJvtTool::m_FEKey {this, "FEName", "", "SG Key for CHS FlowElement Container (overrides PFO if not empty)"}
protected

Definition at line 154 of file JetForwardPFlowJvtTool.h.

◆ m_fjvtKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetForwardPFlowJvtTool::m_fjvtKey {this, "FjvtName", "passOnlyFJVT", "Decorator for passing fJVT threshold (tight or loose)"}
protected

Definition at line 161 of file JetForwardPFlowJvtTool.h.

◆ m_fjvtRawKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetForwardPFlowJvtTool::m_fjvtRawKey {this, "FjvtRawName", "fJvt", "Decorator for raw fJVT variable"}
protected

Definition at line 162 of file JetForwardPFlowJvtTool.h.

◆ m_fjvtThresh

Gaudi::Property<double> JetForwardPFlowJvtTool::m_fjvtThresh {this, "fjvtThresh", 15e3, "fjvt threshold value"}
protected

Definition at line 139 of file JetForwardPFlowJvtTool.h.

◆ m_forwardMaxPt

Gaudi::Property<double> JetForwardPFlowJvtTool::m_forwardMaxPt {this, "forwardMaxPt", -1, "Maximum forward jet pt. If -1 no threshold is applied"}
protected

Definition at line 136 of file JetForwardPFlowJvtTool.h.

◆ m_forwardMinPt

Gaudi::Property<double> JetForwardPFlowJvtTool::m_forwardMinPt {this, "forwardMinPt", 18e3, "Minimum forward jet pt"}
protected

Definition at line 135 of file JetForwardPFlowJvtTool.h.

◆ m_includePV

Gaudi::Property<bool> JetForwardPFlowJvtTool::m_includePV {this, "includePV", false, "Flag to include jets and tracks associated to PV in the calculation"}
protected

Definition at line 133 of file JetForwardPFlowJvtTool.h.

◆ m_isdata

Gaudi::Property<bool> JetForwardPFlowJvtTool::m_isdata {this, "isdata", false, "True if data"}
protected

Definition at line 130 of file JetForwardPFlowJvtTool.h.

◆ m_isHSKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetForwardPFlowJvtTool::m_isHSKey {this, "isHSName", "isJVTHS", "SG key for output isJVTHS decoration"}
protected

Definition at line 163 of file JetForwardPFlowJvtTool.h.

◆ m_isPUKey

SG::WriteDecorHandleKey<xAOD::JetContainer> JetForwardPFlowJvtTool::m_isPUKey {this, "isPUName", "isJvtPU", "SG key for output isJVTPU decoration"}
protected

Definition at line 164 of file JetForwardPFlowJvtTool.h.

◆ m_jetchargedp4

Gaudi::Property<std::string> JetForwardPFlowJvtTool::m_jetchargedp4 {this, "jetchargedp4", "JetChargedScaleMomentum", "Name of the jet charged momentum 4-vector"}
protected

Definition at line 128 of file JetForwardPFlowJvtTool.h.

◆ m_jetContainerName

Gaudi::Property<std::string> JetForwardPFlowJvtTool::m_jetContainerName {this, "JetContainer", "", "SG key for the input jet container"}
protected

Definition at line 126 of file JetForwardPFlowJvtTool.h.

◆ m_jetsName

Gaudi::Property<std::string> JetForwardPFlowJvtTool::m_jetsName {this, "jetsName", "AntiKt4PUPFlowJets", "Container name for the output reconstructed PU jets"}
protected

Definition at line 127 of file JetForwardPFlowJvtTool.h.

◆ m_jvtCut

Gaudi::Property<double> JetForwardPFlowJvtTool::m_jvtCut {this, "jvtCut", 0.2, "JVT threshold value for considering a central PU jet as HS"}
protected

Definition at line 141 of file JetForwardPFlowJvtTool.h.

◆ m_maxRap

Gaudi::Property<double> JetForwardPFlowJvtTool::m_maxRap {this, "maxRap", 2.5, "Maximum rapidity value in fastjet::AreaDefinition"}
protected

Definition at line 143 of file JetForwardPFlowJvtTool.h.

◆ m_neutMaxRap

Gaudi::Property<double> JetForwardPFlowJvtTool::m_neutMaxRap {this, "neutMaxRap", 2.5, "Maximum rapidity value for neutral pfos participating in jet reco"}
protected

Definition at line 144 of file JetForwardPFlowJvtTool.h.

◆ m_orFEKey

SG::ReadDecorHandleKey<xAOD::FlowElement> JetForwardPFlowJvtTool::m_orFEKey {this, "ORNameFE", "", "OR label"}
protected

Definition at line 159 of file JetForwardPFlowJvtTool.h.

◆ m_orKey

SG::ReadDecorHandleKey<xAOD::PFO> JetForwardPFlowJvtTool::m_orKey {this, "ORName", "", "OR label"}
protected

Definition at line 158 of file JetForwardPFlowJvtTool.h.

◆ m_passJvtKey

SG::ReadDecorHandleKey<xAOD::JetContainer> JetForwardPFlowJvtTool::m_passJvtKey {this, "passJvtName", "NNJvtPass", "SG key for output pass-JVT decoration"}
protected

Definition at line 157 of file JetForwardPFlowJvtTool.h.

◆ m_pfoJES

ToolHandle<IJetCalibrationTool> JetForwardPFlowJvtTool::m_pfoJES {this,"JetCalibrationTool", "", "Jet calibration tool name"}
protected

Definition at line 167 of file JetForwardPFlowJvtTool.h.

◆ m_PFOKey

SG::ReadHandleKey<xAOD::PFOContainer> JetForwardPFlowJvtTool::m_PFOKey {this, "PFOName", "CHSParticleFlowObjects", "SG Key for CHS PFO Container"}
protected

Definition at line 153 of file JetForwardPFlowJvtTool.h.

◆ m_pvind

Gaudi::Property<int> JetForwardPFlowJvtTool::m_pvind {this, "pvind", -1, "Hard-Scatter primary vertex index of the event. If -1 it will be automatically retrieved from the event"}
protected

Definition at line 131 of file JetForwardPFlowJvtTool.h.

◆ m_rptCut

Gaudi::Property<double> JetForwardPFlowJvtTool::m_rptCut {this, "rptCut", 0.1, "Rpt cut value for central PU jets contributing in the missing momentum calculation"}
protected

Definition at line 140 of file JetForwardPFlowJvtTool.h.

◆ m_tightOP

Gaudi::Property<bool> JetForwardPFlowJvtTool::m_tightOP {this, "tightOP", false, "If true a tight fjvt threshold value is applied"}
protected

Definition at line 146 of file JetForwardPFlowJvtTool.h.

◆ m_tvaKey

SG::ReadHandleKey<jet::TrackVertexAssociation> JetForwardPFlowJvtTool::m_tvaKey {this, "TrackVertexAssociation", "", "Input track-vertex association"}
protected

Definition at line 125 of file JetForwardPFlowJvtTool.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertices

Gaudi::Property<int> JetForwardPFlowJvtTool::m_vertices {this, "vertices", 10, "Number of vertices for which the missing momentum is calculated"}
protected

Definition at line 132 of file JetForwardPFlowJvtTool.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_vxContKey

SG::ReadHandleKey<xAOD::VertexContainer> JetForwardPFlowJvtTool::m_vxContKey {this, "verticesName", "PrimaryVertices", "Container name of vertices to be retrieved"}
protected

Definition at line 152 of file JetForwardPFlowJvtTool.h.

◆ m_weight

Gaudi::Property<float> JetForwardPFlowJvtTool::m_weight {this, "weight", 0, "PFO weight value"}
protected

Definition at line 145 of file JetForwardPFlowJvtTool.h.

◆ m_wpfotool

ToolHandle<CP::WeightPFOTool> JetForwardPFlowJvtTool::m_wpfotool {this,"WeightPFOTool", "", "Weight PFO tool name"}
protected

Definition at line 166 of file JetForwardPFlowJvtTool.h.


The documentation for this class was generated from the following files:
JetForwardPFlowJvtTool::calculateVertexMomenta
virtual std::vector< TVector2 > calculateVertexMomenta(const xAOD::JetContainer *jets, int pvind, int vertices) const
Definition: JetForwardPFlowJvtTool.cxx:133
pflow::puJets::jetAuxCont
std::shared_ptr< xAOD::JetAuxContainer > jetAuxCont
Definition: JetForwardPFlowJvtTool.h:85
JetForwardPFlowJvtTool::isForwardJet
bool isForwardJet(const xAOD::Jet *jet) const
Definition: JetForwardPFlowJvtTool.cxx:359
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
JetForwardPFlowJvtTool::m_centerMinPt
Gaudi::Property< double > m_centerMinPt
Definition: JetForwardPFlowJvtTool.h:137
perp
Scalar perp() const
perp method - perpenticular length
Definition: AmgMatrixBasePlugin.h:44
JetForwardPFlowJvtTool::pfoToPseudoJet
fastjet::PseudoJet pfoToPseudoJet(const xAOD::PFO *pfo, const CP::PFO_JetMETConfig_charge &theCharge, const xAOD::Vertex *vx) const
Definition: JetForwardPFlowJvtTool.cxx:315
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
JetForwardPFlowJvtTool::hasCloseByHSjet
bool hasCloseByHSjet(const xAOD::Jet *jet, const xAOD::JetContainer *pjets) const
Definition: JetForwardPFlowJvtTool.cxx:178
JetForwardPFlowJvtTool::m_jetContainerName
Gaudi::Property< std::string > m_jetContainerName
Definition: JetForwardPFlowJvtTool.h:126
JetForwardPFlowJvtTool::m_pvind
Gaudi::Property< int > m_pvind
Definition: JetForwardPFlowJvtTool.h:131
test_pyathena.pt
pt
Definition: test_pyathena.py:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
JetForwardPFlowJvtTool::m_tvaKey
SG::ReadHandleKey< jet::TrackVertexAssociation > m_tvaKey
Definition: JetForwardPFlowJvtTool.h:125
JetForwardPFlowJvtTool::m_weight
Gaudi::Property< float > m_weight
Definition: JetForwardPFlowJvtTool.h:145
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
JetForwardPFlowJvtTool::m_includePV
Gaudi::Property< bool > m_includePV
Definition: JetForwardPFlowJvtTool.h:133
JetForwardPFlowJvtTool::m_wpfotool
ToolHandle< CP::WeightPFOTool > m_wpfotool
Definition: JetForwardPFlowJvtTool.h:166
JetForwardPFlowJvtTool::m_pfoJES
ToolHandle< IJetCalibrationTool > m_pfoJES
Definition: JetForwardPFlowJvtTool.h:167
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
JetForwardPFlowJvtTool::m_vertices
Gaudi::Property< int > m_vertices
Definition: JetForwardPFlowJvtTool.h:132
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
xAOD::PFO_v1::e
virtual double e() const
The total energy of the particle.
Definition: PFO_v1.cxx:81
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
JetForwardPFlowJvtTool::m_isPUKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_isPUKey
Definition: JetForwardPFlowJvtTool.h:164
JetForwardPFlowJvtTool::m_jetchargedp4
Gaudi::Property< std::string > m_jetchargedp4
Definition: JetForwardPFlowJvtTool.h:128
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition: AsgTool.cxx:58
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
AthCommonDataStore
Definition: AthCommonDataStore.h:52
pflow::puJets::jetCont
std::shared_ptr< xAOD::JetContainer > jetCont
Definition: JetForwardPFlowJvtTool.h:84
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
JetForwardPFlowJvtTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: JetForwardPFlowJvtTool.h:155
JetForwardPFlowJvtTool::getPV
std::size_t getPV() const
Definition: JetForwardPFlowJvtTool.cxx:377
lumiFormat.i
int i
Definition: lumiFormat.py:85
JetForwardPFlowJvtTool::m_passJvtKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_passJvtKey
Definition: JetForwardPFlowJvtTool.h:157
JetForwardPFlowJvtTool::m_jetsName
Gaudi::Property< std::string > m_jetsName
Definition: JetForwardPFlowJvtTool.h:127
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
JetForwardPFlowJvtTool::m_fjvtRawKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_fjvtRawKey
Definition: JetForwardPFlowJvtTool.h:162
JetForwardPFlowJvtTool::m_fjvtKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_fjvtKey
Definition: JetForwardPFlowJvtTool.h:161
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
JetForwardPFlowJvtTool::feToPseudoJet
fastjet::PseudoJet feToPseudoJet(const xAOD::FlowElement *fe, const CP::PFO_JetMETConfig_charge &theCharge, const xAOD::Vertex *vx) const
Definition: JetForwardPFlowJvtTool.cxx:337
JetClustererHelper::seedsFromEventInfo
void seedsFromEventInfo(const xAOD::EventInfo *ei, std::vector< int > &seeds)
Fill seeds vector from run & event number. This functio is separated from the class so it's easier to...
Definition: JetClusterer.cxx:27
xAOD::PFO_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: PFO_v1.cxx:95
JetForwardPFlowJvtTool::m_vxContKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vxContKey
Definition: JetForwardPFlowJvtTool.h:152
python.xAODType.dummy
dummy
Definition: xAODType.py:4
JetForwardPFlowJvtTool::m_dzCut
Gaudi::Property< double > m_dzCut
Definition: JetForwardPFlowJvtTool.h:142
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
JetForwardPFlowJvtTool::m_rptCut
Gaudi::Property< double > m_rptCut
Definition: JetForwardPFlowJvtTool.h:140
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::Vertex_v1::z
float z() const
Returns the z position.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
SG::AuxElement::index
size_t index() const
Return the index of this element within its container.
JetForwardPFlowJvtTool::isCentralJet
bool isCentralJet(const xAOD::Jet *jet) const
Definition: JetForwardPFlowJvtTool.cxx:365
JetForwardPFlowJvtTool::m_FEKey
SG::ReadHandleKey< xAOD::FlowElementContainer > m_FEKey
Definition: JetForwardPFlowJvtTool.h:154
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition: JetTypes.h:17
CP::neutral
@ neutral
Definition: Reconstruction/PFlow/PFlowUtils/PFlowUtils/PFODefs.h:11
xAOD::VxType::PileUp
@ PileUp
Pile-up vertex.
Definition: TrackingPrimitives.h:573
JetForwardPFlowJvtTool::m_forwardMaxPt
Gaudi::Property< double > m_forwardMaxPt
Definition: JetForwardPFlowJvtTool.h:136
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
xAOD::PFO_v1
Class describing a particle flow object.
Definition: PFO_v1.h:35
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
JetForwardPFlowJvtTool::m_tightOP
Gaudi::Property< bool > m_tightOP
Definition: JetForwardPFlowJvtTool.h:146
xAOD::FlowElement_v1::e
virtual double e() const override
The total energy of the particle.
Definition: FlowElement_v1.cxx:25
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
JetForwardPFlowJvtTool::m_forwardMinPt
Gaudi::Property< double > m_forwardMinPt
Definition: JetForwardPFlowJvtTool.h:135
xAOD::JetAlgorithmType::antikt_algorithm
@ antikt_algorithm
Definition: JetContainerInfo.h:33
JetForwardPFlowJvtTool::m_orFEKey
SG::ReadDecorHandleKey< xAOD::FlowElement > m_orFEKey
Definition: JetForwardPFlowJvtTool.h:159
CheckAppliedSFs.pu
pu
Definition: CheckAppliedSFs.py:311
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
JetForwardPFlowJvtTool::m_fjvtThresh
Gaudi::Property< double > m_fjvtThresh
Definition: JetForwardPFlowJvtTool.h:139
pflow::puJets
Definition: JetForwardPFlowJvtTool.h:83
JetForwardPFlowJvtTool::m_neutMaxRap
Gaudi::Property< double > m_neutMaxRap
Definition: JetForwardPFlowJvtTool.h:144
JetForwardPFlowJvtTool::getRpt
double getRpt(const xAOD::Jet *jet) const
Definition: JetForwardPFlowJvtTool.cxx:371
xAOD::FlowElement_v1::p4
virtual FourMom_t p4() const override
The full 4-momentum of the particle.
Definition: FlowElement_v1.cxx:33
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
IJetDecorator::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jets) const =0
Decorate a jet collection without otherwise modifying it.
JetForwardPFlowJvtTool::m_centerMaxPt
Gaudi::Property< double > m_centerMaxPt
Definition: JetForwardPFlowJvtTool.h:138
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
JetForwardPFlowJvtTool::m_maxRap
Gaudi::Property< double > m_maxRap
Definition: JetForwardPFlowJvtTool.h:143
JetForwardPFlowJvtTool::m_isHSKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_isHSKey
Definition: JetForwardPFlowJvtTool.h:163
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
JetForwardPFlowJvtTool::m_PFOKey
SG::ReadHandleKey< xAOD::PFOContainer > m_PFOKey
Definition: JetForwardPFlowJvtTool.h:153
JetForwardPFlowJvtTool::m_etaThresh
Gaudi::Property< double > m_etaThresh
Definition: JetForwardPFlowJvtTool.h:134
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
createCoolChannelIdFile.newname
newname
Definition: createCoolChannelIdFile.py:106
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
JetForwardPFlowJvtTool::buildPFlowPUjets
pflow::puJets buildPFlowPUjets(const xAOD::Vertex &vx) const
Definition: JetForwardPFlowJvtTool.cxx:188
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
JetForwardPFlowJvtTool::getFJVT
float getFJVT(const xAOD::Jet *jet, const std::vector< TVector2 > &pileupMomenta) const
Definition: JetForwardPFlowJvtTool.cxx:123
xAOD::PFO_v1::GetVertexCorrectedEMFourVec
TLorentzVector GetVertexCorrectedEMFourVec(const xAOD::Vertex &vertexToCorrectTo) const
Correct EM scale 4-vector to point at a vertex.
Definition: PFO_v1.cxx:737
SG::DataProxy
Definition: DataProxy.h:45
FEHelpers::getVertexCorrectedFourVec
TLorentzVector getVertexCorrectedFourVec(const xAOD::FlowElement &fe, const xAOD::Vertex &vertexToCorrectTo)
Definition: FEHelpers.cxx:13
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::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
CP::charged
@ charged
Definition: Reconstruction/PFlow/PFlowUtils/PFlowUtils/PFODefs.h:11
JetForwardPFlowJvtTool::m_orKey
SG::ReadDecorHandleKey< xAOD::PFO > m_orKey
Definition: JetForwardPFlowJvtTool.h:158
fitman.k
k
Definition: fitman.py:528
xAOD::FlowElement_v1
A detector object made of other lower level object(s)
Definition: FlowElement_v1.h:25