18#include <fairlogger/Logger.h>
24 for (
auto chain : mInputChains) {
29 if (mDigitizationContext && mOwningDigiContext) {
30 delete mDigitizationContext;
38 if (a.getTrackID() == b.getTrackID()) {
39 return a.getLength() < b.getLength();
41 return a.getTrackID() <
b.getTrackID();
46 for (
auto&
ref : refs) {
47 if (
ref.getTrackID() >= 0) {
48 indexedrefs.addElement(
ref.getTrackID(),
ref);
53void MCKinematicsReader::initTracksForSource(
int source)
const
58 auto br =
chain->GetBranch(
"MCTrack");
59 mTracks[
source].resize(br->GetEntries(),
nullptr);
63void MCKinematicsReader::loadTracksForSourceAndEvent(
int source,
int event)
const
68 auto br =
chain->GetBranch(
"MCTrack");
70 std::vector<MCTrack>* loadtracks =
nullptr;
71 br->SetAddress(&loadtracks);
73 mTracks[
source][
event] =
new std::vector<o2::MCTrack>;
82 if (mTracks.at(
source).at(eventID) !=
nullptr) {
83 delete mTracks[
source][eventID];
84 mTracks[
source][eventID] =
nullptr;
88void MCKinematicsReader::loadHeadersForSource(
int source)
const
93 auto br =
chain->GetBranch(
"MCEventHeader.");
96 br->SetAddress(&header);
97 mHeaders[
source].resize(br->GetEntries());
98 for (
int event = 0;
event < br->GetEntries(); ++
event) {
105 LOG(warn) <<
"MCHeader branch not found";
110void MCKinematicsReader::loadTrackRefsForSource(
int source)
const
115 auto br =
chain->GetBranch(
"TrackRefs");
117 std::vector<o2::TrackReference>* refs =
nullptr;
118 br->SetAddress(&refs);
119 mIndexedTrackRefs[
source].resize(br->GetEntries());
120 for (
int event = 0;
event < br->GetEntries(); ++
event) {
124 initIndexedTrackRefs(*refs, mIndexedTrackRefs[
source][
event]);
130 LOG(warn) <<
"TrackRefs branch not found";
138 LOG(info) <<
"MCKinematicsReader already initialized; doing nothing";
143 mDigitizationContext = context;
149 mTracks.resize(mInputChains.size());
150 mHeaders.resize(mInputChains.size());
151 mIndexedTrackRefs.resize(mInputChains.size());
162 LOG(info) <<
"MCKinematicsReader already initialized; doing nothing";
170 mOwningDigiContext =
true;
177 LOG(info) <<
"MCKinematicsReader already initialized; doing nothing";
180 mInputChains.emplace_back(
new TChain(
"o2sim"));
184 mIndexedTrackRefs.resize(1);
Definition of the Names Generator class.
static std::string getMCKinematicsFileName(const std::string_view prefix=STANDARDSIMPREFIX)
bool initSimKinematicsChains(std::vector< TChain * > &simkinematicschains) const
static DigitizationContext * loadFromFile(std::string_view filename="")
bool initFromKinematics(std::string_view filename)
inits the reader from a simple kinematics file
bool initFromDigitContext(std::string_view filename)
~MCKinematicsReader()
destructor
void releaseTracksForSourceAndEvent(int source, int event)
API to ask releasing tracks (freeing memory) for source + event.
GLuint const GLchar * name
GLboolean GLboolean GLboolean b
GLsizei GLsizei GLchar * source
GLboolean GLboolean GLboolean GLboolean a
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"