ATLAS Offline Software
Loading...
Searching...
No Matches
CscRODReadOutV0 Class Reference

#include <CscRODReadOutV0.h>

Collaboration diagram for CscRODReadOutV0:

Public Member Functions

 CscRODReadOutV0 ()
 ~CscRODReadOutV0 ()=default
uint32_t getHeaderMarker ()
uint32_t getHeaderSize ()
uint32_t getFooterSize ()
uint32_t getFormatVersion ()
double getSamplingTime ()
double getStartTime ()
double getConversion ()
double getMaxTimeBin ()
uint32_t getSourceID (uint16_t side, uint16_t rodId)
void encodeFragments (const uint16_t *amplitude, const uint32_t &address, std::vector< uint32_t > &v) const
void set (const CscIdHelper *cscHelper)
bool isBody (const uint32_t fragment) const
bool isAmplitude (const uint16_t fragment) const
bool isAddress (const uint32_t fragment) const
void decodeSourceID (uint32_t sourceId)
void decodeAmplitude (const uint32_t fragment, int index)
void decodeAddress (const uint32_t fragment)
Identifier decodeAddress ()
Identifier decodeAddress (const Identifier &moduleId)
double findCharge ()
double signal_amplitude (double samplingTime) const
uint32_t address (const Identifier &channelId, int &eta, int &phi) const
uint16_t sourceID () const
uint16_t moduleType () const
uint16_t subDetectorId () const
uint16_t rodId () const
uint16_t getAmp1 () const
uint16_t getAmp2 () const
uint16_t getAmp3 () const
uint16_t getAmp4 () const
uint32_t address () const

Private Member Functions

void set32bits (const uint16_t *v16, uint32_t &v32) const
double signal (double z) const

Private Attributes

const CscIdHelperm_cscHelper
uint16_t m_sourceID
uint16_t m_moduleType
uint16_t m_rodId
uint16_t m_subDetectorId
uint16_t m_amp1
uint16_t m_amp2
uint16_t m_amp3
uint16_t m_amp4
uint32_t m_address
double m_norm
double m_TIME_OFFSET
double m_SIGNAL_WIDTH
double m_SAMPLING_TIME
int m_NUMBER_OF_INTEGRATION
double m_CHARGE_TO_ADC_COUNT
double m_Z0

Static Private Attributes

static const uint32_t ROD_HEADER = 0xEE1234EE
static const uint32_t ROD_HEADER_SIZE = 0x8
static const uint32_t ROD_VERSION = 0x00000000
static const uint32_t ROD_FOOTER_SIZE = 0x3
static const uint16_t SOURCE_ID = 0x00
static const uint16_t MODULE_TYPE = 0x00
static const uint16_t BODY_AMPLITUDE = 0x000A
static const uint32_t BODY_ADDRESS = 0x0000000C

Detailed Description

Definition at line 19 of file CscRODReadOutV0.h.

Constructor & Destructor Documentation

◆ CscRODReadOutV0()

CscRODReadOutV0::CscRODReadOutV0 ( )

Definition at line 8 of file CscRODReadOutV0.cxx.

8 :
9 m_cscHelper(nullptr),
10 m_sourceID(0),
11 m_moduleType(0),
12 m_rodId(0),
14 m_amp1(0),
15 m_amp2(0),
16 m_amp3(0),
17 m_amp4(0),
18 m_address(0) {
19 m_TIME_OFFSET = 46.825; // ns
20 m_SIGNAL_WIDTH = 16.08; // ns
21 m_SAMPLING_TIME = 50.0; // ns
22 m_Z0 = 9.394; // time bin at the maximum
23 // obtained by setting the derivative = 0
24 // this gives 2 solutions: Z0=9.394 and 16.606
25 // 9.394 is for positive amplitude
26
28
29 // conversion factor from ee charge to ADC count
30 // assuming for now 1 ADC count = 0.32 femtoCoulomb!
31
32 /* From Valeri Tcherniatine --- April 11, 2004
33 conversion= ( e*G*k*m*d*1.6e-19)/2000
34 e=75 - average number ionization e in CSC
35 G=10^5 - gas gain
36 k=0.15 - factor taking to account electronic time integration (charge
37 deficit) and only one cathode readout
38 m=0.5 - part of induce charge contained in max. strip
39 d=7 - value of dynamic range expressed in average particle ionization
40 deposition in CSC. At this value (7) out of region inefficiency is <2%.
41 1.6e-19 - e charge
42 2000 - max. ADC counts for positive part of signal
43 Collect all numbers together conversion = 0.32 femtoCoulomb per ADC count
44 */
45
46 m_CHARGE_TO_ADC_COUNT = (0.32e-15) / (1.602e-19);
48}
double signal(double z) const
uint16_t m_subDetectorId
const CscIdHelper * m_cscHelper
double m_CHARGE_TO_ADC_COUNT

◆ ~CscRODReadOutV0()

CscRODReadOutV0::~CscRODReadOutV0 ( )
default

Member Function Documentation

◆ address() [1/2]

uint32_t CscRODReadOutV0::address ( ) const
inline

Definition at line 65 of file CscRODReadOutV0.h.

65{ return m_address; }

◆ address() [2/2]

uint32_t CscRODReadOutV0::address ( const Identifier & channelId,
int & eta,
int & phi ) const
inline

Definition at line 178 of file CscRODReadOutV0.h.

178 {
179 // unpack the strip identifier
180 int name = m_cscHelper->stationName(channelId);
181 eta = m_cscHelper->stationEta(channelId);
182 phi = m_cscHelper->stationPhi(channelId);
183 int chamberLayer = m_cscHelper->chamberLayer(channelId);
184 int wireLayer = m_cscHelper->wireLayer(channelId);
185 int orientation = m_cscHelper->measuresPhi(channelId);
186 int strip = m_cscHelper->strip(channelId);
187
188 // redefine the ranges
189 uint32_t nameIndex = uint32_t(name - 50);
190 uint32_t etaIndex = (eta == -1) ? 0 : 1;
192 uint32_t chamberIndex = uint32_t(chamberLayer - 1);
193 uint32_t layerIndex = uint32_t(wireLayer - 1);
194 uint32_t stripType = uint32_t(orientation);
195 uint32_t stripNumber = uint32_t(strip);
196
197 // build the address
199 nameIndex << 17 | etaIndex << 16 | phiIndex << 13 | chamberIndex << 12 | layerIndex << 9 | stripType << 8 | stripNumber;
200
201 return address;
202}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
uint32_t address(const Identifier &channelId, int &eta, int &phi) const
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition EtaPhiLUT.cxx:23
setEventNumber uint32_t

◆ decodeAddress() [1/3]

Identifier CscRODReadOutV0::decodeAddress ( )
inline

Definition at line 148 of file CscRODReadOutV0.h.

148 {
149 int stationName = ((m_address & 0x00020000) >> 17) + 50;
150 int stationEta = (((m_address & 0x00010000) >> 16) == 0x0) ? -1 : 1;
151 int stationPhi = ((m_address & 0x0000E000) >> 13) + 1;
152
153 return m_cscHelper->elementID(stationName, stationEta, stationPhi);
154}
constexpr uint8_t stationPhi
station Phi 1 to 8

◆ decodeAddress() [2/3]

Identifier CscRODReadOutV0::decodeAddress ( const Identifier & moduleId)
inline

Definition at line 156 of file CscRODReadOutV0.h.

156 {
157 int chamberLayer = ((m_address & 0x00001000) >> 12) + 1;
158 int wireLayer = ((m_address & 0x00000E00) >> 9) + 1;
159 int measuresPhi = ((m_address & 0x00000100) >> 8);
160 int strip = (m_address & 0x000000FF);
161 return m_cscHelper->channelID(moduleId, chamberLayer, wireLayer, measuresPhi, strip);
162}

◆ decodeAddress() [3/3]

void CscRODReadOutV0::decodeAddress ( const uint32_t fragment)
inline

Definition at line 146 of file CscRODReadOutV0.h.

146{ m_address = 0x0003FFFF & fragment; }

◆ decodeAmplitude()

void CscRODReadOutV0::decodeAmplitude ( const uint32_t fragment,
int index )
inline

Definition at line 132 of file CscRODReadOutV0.h.

132 {
133 uint32_t amp1 = 0;
134 uint32_t amp2 = 0;
135 amp1 = 0x0000FFFF & fragment;
136 amp2 = (0xFFFF0000 & fragment) >> 16;
137 if (index == 1) {
138 m_amp1 = 0x0FFF & amp1;
139 m_amp2 = 0x0FFF & amp2;
140 } else {
141 m_amp3 = 0x0FFF & amp1;
142 m_amp4 = 0x0FFF & amp2;
143 }
144}

◆ decodeSourceID()

void CscRODReadOutV0::decodeSourceID ( uint32_t sourceId)
inline

Definition at line 108 of file CscRODReadOutV0.h.

108 {
109 m_sourceID = (sourceID & 0xff000000) >> 24;
110 m_moduleType = (sourceID & 0x00ff0000) >> 16;
111 m_subDetectorId = (sourceID & 0x0000ff00) >> 8;
112 m_rodId = (sourceID & 0x000000ff);
113}
uint16_t sourceID() const

◆ encodeFragments()

void CscRODReadOutV0::encodeFragments ( const uint16_t * amplitude,
const uint32_t & address,
std::vector< uint32_t > & v ) const

Definition at line 53 of file CscRODReadOutV0.cxx.

53 {
54 uint16_t amp[2] = {0, 0};
55 uint32_t v32 = 0;
56
57 for (int i = 0; i < 2; i++) amp[i] = (BODY_AMPLITUDE << 12) | *(amplitude + i);
58 set32bits(amp, v32);
59 v[0] = v32;
60 v32 = 0;
61 for (int i = 2; i < 4; i++) amp[i - 2] = (BODY_AMPLITUDE << 12) | *(amplitude + i);
62 set32bits(amp, v32);
63 v[1] = v32;
64
65 v[2] = (BODY_ADDRESS << 28) | address;
66}
static const uint16_t BODY_AMPLITUDE
static const uint32_t BODY_ADDRESS
void set32bits(const uint16_t *v16, uint32_t &v32) const
setWord1 uint16_t

◆ findCharge()

double CscRODReadOutV0::findCharge ( )

Definition at line 68 of file CscRODReadOutV0.cxx.

68 {
69 const int N_SAMPLE = 4;
70
71 // the sampling times
72 double time[N_SAMPLE];
73 for (int i = 0; i < N_SAMPLE; i++) time[i] = (i + 1) * m_SAMPLING_TIME + m_TIME_OFFSET;
74
75 // the corresponding amplitudes
76 uint16_t amp[N_SAMPLE];
77 amp[0] = m_amp1;
78 amp[1] = m_amp2;
79 amp[2] = m_amp3;
80 amp[3] = m_amp4;
81
82 // to be replaced by a fitting procedure
83 double adcCount = 0.0;
84 int n = 0;
85 for (int i = 0; i < N_SAMPLE; i++) {
86 adcCount = adcCount + amp[i] / signal_amplitude(time[i]);
87 if (amp[i] > 0) n++;
88 }
89 adcCount = adcCount / n;
90
91 return adcCount;
92}
double signal_amplitude(double samplingTime) const
time(flags, cells_name, *args, **kw)

◆ getAmp1()

uint16_t CscRODReadOutV0::getAmp1 ( ) const
inline

Definition at line 61 of file CscRODReadOutV0.h.

61{ return m_amp1; }

◆ getAmp2()

uint16_t CscRODReadOutV0::getAmp2 ( ) const
inline

Definition at line 62 of file CscRODReadOutV0.h.

62{ return m_amp2; }

◆ getAmp3()

uint16_t CscRODReadOutV0::getAmp3 ( ) const
inline

Definition at line 63 of file CscRODReadOutV0.h.

63{ return m_amp3; }

◆ getAmp4()

uint16_t CscRODReadOutV0::getAmp4 ( ) const
inline

Definition at line 64 of file CscRODReadOutV0.h.

64{ return m_amp4; }

◆ getConversion()

double CscRODReadOutV0::getConversion ( )
inline

Definition at line 31 of file CscRODReadOutV0.h.

31{ return m_CHARGE_TO_ADC_COUNT; }

◆ getFooterSize()

uint32_t CscRODReadOutV0::getFooterSize ( )
inline

Definition at line 27 of file CscRODReadOutV0.h.

27{ return ROD_FOOTER_SIZE; }
static const uint32_t ROD_FOOTER_SIZE

◆ getFormatVersion()

uint32_t CscRODReadOutV0::getFormatVersion ( )
inline

Definition at line 28 of file CscRODReadOutV0.h.

28{ return ROD_VERSION; }
static const uint32_t ROD_VERSION

◆ getHeaderMarker()

uint32_t CscRODReadOutV0::getHeaderMarker ( )
inline

Definition at line 25 of file CscRODReadOutV0.h.

25{ return ROD_HEADER; }
static const uint32_t ROD_HEADER

◆ getHeaderSize()

uint32_t CscRODReadOutV0::getHeaderSize ( )
inline

Definition at line 26 of file CscRODReadOutV0.h.

26{ return ROD_HEADER_SIZE; }
static const uint32_t ROD_HEADER_SIZE

◆ getMaxTimeBin()

double CscRODReadOutV0::getMaxTimeBin ( )
inline

Definition at line 32 of file CscRODReadOutV0.h.

32{ return m_Z0; }

◆ getSamplingTime()

double CscRODReadOutV0::getSamplingTime ( )
inline

Definition at line 29 of file CscRODReadOutV0.h.

29{ return m_SAMPLING_TIME; }

◆ getSourceID()

uint32_t CscRODReadOutV0::getSourceID ( uint16_t side,
uint16_t rodId )
inline

Definition at line 102 of file CscRODReadOutV0.h.

102 {
103 uint32_t sourceIdentifier = 0;
104 sourceIdentifier = SOURCE_ID << 24 | MODULE_TYPE << 16 | side << 8 | rodId;
105 return sourceIdentifier;
106}
uint16_t rodId() const
static const uint16_t SOURCE_ID
static const uint16_t MODULE_TYPE

◆ getStartTime()

double CscRODReadOutV0::getStartTime ( )
inline

Definition at line 30 of file CscRODReadOutV0.h.

30{ return m_TIME_OFFSET; }

◆ isAddress()

bool CscRODReadOutV0::isAddress ( const uint32_t fragment) const
inline

Definition at line 130 of file CscRODReadOutV0.h.

130{ return (0xC0000000 & fragment); }

◆ isAmplitude()

bool CscRODReadOutV0::isAmplitude ( const uint16_t fragment) const
inline

Definition at line 128 of file CscRODReadOutV0.h.

128{ return (0xA000 & fragment); }

◆ isBody()

bool CscRODReadOutV0::isBody ( const uint32_t fragment) const
inline

Definition at line 126 of file CscRODReadOutV0.h.

126{ return (0x80000000 & fragment); }

◆ moduleType()

uint16_t CscRODReadOutV0::moduleType ( ) const
inline

Definition at line 58 of file CscRODReadOutV0.h.

58{ return m_moduleType; }

◆ rodId()

uint16_t CscRODReadOutV0::rodId ( ) const
inline

Definition at line 60 of file CscRODReadOutV0.h.

60{ return m_rodId; }

◆ set()

void CscRODReadOutV0::set ( const CscIdHelper * cscHelper)
inline

Definition at line 39 of file CscRODReadOutV0.h.

39{ m_cscHelper = cscHelper; }

◆ set32bits()

void CscRODReadOutV0::set32bits ( const uint16_t * v16,
uint32_t & v32 ) const
inlineprivate

Definition at line 115 of file CscRODReadOutV0.h.

115 {
116 uint32_t p = 0, v = 0;
117 uint16_t n = 2;
118 uint16_t pos[] = {0, 16};
119 for (uint16_t i = 0; i < n; i++) {
120 v = (uint32_t)(*(v16 + i));
121 p = (uint32_t)(*(pos + i));
122 v32 = v32 | (v << p);
123 }
124}

◆ signal()

double CscRODReadOutV0::signal ( double z) const
inlineprivate

Definition at line 172 of file CscRODReadOutV0.h.

172 {
173 double amplitude = (1.0 - z / (1 + m_NUMBER_OF_INTEGRATION)) * std::pow(z, m_NUMBER_OF_INTEGRATION) * exp(-z);
174 return amplitude;
175}
#define z

◆ signal_amplitude()

double CscRODReadOutV0::signal_amplitude ( double samplingTime) const
inline

Definition at line 165 of file CscRODReadOutV0.h.

165 {
166 if (samplingTime <= m_TIME_OFFSET) return 0.0;
167 double z = (samplingTime - m_TIME_OFFSET) / m_SIGNAL_WIDTH;
168 return signal(z) / m_norm;
169}

◆ sourceID()

uint16_t CscRODReadOutV0::sourceID ( ) const
inline

Definition at line 57 of file CscRODReadOutV0.h.

57{ return m_sourceID; }

◆ subDetectorId()

uint16_t CscRODReadOutV0::subDetectorId ( ) const
inline

Definition at line 59 of file CscRODReadOutV0.h.

59{ return m_subDetectorId; }

Member Data Documentation

◆ BODY_ADDRESS

const uint32_t CscRODReadOutV0::BODY_ADDRESS = 0x0000000C
staticprivate

Definition at line 96 of file CscRODReadOutV0.h.

◆ BODY_AMPLITUDE

const uint16_t CscRODReadOutV0::BODY_AMPLITUDE = 0x000A
staticprivate

Definition at line 95 of file CscRODReadOutV0.h.

◆ m_address

uint32_t CscRODReadOutV0::m_address
private

Definition at line 77 of file CscRODReadOutV0.h.

◆ m_amp1

uint16_t CscRODReadOutV0::m_amp1
private

Definition at line 73 of file CscRODReadOutV0.h.

◆ m_amp2

uint16_t CscRODReadOutV0::m_amp2
private

Definition at line 74 of file CscRODReadOutV0.h.

◆ m_amp3

uint16_t CscRODReadOutV0::m_amp3
private

Definition at line 75 of file CscRODReadOutV0.h.

◆ m_amp4

uint16_t CscRODReadOutV0::m_amp4
private

Definition at line 76 of file CscRODReadOutV0.h.

◆ m_CHARGE_TO_ADC_COUNT

double CscRODReadOutV0::m_CHARGE_TO_ADC_COUNT
private

Definition at line 84 of file CscRODReadOutV0.h.

◆ m_cscHelper

const CscIdHelper* CscRODReadOutV0::m_cscHelper
private

Definition at line 68 of file CscRODReadOutV0.h.

◆ m_moduleType

uint16_t CscRODReadOutV0::m_moduleType
private

Definition at line 70 of file CscRODReadOutV0.h.

◆ m_norm

double CscRODReadOutV0::m_norm
private

Definition at line 78 of file CscRODReadOutV0.h.

◆ m_NUMBER_OF_INTEGRATION

int CscRODReadOutV0::m_NUMBER_OF_INTEGRATION
private

Definition at line 83 of file CscRODReadOutV0.h.

◆ m_rodId

uint16_t CscRODReadOutV0::m_rodId
private

Definition at line 71 of file CscRODReadOutV0.h.

◆ m_SAMPLING_TIME

double CscRODReadOutV0::m_SAMPLING_TIME
private

Definition at line 82 of file CscRODReadOutV0.h.

◆ m_SIGNAL_WIDTH

double CscRODReadOutV0::m_SIGNAL_WIDTH
private

Definition at line 81 of file CscRODReadOutV0.h.

◆ m_sourceID

uint16_t CscRODReadOutV0::m_sourceID
private

Definition at line 69 of file CscRODReadOutV0.h.

◆ m_subDetectorId

uint16_t CscRODReadOutV0::m_subDetectorId
private

Definition at line 72 of file CscRODReadOutV0.h.

◆ m_TIME_OFFSET

double CscRODReadOutV0::m_TIME_OFFSET
private

Definition at line 80 of file CscRODReadOutV0.h.

◆ m_Z0

double CscRODReadOutV0::m_Z0
private

Definition at line 85 of file CscRODReadOutV0.h.

◆ MODULE_TYPE

const uint16_t CscRODReadOutV0::MODULE_TYPE = 0x00
staticprivate

Definition at line 93 of file CscRODReadOutV0.h.

◆ ROD_FOOTER_SIZE

const uint32_t CscRODReadOutV0::ROD_FOOTER_SIZE = 0x3
staticprivate

Definition at line 90 of file CscRODReadOutV0.h.

◆ ROD_HEADER

const uint32_t CscRODReadOutV0::ROD_HEADER = 0xEE1234EE
staticprivate

Definition at line 87 of file CscRODReadOutV0.h.

◆ ROD_HEADER_SIZE

const uint32_t CscRODReadOutV0::ROD_HEADER_SIZE = 0x8
staticprivate

Definition at line 88 of file CscRODReadOutV0.h.

◆ ROD_VERSION

const uint32_t CscRODReadOutV0::ROD_VERSION = 0x00000000
staticprivate

Definition at line 89 of file CscRODReadOutV0.h.

◆ SOURCE_ID

const uint16_t CscRODReadOutV0::SOURCE_ID = 0x00
staticprivate

Definition at line 92 of file CscRODReadOutV0.h.


The documentation for this class was generated from the following files: