ATLAS Offline Software
Loading...
Searching...
No Matches
CscRDO_Decoder.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "CscRDO_Decoder.h"
6
7#include "GaudiKernel/TypeNameString.h"
10
12Muon::CscRDO_Decoder::CscRDO_Decoder(const std::string& type, const std::string& name, const IInterface* parent) :
13 base_class(type, name, parent) {}
14
16 ATH_MSG_DEBUG("CscRDO_Decoder::initialize");
17 ATH_CHECK(m_cabling.retrieve());
18 ATH_CHECK(m_cscCalibTool.retrieve());
19 ATH_MSG_DEBUG(" Parameters are from CscCalibTool ");
20 m_samplingTime = m_cscCalibTool->getSamplingTime();
21 m_signalWidth = m_cscCalibTool->getSignalWidth();
22 m_timeOffset = m_cscCalibTool->getTimeOffset();
23 ATH_MSG_DEBUG(" Initialization is done!");
24 return StatusCode::SUCCESS;
25}
26
27void Muon::CscRDO_Decoder::getDigit(const CscRawData* rawData, const CscIdHelper* cscIdHelper, Identifier& moduleId, Identifier& channelId,
28 double& adc, double& time) const {
29 // get the raw data
30 uint32_t address = rawData->address();
31
32 // initialize some parameters
33 CscRODReadOut rodReadOut;
34 rodReadOut.set(cscIdHelper);
35 rodReadOut.setChamberBitVaue(1);
37
38 adc = rodReadOut.findCharge(m_samplingTime, rawData->samples(), time);
39
40 // now decode the encoded fragments
41 // find the Identifier and charge
42 moduleId = rodReadOut.decodeAddress(address);
43 channelId = rodReadOut.decodeAddress(address, moduleId);
44}
45
48 uint32_t address = rawData->address();
49
50 // initialize some parameters
51 CscRODReadOut rodReadOut;
52 rodReadOut.set(cscIdHelper);
53 rodReadOut.setChamberBitVaue(1);
55
57 return rodReadOut.decodeAddress(address);
58}
59
60Identifier Muon::CscRDO_Decoder::channelIdentifier(const CscRawData* rawData, const CscIdHelper* cscIdHelper, int j) const {
62 uint32_t address = rawData->address();
63
64 // initialize some parameters
65 CscRODReadOut rodReadOut;
66 rodReadOut.set(cscIdHelper);
67 rodReadOut.setChamberBitVaue(1);
69
71 Identifier moduleId = rodReadOut.decodeAddress(address);
72
73 ATH_MSG_DEBUG(" CscRDO_Decoder OUTPUT ::: " << m_timeOffset << " " << m_samplingTime << " " << m_signalWidth << " "
74 << " " << m_detdescr << " " << address << " " << moduleId << " " << j);
75
76 return rodReadOut.decodeAddress(address, moduleId, j);
77}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
Identifier decodeAddress(const uint32_t address) const
void setParams(double timeOffset, double signalWidth)
void set(const CscIdHelper *cscIdHelper)
static int findCharge(double samplingTime, const std::vector< uint16_t > &amplitude, double &time)
void setChamberBitVaue(uint32_t value)
Class to hold the electronic output for a single CSC readout channel: n sampling ADC data + the addre...
Definition CscRawData.h:21
uint32_t address() const
Definition CscRawData.h:131
const std::vector< uint16_t > & samples() const
Definition CscRawData.h:130
virtual Identifier channelIdentifier(const CscRawData *rawData, const CscIdHelper *cscIdHelper, int j) const override final
CscRDO_Decoder(const std::string &type, const std::string &name, const IInterface *parent)
constructor
virtual StatusCode initialize() override final
ToolHandle< ICscCalibTool > m_cscCalibTool
virtual void getDigit(const CscRawData *rawData, const CscIdHelper *cscIdHelper, Identifier &moduleId, Identifier &channelId, double &adc, double &time) const override final
ServiceHandle< CSCcablingSvc > m_cabling
virtual Identifier stationIdentifier(const CscRawData *rawData, const CscIdHelper *cscIdHelper) const override final