#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)
void set_surface_centre()
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
void GetCornerCoordinates(TVector3 *, Double_t=0)
void initialize_root_geo()
TVector3 fNormal
unit normal to volume i.e. axis of shape, pointing away from the origin
virtual TGeoHMatrix * GetMatrix() const
virtual TVector3 GetSurfaceCentre() const
void GetWidthsFromDimension(Double_t lin_dim)
void SetDistance(Double_t d)
TRotation GetRandomIsotropicRotation()
virtual TVector3 GetVolumeCentre() const
virtual void SetPolarAngle(Double_t th)
virtual Double_t GetPhi() const
Double_t GetPhiMax() const
virtual Double_t GetDistance(void) const
Double_t GetPhiMin() const
Bool_t IsSmallerThan(KVPosition *pos)
kTRUE if "this" is entirely contained within "pos"
Double_t fMaxMisalignment
std::unique_ptr< TGeoHMatrix > fMatrix
transform world<->detector coordinates
virtual Double_t GetSurfaceArea(int npoints=100000) const
Double_t GetThetaMin() const
virtual Double_t GetSinTheta() const
TVector3 fVolumeCentre
vector position of volume centre
Double_t GetOC_SC_CosAngle() const
KVPosition(const KVPosition &o)
Double_t GetMisalignmentAngle() const
virtual TVector3 GetNormalIntoShape() const
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.
friend void swap(KVPosition &p1, KVPosition &p2)
void SetTheta(Double_t t)
KVPosition & operator=(KVPosition other)
void CalculateEstimatedAngularLimits(int N=10000)
TVector3 fSurfaceCentre
vector position of surface centre
virtual ~KVPosition()=default
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 *)
Set the global transformation matrix for this volume.
virtual Double_t GetCosineMaximumMisalignmentAngle() const
virtual TGeoBBox * GetShape() const
virtual Double_t GetCosTheta() const
KVPosition(KVPosition &&other)
virtual Double_t GetMaximumMisalignmentAngle() const
Bool_t IsOverlappingWith(KVPosition *pos)
kTRUE if there is at least partial overlap between two solid angle elements
virtual Bool_t ROOTGeo() const
void GetCornerCoordinatesInOwnFrame(TVector3 *, Double_t=0)
Double_t GetThetaMax() const
virtual TVector3 GetDirection()
virtual TVector3 GetRandomPointOnSurface() const
Double_t Dot(const TVector3 &) const
void swap(RVec< T > &lhs, RVec< T > &rhs)
double min(double x, double y)
double max(double x, double y)
constexpr Double_t DegToRad()
constexpr Double_t RadToDeg()