CbmRoot
Loading...
Searching...
No Matches
CbmFsdModulesConverter.cxx
Go to the documentation of this file.
1/* Copyright (C) 2020-2021 Physikalisches Institut, Eberhard Karls Universität Tuebingen, Tuebingen
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Viktor Klochkov [committer] */
4
6
7#include "AnalysisTree/Detector.hpp"
8#include "CbmDefs.h"
9#include "CbmEvent.h"
10#include "CbmFsdHit.h"
11#include "FairRootManager.h"
12#include "TClonesArray.h"
13
14#include <AnalysisTree/TaskManager.hpp>
15#include <cassert>
16#include <vector>
17
19
21{
22 assert(!out_branch_.empty());
23 auto* ioman = FairRootManager::Instance();
24 assert(ioman != nullptr);
25 cbm_fsd_hits_ = (TClonesArray*) ioman->GetObject("FsdHit");
26
27 AnalysisTree::BranchConfig fsd_branch(out_branch_, AnalysisTree::DetType::kModule);
28
29 auto* man = AnalysisTree::TaskManager::GetInstance();
30 man->AddBranch(fsd_modules_, fsd_branch);
31}
32
33
35{
36 assert(cbm_fsd_hits_);
37 fsd_modules_->ClearChannels();
38
39 CbmFsdHit* hit{nullptr};
40
41 auto* data_header = AnalysisTree::TaskManager::GetInstance()->GetDataHeader();
42 auto* config = AnalysisTree::TaskManager::GetInstance()->GetConfig();
43 const auto& branch = config->GetBranchConfig(out_branch_);
44
45 const int n_fsd_modules = data_header->GetModulePositions(0).GetNumberOfChannels();
46
47 fsd_modules_->Reserve(n_fsd_modules);
48 for (int i = 0; i < n_fsd_modules; ++i) {
49 fsd_modules_->AddChannel(branch);
50 }
51
52 const int nFsdHits = event ? event->GetNofData(ECbmDataType::kFsdHit) : cbm_fsd_hits_->GetEntriesFast();
53 if (nFsdHits <= 0) {
54 LOG(warn) << "No FSD hits!";
55 return;
56 }
57
58 for (int i = 0; i < nFsdHits; ++i) {
59 hit = (CbmFsdHit*) cbm_fsd_hits_->At(i);
60 if (hit == nullptr) continue;
61 auto& module = fsd_modules_->Channel(hit->GetModuleId());
62 module.SetNumber(i);
63 module.SetSignal(hit->GetEdep());
64 }
65}
66
68
ClassImp(CbmFsdModulesConverter)
std::string out_branch_
Class characterising one event by a collection of links (indices) to data objects,...
Definition CbmEvent.h:34
void ProcessData(CbmEvent *event) final
AnalysisTree::ModuleDetector * fsd_modules_