![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
This class provides conversion between ROD data and LArRawChannels.
More...
#include <LArRodDecoder.h>
|
| LArRodDecoder (const std::string &type, const std::string &name, const IInterface *parent) |
| Constructor Standard AlgTool constructor. More...
|
|
virtual | ~LArRodDecoder () |
| Destructor. More...
|
|
virtual StatusCode initialize | ATLAS_NOT_THREAD_SAFE () override |
|
void | setsecfeb (HWIdentifier feb) |
|
uint32_t | fillCollectionHLT (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArCellCollection &coll, LArRodBlockStructure *&providedRodBlockStructure, uint16_t &rodMinorVersion, uint32_t &robBlockType) const |
|
void | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArRawChannelContainer &coll, const CaloGain::CaloGain gain) const |
|
void | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArDigitContainer &coll, const CaloGain::CaloGain gain) const |
|
void | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArAccumulatedCalibDigitContainer &coll, const CaloGain::CaloGain gain, const LArCalibLineMapping &calibLineMapping) const |
|
void | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArAccumulatedDigitContainer &coll, const CaloGain::CaloGain gain) const |
|
void | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArCalibDigitContainer &coll, const CaloGain::CaloGain gain, const LArCalibLineMapping &calibLineMapping, const LArOnOffIdMapping &onOffIdMapping) const |
|
void | fillCollection (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, LArFebHeaderContainer &coll, const CaloGain::CaloGain) const |
|
template<class T > |
bool | check_valid (const T *frag, MsgStream &log) 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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
|
LArRodBlockStructure * | prepareBlockStructure1 (const uint16_t rodMinorVersion, const uint32_t robBlockType) const |
|
LArRodBlockStructure * | prepareBlockStructure (const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, const CaloGain::CaloGain RequestedGain) const |
|
std::unique_ptr< LArRodBlockStructure > | makeBlockStructure (unsigned int rodBlockType, unsigned int rodMinorVersion) const |
|
void | setCellEnergy (LArCell *element, int energy, int time, int quality, CaloGain::CaloGain gain) const |
|
void | writeFebInfo (LArCellCollection &m_coll, LArFebEnergy &febene) const |
|
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...
|
|
This class provides conversion between ROD data and LArRawChannels.
- Author
- H. Ma
- Version
- 0-0-1 , Oct 7, 2002
Modified, Dec 4, 2002 Create either LArRawChannel or LArCell.
Modified, Jan 02, 2003 Moved Encoding part to LArROD_Encoder.
Modified, Jul 23, 2003 by R. Lafaye Added LArDigit support Build on the same structure as LArROD_Encoder No longer an AlgTool
Modified, Aug 5 2003 by W. Lampl Have now functionality to decode:
Modified, Aug 7 2003 by W. Lampl Made a template-function for LArRawChannelCollection and LArRawCellCollection
Modified, Aug 17 2003 by W. Lampl Introduce ability to decode different ROD format versions by using a map of LArRodBlockStructures
Modified, Sept 9 2003 by W. Lampl Change implementation of multiple-version feature. A ROD block type/version is now written as second word of the fragment. Replace std::map by c-style array to increase performance
Modified, Sept 28 2003 by W. Lampl Adapt for new constructor of LArRawChannels. (Needs also gain as parameter)
Modified, November 10 2005 by D.O. Damazio Inclusion of new RodBlock format (Bertrand Laforge). Inclusion of methods for fast decoding of data.
Modified,January 04 2006 by I. Wingerter Inclusion of Accumulated Calib Digit
Modified, May 03 2006 by I. Aracena Inclusion of fillCollectionHLTFeb
Modified, Dec 03 2006 by G. Rosenbaum Loop over all possible pusled calib lines and make isPulsed int which stores which lines 1-4 have been pulsed. (needed for HEC)
Modified Aug 16 2009 by W. Lampl Remove internal accumlation of LArAccumulatedCalibDigit. They are now put in the event store for each substep and contain only data of this substep.
Definition at line 127 of file LArRodDecoder.h.
◆ StoreGateSvc_t
◆ LArRodDecoder()
LArRodDecoder::LArRodDecoder |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
Constructor Standard AlgTool constructor.
Definition at line 40 of file LArRodDecoder.cxx.
46 declareInterface< LArRodDecoder >(
this );
◆ ~LArRodDecoder()
LArRodDecoder::~LArRodDecoder |
( |
| ) |
|
|
virtual |
◆ ATLAS_NOT_THREAD_SAFE()
virtual StatusCode initialize LArRodDecoder::ATLAS_NOT_THREAD_SAFE |
( |
| ) |
|
|
overridevirtual |
◆ check_valid()
template<class T >
bool LArRodDecoder::check_valid |
( |
const T * |
frag, |
|
|
MsgStream & |
log |
|
) |
| const |
|
inline |
Definition at line 254 of file LArRodDecoder.h.
273 msg(MSG::WARNING) <<
"Exception while checking eformat fragment validity: " << ex.what() <<
endmsg;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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
◆ fillCollection() [1/6]
Definition at line 524 of file LArRodDecoder.cxx.
534 int dac,
delay, NStep=-1, StepIndex=-1;
540 std::vector< uint64_t > samplesSum;
541 std::vector< uint64_t > samples2Sum;
547 if (!BlStruct)
return;
561 unsigned int fId32 = fId.get_identifier32().get_compact();
564 ATH_MSG_DEBUG(
"Bad FebID=0x" << std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!" << std::dec);
571 for(; it_feb!=it_feb_end;++it_feb)
579 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
588 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
589 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
590 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
597 fId32 = fId.get_identifier32().get_compact();
601 fId32 = fId.get_identifier32().get_compact();
608 ATH_MSG_DEBUG(
"Feedthrough with id " << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
618 if (fcNb>=NthisFebChannel)
continue;
619 if (samplesSum.size()==0)
continue;
629 const std::vector<HWIdentifier>& calibChannelIDs = calibLineMapping.
calibSlotLine(cId);
630 if (calibChannelIDs.size()==0) {
636 for(std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs.begin(); csl_it!=calibChannelIDs.end();++csl_it){
639 ispulsed_int=( ispulsed_int | ((
uint16_t)ispulsed<<bitShift) );
644 (
uint16_t)ispulsed_int, NStep, StepIndex);
◆ fillCollection() [2/6]
Definition at line 654 of file LArRodDecoder.cxx.
662 std::vector<uint64_t> sampleSum;
663 std::vector< uint64_t > sampleSquare;
669 if (!BlStruct)
return;
678 unsigned int fId32 = fId.get_identifier32().get_compact();
681 ATH_MSG_DEBUG(
"Bad FebID=0x" << std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!" << std::dec);
688 for(; it_feb!=it_feb_end;++it_feb)
696 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
705 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
706 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
707 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
714 fId32 = fId.get_identifier32().get_compact();
718 fId32 = fId.get_identifier32().get_compact();
725 ATH_MSG_DEBUG(
"Feedthrough with id " << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
735 if (fcNb>=NthisFebChannel)
continue;
736 if (sampleSquare.size()==0)
continue;
◆ fillCollection() [3/6]
Definition at line 327 of file LArRodDecoder.cxx.
343 ATH_MSG_VERBOSE(
"FillCollection for LArCalibDigitContainer is called.");
345 if (!BlStruct)
return;
354 ATH_MSG_DEBUG(
"No Raw Data for this FEB - NULL event for FEBID " << std::hex << BlStruct->
getFEBID());
358 unsigned int fId32 = fId.get_identifier32().get_compact();
361 ATH_MSG_DEBUG(
"Bad FebID=0x"<< std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!");
368 for(; it_feb!=it_feb_end;++it_feb)
376 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
385 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
386 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
387 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
394 fId32 = fId.get_identifier32().get_compact();
398 fId32 = fId.get_identifier32().get_compact();
405 ATH_MSG_DEBUG(
"Feedthrough with id 0x" << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
411 {
if (fcNb>=NthisFebChannel)
413 if (
samples.size()==0)
continue;
426 ATH_MSG_VERBOSE(
"Not LArCalibDigit data block found. Building it using DB values");
431 {
msg(MSG::ERROR) <<
"Cannot load LArCalibParams from DetStore!" <<
endmsg;
436 if (!
evt.isValid()) {
440 const unsigned eventNb=
evt->eventNumber();
441 const std::vector<HWIdentifier>* calibChannelIDs;
446 ATH_MSG_DEBUG(
"No Raw Data for this FEB - NULL event for FEBID 0x" << std::hex << BlStruct->
getFEBID() << std::dec);
450 unsigned int fId32 = fId.get_identifier32().get_compact();
453 ATH_MSG_DEBUG(
"Bad FebID=0x" << std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!" << std::dec);
459 fId32 = fId.get_identifier32().get_compact();
463 fId32 = fId.get_identifier32().get_compact();
473 while ( (!onOffIdMapping.
isOnlineConnected(cId) || calibChannelIDs->size()==0) && fcNb<128);
475 if ( calibChannelIDs->size()==0 ) {
476 msg(MSG::ERROR) <<
"Cannot get calibration Channel ID for FEB " << std::hex << fId32 << std::dec <<
endmsg;
483 std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs->begin();
485 dac=calibParams->
DAC(eventNb,*csl_it);
497 if (fcNb>=NthisFebChannel)
continue;
498 if (
samples.size()==0)
continue;
505 if (calibChannelIDs->size()!=0) {
506 csl_it=calibChannelIDs->begin();
507 ispulsed=calibParams->
isPulsed(eventNb,*csl_it);
◆ fillCollection() [4/6]
Definition at line 144 of file LArRodDecoder.cxx.
153 if (!BlStruct)
return;
157 unsigned int fId32 = fId.get_identifier32().get_compact();
159 msg(MSG::WARNING) <<
"Invalid FEB identifer 0x" << std::hex << fId32 << std::dec <<
". Skipping" <<
endmsg;
166 fId32 = fId.get_identifier32().get_compact();
170 fId32 = fId.get_identifier32().get_compact();
177 ATH_MSG_DEBUG(
"No Raw Data for this FEB - NULL event for FEBID 0x"<< std::hex << BlStruct->
getFEBID() << std::dec);
185 for(; it_feb!=it_feb_end;++it_feb)
193 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
202 msg(MSG::WARNING) <<
"Checksum error for FEB: " << MSG::hex << fId32 <<
endmsg;
203 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
204 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum << MSG::dec <<
endmsg;
212 ATH_MSG_DEBUG(
"Feedthrough with id 0x" << MSG::hex << ftId << MSG::dec <<
" not in preselection. Ignored.");
218 {
if (fcNb>=NthisFebChannel)
220 if (
samples.size()==0)
continue;
◆ fillCollection() [5/6]
Definition at line 748 of file LArRodDecoder.cxx.
759 if (!BlStruct)
return;
769 msg(MSG::WARNING) <<
"Invalid FEB identifer " << std:: hex << FEBID32 << std::dec <<
". Skipping" <<
endmsg;
787 ATH_MSG_DEBUG(
"Feedthrough with id 0x" << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
798 larFebHeader->
SetSourceId(robFrag.rod_source_id());
800 larFebHeader->
SetELVL1Id(robFrag.rod_lvl1_id());
801 larFebHeader->
SetBCId(robFrag.rod_bc_id());
821 larFebHeader->
SetFebBCId(robFrag.rod_bc_id());
828 for(
int iadc=0;iadc<16;iadc++) {
833 for(
unsigned int i = 0;
i<nsample;
i++ ) {
◆ fillCollection() [6/6]
Definition at line 235 of file LArRodDecoder.cxx.
245 if (!BlStruct)
return;
249 unsigned int fId32 = fId.get_identifier32().get_compact();
251 msg(MSG::WARNING) <<
"Invalid FEB identifer " << std::hex << fId32 << std::dec <<
". Skipping" <<
endmsg;
259 fId32 = fId.get_identifier32().get_compact();
263 fId32 = fId.get_identifier32().get_compact();
267 ATH_MSG_DEBUG(
"No Physics Data for this FEB - NULL event for FEBID 0x" << std::hex << BlStruct->
getFEBID() << std::dec);
275 for(; it_feb!=it_feb_end;++it_feb)
283 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
293 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
294 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
295 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
303 ATH_MSG_DEBUG(
"Feedthrough with id " << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
309 if (fcNb>=NthisFebChannel)
315 iprovenance |= 0x2000;
316 iquality = (quality & 0xFFFF);
319 coll.push_back(
chan);
◆ fillCollectionHLT()
Definition at line 290 of file LArRodDecoder.h.
299 ATH_MSG_VERBOSE(
"Prepare LArRodBlockStructure. Got a fragment of size " <<
n);
308 msg(MSG::ERROR) <<
"Got truncated ROD Fragment!" <<
endmsg;
315 eformat::helper::Version
ver(robFrag.rod_version());
317 const uint32_t rBT_present=robFrag.rod_detev_type()&0xff;
320 if ( !providedRodBlockStructure || (rodMinorVersion!=rMV_present) || (robBlockType!=rBT_present) ){
327 providedRodBlockStructure = BlStruct;
328 rodMinorVersion = rMV_present;
329 robBlockType = rBT_present;
330 }
else BlStruct = providedRodBlockStructure;
334 (*ii)->setEnergyFast(0.0);
344 if(!BlStruct->setGain(calogain)){
352 if (!(fId.get_identifier32().get_compact())) {
354 ATH_MSG_DEBUG(
"Bad FebID=0x"<< std::hex << BlStruct->getFEBID() << std::dec <<
" found for this FEB, skipping it!");
362 uint32_t onsum = BlStruct->onlineCheckSum();
363 uint32_t offsum = BlStruct->offlineCheckSum();
365 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
366 msg(MSG::WARNING) <<
" online checksum = 0x" << MSG::hex << onsum <<
endmsg;
367 msg(MSG::WARNING) <<
" offline checksum = 0x" << MSG::hex << offsum << MSG::dec <<
endmsg;
375 if ( BlStruct->hasPhysicsBlock() ) {
378 int NthisFebChannel=128 ;
382 if (fcNb>=NthisFebChannel)
continue;
383 collElem = coll[fcNb+nfeb];
386 if ( quality>=0 ) { iprovenance|= 0x2000; iquality=(quality& 0xffff);}
394 while (BlStruct->nextFEB());
396 if ( BlStruct->report_error() )
error |= 0
x1;
398 unsigned int collection_size = coll.
size();
399 if ( feb_number== 0 && collection_size>0 )
error |= 0x20;
400 if ( feb_number== 1 && collection_size !=128 )
error |= 0x20;
401 if ( feb_number== 2 && collection_size !=256 )
error |= 0x20;
◆ inputHandles()
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.
◆ interfaceID()
const InterfaceID & LArRodDecoder::interfaceID |
( |
| ) |
|
|
static |
◆ makeBlockStructure()
std::unique_ptr< LArRodBlockStructure > LArRodDecoder::makeBlockStructure |
( |
unsigned int |
rodBlockType, |
|
|
unsigned int |
rodMinorVersion |
|
) |
| const |
|
private |
Definition at line 921 of file LArRodDecoder.cxx.
924 switch (rodBlockType) {
927 switch (rodMinorVersion) {
933 return std::make_unique<LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0> >();
935 return std::make_unique<LArRodBlockCalibrationV1>();
943 return std::make_unique<LArRodBlockCalibrationV3>();
951 return std::make_unique<LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0> >();
955 switch (rodMinorVersion) {
957 return std::make_unique<LArRodBlockPhysicsV0>();
959 return std::make_unique<LArRodBlockPhysicsV1>();
967 return std::make_unique<LArRodBlockPhysicsV2>();
969 return std::make_unique<LArRodBlockPhysicsV4>();
973 auto bl = std::make_unique<LArRodBlockPhysicsV5>();
981 auto bl = std::make_unique<LArRodBlockPhysicsV6>();
995 return std::make_unique<LArRodBlockPhysicsV3>();
999 switch (rodMinorVersion) {
1001 return std::make_unique<LArRodBlockPhysicsV0>();
1004 return std::make_unique<LArRodBlockPhysicsV2>();
1012 switch (rodMinorVersion) {
1014 return std::make_unique<LArRodBlockCalibrationV0<LArRodBlockHeaderCalibrationV0> >();
1019 return std::make_unique<LArRodBlockCalibrationV1>();
1021 return std::make_unique<LArRodBlockCalibrationV2>();
1029 return std::make_unique<LArRodBlockCalibrationV3>();
1038 return std::make_unique<LArRodBlockAccumulatedV3>();
1044 return std::unique_ptr<LArRodBlockStructure>();
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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.
◆ prepareBlockStructure()
Definition at line 879 of file LArRodDecoder.cxx.
883 ATH_MSG_DEBUG(
"Prepare LArRodBlockStructure. Got a fragement of size " <<
n);
887 eformat::helper::Version
ver(robFrag.rod_version());
888 const uint16_t rodMinorVersion=
ver.minor_version();
889 const uint32_t rodBlockType=robFrag.rod_detev_type()&0xff;
897 constexpr
int maxMess = 100;
898 static std::atomic<int> nMess = 1;
899 int thismess = nMess++;
900 if (thismess <= maxMess) {
901 msg(MSG::ERROR) <<
"Could not set fragment (wrong number of samples in data ?) - container will not be filled" <<
endmsg;
902 if (thismess == maxMess)
903 msg(MSG::ERROR) <<
"This message will not be repeated" <<
endmsg;
911 BlStruct->
setGain(RequestedGain);
◆ prepareBlockStructure1()
Definition at line 845 of file LArRodDecoder.cxx.
847 const unsigned MAXMINOR = 12;
848 const unsigned MAXTYPE = 10;
850 if (rodMinorVersion > MAXMINOR || robBlockType > MAXTYPE) {
851 msg(MSG::ERROR) <<
"Bad Rod block type " << robBlockType
852 <<
" / " << rodMinorVersion <<
endmsg;
855 std::vector<std::unique_ptr<LArRodBlockStructure> >& blstructs =
857 unsigned int index = robBlockType * (MAXMINOR+1) + rodMinorVersion;
858 if (blstructs.empty()) {
859 blstructs.resize ((MAXMINOR+1)*(MAXTYPE+1));
861 if (!blstructs[
index]) {
864 if (!blstructs[
index]) {
865 msg(MSG::ERROR) <<
"Bad Rod block type " << robBlockType
866 <<
" / " << rodMinorVersion <<
endmsg;
871 ATH_MSG_DEBUG(
"Found version " << rodMinorVersion <<
" of Rod block type " << robBlockType);
874 return blstructs[
index].get();
◆ renounce()
◆ renounceArray()
◆ setCellEnergy()
◆ setsecfeb()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ writeFebInfo()
◆ ATLAS_THREAD_SAFE
◆ m_CheckSum
bool LArRodDecoder::m_CheckSum |
|
private |
◆ m_delayScale
double LArRodDecoder::m_delayScale |
|
private |
◆ m_detStore
◆ m_evt
◆ m_evtStore
◆ m_febExchange
bool LArRodDecoder::m_febExchange |
|
private |
◆ m_febId1
unsigned int LArRodDecoder::m_febId1 |
|
private |
◆ m_febId2
unsigned int LArRodDecoder::m_febId2 |
|
private |
◆ m_febIdHLT
unsigned int LArRodDecoder::m_febIdHLT = 0U |
|
private |
◆ m_firstSample
int LArRodDecoder::m_firstSample |
|
private |
◆ m_IgnoreCheckFEBs
std::vector<unsigned int> LArRodDecoder::m_IgnoreCheckFEBs |
|
private |
◆ m_LArCellCorrNames
std::vector<std::string> LArRodDecoder::m_LArCellCorrNames |
|
private |
◆ m_LArCellCorrTools
◆ m_LArCellEthreshold
float LArRodDecoder::m_LArCellEthreshold |
|
private |
◆ m_MultiDSPMode
bool LArRodDecoder::m_MultiDSPMode |
|
private |
◆ m_onlineHelper
◆ m_readtdc
bool LArRodDecoder::m_readtdc |
|
private |
◆ m_requiredPhysicsNSamples
unsigned short LArRodDecoder::m_requiredPhysicsNSamples |
|
private |
◆ m_StatusMask
uint32_t LArRodDecoder::m_StatusMask |
|
private |
◆ m_StatusNMask
uint32_t LArRodDecoder::m_StatusNMask = 0U |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vBEPreselection
std::vector<int> LArRodDecoder::m_vBEPreselection |
|
private |
◆ m_vFinalPreselection
std::vector<unsigned int> LArRodDecoder::m_vFinalPreselection |
|
private |
◆ m_vFTPreselection
std::vector<int> LArRodDecoder::m_vFTPreselection |
|
private |
◆ m_vhka
◆ m_vPosNegPreselection
std::vector<int> LArRodDecoder::m_vPosNegPreselection |
|
private |
The documentation for this class was generated from the following files:
virtual uint16_t getNbSweetCells1() const
virtual uint32_t getNumberOfSamples() const
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
Data class for calibration ADC samples preprocessed by the DSP.
virtual uint32_t hasAccumBlock() const
virtual uint32_t hasPhysicsBlock() const
std::vector< unsigned int > m_vFinalPreselection
virtual uint16_t getStepIndex() const
virtual int setGain(const int GainValue)
virtual uint16_t getNbSweetCells2() const
void set(const CaloDetDescrElement *caloDDE, const Identifier &ID)
Fast method to change the identity of a cell.
const LArOnlineID * m_onlineHelper
virtual int getNextAccumulatedDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &corr2Sum, uint32_t &gain)
SG::ReadHandleKey< xAOD::EventInfo > m_evt
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< std::string > m_LArCellCorrNames
const std::vector< HWIdentifier > & calibSlotLine(const HWIdentifier id) const
virtual uint16_t getNTrigger() const
virtual uint16_t getRawDataSize() const
virtual uint16_t getNStep() const
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
#define ATH_MSG_VERBOSE(x)
std::vector< unsigned int > m_IgnoreCheckFEBs
virtual uint32_t hasRawDataBlock() const
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
std::vector< int > m_vPosNegPreselection
virtual uint16_t getCtrl2(uint32_t adc) const
virtual uint32_t offlineCheckSum() const
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual uint32_t getDspCodeVersion() const
virtual void setOwner(IDataHandleHolder *o)=0
std::vector< int > m_vFTPreselection
void setDelayScale(const double scale)
set delay scale
std::unique_ptr< LArRodBlockStructure > makeBlockStructure(unsigned int rodBlockType, unsigned int rodMinorVersion) const
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Data class for ADC samples and autocorr preprocessed by the DSP.
virtual int32_t getDspEventCounter() const
value_type get_compact(void) const
Get the compact id.
(Non-const) Iterator class for DataVector/DataList.
Liquid Argon digit base class.
Liquid Argon ROD output object base class.
int channelInSlotMax(const HWIdentifier Id) const
Return the Maximum channel number of a given feb slot.
::StatusCode StatusCode
StatusCode definition for legacy code.
virtual bool canSetCalibration()
bool isPulsed(const unsigned event, const HWIdentifier calibLineID) const
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
virtual uint32_t hasControlWords() const
uint32_t getFEBID() const
double delay(std::size_t d)
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
bool isValidId(const HWIdentifier id) const
Returns false if the identifier is not a LAr-online id or any of the sub-fields is out of range.
virtual void renounce()=0
std::vector< int > m_vBEPreselection
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
unsigned DAC(const unsigned event, const HWIdentifier calibLineID) const
Base class for LArDigits taken during calibration runs.
unsigned Delay(const unsigned event, const HWIdentifier calibLineID) const
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Data object for LAr calorimeter readout cell.
float m_LArCellEthreshold
setEventNumber setTimeStamp bcid
virtual uint16_t getResults2Size() const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
LArRodBlockStructure * prepareBlockStructure(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &robFrag, const uint32_t *p, uint32_t n, const CaloGain::CaloGain RequestedGain) const
def time(flags, cells_name, *args, **kw)
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
virtual uint16_t getCtrl3(uint32_t adc) const
virtual uint32_t getStatus() const
virtual uint16_t getCtrl1(uint32_t adc) const
bool setFragment(const uint32_t *p, uint32_t n)
virtual uint16_t getDelay() const
virtual uint32_t hasCalibBlock() const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
virtual uint16_t getDAC() const
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &Samples2Sum, uint32_t &nStepTriggers, uint32_t &gain)
virtual uint32_t onlineCheckSum() const
unsigned short m_requiredPhysicsNSamples
virtual bool getPulsed(unsigned channelNumber) const
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
LArRodBlockStructure * prepareBlockStructure1(const uint16_t rodMinorVersion, const uint32_t robBlockType) const
virtual uint16_t getResults1Size() const
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
bool isOnlineConnected(const HWIdentifier &sid) const
Test whether a HWIdentifier is connected of not (inline)
HWIdentifier feedthrough_Id(int barrel_ec, int pos_neg, int feedthrough) const
Create a feedthrough identifier from fields.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
void setFirstSample(const int rearrangeFirstSample)