BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
CbmStsDigi.cxx
Go to the documentation of this file.
1
/** CbmStsDigi.cxx
2
**@author V.Friese <v.friese@gsi.de>
3
**@since 28.08.2006
4
**@version 2.0
5
**/
6
7
#include "
CbmStsDigi.h
"
8
9
#include "FairLogger.h"
10
11
// ----- Bit fields for charge and time stamp --------------------------
12
const
Int_t
CbmStsDigi::fgkCharBits
= 12;
// in data0
13
const
Int_t
CbmStsDigi::fgkTimeBits
= 14;
// in data1
14
const
Int_t
CbmStsDigi::fgkAddrBits
=
15
CbmStsDigi::fgkStatBits
+
CbmStsDigi::fgkSectBits
+
CbmStsDigi::fgkSideBits
+
CbmStsDigi::fgkChanBits
;
16
// -------------------------------------------------------------------------
17
18
// ----- Bit shift for charge and time stamp ---------------------------
19
const
Int_t
CbmStsDigi::fgkCharShift
=
CbmStsDigi::fgkAddrBits
;
20
const
Int_t
CbmStsDigi::fgkTimeShift
=
CbmStsDigi::fgkCharShift
+
CbmStsDigi::fgkCharBits
;
21
// -------------------------------------------------------------------------
22
23
// ----- Bit masks for charge and time stamp ---------------------------
24
const
Long64_t
CbmStsDigi::fgkAddrMask
= (1 <<
CbmStsDigi::fgkAddrBits
) - 1;
25
const
Long64_t
CbmStsDigi::fgkCharMask
= (1 <<
CbmStsDigi::fgkCharBits
) - 1;
26
const
Long64_t
CbmStsDigi::fgkTimeMask
= (1 <<
CbmStsDigi::fgkTimeBits
) - 1;
27
// -------------------------------------------------------------------------
28
29
// ----- Default constructor -------------------------------------------
30
CbmStsDigi::CbmStsDigi
()
31
:
FairMultiLinkedData
()
32
,
CbmStsDetectorId
()
33
,
fData
(0)
34
{}
35
// -------------------------------------------------------------------------
36
37
// ----- Standard constructor ------------------------------------------
38
// CbmStsDigi::CbmStsDigi(Int_t station, Int_t sector, Int_t side,
39
// Int_t channel, Int_t adc, Int_t time)
40
// : FairMultiLinkedData(),
41
// CbmStsDetectorId(),
42
// fData(0)
43
// {
44
// AddIndex(index);
45
// fData = ( (DetectorId(station, sector, side, channel) >> 4) & fgkAddrMask )
46
// | ( (adc & fgkCharMask) << fgkCharShift )
47
// | ( (time & fgkTimeMask) << fgkTimeShift ) ;
48
//
49
// }
50
// -------------------------------------------------------------------------
51
CbmStsDigi::CbmStsDigi
(
Int_t
station,
Int_t
sector,
Int_t
side,
Int_t
channel,
Int_t
adc,
Int_t
time)
52
:
FairMultiLinkedData
()
53
,
CbmStsDetectorId
()
54
,
fData
(0)
55
{
56
// AddIndex(index,adc);
57
58
// Check for ADC range
59
if
(adc >
GetMaxAdc
()) {
60
LOG(warn) <<
"ADC "
<< adc <<
" exceeds ADC range "
<<
GetMaxAdc
();
61
return
;
62
}
63
64
fData
= ((
DetectorId
(station, sector, side, channel) >> 4) &
fgkAddrMask
) | ((adc &
fgkCharMask
) <<
fgkCharShift
)
65
| ((time &
fgkTimeMask
) <<
fgkTimeShift
);
66
}
67
68
// ----- Destructor ----------------------------------------------------
69
CbmStsDigi::~CbmStsDigi
() {}
70
// -------------------------------------------------------------------------
71
72
// ----- Add charge ----------------------------------------------------
73
void
CbmStsDigi::AddAdc
(
Int_t
adc)
74
{
75
Int_t
maxAdc = (1 <<
fgkCharBits
) - 1;
76
Int_t
newAdc =
GetAdc
() + adc;
77
if
(newAdc > maxAdc)
78
newAdc = maxAdc;
79
SetAdc
(newAdc);
80
}
81
// -------------------------------------------------------------------------
82
83
// ----- Set new charge ------------------------------------------------
84
void
CbmStsDigi::SetAdc
(
Int_t
adc)
85
{
86
87
// First set old charge to zero
88
fData
=
fData
& ~(
fgkCharMask
<<
fgkCharShift
);
89
90
// Check for ADC range
91
if
(adc >
GetMaxAdc
()) {
92
LOG(warn) <<
"ADC "
<< adc <<
" exceeds ADC range "
<<
GetMaxAdc
();
93
return
;
94
}
95
96
// Now set new charge
97
fData
=
fData
| ((adc &
fgkCharMask
) <<
fgkCharShift
);
98
}
99
// -------------------------------------------------------------------------
Int_t
int Int_t
Long64_t
long long Long64_t
DetectorId
DetectorId
BM@N DetectorID enumerator.
Definition
BmnDetectorList.h:12
CbmStsDetectorId::fgkSideBits
static const Int_t fgkSideBits
Definition
CbmStsDetectorId.h:69
CbmStsDetectorId::fgkStatBits
static const Int_t fgkStatBits
Number of bits for address fields (static).
Definition
CbmStsDetectorId.h:67
CbmStsDetectorId::fgkSectBits
static const Int_t fgkSectBits
Definition
CbmStsDetectorId.h:68
CbmStsDetectorId::fgkChanBits
static const Int_t fgkChanBits
Definition
CbmStsDetectorId.h:70
CbmStsDetectorId::CbmStsDetectorId
CbmStsDetectorId()
Constructor (empty).
Definition
CbmStsDetectorId.h:31
CbmStsDigi::fgkTimeMask
static const Long64_t fgkTimeMask
Definition
CbmStsDigi.h:105
CbmStsDigi::fgkTimeBits
static const Int_t fgkTimeBits
Definition
CbmStsDigi.h:100
CbmStsDigi::GetAdc
Int_t GetAdc() const
Charge.
Definition
CbmStsDigi.h:79
CbmStsDigi::fgkCharShift
static const Int_t fgkCharShift
Definition
CbmStsDigi.h:101
CbmStsDigi::fgkTimeShift
static const Int_t fgkTimeShift
Definition
CbmStsDigi.h:102
CbmStsDigi::fData
Long64_t fData
Data members.
Definition
CbmStsDigi.h:92
CbmStsDigi::AddAdc
void AddAdc(Int_t adc)
Add charge.
Definition
CbmStsDigi.cxx:73
CbmStsDigi::CbmStsDigi
CbmStsDigi()
Default constructor.
Definition
CbmStsDigi.cxx:30
CbmStsDigi::GetMaxAdc
static Int_t GetMaxAdc()
Maximum ADC.
Definition
CbmStsDigi.h:82
CbmStsDigi::~CbmStsDigi
virtual ~CbmStsDigi()
Destructor.
Definition
CbmStsDigi.cxx:69
CbmStsDigi::fgkAddrMask
static const Long64_t fgkAddrMask
Definition
CbmStsDigi.h:103
CbmStsDigi::fgkCharBits
static const Int_t fgkCharBits
CbmStsDigi.cxx.
Definition
CbmStsDigi.h:99
CbmStsDigi::SetAdc
void SetAdc(Int_t charge)
Modifiers.
Definition
CbmStsDigi.cxx:84
CbmStsDigi::fgkCharMask
static const Long64_t fgkCharMask
Definition
CbmStsDigi.h:104
CbmStsDigi::fgkAddrBits
static const Int_t fgkAddrBits
Static members for bit operations.
Definition
CbmStsDigi.h:98
FairMultiLinkedData
CbmStsDigi.h
detectors
sts
CbmStsDigi.cxx
Generated on
for BmnRoot by
1.17.0