12#define BOOST_TEST_MODULE Test MCStack class
13#define BOOST_TEST_MAIN
14#define BOOST_TEST_DYN_LINK
15#include <boost/test/unit_test.hpp>
20#include "TMCProcess.h"
33 TMCProcess proc{kPPrimary};
35 st.PushTrack(1, -1, 0, 0, 0., 0., 10., 5., 5., 5., 0.1, 0., 0., 0., proc,
a, 1., 1);
36 st.PushTrack(1, -1, 0, 0, 0., 0., 10., 5., 5., 5., 0.1, 0., 0., 0., proc,
a, 1., 1);
41 TFile
f(
"StackOut.root",
"RECREATE");
42 f.WriteObject(&
st,
"Stack");
48 TFile
f(
"StackOut.root",
"OPEN");
49 f.GetObject(
"Stack", inst);
58 st.PushTrack(1, parentId, 0, 0., 0., 0., 10., 5., 5., 5., 0.1, 0., 0., 0., proc, trackId, 1., 1);
68 const auto prim0 = pushTrack(
st, -1, kPPrimary);
69 const auto prim1 = pushTrack(
st, -1, kPPrimary);
74 const auto radDecay = pushTrack(
st, prim1, kPRadDecay);
75 const auto radChild = pushTrack(
st, radDecay, kPHadronic);
76 const auto radGrandChild = pushTrack(
st, radChild, kPHadronic);
79 const auto ordinary = pushTrack(
st, prim1, kPHadronic);
105 TestDetector() :
o2::base::Detector(
"ITS",
true) {}
109 for (
auto& hit : mHits) {
114 std::vector<o2::BaseHit> mHits;
118 void attachHits(fair::mq::Channel&, fair::mq::Parts&)
override {}
119 void fillHitBranch(TTree&, fair::mq::Parts&,
int&)
override {}
120 void collectHits(
int, fair::mq::Parts&,
int&,
bool)
override {}
122 std::vector<int>
const&)
override {}
123 void mergeHitEntries(TTree&, TTree&, std::vector<int>
const&, std::vector<int>
const&,
124 std::vector<int>
const&)
override {}
129 void Reset()
override {}
137 st.PushTrack(1, -1, 11, 0., 0., 1., 1., 0., 0., 0., 0., 0., 0., 0., kPPrimary, ntr, 1., 1);
138 st.SetCurrentTrack(0);
139 for (
int i = 0;
i < nsecondaries; ++
i) {
140 st.PushTrack(1, 0, 11, 0., 0., 0.1, 0.1, 0., 0., 0., 0., 0., 0., 0., kPHadronic, ntr, 1., 1);
149 const std::map<int, int> indexmapping{{0, 0}, {1, 1}};
163 transportOnePrimary(
st, 20);
164 st.UpdateTrackIndex(&detlist);
167 transportOnePrimary(
st, 1);
168 det.mHits.emplace_back(15);
169 st.UpdateTrackIndex(&detlist);
177 const int nprimaries = 5, primaryOffset = 10, secondaryOffset = 100;
187 const int iDet = o2::detectors::DetID::EMC;
188 for (
bool prune : {
false,
true}) {
191 const auto prim = pushTrack(
st, -1, kPPrimary);
192 st.SetCurrentTrack(prim);
194 const auto sec = pushTrack(
st, prim, kPHadronic);
195 const auto flagged = pushTrack(
st, sec, kPHadronic);
196 const auto other = pushTrack(
st, sec, kPHadronic);
198 st.modifiesHit(iDet);
199 st.SetCurrentTrack(flagged);
200 st.modifiesHit(iDet);
205 auto const&
tracks = *
st.getMCTracks();
210 BOOST_REQUIRE_EQUAL(
tracks.size(), 4);
216 for (
auto const& t :
tracks) {
Definition of the Detector class.
Definition of the Stack class.
std::vector< o2::its::TrackITS > tracks
virtual void Register()=0
virtual Bool_t ProcessHits(FairVolume *v=0)=0
virtual void ConstructGeometry()
virtual std::string getHitBranchNames(int probe) const =0
virtual void initializeLate()=0
virtual void attachHits(fair::mq::Channel &, fair::mq::Parts &)=0
static int updatedTrackIndex(std::map< int, int > const &indexmapping, int trackID)
virtual void updateHitTrackIndices(std::map< int, int > const &)=0
virtual void mergeHitEntries(TTree &origin, TTree &target, std::vector< int > const &trackoffsets, std::vector< int > const &nprimaries, std::vector< int > const &subevtsOrdered)=0
virtual void collectHits(int eventID, fair::mq::Parts &parts, int &index, bool shm)=0
virtual void fillHitBranch(TTree &tr, fair::mq::Parts &parts, int &index)=0
virtual void mergeHitEntriesAndFlush(int eventID, TTree &target, std::vector< int > const &trackoffsets, std::vector< int > const &nprimaries, std::vector< int > const &subevtsOrdered)=0
static int offsetTrackIndex(int trackID, int nprimaries, int primaryOffset, int secondaryOffset)
virtual void InitializeO2Detector()=0
void pruneKinematics(bool choice=true)
const std::vector< TParticle > & getPrimaries() const
GLboolean GLboolean GLboolean GLboolean a
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
BOOST_AUTO_TEST_CASE(FlatHisto)
VectorOfTObjectPtrs other
BOOST_CHECK_EQUAL(triggersD.size(), triggers.size())