ATLAS Offline Software
TileRawChannelContByteStreamTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
8 
11 
16 
23 
24 #include <map>
25 #include <stdint.h>
26 
27 static const InterfaceID IID_ITileRawChannelContByteStreamTool("TileRawChannelContByteStreamTool", 1, 0);
28 
30  return IID_ITileRawChannelContByteStreamTool;
31 }
32 
33 // default constructor
34 
36  const std::string& name, const IInterface* parent)
38  , m_tileHWID(0)
39  , m_verbose(false)
40  , m_maxChannels(TileCalibUtils::MAX_CHAN)
41 {
42  declareInterface<TileRawChannelContByteStreamTool>(this);
43 }
44 
45 // destructor
46 
48 }
49 
51 
52  ATH_MSG_INFO ("Initializing TileRawChannelContByteStreamTool");
53 
54  ATH_CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
55 
56  ToolHandle<TileROD_Decoder> dec("TileROD_Decoder");
57  ATH_CHECK( dec.retrieve() );
58 
59  // get TileCondToolEmscale
60  ATH_CHECK( m_tileToolEmscale.retrieve() );
61 
62  // get TileBadChanTool
63  ATH_CHECK( m_tileBadChanTool.retrieve() );
64 
66 
68 
69  return StatusCode::SUCCESS;
70 }
71 
73  ATH_MSG_INFO ("Finalizing TileRawChannelContByteStreamTool successfuly");
74  return StatusCode::SUCCESS;
75 }
76 
78 {
79  bool isTMDB = evtStore()->proxy(rawChannelContainer)->name() == "MuRcvRawChCnt";
80 
81  TileFragHash::TYPE contType = rawChannelContainer->get_type();
82  TileRawChannelUnit::UNIT inputUnit = rawChannelContainer->get_unit();
83  TileRawChannelUnit::UNIT outputUnit = inputUnit;
84 
85  bool oflCont = (inputUnit < TileRawChannelUnit::OnlineOffset);
86 
89 
90  ATH_MSG_DEBUG( " Number of raw channel collections... " << rawChannelContainer->size() << " " << evtStore()->proxy(rawChannelContainer)->name());
91 
92  std::map<uint32_t, TileROD_Encoder> mapEncoder;
93  std::vector<TileFastRawChannel> channels;
95 
96  uint32_t reid = 0x0;
97 
98  for (const TileRawChannelCollection* rawChannelCollection : *rawChannelContainer) {
99 
100  TileRawChannelCollection::ID frag_id = rawChannelCollection->identify();
101 
102  if (isTMDB) reid = hid2re->getRodTileMuRcvID(frag_id);
103  else reid = hid2re->getRodID(frag_id);
104 
105  TileROD_Encoder& encoder = mapEncoder[reid];
106 
107  encoder.setTileHWID(m_tileHWID, m_verbose, 4);
108  encoder.setTypeAndUnit(contType, outputUnit);
109  encoder.setMaxChannels(m_maxChannels);
110 
111  HWIdentifier drawer_id = m_tileHWID->drawer_id(frag_id);
112 
113  int ros = m_tileHWID->ros(drawer_id);
114  int drawer = m_tileHWID->drawer(drawer_id);
115  int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
116 
117  int nChannels = 0;
118 
119  for (const TileRawChannel* rawChannel : *rawChannelCollection) {
120 
121  HWIdentifier adc_id = rawChannel->adc_HWID();
122  int channel = m_tileHWID->channel(adc_id);
123  int adc = m_tileHWID->adc(adc_id);
124  float amplitude = rawChannel->amplitude();
125  float time = rawChannel->time();
126  float quality = rawChannel->quality();
127  if (isTMDB) {
128  channels.emplace_back (frag_id, channel, adc, amplitude, 0., 0.);
129  } else {
130  if (oflCont) {
131  if (quality > 15.0) quality = 15.0;
132  if (m_tileBadChanTool->getAdcStatus(drawerIdx, channel, adc).isBad()) quality += 16.;
133  }
134  //amplitude = m_tileToolEmscale->channelCalib(drawerIdx, channel, adc, amplitude, inputUnit, outputUnit);
135  channels.emplace_back (frag_id, channel, adc, amplitude, time, quality);
136  }
137 
138  // Don't need to worry about these moving due to the reserve() above.
139  encoder.add(&channels.back());
140  ++nChannels;
141  }
142 
143  ATH_MSG_DEBUG( " Collection " << MSG::hex << "0x" << frag_id
144  << " ROD " << "0x" << reid
145  << " number of channels " << MSG::dec << nChannels );
146  }
147 
148  // TileROD_Encoder has collected all the channels, now can fill the
149  // ROD block data.
150 
151  for (std::pair<const uint32_t, TileROD_Encoder>& reidAndEncoder: mapEncoder) {
152 
153  theROD = fea->getRodData(reidAndEncoder.first);
154  TileROD_Encoder& theEncoder = reidAndEncoder.second;
155 
156  if ((reidAndEncoder.first & 0xf00)) {
157  theEncoder.fillRODTileMuRcvRawChannel(*theROD);
158  } else {
159  if (m_doFragType4) theEncoder.fillROD4(*theROD);
160  if (m_doFragType5) theEncoder.fillROD5(*theROD);
161  }
162  ATH_MSG_DEBUG( " Number of TileRawChannel words in ROD " << MSG::hex << " 0x" << reidAndEncoder.first << MSG::dec << " : " << theROD->size() );
163  }
164 
165  return StatusCode::SUCCESS;
166 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
TileRawChannelContainer
Definition: TileRawChannelContainer.h:13
TileRawChannelCollection.h
TileRawChannel.h
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FullEventAssembler
Template class for assembling a full atlas raw event from subfragments.
Definition: FullEventAssembler.h:40
TileRawChannelContByteStreamTool::m_doFragType5
Gaudi::Property< bool > m_doFragType5
Definition: TileRawChannelContByteStreamTool.h:61
TileROD_Encoder::fillRODTileMuRcvRawChannel
void fillRODTileMuRcvRawChannel(std::vector< uint32_t > &v)
Definition: TileROD_Encoder.cxx:641
TileCablingService::getInstance
static const TileCablingService * getInstance()
get pointer to service instance
Definition: TileCablingService.cxx:24
TileRawChannelContByteStreamTool::m_tileHWID
const TileHWID * m_tileHWID
Definition: TileRawChannelContByteStreamTool.h:67
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TileROD_Encoder::setTileHWID
void setTileHWID(const TileHWID *tileHWID, bool verbose, unsigned int type=4)
set all necessary parameters for the encoder
Definition: TileROD_Encoder.cxx:36
TileCalibUtils
Static class providing several utility functions and constants.
Definition: TileCalibUtils.h:15
TileROD_Encoder
Provides conversion from TileRawChannel, TileL2 and TMDB (digits,MF raw channel,decision) to ROD form...
Definition: TileROD_Encoder.h:46
TileFragHash::TYPE
TYPE
initialize
Definition: TileFragHash.h:33
TileROD_Encoder::fillROD4
void fillROD4(std::vector< uint32_t > &v)
Definition: TileROD_Encoder.cxx:383
TileCalibUtils.h
TileRawChannelContByteStreamTool::m_initializeForWriting
Gaudi::Property< bool > m_initializeForWriting
Definition: TileRawChannelContByteStreamTool.h:62
HWIdentifier
Definition: HWIdentifier.h:13
TileRawChannelContByteStreamTool::~TileRawChannelContByteStreamTool
virtual ~TileRawChannelContByteStreamTool()
destructor
Definition: TileRawChannelContByteStreamTool.cxx:47
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
ReadCondHandle.h
TileHWID::channel
int channel(const HWIdentifier &id) const
extract channel field from HW identifier
Definition: TileHWID.h:189
TileRawChannelContByteStreamTool::m_tileToolEmscale
ToolHandle< TileCondToolEmscale > m_tileToolEmscale
Handle to Tile calibration tool.
Definition: TileRawChannelContByteStreamTool.h:71
dq_defect_copy_defect_database.channels
def channels
Definition: dq_defect_copy_defect_database.py:56
TileROD_Encoder::setTypeAndUnit
void setTypeAndUnit(TileFragHash::TYPE type, TileRawChannelUnit::UNIT unit)
set OF algorigtm type and amplitude units for a drawer
Definition: TileROD_Encoder.cxx:65
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TileHWID::ros
int ros(const HWIdentifier &id) const
extract ros field from HW identifier
Definition: TileHWID.h:167
TileRawChannelContainer.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TileROD_Encoder::add
void add(const TileFastRawChannel *rc)
add TileRawChannels to the current list
Definition: TileROD_Encoder.h:73
TileHWID::adc
int adc(const HWIdentifier &id) const
extract adc field from HW identifier
Definition: TileHWID.h:193
TileRawChannelCollection::ID
MyBase::ID ID
Definition: TileRawChannelCollection.h:17
TileROD_Encoder::fillROD5
void fillROD5(std::vector< uint32_t > &v)
Definition: TileROD_Encoder.cxx:498
TileHWID.h
TileCablingService.h
TileROD_Decoder.h
TileCondToolEmscale.h
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
TileRawChannelUnit::OnlineOffset
@ OnlineOffset
Definition: TileRawChannelUnit.h:25
TileRawChannel
Definition: TileRawChannel.h:35
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
TileRawChannelUnit::UNIT
UNIT
Definition: TileRawChannelUnit.h:16
TileROD_Encoder::setMaxChannels
void setMaxChannels(int maxChannels)
set maximum number of channels in a drawer
Definition: TileROD_Encoder.cxx:105
TileRawChannelContByteStreamTool::m_verbose
bool m_verbose
Definition: TileRawChannelContByteStreamTool.h:68
TileHWID::drawer_id
HWIdentifier drawer_id(int frag) const
ROS HWIdentifer.
Definition: TileHWID.cxx:186
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
errorcheck.h
Helpers for checking error return status codes and reporting errors.
TileRawChannelCollection
Definition: TileRawChannelCollection.h:12
TileRawChannelContByteStreamTool::initialize
virtual StatusCode initialize() override
Definition: TileRawChannelContByteStreamTool.cxx:50
TileRawChannelContByteStreamTool::m_tileBadChanTool
ToolHandle< ITileBadChanTool > m_tileBadChanTool
Handle to Tile bad channel tool.
Definition: TileRawChannelContByteStreamTool.h:75
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
TileROD_Encoder.h
TileRawChannelContByteStreamTool::m_doFragType4
Gaudi::Property< bool > m_doFragType4
Definition: TileRawChannelContByteStreamTool.h:60
TileRawChannelContByteStreamTool::convert
StatusCode convert(CONTAINER *cont, FullEventAssembler< TileHid2RESrcID > *fea) const
Provides conversion from TileRawChannelContainer to BS.
Definition: TileRawChannelContByteStreamTool.cxx:77
TileHWID::channel_hash_max
size_type channel_hash_max(void) const
channel hash table max size
Definition: TileHWID.h:272
TileHWID::drawer
int drawer(const HWIdentifier &id) const
extract drawer field from HW identifier
Definition: TileHWID.h:171
TileRawChannelContByteStreamTool::m_hid2RESrcIDKey
SG::ReadCondHandleKey< TileHid2RESrcID > m_hid2RESrcIDKey
Definition: TileRawChannelContByteStreamTool.h:64
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
ReadFloatFromCool.adc
adc
Definition: ReadFloatFromCool.py:48
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TileRawChannelContByteStreamTool.h
FullEventAssembler::RODDATA
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
Definition: FullEventAssembler.h:54
TileCalibUtils::getDrawerIdx
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
Definition: TileCalibUtils.cxx:60
TileCablingService::getMaxChannels
int getMaxChannels(void) const
Definition: TileCablingService.h:100
TileAANtupleConfig.rawChannelContainer
rawChannelContainer
Definition: TileAANtupleConfig.py:120
AthAlgTool
Definition: AthAlgTool.h:26
TileRawChannelContByteStreamTool::m_maxChannels
int m_maxChannels
maximum number of channels in a drawer
Definition: TileRawChannelContByteStreamTool.h:79
ITileBadChanTool.h
TileFastRawChannel.h
TileRawChannelContByteStreamTool::interfaceID
static const InterfaceID & interfaceID()
AlgTool InterfaceID.
Definition: TileRawChannelContByteStreamTool.cxx:29
TileRawChannelContByteStreamTool::TileRawChannelContByteStreamTool
TileRawChannelContByteStreamTool(const std::string &type, const std::string &name, const IInterface *parent)
constructor
Definition: TileRawChannelContByteStreamTool.cxx:35
FullEventAssembler::getRodData
RODDATA * getRodData(uint32_t id)
get a block of ROD data
TileRawChannelContByteStreamTool::finalize
virtual StatusCode finalize() override
Definition: TileRawChannelContByteStreamTool.cxx:72