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:
28 Hit(uint32_t address, const CbmBmonDigi& digi) : fAddress(address), fNofChannels(1)
29 {
30 fTime = digi.GetTime();
31 fTimeError = 0.; // FIXME: provide a rule to set an error
32 }
33
38 Hit(uint32_t address, const CbmBmonDigi& digiL, const CbmBmonDigi& digiR) : fAddress(address), fNofChannels(2)
39 {
40 double weightSum = digiL.GetCharge() + digiR.GetCharge();
41 fTime = (digiL.GetTime() * digiL.GetCharge() + digiR.GetTime() * digiR.GetCharge()) / weightSum;
42 fTimeError = 0.; // FIXME: provide a rule to set an error
43 }
44
50 Hit(uint32_t address, double time, double timeError, uint8_t nChannels)
51 : fTime(time)
52 , fTimeError(timeError)
53 , fAddress(address)
54 , fNofChannels(nChannels)
55 {
56 }
57
59 uint32_t GetAddress() const { return fAddress; }
60
62 uint8_t GetNofChannels() const { return fNofChannels; }
63
65 double GetTime() const { return fTime; }
66
68 double GetTimeError() const { return fTimeError; }
69
72 void SetAddress(uint32_t address) { fAddress = address; }
73
76 void SetNofChannels(uint8_t nofChannels) { fNofChannels = nofChannels; }
77
80 void SetTime(double time) { fTime = time; }
81
84 void SetTimeError(double timeError) { fTimeError = timeError; }
85
86 private:
87 double fTime{0.};
88 double fTimeError{0.};
89 uint32_t fAddress{0};
90 uint8_t fNofChannels{0};
91
94 template<class Archive>
95 void serialize(Archive& ar, unsigned int /*version*/)
96 {
97 ar& fTime;
98 ar& fTimeError;
99 ar& fAddress;
100 ar& fNofChannels;
101 }
102 };
103} // 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.
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].