From 460d8fa62499186c8994f95b843d04e344f132fe Mon Sep 17 00:00:00 2001 From: Vladimir Date: Sun, 3 Dec 2023 13:33:47 +0100 Subject: [PATCH] provide simulation of ZDC --- SimG4Core/Application/interface/SteppingAction.h | 1 + SimG4Core/Application/src/SteppingAction.cc | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/SimG4Core/Application/interface/SteppingAction.h b/SimG4Core/Application/interface/SteppingAction.h index e4169361854d7..8fbe310ce98bf 100644 --- a/SimG4Core/Application/interface/SteppingAction.h +++ b/SimG4Core/Application/interface/SteppingAction.h @@ -50,6 +50,7 @@ class SteppingAction : public G4UserSteppingAction { EventAction* eventAction_; const G4VPhysicalVolume *tracker, *calo; const CMSSteppingVerbose* steppingVerbose; + const G4LogicalVolume* m_CMStoZDC{nullptr}; double theCriticalEnergyForVacuum; double theCriticalDensity; double maxTrackTime; diff --git a/SimG4Core/Application/src/SteppingAction.cc b/SimG4Core/Application/src/SteppingAction.cc index d444995de890b..6857c928d04dc 100644 --- a/SimG4Core/Application/src/SteppingAction.cc +++ b/SimG4Core/Application/src/SteppingAction.cc @@ -151,13 +151,13 @@ void SteppingAction::UserSteppingAction(const G4Step* aStep) { } // check G4Region - if (sAlive == tstat) { + if (sAlive == tstat || sVeryForward == tstat) { // next logical volume and next region const G4LogicalVolume* lv = postStep->GetPhysicalVolume()->GetLogicalVolume(); const G4Region* theRegion = lv->GetRegion(); // kill in dead regions - if (isInsideDeadRegion(theRegion)) + if (lv != m_CMStoZDC && isInsideDeadRegion(theRegion)) tstat = sDeadRegion; // kill out of time @@ -245,6 +245,9 @@ bool SteppingAction::initPointer() { ekinVolumes.resize(numberEkins, nullptr); for (auto const& lvcite : *lvs) { const G4String& lvname = lvcite->GetName(); + if (lvname == "CMStoZDC") { + m_CMStoZDC = lvcite; + } for (unsigned int i = 0; i < numberEkins; ++i) { if (lvname == (G4String)(ekinNames[i])) { ekinVolumes[i] = lvcite;