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::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 87 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 32 of file JetForwardPFlowJvtTool.cxx.

32  :
33  AsgTool(name) {
34  }

◆ ~JetForwardPFlowJvtTool()

JetForwardPFlowJvtTool::~JetForwardPFlowJvtTool ( )
virtualdefault

Destructor:

Member Function Documentation

◆ buildPFlowPUjets()

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

Definition at line 186 of file JetForwardPFlowJvtTool.cxx.

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

◆ calculateVertexMomenta()

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

Reimplemented in JetBalancePFlowJvtTool.

Definition at line 131 of file JetForwardPFlowJvtTool.cxx.

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

◆ 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 91 of file JetForwardPFlowJvtTool.cxx.

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

◆ 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 324 of file JetForwardPFlowJvtTool.cxx.

324  {
325  TLorentzVector fe_p4;
326  if (CP::charged == theCharge){
327  float pweight = m_weight;
328  if( (m_wpfotool->fillWeight(*fe,pweight)).isSuccess() ){
329  // Create a Peeudojet with the momentum of the selected IParticle
330  fe_p4= TLorentzVector(fe->p4().Px()*pweight,fe->p4().Py()*pweight,fe->p4().Pz()*pweight,fe->e()*pweight);
331  }
332  } else if (CP::neutral == theCharge){
333  fe_p4=FEHelpers::getVertexCorrectedFourVec(*fe, *vx);
334  }
335  fastjet::PseudoJet psj(fe_p4);
336  // User index is used to identify the xAOD object used for the PseudoJet
337  if (CP::charged == theCharge){
338  psj.set_user_index(fe->index());
339  }else{
340  psj.set_user_index(-1);
341  }
342 
343  return psj;
344  }

◆ getFJVT()

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

Definition at line 121 of file JetForwardPFlowJvtTool.cxx.

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

◆ 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 364 of file JetForwardPFlowJvtTool.cxx.

364  {
365  if (m_includePV) return -1;
366 
367  //const xAOD::VertexContainer *vxCont = 0;
369  ATH_MSG_DEBUG("Successfully retrieved primary vertex container");
370  for(const xAOD::Vertex *vx : *vxContHandle) {
371  if(vx->vertexType()==xAOD::VxType::PriVtx) return vx->index();
372  }
373  // If no verticies are found in the event the Primary Vertex container will just contain a dummy vertex and no primary vertex
374  if(vxContHandle->empty() ){
375  ATH_MSG_ERROR("Primary vertex container is empty ");
376  } else if(vxContHandle->size() != 1 ){
377  ATH_MSG_WARNING("Couldn't identify the hard-scatter primary vertex (no vertex with \"vx->vertexType()==xAOD::VxType::PriVtx\" in the container)! ");
378  }
379  // this almost certainly isn't what we should do here, the
380  // caller doesn't check this for errors
381  return 0;
382  }

◆ getRpt()

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

Definition at line 358 of file JetForwardPFlowJvtTool.cxx.

358  {
359  double Rpt;
360  Rpt= jet->jetP4(m_jetchargedp4).Pt()/ jet->pt();
361  return Rpt;
362  }

◆ hasCloseByHSjet()

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

Definition at line 176 of file JetForwardPFlowJvtTool.cxx.

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

◆ 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 43 of file JetForwardPFlowJvtTool.cxx.

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

◆ 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 352 of file JetForwardPFlowJvtTool.cxx.

352  {
353  if (std::abs(jet->eta())>m_etaThresh) return false;
354  if (jet->pt()<m_centerMinPt || (m_centerMaxPt>0 && jet->pt()>m_centerMaxPt)) return false;
355  return true;
356  }

◆ isForwardJet()

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

Definition at line 346 of file JetForwardPFlowJvtTool.cxx.

346  {
347  if (std::abs(jet->eta())<m_etaThresh) return false;
348  if (jet->pt()<m_forwardMinPt || (m_forwardMaxPt>0 && jet->pt()>m_forwardMaxPt) ) return false;
349  return true;
350  }

◆ 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 302 of file JetForwardPFlowJvtTool.cxx.

302  {
303  TLorentzVector pfo_p4;
304  if (CP::charged == theCharge){
305  float pweight = m_weight;
306  if( (m_wpfotool->fillWeight(*pfo,pweight)).isSuccess() ){
307  // Create a PSeudojet with the momentum of the selected IParticle
308  pfo_p4= TLorentzVector(pfo->p4().Px()*pweight,pfo->p4().Py()*pweight,pfo->p4().Pz()*pweight,pfo->e()*pweight);
309  }
310  } else if (CP::neutral == theCharge){
311  pfo_p4= pfo->GetVertexCorrectedEMFourVec(*vx);
312  }
313  fastjet::PseudoJet psj(pfo_p4);
314  // User index is used to identify the xAOD object used for the PSeudoJet
315  if (CP::charged == theCharge){
316  psj.set_user_index(pfo->index());
317  }else{
318  psj.set_user_index(-1);
319  }
320 
321  return psj;
322  }

◆ 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 384 of file JetForwardPFlowJvtTool.cxx.

384  {
387 
388  for(const xAOD::Jet *jet : *jets) {
389  bool ishs = false;
390  bool ispu = true;
391  for(const xAOD::Jet *tjet : *truthJets) {
392  if (tjet->p4().DeltaR(jet->p4())<0.3 && tjet->pt()>10e3) ishs = true;
393  if (tjet->p4().DeltaR(jet->p4())<0.6) ispu = false;
394  }
395  isHSHandle(*jet)=ishs;
396  isPUHandle(*jet)=ispu;
397  }
398  return StatusCode::SUCCESS;
399  }

◆ 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 136 of file JetForwardPFlowJvtTool.h.

◆ m_centerMinPt

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

Definition at line 135 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 140 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 132 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 152 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 158 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 159 of file JetForwardPFlowJvtTool.h.

◆ m_fjvtThresh

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

Definition at line 137 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 134 of file JetForwardPFlowJvtTool.h.

◆ m_forwardMinPt

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

Definition at line 133 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 131 of file JetForwardPFlowJvtTool.h.

◆ m_isdata

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

Definition at line 128 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 160 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 161 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 126 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 124 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 125 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 139 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 141 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 142 of file JetForwardPFlowJvtTool.h.

◆ m_orFEKey

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

Definition at line 156 of file JetForwardPFlowJvtTool.h.

◆ m_orKey

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

Definition at line 155 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 154 of file JetForwardPFlowJvtTool.h.

◆ m_pfoJES

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

Definition at line 164 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 151 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 129 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 138 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 144 of file JetForwardPFlowJvtTool.h.

◆ m_tvaKey

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

Definition at line 123 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 130 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 150 of file JetForwardPFlowJvtTool.h.

◆ m_weight

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

Definition at line 143 of file JetForwardPFlowJvtTool.h.

◆ m_wpfotool

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

Definition at line 163 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:131
pflow::puJets::jetAuxCont
std::shared_ptr< xAOD::JetAuxContainer > jetAuxCont
Definition: JetForwardPFlowJvtTool.h:83
JetForwardPFlowJvtTool::isForwardJet
bool isForwardJet(const xAOD::Jet *jet) const
Definition: JetForwardPFlowJvtTool.cxx:346
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
JetForwardPFlowJvtTool::m_centerMinPt
Gaudi::Property< double > m_centerMinPt
Definition: JetForwardPFlowJvtTool.h:135
perp
Scalar perp() const
perp method - perpenticular length
Definition: AmgMatrixBasePlugin.h:35
JetForwardPFlowJvtTool::pfoToPseudoJet
fastjet::PseudoJet pfoToPseudoJet(const xAOD::PFO *pfo, const CP::PFO_JetMETConfig_charge &theCharge, const xAOD::Vertex *vx) const
Definition: JetForwardPFlowJvtTool.cxx:302
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
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:176
JetForwardPFlowJvtTool::m_jetContainerName
Gaudi::Property< std::string > m_jetContainerName
Definition: JetForwardPFlowJvtTool.h:124
JetForwardPFlowJvtTool::m_pvind
Gaudi::Property< int > m_pvind
Definition: JetForwardPFlowJvtTool.h:129
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:123
JetForwardPFlowJvtTool::m_weight
Gaudi::Property< float > m_weight
Definition: JetForwardPFlowJvtTool.h:143
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
JetForwardPFlowJvtTool::m_includePV
Gaudi::Property< bool > m_includePV
Definition: JetForwardPFlowJvtTool.h:131
JetForwardPFlowJvtTool::m_wpfotool
ToolHandle< CP::WeightPFOTool > m_wpfotool
Definition: JetForwardPFlowJvtTool.h:163
JetForwardPFlowJvtTool::m_pfoJES
ToolHandle< IJetCalibrationTool > m_pfoJES
Definition: JetForwardPFlowJvtTool.h:164
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
JetForwardPFlowJvtTool::m_vertices
Gaudi::Property< int > m_vertices
Definition: JetForwardPFlowJvtTool.h:130
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
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:161
JetForwardPFlowJvtTool::m_jetchargedp4
Gaudi::Property< std::string > m_jetchargedp4
Definition: JetForwardPFlowJvtTool.h:126
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition: AsgTool.cxx:58
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
AthCommonDataStore
Definition: AthCommonDataStore.h:52
pflow::puJets::jetCont
std::shared_ptr< xAOD::JetContainer > jetCont
Definition: JetForwardPFlowJvtTool.h:82
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::getPV
std::size_t getPV() const
Definition: JetForwardPFlowJvtTool.cxx:364
lumiFormat.i
int i
Definition: lumiFormat.py:92
JetForwardPFlowJvtTool::m_passJvtKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_passJvtKey
Definition: JetForwardPFlowJvtTool.h:154
JetForwardPFlowJvtTool::m_jetsName
Gaudi::Property< std::string > m_jetsName
Definition: JetForwardPFlowJvtTool.h:125
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:99
JetForwardPFlowJvtTool::m_fjvtRawKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_fjvtRawKey
Definition: JetForwardPFlowJvtTool.h:159
JetForwardPFlowJvtTool::m_fjvtKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_fjvtKey
Definition: JetForwardPFlowJvtTool.h:158
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:324
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:150
python.xAODType.dummy
dummy
Definition: xAODType.py:4
JetForwardPFlowJvtTool::m_dzCut
Gaudi::Property< double > m_dzCut
Definition: JetForwardPFlowJvtTool.h:140
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:138
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:352
JetForwardPFlowJvtTool::m_FEKey
SG::ReadHandleKey< xAOD::FlowElementContainer > m_FEKey
Definition: JetForwardPFlowJvtTool.h:152
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:134
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:192
JetForwardPFlowJvtTool::m_tightOP
Gaudi::Property< bool > m_tightOP
Definition: JetForwardPFlowJvtTool.h:144
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:133
xAOD::JetAlgorithmType::antikt_algorithm
@ antikt_algorithm
Definition: JetContainerInfo.h:33
JetForwardPFlowJvtTool::m_orFEKey
SG::ReadDecorHandleKey< xAOD::FlowElement > m_orFEKey
Definition: JetForwardPFlowJvtTool.h:156
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:137
pflow::puJets
Definition: JetForwardPFlowJvtTool.h:81
JetForwardPFlowJvtTool::m_neutMaxRap
Gaudi::Property< double > m_neutMaxRap
Definition: JetForwardPFlowJvtTool.h:142
JetForwardPFlowJvtTool::getRpt
double getRpt(const xAOD::Jet *jet) const
Definition: JetForwardPFlowJvtTool.cxx:358
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:136
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
JetForwardPFlowJvtTool::m_maxRap
Gaudi::Property< double > m_maxRap
Definition: JetForwardPFlowJvtTool.h:141
JetForwardPFlowJvtTool::m_isHSKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_isHSKey
Definition: JetForwardPFlowJvtTool.h:160
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
JetForwardPFlowJvtTool::m_PFOKey
SG::ReadHandleKey< xAOD::PFOContainer > m_PFOKey
Definition: JetForwardPFlowJvtTool.h:151
JetForwardPFlowJvtTool::m_etaThresh
Gaudi::Property< double > m_etaThresh
Definition: JetForwardPFlowJvtTool.h:132
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
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:790
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
JetForwardPFlowJvtTool::buildPFlowPUjets
pflow::puJets buildPFlowPUjets(const xAOD::Vertex &vx) const
Definition: JetForwardPFlowJvtTool.cxx:186
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:121
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:44
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:155
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