Accessing primary particle information in RunAction in MT mode

Hi all,

I want to access the primary particle information in the RunAction as I am storing initial energy and some other stuff as run metadata. I am doing it the following way in the EndOfRunAction, where the GetGeneralParticleSource() function returns the gps object from the PrimaryGeneratorAction and fInpEne is a global variable defined in the RunAction.cc.

 const DetBoxPrimaryGeneratorAction* generatorAction
    = static_cast<const DetBoxPrimaryGeneratorAction*>(
        G4MTRunManager::GetRunManager()->GetUserPrimaryGeneratorAction());

    if (generatorAction)
    {
        const G4GeneralParticleSource* gps = generatorAction->GetGeneralParticleSource();
        fInpEne = gps->GetCurrentSource()->GetParticleEnergy() / keV;
    }

This works fine for the sequential mode but for the MT mode the fInpEne doesn’t return correct value for the master thread. I suppose this is because for master thread the gps is not initialized?

If so, is there a better way to access this information in the master thread?

Thanks,
Sujay

2 Likes