48 std::vector<double> digiTimes;
52 for (
const auto& system :
fSystems) {
53 std::vector<double> systemDigiTimes =
GetDigiTimes(system);
54 digiTimes.insert(digiTimes.end(), systemDigiTimes.begin(), systemDigiTimes.end());
57 std::sort(digiTimes.begin(), digiTimes.end());
63 for (
const auto& system :
fSystems) {
65 std::vector<double> locDigiTimes;
96 LOG(error) << GetName() <<
": Unknown detector type!";
100 digiTimes.insert(digiTimes.end(), locDigiTimes.begin(), locDigiTimes.end());
103 std::sort(digiTimes.begin(), digiTimes.end());
114 size_t numDigis = digiTimes.size();
121 logOut << setw(15) << left << GetName() <<
" [";
122 logOut << fixed << setw(8) << setprecision(1) << right << timerTot.RealTime() * 1000. <<
" ms] ";
123 logOut <<
"TS " <<
fNumTs <<
", digis " << numDigis <<
", triggers " << numTriggers;
124 LOG(info) << logOut.str();
138 std::vector<double> result;
141 result.resize(
fTimeslice->fData.fSts.fDigis.size());
142 auto it1 =
fTimeslice->fData.fSts.fDigis.begin();
143 auto it2 =
fTimeslice->fData.fSts.fDigis.end();
144 std::transform(it1, it2, result.begin(), [](
const CbmStsDigi& digi) { return digi.GetTime(); });
148 result.resize(
fTimeslice->fData.fRich.fDigis.size());
149 auto it1 =
fTimeslice->fData.fRich.fDigis.begin();
150 auto it2 =
fTimeslice->fData.fRich.fDigis.end();
151 std::transform(it1, it2, result.begin(), [](
const CbmRichDigi& digi) { return digi.GetTime(); });
155 result.resize(
fTimeslice->fData.fMuch.fDigis.size());
156 auto it1 =
fTimeslice->fData.fMuch.fDigis.begin();
157 auto it2 =
fTimeslice->fData.fMuch.fDigis.end();
158 std::transform(it1, it2, result.begin(), [](
const CbmMuchDigi& digi) { return digi.GetTime(); });
162 result.resize(
fTimeslice->fData.fTrd.fDigis.size());
163 auto it1 =
fTimeslice->fData.fTrd.fDigis.begin();
164 auto it2 =
fTimeslice->fData.fTrd.fDigis.end();
165 std::transform(it1, it2, result.begin(), [](
const CbmTrdDigi& digi) { return digi.GetTime(); });
169 result.resize(
fTimeslice->fData.fTof.fDigis.size());
170 auto it1 =
fTimeslice->fData.fTof.fDigis.begin();
171 auto it2 =
fTimeslice->fData.fTof.fDigis.end();
172 std::transform(it1, it2, result.begin(), [](
const CbmTofDigi& digi) { return digi.GetTime(); });
176 result.resize(
fTimeslice->fData.fPsd.fDigis.size());
177 auto it1 =
fTimeslice->fData.fPsd.fDigis.begin();
178 auto it2 =
fTimeslice->fData.fPsd.fDigis.end();
179 std::transform(it1, it2, result.begin(), [](
const CbmPsdDigi& digi) { return digi.GetTime(); });
183 result.resize(
fTimeslice->fData.fBmon.fDigis.size());
184 auto it1 =
fTimeslice->fData.fBmon.fDigis.begin();
185 auto it2 =
fTimeslice->fData.fBmon.fDigis.end();
186 std::transform(it1, it2, result.begin(), [](
const CbmTofDigi& digi) { return digi.GetTime(); });
190 LOG(error) << GetName() <<
": Unknown system " << system;
223 FairRootManager* ioman = FairRootManager::Instance();
226 LOG(info) <<
"==================================================";
227 LOG(info) << GetName() <<
": Initialising...";
233 LOG(info) <<
"--- Found branch DigiTimeslice.";
239 for (
const auto& system :
fSystems) {
249 if (ioman->GetObject(
"Trigger")) {
250 LOG(fatal) << GetName() <<
": Branch Trigger already exists!";
254 ioman->RegisterAny(
"Trigger",
fTriggers, IsOutputBranchPersistent(
"Trigger"));
256 LOG(fatal) << GetName() <<
": Output branch could not be created!";
259 LOG(info) <<
"--- Registered branch Trigger";
263 LOG(info) <<
"--- Using trigger detector " <<
fConfig->Detector();
264 LOG(info) <<
fAlgo->ToString();
266 LOG(info) <<
"==================================================";