CbmRoot
Loading...
Searching...
No Matches
detectors/bmon/Hit.h
Go to the documentation of this file.
1/* Copyright (C) 2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergei Zharko [committer] */
4
9
10#pragma once
11
12#include "CbmBmonDigi.h"
13
14#include <boost/serialization/access.hpp>
15
16#include <cstdint>
17#include <vector>
18
19namespace cbm::algo::bmon
20{
23 class Hit {
24 public:
26 Hit() = default;
27
31 Hit(uint32_t address, const CbmBmonDigi& digi) : fAddress(address), fNofChannels(1)
32 {
33 fTime = digi.GetTime();
34 fTimeError = 0.; // FIXME: provide a rule to set an error
35 }
36
41 Hit(uint32_t address, const CbmBmonDigi& digiL, const CbmBmonDigi& digiR) : fAddress(address), fNofChannels(2)
42 {
43 double weightSum = digiL.GetCharge() + digiR.GetCharge();
44 fTime = (digiL.GetTime() * digiL.GetCharge() + digiR.GetTime() * digiR.GetCharge()) / weightSum;
45 fTimeError = 0.; // FIXME: provide a rule to set an error
46 }
47
53 Hit(uint32_t address, double time, double timeError, uint8_t nChannels)
54 : fTime(time)
55 , fTimeError(timeError)
56 , fAddress(address)
57 , fNofChannels(nChannels)
58 {
59 }
60
62 uint32_t GetAddress() const { return fAddress; }
63
65 uint8_t GetNofChannels() const { return fNofChannels; }
66
68 double GetTime() const { return fTime; }
69
71 double GetTimeError() const { return fTimeError; }
72
75 void SetAddress(uint32_t address) { fAddress = address; }
76
79 void SetNofChannels(uint8_t nofChannels) { fNofChannels = nofChannels; }
80
83 void SetTime(double time) { fTime = time; }
84
87 void SetTimeError(double timeError) { fTimeError = timeError; }
88
89 private:
90 double fTime{0.};
91 double fTimeError{0.};
92 uint32_t fAddress{0};
93 uint8_t fNofChannels{0};
94
97 template<class Archive>
98 void serialize(Archive& ar, unsigned int /*version*/)
99 {
100 ar& fTime;
101 ar& fTimeError;
102 ar& fAddress;
103 ar& fNofChannels;
104 }
105 };
106} // namespace cbm::algo::bmon
Data class for a signal in the t-zero detector.
Definition CbmBmonDigi.h:31
double GetTime() const
Time.
Definition CbmBmonDigi.h:87
double GetCharge() const
Charge.
Definition CbmBmonDigi.h:98
void serialize(Archive &ar, unsigned int)
void SetNofChannels(uint8_t nofChannels)
Sets number of channels.
Hit(uint32_t address, const CbmBmonDigi &digi)
Constructor from a single digi.
void SetAddress(uint32_t address)
Sets address.
uint8_t GetNofChannels() const
Gets number of channels.
void SetTime(double time)
Sets time.
Hit()=default
Default constructor.
uint32_t GetAddress() const
Gets hardware address.
Hit(uint32_t address, const CbmBmonDigi &digiL, const CbmBmonDigi &digiR)
Constructor from two digis.
double GetTime() const
Gets time [ns].
double GetTimeError() const
Gets time error [ns].
uint8_t fNofChannels
Number of channels used.
void SetTimeError(double timeError)
Sets time error.
friend class boost::serialization::access
Boost serialization function.
Hit(uint32_t address, double time, double timeError, uint8_t nChannels)
Constructor.
uint32_t fAddress
Assigned hit address.
double fTimeError
Time error [ns].