Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGeoShapeAssembly.h
Go to the documentation of this file.
1// @(#)root/geom:$Id$
2// Author: Andrei Gheata 02/06/05
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGeoShapeAssembly
13#define ROOT_TGeoShapeAssembly
14
15#include "TGeoBBox.h"
16
18
20protected:
21 // data members
22 TGeoVolumeAssembly *fVolume; // assembly volume
23 Bool_t fBBoxOK; // has bounding box been calculated
24
25 // methods
26public:
27 // constructors
30 // destructor
31 ~TGeoShapeAssembly() override;
32 // methods
33 void ComputeBBox() override;
34 void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm) override;
35 void ComputeNormal_v(const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize) override;
36 Bool_t Contains(const Double_t *point) const override;
37 void Contains_v(const Double_t *points, Bool_t *inside, Int_t vecsize) const override;
38 Int_t DistancetoPrimitive(Int_t px, Int_t py) override;
39 Double_t DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact = 1, Double_t step = TGeoShape::Big(),
40 Double_t *safe = nullptr) const override;
41 void DistFromInside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize,
42 Double_t *step) const override;
43 Double_t DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact = 1,
44 Double_t step = TGeoShape::Big(), Double_t *safe = nullptr) const override;
45 void DistFromOutside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize,
46 Double_t *step) const override;
48 Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step) override;
49 TGeoShape *GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const override;
50 void GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols) const override;
51 Int_t GetNmeshVertices() const override { return 0; }
52 void InspectShape() const override;
53 Bool_t IsAssembly() const override { return kTRUE; }
54 Bool_t IsCylType() const override { return kFALSE; }
56 void RecomputeBoxLast();
57 Double_t Safety(const Double_t *point, Bool_t in = kTRUE) const override;
58 void Safety_v(const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const override;
59 void SavePrimitive(std::ostream &out, Option_t *option = "") override;
60 void SetPoints(Double_t *points) const override;
61 void SetPoints(Float_t *points) const override;
62 void SetSegsAndPols(TBuffer3D &buff) const override;
63
64 ClassDefOverride(TGeoShapeAssembly, 2) // assembly shape
65};
66
67#endif
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t points
Generic 3D primitive description class.
Definition TBuffer3D.h:18
Box class.
Definition TGeoBBox.h:17
Geometrical transformation package.
Definition TGeoMatrix.h:38
The shape encapsulating an assembly (union) of volumes.
Double_t DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=nullptr) const override
compute distance from outside point to surface of the hyperboloid.
Bool_t IsAssembly() const override
~TGeoShapeAssembly() override
destructor
void SetPoints(Double_t *points) const override
No mesh for assemblies.
void InspectShape() const override
print shape parameters
TGeoShapeAssembly()
Default constructor.
TGeoShape * GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const override
in case shape has some negative parameters, these has to be computed in order to fit the mother
void ComputeBBox() override
Compute bounding box of the assembly.
void DistFromOutside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const override
Compute distance from array of input points having directions specified by dirs. Store output in dist...
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
compute closest distance from point px,py to each vertex. Should not be called.
TGeoVolumeAssembly * fVolume
Int_t GetNmeshVertices() const override
void Contains_v(const Double_t *points, Bool_t *inside, Int_t vecsize) const override
Check the inside status for each of the points in the array.
void Safety_v(const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const override
Compute safe distance from each of the points in the input array.
void ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm) override
Compute normal to closest surface from POINT. Should not be called.
void RecomputeBoxLast()
Recompute bounding box of the assembly after adding a node.
Double_t DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact=1, Double_t step=TGeoShape::Big(), Double_t *safe=nullptr) const override
Compute distance from inside point to surface of the hyperboloid.
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
Double_t Safety(const Double_t *point, Bool_t in=kTRUE) const override
computes the closest distance from given point to this shape, according to option.
Bool_t Contains(const Double_t *point) const override
Test if point is inside the assembly.
void DistFromInside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t *step) const override
Compute distance from array of input points having directions specified by dirs. Store output in dist...
void ComputeNormal_v(const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize) override
Compute the normal for an array o points so that norm.dot.dir is positive Input: Arrays of point coor...
Bool_t IsCylType() const override
TGeoVolume * Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step) override
Cannot divide assemblies.
void SetSegsAndPols(TBuffer3D &buff) const override
Fill TBuffer3D structure for segments and polygons.
void GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols) const override
Returns numbers of vertices, segments and polygons composing the shape mesh.
Base abstract class for all shapes.
Definition TGeoShape.h:25
static Double_t Big()
Definition TGeoShape.h:87
Volume assemblies.
Definition TGeoVolume.h:316
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43