BmnRoot
Loading...
Searching...
No Matches
CbmStsDigiLight.cxx
Go to the documentation of this file.
1
8#include "CbmStsDigiLight.h"
9
10
11// ----- Bit fields for charge and time stamp --------------------------
12const Int_t CbmStsDigiLight::fgkCharBits = 12; // in data0
13const Int_t CbmStsDigiLight::fgkTimeBits = 14; // in data1
14const Int_t CbmStsDigiLight::fgkAddrBits =
19// -------------------------------------------------------------------------
20
21
22
23// ----- Bit shift for charge and time stamp ---------------------------
24const Int_t CbmStsDigiLight::fgkCharShift = CbmStsDigiLight::fgkAddrBits;
25const Int_t CbmStsDigiLight::fgkTimeShift = CbmStsDigiLight::fgkCharShift + CbmStsDigiLight::fgkCharBits;
26// -------------------------------------------------------------------------
27
28
29
30// ----- Bit masks for charge and time stamp ---------------------------
31const Long64_t CbmStsDigiLight::fgkAddrMask = (1 << CbmStsDigiLight::fgkAddrBits) - 1;
32const Long64_t CbmStsDigiLight::fgkCharMask = (1 << CbmStsDigiLight::fgkCharBits) - 1;
33const Long64_t CbmStsDigiLight::fgkTimeMask = (1 << CbmStsDigiLight::fgkTimeBits) - 1;
34// -------------------------------------------------------------------------
35
36
37
38
39// ----- Default constructor -------------------------------------------
41 : CbmDigi(),
43 fData(0)
44{
45}
46// -------------------------------------------------------------------------
47
48
49
50// ----- Standard constructor ------------------------------------------
51// CbmStsDigiLight::CbmStsDigiLight(Int_t station, Int_t sector, Int_t side,
52// Int_t channel, Int_t adc, Int_t time)
53// : FairMultiLinkedData(),
54// CbmStsDetectorId(),
55// fData(0)
56// {
57// AddIndex(index);
58// fData = ( (DetectorId(station, sector, side, channel) >> 4) & fgkAddrMask )
59// | ( (adc & fgkCharMask) << fgkCharShift )
60// | ( (time & fgkTimeMask) << fgkTimeShift ) ;
61//
62// }
63// -------------------------------------------------------------------------
64CbmStsDigiLight::CbmStsDigiLight(Int_t station, Int_t sector, Int_t side,
65 Int_t channel, Int_t adc, Int_t time)
66 : CbmDigi(),
68 fData(0)
69{
70// AddIndex(index,adc);
71 fData = ( (DetectorId(station, sector, side, channel) >> 4) & fgkAddrMask )
72 | ( (adc & fgkCharMask) << fgkCharShift )
73 | ( (time & fgkTimeMask) << fgkTimeShift ) ;
74}
75
76
77
78// ----- Destructor ----------------------------------------------------
80// -------------------------------------------------------------------------
81
82
83
84
85// ----- Add charge ----------------------------------------------------
86void CbmStsDigiLight::AddAdc(Int_t adc) {
87 Int_t maxAdc = (1 << fgkCharBits) - 1;
88 Int_t newAdc = GetAdc() + adc;
89 if ( newAdc > maxAdc ) newAdc = maxAdc;
90 SetAdc(newAdc);
91}
92// -------------------------------------------------------------------------
93
94
95
96
97// ----- Set new charge ------------------------------------------------
98void CbmStsDigiLight::SetAdc(Int_t adc) {
99
100 // First set old charge to zero
101 fData = fData & ~(fgkCharMask << fgkCharShift);
102
103 // Now set new charge
104 fData = fData | ( (adc & fgkCharMask) << fgkCharShift );
105
106}
107// -------------------------------------------------------------------------
DetectorId
Base class for persistent representation of digital information.
Definition CbmDigi.h:44
static const Int_t fgkSideBits
static const Int_t fgkStatBits
static const Int_t fgkSectBits
static const Int_t fgkChanBits
void AddAdc(Int_t adc)
Int_t GetAdc() const
virtual ~CbmStsDigiLight()