@@ -43,6 +43,8 @@ void ActsPlugins::RootMaterialTrackIo::connectForRead(TChain& materialChain) {
4343 materialChain.SetBranchAddress (" mat_A" , &m_stepPayload.stepMatAPtr );
4444 materialChain.SetBranchAddress (" mat_Z" , &m_stepPayload.stepMatZPtr );
4545 materialChain.SetBranchAddress (" mat_rho" , &m_stepPayload.stepMatRhoPtr );
46+ materialChain.SetBranchAddress (" elements" , &m_stepPayload.stepElementZPtr );
47+ materialChain.SetBranchAddress (" fraction" , &m_stepPayload.stepFractionPtr );
4648 if (m_cfg.surfaceInfo ) {
4749 materialChain.SetBranchAddress (" sur_id" , &m_surfacePayload.surfaceIdPtr );
4850 materialChain.SetBranchAddress (" sur_x" , &m_surfacePayload.surfaceXPtr );
@@ -80,6 +82,8 @@ void ActsPlugins::RootMaterialTrackIo::connectForWrite(TTree& materialTree) {
8082 materialTree.Branch (" mat_A" , &m_stepPayload.stepMatA );
8183 materialTree.Branch (" mat_Z" , &m_stepPayload.stepMatZ );
8284 materialTree.Branch (" mat_rho" , &m_stepPayload.stepMatRho );
85+ materialTree.Branch (" elements" , &m_stepPayload.stepElementZ );
86+ materialTree.Branch (" fraction" , &m_stepPayload.stepFraction );
8387
8488 if (m_cfg.prePostStepInfo ) {
8589 materialTree.Branch (" mat_sx" , &m_stepPayload.stepXs );
@@ -128,6 +132,8 @@ void ActsPlugins::RootMaterialTrackIo::write(
128132 m_stepPayload.stepMatA .clear ();
129133 m_stepPayload.stepMatZ .clear ();
130134 m_stepPayload.stepMatRho .clear ();
135+ m_stepPayload.stepElementZ .clear ();
136+ m_stepPayload.stepFraction .clear ();
131137
132138 m_surfacePayload.surfaceId .clear ();
133139 m_surfacePayload.surfaceX .clear ();
@@ -162,6 +168,8 @@ void ActsPlugins::RootMaterialTrackIo::write(
162168 m_stepPayload.stepMatA .reserve (mints);
163169 m_stepPayload.stepMatZ .reserve (mints);
164170 m_stepPayload.stepMatRho .reserve (mints);
171+ m_stepPayload.stepElementZ .reserve (mints);
172+ m_stepPayload.stepFraction .reserve (mints);
165173
166174 m_surfacePayload.surfaceId .reserve (mints);
167175 m_surfacePayload.surfaceX .reserve (mints);
@@ -274,6 +282,8 @@ void ActsPlugins::RootMaterialTrackIo::write(
274282 m_stepPayload.stepMatA .push_back (mprops.material ().Ar ());
275283 m_stepPayload.stepMatZ .push_back (mprops.material ().Z ());
276284 m_stepPayload.stepMatRho .push_back (mprops.material ().massDensity ());
285+ m_stepPayload.stepElementZ .push_back (mint.elementZ );
286+ m_stepPayload.stepFraction .push_back (mint.elementFrac );
277287 // re-calculate if defined to do so
278288 if (m_cfg.recalculateTotals ) {
279289 m_summaryPayload.tX0 += mprops.thicknessInX0 ();
@@ -320,6 +330,11 @@ RecordedMaterialTrack ActsPlugins::RootMaterialTrackIo::read() const {
320330 m_stepPayload.stepMatZ [is],
321331 m_stepPayload.stepMatRho [is]),
322332 s);
333+ // / adding the element vectors and fractions
334+ if (is < m_stepPayload.stepElementZ .size ()) {
335+ mInteraction .elementZ = m_stepPayload.stepElementZ [is];
336+ mInteraction .elementFrac = m_stepPayload.stepFraction [is];
337+ }
323338 if (m_cfg.surfaceInfo ) {
324339 // add the surface information to the interaction this allows the
325340 // mapping to be speed up
0 commit comments