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

CTB simplified LArRawChannelBuilder using hardcoded calib. constants. More...

#include <LArRawChannelSimpleBuilder.h>

Inheritance diagram for LArRawChannelSimpleBuilder:
Collaboration diagram for LArRawChannelSimpleBuilder:

Public Member Functions

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

Protected Member Functions

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

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this, "OnOffMap", "LArOnOffIdMap", "SG key for mapping object"}
 
SG::ReadCondHandleKey< LArADC2MeVm_adc2mevKey { this, "ADC2MeVKey", "LArADC2MeV", "SG Key of the LArADC2MeV CDO" }
 
const LArEM_IDm_emId
 
const LArFCAL_IDm_fcalId
 
const LArHEC_IDm_hecId
 
const LArOnlineIDm_onlineHelper
 
ToolHandle< LArParabolaPeakRecoToolm_peakParabolaTool
 
SG::ReadHandleKey< LArDigitContainerm_DataLocation { this, "DataLocation", "FREE", "" }
 
SG::WriteHandleKey< LArRawChannelContainerm_ChannelContainerName { this, "LArRawChannelContainerName", "LArRawChannels", "" }
 
int m_imaxSamp
 
std::string m_mode
 
std::string m_FCALmodeTime
 
float m_cubicAdcCut
 
bool m_useRampDB
 
bool m_usePedestalDB
 
int m_averageSamplesEM
 
int m_averageSamplesHEC
 
int m_averageSamplesFCAL
 
float m_averageScaleEM
 
float m_averageScaleHEC
 
float m_averageScaleFCAL
 
float m_ADCtoMeVFCAL [3] {}
 
float m_ADCtoMeVHEC [2] {}
 
float m_ADCtoMeVEMECInner [2] {}
 
float m_ADCtoMeVEMECOuter [4] {}
 
float m_ADCtoMeVEMB [4] {}
 
unsigned int m_iPedestal
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

CTB simplified LArRawChannelBuilder using hardcoded calib. constants.

Author
Walter Lampl
Rob McPherson
Sandrine Laplace

Definition at line 35 of file LArRawChannelSimpleBuilder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ LArRawChannelSimpleBuilder()

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

Definition at line 24 of file LArRawChannelSimpleBuilder.cxx.

24  :
25  AthReentrantAlgorithm(name, pSvcLocator),
26  m_emId(nullptr),
27  m_fcalId(nullptr),
28  m_hecId(nullptr),
29  m_onlineHelper(nullptr),
30  m_peakParabolaTool("LArParabolaPeakTool"),
31  m_iPedestal(0)// jobO ?
32 {
33  //m_useIntercept={false,false,false,false};
34  declareProperty("maxSamp",m_imaxSamp=8);
35  declareProperty("RecoMode",m_mode="CUBIC");
36  declareProperty("CubicRecoTimeModeFCAL",m_FCALmodeTime="LINEAR");
37  declareProperty("CubicAdcCut",m_cubicAdcCut=15.0);
38  declareProperty("PedestalSample",m_iPedestal=0);
39  declareProperty("UsePedestalDB",m_usePedestalDB=false);
40  declareProperty("UseRampDB",m_useRampDB=false);
41  declareProperty("AverageSamplesEM",m_averageSamplesEM=5);
42  declareProperty("AverageSamplesHEC",m_averageSamplesHEC=5);
43  declareProperty("AverageSamplesFCAL",m_averageSamplesFCAL=3);
44  declareProperty("AverageScaleEM",m_averageScaleEM=2.6);
45  declareProperty("AverageScaleHEC",m_averageScaleHEC=2.6);
46  declareProperty("AverageScaleFCAL",m_averageScaleFCAL=1.8);
47 
48  // m_peakParabolaTool = NULL ; // FIXME RS use empty ToolHandle - python
49 
50  m_ADCtoMeVFCAL[0] = 87.0 * MeV; // FCAL1 High gain
51  m_ADCtoMeVFCAL[1] = 117.0 * MeV; // FCAL2 High gain
52  m_ADCtoMeVFCAL[2] = 193.0 * MeV; // FCAL3 High gain
53  m_ADCtoMeVHEC[0] = 136.0 / 9.8 * MeV; // HEC 1 Medium gain from Monika. Need / 9.8 ??
54  m_ADCtoMeVHEC[1] = 136.0 / 9.8 * MeV; // HEC 2 Medium gain from Monika. Need / 9.8 ??
55  // m_ADCtoMeVEMECInner[0] = 25.22 * MeV; // EMEC High gain from Pascal, approximate
56  // m_ADCtoMeVEMECInner[1] = 19.4 * MeV; // EMEC High gain from Pascal, approximate
57  m_ADCtoMeVEMECInner[0] = 20.0 * MeV; // EMEC IW s=1 High gain : fixed 18/8/2004 RMcP
58  m_ADCtoMeVEMECInner[1] = 20.0 * MeV; // EMEC IW s=2 High gain : fixed 18/8/2004 RMcP
59  m_ADCtoMeVEMECOuter[0] = 16.0 * MeV; // EMEC OW pre, s=0
60  m_ADCtoMeVEMECOuter[1] = 16.0 * MeV; // EMEC OW s=1 High gain from Monika, approximate
61  m_ADCtoMeVEMECOuter[2] = 16.0 * MeV; // EMEC OW s=2 High gain from Monika, approximate
62  m_ADCtoMeVEMECOuter[3] = 16.0 * MeV; // EMEC OW s=3 High gain from Monika, approximate
63  m_ADCtoMeVEMB[0] = 7.0 * MeV; // EMB pre, s=0 High gain from Isabelle, approximate
64  m_ADCtoMeVEMB[1] = 2.5 * MeV; // EMB s=1 High gain from Isabelle, approximate
65  m_ADCtoMeVEMB[2] = 18.0 * MeV; // EMB s=2 High gain from Isabelle, approximate
66  m_ADCtoMeVEMB[3] = 9.0 * MeV; // EMB s=3 High gain from Isabelle, approximate
67 
68 
69 }

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

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

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

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

Definition at line 104 of file LArRawChannelSimpleBuilder.cxx.

105 {
106  ATH_MSG_DEBUG( "In execute" );
107 
108  //Retrieve Digit Container
109  ATH_MSG_DEBUG( "About to retrieve LArDigitContainer with key " << m_DataLocation );
111  ATH_MSG_DEBUG( "1) LArDigitContainer container size = " << digitContainer->size() );
112 
113  ATH_MSG_DEBUG( "2) LArDigitContainer container size = " << digitContainer->size() );
114  if( digitContainer->empty() ) {
115  ATH_MSG_INFO( "Empty LArDigitContainer container." );
116  return StatusCode::SUCCESS;
117  }
118 
119  auto larRawChannelContainer = std::make_unique<LArRawChannelContainer>();
120 
121  //Pointer to conditions data objects
122  const ILArPedestal* larPedestal=nullptr;
123  if (m_usePedestalDB) {
124  if (detStore()->retrieve(larPedestal).isFailure()) {
125  larPedestal=nullptr;
126  ATH_MSG_DEBUG( "No pedestal found in database. Use default values." );
127  }
128  }
129 
131  const LArOnOffIdMapping* cabling{*cablingHdl};
132  if(!cabling) {
133  ATH_MSG_ERROR("Do not have mapping object " << m_cablingKey.key() );
134  return StatusCode::FAILURE;
135  }
136 
137  const LArADC2MeV* adc2mev = nullptr;
138  if (m_useRampDB) {
140  adc2mev = *adc2mevH;
141  }
142 
143  //loop twice over the digits. In the first pass the best window is
144  //found for the averaged signal. In the second pass the full raw
145  //channel is created and the averaging in the window found in the
146  //first path is used in case the cubic fit fails or the max ADC is
147  //below threshold
148 
149  int nMinEM(0),nMinHEC(0),nMinFCAL(0);
150  std::vector<float> fSumEM,fSumHEC,fSumFCAL;
151  std::vector<float> *pSum = nullptr;
152 
153  fSumEM.resize(0);
154  fSumHEC.resize(0);
155  fSumFCAL.resize(0);
156 
157  for(int iloop=0;iloop<2;iloop++) {
158 
159  //Now all data is available, start loop over Digit Container
160  ATH_MSG_DEBUG( "Loop over Digit Container " );
161 
162  for (const LArDigit* digit : *digitContainer) {
163 
164  //Get data from LArDigit
165  const std::vector<short>& samples = digit->samples();
166  unsigned int nSamples = samples.size();
167  const HWIdentifier chid = digit->channelID();
168  const CaloGain::CaloGain gain = digit->gain();
169 
170 
171  float thePedestal=-1;
172  if (larPedestal) {
173  float DBpedestal =larPedestal->pedestal(chid,gain);
174  if (DBpedestal <= (1.+LArElecCalib::ERRORCODE))
175  thePedestal=DBpedestal;
176  }
177  if (thePedestal<0) {
178  thePedestal = (float)samples[m_iPedestal];
179  ATH_MSG_DEBUG( "No pedestal found for this cell. Use default value " << thePedestal );
180  }
181  //>>>> PL June 20, 2004: subtract pedestal first, assume first sample ->JO?
182  std::vector<float> mySamples;
183  mySamples.resize(samples.size());
184  // FIXME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! only for 5 leading noise samples!
185 
186  // log << MSG::INFO
187  // << "pedestal " << thePedestal << endmsg;
188  for ( unsigned int i=0; i<samples.size(); i++ )
189  {
190  mySamples[i] = ((float)samples[i]) - thePedestal;
191  }
192  //<<<<
193 
194  float GainFactor;
195  if( gain == CaloGain::LARLOWGAIN ) {
196  GainFactor = 9.8*9.8;
197  } else if (gain == CaloGain::LARMEDIUMGAIN ) {
198  GainFactor = 9.8;
199  } else if (gain == CaloGain::LARHIGHGAIN ) {
200  GainFactor = 1.0;
201  } else {
202  GainFactor = 1.0;
203  ATH_MSG_ERROR( "Channel " << chid << "unknown gain: " << gain );
204  }
205 
206  // Get hardware identifier for later use.
207  HWIdentifier FebID = m_onlineHelper->feb_Id(chid);
208  unsigned int channel = m_onlineHelper->channel(chid);
209  ATH_MSG_DEBUG( std::hex << " FebID / chid / channel = " << FebID << " / " << chid << " / " << channel );
210 
211  // And note if this is an FCAL channel with fast pulses (cubic fails)
212  // EM and HEC are also tested to adjust the signal range for averaging
213  bool isFCAL = false;
214  bool isEM = false;
215  bool isHEC = false;
216  int nMin = 0;
217  unsigned int nAverage = 1;
218  float myScale = 1;
219  try {
220  const Identifier id = cabling->cnvToIdentifier(chid);
221  if (m_fcalId->is_lar_fcal(id)) {
222  isFCAL = true;
223  nMin = nMinFCAL;
224  pSum = &fSumFCAL;
225  nAverage = m_averageSamplesFCAL;
226  myScale = m_averageScaleFCAL;
227  }
228  else if (m_emId->is_lar_em(id)) {
229  isEM = true;
230  nMin = nMinEM;
231  pSum = &fSumEM;
232  nAverage = m_averageSamplesEM;
233  myScale = m_averageScaleEM;
234  }
235  else if (m_hecId->is_lar_hec(id)) {
236  isHEC = true;
237  nMin = nMinHEC;
238  pSum = &fSumHEC;
239  nAverage = m_averageSamplesHEC;
240  myScale = m_averageScaleHEC;
241  }
242  }
243  //catch( LArOnlID_Exception & except)
244  catch (LArID_Exception & execpt) {
245  ATH_MSG_DEBUG (" is disconnected.");
246  // The question now being: do we want to skip this channel???
247  // Probably yes, so do so. RMcP 9 June 2006
248  continue;
249  }
250  // In the unrealistic case, that pSum is still not defined
251  if(!pSum) continue;
252 
253  // Find peak time sample and scaled average for selected sample range
254  // (i.e. poor man's digital filter)
255 
256  // sanity checks
257  if ( nAverage > nSamples ) {
258  ATH_MSG_WARNING( " Number of samples to average ("
259  << nAverage << ") is larger than total number of samples ("
260  << nSamples << ")! adjusting nAverage ... " );
261  nAverage = nSamples;
262  }
263 
264 
265  if ( iloop == 0 ) {
266 
267  if ( pSum->empty())
268 // pSum->resize(nSamples-nAverage+1,0);
269  pSum->resize(nSamples,0);
270 
271  for( unsigned i=0;i<nSamples-nAverage+1;i++ ) {
272  for( unsigned j=0;j<nAverage;j++ ) {
273  (*pSum)[i] += mySamples[i+j];
274  }
275  }
276  }
277  else {
278  float maxADCPeak = 0.;
279  unsigned int iPeakSamp = 0;
280  float averagedADC = 0;
281  for( unsigned i=0;i<nSamples;i++ ) {
282  if ( maxADCPeak < mySamples[i] )
283  {
284  maxADCPeak = mySamples[i];
285  iPeakSamp = i;
286  }
287  if ( (int)i >= nMin && i < nMin+nAverage )
288  averagedADC += mySamples[i];
289  }
290  averagedADC /= myScale;
291 
292  bool CubicFailed = false;
293  float ADCPeak=0.;
294  float time=0;
295 
296 
297  // maximum amplitude/variable time slice method
298  if( m_mode == "MAX" )
299  {
300  ADCPeak = maxADCPeak;
301  time = ((float)iPeakSamp) * 25.0 * nanosecond;
302  }
303 
304 
305  // other choices are different for FCAL and others
306  else {
307 
308  // first, deal with FCAL: only one reconstruction is available
309  if(isFCAL && m_mode == "CUBIC" &&
310  ! ( CubicFailed = maxADCPeak <= m_cubicAdcCut ) ) {
311 
312  ATH_MSG_DEBUG( " Special reconstruction for FCAL." );
313 
314  unsigned int it0;
315 
316  const float invT[3][3]
317  = { { 1, 0, 0 },
318  { -1.5, 2, -0.5 },
319  { 0.5, -1, 0.5 } };
320 
321  // peak slice very early
322  if ( iPeakSamp <= 1 ) {
323  it0 = 1;
324  } else if ( iPeakSamp >= nSamples - 1 ) { // peak is late
325  it0 = nSamples - 3;
326  } else { // peak in safe region
327  it0 = iPeakSamp - 1;
328  }
329 
330  // Quadratic interpolation using
331  // 3 samples to be used start at 0 <= t0 <= nsamples-3
332  float A[3] = {0, 0, 0};
333  float dtmax = 0.0;
334  // S = TA -> A = inv(T)S
335  for (int ia = 0; ia < 3; ia++)
336  for (int it = 0; it < 3; it++)
337  A[ia] += invT[ia][it] * mySamples[it0+it];
338 
339  // fit parameters
340  if ( not ( CubicFailed = ( A[2] == 0 ) ) ) {
341  dtmax = -1.0 * A[1] / 2.0 / A[2];
342  if ( ! ( CubicFailed = ( dtmax < 0 || dtmax > 2 ) ) ) {
343  //time = (float(it0) + dtmax) * 25.0 * nanosecond; // nsec
344  time=dtmax*25.0*ns;
345  for(int ia = 0; ia < 3; ia++)
346  ADCPeak += A[ia] * pow(dtmax, ia);
347  }
348  }
349 
350  // Now use jobOptions to pick time and height of FCAL pulses
351  if( m_FCALmodeTime == "LINEAR" ) {
352  float weightSum = 0.;
353  float timeSum = 0.;
354  for( int it=0; it<3; it++) {
355  timeSum += float(mySamples[it0+it]) * float(it);
356  weightSum += float(mySamples[it0+it]);
357  }
358  time = (float(it0) + timeSum / weightSum) * 25.0 * nanosecond;
359  // ADCPeak = mySamples[iPeakSamp];
360  ADCPeak = mySamples[m_imaxSamp];
361  CubicFailed = false;
362  }
363 
364  // then, deal with non-FCAL
365  } else if(not isFCAL || m_mode != "CUBIC" ) {
366 
367  // bias-corrected parabola extrapolation for selected channels
368  if ( m_mode == "PARABOLA" &&
369  ! ( CubicFailed = maxADCPeak <= m_cubicAdcCut ) ) {
370  if( m_peakParabolaTool) {
371  int layer = 0;
372  try {
373  const Identifier id = cabling->cnvToIdentifier(chid);
374  ATH_MSG_DEBUG( std::hex << " id = " << id );
375  if (m_emId->is_em_barrel(id)) {
376  layer= m_emId->sampling(id);
377  }
378  }
379  catch (LArID_Exception & execpt){
380  ATH_MSG_DEBUG( std::hex
381  << " Cannot get offline identifier from online ID = " << chid );
382  }
383 
384  std::vector<float> peak =m_peakParabolaTool->peak(samples,layer,thePedestal);
385  if(peak.size() >1){
386  ADCPeak = peak[0]-thePedestal;
387  if (peak.size()==2)time = peak[1];
388  else time = peak[2];
389  }else{
390  ATH_MSG_DEBUG( "No pic is computed from Parabola. Use scaled average of selected samples" );
391  ADCPeak = averagedADC;
392  time = -99.;
393  }
394  }else{
395  ATH_MSG_FATAL( "No parabola tool available ! Choose another mode" );
396  }
397  }
398 
399  // cubic extrapolation for selected channels
400  else if ( m_mode == "CUBIC" &&
401  ! ( CubicFailed = maxADCPeak <= m_cubicAdcCut ) ) {
402 
403  unsigned int it0;
404  const float invT[4][4]
405  = { { 1, 0, 0, 0},
406  { -1.83333, 3, -1.5, 0.333333},
407  { 1, -2.5, 2, -0.5},
408  {-0.166666, 0.5, -0.5, 0.166666} };
409 
410  // peak slice very early
411  if ( iPeakSamp <= 1 ) {
412  it0 = m_iPedestal + 1;
413  } else if ( iPeakSamp >= nSamples - 2 ) { // peak is late
414  it0 = nSamples - 4;
415  } else { // peak in safe region
416  it0 = ( mySamples[iPeakSamp-2] > mySamples[iPeakSamp+2] )
417  ? iPeakSamp - 2
418  : iPeakSamp - 1;
419  }
420 
421  // 4 samples to be used start at 0 <= t0 <= nsamples-4
422  float A[4] = {0, 0, 0, 0};
423  float dtmax = 0.0;
424  float disc;
425  // S = TA -> A = inv(T)S
426  for (int ia = 0; ia < 4; ia++)
427  for (int it = 0; it < 4; it++)
428  A[ia] += invT[ia][it] * mySamples[it0+it];
429 
430  // fit parameters
431  disc = A[2]*A[2] - 3*A[1]*A[3];
432  if ( ! ( CubicFailed = ( disc < 0 || A[3] == 0 ) ) ) {
433  dtmax = (-A[2]-std::sqrt(disc))/(A[3]*3);
434  if ( ! ( CubicFailed = ( dtmax < 0 || dtmax > 3 ) ) ) {
435  time = (float(it0) + dtmax) * 25.0 * nanosecond; // nsec
436  for(int ia = 0; ia < 4; ia++)
437  ADCPeak += A[ia] * pow(dtmax, ia);
438  }
439  }
440  }
441  }
442  }
443 
444  // fixed time slice or insufficient signal for cubic fit : use scaled average of selected samples
445  if(m_mode == "FIXED" || CubicFailed ) {
446  ADCPeak = averagedADC;
447  time = -99. ;
448  }
449 
450  ATH_MSG_DEBUG( "Flag: "
451  << CubicFailed
452  << " Detector: "
453  << (isEM?"EM":(isHEC?"HEC":(isFCAL?"FCAL":"none")))
454  << " Mode: "
455  << m_mode
456  << " Signal: "
457  << ADCPeak
458  << " Peak: "
459  << maxADCPeak
460  << " PeakSample: "
461  << iPeakSamp
462  );
463 
464  float energy=-9999;
465  if (m_useRampDB) {
466  float ADCPeakPower=ADCPeak;
467  //ADC2MeV (a.k.a. Ramp)
468  LArVectorProxy ramp = adc2mev->ADC2MEV(chid,gain);
469  //Check ramp coefficents
470  if (ramp.size()>1 && ramp[1]<500 && ramp[1]>0) {
471  energy=0;
472  for (unsigned i=1;i<ramp.size();i++)
473  {energy+=ramp[i]*ADCPeakPower; //pow(ADCPeak,i);
474  //std::cout << "Step "<< i <<":" << ramp[i] << " * " << pow(ADCPeak,i) << "Sum=" << energy << std::endl;
475  ADCPeakPower*=ADCPeak;
476  }
477  }
478  }
479  if (energy==-9999) {
480  ATH_MSG_DEBUG( "No Ramp found for this cell. Use default values" );
481  //Apply default values
482  // Now must get subdetector ID and feed in here ...
483  float ADCtoMeV = 10.0;
484 
485  // HWIdentifier FebID = m_onlineHelper->feb_Id(chid);
486  // unsigned int channel = m_onlineHelper->channel(chid);
487  // MSG::hex(log) << MSG::DEBUG
488  // << " FebID / chid / channel = " << FebID << " / " << chid << " / " << channel << endmsg;
489 
490  try {
491  const Identifier id = cabling->cnvToIdentifier(chid);
492 
493  ATH_MSG_DEBUG( std::hex << " id = " << id );
494 
495  if (m_emId->is_em_barrel(id)) {
496  const int layer= m_emId->sampling(id);
497  const int eta=m_emId->eta(id);
498  ADCtoMeV = m_ADCtoMeVEMB[layer];
499  if (layer==2 && eta<32)
500  ADCtoMeV=ADCtoMeV*(12./18.); //Correct for lead thickness
501  ATH_MSG_DEBUG( " in EMB s="<< layer <<", using ADCtoMeV = " << ADCtoMeV );
502  } else if (m_emId->is_em_endcap_inner(id)) {
503  // m_emId->sampling(id);
504  ADCtoMeV = m_ADCtoMeVEMECInner[m_emId->sampling(id)-1];
505  ATH_MSG_DEBUG( " in EMEC inner s="<<m_emId->sampling(id)<<", using ADCtoMeV = " << ADCtoMeV );
506  } else if (m_emId->is_em_endcap_outer(id)) {
507  // m_emId->sampling(id);
508  // ADCtoMeV = m_ADCtoMeVEMECOuter[m_emId->sampling(id)-1];
509  ADCtoMeV = m_ADCtoMeVEMECOuter[m_emId->sampling(id)];
510  ATH_MSG_DEBUG( " in EMEC outer s="<<m_emId->sampling(id)<<", using ADCtoMeV = " << ADCtoMeV );
511  } else if (m_fcalId->is_lar_fcal(id)) {
512  // m_fcalId->module(chid);
513  ADCtoMeV = m_ADCtoMeVFCAL[m_fcalId->module(id)-1];
514  ATH_MSG_DEBUG( " in FCAL m=" << m_fcalId->module(id)<<", using ADCtoMeV = " << ADCtoMeV );
515  } else if (m_hecId->is_lar_hec(id)) {
516  // m_layer[m_cellIndex]=m_hecId->sampling(id);
517  ADCtoMeV = m_ADCtoMeVHEC[0];
518  ATH_MSG_DEBUG( " in HEC s="<<m_hecId->sampling(id)<<", using ADCtoMeV = " << ADCtoMeV );
519  }
520  }
521  //catch( LArOnlID_Exception & except)
522  catch (LArID_Exception & execpt)
523  {
524  ATH_MSG_DEBUG( " is disconnected. Set ADCtoMeV to 1" );
525  ADCtoMeV=1;
526  }
527  energy = ADCPeak * ADCtoMeV * GainFactor;
528  }
529  uint16_t iquality=0;
530  uint16_t iprovenance=0;
531 
532  time*=1000; //Convert to picoseconds
533  //Make LArRawChannel Object with new data
534  LArRawChannel larRawChannel(chid,(int)energy,(int)time,iquality,iprovenance, gain);
535  larRawChannelContainer->add(larRawChannel); //Add to container
536  }
537  }// End loop over LArDigits
538  if ( iloop == 0 ) {
539  // select the best windows for the event
540  unsigned int i;
541  float tmpSum = 0;
542 
543  if ( !fSumEM.empty() ) {
544  for(i=0;i<fSumEM.size();i++) {
545  if (i == 0 || fSumEM[i] > tmpSum ) {
546  nMinEM = i;
547  tmpSum = fSumEM[i];
548  }
549  }
550  ATH_MSG_DEBUG( "Found best EM window starting at sample <" << nMinEM << ">" );
551  }
552 
553  for(i=0;i<fSumHEC.size();i++) {
554  if (i == 0 || fSumHEC[i] > tmpSum ) {
555  nMinHEC = i;
556  tmpSum = fSumHEC[i];
557  }
558  }
559  if ( !fSumHEC.empty() ) {
560  ATH_MSG_DEBUG( "Found best HEC window starting at sample <" << nMinHEC << ">" );
561  }
562 
563  for(i=0;i<fSumFCAL.size();i++) {
564  if (i == 0 || fSumFCAL[i] > tmpSum ) {
565  nMinFCAL = i;
566  tmpSum = fSumFCAL[i];
567  }
568  }
569  if ( !fSumFCAL.empty() ) {
570  ATH_MSG_DEBUG( "Found best FCAL window starting at sample <" << nMinFCAL << ">" );
571  }
572 
573  }
574  }// End of double loop over Digit containers
575 
576  ATH_MSG_DEBUG( "Finished loop over Digit Container " );
577 
578  // Put this LArRawChannel container in the transient store
579  ATH_CHECK( SG::makeHandle (m_ChannelContainerName, ctx).record (std::move (larRawChannelContainer)) );
580 
581  return StatusCode::SUCCESS;
582 }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

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

◆ filterPassed()

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

Definition at line 135 of file AthReentrantAlgorithm.h.

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

◆ finalize()

StatusCode LArRawChannelSimpleBuilder::finalize ( )
overridevirtual

Definition at line 584 of file LArRawChannelSimpleBuilder.cxx.

585 {//Error and Warning Summary for this job:
586 
587  ATH_MSG_INFO( "LArRawChannelSimpleBuilder finished." );
588 
589  return StatusCode::SUCCESS;
590 }

◆ initialize()

StatusCode LArRawChannelSimpleBuilder::initialize ( )
overridevirtual

Definition at line 71 of file LArRawChannelSimpleBuilder.cxx.

72 {
73  ATH_MSG_DEBUG( "In Initialize." );
74 
76 
77  if ( m_mode == "PARABOLA"){
78  if (m_peakParabolaTool.retrieve().isFailure())
79  {
80  ATH_MSG_ERROR( "Can't get LArParabolaPeakRecoTool" );
81  return StatusCode::SUCCESS;
82  }
83  ATH_MSG_DEBUG( "LArParabolaPeakRecoTool retrieved with success!" );
84  }
85 
86  const CaloCell_ID* idHelper = nullptr;
87  ATH_CHECK( detStore()->retrieve (idHelper, "CaloCell_ID") );
88  m_emId=idHelper->em_idHelper();
89  m_fcalId=idHelper->fcal_idHelper();
90  m_hecId=idHelper->hec_idHelper();
91 
93 
94  ATH_CHECK( detStore()->retrieve(m_onlineHelper, "LArOnlineID") );
95 
96 
99  return StatusCode::SUCCESS;
100 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

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

Definition at line 139 of file AthReentrantAlgorithm.h.

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

◆ sysExecute()

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

Execute an algorithm.

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

Definition at line 67 of file AthReentrantAlgorithm.cxx.

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

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

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

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

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

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

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

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_adc2mevKey

SG::ReadCondHandleKey<LArADC2MeV> LArRawChannelSimpleBuilder::m_adc2mevKey { this, "ADC2MeVKey", "LArADC2MeV", "SG Key of the LArADC2MeV CDO" }
private

Definition at line 49 of file LArRawChannelSimpleBuilder.h.

◆ m_ADCtoMeVEMB

float LArRawChannelSimpleBuilder::m_ADCtoMeVEMB[4] {}
private

Definition at line 75 of file LArRawChannelSimpleBuilder.h.

◆ m_ADCtoMeVEMECInner

float LArRawChannelSimpleBuilder::m_ADCtoMeVEMECInner[2] {}
private

Definition at line 73 of file LArRawChannelSimpleBuilder.h.

◆ m_ADCtoMeVEMECOuter

float LArRawChannelSimpleBuilder::m_ADCtoMeVEMECOuter[4] {}
private

Definition at line 74 of file LArRawChannelSimpleBuilder.h.

◆ m_ADCtoMeVFCAL

float LArRawChannelSimpleBuilder::m_ADCtoMeVFCAL[3] {}
private

Definition at line 71 of file LArRawChannelSimpleBuilder.h.

◆ m_ADCtoMeVHEC

float LArRawChannelSimpleBuilder::m_ADCtoMeVHEC[2] {}
private

Definition at line 72 of file LArRawChannelSimpleBuilder.h.

◆ m_averageSamplesEM

int LArRawChannelSimpleBuilder::m_averageSamplesEM
private

Definition at line 68 of file LArRawChannelSimpleBuilder.h.

◆ m_averageSamplesFCAL

int LArRawChannelSimpleBuilder::m_averageSamplesFCAL
private

Definition at line 68 of file LArRawChannelSimpleBuilder.h.

◆ m_averageSamplesHEC

int LArRawChannelSimpleBuilder::m_averageSamplesHEC
private

Definition at line 68 of file LArRawChannelSimpleBuilder.h.

◆ m_averageScaleEM

float LArRawChannelSimpleBuilder::m_averageScaleEM
private

Definition at line 69 of file LArRawChannelSimpleBuilder.h.

◆ m_averageScaleFCAL

float LArRawChannelSimpleBuilder::m_averageScaleFCAL
private

Definition at line 69 of file LArRawChannelSimpleBuilder.h.

◆ m_averageScaleHEC

float LArRawChannelSimpleBuilder::m_averageScaleHEC
private

Definition at line 69 of file LArRawChannelSimpleBuilder.h.

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> LArRawChannelSimpleBuilder::m_cablingKey {this, "OnOffMap", "LArOnOffIdMap", "SG key for mapping object"}
private

Definition at line 48 of file LArRawChannelSimpleBuilder.h.

◆ m_ChannelContainerName

SG::WriteHandleKey<LArRawChannelContainer> LArRawChannelSimpleBuilder::m_ChannelContainerName { this, "LArRawChannelContainerName", "LArRawChannels", "" }
private

Definition at line 61 of file LArRawChannelSimpleBuilder.h.

◆ m_cubicAdcCut

float LArRawChannelSimpleBuilder::m_cubicAdcCut
private

Definition at line 66 of file LArRawChannelSimpleBuilder.h.

◆ m_DataLocation

SG::ReadHandleKey<LArDigitContainer> LArRawChannelSimpleBuilder::m_DataLocation { this, "DataLocation", "FREE", "" }
private

Definition at line 59 of file LArRawChannelSimpleBuilder.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_emId

const LArEM_ID* LArRawChannelSimpleBuilder::m_emId
private

Definition at line 51 of file LArRawChannelSimpleBuilder.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_fcalId

const LArFCAL_ID* LArRawChannelSimpleBuilder::m_fcalId
private

Definition at line 52 of file LArRawChannelSimpleBuilder.h.

◆ m_FCALmodeTime

std::string LArRawChannelSimpleBuilder::m_FCALmodeTime
private

Definition at line 65 of file LArRawChannelSimpleBuilder.h.

◆ m_hecId

const LArHEC_ID* LArRawChannelSimpleBuilder::m_hecId
private

Definition at line 53 of file LArRawChannelSimpleBuilder.h.

◆ m_imaxSamp

int LArRawChannelSimpleBuilder::m_imaxSamp
private

Definition at line 63 of file LArRawChannelSimpleBuilder.h.

◆ m_iPedestal

unsigned int LArRawChannelSimpleBuilder::m_iPedestal
private

Definition at line 77 of file LArRawChannelSimpleBuilder.h.

◆ m_mode

std::string LArRawChannelSimpleBuilder::m_mode
private

Definition at line 64 of file LArRawChannelSimpleBuilder.h.

◆ m_onlineHelper

const LArOnlineID* LArRawChannelSimpleBuilder::m_onlineHelper
private

Definition at line 54 of file LArRawChannelSimpleBuilder.h.

◆ m_peakParabolaTool

ToolHandle<LArParabolaPeakRecoTool> LArRawChannelSimpleBuilder::m_peakParabolaTool
private

Definition at line 56 of file LArRawChannelSimpleBuilder.h.

◆ m_usePedestalDB

bool LArRawChannelSimpleBuilder::m_usePedestalDB
private

Definition at line 67 of file LArRawChannelSimpleBuilder.h.

◆ m_useRampDB

bool LArRawChannelSimpleBuilder::m_useRampDB
private

Definition at line 67 of file LArRawChannelSimpleBuilder.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArRawChannelSimpleBuilder::m_ChannelContainerName
SG::WriteHandleKey< LArRawChannelContainer > m_ChannelContainerName
Definition: LArRawChannelSimpleBuilder.h:62
ILArPedestal::pedestal
virtual float pedestal(const HWIdentifier &id, int gain) const =0
LArADC2MeV::ADC2MEV
const LArVectorProxy ADC2MEV(const HWIdentifier &id, int gain) const
Definition: LArADC2MeV.h:32
LArRawChannelSimpleBuilder::m_cubicAdcCut
float m_cubicAdcCut
Definition: LArRawChannelSimpleBuilder.h:66
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
python.SystemOfUnits.nanosecond
int nanosecond
Definition: SystemOfUnits.py:119
CaloCell_ID::em_idHelper
const LArEM_ID * em_idHelper() const
access to EM idHelper
Definition: CaloCell_ID.h:63
AtlasDetectorID::is_lar_fcal
bool is_lar_fcal(Identifier id) const
Definition: AtlasDetectorID.h:839
LArRawChannelSimpleBuilder::m_averageScaleEM
float m_averageScaleEM
Definition: LArRawChannelSimpleBuilder.h:69
LArEM_Base_ID::is_em_endcap_outer
bool is_em_endcap_outer(const Identifier id) const
test if the id belongs to the EM Endcap outer wheel
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
ILArPedestal
Definition: ILArPedestal.h:12
LArRawChannelSimpleBuilder::m_peakParabolaTool
ToolHandle< LArParabolaPeakRecoTool > m_peakParabolaTool
Definition: LArRawChannelSimpleBuilder.h:56
LArElecCalib::ERRORCODE
@ ERRORCODE
Definition: LArCalibErrorCode.h:17
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
AthCommonDataStore::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
skel.it
it
Definition: skel.GENtoEVGEN.py:396
LArRawChannelSimpleBuilder::m_adc2mevKey
SG::ReadCondHandleKey< LArADC2MeV > m_adc2mevKey
Definition: LArRawChannelSimpleBuilder.h:50
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
LArFCAL_Base_ID::module
int module(const Identifier id) const
module [1,3]
LArRawChannelSimpleBuilder::m_ADCtoMeVFCAL
float m_ADCtoMeVFCAL[3]
Definition: LArRawChannelSimpleBuilder.h:71
LArRawChannelSimpleBuilder::m_ADCtoMeVEMB
float m_ADCtoMeVEMB[4]
Definition: LArRawChannelSimpleBuilder.h:75
LArEM_Base_ID::sampling
int sampling(const Identifier id) const
return sampling according to :
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
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
LArRawChannelSimpleBuilder::m_ADCtoMeVHEC
float m_ADCtoMeVHEC[2]
Definition: LArRawChannelSimpleBuilder.h:72
LArEM_Base_ID::eta
int eta(const Identifier id) const
return eta according to :
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CaloCell_ID::hec_idHelper
const LArHEC_ID * hec_idHelper() const
access to HEC idHelper
Definition: CaloCell_ID.h:69
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LArRawChannelSimpleBuilder::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArRawChannelSimpleBuilder.h:48
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
LArRawChannelSimpleBuilder::m_usePedestalDB
bool m_usePedestalDB
Definition: LArRawChannelSimpleBuilder.h:67
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
LArRawChannelSimpleBuilder::m_ADCtoMeVEMECOuter
float m_ADCtoMeVEMECOuter[4]
Definition: LArRawChannelSimpleBuilder.h:74
LArRawChannelSimpleBuilder::m_imaxSamp
int m_imaxSamp
Definition: LArRawChannelSimpleBuilder.h:63
A
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1963
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
LArRawChannelSimpleBuilder::m_iPedestal
unsigned int m_iPedestal
Definition: LArRawChannelSimpleBuilder.h:77
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
LArRawChannelSimpleBuilder::m_useRampDB
bool m_useRampDB
Definition: LArRawChannelSimpleBuilder.h:67
AthCommonDataStore< AthCommonMsg< Gaudi::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:85
LArRawChannel
Liquid Argon ROD output object base class.
Definition: LArRawChannel.h:40
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
LArRawChannelSimpleBuilder::m_averageSamplesEM
int m_averageSamplesEM
Definition: LArRawChannelSimpleBuilder.h:68
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LArRawChannelSimpleBuilder::m_hecId
const LArHEC_ID * m_hecId
Definition: LArRawChannelSimpleBuilder.h:53
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AtlasDetectorID::is_lar_hec
bool is_lar_hec(Identifier id) const
Definition: AtlasDetectorID.h:829
LArRawChannelSimpleBuilder::m_fcalId
const LArFCAL_ID * m_fcalId
Definition: LArRawChannelSimpleBuilder.h:52
CaloCell_ID
Helper class for offline cell identifiers.
Definition: CaloCell_ID.h:34
LArRawChannelSimpleBuilder::m_averageSamplesFCAL
int m_averageSamplesFCAL
Definition: LArRawChannelSimpleBuilder.h:68
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
LArRawChannelSimpleBuilder::m_ADCtoMeVEMECInner
float m_ADCtoMeVEMECInner[2]
Definition: LArRawChannelSimpleBuilder.h:73
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
LArOnlineID_Base::feb_Id
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
Definition: LArOnlineID_Base.cxx:1479
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:221
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
xAOD::EgammaHelpers::isFCAL
bool isFCAL(const xAOD::CaloCluster *cluster)
return true if the cluster (or the majority of its energy) is in the FCAL0
Definition: EgammaxAODHelpers.cxx:46
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArRawChannelSimpleBuilder::m_emId
const LArEM_ID * m_emId
Definition: LArRawChannelSimpleBuilder.h:51
LArEM_Base_ID::is_em_endcap_inner
bool is_em_endcap_inner(const Identifier id) const
test if the id belongs to the EM Endcap inner wheel
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
LArRawChannelSimpleBuilder::m_mode
std::string m_mode
Definition: LArRawChannelSimpleBuilder.h:64
LArADC2MeV
Definition: LArADC2MeV.h:21
CaloGain::LARMEDIUMGAIN
@ LARMEDIUMGAIN
Definition: CaloGain.h:18
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
LArEM_Base_ID::is_em_barrel
bool is_em_barrel(const Identifier id) const
test if the id belongs to the EM barrel
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArHEC_Base_ID::sampling
int sampling(const Identifier id) const
return sampling [0,3] (only 0 for supercells)
LArRawChannelSimpleBuilder::m_averageSamplesHEC
int m_averageSamplesHEC
Definition: LArRawChannelSimpleBuilder.h:68
LArRawChannelSimpleBuilder::m_FCALmodeTime
std::string m_FCALmodeTime
Definition: LArRawChannelSimpleBuilder.h:65
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
LArRawChannelSimpleBuilder::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: LArRawChannelSimpleBuilder.h:54
LArDigits2NtupleDumper.nSamples
nSamples
Definition: LArDigits2NtupleDumper.py:70
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition: CaloGain.h:18
LArRawChannelSimpleBuilder::m_averageScaleFCAL
float m_averageScaleFCAL
Definition: LArRawChannelSimpleBuilder.h:69
LArRawChannelSimpleBuilder::m_averageScaleHEC
float m_averageScaleHEC
Definition: LArRawChannelSimpleBuilder.h:69
AtlasDetectorID::is_lar_em
bool is_lar_em(Identifier id) const
Definition: AtlasDetectorID.h:818
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
readCCLHist.float
float
Definition: readCCLHist.py:83
LArRawChannelSimpleBuilder::m_DataLocation
SG::ReadHandleKey< LArDigitContainer > m_DataLocation
Definition: LArRawChannelSimpleBuilder.h:60
LArID_Exception
Exception class for LAr Identifiers.
Definition: LArID_Exception.h:20
CaloCell_ID::fcal_idHelper
const LArFCAL_ID * fcal_idHelper() const
access to FCAL idHelper
Definition: CaloCell_ID.h:75
fitman.k
k
Definition: fitman.py:528
LArVectorProxy
Proxy for accessing a range of float values like a vector.
Definition: LArVectorProxy.h:38
ServiceHandle< ICondSvc >
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
Identifier
Definition: IdentifierFieldParser.cxx:14