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

This algorithm copies TileDigits from input container to output container keeping only channels with (max-min) sample above threshold. More...

#include <TileDigitsFilter.h>

Inheritance diagram for TileDigitsFilter:
Collaboration diagram for TileDigitsFilter:

Public Member Functions

 TileDigitsFilter (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~TileDigitsFilter ()
 
virtual StatusCode initialize () override
 initialize method More...
 
virtual StatusCode execute (const EventContext &ctx) const override
 execute method More...
 
virtual StatusCode finalize () override
 finalize method More...
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

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

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

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< TileDigitsContainerm_inputDigitsContainerKey
 
SG::WriteHandleKey< TileDigitsContainerm_outputDigitsContainerKey
 
SG::ReadHandleKey< TileRawChannelContainerm_inputRawChannelContainerKey
 
SG::WriteHandleKey< TileRawChannelContainerm_outputRawChannelContainerKey
 
Gaudi::Property< int > m_lowGainThreashold
 
Gaudi::Property< int > m_highGainThreashold
 
const TileHWIDm_tileHWID
 
ServiceHandle< TileCablingSvcm_cablingSvc
 Name of Tile cabling service. More...
 
int m_threshold [2] {}
 Threshold value for low and high gain. More...
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
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

This algorithm copies TileDigits from input container to output container keeping only channels with (max-min) sample above threshold.

Definition at line 55 of file TileDigitsFilter.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TileDigitsFilter()

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

Definition at line 37 of file TileDigitsFilter.cxx.

38  : AthReentrantAlgorithm(name, pSvcLocator)
39  , m_tileHWID(0)
40 {
41 }

◆ ~TileDigitsFilter()

TileDigitsFilter::~TileDigitsFilter ( )
virtual

Definition at line 43 of file TileDigitsFilter.cxx.

43  {
44 }

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode TileDigitsFilter::execute ( const EventContext &  ctx) const
overridevirtual

execute method

Definition at line 93 of file TileDigitsFilter.cxx.

93  {
94 
95  ATH_MSG_DEBUG( "in execute()" );
96 
97  int digCounter = 0;
98  int rchCounter = 0;
99 
100 
101  // Create new container for filtered digits
102  auto outputCont = std::make_unique<TileDigitsContainer>(false, SG::VIEW_ELEMENTS);
103  if (!outputCont) {
104  ATH_MSG_FATAL( "Could not create a new TileDigitsContainer instance as requested!" );
105  return StatusCode::FAILURE;
106  }
107 
108  // Initialize iterators to some dummy values
109  TileDigitsContainer::const_iterator collItr, lastColl;
110  collItr = lastColl = outputCont->end();
111 
112  // Get digit container from TES
113  if (!m_inputDigitsContainerKey.key().empty()) {
115 
116  if (inputDigitsContainer.isValid()) {
117  collItr = inputDigitsContainer->begin();
118  lastColl = inputDigitsContainer->end();
119  } else {
120  ATH_MSG_WARNING( "can't retrieve TileDigitsContainer with name '"
121  << m_inputDigitsContainerKey.key() << "' from TDS" );
122  }
123 
124  }
125 
126  TileRawChannelContainer::const_iterator firstRchColl, lastRchColl, collRchItr;
129  bool emptyRch = true;
130 
131  // Get rawChannel container from TES
132  if (!m_inputRawChannelContainerKey.key().empty()) {
134 
135  if (inputRawChannelContainer.isValid()) {
136  collRchItr = firstRchColl = inputRawChannelContainer->begin();
137  lastRchColl = inputRawChannelContainer->end();
138  emptyRch = (firstRchColl == lastRchColl);
139  type = inputRawChannelContainer->get_type();
140  unit = inputRawChannelContainer->get_unit();
141  } else {
142  ATH_MSG_WARNING( "can't retrieve TileRawChannelContainer with name '"
143  << m_inputRawChannelContainerKey.key() << "' from TDS" );
144  }
145 
146  }
147 
148  // Create new container for filtered raw channels
149  auto outRchCont = std::make_unique<TileRawChannelContainer>(false, type, unit, SG::VIEW_ELEMENTS);
150 
151  // Iterate over all collections (drawers)
152  for (; collItr != lastColl; ++collItr) {
153 
154  const TileDigitsCollection* coll = *collItr;
155  std::set<HWIdentifier> ids;
156 
157  auto outColl = std::make_unique<ConstDataVector<TileDigitsCollection> >
158  (SG::VIEW_ELEMENTS, coll->identify());
159 
160  // Iterate over all digits in this collection
161  for (const TileDigits* digit : *coll) {
162  float smin = 99999., smax = -99999.;
163  for (float samp : digit->samples()) {
164  smin = std::min(samp, smin);
165  smax = std::max(samp, smax);
166  }
167  HWIdentifier adcId = digit->adc_HWID();
168  if (smax - smin > m_threshold[m_tileHWID->adc(adcId)]) {
169  outColl->push_back(digit);
170  ids.insert(adcId);
171  ++digCounter;
172  if (msgLvl(MSG::VERBOSE)) {
173  msg(MSG::VERBOSE) << (m_tileHWID->adc(adcId) ? " HG " : " LG ")
174  << "id=" << m_tileHWID->to_string(adcId)
175  << " samples=";
176 
177  for (float samp : digit->samples()) {
178  msg(MSG::VERBOSE) << " " << samp;
179  }
180 
181  msg(MSG::VERBOSE) << endmsg;
182  }
183  }
184 
185  // else if (msgLvl(MSG::VERBOSE)){
186  // msg(MSG::VERBOSE) << "Filtered Out "
187  // << (m_tileHWID->adc(adcId) ? " HG " : " LG ")
188  // << "id=" << m_tileHWID->to_string(adcId)
189  // << " samples=";
190  // for(idig=digits.begin(); idig!=iend; ++idig)
191  // msg(MSG::VERBOSE) << " " << (*idig);
192  //
193  // msg(MSG::VERBOSE) << endmsg;
194  // }
195 
196  }
197 
198  ATH_CHECK( outputCont->addCollection (outColl.release()->asDataVector(),
199  collItr.hashId()) );
200 
201  if (ids.size() == 0 || emptyRch)
202  continue;
203 
204  while (collRchItr != lastRchColl
205  && (*collRchItr)->identify() < (*collItr)->identify()) {
206  ++collRchItr;
207  }
208  if (collRchItr == lastRchColl) {
209  ATH_MSG_WARNING( MSG::hex
210  << "TileDigitsCollection ID 0x" << (*collItr)->identify()
211  << " but corresponding TileRawChannelCollection is missing"
212  << MSG::dec );
213 
214  } else if ((*collItr)->identify() != (*collRchItr)->identify()) {
215  ATH_MSG_WARNING( MSG::hex
216  << "TileDigitsCollection ID 0x" << (*collItr)->identify()
217  << " and TileRawChannelCollection ID 0x" << (*collRchItr)->identify()
218  << " do not match " << MSG::dec );
219 
220  } else {
221  const TileRawChannelCollection* collRch = *collRchItr;
222  auto outRchColl = std::make_unique<ConstDataVector<TileRawChannelCollection> >
223  (SG::VIEW_ELEMENTS, collRch->identify());
224 
225  // Iterate over all rawChannels in this collection
226  for (const TileRawChannel* rch : *collRch) {
227  HWIdentifier adcId = rch->adc_HWID();
228  if (ids.find(adcId) != ids.end()) {
229  outRchColl->push_back (rch);
230  ++rchCounter;
231  ATH_MSG_VERBOSE( (m_tileHWID->adc(adcId) ? " HG " : " LG ")
232  << "id=" << m_tileHWID->to_string(adcId)
233  << " amp=" << rch->amplitude() );
234  }
235  }
236  ATH_CHECK( outRchCont->addCollection (outRchColl.release()->asDataVector(),
237  collRchItr.hashId()) );
238  }
239  }
240 
241  ATH_MSG_DEBUG( digCounter << " digits and "
242  << rchCounter << " raw channels stored in output containers");
243 
244  if (!m_outputDigitsContainerKey.key().empty()) {
245  // register new container in the TES
247  ATH_CHECK( outputDigitsContainer.record(std::move(outputCont)) );
248 
249  ATH_MSG_DEBUG( "TileDigitsContainer registered successfully (" << m_outputDigitsContainerKey.key() << ")");
250 
251  }
252 
253  if (!m_outputRawChannelContainerKey.key().empty()) {
254  // register new container in the TES
256  ATH_CHECK( outputRawChannelContainer.record(std::move(outRchCont)) );
257 
258  ATH_MSG_DEBUG( "TileRawChannelContainer registered successfully ("
259  << m_outputRawChannelContainerKey.key() << ")");
260  }
261 
262  // Execution completed.
263  ATH_MSG_DEBUG( "execution completed" );
264 
265  return StatusCode::SUCCESS;
266 }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode TileDigitsFilter::finalize ( )
overridevirtual

finalize method

Definition at line 268 of file TileDigitsFilter.cxx.

268  {
269 
270  ATH_MSG_INFO( "in finalize()" );
271 
272  return StatusCode::SUCCESS;
273 }

◆ initialize()

StatusCode TileDigitsFilter::initialize ( )
overridevirtual

initialize method

Definition at line 49 of file TileDigitsFilter.cxx.

49  {
50 
51  ATH_CHECK( m_cablingSvc.retrieve() );
52 
54 
55  ATH_MSG_INFO( "Input digits container: '" << m_inputDigitsContainerKey.key()
56  << "' output container: '" << m_outputDigitsContainerKey.key() << "'" );
57 
58  ATH_MSG_INFO( "Input raw channel container: '" << m_inputRawChannelContainerKey.key()
59  << "' output container: '" << m_outputRawChannelContainerKey.key() << "'" );
60 
63 
64  ATH_MSG_INFO( "Threshold low gain: " << m_threshold[0]
65  << " counts, high gain: " << m_threshold[1] << " counts" );
66 
67 
68  if (!m_inputDigitsContainerKey.key().empty()) {
70  }
71 
72  if (!m_outputDigitsContainerKey.key().empty()) {
74  }
75 
76  if (!m_inputRawChannelContainerKey.key().empty()) {
78  }
79 
80  if (!m_outputRawChannelContainerKey.key().empty()) {
82  }
83 
84 
85  ATH_MSG_INFO( "initialization completed" );
86 
87  return StatusCode::SUCCESS;
88 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::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< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

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

◆ 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< Gaudi::Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

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

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

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_cablingSvc

ServiceHandle<TileCablingSvc> TileDigitsFilter::m_cablingSvc
private
Initial value:
{ this,
"TileCablingSvc", "TileCablingSvc", "The Tile cabling service"}

Name of Tile cabling service.

Definition at line 93 of file TileDigitsFilter.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_highGainThreashold

Gaudi::Property<int> TileDigitsFilter::m_highGainThreashold
private
Initial value:
{this,
"HighGainThereshold", 10, "High gain threshold to keep digits"}

Definition at line 85 of file TileDigitsFilter.h.

◆ m_inputDigitsContainerKey

SG::ReadHandleKey<TileDigitsContainer> TileDigitsFilter::m_inputDigitsContainerKey
private
Initial value:
{this,
"InputDigitsContainer", "TileDigitsCnt", "Input Tile digits container key"}

Definition at line 70 of file TileDigitsFilter.h.

◆ m_inputRawChannelContainerKey

SG::ReadHandleKey<TileRawChannelContainer> TileDigitsFilter::m_inputRawChannelContainerKey
private
Initial value:
{this,
"InputRawChannelContainer", "TileRawChannelCnt", "Input Tile raw channels container key"}

Definition at line 76 of file TileDigitsFilter.h.

◆ m_lowGainThreashold

Gaudi::Property<int> TileDigitsFilter::m_lowGainThreashold
private
Initial value:
{this,
"LowGainThereshold", 0, "Low gain threshold to keep digits"}

Definition at line 82 of file TileDigitsFilter.h.

◆ m_outputDigitsContainerKey

SG::WriteHandleKey<TileDigitsContainer> TileDigitsFilter::m_outputDigitsContainerKey
private
Initial value:
{this,
"OutputDigitsContainer", "TileDigitsFlt","Output Tile digits container key"}

Definition at line 73 of file TileDigitsFilter.h.

◆ m_outputRawChannelContainerKey

SG::WriteHandleKey<TileRawChannelContainer> TileDigitsFilter::m_outputRawChannelContainerKey
private
Initial value:
{this,
"OutputRawChannelContainer", "TileRawChannelFlt", "Output Tile digits container key"}

Definition at line 79 of file TileDigitsFilter.h.

◆ m_threshold

int TileDigitsFilter::m_threshold[2] {}
private

Threshold value for low and high gain.

Definition at line 96 of file TileDigitsFilter.h.

◆ m_tileHWID

const TileHWID* TileDigitsFilter::m_tileHWID
private

Definition at line 88 of file TileDigitsFilter.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
max
#define max(a, b)
Definition: cfImp.cxx:41
TileDigitsFilter::m_inputDigitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_inputDigitsContainerKey
Definition: TileDigitsFilter.h:70
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TileDigitsFilter::m_lowGainThreashold
Gaudi::Property< int > m_lowGainThreashold
Definition: TileDigitsFilter.h:82
TileFragHash::TYPE
TYPE
initialize
Definition: TileFragHash.h:33
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
AthCommonMsg< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
TileDigitsFilter::m_cablingSvc
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
Definition: TileDigitsFilter.h:93
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
checkRpcDigits.digit
digit
Definition: checkRpcDigits.py:186
TileFragHash::Digitizer
@ Digitizer
Definition: TileFragHash.h:33
HWIdentifier
Definition: HWIdentifier.h:13
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
TileDigitsFilter::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileDigitsFilter.h:88
TileDigitsFilter::m_highGainThreashold
Gaudi::Property< int > m_highGainThreashold
Definition: TileDigitsFilter.h:85
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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
TileRawChannel
Definition: TileRawChannel.h:35
TileDigitsFilter::m_threshold
int m_threshold[2]
Threshold value for low and high gain.
Definition: TileDigitsFilter.h:96
TileDigitsFilter::m_outputRawChannelContainerKey
SG::WriteHandleKey< TileRawChannelContainer > m_outputRawChannelContainerKey
Definition: TileDigitsFilter.h:79
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
TileRawChannelUnit::UNIT
UNIT
Definition: TileRawChannelUnit.h:16
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
min
#define min(a, b)
Definition: cfImp.cxx:40
TileRawDataCollection::identify
ID identify() const
Definition: TileRawDataCollection.h:71
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
TileDigitsFilter::m_inputRawChannelContainerKey
SG::ReadHandleKey< TileRawChannelContainer > m_inputRawChannelContainerKey
Definition: TileDigitsFilter.h:76
TileDigitsCollection
Definition: TileDigitsCollection.h:18
IdentifiableContainerMT::const_iterator::hashId
IdentifierHash hashId() const
hashId of the pointed-to element
Definition: IdentifiableContainerMT.h:130
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
TileDigits
Definition: TileDigits.h:30
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
TileRawChannelCollection
Definition: TileRawChannelCollection.h:12
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:21
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
AthCommonMsg< Gaudi::Algorithm >::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
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
TileHWID::to_string
std::string to_string(const HWIdentifier &id, int level=0) const
extract all fields from HW identifier HWIdentifier get_all_fields ( const HWIdentifier & id,...
Definition: TileHWID.cxx:50
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
TileDigitsFilter::m_outputDigitsContainerKey
SG::WriteHandleKey< TileDigitsContainer > m_outputDigitsContainerKey
Definition: TileDigitsFilter.h:73
TileRawChannelUnit::ADCcounts
@ ADCcounts
Definition: TileRawChannelUnit.h:17
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >