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

#include <TileRawCorrelatedNoise.h>

Inheritance diagram for TileRawCorrelatedNoise:
Collaboration diagram for TileRawCorrelatedNoise:

Classes

struct  AlphaMatrix
 

Public Member Functions

 TileRawCorrelatedNoise (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~TileRawCorrelatedNoise ()
 
virtual StatusCode initialize ()
 
virtual StatusCode execute ()
 
virtual 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 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
 
float m_nRMS_threshold
 
std::string m_alphaMatrixFilePrefix
 
std::string m_sample3RMSFilePrefix
 
std::string m_meanFilePrefix
 
std::unique_ptr< AlphaMatrixm_alphaMatrix
 
float m_meanSamples [4][64][48][7]
 
float m_sample3RMS [4][64][48]
 
bool m_useMeanFiles
 
bool m_pmtOrder
 
ToolHandle< TileCondToolNoiseSamplem_tileToolNoiseSample
 
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 30 of file TileRawCorrelatedNoise.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TileRawCorrelatedNoise()

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

Definition at line 24 of file TileRawCorrelatedNoise.cxx.

25  : AthAlgorithm(name, pSvcLocator)
26 {
27 // #############################################################################
28 
29  declareProperty("nRMSThreshold", m_nRMS_threshold = 2.);
30  declareProperty("AlphaMatrixFilePrefix", m_alphaMatrixFilePrefix = "AlphaMatrix");
31  declareProperty("MeanFilePrefix", m_meanFilePrefix = "Mean");
32  declareProperty("Sample3RMSFilePrefix", m_sample3RMSFilePrefix = "RMS");
33  declareProperty("UseMeanFiles", m_useMeanFiles = true);
34  declareProperty("PMTOrder", m_pmtOrder = false);
35 }

◆ ~TileRawCorrelatedNoise()

TileRawCorrelatedNoise::~TileRawCorrelatedNoise ( )
virtual

Definition at line 38 of file TileRawCorrelatedNoise.cxx.

38  {
39 // #############################################################################
40 
41 }

Member Function Documentation

◆ 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 TileRawCorrelatedNoise::execute ( )
virtual

Definition at line 295 of file TileRawCorrelatedNoise.cxx.

295  {
296 // #############################################################################
297 
298  const EventContext &ctx = Gaudi::Hive::currentContext();
299 
300  // get named TileDigitsContaner from TES
302 
303  ATH_MSG_DEBUG( "Got TileDigitsContainer '" << m_inputDigitsContainerKey.key() << "'" );
304 
305  const TileHWID* tileHWID;
306  CHECK( detStore()->retrieve(tileHWID, "TileHWID") );
307 
308  const TileDigits* OriginalDigits[4][64][48];
309 
310  // go through ALL TileDigits in container
311  SelectAllObject<TileDigitsContainer> selAll(inputDigitsContainer.cptr());
314 
315  // read digits
316  for (; digItr != lastDig; ++digItr) {
317  const HWIdentifier adc_HWID = (*digItr)->adc_HWID();
318  int Ros = tileHWID->ros(adc_HWID);
319  int Drawer = tileHWID->drawer(adc_HWID);
320  int Channel = tileHWID->channel(adc_HWID);
321  OriginalDigits[Ros - 1][Drawer][Channel] = (*digItr);
322 
323  if (!m_useMeanFiles) {
324  // read pedestal value and use it as mean
325  unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(Ros, Drawer);
326  int adc = tileHWID->adc(adc_HWID);
327  double ped = m_tileToolNoiseSample->getPed(drawerIdx, Channel, adc, TileRawChannelUnit::ADCcounts, ctx);
328  int nSamples = 7;
329  for (int Sample = 0; Sample < nSamples; ++Sample) {
330  m_meanSamples[Ros - 1][Drawer][Channel][Sample] = ped;
331  }
332  }
333  }
334 
335  // prepare new samples
336  const int nSamples = 7;
337  float NewSamples[4][64][48][nSamples];
338  for (int Ros = 1; Ros < 5; ++Ros) {
339  for (int Drawer = 0; Drawer < 64; ++Drawer) {
340  for (int Channel = 0; Channel < 48; ++Channel) {
341  for (int Sample = 0; Sample < nSamples; ++Sample) {
342  NewSamples[Ros - 1][Drawer][Channel][Sample] =
343  ((OriginalDigits[Ros - 1][Drawer][Channel])->samples())[Sample];
344  }
345  }
346  }
347  }
348 
349  // apply method
350  for (int Ros = 1; Ros < 5; ++Ros) {
351  for (int Drawer = 0; Drawer < 64; ++Drawer) {
352  for (int Channel = 0; Channel < 48; ++Channel) {
353  if (OriginalDigits[Ros - 1][Drawer][Channel]) {
354  int nSamples = (OriginalDigits[Ros - 1][Drawer][Channel])->nsamples();
355  std::vector<float> digits(nSamples);
356  for (int jCh = 0; jCh < 48; ++jCh) {
357  if (OriginalDigits[Ros - 1][Drawer][jCh]) {
358  if (Channel != jCh
359  && fabs(((OriginalDigits[Ros - 1][Drawer][jCh])->samples())[3]
360  - m_meanSamples[Ros - 1][Drawer][jCh][3])
361  < m_nRMS_threshold * m_sample3RMS[Ros - 1][Drawer][jCh]) {
362 
363  for (int Sample = 0; Sample < nSamples; ++Sample)
364  NewSamples[Ros - 1][Drawer][Channel][Sample] =
365  NewSamples[Ros - 1][Drawer][Channel][Sample]
366  - m_alphaMatrix->m[Ros - 1][Drawer][Channel][jCh]
367  * (((OriginalDigits[Ros - 1][Drawer][jCh])->samples())[Sample]
368  - m_meanSamples[Ros - 1][Drawer][jCh][Sample]);
369  }
370  }
371  }
372  }
373  }
374  }
375  }
376 
377  // create new container
378  TileDigits* NewDigits[4][64][48];
379 
380  auto outputDigitsContainer = std::make_unique<TileMutableDigitsContainer>();
381  ATH_CHECK( outputDigitsContainer->status() );
382 
383  // fill new container
384  for (int Ros = 1; Ros < 5; ++Ros) {
385  for (int Drawer = 0; Drawer < 64; ++Drawer) {
386  for (int Channel = 0; Channel < 48; ++Channel) {
387  if (OriginalDigits[Ros - 1][Drawer][Channel]) {
388  int nSamples = (OriginalDigits[Ros - 1][Drawer][Channel])->nsamples();
389  std::vector<float> digits(nSamples);
390  for (int Sample = 0; Sample < nSamples; ++Sample) {
391  digits[Sample] = NewSamples[Ros - 1][Drawer][Channel][Sample];
392  }
393  NewDigits[Ros - 1][Drawer][Channel] = new TileDigits(
394  (OriginalDigits[Ros - 1][Drawer][Channel])->adc_HWID(), digits);
395  ATH_CHECK( outputDigitsContainer->push_back(NewDigits[Ros - 1][Drawer][Channel]) );
396  }
397  }
398  }
399  }
400 
402  ATH_CHECK( outputDigitsCnt.record(std::move(outputDigitsContainer)) );
403 
404 
405  ATH_MSG_DEBUG( "execute completed successfully" );
406 
407  return StatusCode::SUCCESS;
408 }

◆ 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 TileRawCorrelatedNoise::finalize ( )
virtual

Definition at line 411 of file TileRawCorrelatedNoise.cxx.

411  {
412 // #############################################################################
413 
414  ATH_MSG_INFO( " finalize completed successfully" );
415 
416  return StatusCode::SUCCESS;
417 }

◆ initialize()

StatusCode TileRawCorrelatedNoise::initialize ( )
virtual

Definition at line 44 of file TileRawCorrelatedNoise.cxx.

44  {
45 // #############################################################################
46 
47  int PmtToChannelBarrel[48] = {
48  1, 2, 3, 4, 5, 6, 7, 8,
49  9, 10, 11, 12, 13, 14, 15, 16,
50  17, 18, 19, 20, 21, 22, 23, 24,
51  27, 26, 25, 30, 29, 28, 33, 32,
52  31, 36, 35, 34, 39, 38, 37, 42,
53  41, 40, 45, 44, 43, 48, 47, 46 };
54 
55  int PmtToChannelExtendedBarrel[48] = {
56  1, 2, 3, 4, 5, 6, 7, 8,
57  9, 10, 11, 12, 13, 14, 15, 16,
58  17, 18, 19, 20, 21, 22, 23, 24,
59  27, 26, 25, 31, 32, 28, 33, 29,
60  30, 36, 35, 34, 44, 38, 37, 43,
61  42, 41, 45, 39, 40, 48, 47, 46 };
62 
63  m_alphaMatrix = std::make_unique<AlphaMatrix>();
64 
65  // read alpha matrix
66  FILE* AlphaMatrixFile[4][64];
67  char Rosstr[10];
68  char buff[1000];
69  // Cycle over 4 partitions and 64 modules
70  for (int Ros = 1; Ros < 5; ++Ros) {
71  for (int Drawer = 0; Drawer < 64; ++Drawer) {
72  // open file which corresponds to AlphaMatrix[Ros][Drawer]
73  if (Ros == 1) sprintf(Rosstr, "LBA");
74  else if (Ros == 2) sprintf(Rosstr, "LBC");
75  else if (Ros == 3) sprintf(Rosstr, "EBA");
76  else sprintf(Rosstr, "EBC");
77 
78  sprintf(buff, "%s%s%02d.txt", m_alphaMatrixFilePrefix.c_str(), Rosstr, Drawer + 1);
79  std::string filestr(buff);
80  std::string file = PathResolver::find_file(buff, "DATAPATH");
81 // ATH_MSG_INFO( " buff=" << buff
82 // << " filestr=" << filestr.c_str()
83 // << " file=" << file.c_str() );
84  if (file.size() == 0) {
85  ATH_MSG_WARNING( "Could not find input file " << buff );
86  } else {
87  ATH_MSG_INFO( "Reading file " << file );
88  AlphaMatrixFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
89  }
90  if (AlphaMatrixFile[Ros - 1][Drawer] == NULL) {
91  ATH_MSG_ERROR( "Can't read input Alpha Matrix files." );
92  return StatusCode::FAILURE;
93  }
94  ATH_MSG_DEBUG( " **** Start of Alpha Matrix Read Out" );
95  FILE* alpha_file = AlphaMatrixFile[Ros - 1][Drawer];
96 // if(fgets(buff, sizeof(buff), alpha_file) != NULL) {
97 // ATH_MSG_DEBUG( "Matrix is being loaded: " << buff );
98 // }
99  // load tokens to be searched for in a string
100  const char* TOKENS = { " \t\n" };
101  // read Matrix
102  int dima = 48;
103  char* saveptr = nullptr;
104  for (int line = 0; line < dima; line++) {
105  if (fgets(buff, sizeof(buff), alpha_file) != NULL) {
106  ATH_MSG_DEBUG( "line " << line << " is " << buff );
107  for (int column = 0; column < dima; column++) {
108  // Check for comment lines
109  if (*buff == '!' || *buff == '*') continue;
110  // read value
111  double pippo = 0;
112  if (const char* word = strtok_r(column==0 ? buff : nullptr, TOKENS, &saveptr))
113  {
114  pippo = atof(word);
115  }
116 
117  ATH_MSG_VERBOSE ( "elem " << column << " is " << pippo );
118  int chline = line;
119  int chcolumn = column;
120  // read alpha matrix in pmt order but save it in channel order if m_pmtOrder is true
121  if (m_pmtOrder) {
122  if (Ros < 3) {
123  chline = PmtToChannelBarrel[line] - 1;
124  chcolumn = PmtToChannelBarrel[column] - 1;
125  } else {
126  chline = PmtToChannelExtendedBarrel[line] - 1;
127  chcolumn = PmtToChannelExtendedBarrel[column] - 1;
128  }
129  }
130  m_alphaMatrix->m[Ros - 1][Drawer][chline][chcolumn] = pippo;
131  }
132  }
133  }
134  fclose(alpha_file);
135  }
136  }
137 
138  if (m_useMeanFiles) {
139  // read mean
140  int nSamples = 7;
141  FILE* MeanFile[4][64];
142  // cicle over 4 partitions and 64 modules
143  for (int Ros = 1; Ros < 5; ++Ros) {
144  for (int Drawer = 0; Drawer < 64; ++Drawer) {
145  // open file which corresponds to Mean[Ros][Drawer]
146  if (Ros == 1)
147  sprintf(Rosstr, "LBA");
148  else if (Ros == 2)
149  sprintf(Rosstr, "LBC");
150  else if (Ros == 3)
151  sprintf(Rosstr, "EBA");
152  else
153  sprintf(Rosstr, "EBC");
154  sprintf(buff, "%s%s%02d.txt", m_meanFilePrefix.c_str(), Rosstr, Drawer + 1);
155  std::string filestr(buff);
156  std::string file = PathResolver::find_file(buff, "DATAPATH");
157  if (file.size() == 0) {
158  ATH_MSG_VERBOSE ( "Could not find input file " << buff );
159  } else {
160  ATH_MSG_INFO( "Reading file " << file );
161  MeanFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
162  }
163  if (MeanFile[Ros - 1][Drawer] == NULL) {
164  ATH_MSG_ERROR( "Can't read input Mean files." );
165  return StatusCode::FAILURE;
166  }
167 
168  ATH_MSG_DEBUG( " **** Start of Means Read Out" );
169  FILE* mean_file = MeanFile[Ros - 1][Drawer];
170  //if(fgets(buff, sizeof(buff), mean_file) != NULL) {
171  // if (lDebug)
172  // log << MSG::DEBUG << "Vector is being loaded: "<< buff << endmsg;
173  //}
174  // load tokens to be searched for in a string
175  const char* TOKENS = { " \t\n" };
176  // read Vector
177  int dima = 48;
178  char* saveptr = nullptr;
179  for (int line = 0; line < dima; line++) {
180  if (fgets(buff, sizeof(buff), mean_file) != NULL) {
181  ATH_MSG_DEBUG( "line " << line << " is " << buff );
182  for (int Sample = 0; Sample < nSamples; Sample++) {
183  // Check for comment lines
184  if (*buff == '!' || *buff == '*') continue;
185  // read value
186  double pippo = 0;
187  if (const char* word = strtok_r(Sample==0 ? buff : nullptr, TOKENS, &saveptr))
188  {
189  pippo = atof(word);
190  }
191 
192  ATH_MSG_VERBOSE ( "elem " << Sample << " is " << pippo );
193  int chline = line;
194  // read lines of mean matrix in pmt order but save it in channel order if m_pmtOrder is true
195  if (m_pmtOrder) {
196  if (Ros < 3) chline = PmtToChannelBarrel[line] - 1;
197  else chline = PmtToChannelExtendedBarrel[line] - 1;
198  }
199  m_meanSamples[Ros - 1][Drawer][chline][Sample] = pippo;
200  }
201  }
202  }
203  fclose(mean_file);
204  }
205  }
206  } else {
207  // Initialize mean
208  int nSamples = 7;
209  for (int Ros = 1; Ros < 5; ++Ros) {
210  for (int Drawer = 0; Drawer < 64; ++Drawer) {
211  for (int Channel = 0; Channel < 48; ++Channel) {
212  for (int Sample = 0; Sample < nSamples; ++Sample) {
213  //MeanSamples[Ros-1][Drawer][Channel][Sample]=50.;
214  m_meanSamples[Ros - 1][Drawer][Channel][Sample] = -1.;
215  }
216  }
217  }
218  }
219  }
220 
221  // read sample 3 RMS
222  FILE* Sample3RMSFile[4][64];
223  // cicle over 4 partitions and 64 modules
224  for (int Ros = 1; Ros < 5; ++Ros) {
225  for (int Drawer = 0; Drawer < 64; ++Drawer) {
226  // open file which corresponds to Sample3RMS[Ros][Drawer]
227  if (Ros == 1) sprintf(Rosstr, "LBA");
228  else if (Ros == 2) sprintf(Rosstr, "LBC");
229  else if (Ros == 3) sprintf(Rosstr, "EBA");
230  else sprintf(Rosstr, "EBC");
231 
232  sprintf(buff, "%s%s%02d.txt", m_sample3RMSFilePrefix.c_str(), Rosstr, Drawer + 1);
233  std::string filestr(buff);
234  std::string file = PathResolver::find_file(buff, "DATAPATH");
235  if (file.size() == 0) {
236  ATH_MSG_VERBOSE ( "Could not find input file " << buff );
237  } else {
238  ATH_MSG_INFO( "Reading file " << file );
239  Sample3RMSFile[Ros - 1][Drawer] = fopen(file.c_str(), "r");
240  }
241  if (Sample3RMSFile[Ros - 1][Drawer] == NULL) {
242  ATH_MSG_ERROR( "Can't read input sample 3 RMS files." );
243  return StatusCode::FAILURE;
244  }
245 
246  ATH_MSG_DEBUG( " **** Start of sample 3 RMS Read Out" );
247  FILE* rms_file = Sample3RMSFile[Ros - 1][Drawer];
248  //if(fgets(buff, sizeof(buff), rms_file) != NULL) {
249  // if (lDebug)
250  // log << MSG::DEBUG << "Vector is being loaded: "<< buff << endmsg;
251  //}
252  // load tokens to be searched for in a string
253  char* word;
254  const char* TOKENS = { " \t\n" };
255  // read Vector
256  int dima = 48;
257  for (int line = 0; line < dima; line++) {
258  if (fgets(buff, sizeof(buff), rms_file) != NULL) {
259  ATH_MSG_DEBUG( "line " << line << " is " << buff );
260  // Check for comment lines
261  if (*buff == '!' || *buff == '*') continue;
262  // read value
263  double pippo;
264  char* saveptr = nullptr;
265  if ((word = strtok_r(buff, TOKENS, &saveptr)) == NULL) pippo = 0;
266  else pippo = atof(word);
267  // read value
268  ATH_MSG_VERBOSE ( "elem is " << pippo );
269  int chline = line;
270  // read rms vector in pmt order but save it in channel order if m_pmtOrder is true
271  if (m_pmtOrder) {
272  if (Ros < 3) chline = PmtToChannelBarrel[line] - 1;
273  else chline = PmtToChannelExtendedBarrel[line] - 1;
274  }
275  m_sample3RMS[Ros - 1][Drawer][chline] = pippo;
276  }
277  }
278  fclose(rms_file);
279  }
280  }
281 
284 
285  if (!m_useMeanFiles) {
286  ATH_CHECK( m_tileToolNoiseSample.retrieve() );
287  }
288 
289  ATH_MSG_INFO( "Initialization completed successfully" );
290 
291  return StatusCode::SUCCESS;
292 }

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

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

std::unique_ptr<AlphaMatrix> TileRawCorrelatedNoise::m_alphaMatrix
private

Definition at line 72 of file TileRawCorrelatedNoise.h.

◆ m_alphaMatrixFilePrefix

std::string TileRawCorrelatedNoise::m_alphaMatrixFilePrefix
private

Definition at line 64 of file TileRawCorrelatedNoise.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_inputDigitsContainerKey

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

Definition at line 52 of file TileRawCorrelatedNoise.h.

◆ m_meanFilePrefix

std::string TileRawCorrelatedNoise::m_meanFilePrefix
private

Definition at line 66 of file TileRawCorrelatedNoise.h.

◆ m_meanSamples

float TileRawCorrelatedNoise::m_meanSamples[4][64][48][7]
private

Definition at line 73 of file TileRawCorrelatedNoise.h.

◆ m_nRMS_threshold

float TileRawCorrelatedNoise::m_nRMS_threshold
private

Definition at line 61 of file TileRawCorrelatedNoise.h.

◆ m_outputDigitsContainerKey

SG::WriteHandleKey<TileDigitsContainer> TileRawCorrelatedNoise::m_outputDigitsContainerKey
private
Initial value:
{this, "OutputTileDigitsContainer",
"NewDigitsContainer",
"Output Tile digits container key"}

Definition at line 56 of file TileRawCorrelatedNoise.h.

◆ m_pmtOrder

bool TileRawCorrelatedNoise::m_pmtOrder
private

Definition at line 77 of file TileRawCorrelatedNoise.h.

◆ m_sample3RMS

float TileRawCorrelatedNoise::m_sample3RMS[4][64][48]
private

Definition at line 74 of file TileRawCorrelatedNoise.h.

◆ m_sample3RMSFilePrefix

std::string TileRawCorrelatedNoise::m_sample3RMSFilePrefix
private

Definition at line 65 of file TileRawCorrelatedNoise.h.

◆ m_tileToolNoiseSample

ToolHandle<TileCondToolNoiseSample> TileRawCorrelatedNoise::m_tileToolNoiseSample
private
Initial value:
{this,
"TileCondToolNoiseSample", "TileCondToolNoiseSample", "Tile sample noise tool"}

Definition at line 79 of file TileRawCorrelatedNoise.h.

◆ m_useMeanFiles

bool TileRawCorrelatedNoise::m_useMeanFiles
private

Definition at line 76 of file TileRawCorrelatedNoise.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
get_hdefs.buff
buff
Definition: get_hdefs.py:61
checkFileSG.line
line
Definition: checkFileSG.py:75
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
LArBadChanBlobUtils::Channel
Identifier32::value_type Channel
Definition: LArBadChanBlobUtils.h:24
TileRawCorrelatedNoise::m_useMeanFiles
bool m_useMeanFiles
Definition: TileRawCorrelatedNoise.h:76
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TileRawCorrelatedNoise::m_sample3RMS
float m_sample3RMS[4][64][48]
Definition: TileRawCorrelatedNoise.h:74
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
DeMoUpdate.column
dictionary column
Definition: DeMoUpdate.py:1110
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
TileRawCorrelatedNoise::m_nRMS_threshold
float m_nRMS_threshold
Definition: TileRawCorrelatedNoise.h:61
TileRawCorrelatedNoise::m_meanFilePrefix
std::string m_meanFilePrefix
Definition: TileRawCorrelatedNoise.h:66
HWIdentifier
Definition: HWIdentifier.h:13
TileRawCorrelatedNoise::m_alphaMatrix
std::unique_ptr< AlphaMatrix > m_alphaMatrix
Definition: TileRawCorrelatedNoise.h:72
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
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
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
TileHWID
Helper class for TileCal online (hardware) identifiers.
Definition: TileHWID.h:49
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
SelectAllObjectMT
Definition: SelectAllObjectMT.h:11
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
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
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
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
TileRawCorrelatedNoise::m_sample3RMSFilePrefix
std::string m_sample3RMSFilePrefix
Definition: TileRawCorrelatedNoise.h:65
file
TFile * file
Definition: tile_monitor.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
TileRawCorrelatedNoise::m_alphaMatrixFilePrefix
std::string m_alphaMatrixFilePrefix
Definition: TileRawCorrelatedNoise.h:64
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
SelectAllObjectMT::const_iterator
Definition: SelectAllObjectMT.h:22
TileRawCorrelatedNoise::m_outputDigitsContainerKey
SG::WriteHandleKey< TileDigitsContainer > m_outputDigitsContainerKey
Definition: TileRawCorrelatedNoise.h:56
CxxUtils::atof
double atof(std::string_view str)
Converts a string into a double / float.
Definition: Control/CxxUtils/Root/StringUtils.cxx:91
TileRawCorrelatedNoise::m_pmtOrder
bool m_pmtOrder
Definition: TileRawCorrelatedNoise.h:77
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
TileRawCorrelatedNoise::m_tileToolNoiseSample
ToolHandle< TileCondToolNoiseSample > m_tileToolNoiseSample
Definition: TileRawCorrelatedNoise.h:79
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
Example_ReadSampleNoise.ped
ped
Definition: Example_ReadSampleNoise.py:45
ReadOfcFromCool.nsamples
nsamples
Definition: ReadOfcFromCool.py:115
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
a
TList * a
Definition: liststreamerinfos.cxx:10
TileRawCorrelatedNoise::m_inputDigitsContainerKey
SG::ReadHandleKey< TileDigitsContainer > m_inputDigitsContainerKey
Definition: TileRawCorrelatedNoise.h:52
h
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
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:623
TileRawCorrelatedNoise::m_meanSamples
float m_meanSamples[4][64][48][7]
Definition: TileRawCorrelatedNoise.h:73
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
LArDigits2NtupleDumper.nSamples
nSamples
Definition: LArDigits2NtupleDumper.py:70
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
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
TileRawChannelUnit::ADCcounts
@ ADCcounts
Definition: TileRawChannelUnit.h:17
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >