CbmRoot
Loading...
Searching...
No Matches
CbmPsdModulesConverter.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 "CbmPsdHit.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_psd_hits_ = (TClonesArray*) ioman->GetObject("PsdHit");
26
27 AnalysisTree::BranchConfig psd_branch(out_branch_, AnalysisTree::DetType::kModule);
28
29 auto* man = AnalysisTree::TaskManager::GetInstance();
30 man->AddBranch(psd_modules_, psd_branch);
31}
32
33
35{
36 assert(cbm_psd_hits_);
37 psd_modules_->ClearChannels();
38
39 CbmPsdHit* 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_psd_modules = data_header->GetModulePositions(0).GetNumberOfChannels();
46
47 psd_modules_->Reserve(n_psd_modules);
48 for (int i = 0; i < n_psd_modules; ++i) {
49 psd_modules_->AddChannel(branch);
50 }
51
52 const int nPsdHits = event ? event->GetNofData(ECbmDataType::kPsdHit) : cbm_psd_hits_->GetEntriesFast();
53 if (nPsdHits <= 0) {
54 LOG(warn) << "No PSD hits!";
55 return;
56 }
57
58 for (int i = 0; i < nPsdHits; ++i) {
59 hit = (CbmPsdHit*) cbm_psd_hits_->At(i);
60 if (hit == nullptr) continue;
61 auto& module = psd_modules_->Channel(i);
62 module.SetNumber(hit->GetModuleID());
63 module.SetSignal(hit->GetEdep());
64 }
65}
66
68
ClassImp(CbmPsdModulesConverter)
std::string out_branch_
Class characterising one event by a collection of links (indices) to data objects,...
Definition CbmEvent.h:34
AnalysisTree::ModuleDetector * psd_modules_
void ProcessData(CbmEvent *event) final