diff --git a/include/RMGGermaniumDetector.hh b/include/RMGGermaniumDetector.hh index c6a4edd..91a8b51 100644 --- a/include/RMGGermaniumDetector.hh +++ b/include/RMGGermaniumDetector.hh @@ -47,6 +47,7 @@ class RMGGermaniumDetectorHit : public G4VHit { void Draw() override; int detector_uid = -1; + int particle_type = -1; float energy_deposition = -1; G4ThreeVector global_position; double global_time = -1; diff --git a/src/RMGGermaniumDetector.cc b/src/RMGGermaniumDetector.cc index 42ff8b7..1cdc6e6 100644 --- a/src/RMGGermaniumDetector.cc +++ b/src/RMGGermaniumDetector.cc @@ -121,6 +121,7 @@ bool RMGGermaniumDetector::ProcessHits(G4Step* step, G4TouchableHistory* /*histo // create a new hit and fill it auto* hit = new RMGGermaniumDetectorHit(); hit->detector_uid = det_uid; + hit->particle_type = step->GetTrack()->GetDefinition()->GetPDGEncoding(); hit->energy_deposition = step->GetTotalEnergyDeposit(); hit->global_position = prestep->GetPosition(); hit->global_time = prestep->GetGlobalTime(); diff --git a/src/RMGGermaniumOutputScheme.cc b/src/RMGGermaniumOutputScheme.cc index 88bd1ed..1348d16 100644 --- a/src/RMGGermaniumOutputScheme.cc +++ b/src/RMGGermaniumOutputScheme.cc @@ -41,6 +41,7 @@ void RMGGermaniumOutputScheme::AssignOutputNames(G4AnalysisManager* ana_man) { ana_man->CreateNtuple(this->GetNtupleName(det.second.uid), "Event data"); ana_man->CreateNtupleIColumn(id, "evtid"); + ana_man->CreateNtupleIColumn(id, "particle"); ana_man->CreateNtupleDColumn(id, "edep"); ana_man->CreateNtupleDColumn(id, "time"); ana_man->CreateNtupleDColumn(id, "xloc"); @@ -88,11 +89,12 @@ void RMGGermaniumOutputScheme::EndOfEventAction(const G4Event* event) { auto ntupleid = rmg_man->GetNtupleID(hit->detector_uid); ana_man->FillNtupleIColumn(ntupleid, 0, event->GetEventID()); - ana_man->FillNtupleDColumn(ntupleid, 1, hit->energy_deposition / u::keV); - ana_man->FillNtupleDColumn(ntupleid, 2, hit->global_time / u::ns); - ana_man->FillNtupleDColumn(ntupleid, 3, hit->global_position.getX() / u::m); - ana_man->FillNtupleDColumn(ntupleid, 4, hit->global_position.getY() / u::m); - ana_man->FillNtupleDColumn(ntupleid, 5, hit->global_position.getZ() / u::m); + ana_man->FillNtupleIColumn(ntupleid, 1, hit->particle_type); + ana_man->FillNtupleDColumn(ntupleid, 2, hit->energy_deposition / u::keV); + ana_man->FillNtupleDColumn(ntupleid, 3, hit->global_time / u::ns); + ana_man->FillNtupleDColumn(ntupleid, 4, hit->global_position.getX() / u::m); + ana_man->FillNtupleDColumn(ntupleid, 5, hit->global_position.getY() / u::m); + ana_man->FillNtupleDColumn(ntupleid, 6, hit->global_position.getZ() / u::m); // NOTE: must be called here for hit-oriented output ana_man->AddNtupleRow(ntupleid);