Loading src/modules/DepositionGeant4/DepositionGeant4Module.cpp +15 −9 Original line number Diff line number Diff line Loading @@ -167,19 +167,26 @@ void DepositionGeant4Module::initialize() { } // Find the physics list auto physics_list = config_.get<std::string>("physics_list"); auto physics_list = allpix::transform(config_.get<std::string>("physics_list"), ::toupper); G4PhysListFactory physListFactory; G4VModularPhysicsList* physicsList = physListFactory.GetReferencePhysList(physics_list); G4VModularPhysicsList* physicsList{nullptr}; try { // Geant4 throws an exception if the list is not found physicsList = physListFactory.GetReferencePhysList(physics_list); // ...but older versions of it don't, so let's do this ourselves: if(physicsList == nullptr) { throw ModuleError(""); } } catch(ModuleError&) { std::string message = "specified physics list does not exists"; std::vector<G4String> base_lists = physListFactory.AvailablePhysLists(); message += " (available base lists are "; message += "\nAvailable base lists are: "; for(auto& base_list : base_lists) { message += base_list; message += ", "; } message = message.substr(0, message.size() - 2); message += " with optional suffixes for electromagnetic lists "; message += "\nwith optional suffixes for electromagnetic lists: "; std::vector<G4String> em_lists = physListFactory.AvailablePhysListsEM(); for(auto& em_list : em_lists) { if(em_list.empty()) { Loading @@ -189,12 +196,11 @@ void DepositionGeant4Module::initialize() { message += ", "; } message = message.substr(0, message.size() - 2); message += ")"; throw InvalidValueError(config_, "physics_list", message); } else { LOG(INFO) << "Using G4 physics list \"" << physics_list << "\""; } LOG(INFO) << "Using G4 physics list \"" << physics_list << "\""; // Register a step limiter (uses the user limits defined earlier) LOG(DEBUG) << "Registering Geant4 step limiter physics list"; physicsList->RegisterPhysics(new G4StepLimiterPhysics()); Loading src/tools/geant4/G4ExceptionHandler.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ namespace allpix { public: G4bool Notify(const char*, const char* code, G4ExceptionSeverity severity, const char* description) override { std::string message = "Caught Geant4 exception " + std::string(code) + ": " + std::string(description); if(severity == G4ExceptionSeverity::JustWarning) { if(severity == G4ExceptionSeverity::JustWarning && std::string(code) != "pl0003") { LOG(WARNING) << message; } else if(severity == G4ExceptionSeverity::EventMustBeAborted) { throw AbortEventException(message); Loading Loading
src/modules/DepositionGeant4/DepositionGeant4Module.cpp +15 −9 Original line number Diff line number Diff line Loading @@ -167,19 +167,26 @@ void DepositionGeant4Module::initialize() { } // Find the physics list auto physics_list = config_.get<std::string>("physics_list"); auto physics_list = allpix::transform(config_.get<std::string>("physics_list"), ::toupper); G4PhysListFactory physListFactory; G4VModularPhysicsList* physicsList = physListFactory.GetReferencePhysList(physics_list); G4VModularPhysicsList* physicsList{nullptr}; try { // Geant4 throws an exception if the list is not found physicsList = physListFactory.GetReferencePhysList(physics_list); // ...but older versions of it don't, so let's do this ourselves: if(physicsList == nullptr) { throw ModuleError(""); } } catch(ModuleError&) { std::string message = "specified physics list does not exists"; std::vector<G4String> base_lists = physListFactory.AvailablePhysLists(); message += " (available base lists are "; message += "\nAvailable base lists are: "; for(auto& base_list : base_lists) { message += base_list; message += ", "; } message = message.substr(0, message.size() - 2); message += " with optional suffixes for electromagnetic lists "; message += "\nwith optional suffixes for electromagnetic lists: "; std::vector<G4String> em_lists = physListFactory.AvailablePhysListsEM(); for(auto& em_list : em_lists) { if(em_list.empty()) { Loading @@ -189,12 +196,11 @@ void DepositionGeant4Module::initialize() { message += ", "; } message = message.substr(0, message.size() - 2); message += ")"; throw InvalidValueError(config_, "physics_list", message); } else { LOG(INFO) << "Using G4 physics list \"" << physics_list << "\""; } LOG(INFO) << "Using G4 physics list \"" << physics_list << "\""; // Register a step limiter (uses the user limits defined earlier) LOG(DEBUG) << "Registering Geant4 step limiter physics list"; physicsList->RegisterPhysics(new G4StepLimiterPhysics()); Loading
src/tools/geant4/G4ExceptionHandler.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ namespace allpix { public: G4bool Notify(const char*, const char* code, G4ExceptionSeverity severity, const char* description) override { std::string message = "Caught Geant4 exception " + std::string(code) + ": " + std::string(description); if(severity == G4ExceptionSeverity::JustWarning) { if(severity == G4ExceptionSeverity::JustWarning && std::string(code) != "pl0003") { LOG(WARNING) << message; } else if(severity == G4ExceptionSeverity::EventMustBeAborted) { throw AbortEventException(message); Loading