Belle II Software  release-05-01-25
KLMDigit.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2020 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Kirill Chilikin *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 /* Own header. */
12 #include <klm/dataobjects/KLMDigit.h>
13 
14 /* Belle 2 headers. */
15 #include <framework/logging/Logger.h>
16 
17 using namespace Belle2;
18 
20  m_ElementNumbers(&(KLMElementNumbers::Instance())),
21  m_Subdetector(0),
22  m_Section(0),
23  m_Sector(0),
24  m_Layer(0),
25  m_Plane(0),
26  m_Strip(0),
27  m_LastStrip(0),
28  m_Charge(0),
29  m_CTime(0),
30  m_TDC(0),
31  m_Time(0),
32  m_EnergyDeposit(0),
33  m_NPhotoelectrons(0),
34  m_NGeneratedPhotoelectrons(0),
35  m_FitStatus(0),
36  m_MCTime(0),
37  m_SiPMMCTime(0)
38 {
39 }
40 
42  m_ElementNumbers(&(KLMElementNumbers::Instance())),
43  m_Subdetector(KLMElementNumbers::c_EKLM),
44  m_Section(simHit->getSection()),
45  m_Sector(simHit->getSector()),
46  m_Layer(simHit->getLayer()),
47  m_Plane(simHit->getPlane()),
48  m_Strip(simHit->getStrip()),
49  m_LastStrip(0),
50  m_Charge(0),
51  m_CTime(0),
52  m_TDC(0),
53  m_Time(0),
54  m_EnergyDeposit(simHit->getEnergyDeposit()),
55  m_NPhotoelectrons(0),
56  m_NGeneratedPhotoelectrons(0),
57  m_FitStatus(0),
58  m_MCTime(simHit->getTime()),
59  m_SiPMMCTime(0)
60 {
61 }
62 
63 KLMDigit::KLMDigit(const BKLMSimHit* simHit, int strip) :
64  m_ElementNumbers(&(KLMElementNumbers::Instance())),
65  m_Subdetector(KLMElementNumbers::c_BKLM),
66  m_Section(simHit->getSection()),
67  m_Sector(simHit->getSector()),
68  m_Layer(simHit->getLayer()),
69  m_Plane(simHit->getPlane()),
70  m_Strip(strip),
71  m_LastStrip(0),
72  m_Charge(0),
73  m_CTime(0),
74  m_TDC(0),
75  m_Time(simHit->getTime() + simHit->getPropagationTime()),
76  m_EnergyDeposit(simHit->getEnergyDeposit()),
77  m_NPhotoelectrons(0),
78  m_NGeneratedPhotoelectrons(0),
79  m_FitStatus(0),
80  m_MCTime(simHit->getTime()),
81  m_SiPMMCTime(0)
82 {
83 }
84 
86  m_ElementNumbers(&(KLMElementNumbers::Instance())),
87  m_Subdetector(KLMElementNumbers::c_BKLM),
88  m_Section(simHit->getSection()),
89  m_Sector(simHit->getSector()),
90  m_Layer(simHit->getLayer()),
91  m_Plane(simHit->getPlane()),
92  m_Strip(simHit->getStrip()),
93  m_LastStrip(0),
94  m_Charge(0),
95  m_CTime(0),
96  m_TDC(0),
97  m_Time(simHit->getTime() + simHit->getPropagationTime()),
98  m_EnergyDeposit(simHit->getEnergyDeposit()),
99  m_NPhotoelectrons(0),
100  m_NGeneratedPhotoelectrons(0),
101  m_FitStatus(0),
102  m_MCTime(simHit->getTime()),
103  m_SiPMMCTime(0)
104 {
105 }
106 
107 unsigned int KLMDigit::getUniqueChannelID() const
108 {
111 }
112 
114 {
115  const KLMDigit* bgDigit = (KLMDigit*)bg;
116  if (!bgDigit->isGood())
118  if (!this->isGood())
119  return DigitBase::c_Append;
120  /* MC data from digit with larger energy. */
121  if (this->getEnergyDeposit() < bgDigit->getEnergyDeposit())
122  this->setMCTime(bgDigit->getMCTime());
123  this->setEnergyDeposit(this->getEnergyDeposit() +
124  bgDigit->getEnergyDeposit());
125  if (this->getTime() > bgDigit->getTime())
126  this->setTime(bgDigit->getTime());
127  this->setCharge(std::min(this->getCharge(), bgDigit->getCharge()));
130  bgDigit->getNGeneratedPhotoelectrons());
132 }
133 
135 {
137  B2FATAL("Function isPhiReadout() is called for EKLM digit.");
139 }
Belle2::DigitBase::EAppendStatus
EAppendStatus
Enum for return state of addBGDigit function.
Definition: DigitBase.h:42
Belle2::KLMDigit::setMCTime
void setMCTime(float time)
Set MC time.
Definition: KLMDigit.h:401
Belle2::KLMDigit::setNGeneratedPhotoelectrons
void setNGeneratedPhotoelectrons(int nPhotoelectrons)
Set generated number of photoelectrons.
Definition: KLMDigit.h:356
Belle2::KLMDigit::setCharge
void setCharge(uint16_t charge)
Set charge.
Definition: KLMDigit.h:248
Belle2::KLMDigit::m_ElementNumbers
const KLMElementNumbers * m_ElementNumbers
Element numbers.
Definition: KLMDigit.h:427
Belle2::KLMDigit::m_Section
int m_Section
Number of section.
Definition: KLMDigit.h:433
Belle2::KLMElementNumbers::channelNumber
uint16_t channelNumber(int subdetector, int section, int sector, int layer, int plane, int strip) const
Get channel number.
Definition: KLMElementNumbers.cc:37
Belle2::KLMDigit::getTime
float getTime() const
Get hit time.
Definition: KLMDigit.h:293
Belle2::KLMDigit::getMCTime
float getMCTime() const
Get MC time.
Definition: KLMDigit.h:392
Belle2::KLMDigit::getCharge
uint16_t getCharge() const
Get charge.
Definition: KLMDigit.h:239
Belle2::KLMDigit::m_Plane
int m_Plane
Number of plane.
Definition: KLMDigit.h:442
Belle2::KLMDigit
KLM digit (class representing a digitized hit in RPCs or scintillators).
Definition: KLMDigit.h:40
Belle2::KLMDigit::setTime
void setTime(float time)
Set hit time.
Definition: KLMDigit.h:302
Belle2::KLMDigit::isPhiReadout
bool isPhiReadout() const
Whether BKLM digit is in phi or z plane.
Definition: KLMDigit.cc:134
Belle2::KLMDigit::getNGeneratedPhotoelectrons
int getNGeneratedPhotoelectrons() const
Get generated number of photoelectrons.
Definition: KLMDigit.h:347
Belle2::EKLMSimHit
Class EKLMSimHit stores information on particular Geant step; using information from TrackID and Pare...
Definition: EKLMSimHit.h:41
Belle2::DigitBase::c_DontAppend
@ c_DontAppend
do not append BG digit to digits
Definition: DigitBase.h:43
Belle2::KLMDigit::m_Subdetector
int m_Subdetector
ROOT streamer.
Definition: KLMDigit.h:430
Belle2::KLMDigit::setEnergyDeposit
void setEnergyDeposit(float eDep)
Set EnergyDeposit.
Definition: KLMDigit.h:320
Belle2::KLMDigit::m_Strip
int m_Strip
Number of strip.
Definition: KLMDigit.h:445
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::KLMDigit::isGood
bool isGood() const
Whether hit could be used late (if it passed discriminator threshold)
Definition: KLMDigit.h:365
Belle2::KLMDigit::getEnergyDeposit
float getEnergyDeposit() const
Get energy deposit.
Definition: KLMDigit.h:311
Belle2::KLMElementNumbers::c_BKLM
@ c_BKLM
BKLM.
Definition: KLMElementNumbers.h:47
Belle2::KLMDigit::m_Layer
int m_Layer
Number of layer.
Definition: KLMDigit.h:439
Belle2::KLMDigit::addBGDigit
EAppendStatus addBGDigit(const DigitBase *bg) override
The pile-up method.
Definition: KLMDigit.cc:113
Belle2::KLMDigit::getUniqueChannelID
unsigned int getUniqueChannelID() const override
Get unique channel identifier.
Definition: KLMDigit.cc:107
Belle2::BKLMSimHit
Store one simulation hit as a ROOT object.
Definition: BKLMSimHit.h:35
Belle2::KLMElementNumbers
KLM element numbers.
Definition: KLMElementNumbers.h:37
Belle2::DigitBase::c_Append
@ c_Append
append BG digit to digits
Definition: DigitBase.h:44
Belle2::KLMDigit::KLMDigit
KLMDigit()
Constructor.
Definition: KLMDigit.cc:19
Belle2::BKLMElementNumbers::c_PhiPlane
@ c_PhiPlane
Phi.
Definition: BKLMElementNumbers.h:84
Belle2::DigitBase
A common base for subdetector Digits.
Definition: DigitBase.h:36
Belle2::KLMDigit::m_Sector
int m_Sector
Number of sector.
Definition: KLMDigit.h:436