ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
TileCalorimeter
TileSvc
TileByteStream
TileByteStream
TileRawChannel2Bytes.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef TILEBYTESTREAM_TILERAWCHANNEL2BYTES_H
6
#define TILEBYTESTREAM_TILERAWCHANNEL2BYTES_H
7
// This class converts the TileRawChannel object into bytes
8
//
9
20
#include <vector>
21
22
// Amplitude encoding: gain bit + sign bit + Value(14bits)
23
const
int
GAIN_BIT
= 0x8000;
24
const
int
AMPLITUDE_SIGN
= 0x4000;
25
const
int
AMPLITUDE_RANGE
= 0x3FFF;
26
27
// Time encoding: sign bit + Value(15bits)
28
const
int
TIME_SIGN
= 0x8000;
29
const
int
TIME_RANGE
= 0x7FFF;
30
31
// Quality encoding: sign bit + Value(15bits)
32
const
int
QUALITY_SIGN
= 0x8000;
33
const
int
QUALITY_RANGE
= 0x7FFF;
34
35
// Conversion factors from double to int values
36
const
float
AMPLITUDE_FACTOR
= 16.0F;
37
const
float
TIME_FACTOR
= 256.0F;
38
const
float
QUALITY_FACTOR
= 32768.0F;
39
40
class
TileFastRawChannel
;
41
42
class
TileRawChannel2Bytes
{
43
public
:
44
TileRawChannel2Bytes
()
45
:
m_verbose
(false) {
46
}
47
51
int
getBytes
(
const
TileFastRawChannel
*
rc
,
int
gain
, std::vector<short>& v);
52
53
// unpack short to double
55
inline
int
gain
(
short
i)
const
;
57
inline
float
amplitude
(
short
i)
const
;
59
inline
float
time
(
short
i)
const
;
61
inline
float
quality
(
short
i)
const
;
62
64
inline
void
setVerbose
(
bool
verbose
) {
65
m_verbose
=
verbose
;
66
}
67
68
private
:
69
71
inline
int
amplitude_range
() {
72
return
AMPLITUDE_RANGE
;
73
}
74
75
inline
int
time_range
() {
76
return
TIME_RANGE
;
77
}
78
79
inline
int
quality_range
() {
80
return
QUALITY_RANGE
;
81
}
82
84
bool
m_verbose
;
85
};
86
87
// inline functions
88
89
inline
int
TileRawChannel2Bytes::gain
(
short
s)
const
{
90
// s >>= AMPLITUDE_SHIFT;
91
int
g = (s &
GAIN_BIT
) ? 1 : 0;
92
return
g;
93
}
94
95
inline
float
TileRawChannel2Bytes::amplitude
(
short
s)
const
{
96
// s >>= AMPLITUDE_SHIFT;
97
float
a
= (s &
AMPLITUDE_RANGE
) * (1./
AMPLITUDE_FACTOR
);
98
if
(s &
AMPLITUDE_SIGN
)
a
= -
a
;
99
return
a
;
100
}
101
102
inline
float
TileRawChannel2Bytes::time
(
short
s)
const
{
103
// s >>= TIME_SHIFT;
104
float
t = (s &
TIME_RANGE
) * (1./
TIME_FACTOR
);
105
if
(s &
TIME_SIGN
) t = -t;
106
return
t;
107
}
108
109
inline
float
TileRawChannel2Bytes::quality
(
short
s)
const
{
110
// s >>= QUALITY_SHIFT;
111
float
q = (s &
QUALITY_RANGE
) * (1./
QUALITY_FACTOR
);
112
if
(s &
QUALITY_SIGN
) q = -q;
113
return
q;
114
}
115
116
#endif
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
rc
static Double_t rc
Definition
LArPhysWaveHECTool.cxx:37
AMPLITUDE_RANGE
const int AMPLITUDE_RANGE
Definition
TileRawChannel2Bytes.h:25
QUALITY_FACTOR
const float QUALITY_FACTOR
Definition
TileRawChannel2Bytes.h:38
QUALITY_SIGN
const int QUALITY_SIGN
Definition
TileRawChannel2Bytes.h:32
AMPLITUDE_FACTOR
const float AMPLITUDE_FACTOR
Definition
TileRawChannel2Bytes.h:36
TIME_RANGE
const int TIME_RANGE
Definition
TileRawChannel2Bytes.h:29
QUALITY_RANGE
const int QUALITY_RANGE
Definition
TileRawChannel2Bytes.h:33
TIME_FACTOR
const float TIME_FACTOR
Definition
TileRawChannel2Bytes.h:37
TIME_SIGN
const int TIME_SIGN
Definition
TileRawChannel2Bytes.h:28
AMPLITUDE_SIGN
const int AMPLITUDE_SIGN
Definition
TileRawChannel2Bytes.h:24
GAIN_BIT
const int GAIN_BIT
Definition
TileRawChannel2Bytes.h:23
TileFastRawChannel
Definition
TileFastRawChannel.h:17
TileRawChannel2Bytes::quality_range
int quality_range()
Retuns QUALITY_RANGE .
Definition
TileRawChannel2Bytes.h:79
TileRawChannel2Bytes::gain
int gain(short i) const
Returns the gain unpacked from the single 16-bit word w.
Definition
TileRawChannel2Bytes.h:89
TileRawChannel2Bytes::setVerbose
void setVerbose(bool verbose)
Sets verbose mode true or false.
Definition
TileRawChannel2Bytes.h:64
TileRawChannel2Bytes::amplitude_range
int amplitude_range()
Returns AMPLITUDE_RANGE .
Definition
TileRawChannel2Bytes.h:71
TileRawChannel2Bytes::m_verbose
bool m_verbose
Verbose flag.
Definition
TileRawChannel2Bytes.h:84
TileRawChannel2Bytes::TileRawChannel2Bytes
TileRawChannel2Bytes()
Definition
TileRawChannel2Bytes.h:44
TileRawChannel2Bytes::quality
float quality(short i) const
Returns the quality factor unpacked from a single 16-bit word w.
Definition
TileRawChannel2Bytes.h:109
TileRawChannel2Bytes::amplitude
float amplitude(short i) const
Returns the non calibrated amplitude unpacked from a single 16-bit word w.
Definition
TileRawChannel2Bytes.h:95
TileRawChannel2Bytes::time_range
int time_range()
Returns TIME_RANGE .
Definition
TileRawChannel2Bytes.h:75
TileRawChannel2Bytes::getBytes
int getBytes(const TileFastRawChannel *rc, int gain, std::vector< short > &v)
Pack TileRawChannel information (gain, amplitude, phase and quality) in 3 16-bit words.
Definition
TileRawChannel2Bytes.cxx:10
TileRawChannel2Bytes::time
float time(short i) const
Returns the phase of the pulse, unpacked from a single 16-bit word w.
Definition
TileRawChannel2Bytes.h:102
verbose
bool verbose
Definition
hcg.cxx:75
Generated on
for ATLAS Offline Software by
1.17.0