Geant4调用DetectorConstruction和PrimaryGeneratorAction

endcase / 2023-08-10 / 原文

在RunAction中调用DetectorConstruction和PrimaryGeneratorAction

  const auto* detectorConstruction = dynamic_cast< const DetectorConstruction* >
          (G4RunManager::GetRunManager()->GetUserDetectorConstruction() );
  G4Material* targetMaterial = detectorConstruction->GetTargetMaterial();

  // There is no primary generator action object for "master"
  const auto* generatorAction = dynamic_cast< const PrimaryGeneratorAction* >
          (G4RunManager::GetRunManager()->GetUserPrimaryGeneratorAction() );
  G4double  particleEnergy;
  if(generatorAction) {
      const G4ParticleGun *particleGun = generatorAction->GetParticleGun();
      particleEnergy = particleGun->GetParticleEnergy();//粒子能量
//      particleGun->GetParticleMomentum();               //粒子动量
//      particleGun->GetParticlePolarization();           //粒子位置
//      particleGun->GetNumberOfParticles();              //粒子数量
//      particleGun->GetParticleDefinition()->GetParticleName(); //粒子名称
//      particleGun->GetParticleDefinition()->GetParticleTable(); //粒子种类


  }