R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
MockModels.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH *
3 * Copyright (C) 2019-2025 Members of R3B Collaboration *
4 * *
5 * This software is distributed under the terms of the *
6 * GNU General Public Licence (GPL) version 3, *
7 * copied verbatim in the file "LICENSE". *
8 * *
9 * In applying this license GSI does not waive the privileges and immunities *
10 * granted to it by virtue of its status as an Intergovernmental Organization *
11 * or submit itself to any jurisdiction. *
12 ******************************************************************************/
13
14#pragma once
16#include "R3BDigitizingPaddle.h"
17#include "R3BShared.h"
18#include <cstdint>
19#include <gmock/gmock-function-mocker.h>
20#include <gmock/gmock-spec-builders.h>
21#include <gmock/gmock.h>
22#include <vector>
23
30{
33 using R3B::Side;
34
36 {
37 explicit GMockNeulandPaddle(uint16_t paddleID)
38 : AbstractPaddle{ paddleID }
39 {
40 }
41 // NOLINTBEGIN(modernize-use-trailing-return-type)
44 (const AbstractChannel::Hit& firstSignal, const AbstractChannel::Hit& secondSignal),
45 (const, override));
48 (const AbstractChannel::Hit& firstSignal, const AbstractChannel::Hit& secondSignal),
49 (const, override));
52 (const AbstractChannel::Hit& firstSignal, const AbstractChannel::Hit& secondSignal),
53 (const, override));
55 // NOLINTEND(modernize-use-trailing-return-type)
56 };
57
59 {
60 explicit GMockChannel(Side side)
61 : Digitizing::AbstractChannel{ side } {};
62 void add_signal(Signal hit) override { hits_.push_back(hit); }
63
64 MOCK_METHOD((void), construct_hits, (Hits&), (override));
65 std::vector<Signal> hits_;
66
68 {
69 ON_CALL(*this, construct_hits)
70 .WillByDefault(
71 [this](Hits& signal)
72 {
73 for (const auto& hit : hits_)
74 {
75 signal.emplace_back(convert_hit_to_signal(hit));
76 }
77 });
78 }
79 void extra_reset() override { hits_.clear(); }
80
81 private:
82 auto convert_hit_to_signal(const Signal& hit) -> Hit
83 {
84 auto signal = Hit{};
85 signal.qdc = hit.intensity;
86 signal.qdcUnSat = hit.intensity;
87 signal.tdc = hit.time;
88 signal.side = GetSide();
89 return signal;
90 }
91 };
92} // namespace R3B::testing::Neuland
virtual void construct_hits(Hits &signals)=0
AbstractChannel(R3B::Side side, bool has_cal_output=false)
virtual auto compute_energy(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> double=0
virtual auto compute_position(const AbstractChannel::Hit &rightSignal, const AbstractChannel::Hit &leftSignal) const -> double=0
virtual auto compute_channel_signals(const Signal &hit) const -> Pair< AbstractChannel::Signal >=0
virtual auto compute_time(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal) const -> double=0
AbstractPaddle(int paddleID, SignalCouplingStrategy strategy=SignalCouplingByTime)
Simulation of Mock Bar/Paddle.
Definition MockModels.h:30
std::vector< Signal > hits_
Definition MockModels.h:65
void add_signal(Signal hit) override
Definition MockModels.h:62
MOCK_METHOD((void), construct_hits,(Hits &),(override))
auto convert_hit_to_signal(const Signal &hit) -> Hit
Definition MockModels.h:82
MOCK_METHOD(double, compute_time,(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal),(const, override))
MOCK_METHOD(double, compute_energy,(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal),(const, override))
MOCK_METHOD(Pair< AbstractChannel::Signal >, compute_channel_signals,(const Signal &hit),(const, override))
MOCK_METHOD(double, compute_position,(const AbstractChannel::Hit &firstSignal, const AbstractChannel::Hit &secondSignal),(const, override))