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

Driver for LArRawChannel building. More...

#include <LArRawChannelBuilderDriver.h>

Inheritance diagram for LArRawChannelBuilderDriver:
Collaboration diagram for LArRawChannelBuilderDriver:

Public Member Functions

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

Protected Member Functions

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

Private Types

typedef ToolHandleArray< ILArRawChannelBuilderToolBasebuilderToolVector
 
typedef ToolHandleArray< ILArRawChannelBuilderADC2EToolBaseadc2eToolVector
 
typedef ToolHandleArray< ILArRawChannelBuilderPedestalToolBasepedestalToolVector
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

float pedestal ()
 
void ADC2energy (const EventContext &ctx)
 
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

LArRawChannelBuilderParams m_params
 
const LArOnlineIDm_onlineHelper
 
std::string m_DataLocation
 
std::string m_ChannelContainerName
 
builderToolVector m_buildTools
 
adc2eToolVector m_adc2eTools
 
pedestalToolVector m_pedestalTools
 
float m_oldPedestal
 
HWIdentifier m_oldIdentifier
 
int m_checkSamples
 
SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"}
 
std::vector< float > m_ramps
 
bool m_buildDiscChannel
 
int m_defaultShiftTimeSamples
 
DataObjIDColl m_extendedExtraObjects
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Driver for LArRawChannel building.

Author
Rolf Seuster This driver superseeds LArRawChannelBuilder.h in ATLAS reco. It drives tools for ADC2MeV conversion as well as peak reconstruction using OFCs, parabolic fits, etc...).

Definition at line 44 of file LArRawChannelBuilderDriver.h.

Member Typedef Documentation

◆ adc2eToolVector

Definition at line 69 of file LArRawChannelBuilderDriver.h.

◆ builderToolVector

Definition at line 68 of file LArRawChannelBuilderDriver.h.

◆ pedestalToolVector

Definition at line 70 of file LArRawChannelBuilderDriver.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArRawChannelBuilderDriver()

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

Definition at line 15 of file LArRawChannelBuilderDriver.cxx.

16  :
17  AthAlgorithm(name, pSvcLocator),
18  m_onlineHelper(nullptr),
19  m_DataLocation("FREE"),
20  m_ChannelContainerName("LArRawChannels"),
21  m_buildTools(this),
22  m_adc2eTools(this),
23  m_pedestalTools(this),
24  m_oldPedestal(0)
25 {
26  declareProperty("LArRawChannelContainerName", m_ChannelContainerName);
27  declareProperty("DataLocation", m_DataLocation );
28  declareProperty("BuilderTools", m_buildTools);
29  declareProperty("ADCtoEnergyTools", m_adc2eTools);
30  declareProperty("PedestalTools", m_pedestalTools);
31  declareProperty("checkSamples", m_checkSamples=32);
32  declareProperty("BuildDiscChannel", m_buildDiscChannel=false);
33  declareProperty("DefaultShiftTimeSample", m_defaultShiftTimeSamples=0);
34 }

◆ ~LArRawChannelBuilderDriver()

LArRawChannelBuilderDriver::~LArRawChannelBuilderDriver ( )
inline

Definition at line 51 of file LArRawChannelBuilderDriver.h.

51 { };

Member Function Documentation

◆ ADC2energy()

void LArRawChannelBuilderDriver::ADC2energy ( const EventContext &  ctx)
private

Definition at line 221 of file LArRawChannelBuilderDriver.cxx.

222 {
225 
226  while( !(*it)->ADC2E(ctx, m_ramps, &msg()) && ++it != itEnd )
227  ATH_MSG_DEBUG("One ADC2Energy Tool failed");
228 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode LArRawChannelBuilderDriver::execute ( )

Definition at line 78 of file LArRawChannelBuilderDriver.cxx.

79 {
80  ATH_MSG_DEBUG("In execute");
81  const EventContext& ctx = Gaudi::Hive::currentContext();
82 
83  //Pointer to input data container
84  const LArDigitContainer* digitContainer=nullptr;
85 
86  //Retrieve Digit Container
87  ATH_MSG_DEBUG("About to retrieve LArDigitContainer with key " << m_DataLocation);
88 
89  if (evtStore()->retrieve(digitContainer,m_DataLocation).isFailure()) {
90  ATH_MSG_WARNING("Can't retrieve LArDigitContainer with key " << m_DataLocation << "from StoreGate.");
91  return StatusCode::SUCCESS;
92  }
93 
95  m_params.m_larRawChannelContainer->reserve(digitContainer->size());
96  // Put this LArRawChannel container in the transient store
98 
99 
100  ATH_MSG_VERBOSE("1) LArDigitContainer container size = " << digitContainer->size());
101 
102  if( digitContainer->empty() ) {
103  ATH_MSG_INFO( "Empty LArDigitContainer container." );
104  return StatusCode::SUCCESS;
105  }
106 
108  const LArOnOffIdMapping* cabling{*cablingHdl};
109  if(!cabling) {
110  ATH_MSG_ERROR( "Do not have cabling mapping from key " << m_cablingKey.key() );
111  return StatusCode::FAILURE;
112  }
113 
114  // declare all variables first ...
115  for (ToolHandle<ILArRawChannelBuilderToolBase>& tool : m_buildTools)
116  tool->initEventHidden();
117 
118  ATH_MSG_DEBUG("Start to build LArRawChannels");
119 
120  // reset to zero
122 
123  for (const LArDigit* digit : *digitContainer)
124  {
125  ATH_MSG_VERBOSE("building LArRawChannel");
126  m_params.curr_chid=digit->channelID();
127  m_params.curr_gain=digit->gain();
128 
130  // write ERROR message, could change to warning if needed
131  ATH_MSG_WARNING( " Corrupted data found : gain = " << m_params.curr_gain );
133  }
134 
135  if(!m_buildDiscChannel && !cabling->isOnlineConnected(m_params.curr_chid))
136  continue;
137 
138  m_params.curr_sample0 = digit->samples()[0];
141  m_params.curr_nsamples = m_checkSamples < digit->nsamples() ?
142  m_checkSamples : digit->nsamples();
144 
146 
147  if(m_params.curr_nsamples>0)
148  {
149  for( unsigned int i=0; i<m_params.curr_nsamples; i++ )
150  {
151  if( m_params.curr_maximum<digit->samples()[i] )
152  {
154  m_params.curr_maximum= digit->samples()[i];
155  }
156  }
157  }
158  //ATH_MSG_VERBOSE("now building LArRawChannel");
159 
160  //Invoke all LArRawChannelBuilderTools until one returns success
161  // indicated by a int=zero return code. The return code contains
162  // the error if non-zero
163 
164  // retrieve pedestal and get the ADC2E factors.
165  // The ramps are stored in the data member m_ramps
166  const float pedestal = this->pedestal();
167  this->ADC2energy (ctx);
168 
169  for (ToolHandle<ILArRawChannelBuilderToolBase>& tool : m_buildTools) {
170  if (tool->buildRawChannel(digit, pedestal, m_ramps, &msg())) break;
171  ATH_MSG_DEBUG("One LArRawChannelBuilderTool failed");
172  }
173 
174  //ATH_MSG_VERBOSE("done building LArRawChannel")
175  m_params.curr_id=0;
176  }
177 
178  ATH_MSG_DEBUG("Finished building LArRawChannels");
179 
180  //Organize Collections
181  // sortChannels(m_larRawChannelContainer);
182  //ATH_MSG_DEBUG( "sorted RawChannelContainer, now lock it " );
183  // lock raw channel container
184  if ( evtStore()->setConst(m_params.m_larRawChannelContainer).isFailure() ) {
185  ATH_MSG_WARNING( " Cannot lock RawChannel Container " );
186  // return(StatusCode::FAILURE);
187  }
188 
189 
190  // reset error counter per event
191  for (ToolHandle<ILArRawChannelBuilderToolBase>& tool : m_buildTools)
192  tool->finalEventHidden();
193 
194  for (ToolHandle<ILArRawChannelBuilderPedestalToolBase>& tool : m_pedestalTools)
195  tool->finalEventHidden();
196 
197  for (ToolHandle<ILArRawChannelBuilderADC2EToolBase>& tool : m_adc2eTools)
198  tool->finalEventHidden();
199 
200  return StatusCode::SUCCESS;
201 }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 50 of file AthAlgorithm.cxx.

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

◆ finalize()

StatusCode LArRawChannelBuilderDriver::finalize ( )

Definition at line 230 of file LArRawChannelBuilderDriver.cxx.

231 {
232  ATH_MSG_INFO( "LArRawChannelBuilderDriver finalize." );
233  ATH_MSG_INFO( " Build Tools:" );
234  for (ToolHandle<ILArRawChannelBuilderToolBase>& tool : m_buildTools)
235  tool->printSummary();
236 
237  ATH_MSG_INFO( " ADC2Energy Tools:" );
238  for (ToolHandle<ILArRawChannelBuilderADC2EToolBase>& tool : m_adc2eTools)
239  tool->printSummary();
240 
241  ATH_MSG_INFO( " Pedestal Tools:" );
242  for (ToolHandle<ILArRawChannelBuilderPedestalToolBase>& tool : m_pedestalTools)
243  tool->printSummary();
244 
245  return StatusCode::SUCCESS;
246 }

◆ initialize()

StatusCode LArRawChannelBuilderDriver::initialize ( )

Definition at line 36 of file LArRawChannelBuilderDriver.cxx.

37 {
38  // initialize parameters
40 
41  ATH_CHECK( detStore()->retrieve(m_onlineHelper, "LArOnlineID") );
43 
44  ATH_CHECK( m_buildTools.retrieve() );
45  ATH_MSG_INFO("Successfully retrieved Builder Tools " << m_buildTools);
46  for (ToolHandle<ILArRawChannelBuilderToolBase>& tool : m_buildTools)
47  if( ( tool->initToolHidden(&m_params) ).isFailure() )
48  ATH_MSG_ERROR( "Unable to initialize Builder Tool " << tool->name() );
49 
50  ATH_CHECK( m_adc2eTools.retrieve() );
51  ATH_MSG_INFO("Successfully retrieved ADC2E Tools " << m_adc2eTools);
52  for (ToolHandle<ILArRawChannelBuilderADC2EToolBase>& tool : m_adc2eTools)
53  if( ( tool->initToolHidden(&m_params) ).isFailure() )
54  ATH_MSG_ERROR( "Unable to initialize ADC2E Tool " << tool->name() );
55 
56  ATH_CHECK( m_pedestalTools.retrieve() );
57  ATH_MSG_INFO("Successfully retrieved Pedestal Tools " << m_pedestalTools);
58  for (ToolHandle<ILArRawChannelBuilderPedestalToolBase>& tool : m_pedestalTools)
59  if( ( tool->initToolHidden(&m_params) ).isFailure() )
60  ATH_MSG_ERROR( "Unable to initialize Pedestal Tool " << tool->name() );
61 
62  // check that we have tools to run the reconstruction !
63  if( m_buildTools.empty() ){
64  ATH_MSG_ERROR( "Didn't find any BuilderTools to do reconstruction !" );
65  return(StatusCode::FAILURE);
66  }
67  if( m_adc2eTools.empty() ){
68  ATH_MSG_ERROR( "Didn't find and ADC2ETools to do reconstruction !" );
69  return(StatusCode::FAILURE);
70  }
71  if( m_pedestalTools.empty() ){
72  ATH_MSG_ERROR( "Didn't find and PedestalTools to do reconstruction !" );
73  return(StatusCode::FAILURE);
74  }
75  return StatusCode::SUCCESS;
76 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ pedestal()

float LArRawChannelBuilderDriver::pedestal ( )
private

Definition at line 203 of file LArRawChannelBuilderDriver.cxx.

204 {
205  // did we retrieved pedestals for this channel before ?
207  return m_oldPedestal;
208 
211 
212  while( !(*it)->pedestal(m_oldPedestal, &msg()) && ++it != itEnd )
213  ATH_MSG_DEBUG("One PedestalTool failed");
214 
215  // remember for which channel we retrieved the pedestal
217 
218  return m_oldPedestal;
219 }

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

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

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

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

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

Definition at line 66 of file AthAlgorithm.cxx.

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

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_adc2eTools

adc2eToolVector LArRawChannelBuilderDriver::m_adc2eTools
private

Definition at line 80 of file LArRawChannelBuilderDriver.h.

◆ m_buildDiscChannel

bool LArRawChannelBuilderDriver::m_buildDiscChannel
private

Definition at line 93 of file LArRawChannelBuilderDriver.h.

◆ m_buildTools

builderToolVector LArRawChannelBuilderDriver::m_buildTools
private

Definition at line 78 of file LArRawChannelBuilderDriver.h.

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArRawChannelBuilderDriver::m_cablingKey {this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"}
private

Definition at line 89 of file LArRawChannelBuilderDriver.h.

◆ m_ChannelContainerName

std::string LArRawChannelBuilderDriver::m_ChannelContainerName
private

Definition at line 75 of file LArRawChannelBuilderDriver.h.

◆ m_checkSamples

int LArRawChannelBuilderDriver::m_checkSamples
private

Definition at line 87 of file LArRawChannelBuilderDriver.h.

◆ m_DataLocation

std::string LArRawChannelBuilderDriver::m_DataLocation
private

Definition at line 75 of file LArRawChannelBuilderDriver.h.

◆ m_defaultShiftTimeSamples

int LArRawChannelBuilderDriver::m_defaultShiftTimeSamples
private

Definition at line 95 of file LArRawChannelBuilderDriver.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_oldIdentifier

HWIdentifier LArRawChannelBuilderDriver::m_oldIdentifier
private

Definition at line 85 of file LArRawChannelBuilderDriver.h.

◆ m_oldPedestal

float LArRawChannelBuilderDriver::m_oldPedestal
private

Definition at line 84 of file LArRawChannelBuilderDriver.h.

◆ m_onlineHelper

const LArOnlineID* LArRawChannelBuilderDriver::m_onlineHelper
private

Definition at line 73 of file LArRawChannelBuilderDriver.h.

◆ m_params

LArRawChannelBuilderParams LArRawChannelBuilderDriver::m_params
private

Definition at line 66 of file LArRawChannelBuilderDriver.h.

◆ m_pedestalTools

pedestalToolVector LArRawChannelBuilderDriver::m_pedestalTools
private

Definition at line 82 of file LArRawChannelBuilderDriver.h.

◆ m_ramps

std::vector<float> LArRawChannelBuilderDriver::m_ramps
private

Definition at line 91 of file LArRawChannelBuilderDriver.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LArRawChannelBuilderParams::curr_gain
CaloGain::CaloGain curr_gain
Definition: LArRawChannelBuilderParams.h:25
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CaloGain::UNKNOWNGAIN
@ UNKNOWNGAIN
Definition: CaloGain.h:20
LArRawChannelBuilderParams::curr_id
Identifier curr_id
Definition: LArRawChannelBuilderParams.h:23
LArRawChannelBuilderDriver::pedestal
float pedestal()
Definition: LArRawChannelBuilderDriver.cxx:203
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
skel.it
it
Definition: skel.GENtoEVGEN.py:423
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
LArRawChannelBuilderParams::m_larRawChannelContainer
LArRawChannelContainer * m_larRawChannelContainer
Definition: LArRawChannelBuilderParams.h:35
LArRawChannelBuilderDriver::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: LArRawChannelBuilderDriver.h:73
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
HWIdentifier
Definition: HWIdentifier.h:13
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
LArRawChannelBuilderDriver::m_DataLocation
std::string m_DataLocation
Definition: LArRawChannelBuilderDriver.h:75
LArRawChannelBuilderDriver::m_pedestalTools
pedestalToolVector m_pedestalTools
Definition: LArRawChannelBuilderDriver.h:82
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< 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
LArRawChannelBuilderDriver::m_ramps
std::vector< float > m_ramps
Definition: LArRawChannelBuilderDriver.h:91
LArRawChannelBuilderParams::curr_shiftTimeSamples
int curr_shiftTimeSamples
Definition: LArRawChannelBuilderParams.h:31
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArRawChannelBuilderDriver::m_defaultShiftTimeSamples
int m_defaultShiftTimeSamples
Definition: LArRawChannelBuilderDriver.h:95
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArRawChannelContainer
Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old LArRawChannelContainer
Definition: LArTPCnv.cxx:86
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
LArRawChannelBuilderDriver::m_oldPedestal
float m_oldPedestal
Definition: LArRawChannelBuilderDriver.h:84
LArRawChannelBuilderDriver::m_ChannelContainerName
std::string m_ChannelContainerName
Definition: LArRawChannelBuilderDriver.h:75
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArRawChannelBuilderDriver::m_buildDiscChannel
bool m_buildDiscChannel
Definition: LArRawChannelBuilderDriver.h:93
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
LArRawChannelBuilderParams::curr_maxsample
unsigned int curr_maxsample
Definition: LArRawChannelBuilderParams.h:29
LArRawChannelBuilderDriver::m_params
LArRawChannelBuilderParams m_params
Definition: LArRawChannelBuilderDriver.h:66
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
LArRawChannelBuilderParams::curr_sample0
int curr_sample0
Definition: LArRawChannelBuilderParams.h:27
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArRawChannelBuilderDriver::m_adc2eTools
adc2eToolVector m_adc2eTools
Definition: LArRawChannelBuilderDriver.h:80
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
a
TList * a
Definition: liststreamerinfos.cxx:10
h
LArRawChannelBuilderDriver::ADC2energy
void ADC2energy(const EventContext &ctx)
Definition: LArRawChannelBuilderDriver.cxx:221
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArRawChannelBuilderDriver::m_checkSamples
int m_checkSamples
Definition: LArRawChannelBuilderDriver.h:87
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LArRawChannelBuilderDriver::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArRawChannelBuilderDriver.h:89
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
LArDigitContainer
Container class for LArDigit.
Definition: LArDigitContainer.h:24
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
LArRawChannelBuilderDriver::m_buildTools
builderToolVector m_buildTools
Definition: LArRawChannelBuilderDriver.h:78
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
LArRawChannelBuilderDriver::m_oldIdentifier
HWIdentifier m_oldIdentifier
Definition: LArRawChannelBuilderDriver.h:85
LArRawChannelBuilderParams::curr_nsamples
unsigned int curr_nsamples
Definition: LArRawChannelBuilderParams.h:30
LArRawChannelBuilderParams::curr_chid
HWIdentifier curr_chid
Definition: LArRawChannelBuilderParams.h:24
LArRawChannelBuilderParams::qualityBitPattern
unsigned int qualityBitPattern
Definition: LArRawChannelBuilderParams.h:34
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
fitman.k
k
Definition: fitman.py:528
LArRawChannelBuilderParams::curr_maximum
int curr_maximum
Definition: LArRawChannelBuilderParams.h:28
ServiceHandle< ICondSvc >
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20