I have a little problem with the accumulate trajectories visualization when i change from a “proton” particle on my generator.cc to a “geantino” particle. (see both images - note that both of them have 100 event) It desnt show any trajectories at all when i made this changes. At the end i will share the generator.cc, generator.hh and physics.cc and physics.hh files
//////////////////////////////////////////////////////////////
PHYSICS.CC
#include “Physics.hh”
MyPhysicsList::MyPhysicsList()
{
RegisterPhysics (new G4EmStandardPhysics());
RegisterPhysics (new G4OpticalPhysics());
RegisterPhysics (new G4DecayPhysics());
RegisterPhysics (new G4RadioactiveDecayPhysics());
}
MyPhysicsList::~MyPhysicsList()
{}
//////////////////////////////////////////////////////////////////////////
PHYSICS.HH
#ifndef PHYSICS_HH
#define PHYSICS_HH
#include “G4VModularPhysicsList.hh”
#include “G4EmStandardPhysics.hh”
#include “G4OpticalPhysics.hh”
#include “G4DecayPhysics.hh”
#include “G4RadioactiveDecayPhysics.hh”
class MyPhysicsList : public G4VModularPhysicsList
{
public:
MyPhysicsList();
~MyPhysicsList() override;
};
#endif
///////////////////////////////////////////////////////////////////////////////
GENERATOR.CC
#include “generator.hh”
MyPrimaryGenerator::MyPrimaryGenerator()
{
fParticleGun = new G4ParticleGun(1);
G4ParticleTable *particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition *particle = particleTable->FindParticle("geantino");
G4ThreeVector pos(0.,0.,0.);
G4ThreeVector mom(0.,0.,1.);
fParticleGun->SetParticlePosition(pos);
fParticleGun->SetParticleMomentumDirection(mom);
fParticleGun->SetParticleMomentum(0.*keV);
fParticleGun->SetParticleEnergy(0.*keV);
fParticleGun->SetParticleDefinition(particle);
}
MyPrimaryGenerator::~MyPrimaryGenerator()
{
delete fParticleGun;
}
void MyPrimaryGenerator::GeneratePrimaries(G4Event *anEvent)
{
G4ParticleDefinition *particle = fParticleGun->GetParticleDefinition();
if(particle == G4Geantino::Geantino())
{
G4int Z = 27;
G4int A = 60;
G4double charge = 0.*eplus;
G4double energy = 0.*keV;
G4ParticleDefinition *ion =G4IonTable::GetIonTable()->GetIon(Z, A, energy);
fParticleGun->SetParticleDefinition(ion);
fParticleGun->SetParticleCharge(charge);
}
fParticleGun->GeneratePrimaryVertex(anEvent);
}
//////////////////////////////////////////////////////////////////////////////////////////////7
GENERATOR.HH
#ifndef GENERATOR_HH
#define GENERATOR_HH
#include “G4VUserPrimaryGeneratorAction.hh”
#include “G4ParticleGun.hh”
#include “G4SystemOfUnits.hh”
#include “G4ParticleTable.hh”
#include “G4Geantino.hh”
#include “G4IonTable.hh”
#include “G4ChargedGeantino.hh”
class MyPrimaryGenerator : public G4VUserPrimaryGeneratorAction
{
public:
MyPrimaryGenerator();
~MyPrimaryGenerator() override;
virtual void GeneratePrimaries(G4Event*);
private:
G4ParticleGun *fParticleGun;
};
#endif
///////////////////////////////////////////////////////
VIS.MAC
/run/initialize
/vis/open OGL
/vis/viewer/set/viewpointVector 1 1 1
/vis/drawVolume
/vis/viewer/set/autoRefresh true
/vis/scene/add/trajectories smooth
/vis/scene/add/scale 10 cm
/vis/scene/add/axes
/vis/scene/add/eventID
/vis/scene/endOfEventAction accumulate
///////////////////////////////////////////////////////////////////////
SIM.CC
#include
#include “G4RunManagerFactory.hh”
#include “G4UImanager.hh”
//#include “G4VisManager.hh”
#include “G4VisExecutive.hh”
#include “G4UIExecutive.hh”
#include “G4MTRunManager.hh”
//#include “G4UIcontrolMessenger.hh”
#include “construction.hh”
#include “Physics.hh”
#include “action.hh”
int main(int argc, char** argv)
{
#ifndef G4MULTITHREADED
G4MTRunManager *runManager= new G4MTRunManager(); //MULTITHREADE MODE
#else
G4RunManager *runManager= new G4RunManager(); //SINGLETHREADE MODE
#endif
runManager->SetUserInitialization(new MyDetectorConstruction);
runManager->SetUserInitialization(new MyPhysicsList);
runManager->SetUserInitialization(new MyActionInitialization);
G4UIExecutive *ui = 0;
if(argc == 1)
{
ui = new G4UIExecutive(argc, argv);
}
G4VisManager *visManager= new G4VisExecutive();
visManager->Initialize();
G4UImanager *UImanager= G4UImanager::GetUIpointer();
if(ui)
{
UImanager->ApplyCommand("/control/execute vis.mac");
ui->SessionStart();
}
else
{
G4String command = "/control/execute";
G4String filename = argv[1];
UImanager->ApplyCommand(command+filename);
}
return 0;
};
//////////////////////////////////////////////////////////////////
_Geant4 Version:_geant4-v11.2.1
_Operating System:_Linux 23.10
Compiler/Version:
_CMake Version:_CMake Version 3.27.4