|
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);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ 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 517 of file LArRodDecoder.cxx.
527 int dac,
delay, NStep=-1, StepIndex=-1;
533 std::vector< uint64_t > samplesSum;
534 std::vector< uint64_t > samples2Sum;
540 if (!BlStruct)
return;
554 unsigned int fId32 = fId.get_identifier32().get_compact();
557 ATH_MSG_DEBUG(
"Bad FebID=0x" << std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!" << std::dec);
564 for(; it_feb!=it_feb_end;++it_feb)
572 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
581 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
582 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
583 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
590 fId32 = fId.get_identifier32().get_compact();
594 fId32 = fId.get_identifier32().get_compact();
601 ATH_MSG_DEBUG(
"Feedthrough with id " << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
611 if (fcNb>=NthisFebChannel)
continue;
612 if (samplesSum.size()==0)
continue;
622 const std::vector<HWIdentifier>& calibChannelIDs = calibLineMapping.
calibSlotLine(cId);
623 if (calibChannelIDs.size()==0) {
629 for(std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs.begin(); csl_it!=calibChannelIDs.end();++csl_it){
632 ispulsed_int=( ispulsed_int | ((
uint16_t)ispulsed<<bitShift) );
637 (
uint16_t)ispulsed_int, NStep, StepIndex);
◆ fillCollection() [2/6]
Definition at line 647 of file LArRodDecoder.cxx.
655 std::vector<uint64_t> sampleSum;
656 std::vector< uint64_t > sampleSquare;
662 if (!BlStruct)
return;
671 unsigned int fId32 = fId.get_identifier32().get_compact();
674 ATH_MSG_DEBUG(
"Bad FebID=0x" << std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!" << std::dec);
681 for(; it_feb!=it_feb_end;++it_feb)
689 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
698 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
699 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
700 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
707 fId32 = fId.get_identifier32().get_compact();
711 fId32 = fId.get_identifier32().get_compact();
718 ATH_MSG_DEBUG(
"Feedthrough with id " << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
728 if (fcNb>=NthisFebChannel)
continue;
729 if (sampleSquare.size()==0)
continue;
◆ fillCollection() [3/6]
Definition at line 320 of file LArRodDecoder.cxx.
334 std::vector<short> samples;
336 ATH_MSG_VERBOSE(
"FillCollection for LArCalibDigitContainer is called.");
338 if (!BlStruct)
return;
347 ATH_MSG_DEBUG(
"No Raw Data for this FEB - NULL event for FEBID " << std::hex << BlStruct->
getFEBID());
351 unsigned int fId32 = fId.get_identifier32().get_compact();
354 ATH_MSG_DEBUG(
"Bad FebID=0x"<< std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!");
361 for(; it_feb!=it_feb_end;++it_feb)
369 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
378 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
379 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
380 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
387 fId32 = fId.get_identifier32().get_compact();
391 fId32 = fId.get_identifier32().get_compact();
398 ATH_MSG_DEBUG(
"Feedthrough with id 0x" << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
404 {
if (fcNb>=NthisFebChannel)
406 if (samples.size()==0)
continue;
419 ATH_MSG_VERBOSE(
"Not LArCalibDigit data block found. Building it using DB values");
424 {
msg(MSG::ERROR) <<
"Cannot load LArCalibParams from DetStore!" <<
endmsg;
429 if (!
evt.isValid()) {
433 const unsigned eventNb=
evt->eventNumber();
434 const std::vector<HWIdentifier>* calibChannelIDs;
439 ATH_MSG_DEBUG(
"No Raw Data for this FEB - NULL event for FEBID 0x" << std::hex << BlStruct->
getFEBID() << std::dec);
443 unsigned int fId32 = fId.get_identifier32().get_compact();
446 ATH_MSG_DEBUG(
"Bad FebID=0x" << std::hex << BlStruct->
getFEBID() <<
" found for this FEB, skipping it!" << std::dec);
452 fId32 = fId.get_identifier32().get_compact();
456 fId32 = fId.get_identifier32().get_compact();
466 while ( (!onOffIdMapping.
isOnlineConnected(cId) || calibChannelIDs->size()==0) && fcNb<128);
468 if ( calibChannelIDs->size()==0 ) {
469 msg(MSG::ERROR) <<
"Cannot get calibration Channel ID for FEB " << std::hex << fId32 << std::dec <<
endmsg;
476 std::vector<HWIdentifier>::const_iterator csl_it=calibChannelIDs->begin();
478 dac=calibParams->
DAC(eventNb,*csl_it);
490 if (fcNb>=NthisFebChannel)
continue;
491 if (samples.size()==0)
continue;
498 if (calibChannelIDs->size()!=0) {
499 csl_it=calibChannelIDs->begin();
500 ispulsed=calibParams->
isPulsed(eventNb,*csl_it);
◆ fillCollection() [4/6]
Definition at line 137 of file LArRodDecoder.cxx.
144 std::vector<short> samples;
146 if (!BlStruct)
return;
150 unsigned int fId32 = fId.get_identifier32().get_compact();
152 msg(MSG::WARNING) <<
"Invalid FEB identifer 0x" << std::hex << fId32 << std::dec <<
". Skipping" <<
endmsg;
159 fId32 = fId.get_identifier32().get_compact();
163 fId32 = fId.get_identifier32().get_compact();
170 ATH_MSG_DEBUG(
"No Raw Data for this FEB - NULL event for FEBID 0x"<< std::hex << BlStruct->
getFEBID() << std::dec);
178 for(; it_feb!=it_feb_end;++it_feb)
186 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
195 msg(MSG::WARNING) <<
"Checksum error for FEB: " << MSG::hex << fId32 <<
endmsg;
196 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
197 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum << MSG::dec <<
endmsg;
205 ATH_MSG_DEBUG(
"Feedthrough with id 0x" << MSG::hex << ftId << MSG::dec <<
" not in preselection. Ignored.");
211 {
if (fcNb>=NthisFebChannel)
213 if (samples.size()==0)
continue;
216 dg =
new LArDigit(cId, calogain, std::move(samples));
◆ fillCollection() [5/6]
Definition at line 741 of file LArRodDecoder.cxx.
752 if (!BlStruct)
return;
762 msg(MSG::WARNING) <<
"Invalid FEB identifer " << std:: hex << FEBID32 << std::dec <<
". Skipping" <<
endmsg;
780 ATH_MSG_DEBUG(
"Feedthrough with id 0x" << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
791 larFebHeader->
SetSourceId(robFrag.rod_source_id());
793 larFebHeader->
SetELVL1Id(robFrag.rod_lvl1_id());
794 larFebHeader->
SetBCId(robFrag.rod_bc_id());
814 larFebHeader->
SetFebBCId(robFrag.rod_bc_id());
821 for(
int iadc=0;iadc<16;iadc++) {
826 for(
unsigned int i = 0;
i<nsample;
i++ ) {
◆ fillCollection() [6/6]
Definition at line 228 of file LArRodDecoder.cxx.
238 if (!BlStruct)
return;
242 unsigned int fId32 = fId.get_identifier32().get_compact();
244 msg(MSG::WARNING) <<
"Invalid FEB identifer " << std::hex << fId32 << std::dec <<
". Skipping" <<
endmsg;
252 fId32 = fId.get_identifier32().get_compact();
256 fId32 = fId.get_identifier32().get_compact();
260 ATH_MSG_DEBUG(
"No Physics Data for this FEB - NULL event for FEBID 0x" << std::hex << BlStruct->
getFEBID() << std::dec);
268 for(; it_feb!=it_feb_end;++it_feb)
276 msg(MSG::WARNING) <<
"RodStatus&0x" << std::hex <<
m_StatusNMask <<
" indicates corrupt data for FEB "<< std::hex << fId32 << std::dec <<
". Ignored." <<
endmsg;
286 msg(MSG::WARNING) <<
"Checksum error:" <<
endmsg;
287 msg(MSG::WARNING) <<
" online checksum = " << MSG::hex << onsum <<
endmsg;
288 msg(MSG::WARNING) <<
" offline checksum = " << MSG::hex << offsum <<
endmsg;
296 ATH_MSG_DEBUG(
"Feedthrough with id " << std::hex << ftId << std::dec <<
" not in preselection. Ignored.");
302 if (fcNb>=NthisFebChannel)
308 iprovenance |= 0x2000;
309 iquality = (quality & 0xFFFF);
312 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 914 of file LArRodDecoder.cxx.
917 switch (rodBlockType) {
920 switch (rodMinorVersion) {
926 return std::make_unique<LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0> >();
928 return std::make_unique<LArRodBlockCalibrationV1>();
936 return std::make_unique<LArRodBlockCalibrationV3>();
944 return std::make_unique<LArRodBlockTransparentV0<LArRodBlockHeaderTransparentV0> >();
948 switch (rodMinorVersion) {
950 return std::make_unique<LArRodBlockPhysicsV0>();
952 return std::make_unique<LArRodBlockPhysicsV1>();
960 return std::make_unique<LArRodBlockPhysicsV2>();
962 return std::make_unique<LArRodBlockPhysicsV4>();
966 auto bl = std::make_unique<LArRodBlockPhysicsV5>();
974 auto bl = std::make_unique<LArRodBlockPhysicsV6>();
988 return std::make_unique<LArRodBlockPhysicsV3>();
992 switch (rodMinorVersion) {
994 return std::make_unique<LArRodBlockPhysicsV0>();
997 return std::make_unique<LArRodBlockPhysicsV2>();
1005 switch (rodMinorVersion) {
1007 return std::make_unique<LArRodBlockCalibrationV0<LArRodBlockHeaderCalibrationV0> >();
1012 return std::make_unique<LArRodBlockCalibrationV1>();
1014 return std::make_unique<LArRodBlockCalibrationV2>();
1022 return std::make_unique<LArRodBlockCalibrationV3>();
1031 return std::make_unique<LArRodBlockAccumulatedV3>();
1037 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 872 of file LArRodDecoder.cxx.
876 ATH_MSG_DEBUG(
"Prepare LArRodBlockStructure. Got a fragement of size " <<
n);
880 eformat::helper::Version
ver(robFrag.rod_version());
881 const uint16_t rodMinorVersion=
ver.minor_version();
882 const uint32_t rodBlockType=robFrag.rod_detev_type()&0xff;
890 constexpr
int maxMess = 100;
891 static std::atomic<int> nMess = 1;
892 int thismess = nMess++;
893 if (thismess <= maxMess) {
894 msg(MSG::ERROR) <<
"Could not set fragment (wrong number of samples in data ?) - container will not be filled" <<
endmsg;
895 if (thismess == maxMess)
896 msg(MSG::ERROR) <<
"This message will not be repeated" <<
endmsg;
904 BlStruct->
setGain(RequestedGain);
◆ prepareBlockStructure1()
Definition at line 838 of file LArRodDecoder.cxx.
840 const unsigned MAXMINOR = 12;
841 const unsigned MAXTYPE = 10;
843 if (rodMinorVersion > MAXMINOR || robBlockType > MAXTYPE) {
844 msg(MSG::ERROR) <<
"Bad Rod block type " << robBlockType
845 <<
" / " << rodMinorVersion <<
endmsg;
848 std::vector<std::unique_ptr<LArRodBlockStructure> >& blstructs =
850 unsigned int index = robBlockType * (MAXMINOR+1) + rodMinorVersion;
851 if (blstructs.empty()) {
852 blstructs.resize ((MAXMINOR+1)*(MAXTYPE+1));
854 if (!blstructs[
index]) {
857 if (!blstructs[
index]) {
858 msg(MSG::ERROR) <<
"Bad Rod block type " << robBlockType
859 <<
" / " << rodMinorVersion <<
endmsg;
864 ATH_MSG_DEBUG(
"Found version " << rodMinorVersion <<
" of Rod block type " << robBlockType);
867 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)
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
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)
value_type get_compact() const
Get the compact id.
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
(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
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)