CbmRoot
Loading...
Searching...
No Matches
CbmTaskMakeRecoEvents.h
Go to the documentation of this file.
1/* Copyright (C) 2021-2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Volker Friese [committer] */
4
5
6#ifndef CBMTASKMAKERECOEVENTS_H
7#define CBMTASKMAKERECOEVENTS_H 1
8
9
10#include "CbmDefs.h"
11#include "CbmDigiEvent.h"
12#include "CbmEvent.h"
13#include "CbmMvdDigi.h"
14
15#include <FairTask.h>
16
17#include <gsl/span>
18#include <vector>
19
20class TClonesArray;
21
22
39class CbmTaskMakeRecoEvents : public FairTask {
40
41
42 public:
45
46
49
50
52 virtual ~CbmTaskMakeRecoEvents();
53
54
56 virtual void Exec(Option_t* opt);
57
58
60 virtual void Finish();
61
62
65
66
67 private: // methods
69 virtual InitStatus Init();
70
71
81 template<typename Digi>
82 void FillTree(gsl::span<const Digi> inVec, std::vector<Digi>* outVec, CbmEvent* event, ECbmDataType digiType)
83 {
84 size_t startIndex = outVec->size();
85 size_t stopIndex = startIndex + inVec.size();
86 outVec->insert(outVec->end(), inVec.begin(), inVec.end());
87 for (size_t index = startIndex; index < stopIndex; index++)
88 event->AddData(digiType, index);
89 }
90
100 void FillTreeMvd(gsl::span<const CbmMvdRawDigi> inVec, std::vector<CbmMvdDigi>* outVec, CbmEvent* event)
101 {
102 size_t index = outVec->size();
103 for (auto& rawDigi : inVec) {
104 outVec->push_back(CbmMvdDigi(rawDigi));
105 event->AddData(ECbmDataType::kMvdDigi, index);
106 index++;
107 }
108 }
109
110
111 private: // members
112 const std::vector<CbmDigiEvent>* fDigiEvents = nullptr;
113 TClonesArray* fRecoEvents = nullptr;
114 std::vector<CbmBmonDigi>* fBmonDigis = nullptr;
115 std::vector<CbmMvdDigi>* fMvdDigis = nullptr;
116 std::vector<CbmStsDigi>* fStsDigis = nullptr;
117 std::vector<CbmRichDigi>* fRichDigis = nullptr;
118 std::vector<CbmMuchDigi>* fMuchDigis = nullptr;
119 std::vector<CbmTrdDigi>* fTrdDigis = nullptr;
120 std::vector<CbmTofDigi>* fTofDigis = nullptr;
121 std::vector<CbmFsdDigi>* fFsdDigis = nullptr;
122 double fTimeTot = 0.;
123 size_t fNumTs = 0;
124 size_t fNumEvents = 0;
125
127};
128
129#endif /* CBMTASKMAKERECOEVENTS_H */
ECbmDataType
Enumerator for CBM data types.
Definition CbmDefs.h:122
Class characterising one event by a collection of links (indices) to data objects,...
Definition CbmEvent.h:34
void AddData(ECbmDataType type, uint32_t index)
Definition CbmEvent.cxx:33
std::vector< CbmTrdDigi > * fTrdDigis
std::vector< CbmBmonDigi > * fBmonDigis
size_t fNumTs
Number of processed timeslices.
size_t fNumEvents
Number of events.
std::vector< CbmMvdDigi > * fMvdDigis
CbmTaskMakeRecoEvents(const CbmTaskMakeRecoEvents &)=delete
Copy constructor (disabled)
virtual void Exec(Option_t *opt)
Task execution.
std::vector< CbmRichDigi > * fRichDigis
const std::vector< CbmDigiEvent > * fDigiEvents
virtual ~CbmTaskMakeRecoEvents()
Destructor.
double fTimeTot
Execution time.
std::vector< CbmFsdDigi > * fFsdDigis
std::vector< CbmTofDigi > * fTofDigis
std::vector< CbmMuchDigi > * fMuchDigis
void FillTree(gsl::span< const Digi > inVec, std::vector< Digi > *outVec, CbmEvent *event, ECbmDataType digiType)
Fill the tree structure with digis from CbmDigiEvent.
CbmTaskMakeRecoEvents & operator=(const CbmTaskMakeRecoEvents &)=delete
Assignment operator (disabled)
virtual void Finish()
Finish timeslice.
virtual InitStatus Init()
Task initialisation.
std::vector< CbmStsDigi > * fStsDigis
ClassDef(CbmTaskMakeRecoEvents, 2)
void FillTreeMvd(gsl::span< const CbmMvdRawDigi > inVec, std::vector< CbmMvdDigi > *outVec, CbmEvent *event)
Fill the tree with MVD digis.