#define ClassDef(name, id)
winID h TVirtualViewer3D TVirtualGLPainter p
Base class used for handling geometry in a multidetector array.
virtual void GetRandomAngles(Double_t &th, Double_t &ph, Option_t *t="isotropic")
Bool_t IsInPhiRange(const Double_t phi)
virtual void SetAzimuthalWidth(Double_t aw)
virtual TVector3 GetRandomDirection(Option_t *t="isotropic")
Bool_t IsAzimuthallyWiderThan(KVPosition *pos)
virtual void SetShape(TGeoBBox *)
virtual void SetAzimuthalMinMax(Double_t min, Double_t max)
Set min and max azimuthal angles and calculate (mean) phi.
virtual void SetAzimuthalAngle(Double_t ph)
virtual Double_t GetSolidAngle(void) const
virtual Double_t GetTheta() const
Bool_t ROOTGeo() const
Returns kTRUE if ROOT geometry is used, kFALSE if not.
void GetCornerCoordinates(TVector3 *, Double_t=0)
Double_t fTheta
polar angle in degrees with respect to beam axis, corresponds to centre of telescope
virtual TVector3 GetSurfaceCentre() const
virtual TGeoHMatrix * GetMatrix() const
void GetWidthsFromDimension(Double_t lin_dim)
void SetDistance(Double_t d)
TRotation GetRandomIsotropicRotation()
virtual void SetPolarAngle(Double_t th)
virtual Double_t GetPhi() const
Double_t GetPhiMax() const
virtual Double_t GetDistance(void) const
Double_t fSolidAngle
solid angle = area of entrance window / distance**2
TGeoHMatrix * fMatrix
transform world<->detector coordinates
Double_t GetPhiMin() const
Bool_t IsSmallerThan(KVPosition *pos)
kTRUE if "this" is entirely contained within "pos"
virtual TVector3 GetVolumeCentre() const
virtual Double_t GetSurfaceArea(int npoints=100000) const
TVector3 GetSCVector() const
Double_t GetThetaMin() const
virtual Double_t GetSinTheta() const
Double_t GetOC_SC_CosAngle() const
virtual TVector3 GetSurfaceNormal() const
virtual Double_t GetMisalignmentAngle() const
Double_t fTheta_min
polar angle in degrees corresponding to edge of telescope closest to beam axis
Double_t GetAzimuthalWidth(Double_t phmin=-1., Double_t phimax=-1.) const
Bool_t IsInPolarRange(const Double_t theta)
kTRUE if given angle theta is within the polar range of this solid angle element
virtual void SetPolarWidth(Double_t pw)
Bool_t IsAlignedWith(KVPosition *pos)
kTRUE if one of the two solid angle elements is completely contained within the other.
Double_t fTheta_max
polar angle in degrees of the edge furthest from the beam axis
void SetTheta(Double_t t)
Double_t fPhi
azimuthal angle in degrees with respect to 12 o'clock (=0 deg.), corresponds to centre of telescope
TGeoBBox * fShape
shape of detector volume
void SetPhiMinMax(Double_t min, Double_t max)
virtual void SetPolarMinMax(Double_t min, Double_t max)
Set min and max polar angles and calculate (mean) theta.
virtual void SetMatrix(const TGeoHMatrix *)
virtual TGeoBBox * GetShape() const
Double_t fPhi_max
azimuthal angle in degrees corresponding to most clockwise edge of telescope
virtual Double_t GetCosTheta() const
Double_t fPhi_min
azimuthal angle in degrees corresponding to most anticlockwise edge of telescope
Bool_t IsOverlappingWith(KVPosition *pos)
kTRUE if there is at least partial overlap between two solid angle elements
Double_t fDistance
distance in cm from centre of solid angle element to coordinate system origin (target)
void GetCornerCoordinatesInOwnFrame(TVector3 *, Double_t=0)
void init()
default initialiser
Double_t GetThetaMax() const
virtual TVector3 GetDirection()
virtual TVector3 GetRandomPointOnSurface() const
Double_t Dot(const TVector3 &) const
SVector< T, D > Unit(const SVector< T, D > &rhs)
double min(double x, double y)
double max(double x, double y)
constexpr Double_t DegToRad()