G4OCCT 0.1.0
Geant4 interface to Open CASCADE Technology (OCCT) geometry definitions
Loading...
Searching...
No Matches
G4OCCTTrackingAction.cc
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2// Copyright (C) 2026 G4OCCT Contributors
3
5
8#include "G4OCCTRunAction.hh"
9
10#include <G4AnalysisManager.hh>
11#include <G4SystemOfUnits.hh>
12#include <G4Track.hh>
13#include <G4VProcess.hh>
14
16 const G4OCCTRunAction* runAction)
17 : fEventAction(eventAction), fRunAction(runAction) {}
18
20 fCurrentTrackEdep = 0.0;
21 if (track->GetParentID() == 0) {
22 fEventAction->IncrementPrimaries();
23 }
24}
25
27 fEventAction->AddTrack();
28
29 const G4int ntId = fRunAction->GetTracksNtupleId();
30 if (ntId < 0)
31 return;
32
33 const G4int eventId = fEventAction->GetEventId();
34
35 const G4ThreeVector& vertex = track->GetVertexPosition();
36 const G4ThreeVector& final = track->GetPosition();
37
38 const G4VProcess* creator = track->GetCreatorProcess();
39 const G4String creatorName = creator ? creator->GetProcessName() : "";
40
41 auto* am = G4AnalysisManager::Instance();
42 G4int col = 0;
43 am->FillNtupleIColumn(ntId, col++, eventId);
44 am->FillNtupleIColumn(ntId, col++, track->GetTrackID());
45 am->FillNtupleIColumn(ntId, col++, track->GetParentID());
46 am->FillNtupleSColumn(ntId, col++, track->GetDefinition()->GetParticleName());
47 am->FillNtupleSColumn(ntId, col++, creatorName);
48 am->FillNtupleDColumn(ntId, col++, fCurrentTrackEdep / MeV);
49 am->FillNtupleDColumn(ntId, col++, track->GetTrackLength() / mm);
50 am->FillNtupleDColumn(ntId, col++, vertex.x() / mm);
51 am->FillNtupleDColumn(ntId, col++, vertex.y() / mm);
52 am->FillNtupleDColumn(ntId, col++, vertex.z() / mm);
53 am->FillNtupleDColumn(ntId, col++, final.x() / mm);
54 am->FillNtupleDColumn(ntId, col++, final.y() / mm);
55 am->FillNtupleDColumn(ntId, col++, final.z() / mm);
56 am->AddNtupleRow(ntId);
57}
58
59void G4OCCTTrackingAction::AddEdepToCurrentTrack(G4double edep) { fCurrentTrackEdep += edep; }
Event action that accumulates per-event totals and fills the events ntuple.
Run action that manages CSV output via G4AnalysisManager.
Tracking action that fills the per-track ntuple.
Event action that accumulates per-event quantities.
G4int GetEventId() const
Returns the current event ID; cached in BeginOfEventAction.
void IncrementPrimaries()
Called from G4OCCTTrackingAction for primary tracks.
void AddTrack()
Called from G4OCCTTrackingAction at the end of each track.
Run action that opens and closes a G4AnalysisManager CSV output file.
G4int GetTracksNtupleId() const
void PostUserTrackingAction(const G4Track *track) override
G4OCCTTrackingAction(G4OCCTEventAction *eventAction, const G4OCCTRunAction *runAction)
void PreUserTrackingAction(const G4Track *track) override
void AddEdepToCurrentTrack(G4double edep)
Called from G4OCCTSteppingAction to accumulate energy deposit for the current track.