Class RMGVertexConfinement#

Nested Relationships#

Nested Types#

Inheritance Relationships#

Base Type#

Class Documentation#

class RMGVertexConfinement : public RMGVVertexGenerator#

Public Types

enum class GeometricalSolidType#

Values:

enumerator kSphere#
enumerator kCylinder#
enumerator kBox#
enum class SamplingMode#

Values:

enumerator kIntersectPhysicalWithGeometrical#
enumerator kUnionAll#

Public Functions

RMGVertexConfinement()#
virtual void BeginOfRunAction(const G4Run *run) override#
virtual void EndOfRunAction(const G4Run *run) override#
virtual bool GenerateVertex(G4ThreeVector &v) override#
void AddPhysicalVolumeNameRegex(std::string name, std::string copy_nr = ".*")#
inline void AddGeometricalVolume(GenericGeometricalSolidData &data)#
void Reset()#
inline void SetSamplingMode(SamplingMode mode)#
inline std::vector<GenericGeometricalSolidData> &GetGeometricalSolidDataList()#
struct GenericGeometricalSolidData#

Public Members

GeometricalSolidType solid_type#
G4ThreeVector volume_center = G4ThreeVector(0, 0, 0)#
double sphere_inner_radius = 0#
double sphere_outer_radius = -1#
double cylinder_inner_radius = 0#
double cylinder_outer_radius = -1#
double cylinder_height = -1#
double cylinder_starting_angle = 0#
double cylinder_spanning_angle = CLHEP::twopi#
double box_x_length = -1#
double box_y_length = -1#
double box_z_length = -1#
struct SampleableObject#

Public Functions

SampleableObject() = default#
SampleableObject(const SampleableObject&) = default#
SampleableObject(G4VPhysicalVolume *v, G4RotationMatrix r, G4ThreeVector t, G4VSolid *s, bool cc = true)#
~SampleableObject() = default#
bool IsInside(const G4ThreeVector &vertex) const#

Public Members

G4VPhysicalVolume *physical_volume = nullptr#
G4VSolid *sampling_solid = nullptr#
G4RotationMatrix rotation#
G4ThreeVector translation#
double volume = -1#
double surface = -1#
bool containment_check = true#
struct SampleableObjectCollection#

Public Functions

SampleableObjectCollection() = default#
inline ~SampleableObjectCollection()#
const SampleableObject &SurfaceWeightedRand() const#
const SampleableObject &VolumeWeightedRand() const#
bool IsInside(const G4ThreeVector &vertex) const#
inline size_t size() const#
inline SampleableObject &at(size_t i)#
template<typename ...Args>
void emplace_back(Args&&... args)#
inline bool empty() const#
inline SampleableObject &back()#
inline void clear()#
inline void insert(SampleableObjectCollection &other)#

Public Members

std::vector<SampleableObject> data#
double total_volume = 0#
double total_surface = 0#