CbmRoot
Loading...
Searching...
No Matches
HitMultTrigger.cxx
Go to the documentation of this file.
1/* Copyright (C) 2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Volker Friese [committer], Dominik Smith */
4
6
8#include "CbmStsHit.h"
9#include "CbmTofHit.h"
10#include "CbmTrdHit.h"
11
12#include <iterator>
13#include <sstream>
14
15#include <xpu/host.h>
16
17namespace cbm::algo::evbuild
18{
19
20 // ----- Execution ------------------------------------------------------
22 {
23
24 xpu::push_timer("HitMultTrigger");
25 xpu::t_add_bytes(1);
26
27 Result result;
28 auto hitTimes = GetHitTimes(recoData, fConfig.Detector());
29 auto [triggers, moniData] = fAlgo(hitTimes);
30 result.first = std::move(triggers);
31 result.second = std::move(moniData);
32 result.second.time = xpu::pop_timer();
33
34 L_(info) << "HitMultTrigger: hits " << hitTimes.size() << ", triggers " << result.first.size();
35
36 return result;
37 };
38 // --------------------------------------------------------------------------
39
40
41 // ----- Get hit times from reconstructed data --------------------------
42 std::vector<double> HitMultTrigger::GetHitTimes(const RecoResults& recoResults, ECbmModuleId system) const
43 {
44 std::vector<double> result;
45 switch (system) {
46 case ECbmModuleId::kSts: return GetTimeStamps<cbm::algo::sts::Hit>(recoResults.stsHits.Data()); break;
47 case ECbmModuleId::kTrd: return GetTimeStamps<cbm::algo::trd::Hit>(recoResults.trdHits.Data()); break;
48 case ECbmModuleId::kTof: return GetTimeStamps<cbm::algo::tof::Hit>(recoResults.tofHits.Data()); break;
49 default: {
50 L_(error) << "HitMultTrigger::GetHitTimes: Unknown system " << system;
51 break;
52 }
53 } //? system
54
55 return result;
56 }
57 // --------------------------------------------------------------------------
58
59
60 // ----- Info to string ---------------------------------------------------
61 std::string HitMultTrigger::ToString() const
62 {
63 std::stringstream out;
64 out << "--- Using Hit Multiplicity Trigger with trigger detector " << fConfig.Detector();
65 out << "\n" << fAlgo.ToString();
66 return out.str();
67 }
68 // --------------------------------------------------------------------------
69
70
71} // namespace cbm::algo::evbuild
#define L_(level)
ECbmModuleId
Enumerator for module Identifiers.
Definition CbmDefs.h:45
@ kTrd
Transition Radiation Detector.
Definition CbmDefs.h:51
@ kTof
Time-of-flight Detector.
Definition CbmDefs.h:52
@ kSts
Silicon Tracking System.
Definition CbmDefs.h:48
Data class for a reconstructed hit in the STS.
Class for hits in TRD detector.
std::string ToString() const
Info to string.
std::vector< double > GetTimeStamps(const gsl::span< const T > data) const
Get vector of time stamps from a data container [template].
std::pair< std::vector< double >, TimeClusterTriggerMonitorData > Result
DigiTriggerConfig fConfig
Configuration.
TimeClusterTrigger fAlgo
Algorithm.
std::vector< double > GetHitTimes(const RecoResults &recoData, ECbmModuleId system) const
Extract the hit time stamps for the selected trigger detector.
Result operator()(const RecoResults &recoData) const
Execution.
PartitionedVector< trd::Hit > trdHits
Definition RecoResults.h:49
PartitionedVector< tof::Hit > tofHits
Definition RecoResults.h:48
PartitionedSpan< sts::Hit > stsHits
Definition RecoResults.h:47