Belle II Software development
PXDDigit.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <vxd/dataobjects/VxdID.h>
12
13#include <framework/dataobjects/DigitBase.h>
14
15namespace Belle2 {
20
27 class PXDDigit : public DigitBase {
28 public:
29
36 PXDDigit(VxdID sensorID, unsigned short uCellID, unsigned short vCellID,
37 unsigned short charge):
38 m_sensorID(sensorID),
39 m_uCellID(uCellID), m_vCellID(vCellID),
40 m_charge(charge)
41 {;}
42
44 PXDDigit(): PXDDigit(0, 0, 0, 0) {}
45
49 short int getFrameNumber() const { return VxdID(m_sensorID).getSegmentNumber(); }
50
54 void setFrameNumber(unsigned short frame)
55 {
56 VxdID id(m_sensorID);
57 id.setSegmentNumber(frame);
58 m_sensorID = id;
59 }
60
67 void fillValues(unsigned short* charge, unsigned short* uCellID, unsigned short* vCellID, unsigned short* sensorID)
68 {
69 *charge = m_charge;
70 *uCellID = m_uCellID;
71 *vCellID = m_vCellID;
72 *sensorID = m_sensorID;
73 }
74
78 VxdID getSensorID() const { return m_sensorID; }
79
83 unsigned short getUCellID() const { return m_uCellID; }
84
88 unsigned short getVCellID() const { return m_vCellID; }
89
93 unsigned short getCharge() const { return m_charge; }
94
98 void setCharge(unsigned short charge) { m_charge = charge; }
99
105 unsigned int getUniqueChannelID() const override
106 {
107 // shift segment part of sensorID by two bits to make place for u+v
108 VxdID sensorID(m_sensorID);
109 sensorID.setSegmentNumber(sensorID.getSegmentNumber() << 2);
110 return m_vCellID + (m_uCellID << 10) + (sensorID << 16);
111 }
112
120 {
121 m_charge += dynamic_cast<const PXDDigit*>(bg)->getCharge();
123 }
124
125
126 private:
127
128 unsigned short m_sensorID;
129 unsigned short m_uCellID;
130 unsigned short m_vCellID;
131 unsigned short m_charge;
132
133 ClassDefOverride(PXDDigit, 5)
134
135 }; // class PXDDigit
136
137
139} // end namespace Belle2
EAppendStatus
Enum for return state of addBGDigit function.
Definition DigitBase.h:32
@ c_DontAppend
do not append BG digit to digits
Definition DigitBase.h:33
DigitBase()
Constructor.
Definition DigitBase.h:40
void fillValues(unsigned short *charge, unsigned short *uCellID, unsigned short *vCellID, unsigned short *sensorID)
Fill the arrays with the values of the members of the class.
Definition PXDDigit.h:67
PXDDigit()
Default constructor for the ROOT IO.
Definition PXDDigit.h:44
DigitBase::EAppendStatus addBGDigit(const DigitBase *bg) override
Implementation of the base class function.
Definition PXDDigit.h:119
unsigned short m_vCellID
Cell z coordinate in pitch units.
Definition PXDDigit.h:130
PXDDigit(VxdID sensorID, unsigned short uCellID, unsigned short vCellID, unsigned short charge)
Useful Constructor.
Definition PXDDigit.h:36
unsigned short m_sensorID
Compressed sensor identifier.
Definition PXDDigit.h:128
unsigned short getVCellID() const
Get cell ID in v.
Definition PXDDigit.h:88
void setFrameNumber(unsigned short frame)
Set frame number of this digit.
Definition PXDDigit.h:54
unsigned short getUCellID() const
Get cell ID in u.
Definition PXDDigit.h:83
unsigned short getCharge() const
Get collected charge.
Definition PXDDigit.h:93
unsigned short m_charge
Digitized charge in ADC units.
Definition PXDDigit.h:131
short int getFrameNumber() const
Get frame number of this digit.
Definition PXDDigit.h:49
void setCharge(unsigned short charge)
Set digit charge.
Definition PXDDigit.h:98
unsigned int getUniqueChannelID() const override
Implementation of the base class function.
Definition PXDDigit.h:105
unsigned short m_uCellID
Cell r-phi coordinate in pitch units.
Definition PXDDigit.h:129
VxdID getSensorID() const
Get the sensor ID.
Definition PXDDigit.h:78
Class to uniquely identify a any structure of the PXD and SVD.
Definition VxdID.h:33
void setSegmentNumber(baseType segment)
Set the sensor segment.
Definition VxdID.h:113
baseType getSegmentNumber() const
Get the sensor segment.
Definition VxdID.h:102
Abstract base class for different kinds of events.