482         Warning(
"Ctor", 
"volume %s has invalid shape", 
name);
 
  485         Fatal(
"ctor", 
"Shape of volume %s invalid. Aborting!", 
fName.
Data());
 
 
  547            title.TString::Format(
"Assembly with %d daughter(s)", 
daughter->GetNdaughters());
 
  550            s1.ReplaceAll(
"TGeoPattern", 
"");
 
  551            title.TString::Format(
"Volume having %s shape divided in %d %s slices", 
daughter->GetShape()->ClassName(),
 
  555            title.TString::Format(
"Volume with %s shape having %d daughter(s)", 
daughter->GetShape()->ClassName(),
 
 
  578   for (i = 0; i < nd; i++)
 
 
  644         Info(
"CheckOverlaps", 
"Number of illegal overlaps/extrusions for volume %s: %d\n", 
GetName(), 
novlps);
 
 
  679      Error(
"CheckShapes", 
"volume %s has run-time shape", 
GetName());
 
  690   for (
Int_t i = 0; i < nd; i++) {
 
  694         printf(
"Daughter %i of volume %s - NO NAME!!!\n", i, 
GetName());
 
  704            Fatal(
"CheckShapes", 
"Cannot make copy node for %s", node->
GetName());
 
  709            Error(
"CheckShapes", 
"cannot resolve runtime shape for volume %s/%s\n", 
GetName(), 
old_vol->GetName());
 
 
  769   for (
Int_t i = 0; i < nd; i++) {
 
 
  786   for (
Int_t i = 0; i < nd; i++)
 
 
  802   for (
Int_t i = 0; i < nd; i++) {
 
  810      for (
Int_t i = 0; i < nd + 1; i++) {
 
 
  886      if (!
f || 
f->IsZombie()) {
 
  887         printf(
"Error: TGeoVolume::Import : Cannot open file %s\n", 
filename);
 
  893         TIter next(
f->GetListOfKeys());
 
  895         while ((key = (
TKey *)next())) {
 
 
  930   if (
sfile.Contains(
".C")) {
 
  932      Info(
"Export", 
"Exporting volume %s as C++ code", 
GetName());
 
  936   if (
sfile.Contains(
".gdml")) {
 
  938      Info(
"Export", 
"Exporting %s as gdml code - not implemented yet", 
GetName());
 
  941   if (
sfile.Contains(
".root") || 
sfile.Contains(
".xml")) {
 
  943      Info(
"Export", 
"Exporting %s as root file.", 
GetName());
 
  948      if (!
f || 
f->IsZombie()) {
 
  949         Error(
"Export", 
"Cannot open file");
 
 
  981      matrix->RegisterYourself();
 
  983      Error(
"AddNode", 
"Volume is NULL");
 
  987      Error(
"AddNode", 
"Won't add node with invalid shape");
 
 
 1021      Error(
"AddNodeOffset", 
"invalid volume");
 
 1025      Error(
"AddNode", 
"Won't add node with invalid shape");
 
 
 1047      Error(
"AddNodeOverlap", 
"Volume is NULL");
 
 1051      Error(
"AddNodeOverlap", 
"Won't add node with invalid shape");
 
 1057              "Declaring assembly %s as possibly overlapping inside %s not allowed. Using AddNode instead !",
 
 1066      matrix->RegisterYourself();
 
 1081      Warning(
"AddNode", 
"Volume %s : added node %s with same name", 
GetName(), 
name.Data());
 
 
 1108      Fatal(
"Divide", 
"volume %s already divided", 
GetName());
 
 1120      if ((start - xlo) < -1E-3)
 
 1124         xhi = start + 
range;
 
 1132   if (ndiv <= 0 || opt.
Contains(
"s")) {
 
 1134         Fatal(
"Divide", 
"invalid division type for volume %s : ndiv=%i, step=%g", 
GetName(), ndiv, step);
 
 1138         if ((xlo - start) > 1E-3 || (xhi - start) < -1E-3) {
 
 1139            Fatal(
"Divide", 
"invalid START=%g for division on axis %s of volume %s. Range is (%g, %g)", start,
 
 1150         Warning(
"Divide", 
"division of volume %s on %s axis (ndiv=%d) will be centered in the full range", 
GetName(),
 
 1152      start = xlo + 0.5 * 
ddx;
 
 1154   if (step <= 0 || opt.
Contains(
"n")) {
 
 1156         if ((xlo - start) > 1E-3 || (xhi - start) < -1E-3) {
 
 1157            Fatal(
"Divide", 
"invalid START=%g for division on axis %s of volume %s. Range is (%g, %g)", start,
 
 1164      step = 
range / ndiv;
 
 1168   Double_t end = start + ndiv * step;
 
 1169   if (((start - xlo) < -1E-3) || ((end - xhi) > 1E-3)) {
 
 1178         Fatal(
"Divide", 
"invalid medium number %d for division volume %s", 
numed, 
divname);
 
 1182      if (
medium->GetMaterial())
 
 1183         medium->GetMaterial()->SetUsed();
 
 
 1199   dist = 
painter->DistanceToPrimitiveVol(
this, px, py);
 
 
 1228      Info(
"DrawOnly", 
"Volume assemblies do not support this option.");
 
 
 1251   return painter->TestVoxels(
this);
 
 
 1305      voldiv->ReplayCreation(
other->GetNode(0)->GetVolume());
 
 1308   for (
Int_t i = 0; i < nd; i++) {
 
 
 1323   for (
Int_t i = 0; i < nd; i++) {
 
 
 1342   hist->
Draw(
"lego1sph");
 
 
 1359         comp->RegisterYourself();
 
 1375   for (i = 0; i < nd; i++) {
 
 1378      if (!
matrix->IsRegistered())
 
 1379         matrix->RegisterYourself();
 
 1385   for (i = 0; i < nd; i++)
 
 
 1435      painter->DrawVolume(
this, 
"");
 
 
 1464   out << 
"void " << 
fname << 
"() {" << std::endl;
 
 1465   out << 
"   gSystem->Load(\"libGeom\");" << std::endl;
 
 1467   out << std::setprecision(
prec);
 
 1469   out << 
"}" << std::endl;
 
 
 1554      out << 
"   Double_t dx, dy, dz;" << std::endl;
 
 1555      out << 
"   Double_t dx1, dx2, dy1, dy2;" << std::endl;
 
 1556      out << 
"   Double_t vert[20], par[20];" << std::endl;
 
 1557      out << 
"   Double_t theta, phi, h1, bl1, tl1, alpha1, h2, bl2, tl2, alpha2;" << std::endl;
 
 1558      out << 
"   Double_t twist;" << std::endl;
 
 1559      out << 
"   Double_t origin[3];" << std::endl;
 
 1560      out << 
"   Double_t rmin, rmax, rmin1, rmax1, rmin2, rmax2;" << std::endl;
 
 1561      out << 
"   Double_t r, rlo, rhi;" << std::endl;
 
 1562      out << 
"   Double_t a, b;" << std::endl;
 
 1563      out << 
"   Double_t point[3], norm[3];" << std::endl;
 
 1564      out << 
"   Double_t rin, stin, rout, stout;" << std::endl;
 
 1565      out << 
"   Double_t thx, phx, thy, phy, thz, phz;" << std::endl;
 
 1566      out << 
"   Double_t alpha, theta1, theta2, phi1, phi2, dphi;" << std::endl;
 
 1567      out << 
"   Double_t tr[3], rot[9];" << std::endl;
 
 1568      out << 
"   Double_t z, density, radl, absl, w;" << std::endl;
 
 1569      out << 
"   Double_t lx, ly, lz, tx, ty, tz;" << std::endl;
 
 1570      out << 
"   Double_t xvert[50], yvert[50];" << std::endl;
 
 1571      out << 
"   Double_t zsect, x0, y0, scale0;" << std::endl;
 
 1572      out << 
"   Int_t nel, numed, nz, nedges, nvert;" << std::endl;
 
 1573      out << 
"   TGeoBoolNode *pBoolNode = nullptr;" << std::endl << std::endl;
 
 1575      out << 
"   // MATERIALS, MIXTURES AND TRACKING MEDIA" << std::endl;
 
 1578      out << std::endl << 
"   // TRANSFORMATION MATRICES" << std::endl;
 
 1582      out << std::endl << 
"   // SET TOP VOLUME OF GEOMETRY" << std::endl;
 
 1583      out << 
"   gGeoManager->SetTopVolume(" << 
GetPointerName() << 
");" << std::endl;
 
 1585      out << std::endl << 
"   // SHAPES, VOLUMES AND GEOMETRICAL HIERARCHY" << std::endl;
 
 1587      out << std::endl << 
"   // CLOSE GEOMETRY" << std::endl;
 
 1588      out << 
"   gGeoManager->CloseGeometry();" << std::endl;
 
 1591            out << 
"   gGeoManager->GetTopVolume()->Draw();" << std::endl;
 
 1593            out << 
"   gGeoManager->GetTopVolume()->Raytrace();" << std::endl;
 
 1604         out << 
"   // Volume: " << 
GetName() << std::endl;
 
 1609         out << 
");" << std::endl;
 
 1611         out << 
"   // Assembly: " << 
GetName() << std::endl;
 
 1613             << 
");" << std::endl;
 
 1617         out << 
"   " << 
GetPointerName() << 
"->SetVisibility(kFALSE);" << std::endl;
 
 1619         out << 
"   " << 
GetPointerName() << 
"->VisibleDaughters(kFALSE);" << std::endl;
 
 1621         out << 
"   " << 
GetPointerName() << 
"->SetVisContainers(kTRUE);" << std::endl;
 
 1623         out << 
"   " << 
GetPointerName() << 
"->SetVisLeaves(kTRUE);" << std::endl;
 
 1630      for (i = 0; i < nd; i++) {
 
 1643      for (i = 0; i < nd; i++) {
 
 1646         if (!
matrix->IsIdentity())
 
 1663         out << 
"   TGeoVolume *" << 
dvol->GetPointerName() << 
" = ";
 
 1667            out << 
", " << 
dvol->GetMedium()->GetId();
 
 1668         out << 
");" << std::endl;
 
 1669         dvol->SavePrimitive(out, 
"d");
 
 1672      for (i = 0; i < nd; i++) {
 
 1675         dvol->SavePrimitive(out, 
"s");
 
 1680         if (
dnode->IsOverlapping())
 
 1682         out << 
"(" << 
dvol->GetPointerName() << 
", " << 
icopy;
 
 1683         if (!
matrix->IsIdentity())
 
 1684            out << 
", " << 
matrix->GetPointerName();
 
 1685         out << 
");" << std::endl;
 
 1688      for (i = 0; i < nd; i++) {
 
 1691         dvol->SavePrimitive(out, 
"d");
 
 
 1715   painter->ExecuteVolumeEvent(
this, event, px, py);
 
 
 1734      if (current == node)
 
 
 1749   for (
Int_t i = 0; i < nd; i++) {
 
 1751      if (current == node)
 
 
 1766   return (
char *)
painter->GetVolumeInfo(vol, px, py);
 
 
 1780   for (
id = 0; 
id < nd; 
id++) {
 
 1784   if (
ncyl > (nd / 2))
 
 
 1844   for (i = 0; i < 
nbits; i++)
 
 1846   for (i = 14; i < 24; i++)
 
 1852   for (i = 0; i < 
nbits; i++)
 
 
 1893   for (
Int_t i = 0; i < nd; i++) {
 
 1897         Fatal(
"CloneNodesAndConnect", 
"cannot make copy node");
 
 
 1919   for (
Int_t i = 0; i < nd; i++)
 
 
 1960   static TMap map(100);
 
 1962      Error(
"MakeReflectedVolume", 
"Geometry must be closed.");
 
 1974      Fatal(
"MakeReflectedVolume", 
"Cannot clone volume %s\n", 
GetName());
 
 1999      for (
Int_t i = 0; i < nd; i++) {
 
 2032      Fatal(
"MakeReflectedVolume", 
"Could not copy finder for volume %s", 
GetName());
 
 2039   for (
Int_t i = 0; i < nd; i++) {
 
 
 2070      Error(
"SetShape", 
"No shape");
 
 
 2083      Error(
"SortNodes", 
"Bounding box not valid");
 
 2098   for (
id = 0; 
id < nd; 
id++) {
 
 2107   for (
id = 0; 
id < nd; 
id++) {
 
 2118      for (
id = 0; 
id < nd; 
id++) {
 
 2128      printf(
" volume %s : number of nodes does not match!!!\n", 
GetName());
 
 
 2138   if (
R__b.IsReading()) {
 
 
 2206   Int_t count = 28 + 2 + 6 + 4 + 0;              
 
 2208   count += 7 * 
sizeof(
char *);                   
 
 2218      while ((node = (
TGeoNode *)next()))
 
 
 2230      Error(
"FindOverlaps", 
"Bounding box not valid");
 
 
 2275   if (
oldvol->IsAssembly()) {
 
 2276      Error(
"ReplaceNode", 
"Cannot replace node %s since it is an assembly", 
nodeorig->GetName());
 
 2299      Fatal(
"ReplaceNode", 
"Cannot make copy node for %s", 
nodeorig->GetName());
 
 
 2332      for (i = 0; i < 
len; i++) {
 
 
 2357      browser->CheckObjectItem(
this, vis);
 
 
 2432   for (i = 0; i < nd; i++) {
 
 2441   for (i = 0; i < nd; i++) {
 
 2444      if (
dvol->FindMatrixOfDaughterVolume(vol))
 
 
 2467      Error(
"Voxelize", 
"Bounding box not valid");
 
 
 2524   for (i = 0; i < nd; i++) {
 
 2536   weight += 0.001 * capacity * 
density; 
 
 
 2601         Fatal(
"AddVolume", 
"Cannot divide volume %s", vol->
GetName());
 
 2604      for (
Int_t i = 0; i < 
div->GetNvolumes(); i++) {
 
 2611      for (
Int_t id = 0; 
id < nd; 
id++) {
 
 
 2682      Error(
"Divide", 
"volume %s already divided", 
GetName());
 
 2690         Error(
"Divide", 
"Invalid medium number %d for division volume %s", 
numed, 
divname);
 
 
 2759         Fatal(
"MakeCopyVolume", 
"Cannot divide volume %s", vol->
GetName());
 
 2762      for (i = 0; i < 
div->GetNvolumes(); i++) {
 
 2779   for (i = 0; i < nd; i++) {
 
 2783         Fatal(
"MakeCopyNode", 
"cannot make copy node for daughter %d of %s", i, 
GetName());
 
 
 2886   std::lock_guard<std::mutex> guard(
fMutex);
 
 2888   std::vector<ThreadData_t *>::iterator i = 
fThreadData.begin();
 
 
 2901   std::lock_guard<std::mutex> guard(
fMutex);
 
 
 2992           "Declaring assembly %s as possibly overlapping inside %s not allowed. Using AddNode instead !",
 
 
 3007   for (i = 0; i < 
nbits; i++)
 
 3009   for (i = 14; i < 24; i++)
 
 3015   for (i = 0; i < 
nbits; i++)
 
 
 3044   Error(
"Divide", 
"Assemblies cannot be divided");
 
 
 3056      Error(
"Divide", 
"Cannot divide assembly %s since it has nodes", 
GetName());
 
 3060      Error(
"Divide", 
"Assembly %s already divided", 
GetName());
 
 3065      Error(
"Divide", 
"Pattern finder for dividing assembly %s not initialized. Use SetRange() method.", 
GetName());
 
 
 3099   for (i = 0; i < 
nbits; i++)
 
 3101   for (i = 14; i < 24; i++)
 
 3107   for (i = 0; i < 
nbits; i++)
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
R__EXTERN TGeoManager * gGeoManager
 
R__EXTERN TGeoIdentity * gGeoIdentity
 
R__EXTERN TStyle * gStyle
 
virtual Color_t GetFillColor() const
Return the fill area color.
 
virtual Style_t GetFillStyle() const
Return the fill area style.
 
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
 
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
 
virtual Color_t GetLineColor() const
Return the line color.
 
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
 
virtual Width_t GetLineWidth() const
Return the line width.
 
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
 
virtual void SetLineColor(Color_t lcolor)
Set the line color.
 
virtual Style_t GetLineStyle() const
Return the line style.
 
virtual void SaveLineAttributes(std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1)
Save line attributes as C++ statement(s) on output stream out.
 
Using a TBrowser one can browse all ROOT objects.
 
Buffer base class used for serializing objects.
 
TDirectory::TContext keeps track and restore the current directory.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
Bool_t IsVisRaytrace() const
 
virtual void SetVisOnly(Bool_t flag=kTRUE)
Set branch type visibility.
 
Bool_t TestAttBit(UInt_t f) const
 
virtual void SetVisLeaves(Bool_t flag=kTRUE)
Set branch type visibility.
 
void SetVisDaughters(Bool_t vis=kTRUE)
Set visibility for the daughters.
 
void ResetAttBit(UInt_t f)
 
void SetVisRaytrace(Bool_t flag=kTRUE)
 
Bool_t IsVisDaughters() const
 
virtual void SetVisibility(Bool_t vis=kTRUE)
Set visibility for this object.
 
void SetVisTouched(Bool_t vis=kTRUE)
Mark visualization attributes as "modified".
 
virtual void SetVisContainers(Bool_t flag=kTRUE)
Set branch type visibility.
 
Class describing rotation + translation.
 
Composite shapes are Boolean combinations of two or more shape components.
 
ABC for user objects attached to TGeoVolume or TGeoNode.
 
virtual TGeoExtension * Grab()=0
 
virtual void Release() const =0
 
Matrix class used for computing global transformations Should NOT be used for node definition.
 
The manager class for any TGeo geometry.
 
TObjArray * GetListOfOverlaps()
 
TList * GetListOfMedia() const
 
void SetUserPaintVolume(TGeoVolume *vol)
 
TObjArray * GetListOfVolumes() const
 
void ClearOverlaps()
Clear the list of overlaps.
 
TObjArray * GetListOfMatrices() const
 
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
 
void SetVisOption(Int_t option=0)
set drawing mode :
 
Int_t AddMaterial(const TGeoMaterial *material)
Add a material to the list. Returns index of the material in list.
 
TGeoHMatrix * GetHMatrix()
Return stored current matrix (global matrix of the next touched node).
 
Int_t AddVolume(TGeoVolume *volume)
Add a volume to the list. Returns index of the volume in list.
 
Bool_t IsStreamingVoxels() const
 
void SetCurrentPoint(Double_t *point)
 
Int_t GetVisOption() const
Returns current depth to which geometry is drawn.
 
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
 
void ClearShape(const TGeoShape *shape)
Remove a shape from the list of shapes.
 
TGeoMedium * GetMedium(const char *medium) const
Search for a named tracking medium. All trailing blanks stripped.
 
Double_t Weight(Double_t precision=0.01, Option_t *option="va")
Estimate weight of volume VOL with a precision SIGMA(W)/W better than PRECISION.
 
void SetNsegments(Int_t nseg)
Set number of segments for approximating circles in drawing.
 
static UInt_t GetExportPrecision()
 
TVirtualGeoPainter * GetPainter() const
 
Bool_t IsCheckingOverlaps() const
 
void RandomPoints(const TGeoVolume *vol, Int_t npoints=10000, Option_t *option="")
Draw random points in the bounding box of a volume.
 
TList * GetListOfMaterials() const
 
void RandomRays(Int_t nrays=1000, Double_t startx=0, Double_t starty=0, Double_t startz=0, const char *target_vol=nullptr, Bool_t check_norm=kFALSE)
Randomly shoot nrays and plot intersections with surfaces for current top node.
 
void SetAllIndex()
Assigns uid's for all materials,media and matrices.
 
TObjArray * GetListOfShapes() const
 
TGeoVolume * GetTopVolume() const
 
static Int_t ThreadId()
Translates the current thread id to an ordinal number.
 
Int_t AddShape(const TGeoShape *shape)
Add a shape to the list. Returns index of the shape in list.
 
void SortOverlaps()
Sort overlaps by decreasing overlap distance. Extrusions comes first.
 
Base class describing materials.
 
void SetUsed(Bool_t flag=kTRUE)
 
void Print(const Option_t *option="") const override
print characteristics of this material
 
virtual Double_t GetDensity() const
 
Geometrical transformation package.
 
Media are used to store properties related to tracking and which are useful only when using geometry ...
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoMaterial * GetMaterial() const
 
const char * GetPointerName() const
Provide a pointer name containing uid.
 
A node containing local transformation.
 
void SetMatrix(const TGeoMatrix *matrix)
Matrix setter.
 
TGeoMatrix * GetMatrix() const override
 
Node containing an offset.
 
void SetFinder(TGeoPatternFinder *finder)
 
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
 
Bool_t IsOverlapping() const
 
TGeoVolume * GetVolume() const
 
void SetVolume(TGeoVolume *volume)
 
virtual Int_t GetByteCount() const
 
void SetOverlapping(Bool_t flag=kTRUE)
 
virtual Int_t GetOptimalVoxels() const
 
virtual TGeoMatrix * GetMatrix() const =0
 
void SetMotherVolume(TGeoVolume *mother)
 
virtual TGeoNode * MakeCopyNode() const
 
void SetNumber(Int_t number)
 
Base finder class for patterns.
 
void SetSpacedOut(Bool_t flag)
 
void SetDivIndex(Int_t index)
 
virtual TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE)=0
 
void ClearThreadData() const
 
virtual Int_t GetByteCount() const
 
void CreateThreadData(Int_t nthreads)
Create thread data for n threads max.
 
Class describing scale transformations.
 
static TGeoShape * MakeScaledShape(const char *name, TGeoShape *shape, TGeoScale *scale)
Create a scaled shape starting from a non-scaled one.
 
The shape encapsulating an assembly (union) of volumes.
 
Base abstract class for all shapes.
 
virtual Double_t GetAxisRange(Int_t iaxis, Double_t &xlo, Double_t &xhi) const =0
 
virtual void CreateThreadData(Int_t)
 
virtual const char * GetAxisName(Int_t iaxis) const =0
 
virtual TGeoVolume * Divide(TGeoVolume *voldiv, const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step)=0
 
virtual Bool_t IsComposite() const
 
static Bool_t IsSameWithinTolerance(Double_t a, Double_t b)
Check if two numbers differ with less than a tolerance.
 
Bool_t IsRunTimeShape() const
 
virtual void ClearThreadData() const
 
const char * GetPointerName() const
Provide a pointer name containing uid.
 
void CheckShape(Int_t testNo, Int_t nsamples=10000, Option_t *option="")
Test for shape navigation methods.
 
virtual Bool_t IsValidBox() const =0
 
virtual Int_t GetByteCount() const =0
 
const char * GetName() const override
Get the shape name.
 
virtual void ComputeBBox()=0
 
virtual Double_t Capacity() const =0
 
virtual TGeoShape * GetMakeRuntimeShape(TGeoShape *mother, TGeoMatrix *mat) const =0
 
virtual Bool_t IsAssembly() const
 
Bool_t TestShapeBit(UInt_t f) const
 
static TGeoVolumeAssembly * MakeAssemblyFromVolume(TGeoVolume *vol)
Make a clone of volume VOL but which is an assembly.
 
~TGeoVolumeAssembly() override
Destructor. The assembly is owner of its "shape".
 
Int_t GetNextNodeIndex() const override
 
void CreateThreadData(Int_t nthreads) override
 
TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="") override
Add a component to the assembly.
 
void ClearThreadData() const override
 
TGeoVolume * CloneVolume() const override
Clone this volume.
 
void AddNodeOverlap(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat, Option_t *option) override
Add an overlapping node - not allowed for assemblies.
 
std::vector< ThreadData_t * > fThreadData
 
std::mutex fMutex
Thread vector size.
 
Int_t fThreadSize
Thread specific data vector.
 
void SetNextNodeIndex(Int_t index)
 
Int_t GetCurrentNodeIndex() const override
 
void SetCurrentNodeIndex(Int_t index)
 
TGeoVolumeAssembly()
Default constructor.
 
TGeoVolume * Divide(const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="") override
Division makes no sense for assemblies.
 
ThreadData_t & GetThreadData() const
 
TGeoVolume * Divide(const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="") override
division of multiple volumes
 
void SetLineColor(Color_t lcolor) override
Set the line color for all components.
 
void AddVolume(TGeoVolume *vol)
Add a volume with valid shape to the list of volumes.
 
TGeoVolume * MakeCopyVolume(TGeoShape *newshape) override
Make a copy of this volume build a volume with same name, shape and medium.
 
void SetMedium(TGeoMedium *medium) override
Set medium for a multiple volume.
 
TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat, Option_t *option="") override
Add a new node to the list of nodes.
 
TGeoVolume * GetVolume(Int_t id) const
 
void SetVisibility(Bool_t vis=kTRUE) override
Set visibility for all components.
 
~TGeoVolumeMulti() override
Destructor.
 
TGeoVolumeMulti * fDivision
 
TGeoVolumeMulti()
dummy constructor
 
void SetLineWidth(Width_t lwidth) override
Set the line width for all components.
 
TGeoShape * GetLastShape() const
Returns the last shape.
 
void AddNodeOverlap(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat, Option_t *option="") override
Add a new node to the list of nodes, This node is possibly overlapping with other daughters of the vo...
 
void SetLineStyle(Style_t lstyle) override
Set the line style for all components.
 
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
 
Double_t WeightA() const
Analytical computation of the weight.
 
void AddNodeOffset(TGeoVolume *vol, Int_t copy_no, Double_t offset=0, Option_t *option="")
Add a division node to the list of nodes.
 
void SetVisContainers(Bool_t flag=kTRUE) override
Set visibility for containers.
 
virtual void cd(Int_t inode) const
Actualize matrix of node indexed <inode>
 
virtual void ClearThreadData() const
 
void SetVisibility(Bool_t vis=kTRUE) override
set visibility of this volume
 
Bool_t IsVisContainers() const
 
void SetVoxelFinder(TGeoVoxelFinder *finder)
 
void RemoveNode(TGeoNode *node)
Remove an existing daughter.
 
Int_t GetNodeIndex(const TGeoNode *node, Int_t *check_list, Int_t ncheck) const
Get the index of a daughter within check_list by providing the node pointer.
 
Bool_t Valid() const
Check if the shape of this volume is valid.
 
Bool_t IsAllInvisible() const
Return TRUE if volume and all daughters are invisible.
 
void MakeCopyNodes(const TGeoVolume *other)
make a new list of nodes and copy all nodes of other volume inside
 
void SetUserExtension(TGeoExtension *ext)
Connect user-defined extension to the volume.
 
TGeoExtension * GrabFWExtension() const
Get a copy of the framework extension pointer.
 
void SetNumber(Int_t number)
 
void SetLineWidth(Width_t lwidth) override
Set the line width.
 
void Raytrace(Bool_t flag=kTRUE)
Draw this volume with current settings and perform raytracing in the pad.
 
void RandomRays(Int_t nrays=10000, Double_t startx=0, Double_t starty=0, Double_t startz=0, const char *target_vol=nullptr, Bool_t check_norm=kFALSE)
Random raytracing method.
 
TGeoVolume()
dummy constructor
 
TGeoMedium * GetMedium() const
 
char * GetObjectInfo(Int_t px, Int_t py) const override
Get volume info for the browser.
 
void Print(Option_t *option="") const override
Print volume info.
 
void CloneNodesAndConnect(TGeoVolume *newmother) const
Clone the array of nodes.
 
void SortNodes()
sort nodes by decreasing volume of the bounding box.
 
Bool_t FindMatrixOfDaughterVolume(TGeoVolume *vol) const
Find a daughter node having VOL as volume and fill TGeoManager::fHMatrix with its global matrix.
 
void Voxelize(Option_t *option)
build the voxels for this volume
 
Double_t Capacity() const
Computes the capacity of this [cm^3] as the capacity of its shape.
 
virtual TGeoVolume * MakeCopyVolume(TGeoShape *newshape)
make a copy of this volume build a volume with same name, shape and medium
 
void ReplayCreation(const TGeoVolume *other)
Recreate the content of the other volume without pointer copying.
 
Double_t Weight(Double_t precision=0.01, Option_t *option="va")
Estimate the weight of a volume (in kg) with SIGMA(M)/M better than PRECISION.
 
Int_t fNumber
option - if any
 
virtual void CreateThreadData(Int_t nthreads)
 
virtual Int_t GetByteCount() const
get the total size in bytes for this volume
 
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
 
Bool_t OptimizeVoxels()
Perform an extensive sampling to find which type of voxelization is most efficient.
 
void Browse(TBrowser *b) override
How to browse a volume.
 
void SetCurrentPoint(Double_t x, Double_t y, Double_t z)
Set the current tracking point.
 
void Paint(Option_t *option="") override
paint volume
 
void SetVisOnly(Bool_t flag=kTRUE) override
Set visibility for leaves.
 
TGeoManager * fGeoManager
 
TH2F * LegoPlot(Int_t ntheta=20, Double_t themin=0., Double_t themax=180., Int_t nphi=60, Double_t phimin=0., Double_t phimax=360., Double_t rmin=0., Double_t rmax=9999999, Option_t *option="")
Generate a lego plot fot the top volume, according to option.
 
void Draw(Option_t *option="") override
draw top volume according to option
 
TGeoVoxelFinder * fVoxels
 
TGeoMaterial * GetMaterial() const
 
TGeoExtension * GrabUserExtension() const
Get a copy of the user extension pointer.
 
Int_t CountNodes(Int_t nlevels=1000, Int_t option=0)
Count total number of subnodes starting from this volume, nlevels down.
 
void GrabFocus()
Move perspective view focus to this volume.
 
void UnmarkSaved()
Reset SavePrimitive bits.
 
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Execute mouse actions on this volume.
 
virtual TGeoVolume * CloneVolume() const
Clone this volume.
 
void SetFinder(TGeoPatternFinder *finder)
 
Int_t GetNdaughters() const
 
void CheckGeometry(Int_t nrays=1, Double_t startx=0, Double_t starty=0, Double_t startz=0) const
Shoot nrays with random directions from starting point (startx, starty, startz) in the reference fram...
 
void SelectVolume(Bool_t clear=kFALSE)
Select this volume as matching an arbitrary criteria.
 
const char * GetPointerName() const
Provide a pointer name containing uid.
 
void ClearShape()
Clear the shape of this volume from the list held by the current manager.
 
void SetFWExtension(TGeoExtension *ext)
Connect framework defined extension to the volume.
 
void VisibleDaughters(Bool_t vis=kTRUE)
set visibility for daughters
 
void FindOverlaps() const
loop all nodes marked as overlaps and find overlapping brothers
 
virtual void AddNodeOverlap(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
 
TGeoNode * GetNode(const char *name) const
get the pointer to a daughter node
 
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
compute the closest distance of approach from point px,py to this volume
 
void RandomPoints(Int_t npoints=1000000, Option_t *option="")
Draw random points in the bounding box of this volume.
 
void CheckShapes()
check for negative parameters in shapes.
 
void SetNtotal(Int_t ntotal)
 
Bool_t GetOptimalVoxels() const
Returns true if cylindrical voxelization is optimal.
 
TGeoNode * ReplaceNode(TGeoNode *nodeorig, TGeoShape *newshape=nullptr, TGeoMatrix *newpos=nullptr, TGeoMedium *newmed=nullptr)
Replace an existing daughter with a new volume having the same name but possibly a new shape,...
 
void InvisibleAll(Bool_t flag=kTRUE)
Make volume and each of it daughters (in)visible.
 
Bool_t IsVisibleDaughters() const
 
TString fOption
just a hook for now
 
Int_t GetIndex(const TGeoNode *node) const
get index number for a given daughter
 
void SetNodes(TObjArray *nodes)
 
TGeoPatternFinder * GetFinder() const
 
void PrintVoxels() const
Print the voxels for this volume.
 
TGeoExtension * fUserExtension
 
virtual void SetMedium(TGeoMedium *medium)
 
TGeoVoxelFinder * GetVoxels() const
Getter for optimization structure.
 
void SetAttVisibility(Bool_t vis)
 
~TGeoVolume() override
Destructor.
 
void SetShape(const TGeoShape *shape)
set the shape associated with this volume
 
static TGeoMedium * DummyMedium()
 
TObject * fField
pointer to TGeoManager owning this volume
 
void SetLineColor(Color_t lcolor) override
Set the line color.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
void CleanAll()
Clean data of the volume.
 
Bool_t IsTopVolume() const
True if this is the top volume of the geometry.
 
TGeoShape * GetShape() const
 
void InspectMaterial() const
Inspect the material for this volume.
 
void PrintNodes() const
print nodes
 
static TGeoMedium * fgDummyMedium
 
void RegisterYourself(Option_t *option="")
Register the volume and all materials/media/matrices/shapes to the manager.
 
virtual TGeoVolume * Divide(const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
Division a la G3.
 
Bool_t IsRaytracing() const
Check if the painter is currently ray-tracing the content of this volume.
 
void SaveAs(const char *filename="", Option_t *option="") const override
Save geometry having this as top volume as a C++ macro.
 
void SetField(TObject *field)
 
static TGeoVolume * Import(const char *filename, const char *name="", Option_t *option="")
Import a volume from a file.
 
Bool_t IsStyleDefault() const
check if the visibility and attributes are the default ones
 
static void CreateDummyMedium()
Create a dummy medium.
 
TGeoExtension * fFWExtension
Transient user-defined extension to volumes.
 
void SetAsTopVolume()
Set this volume as the TOP one (the whole geometry starts from here)
 
Bool_t IsVisLeaves() const
 
TGeoPatternFinder * fFinder
dummy medium
 
Int_t Export(const char *filename, const char *name="", Option_t *option="")
Export this volume to a file.
 
virtual void DrawOnly(Option_t *option="")
draw only this volume
 
void SetLineStyle(Style_t lstyle) override
Set the line style.
 
void SetOption(const char *option)
Set the current options (none implemented)
 
virtual Bool_t IsAssembly() const
Returns true if the volume is an assembly or a scaled assembly.
 
TGeoVolume * MakeReflectedVolume(const char *newname="") const
Make a copy of this volume which is reflected with respect to XY plane.
 
virtual Bool_t IsVisible() const
 
void SetVisLeaves(Bool_t flag=kTRUE) override
Set visibility for leaves.
 
void InspectShape() const
 
Bool_t IsFolder() const override
Return TRUE if volume contains nodes.
 
TGeoNode * FindNode(const char *name) const
search a daughter inside the list of nodes
 
void CheckOverlaps(Double_t ovlp=0.1, Option_t *option="") const
Overlap checking tool.
 
void SetOverlappingCandidate(Bool_t flag)
 
Bool_t IsOverlappingCandidate() const
 
void Streamer(TBuffer &) override
Stream an object of class TGeoVolume.
 
void CheckShape(Int_t testNo, Int_t nsamples=10000, Option_t *option="")
Tests for checking the shape navigation algorithms. See TGeoShape::CheckShape()
 
Finder class handling voxels.
 
void Print(Option_t *option="") const override
Print the voxels.
 
void SetNeedRebuild(Bool_t flag=kTRUE)
 
virtual void Voxelize(Option_t *option="")
Voxelize attached volume according to option If the volume is an assembly, make sure the bbox is comp...
 
virtual void FindOverlaps(Int_t inode) const
create the list of nodes for which the bboxes overlap with inode's bbox
 
void Draw(Option_t *option="") override
Draw this histogram with options.
 
2-D histogram with a float per channel (see TH1 documentation)
 
Book space in a file, create I/O buffers, to fill them, (un)compress them.
 
virtual const char * GetClassName() const
 
virtual TObject * ReadObj()
To read a TObject* from the file.
 
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
 
void Add(TObject *obj) override
 
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
 
void Add(TObject *obj) override
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
 
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
const char * GetName() const override
Returns name of object.
 
const char * GetTitle() const override
Returns title of object.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
Int_t GetEntriesFast() const
 
void AddAt(TObject *obj, Int_t idx) override
Add object at position ids.
 
void Clear(Option_t *option="") override
Remove all objects from the array.
 
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
 
virtual void Compress()
Remove empty slots from array.
 
Int_t GetEntries() const override
Return the number of objects in array (i.e.
 
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
 
TObject * At(Int_t idx) const override
 
TObject * Remove(TObject *obj) override
Remove object from array.
 
TObject * RemoveAt(Int_t idx) override
Remove object at index idx.
 
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
 
void Add(TObject *obj) override
 
Mother of all ROOT objects.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
 
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
 
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
Sequenceable collection abstract base class.
 
void ToLower()
Change string to lower-case.
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
 
const char * Data() const
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
Abstract class for geometry painters.
 
virtual TGeoVolume * GetTopVolume() const =0
 
ThreadData_t()
index of next node to be entered
 
~ThreadData_t()
Destructor.