13#include <G4Transform3D.hh>
14#include "ecl/dbobjects/ECLCrystalsShapeAndPosition.h"
26#define UNUSED __attribute__((unused))
35 G4VSolid*
get_solid(
const std::string& prefix,
double wrapthick, G4Translate3D& shift)
const;
37 virtual G4VSolid*
get_tesselatedsolid(
const std::string& prefix,
double wrapthick, G4Translate3D& shift)
const = 0;
39 virtual G4VSolid*
get_trapezoid(
const std::string& prefix,
double wrapthick, G4Translate3D& shift)
const = 0;
41 virtual G4VSolid*
get_extrudedsolid(
const std::string& prefix,
double wrapthick, G4Translate3D& shift)
const = 0;
43 virtual G4VSolid*
get_bellecrystal(
const std::string& prefix,
double wrapthick, G4Translate3D& shift)
const = 0;
59 std::vector<shape_t*> load_shapes(
const std::string& fname);
60 std::vector<cplacement_t> load_placements(
const std::string& fname);
66 inline std::string suf(
const std::string& s,
int indx)
69 r +=
"_" + std::to_string(indx);
73 enum ECLParts { forward, barrel, backward };
Crystal shapes and positions.
Abstract base class for different kinds of events.
double Rphi1
Eulers' angle phi 1.
double Ptheta
polar angle of origin position
double Rphi2
Eulers' angle phi 2.
double Pphi
azimuthal angle of origin position
double Rtheta
Eulers' angle theta.
double Pr
radius of origin position
G4VSolid * get_solid(const std::string &prefix, double wrapthick, G4Translate3D &shift) const
get solid
virtual G4VSolid * get_bellecrystal(const std::string &prefix, double wrapthick, G4Translate3D &shift) const =0
get Belle crystal
virtual G4VSolid * get_tesselatedsolid(const std::string &prefix, double wrapthick, G4Translate3D &shift) const =0
get tessellated solid
virtual bool istrap() const =0
is trapped
virtual G4VSolid * get_trapezoid(const std::string &prefix, double wrapthick, G4Translate3D &shift) const =0
get trapezoid
virtual G4VSolid * get_extrudedsolid(const std::string &prefix, double wrapthick, G4Translate3D &shift) const =0
get extruded solid