From b10aff7920c56364d1ff6e474d6870515646976e Mon Sep 17 00:00:00 2001 From: lintao <lintao51@gmail.com> Date: Thu, 17 Dec 2020 22:12:43 +0800 Subject: [PATCH] WIP: create secondaries in MC particles. --- .../src/Edm4hepWriterAnaElemTool.cpp | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp b/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp index 2c70a94c..33b9bae7 100644 --- a/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp +++ b/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp @@ -357,6 +357,26 @@ Edm4hepWriterAnaElemTool::PostUserTrackingAction(const G4Track* track) { << " pdg: " << secparticle->GetPDGEncoding() << endmsg; is_decay = true; + + // create secondaries in MC particles + // todo: convert the const collection to non-const + auto mcCol = const_cast<edm4hep::MCParticleCollection*>(m_mcParCol.get()); + edm4hep::MCParticle mcp = mcCol->create(); + mcp.setPDG(secparticle->GetPDGEncoding()); + mcp.setGeneratorStatus(0); // not created by Generator + mcp.setCreatedInSimulation(1); + mcp.setCharge(secparticle->GetPDGCharge()); + mcp.setTime(0.0); // todo + mcp.setMass(secparticle->GetPDGMass()); + double x=0, y=0, z=0; + double px=0, py=0, pz=0; + mcp.setVertex(edm4hep::Vector3d(x,y,z)); // todo + mcp.setEndpoint(edm4hep::Vector3d(x,y,z)); // todo + mcp.setMomentum(edm4hep::Vector3f(px,py,pz)); // todo + mcp.setMomentumAtEndpoint(edm4hep::Vector3f(px,py,pz)); //todo + + mcp.addToParents(primary_particle); + primary_particle.addToDaughters(mcp); } } } -- GitLab