BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
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 --------------------------
12const Int_t CbmStsDigi::fgkCharBits = 12; // in data0
13const Int_t CbmStsDigi::fgkTimeBits = 14; // in data1
16// -------------------------------------------------------------------------
17
18// ----- Bit shift for charge and time stamp ---------------------------
21// -------------------------------------------------------------------------
22
23// ----- Bit masks for charge and time stamp ---------------------------
27// -------------------------------------------------------------------------
28
29// ----- Default constructor -------------------------------------------
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// -------------------------------------------------------------------------
51CbmStsDigi::CbmStsDigi(Int_t station, Int_t sector, Int_t side, Int_t channel, Int_t adc, Int_t time)
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 ----------------------------------------------------
70// -------------------------------------------------------------------------
71
72// ----- Add charge ----------------------------------------------------
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 ------------------------------------------------
85{
86
87 // First set old charge to zero
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 Int_t
long long Long64_t
DetectorId
BM@N DetectorID enumerator.
static const Int_t fgkSideBits
static const Int_t fgkStatBits
Number of bits for address fields (static).
static const Int_t fgkSectBits
static const Int_t fgkChanBits
CbmStsDetectorId()
Constructor (empty).
static const Long64_t fgkTimeMask
Definition CbmStsDigi.h:105
static const Int_t fgkTimeBits
Definition CbmStsDigi.h:100
Int_t GetAdc() const
Charge.
Definition CbmStsDigi.h:79
static const Int_t fgkCharShift
Definition CbmStsDigi.h:101
static const Int_t fgkTimeShift
Definition CbmStsDigi.h:102
Long64_t fData
Data members.
Definition CbmStsDigi.h:92
void AddAdc(Int_t adc)
Add charge.
CbmStsDigi()
Default constructor.
static Int_t GetMaxAdc()
Maximum ADC.
Definition CbmStsDigi.h:82
virtual ~CbmStsDigi()
Destructor.
static const Long64_t fgkAddrMask
Definition CbmStsDigi.h:103
static const Int_t fgkCharBits
CbmStsDigi.cxx.
Definition CbmStsDigi.h:99
void SetAdc(Int_t charge)
Modifiers.
static const Long64_t fgkCharMask
Definition CbmStsDigi.h:104
static const Int_t fgkAddrBits
Static members for bit operations.
Definition CbmStsDigi.h:98