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

Algorithm that applies background subtraction to clusters. The subtraction needs to be handled separately from the making. The unsubtracted clusters are inputs into the jet finding which in turn defines the background (HIEventShapeContainer). More...

#include <HIClusterSubtraction.h>

Inheritance diagram for HIClusterSubtraction:
Collaboration diagram for HIClusterSubtraction:

Public Member Functions

 HIClusterSubtraction (const std::string &name)
 
virtual StatusCode initialize ()
 Dummy implementation of the initialisation function. More...
 
virtual ~HIClusterSubtraction ()
 
virtual int execute () const
 Method to be called for each event. More...
 
bool doOriginCorrection (xAOD::CaloCluster *cl, const xAOD::Vertex *origin, xAOD::IParticle::FourMom_t &p4_cl) 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 int inputContainerNames (std::vector< std::string > &connames)
 Method to return the list of input containers. More...
 
virtual int outputContainerNames (std::vector< std::string > &connames)
 Method to return the list of output containers. 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...
 

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

SG::ReadHandleKey< xAOD::CaloClusterContainerm_inClusterKey { this, "ClusterKey", "ClusterKey", "Name of the input Cluster Container"}
 Name of input cluster container. More...
 
SG::WriteHandleKey< xAOD::CaloClusterContainerm_outClusterKey { this, "OutClusterKey", "OutClusterKey", "Name of the output Cluster Container (deep Copy)"}
 |brief New writeHandleKey to store the shallow copy used for new CaloClusterTreatment More...
 
SG::ReadHandleKey< xAOD::HIEventShapeContainerm_eventShapeKey { this, "EventShapeKey", "EventShapeKey", "Name of HIEventShapeContainer defining background"}
 Name of HIEventShapeContainer defining background. More...
 
SG::ReadHandleKey< xAOD::VertexContainerm_vertexContainer { this, "VertexContainer", "PrimaryVertices", "Vertex container for primary vertices"}
 |brief Name of Vertex Container for origin correction More...
 
ToolHandle< IHISubtractorToolm_subtractorTool { this, "Subtractor", "HIJetSubtractorToolBase", "Handle to IHISubtractorTool which does calculates subtracted kinematics" }
 
ToolHandle< IHIUEModulatorToolm_modulatorTool { this, "Modulator" , "HIUEModulatorTool" , "Handle to IHIModulatorTool" }
 
ToolHandle< IHIEventShapeMapToolm_eventShapeMapTool { this, "EventShapeMapTool", "HIEventShapeMapTool", "Handle to Event Shape Map Tool"}
 
ToolHandleArray< CaloClusterCollectionProcessorm_clusterCorrectionTools { this, "ClusterCorrectionTools", {}, "" }
 
Gaudi::Property< bool > m_setMoments { this, "SetMoments", true, "Set Moments boolean switch"}
 
Gaudi::Property< bool > m_updateMode { this, "UpdateOnly", false, "Update Mode boolean switch"}
 
Gaudi::Property< bool > m_originCorrection { this, "ApplyOriginCorrection", false, "Apply Origin Correction boolean switch"}
 
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

Algorithm that applies background subtraction to clusters. The subtraction needs to be handled separately from the making. The unsubtracted clusters are inputs into the jet finding which in turn defines the background (HIEventShapeContainer).

Author
Aaron Angerami anger.nosp@m.ami@.nosp@m.cern..nosp@m.ch
Date
Jan, 2015

Definition at line 38 of file HIClusterSubtraction.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

◆ HIClusterSubtraction()

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

Definition at line 22 of file HIClusterSubtraction.cxx.

22  : asg::AsgTool(name)//,
23 {
24 }

◆ ~HIClusterSubtraction()

virtual HIClusterSubtraction::~HIClusterSubtraction ( )
inlinevirtual

Definition at line 45 of file HIClusterSubtraction.h.

45 {};

Member Function Documentation

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

◆ 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; }

◆ doOriginCorrection()

bool HIClusterSubtraction::doOriginCorrection ( xAOD::CaloCluster cl,
const xAOD::Vertex origin,
xAOD::IParticle::FourMom_t p4_cl 
) const

Definition at line 46 of file HIClusterSubtraction.cxx.

46  {
47  //made boolean to return what was "missingMoment" in HIJetConstituentSubtractionTool
48  bool missingMoment = false;
49  float mag = 0;
50  static const SG::ConstAccessor<float> HIMagAcc("HIMag");
51  if(HIMagAcc.isAvailable(*cl)) mag=HIMagAcc(*cl);
52  else
53  {
54  double cm_mag=0;
55  if(cl->retrieveMoment (xAOD::CaloCluster::CENTER_MAG, cm_mag)) mag=cm_mag;
56  }
57  if(mag!=0.)
58  {
59  float eta0=cl->eta0();
60  float phi0=cl->phi0();
61  float radius=mag/std::cosh(eta0);
63  p4_pos.SetX(radius*std::cos(phi0)-origin->x());
64  p4_pos.SetY(radius*std::sin(phi0)-origin->y());
65  p4_pos.SetZ(radius*std::sinh(eta0)-origin->z());
66 
67  double deta=p4_pos.Eta()-eta0;
68  double dphi=p4_pos.Phi()-phi0;
69  //adjust in case eta/phi are flipped in case of neg E clusters
70  //this method is agnostic wrt convention
71  if(p4_cl.Eta()*eta0 <0.) deta*=-1;
72 
73  double eta_prime=p4_cl.Eta()+deta;
74  double phi_prime=p4_cl.Phi()+dphi;
75  double e_subtr=p4_cl.E();
76  p4_cl.SetPtEtaPhiE(e_subtr/std::cosh(eta_prime),eta_prime,phi_prime,e_subtr);
77  }
78  else missingMoment=true;
79 
80  return missingMoment;
81 }

◆ 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; }

◆ execute()

int HIClusterSubtraction::execute ( ) const
virtual

Method to be called for each event.

Returns 0 for success.

Implements IJetExecuteTool.

Definition at line 83 of file HIClusterSubtraction.cxx.

84 {
85  //const jet::cellset_t & badcells = badCellMap.cells() ;
86  //retrieve UE
87  const xAOD::HIEventShapeContainer* shape = 0;
89  shape = readHandleEvtShape.cptr();
90  const HIEventShapeIndex* es_index = m_eventShapeMapTool->getIndexFromShape( shape );
91  if(es_index == nullptr) ATH_MSG_FATAL("The HIEventShapeMapTool returned a null pointer. Binning scheme not coherent");
92  const xAOD::HIEventShape* eshape = nullptr;
93  CHECK(m_modulatorTool->getShape(eshape), 1);
94 
95  //New implementation: make a deep copy of original HIClusters and apply subtraction to clusters in the new container
97  // Now a handle to write the deep Copy
98  SG::WriteHandle<xAOD::CaloClusterContainer> writeHandleDeepCopyClusters ( m_outClusterKey );
99  // Preparing keys and container to perfrom the origin correction
100  const xAOD::Vertex* primVertex=nullptr;
101  const xAOD::VertexContainer* vertices=nullptr;
102  // Boolean to flag that at least a vertex is present in the vertex container
103  bool isOriginPossible = true;
104  // Finding the primary vertex in case origin correction has to be performed
106  {
107  // ReadHandle to retrieve the vertex container
108  SG::ReadHandle<xAOD::VertexContainer> readHandleVertexContainer ( m_vertexContainer );
109  vertices = readHandleVertexContainer.get();
110  for (const auto *vertice : *vertices)
111  {
112  if(vertice->vertexType() == xAOD::VxType::PriVtx)
113  {
114  primVertex=vertice;
115  break;
116  }
117  }
118  if(!primVertex && vertices->size() > 0)
119  {
120  ATH_MSG_WARNING("No primary vertices found, using first in container");
121  primVertex=vertices->at(0);
122  }
123  if(!primVertex && vertices->size() == 0)
124  {
125  ATH_MSG_WARNING("No primary vertices found, and vertex container empty. Abortin Origin correction for this event.");
126  isOriginPossible = false;
127  }
128  }
129  bool missingMoment=false;
130 
131  const auto *originalCluster = readHandleClusters.cptr();
132  // Create the new container and its auxiliary store.
135  copyClusters->setStore(copyClustersAux);
136  copyClusters->reserve (originalCluster->size());
137 
138  for (const xAOD::CaloCluster* oldCluster : *originalCluster) {
139  xAOD::CaloCluster* newClu=new xAOD::CaloCluster();
140  copyClusters->push_back (newClu);
141  *newClu=*oldCluster;
142  }
143 
144  for(xAOD::CaloClusterContainer::iterator itr=copyClusters->begin(); itr!=copyClusters->end(); ++itr)
145  {
146  xAOD::CaloCluster* cl= *itr;
148  //Unsubtracted state record done by the subtractor tool functions.
149  if(m_setMoments)
150  {
151  //This flag is set to false for HIJetClustersSubtractorTool and true for HIJetCellSubtractorTool,
152  // but for the second we don't do origin correction. In principle the code is structured to do the same as the
153  //else for m_setMoments=true and HIJetClustersSubtractorTool, therefore we add the code for origin correction also here
154  m_subtractorTool->subtractWithMoments(cl, shape, es_index, m_modulatorTool, eshape);
155  if(isOriginPossible && m_originCorrection)
156  {
157  missingMoment = HIClusterSubtraction::doOriginCorrection( cl, primVertex, p4 );
159  }
160  }
161  else
162  {
163  m_subtractorTool->subtract(p4,cl,shape,es_index,m_modulatorTool,eshape);
165 
166  if(isOriginPossible && m_originCorrection)
167  {
168  ATH_MSG_DEBUG("Applying origin correction"
169  << std::setw(12) << "Before:"
170  << std::setw(10) << std::setprecision(3) << p4.Pt()*1e-3
171  << std::setw(10) << std::setprecision(3) << p4.Eta()
172  << std::setw(10) << std::setprecision(3) << p4.Phi()
173  << std::setw(10) << std::setprecision(3) << p4.E()*1e-3
174  << std::setw(10) << std::setprecision(3) << p4.M()*1e-3);
175 
176  missingMoment = HIClusterSubtraction::doOriginCorrection( cl, primVertex, p4 );
178 
179  ATH_MSG_DEBUG("Applying origin correction"
180  << std::setw(12) << "After:"
181  << std::setw(10) << std::setprecision(3) << p4.Pt()*1e-3
182  << std::setw(10) << std::setprecision(3) << p4.Eta()
183  << std::setw(10) << std::setprecision(3) << p4.Phi()
184  << std::setw(10) << std::setprecision(3) << p4.E()*1e-3
185  << std::setw(10) << std::setprecision(3) << p4.M()*1e-3);
186  }
187  }
188  }//End of iterator over CaloClusterContainer
189 
190  for(const auto & clusterCorrectionTool : m_clusterCorrectionTools)
191  {
192  ATH_MSG_DEBUG(" Applying correction = " << clusterCorrectionTool->name() );
193  CHECK(clusterCorrectionTool->execute(Gaudi::Hive::currentContext(), copyClusters), 1);
194  }//End loop over correction tools
195 
196  if(missingMoment) ATH_MSG_WARNING("No origin correction applied, CENTERMAG missing");
197 
198  // Make sure that memory is managed safely
199  std::unique_ptr<xAOD::CaloClusterContainer> outClusters(copyClusters);
200  std::unique_ptr<xAOD::CaloClusterAuxContainer> deepAux(copyClustersAux);
201 
202  if(writeHandleDeepCopyClusters.record ( std::move(outClusters), std::move(deepAux)).isFailure() ){
203  ATH_MSG_ERROR("Unable to write DeepCopy Copy containers for subtracted clusters with key: " << m_outClusterKey.key());
204  return 1;
205  }
206  return 0;
207 }

◆ 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

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

◆ initialize()

StatusCode HIClusterSubtraction::initialize ( )
virtual

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.

Definition at line 28 of file HIClusterSubtraction.cxx.

29 {
30  //Keys initialization
31  ATH_CHECK( m_eventShapeKey.initialize() );
34  //Vertex container needs to be initialized only if origin correction will take place
36 
37  for (const auto& tool : m_clusterCorrectionTools)
38  {
39  StatusCode sc = tool.retrieve();
40  if (sc.isFailure()) ATH_MSG_ERROR("Failed to retrieve correction tool " << tool);
41  else ATH_MSG_DEBUG("Successfully retrieved correction tool " << tool);
42  }
43  return StatusCode::SUCCESS;
44 }

◆ inputContainerNames()

int IJetExecuteTool::inputContainerNames ( std::vector< std::string > &  connames)
virtualinherited

Method to return the list of input containers.

The names of required input containers are appended to connames. Returns nonzero for error. Default returns 0 and adds no names.

Reimplemented in JetRecTool.

Definition at line 11 of file IJetExecuteTool.cxx.

11  {
12  return 0;
13 }

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

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

◆ outputContainerNames()

int IJetExecuteTool::outputContainerNames ( std::vector< std::string > &  connames)
virtualinherited

Method to return the list of output containers.

The names of produced output containers are appended to connames. Returns nonzero for error. Default returns 0 and adds no names.

Reimplemented in JetRecTool.

Definition at line 17 of file IJetExecuteTool.cxx.

17  {
18  return 0;
19 }

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

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

◆ 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_clusterCorrectionTools

ToolHandleArray<CaloClusterCollectionProcessor> HIClusterSubtraction::m_clusterCorrectionTools { this, "ClusterCorrectionTools", {}, "" }
private

Definition at line 66 of file HIClusterSubtraction.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_eventShapeKey

SG::ReadHandleKey< xAOD::HIEventShapeContainer > HIClusterSubtraction::m_eventShapeKey { this, "EventShapeKey", "EventShapeKey", "Name of HIEventShapeContainer defining background"}
private

Name of HIEventShapeContainer defining background.

Definition at line 58 of file HIClusterSubtraction.h.

◆ m_eventShapeMapTool

ToolHandle<IHIEventShapeMapTool> HIClusterSubtraction::m_eventShapeMapTool { this, "EventShapeMapTool", "HIEventShapeMapTool", "Handle to Event Shape Map Tool"}
private

Definition at line 65 of file HIClusterSubtraction.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_inClusterKey

SG::ReadHandleKey< xAOD::CaloClusterContainer > HIClusterSubtraction::m_inClusterKey { this, "ClusterKey", "ClusterKey", "Name of the input Cluster Container"}
private

Name of input cluster container.

Definition at line 54 of file HIClusterSubtraction.h.

◆ m_modulatorTool

ToolHandle<IHIUEModulatorTool> HIClusterSubtraction::m_modulatorTool { this, "Modulator" , "HIUEModulatorTool" , "Handle to IHIModulatorTool" }
private

Definition at line 64 of file HIClusterSubtraction.h.

◆ m_originCorrection

Gaudi::Property< bool > HIClusterSubtraction::m_originCorrection { this, "ApplyOriginCorrection", false, "Apply Origin Correction boolean switch"}
private

Definition at line 72 of file HIClusterSubtraction.h.

◆ m_outClusterKey

SG::WriteHandleKey< xAOD::CaloClusterContainer > HIClusterSubtraction::m_outClusterKey { this, "OutClusterKey", "OutClusterKey", "Name of the output Cluster Container (deep Copy)"}
private

|brief New writeHandleKey to store the shallow copy used for new CaloClusterTreatment

Definition at line 56 of file HIClusterSubtraction.h.

◆ m_setMoments

Gaudi::Property< bool > HIClusterSubtraction::m_setMoments { this, "SetMoments", true, "Set Moments boolean switch"}
private

Definition at line 69 of file HIClusterSubtraction.h.

◆ m_subtractorTool

ToolHandle<IHISubtractorTool> HIClusterSubtraction::m_subtractorTool { this, "Subtractor", "HIJetSubtractorToolBase", "Handle to IHISubtractorTool which does calculates subtracted kinematics" }
private

Definition at line 63 of file HIClusterSubtraction.h.

◆ m_updateMode

Gaudi::Property< bool > HIClusterSubtraction::m_updateMode { this, "UpdateOnly", false, "Update Mode boolean switch"}
private

Definition at line 70 of file HIClusterSubtraction.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vertexContainer

SG::ReadHandleKey< xAOD::VertexContainer > HIClusterSubtraction::m_vertexContainer { this, "VertexContainer", "PrimaryVertices", "Vertex container for primary vertices"}
private

|brief Name of Vertex Container for origin correction

Definition at line 60 of file HIClusterSubtraction.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
xAOD::CaloCluster_v1::CENTER_MAG
@ CENTER_MAG
Cluster Centroid ( )
Definition: CaloCluster_v1.h:135
HIClusterSubtraction::m_inClusterKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_inClusterKey
Name of input cluster container.
Definition: HIClusterSubtraction.h:54
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
xAOD::Vertex_v1::x
float x() const
Returns the x position.
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
HIClusterSubtraction::m_originCorrection
Gaudi::Property< bool > m_originCorrection
Definition: HIClusterSubtraction.h:72
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
HIClusterSubtraction::m_vertexContainer
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainer
|brief Name of Vertex Container for origin correction
Definition: HIClusterSubtraction.h:60
HIJetRec::subtractedOriginCorrectedClusterState
constexpr xAOD::CaloCluster::State subtractedOriginCorrectedClusterState()
Definition: HIJetRecDefs.h:27
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
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
DataVector::get
const T * get(size_type n) const
Access an element, as an rvalue.
HIClusterSubtraction::m_setMoments
Gaudi::Property< bool > m_setMoments
Definition: HIClusterSubtraction.h:69
SG::ConstAccessor< float >
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
HIClusterSubtraction::m_outClusterKey
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_outClusterKey
|brief New writeHandleKey to store the shallow copy used for new CaloClusterTreatment
Definition: HIClusterSubtraction.h:56
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:69
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
xAOD::HIEventShape_v2
Interface class for the HI reconstruction EDM.
Definition: HIEventShape_v2.h:32
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
xAOD::CaloClusterContainer
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloClusterContainer.h:17
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
HIJetRec::subtractedClusterState
constexpr xAOD::CaloCluster::State subtractedClusterState()
Definition: HIJetRecDefs.h:26
HIClusterSubtraction::m_eventShapeMapTool
ToolHandle< IHIEventShapeMapTool > m_eventShapeMapTool
Definition: HIClusterSubtraction.h:65
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
HIClusterSubtraction::m_clusterCorrectionTools
ToolHandleArray< CaloClusterCollectionProcessor > m_clusterCorrectionTools
Definition: HIClusterSubtraction.h:66
python.xAODType.dummy
dummy
Definition: xAODType.py:4
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
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
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
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
HIClusterSubtraction::m_subtractorTool
ToolHandle< IHISubtractorTool > m_subtractorTool
Definition: HIClusterSubtraction.h:63
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
xAOD::CaloClusterAuxContainer_v2
Auxiliary container for calorimeter cluster containers.
Definition: CaloClusterAuxContainer_v2.h:30
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
xAOD::CaloClusterAuxContainer
CaloClusterAuxContainer_v2 CaloClusterAuxContainer
Define the latest version of the calorimeter cluster auxiliary container.
Definition: CaloClusterAuxContainer.h:16
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
HIEventShapeIndex
Definition: HIEventShapeIndex.h:16
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
HIClusterSubtraction::doOriginCorrection
bool doOriginCorrection(xAOD::CaloCluster *cl, const xAOD::Vertex *origin, xAOD::IParticle::FourMom_t &p4_cl) const
Definition: HIClusterSubtraction.cxx:46
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::Vertex_v1::y
float y() const
Returns the y position.
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
HIClusterSubtraction::m_eventShapeKey
SG::ReadHandleKey< xAOD::HIEventShapeContainer > m_eventShapeKey
Name of HIEventShapeContainer defining background.
Definition: HIClusterSubtraction.h:58
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
SG::DataProxy
Definition: DataProxy.h:45
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:26
HIJetRec::setClusterP4
void setClusterP4(const xAOD::CaloCluster::FourMom_t &p, xAOD::CaloCluster *cl, xAOD::CaloCluster::State s)
Definition: HIJetRecDefs.h:36
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
HIClusterSubtraction::m_modulatorTool
ToolHandle< IHIUEModulatorTool > m_modulatorTool
Definition: HIClusterSubtraction.h:64