Project
Loading...
Searching...
No Matches
RecoInputContainer.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
15
16#ifndef O2_TRD_RECOINPUTCONTAINER_H
17#define O2_TRD_RECOINPUTCONTAINER_H
18
29
30#include "GPUDataTypes.h"
31
32#include <gsl/span>
33#include <memory>
34
35namespace o2
36{
37namespace trd
38{
39
41 gsl::span<const o2::trd::Tracklet64> mTracklets;
42 gsl::span<const o2::trd::CalibratedTracklet> mSpacePoints;
43 gsl::span<const o2::trd::TriggerRecord> mTriggerRecords;
44 gsl::span<const char> mTrigRecMask;
45 unsigned int mNTracklets;
46 unsigned int mNSpacePoints;
47 unsigned int mNTriggerRecords;
48 std::vector<float> trdTriggerTimes;
49 std::vector<int> trdTriggerIndices;
50 std::unique_ptr<const o2::dataformats::MCTruthContainer<o2::MCCompLabel>> mTrackletLabels;
51
53};
54
56{
57 auto retVal = std::make_unique<RecoInputContainer>();
58
59 retVal->mTracklets = pc.inputs().get<gsl::span<o2::trd::Tracklet64>>("trdtracklets");
60 retVal->mSpacePoints = pc.inputs().get<gsl::span<CalibratedTracklet>>("trdctracklets");
61 retVal->mTriggerRecords = pc.inputs().get<gsl::span<o2::trd::TriggerRecord>>("trdtriggerrec");
62 retVal->mTrigRecMask = pc.inputs().get<gsl::span<char>>("trdtrigrecmask");
63
64 retVal->mNTracklets = retVal->mTracklets.size();
65 retVal->mNSpacePoints = retVal->mSpacePoints.size();
66 retVal->mNTriggerRecords = retVal->mTriggerRecords.size();
67
68 if (mc) {
69 retVal->mTrackletLabels = pc.inputs().get<o2::dataformats::MCTruthContainer<o2::MCCompLabel>*>("trdtrackletlabels");
70 }
71
72 for (unsigned int iEv = 0; iEv < retVal->mNTriggerRecords; ++iEv) {
73 const auto& trg = retVal->mTriggerRecords[iEv];
74 retVal->trdTriggerIndices.push_back(trg.getFirstTracklet());
75 auto evTime = trg.getBCData().differenceInBC(inputTracks->startIR) * o2::constants::lhc::LHCBunchSpacingNS; // event time in ns
76 retVal->trdTriggerTimes.push_back(evTime * 1e-3); // event time in us
77 }
78
79 if (ptrs) {
80 retVal->fillGPUIOPtr(ptrs);
81 }
82
83 return retVal;
84}
85
87{
89 ptrs->trdTriggerTimes = &(trdTriggerTimes[0]);
91 ptrs->trdTrigRecMask = reinterpret_cast<const uint8_t*>(mTrigRecMask.data());
93 ptrs->trdTracklets = reinterpret_cast<const o2::gpu::GPUTRDTrackletWord*>(mTracklets.data());
94 ptrs->trdSpacePoints = reinterpret_cast<const o2::gpu::GPUTRDSpacePoint*>(mSpacePoints.data());
95}
96
97} // namespace trd
98} // namespace o2
99
100#endif
Wrapper container for different reconstructed object types.
int32_t retVal
Header to collect LHC related constants.
Definition of a container to keep Monte Carlo truth external to simulation objects.
Result of refitting TPC-ITS matched track.
A container to hold and manage MC truth information/labels.
decltype(auto) get(R binding, int part=0) const
InputRecord & inputs()
The inputs associated with this processing context.
constexpr double LHCBunchSpacingNS
auto getRecoInputContainer(o2::framework::ProcessingContext &pc, o2::gpu::GPUTrackingInOutPointers *ptrs, const o2::globaltracking::RecoContainer *inputTracks, bool mc=false)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
const GPUTRDSpacePoint * trdSpacePoints
const GPUTRDTrackletWord * trdTracklets
std::vector< int > trdTriggerIndices
gsl::span< const o2::trd::CalibratedTracklet > mSpacePoints
std::vector< float > trdTriggerTimes
gsl::span< const char > mTrigRecMask
std::unique_ptr< const o2::dataformats::MCTruthContainer< o2::MCCompLabel > > mTrackletLabels
gsl::span< const o2::trd::TriggerRecord > mTriggerRecords
void fillGPUIOPtr(o2::gpu::GPUTrackingInOutPointers *ptrs)
gsl::span< const o2::trd::Tracklet64 > mTracklets