From 3b1af753bbaff6162aa2e39ba67258d1cf3c2589 Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Thu, 17 Dec 2020 22:40:36 +0800
Subject: [PATCH] WIP: save the vertex and momentum when secondaries are
 created.

---
 .../DetSimAna/src/Edm4hepWriterAnaElemTool.cpp    | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp b/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp
index 33b9bae7..001c1ea9 100644
--- a/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp
+++ b/Simulation/DetSimAna/src/Edm4hepWriterAnaElemTool.cpp
@@ -353,8 +353,11 @@ Edm4hepWriterAnaElemTool::PostUserTrackingAction(const G4Track* track) {
                 if (creatorProcess==proc_decay) {
                     info() << "Creator Process is Decay for secondary particle: "
                            << " idx: " << i
+                           << " trkid: " << sectrk->GetTrackID() // not valid until track
                            << " particle: " << secparticle->GetParticleName()
                            << " pdg: " << secparticle->GetPDGEncoding()
+                           << " at position: " << sectrk->GetPosition() // 
+                           << " momentum: " << sectrk->GetMomentum() // 
                            << endmsg;
                     is_decay = true;
 
@@ -368,8 +371,16 @@ Edm4hepWriterAnaElemTool::PostUserTrackingAction(const G4Track* track) {
                     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;
+
+                    const G4ThreeVector& sec_init_pos = sectrk->GetPosition();
+                    double x=sec_init_pos.x()/CLHEP::mm;
+                    double y=sec_init_pos.y()/CLHEP::mm;
+                    double z=sec_init_pos.z()/CLHEP::mm;
+
+                    const G4ThreeVector& sec_init_mom = sectrk->GetMomentum();
+                    double px=sec_init_mom.x()/CLHEP::GeV;
+                    double py=sec_init_mom.y()/CLHEP::GeV;
+                    double pz=sec_init_mom.z()/CLHEP::GeV;
                     mcp.setVertex(edm4hep::Vector3d(x,y,z)); // todo
                     mcp.setEndpoint(edm4hep::Vector3d(x,y,z)); // todo
                     mcp.setMomentum(edm4hep::Vector3f(px,py,pz)); // todo
-- 
GitLab