Skip to content
Snippets Groups Projects
Commit feb7155e authored by lintao@ihep.ac.cn's avatar lintao@ihep.ac.cn
Browse files

WIP: only kill the non-primary charged particle the dummy model.

parent 1a86b6a1
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#include "DetectorConstruction.h" #include "DetectorConstruction.h"
#include "G4PhysListFactory.hh" #include "G4PhysListFactory.hh"
#include "G4StepLimiterPhysics.hh"
#include "G4FastSimulationPhysics.hh"
#include "PrimaryGeneratorAction.h" #include "PrimaryGeneratorAction.h"
#include "ActionInitialization.h" #include "ActionInitialization.h"
...@@ -55,7 +57,20 @@ DetSimAlg::initialize() { ...@@ -55,7 +57,20 @@ DetSimAlg::initialize() {
} else { } else {
G4PhysListFactory *physListFactory = new G4PhysListFactory(); G4PhysListFactory *physListFactory = new G4PhysListFactory();
physicsList = physListFactory->GetReferencePhysList(m_physics_lists_name.value()); G4VModularPhysicsList* modularPhysicsList = physListFactory->GetReferencePhysList(m_physics_lists_name.value());
// register addition physics list
modularPhysicsList->RegisterPhysics(new G4StepLimiterPhysics());
// register fastsim physics
G4FastSimulationPhysics* fastsim_physics = new G4FastSimulationPhysics();
fastsim_physics->BeVerbose();
fastsim_physics->ActivateFastSimulation("e-");
fastsim_physics->ActivateFastSimulation("e+");
fastsim_physics->ActivateFastSimulation("gamma");
modularPhysicsList->RegisterPhysics(fastsim_physics);
physicsList = modularPhysicsList;
} }
assert(physicsList); assert(physicsList);
runmgr->SetUserInitialization(physicsList); runmgr->SetUserInitialization(physicsList);
......
#include "DummyFastSimG4Model.h" #include "DummyFastSimG4Model.h"
#include "G4Track.hh"
#include "G4FastTrack.hh"
DummyFastSimG4Model::DummyFastSimG4Model(G4String aModelName, G4Region* aEnvelope) DummyFastSimG4Model::DummyFastSimG4Model(G4String aModelName, G4Region* aEnvelope)
: G4VFastSimulationModel(aModelName, aEnvelope) { : G4VFastSimulationModel(aModelName, aEnvelope) {
...@@ -10,13 +13,25 @@ DummyFastSimG4Model::~DummyFastSimG4Model() { ...@@ -10,13 +13,25 @@ DummyFastSimG4Model::~DummyFastSimG4Model() {
} }
G4bool DummyFastSimG4Model::IsApplicable(const G4ParticleDefinition& aParticle) { G4bool DummyFastSimG4Model::IsApplicable(const G4ParticleDefinition& aParticle) {
return true; return aParticle.GetPDGCharge() != 0;
} }
G4bool DummyFastSimG4Model::ModelTrigger(const G4FastTrack& aFastTrack) { G4bool DummyFastSimG4Model::ModelTrigger(const G4FastTrack& aFastTrack) {
return true; G4cout << __FILE__ << __LINE__ << ": ModelTrigger." << G4endl;
bool istrigged = false;
// only select the secondaries
const G4Track* track = aFastTrack.GetPrimaryTrack();
// secondaries
if (track->GetParentID() != 0) {
istrigged = true;
}
return istrigged;
} }
void DummyFastSimG4Model::DoIt(const G4FastTrack& aFastTrack, G4FastStep& aFastStep) { void DummyFastSimG4Model::DoIt(const G4FastTrack& aFastTrack, G4FastStep& aFastStep) {
G4cout << __FILE__ << __LINE__ << ": DoIt." << G4endl;
aFastStep.ProposeTrackStatus(fStopAndKill);
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment