LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
CustomPhysicsTable.hh
Go to the documentation of this file.
1 //
6 //
7 // The custom physics table keeps track of all compiled physics modules and feeds their
8 // names and constructors to the ConfigurablePhysicsList.
9 //
10 // A CustomPhysicsTable is instantiated in the constructor of each CustomPhysicsFactory<T>
11 // with a pointer to the instantiating factory as an argument. This pointer is passed to
12 // a singleton, static CustomPhysicsTable called TheCustomPhysicsTable. It is this table
13 // which the ConfigurablePhysicsList interacts with.
14 //
15 // At runtime the CustomPhysicsTable contains an array of CustomPhysicsFactories, one
16 // for each available physics module, and can provide the list of their names and
17 // the constructor for each to the physics list.
18 //
19 // This means new physics modules can be enabled via the LArG4.xml file with no change to
20 // the physics list code
21 //
22 // See CustomPhysicsFactory.hh and CustomPhysicsFactory.cxx for more details.
23 
24 #ifndef CUSTOMPHYSICSTABLE_hh
25 #define CUSTOMPHYSICSTABLE_hh 1
26 
27 #include <map>
28 #include <vector>
29 
30 class G4VPhysicsConstructor;
31 
32 namespace larg4 {
33  class CustomPhysicsFactoryBase;
34 
36  public:
37  CustomPhysicsTable() = default;
39  std::vector<std::string> GetAvailablePhysicsList();
40  bool IsPhysicsAvailable(std::string const&);
41  G4VPhysicsConstructor* GetPhysicsConstructor(std::string const& physicsName);
42  std::map<std::string, CustomPhysicsFactoryBase*> const& GetFullTable() { return theTable; }
44 
45  private:
46  std::map<std::string, CustomPhysicsFactoryBase*> theTable;
47  };
48 
50 
51 }
52 
53 #endif
Geant4 interface.
G4VPhysicsConstructor * GetPhysicsConstructor(std::string const &physicsName)
std::map< std::string, CustomPhysicsFactoryBase * > const & GetFullTable()
std::vector< std::string > GetAvailablePhysicsList()
void AddPhysics(CustomPhysicsFactoryBase *)
std::map< std::string, CustomPhysicsFactoryBase * > theTable
CustomPhysicsTable * TheCustomPhysicsTable
bool IsPhysicsAvailable(std::string const &)