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

Add a dummy Primary Generator Action.

parent aa22f37a
No related branches found
No related tags found
No related merge requests found
...@@ -11,6 +11,7 @@ include(${Geant4_USE_FILE}) ...@@ -11,6 +11,7 @@ include(${Geant4_USE_FILE})
set(DetSimCore_srcs set(DetSimCore_srcs
src/DetSimAlg.cpp src/DetSimAlg.cpp
src/DetectorConstruction.cpp src/DetectorConstruction.cpp
src/PrimaryGeneratorAction.cpp
) )
gaudi_add_module(DetSimCore ${DetSimCore_srcs} gaudi_add_module(DetSimCore ${DetSimCore_srcs}
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "G4PhysListFactory.hh" #include "G4PhysListFactory.hh"
#include "PrimaryGeneratorAction.h"
DECLARE_COMPONENT(DetSimAlg) DECLARE_COMPONENT(DetSimAlg)
...@@ -33,8 +34,9 @@ DetSimAlg::initialize() { ...@@ -33,8 +34,9 @@ DetSimAlg::initialize() {
return StatusCode::FAILURE; return StatusCode::FAILURE;
} }
// Detector Construction
runmgr->SetUserInitialization(new DetectorConstruction()); runmgr->SetUserInitialization(new DetectorConstruction());
// Physics List
G4VUserPhysicsList *physicsList = nullptr; G4VUserPhysicsList *physicsList = nullptr;
if (m_physics_lists_name.value() == "CEPC") { if (m_physics_lists_name.value() == "CEPC") {
...@@ -44,8 +46,8 @@ DetSimAlg::initialize() { ...@@ -44,8 +46,8 @@ DetSimAlg::initialize() {
} }
assert(physicsList); assert(physicsList);
runmgr->SetUserInitialization(physicsList); runmgr->SetUserInitialization(physicsList);
// Primary Generator Action
runmgr->SetUserAction((G4VUserPrimaryGeneratorAction*)0); runmgr->SetUserAction(new PrimaryGeneratorAction());
// after set up the user initialization and user actions, start the initialization. // after set up the user initialization and user actions, start the initialization.
m_detsimsvc->initializeRM(); m_detsimsvc->initializeRM();
......
#include "PrimaryGeneratorAction.h"
#include "G4Event.hh"
#include "G4ParticleTable.hh"
#include "G4IonTable.hh"
#include "G4ParticleDefinition.hh"
PrimaryGeneratorAction::PrimaryGeneratorAction() {
}
PrimaryGeneratorAction::~PrimaryGeneratorAction() {
}
void
PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) {
// Generate Vertex (G4PrimaryVertex) and Particle (G4PrimaryParticle).
// Following is an example:
double x = 0.0;
double y = 0.0;
double z = 0.0;
double t = 0.0;
G4PrimaryVertex* g4vtx = new G4PrimaryVertex(x, y, z, t);
G4int pdgcode = 22;
// check the pdgid
G4ParticleTable* particletbl = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* particle_def = particletbl->FindParticle(pdgcode);
double px = 0.0;
double py = 0.0;
double pz = 0.0;
G4PrimaryParticle* g4prim=new G4PrimaryParticle(particle_def, px, py, pz);
g4vtx->SetPrimary(g4prim);
anEvent->AddPrimaryVertex(g4vtx);
}
#ifndef PrimaryGeneratorAction_h
#define PrimaryGeneratorAction_h
#include "G4VUserPrimaryGeneratorAction.hh"
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
~PrimaryGeneratorAction();
public:
void GeneratePrimaries(G4Event* anEvent);
};
#endif
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