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

#include <LArRampAdHocPatchingAlg.h>

Inheritance diagram for LArRampAdHocPatchingAlg:
Collaboration diagram for LArRampAdHocPatchingAlg:

Public Member Functions

 LArRampAdHocPatchingAlg (const std::string &name, ISvcLocator *pSvcLocator)
 regular Algorithm constructor More...
 
 ~LArRampAdHocPatchingAlg ()
 Destructor. More...
 
StatusCode initialize ()
 Initialize method. More...
 
StatusCode execute ()
 Empty Execute method. More...
 
StatusCode stop ()
 Finalize method. More...
 
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

enum  patchMethod { ZeroIntercept, PutValues }
 
typedef LArRampComplete::LArCondObj LArRampObj
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

bool ZeroTheIntercept (HWIdentifier chid, unsigned gain)
 
bool PutTheValues (HWIdentifier chid, std::vector< double > &rvalues, unsigned gain)
 
StatusCode ApplyAdHocPatches (std::vector< unsigned > &channelsToBePatched, std::vector< unsigned > &patchesTobeApplied, std::vector< std::vector< double > > &valuesToBeApplied, unsigned gain)
 
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

const LArRampCompletem_contIn
 
LArRampCompletem_contOut
 
std::string m_containerKey
 
std::string m_newContainerKey
 
std::vector< unsigned > m_channelsToBePatchedHG
 
std::vector< unsigned > m_channelsToBePatchedMG
 
std::vector< unsigned > m_channelsToBePatchedLG
 
std::vector< unsigned > m_patchesToBeAppliedHG
 
std::vector< unsigned > m_patchesToBeAppliedMG
 
std::vector< unsigned > m_patchesToBeAppliedLG
 
std::vector< std::vector< double > > m_valuesToBeAppliedHG
 
std::vector< std::vector< double > > m_valuesToBeAppliedMG
 
std::vector< std::vector< double > > m_valuesToBeAppliedLG
 
bool m_useCorrChannel = false
 
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

Definition at line 24 of file LArRampAdHocPatchingAlg.h.

Member Typedef Documentation

◆ LArRampObj

Definition at line 59 of file LArRampAdHocPatchingAlg.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ patchMethod

Enumerator
ZeroIntercept 
PutValues 

Definition at line 85 of file LArRampAdHocPatchingAlg.h.

85  {
87  PutValues
88  };

Constructor & Destructor Documentation

◆ LArRampAdHocPatchingAlg()

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

regular Algorithm constructor

Definition at line 9 of file LArRampAdHocPatchingAlg.cxx.

10  : AthAlgorithm(name,pSvcLocator),
11  m_contIn(nullptr),
12  m_contOut(nullptr)
13 {
14  declareProperty("ContainerKey", m_containerKey="");
15  declareProperty("NewContainerKey",m_newContainerKey="");
16 
17  declareProperty("ChannelsToBePatchedHG",m_channelsToBePatchedHG);
18  declareProperty("ChannelsToBePatchedMG",m_channelsToBePatchedMG);
19  declareProperty("ChannelsToBePatchedLG",m_channelsToBePatchedLG);
20 
21  declareProperty("PatchesToBeAppliedHG",m_patchesToBeAppliedHG);
22  declareProperty("PatchesToBeAppliedMG",m_patchesToBeAppliedMG);
23  declareProperty("PatchesToBeAppliedLG",m_patchesToBeAppliedLG);
24 
25  declareProperty("ValuesToBeAppliedHG",m_valuesToBeAppliedHG);
26  declareProperty("ValuesToBeAppliedMG",m_valuesToBeAppliedMG);
27  declareProperty("ValuesToBeAppliedLG",m_valuesToBeAppliedLG);
28 
29  declareProperty("UseCorrChannels",m_useCorrChannel,
30  "True: Use separate correction COOL channel, False: Correction + data in the same channel");
31 }

◆ ~LArRampAdHocPatchingAlg()

LArRampAdHocPatchingAlg::~LArRampAdHocPatchingAlg ( )
default

Destructor.

Member Function Documentation

◆ ApplyAdHocPatches()

StatusCode LArRampAdHocPatchingAlg::ApplyAdHocPatches ( std::vector< unsigned > &  channelsToBePatched,
std::vector< unsigned > &  patchesTobeApplied,
std::vector< std::vector< double > > &  valuesToBeApplied,
unsigned  gain 
)
private

Definition at line 129 of file LArRampAdHocPatchingAlg.cxx.

130 {
131  if (channelsToBePatched.size() != patchesToBeApplied.size())
132  return StatusCode::FAILURE;
133  unsigned putcount=0;
134  for (unsigned ich=0;ich<channelsToBePatched.size();++ich ) {
135  const HWIdentifier chid = (HWIdentifier)channelsToBePatched[ich];
136  // ... if so, proceed with ad-hoc patching(s)
137  const unsigned patchMethod = patchesToBeApplied[ich];
138  //bool status = false;
139  switch (patchMethod) {
140  case ZeroIntercept: {
141  // check if the channel to be patched is there...
142  if (m_contIn->get(chid,gain).isEmpty()) continue;
143  ZeroTheIntercept(chid,gain);
144  break;
145  }
146  case PutValues: {
147  if ( valuesToBeApplied[putcount].empty() ) return StatusCode::FAILURE;
148  PutTheValues(chid,valuesToBeApplied[putcount],gain);
149  ++putcount;
150  break;
151  }
152  }
153  /*
154  if (status) {
155  (*m_log) << MSG::INFO << "Sucessfully patched channel 0x" << MSG::hex << chid.get_compact() << MSG::dec <<" Gain:" << gain << endmsg;
156  } else {
157  (*m_log) << MSG::WARNING << "Failed to patch channel 0x" << MSG::hex << chid.get_compact() << MSG::dec <<" Gain:" << gain << endmsg;
158  }
159  */
160  }
161  return StatusCode::SUCCESS;
162 }

◆ 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 LArRampAdHocPatchingAlg::execute ( )
inline

Empty Execute method.

Definition at line 47 of file LArRampAdHocPatchingAlg.h.

47 {return StatusCode::SUCCESS;}

◆ 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 LArRampAdHocPatchingAlg::finalize ( )
inline

Definition at line 55 of file LArRampAdHocPatchingAlg.h.

55 {return StatusCode::SUCCESS;}

◆ initialize()

StatusCode LArRampAdHocPatchingAlg::initialize ( )

Initialize method.

Returns
Gaudi status code. Analyzes and verifies the jobOption settings

Definition at line 38 of file LArRampAdHocPatchingAlg.cxx.

39 {
40  ATH_MSG_INFO ( "Initialing LArRampAdHocPatchingAlg..." );
41  ATH_MSG_INFO ( "HG: "<<m_channelsToBePatchedHG.size()<<" "<<m_patchesToBeAppliedHG.size());
42  ATH_MSG_INFO ( "MG: "<<m_channelsToBePatchedMG.size()<<" "<<m_patchesToBeAppliedMG.size());
43  ATH_MSG_INFO ( "LG: "<<m_channelsToBePatchedLG.size()<<" "<<m_patchesToBeAppliedLG.size());
44 
45  if ( !m_channelsToBePatchedHG.empty() && ( m_channelsToBePatchedHG.size() != m_patchesToBeAppliedHG.size() ) ) {
46  ATH_MSG_ERROR ( "Wrong size of HIGH gain input vectors!" );
47  return StatusCode::FAILURE;
48  } else {
49  unsigned count = std::count (m_patchesToBeAppliedHG.begin(), m_patchesToBeAppliedHG.end(), 1 ); // 1 is to apply values
50  if ( (count > 0) && (m_valuesToBeAppliedHG.size() != count)) {
51  ATH_MSG_ERROR ( "Wrong size of HIGH gain values vector ! " << count << " " << m_valuesToBeAppliedHG.size());
52  return StatusCode::FAILURE;
53  } else {
54  ATH_MSG_INFO ( m_channelsToBePatchedHG.size() << " ad-hoc patches to be applied in HIGH gain" );
55  }
56  }
57 
58  if ( !m_channelsToBePatchedMG.empty() && ( m_channelsToBePatchedMG.size() != m_patchesToBeAppliedMG.size() ) ) {
59  ATH_MSG_ERROR ( "Wrong size of MEDIUM gain input vectors!" );
60  return StatusCode::FAILURE;
61  } else {
62  unsigned count = std::count (m_patchesToBeAppliedMG.begin(), m_patchesToBeAppliedMG.end(), 1 ); // 1 is to apply values
63  if ( (count > 0) && (m_valuesToBeAppliedMG.size() != count)) {
64  ATH_MSG_ERROR ( "Wrong size of MEDIUM gain values vector !" );
65  return StatusCode::FAILURE;
66  } else {
67  ATH_MSG_INFO ( m_channelsToBePatchedMG.size() << " ad-hoc patches to be applied in MEDIUM gain" );
68  }
69  }
70 
71  if ( !m_channelsToBePatchedLG.empty() && ( m_channelsToBePatchedLG.size() != m_patchesToBeAppliedLG.size() ) ) {
72  ATH_MSG_ERROR ( "Wrong size of LOW gain input vectors!" );
73  return StatusCode::FAILURE;
74  } else {
75  unsigned count = std::count (m_patchesToBeAppliedLG.begin(), m_patchesToBeAppliedLG.end(), 1 ); // 1 is to apply values
76  if ( (count > 0) && (m_valuesToBeAppliedLG.size() != count)) {
77  ATH_MSG_ERROR ( "Wrong size of LOW gain values vector !" );
78  return StatusCode::FAILURE;
79  } else {
80  ATH_MSG_INFO ( m_channelsToBePatchedLG.size() << " ad-hoc patches to be applied in LOW gain" );
81  }
82  }
83 
84  return StatusCode::SUCCESS;
85 }

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

◆ PutTheValues()

bool LArRampAdHocPatchingAlg::PutTheValues ( HWIdentifier  chid,
std::vector< double > &  rvalues,
unsigned  gain 
)
private

Definition at line 189 of file LArRampAdHocPatchingAlg.cxx.

190 {
191  unsigned s = rvalues.size();
192  LArRampObj patch;
193  patch.m_vRamp.clear();
194  patch.m_vRamp.resize(s);
195  ATH_MSG_INFO ( "Size of the patched object: "<<s);
196  if(s==0) return false;
197  for (unsigned i=0;i<s;++i){ // copy the values
198  patch.m_vRamp[i] = rvalues[i];
199  }
200  StatusCode sc;
201  try { sc=m_contOut->insertCorrection(chid,patch,gain,m_useCorrChannel);}
202  catch(...) { ATH_MSG_INFO ("Skipping insert of corrections, maybe it's not about this partition");}
203  if (sc.isFailure()) {
204  ATH_MSG_ERROR ( "Failed to put the values for channel 0x"
205  << MSG::hex << chid.get_compact() << MSG::dec << ", gain " << gain << "." );
206  return false;
207  } else {
208  ATH_MSG_INFO ( "Successfully put the values for channel 0x"
209  << MSG::hex << chid.get_compact() << MSG::dec << ", gain " << gain << "." );
210  return true;
211  }
212 }

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

◆ stop()

StatusCode LArRampAdHocPatchingAlg::stop ( )

Finalize method.

Returns
Gaudi status code. All the job is done here

Definition at line 88 of file LArRampAdHocPatchingAlg.cxx.

89 {
90  ATH_MSG_INFO ( "Entering LArRampAdHocPatchingAlg" );
91 
92  if (!m_newContainerKey.empty()) { //New container key give -> different containers for reading and writing
93  ATH_CHECK( detStore()->retrieve(m_contIn,m_containerKey) ); //const-retrieve
99  ATH_MSG_INFO ( "Loaded input container " << m_containerKey
100  << ", write to new container " << m_newContainerKey );
101  }
102  else { //Same container for reading and writing (must not be locked)
103  ATH_CHECK( detStore()->retrieve(m_contOut,m_containerKey) ); //non-const retrieve
105  ATH_MSG_INFO ( "Work on container '" << m_containerKey << "'" );
106  }
107 
108  if (!m_channelsToBePatchedHG.empty()) {
109  ATH_MSG_INFO ( "Going to apply ad-hoc patches to HIGH gain ramps." );
111  }
112 
113  if (!m_channelsToBePatchedMG.empty()) {
114  ATH_MSG_INFO ( "Going to apply ad-hoc patches to MEDIUM gain ramps." );
116  }
117 
118  if (!m_channelsToBePatchedLG.empty()) {
119  ATH_MSG_INFO ( "Going to apply ad-hoc patches to LOW gain ramps." );
121  }
122 
123  ATH_MSG_INFO ( "Done with LArRampAdHocPatchingAlg" );
124  return StatusCode::SUCCESS;
125 }

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

◆ ZeroTheIntercept()

bool LArRampAdHocPatchingAlg::ZeroTheIntercept ( HWIdentifier  chid,
unsigned  gain 
)
private

Definition at line 165 of file LArRampAdHocPatchingAlg.cxx.

166 {
167  unsigned s = m_contIn->get(chid,gain).m_vRamp.size();
168  LArRampObj patch;
169  patch.m_vRamp.clear();
170  patch.m_vRamp.resize(s);
171  ATH_MSG_INFO ( "Size of the patched object: "<<s);
172  if(s==0) return false;
173  patch.m_vRamp[0] = 0.; // zeroes the intercept
174  for (unsigned i=1;i<s;++i){ // copy the other coefficients
175  patch.m_vRamp[i] = m_contIn->get(chid,gain).m_vRamp[i];
176  }
178  if (sc.isFailure()) {
179  ATH_MSG_ERROR ( "Failed to zero the ramp intercept channel 0x"
180  << MSG::hex << chid.get_compact() << MSG::dec << ", gain " << gain << "." );
181  return false;
182  } else {
183  ATH_MSG_INFO ( "Successfully zeroed the ramp intercept channel 0x"
184  << MSG::hex << chid.get_compact() << MSG::dec << ", gain " << gain << "." );
185  return true;
186  }
187 }

Member Data Documentation

◆ m_channelsToBePatchedHG

std::vector<unsigned> LArRampAdHocPatchingAlg::m_channelsToBePatchedHG
private

Definition at line 73 of file LArRampAdHocPatchingAlg.h.

◆ m_channelsToBePatchedLG

std::vector<unsigned> LArRampAdHocPatchingAlg::m_channelsToBePatchedLG
private

Definition at line 75 of file LArRampAdHocPatchingAlg.h.

◆ m_channelsToBePatchedMG

std::vector<unsigned> LArRampAdHocPatchingAlg::m_channelsToBePatchedMG
private

Definition at line 74 of file LArRampAdHocPatchingAlg.h.

◆ m_containerKey

std::string LArRampAdHocPatchingAlg::m_containerKey
private

Definition at line 64 of file LArRampAdHocPatchingAlg.h.

◆ m_contIn

const LArRampComplete* LArRampAdHocPatchingAlg::m_contIn
private

Definition at line 61 of file LArRampAdHocPatchingAlg.h.

◆ m_contOut

LArRampComplete* LArRampAdHocPatchingAlg::m_contOut
private

Definition at line 62 of file LArRampAdHocPatchingAlg.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_newContainerKey

std::string LArRampAdHocPatchingAlg::m_newContainerKey
private

Definition at line 65 of file LArRampAdHocPatchingAlg.h.

◆ m_patchesToBeAppliedHG

std::vector<unsigned> LArRampAdHocPatchingAlg::m_patchesToBeAppliedHG
private

Definition at line 77 of file LArRampAdHocPatchingAlg.h.

◆ m_patchesToBeAppliedLG

std::vector<unsigned> LArRampAdHocPatchingAlg::m_patchesToBeAppliedLG
private

Definition at line 79 of file LArRampAdHocPatchingAlg.h.

◆ m_patchesToBeAppliedMG

std::vector<unsigned> LArRampAdHocPatchingAlg::m_patchesToBeAppliedMG
private

Definition at line 78 of file LArRampAdHocPatchingAlg.h.

◆ m_useCorrChannel

bool LArRampAdHocPatchingAlg::m_useCorrChannel = false
private

Definition at line 95 of file LArRampAdHocPatchingAlg.h.

◆ m_valuesToBeAppliedHG

std::vector<std::vector<double> > LArRampAdHocPatchingAlg::m_valuesToBeAppliedHG
private

Definition at line 81 of file LArRampAdHocPatchingAlg.h.

◆ m_valuesToBeAppliedLG

std::vector<std::vector<double> > LArRampAdHocPatchingAlg::m_valuesToBeAppliedLG
private

Definition at line 83 of file LArRampAdHocPatchingAlg.h.

◆ m_valuesToBeAppliedMG

std::vector<std::vector<double> > LArRampAdHocPatchingAlg::m_valuesToBeAppliedMG
private

Definition at line 82 of file LArRampAdHocPatchingAlg.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
LArRampAdHocPatchingAlg::PutValues
@ PutValues
Definition: LArRampAdHocPatchingAlg.h:87
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
LArRampAdHocPatchingAlg::LArRampObj
LArRampComplete::LArCondObj LArRampObj
Definition: LArRampAdHocPatchingAlg.h:59
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArRampComplete
Definition: LArRampComplete.h:50
LArRampAdHocPatchingAlg::m_channelsToBePatchedMG
std::vector< unsigned > m_channelsToBePatchedMG
Definition: LArRampAdHocPatchingAlg.h:74
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
LArConditionsContainer::insertCorrection
StatusCode insertCorrection(HWIdentifier id, const T &cond, unsigned int gain, bool corrChannel=true)
access to corrections -
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArRampAdHocPatchingAlg::m_containerKey
std::string m_containerKey
Definition: LArRampAdHocPatchingAlg.h:64
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
LArRampAdHocPatchingAlg::ZeroTheIntercept
bool ZeroTheIntercept(HWIdentifier chid, unsigned gain)
Definition: LArRampAdHocPatchingAlg.cxx:165
LArRampAdHocPatchingAlg::m_channelsToBePatchedLG
std::vector< unsigned > m_channelsToBePatchedLG
Definition: LArRampAdHocPatchingAlg.h:75
LArRampAdHocPatchingAlg::PutTheValues
bool PutTheValues(HWIdentifier chid, std::vector< double > &rvalues, unsigned gain)
Definition: LArRampAdHocPatchingAlg.cxx:189
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
LArRampAdHocPatchingAlg::m_contOut
LArRampComplete * m_contOut
Definition: LArRampAdHocPatchingAlg.h:62
HWIdentifier
Definition: HWIdentifier.h:13
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
LArRampAdHocPatchingAlg::patchMethod
patchMethod
Definition: LArRampAdHocPatchingAlg.h:85
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
LArRampP1::m_vRamp
std::vector< float > m_vRamp
Definition: LArRampP1.h:30
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
LArRampAdHocPatchingAlg::ZeroIntercept
@ ZeroIntercept
Definition: LArRampAdHocPatchingAlg.h:86
LArRampAdHocPatchingAlg::m_valuesToBeAppliedHG
std::vector< std::vector< double > > m_valuesToBeAppliedHG
Definition: LArRampAdHocPatchingAlg.h:81
LArRampAdHocPatchingAlg::m_patchesToBeAppliedLG
std::vector< unsigned > m_patchesToBeAppliedLG
Definition: LArRampAdHocPatchingAlg.h:79
LArRampAdHocPatchingAlg::m_newContainerKey
std::string m_newContainerKey
Definition: LArRampAdHocPatchingAlg.h:65
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
LArRampAdHocPatchingAlg::m_patchesToBeAppliedMG
std::vector< unsigned > m_patchesToBeAppliedMG
Definition: LArRampAdHocPatchingAlg.h:78
LArConditionsContainerBase::GroupingType
GroupingType
Grouping type.
Definition: LArConditionsContainerBase.h:44
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
LArConditionsContainer::groupingType
unsigned int groupingType() const
Type of grouping - defined in LArConditionContainerBase.h.
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArRampAdHocPatchingAlg::m_valuesToBeAppliedLG
std::vector< std::vector< double > > m_valuesToBeAppliedLG
Definition: LArRampAdHocPatchingAlg.h:83
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArConditionsContainer::get
ConstReference get(const HWIdentifier id, unsigned int gain=0) const
get data with online identifier
ILArRamp
Definition: ILArRamp.h:12
LArRampAdHocPatchingAlg::ApplyAdHocPatches
StatusCode ApplyAdHocPatches(std::vector< unsigned > &channelsToBePatched, std::vector< unsigned > &patchesTobeApplied, std::vector< std::vector< double > > &valuesToBeApplied, unsigned gain)
Definition: LArRampAdHocPatchingAlg.cxx:129
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LArRampAdHocPatchingAlg::m_channelsToBePatchedHG
std::vector< unsigned > m_channelsToBePatchedHG
Definition: LArRampAdHocPatchingAlg.h:73
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArRampAdHocPatchingAlg::m_valuesToBeAppliedMG
std::vector< std::vector< double > > m_valuesToBeAppliedMG
Definition: LArRampAdHocPatchingAlg.h:82
LArRampAdHocPatchingAlg::m_contIn
const LArRampComplete * m_contIn
Definition: LArRampAdHocPatchingAlg.h:61
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
LArRampAdHocPatchingAlg::m_useCorrChannel
bool m_useCorrChannel
Definition: LArRampAdHocPatchingAlg.h:95
a
TList * a
Definition: liststreamerinfos.cxx:10
h
Identifier::get_compact
value_type get_compact(void) const
Get the compact id.
LArConditionsContainer::initialize
virtual StatusCode initialize()
Initialization done after creation or read back - derived classes may augment the functionality.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
LArRampAdHocPatchingAlg::m_patchesToBeAppliedHG
std::vector< unsigned > m_patchesToBeAppliedHG
Definition: LArRampAdHocPatchingAlg.h:77
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >