|
ROOT
Reference Guide |
|
Go to the documentation of this file.
399 if (!
gROOT->GetListOfGeometries()->FindObject(
this))
gROOT->GetListOfGeometries()->Add(
this);
400 if (!
gROOT->GetListOfBrowsables()->FindObject(
this))
gROOT->GetListOfBrowsables()->Add(
this);
415 if (
fgLock)
Fatal(
"Init",
"New geometry created while the old one locked !!!");
502 if (
gROOT->GetListOfFiles()) {
503 gROOT->GetListOfGeometries()->Remove(
this);
504 gROOT->GetListOfBrowsables()->Remove(
this);
582 auto pos =
fProperties.insert(ConstPropMap_t::value_type(property, value));
584 Warning(
"AddProperty",
"Property \"%s\" already exists with value %g", property, (pos.first)->second);
597 if (error) *error =
kTRUE;
600 if (error) *error =
kFALSE;
611 if (error) *error =
kTRUE;
616 while (pos < i) { ++it; ++pos; }
617 if (error) *error =
kFALSE;
676 Error(
"AddVolume",
"invalid volume");
722 NavigatorsMap_t::const_iterator it =
fNavigators.find(threadId);
727 fNavigators.insert(NavigatorsMap_t::value_type(threadId, array));
745 NavigatorsMap_t::const_iterator it =
fNavigators.find(threadId);
759 NavigatorsMap_t::const_iterator it =
fNavigators.find(threadId);
771 NavigatorsMap_t::const_iterator it =
fNavigators.find(threadId);
773 Error(
"SetCurrentNavigator",
"No navigator defined for this thread\n");
774 std::cout <<
" thread id: " << threadId << std::endl;
780 Error(
"SetCurrentNavigator",
"Navigator %d not existing for this thread\n", index);
781 std::cout <<
" thread id: " << threadId << std::endl;
803 for (NavigatorsMap_t::iterator it =
fNavigators.begin();
829 Error(
"Remove navigator",
"Navigator %p not found", nav);
839 Error(
"SetMaxThreads",
"Cannot set maximum number of threads before closing the geometry");
845 NavigatorsMap_t::const_iterator it =
fNavigators.find(threadId);
849 fNavigators.insert(NavigatorsMap_t::value_type(threadId, array));
907 TTHREAD_TLS(
Int_t) tid = -1;
909 if (ttid > -1)
return ttid;
913 if (it !=
fgThreadId->end())
return it->second;
939 "TGeoManager",
this,
"SetVisibility(TObject*,Bool_t)");
1018 if (!vorig || !vnew)
return nref;
1021 if (morig) checkmed =
kTRUE;
1025 Error(
"ReplaceVolume",
"Replacement volume %s has no medium and it is not an assembly",
1029 if (mnew && checkmed) {
1031 Warning(
"ReplaceVolume",
"Replacement volume %s has different medium than original volume %s",
1044 for (i=0; i<nvol; i++) {
1047 if (vol==vorig || vol==vnew)
continue;
1049 for (j=0; j<nd; j++) {
1054 if (mnew && mnew->
GetId()!=morig->
GetId()) ierr++;
1059 Info(
"ReplaceVolume",
"%s replaced with assembly and declared NON-OVERLAPPING!",node->
GetName());
1070 Info(
"ReplaceVolume",
"%s inside substitute assembly %s declared NON-OVERLAPPING!",node->
GetName(),vnew->
GetName());
1076 if (ierr)
Warning(
"ReplaceVolume",
"Volumes should not be replaced with assemblies if they are positioned in containers having a different medium ID.\n %i occurrences for assembly replacing volume %s",
1088 Warning(
"TransformVolumeToAssembly",
"Volume %s not found", vname);
1096 while (index<indmax) {
1105 Warning(
"TransformVolumeToAssembly",
"Volume %s already assembly", toTransform->
GetName());
1107 Warning(
"TransformVolumeToAssembly",
"Volume %s has no daughters, cannot transform", toTransform->
GetName());
1109 Warning(
"TransformVolumeToAssembly",
"Volume %s divided, cannot transform", toTransform->
GetName());
1113 if (index >= indmax)
return count;
1115 if (!strcmp(toTransform->
GetName(),vname)) replace =
kTRUE;
1215 return TGeoBuilder::Instance(
this)->
Medium(
name, numed, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
1363 Warning(
"CloseGeometry",
"geometry already closed");
1367 Error(
"CloseGeometry",
"you MUST call SetTopVolume() first !");
1370 if (!
gROOT->GetListOfGeometries()->FindObject(
this))
gROOT->GetListOfGeometries()->Add(
this);
1371 if (!
gROOT->GetListOfBrowsables()->FindObject(
this))
gROOT->GetListOfBrowsables()->Add(
this);
1382 Int_t nnavigators = 0;
1390 Error(
"CloseGeometry",
"Master volume not streamed");
1401 for (
Int_t i=0; i<nnavigators; i++) {
1422 if (
fgVerboseLevel>0)
Info(
"CloseGeometry",
"----------------modeler ready----------------");
1440 for (
Int_t i=0; i<nnavigators; i++) {
1448 Info(
"CloseGeometry",
"----------------modeler ready----------------");
1579 while ((node=next())) {
1606 Error(
"CountLevels",
"Top node not defined.");
1612 if (
fgVerboseLevel>1 && fixrefs)
Info(
"CountLevels",
"Fixing volume reference counts");
1616 Int_t maxvertices = 1;
1617 while ((node=next())) {
1620 for (
Int_t ibit=10; ibit<14; ibit++) {
1678 if (tmin<0 || tmin>=tmax || nframes<1)
return;
1699 for (i=0; i<3; i++) {
1700 start[i+3] = 20 + 1.3*start[i+3];
1701 end[i+3] = 20 + 0.9*end[i+3];
1703 for (i=0; i<6; i++) {
1704 dd[i] = (end[i]-start[i])/10.;
1708 dlong = (-206-dlong)/
Double_t(nframes);
1709 dlat = (126-dlat)/
Double_t(nframes);
1710 dpsi = (75-dpsi)/
Double_t(nframes);
1714 for (i=0; i<nframes; i++) {
1718 for (j=0; j<6; j++)
box[j]+=dd[j];
1744 if (track) track->
Draw(option);
1797 static char defaultname[5] = {
"XXX" };
1798 if (!
fPdgNames || !pdg)
return defaultname;
1817 Warning(
"SetPdgName",
"No more than 256 different pdg codes allowed");
1838 Error(
"AddGDMLMatrix",
"Matrix %s already added to manager", mat->
GetName());
1857 Error(
"AddOpticalSurface",
"Surface %s already added to manager", optsurf->
GetName());
1876 Error(
"AddSkinSurface",
"Surface %s already added to manager", surf->
GetName());
1895 Error(
"AddBorderSurface",
"Surface %s already added to manager", surf->
GetName());
1926 bombx = bomby = bombz = bombr = 1.3;
2008 if (trk)
return trk;
2014 if (trk)
return trk;
2027 if (track->
GetId() ==
id)
return track;
2040 if (track->
GetId()==
id)
return track;
2053 if (track->
GetId() ==
id)
return i;
2080 const Int_t nmax = 110;
2087 col[ 4] = col[ 5] =
kGreen-10;
2088 col[ 6] = col[ 7] =
kBlue-7;
2090 col[10] = col[11] =
kRed-10;
2096 col[24] = col[25] = col[26] =
kBlue-8;
2134 if (strcmp(volume->
GetName(),
name) && !all)
continue;
2144 if (strcmp(volume->
GetName(),
name) && !all)
continue;
2153 Warning(
"SetVolumeAttribute",
"volume: %s does not exist",
name);
2184 Info(
"SetMaxVisNodes",
"Automatic visible depth for %d visible nodes", maxnodes);
2223 if ((option>=0) && (option<3))
fVisOption=option;
2254 Info(
"SetVisLevel",
"Automatic visible depth disabled");
2275 Error(
"OptimizeVoxels",
"Geometry must be closed first");
2280 if (fname.
IsNull()) fname =
"tgeovox.C";
2281 out.open(fname, std::ios::out);
2283 Error(
"OptimizeVoxels",
"cannot open file");
2290 out << sname.
Data()<<
"()"<<std::endl;
2291 out <<
"{" << std::endl;
2292 out <<
"//=== Macro generated by ROOT version "<<
gROOT->GetVersion()<<
" : "<<t.
AsString()<<std::endl;
2293 out <<
"//=== Voxel optimization for " <<
GetTitle() <<
" geometry"<<std::endl;
2294 out <<
"//===== <run this macro JUST BEFORE closing the geometry>"<<std::endl;
2295 out <<
" TGeoVolume *vol = 0;"<<std::endl;
2296 out <<
" // parse all voxelized volumes"<<std::endl;
2302 out<<
" vol = gGeoManager->GetVolume(\""<<vol->
GetName()<<
"\");"<<std::endl;
2305 out<<
" vol->SetCylVoxels();"<<std::endl;
2307 out<<
" vol->SetCylVoxels(kFALSE);"<<std::endl;
2310 out <<
"}" << std::endl;
2334 for (i=0; i< len; i++) {
2335 if (startstr(i)==
' ')
continue;
2336 e0 += startstr(i, 1);
2354 for (i=0; i<len; i++) {
2356 if (!level) iloop++;
2362 if (level==0) lastpp=i;
2365 if ((e0(i)==
'+') || (e0(i)==
'-') || (e0(i)==
'*')) {
2373 if ((e0(i)==
':') && (level==0)) {
2382 if (iloop==1 && (e0(0)==
'(') && (e0(len-1)==
')')) {
2387 if (foundmat)
break;
2388 if (((lastop==0) && (lastdp>0)) || ((lastpp>0) && (lastdp>lastpp) && (indop<lastpp))) {
2389 expr3 = e0(lastdp+1, len-lastdp);
2398 for (i=0; i<len; i++) {
2408 if (level<=levmin) {
2430 expr1 = e0(0, indop);
2431 expr2 = e0(indop+1, len-indop);
2442 Error(
"SaveAttributes",
"geometry must be closed first\n");
2447 if (fname.
IsNull()) fname =
"tgeoatt.C";
2448 out.open(fname, std::ios::out);
2450 Error(
"SaveAttributes",
"cannot open file");
2457 out << sname.
Data()<<
"()"<<std::endl;
2458 out <<
"{" << std::endl;
2459 out <<
"//=== Macro generated by ROOT version "<<
gROOT->GetVersion()<<
" : "<<t.
AsString()<<std::endl;
2460 out <<
"//=== Attributes for " <<
GetTitle() <<
" geometry"<<std::endl;
2461 out <<
"//===== <run this macro AFTER loading the geometry in memory>"<<std::endl;
2463 out <<
" TGeoVolume *top = gGeoManager->GetVolume(\""<<
fTopVolume->
GetName()<<
"\");"<<std::endl;
2464 out <<
" TGeoVolume *vol = 0;"<<std::endl;
2465 out <<
" TGeoNode *node = 0;"<<std::endl;
2466 out <<
" // clear all volume attributes and get painter"<<std::endl;
2467 out <<
" gGeoManager->ClearAttributes();"<<std::endl;
2468 out <<
" gGeoManager->GetGeomPainter();"<<std::endl;
2469 out <<
" // set visualization modes and bomb factors"<<std::endl;
2470 out <<
" gGeoManager->SetVisOption("<<
GetVisOption()<<
");"<<std::endl;
2471 out <<
" gGeoManager->SetVisLevel("<<
GetVisLevel()<<
");"<<std::endl;
2472 out <<
" gGeoManager->SetExplodedView("<<
GetBombMode()<<
");"<<std::endl;
2473 Double_t bombx, bomby, bombz, bombr;
2475 out <<
" gGeoManager->SetBombFactors("<<bombx<<
","<<bomby<<
","<<bombz<<
","<<bombr<<
");"<<std::endl;
2476 out <<
" // iterate volumes container and set new attributes"<<std::endl;
2485 out <<
" // draw top volume with new settings"<<std::endl;
2486 out <<
" top->Draw();"<<std::endl;
2487 out <<
" gPad->x3d();"<<std::endl;
2488 out <<
"}" << std::endl;
2622 if (phi<0) phi+=360.;
2679 if (
fgVerboseLevel>0)
Info(
"GetByteCount",
"Total size of logical tree : %i bytes", count);
2689 const char *kind =
"root";
2690 if (
gROOT->IsWebDisplay() && !
gROOT->IsWebDisplayBatch()) kind =
"web";
2691 if (
auto h =
gROOT->GetPluginManager()->FindHandler(
"TVirtualGeoPainter", kind)) {
2692 if (
h->LoadPlugin() == -1) {
2693 Error(
"GetGeomPainter",
"could not load plugin for %s geo_painter", kind);
2698 Error(
"GetGeomPainter",
"could not create %s geo_painter", kind);
2702 Error(
"GetGeomPainter",
"not found plugin %s for geo_painter", kind);
2714 sname = sname.
Strip();
2734 sname = sname.
Strip();
2749 if (!vol)
return -1;
2759 if (index <= 0)
return 0;
2761 for (
Int_t i=0; i<index; i++) {
2763 if (other == mat)
continue;
2764 if (other->
IsEq(mat))
return other;
2775 sname = sname.
Strip();
2786 sname = sname.
Strip();
2799 if (med->
GetId()==numed)
return med;
2823 sname = sname.
Strip();
3008 return TGeoBuilder::Instance(
this)->
MakeCtub(
name, medium, rmin, rmax, dz, phi1, phi2, lx, ly, lz, tx, ty, tz);
3077 return TGeoBuilder::Instance(
this)->
MakeTrap(
name, medium, dz, theta, phi,
h1, bl1, tl1, alpha1, h2, bl2, tl2, alpha2);
3088 return TGeoBuilder::Instance(
this)->
MakeGtra(
name, medium, dz, theta, phi, twist,
h1, bl1, tl1, alpha1, h2, bl2, tl2, alpha2);
3112 Error(
"SetAlignableEntry",
"An alignable object with name %s already existing. NOT ADDED !", unique_name);
3121 if (!added)
Error(
"SetAlignableEntry",
"A PN entry: has already uid=%i", uid);
3151 if (index<0 ||
fKeyPNEId[index]!=uid)
return NULL;
3198 keys[index+1] = uid;
3199 values[index+1] = ientry;
3212 for (i=
fNPNEId-1; i>index; i--) {
3229 Error(
"MakeAlignablePN",
"No alignable object named %s found !",
name);
3241 Error(
"MakeAlignablePN",
"No alignable object specified !");
3244 const char *path = entry->
GetTitle();
3246 Error(
"MakeAlignablePN",
"Alignable object %s poins to invalid path: %s",
3264 Error(
"MakePhysicalNode",
"path: %s not valid", path);
3328 if ((phimin==0) && (phimax==360)) {
3432 Int_t nnavigators = 0;
3436 for (
Int_t i=0; i<nnavigators; i++) {
3554 Error(
"CheckGeometryFull",
"The option string must contain a letter. See method documentation.");
3579 has_runtime =
kTRUE;
3592 Warning(
"CheckGeometry",
"Volume \"%s\" has no medium: assigned dummy medium and material", vol->
GetName());
3604 Error(
"CheckOverlaps",
"Top node not set");
3641 Info(
"Weight",
"Estimating weight of %s with %g %% precision",
fTopVolume->
GetName(), 100.*precision);
3642 printf(
" event weight err\n");
3643 printf(
"========================================\n");
3662 void TGeoManager::Streamer(
TBuffer &R__b)
3716 cmd =
TString::Format(
"TGDMLWrite::StartGDMLWriting(gGeoManager,\"%s\",\"%s\")", filename, option);
3717 gROOT->ProcessLineFast(cmd);
3723 if (!
f ||
f->IsZombie()) {
3724 Error(
"Export",
"Cannot open file");
3821 ::Warning(
"TGeoManager::Import",
"TGeoMananager in lock mode. NOT IMPORTING new geometry");
3824 if (!filename)
return 0;
3830 if (strstr(filename,
".gdml")) {
3832 new TGeoManager(
"GDMLImport",
"Geometry imported from GDML");
3837 ::Error(
"TGeoManager::Import",
"Cannot open file");
3850 if (strstr(filename,
"http"))
f =
TFile::Open(filename,
"CACHEREAD");
3852 if (!
f ||
f->IsZombie()) {
3853 ::Error(
"TGeoManager::Import",
"Cannot open file");
3859 TIter next(
f->GetListOfKeys());
3861 while ((key = (
TKey*)next())) {
3862 if (strcmp(key->
GetClassName(),
"TGeoManager") != 0)
continue;
3891 for (i=0; i<nelem; i++) {
3893 if (!elem)
continue;
3895 if (!elem_table)
continue;
3896 if (elem != elem_table) {
3905 if (!elem)
continue;
3907 if (!elem_table)
continue;
3908 if (elem != elem_table) {
3927 while ((obj = next())) {
3995 Error(
"SetUseParallelWorldNav",
"No parallel world geometry defined. Use CreateParallelWorld.");
4003 Error(
"SetUseParallelWorldNav",
"The geometry must be closed first");
4027 ::Fatal(
"TGeoManager",
"The system of units may only be changed once, \n"
4028 "BEFORE any elements and materials are created! \n"
4029 "Alternatively unlock the default units at own risk.");
4031 else if ( new_value ==
kG4Units ) {
4032 ::Warning(
"TGeoManager",
"Changing system of units to Geant4 units (mm, ns, MeV).");
4035 ::Warning(
"TGeoManager",
"Changing system of units to ROOT units (cm, s, GeV).");
Double_t * FindNormal(Bool_t forward=kTRUE)
Computes normal vector to the next surface that will be or was already crossed when propagating on a ...
Double_t Safety(Bool_t inside=kFALSE)
Compute safe distance from the current point.
void AnimateTracks(Double_t tmin=0, Double_t tmax=5E-8, Int_t nframes=200, Option_t *option="/*")
Draw animation of tracks.
static EDefaultUnits fgDefaultUnits
Precision to be used in ASCII exports.
void UpdateElements()
Update element flags when geometry is loaded from a file.
virtual void DrawCurrentPoint(Int_t color)=0
static const char * GetFloatFormat()
return current printf format for float members, default "%e"
Bool_t IsAnimatingTracks() const
static Int_t fgVerboseLevel
Lock preventing a second geometry to be loaded.
TGeoNavigator * AddNavigator()
Add a new navigator to the array.
static UInt_t GetExportPrecision()
Int_t GetRefCount() const
void SetTminTmax(Double_t tmin=0, Double_t tmax=999)
Set time cut interval for drawing tracks.
TGeoVolume * MakeHype(const char *name, TGeoMedium *medium, Double_t rin, Double_t stin, Double_t rout, Double_t stout, Double_t dz)
Make in one step a volume pointing to a tube shape with given medium.
THashList * fHashGVolumes
hash list of volumes providing fast search
void SetVolume(TGeoVolume *volume)
virtual Double_t GetDensity() const
Double_t * FindNormal(Bool_t forward=kTRUE)
Computes normal vector to the next surface that will be or was already crossed when propagating on a ...
Bool_t CheckPath(const char *path) const
Check if a geometry path is valid without changing the state of the current navigator.
Using a TBrowser one can browse all ROOT objects.
TGeoVolume * MakeCtub(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2, Double_t lx, Double_t ly, Double_t lz, Double_t tx, Double_t ty, Double_t tz)
Make in one step a volume pointing to a tube segment shape with given medium.
Int_t GetUID(const char *volname) const
Retrieve unique id for a volume name. Return -1 if name not found.
virtual TVirtualGeoTrack * FindTrackWithId(Int_t id) const
Recursively search through this track for a daughter particle (at any depth) with the specified id.
TObjArray * fMatrices
current painter
void SetFinder(TGeoPatternFinder *finder)
Physical nodes are the actual 'touchable' objects in the geometry, representing a path of positioned ...
virtual void EstimateCameraMove(Double_t, Double_t, Double_t *, Double_t *)
void GetBranchNames(Int_t *names) const
Fill volume names of current branch into an array.
virtual Int_t GetByteCount(Option_t *option=0)
Get total size of geometry in bytes.
TGeoNavigator * fCurrentNavigator
Lock existing navigators.
virtual void ReflectZ(Bool_t leftside, Bool_t rotonly=kFALSE)
Multiply by a reflection respect to XY.
static void ClearThreadsMap()
Clear the current map of threads.
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
void BuildInfoBranch()
Builds info branch. Navigation is possible only after this step.
void RemoveNavigator(const TGeoNavigator *nav)
Clear a single navigator.
static TGeoMedium * DummyMedium()
void Node(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot, Bool_t isOnly, Float_t *upar, Int_t npar=0)
Create a node called <name_nr> pointing to the volume called <name> as daughter of the volume called ...
void ClearOverlaps()
Clear the list of overlaps.
void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.)
Check pushes and pulls needed to cross the next boundary with respect to the position given by FindNe...
void UnbombTranslation(const Double_t *tr, Double_t *bombtr)
Get the new 'unbombed' translation vector according current exploded view mode.
void CheckShapes()
check for wrong parameters in shapes
Int_t AddVolume(TGeoVolume *volume)
Add a volume to the list. Returns index of the volume in list.
Double_t ATan2(Double_t y, Double_t x)
void SetCheckedNode(TGeoNode *node)
Assign a given node to be checked for overlaps. Any other overlaps will be ignored.
TGeoVolume * MakePgon(const char *name, TGeoMedium *medium, Double_t phi, Double_t dphi, Int_t nedges, Int_t nz)
Make in one step a volume pointing to a polygone shape with given medium.
void SetUseParallelWorldNav(Bool_t flag)
Activate/deactivate usage of parallel world navigation.
R__EXTERN TGeoIdentity * gGeoIdentity
TGeoShape * GetShape() const
TVirtualGeoTrack * FindTrackWithId(Int_t id) const
Search the track hierarchy to find the track with the given id.
void SetVisLevel(Int_t level=3)
set default level down to which visualization is performed
TGeoNavigator * GetCurrentNavigator() const
Returns current navigator for the calling thread.
static Int_t ThreadId()
Translates the current thread id to an ordinal number.
void LocalToMaster(const Double_t *local, Double_t *master) const
void GetBranchNames(Int_t *names) const
Fill volume names of current branch into an array.
TGeoVolume * fUserPaintVolume
volume currently painted
void GetBranchOnlys(Int_t *isonly) const
Fill node copy numbers of current branch into an array.
TGeoHMatrix * GetHMatrix()
Return stored current matrix (global matrix of the next touched node).
constexpr Double_t RadToDeg()
Conversion from radian to degree:
TGeoVolume * MakeTrd1(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy, Double_t dz)
Make in one step a volume pointing to a TGeoTrd1 shape with given medium.
Int_t GetNdaughters() const
virtual void SetName(const char *name)
Set the name of the TNamed.
Class describing rotation + translation.
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
TGeoVolume * MakeXtru(const char *name, TGeoMedium *medium, Int_t nz)
Make a TGeoXtru-shaped volume with nz planes.
void CdNext()
Do a cd to the node found next by FindNextBoundary.
TGeoNodeCache * GetCache() const
TGeoVolume * MakePara(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz, Double_t alpha, Double_t theta, Double_t phi)
Make in one step a volume pointing to a parallelepiped shape with given medium.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
TGeoNode * GetCurrentNode() const
virtual Bool_t IsComposite() const
static ThreadsMap_t * fgThreadId
Map between thread id's and navigator arrays.
Bool_t IsInPhiRange() const
True if current node is in phi range.
TGeoVolume * MakePcon(const char *name, TGeoMedium *medium, Double_t phi, Double_t dphi, Int_t nz)
Make in one step a volume pointing to a polycone shape with given medium.
Double_t * FindNormalFast()
Computes fast normal to next crossed boundary, assuming that the current point is close enough to the...
Int_t GetVisLevel() const
Returns current depth to which geometry is drawn.
TGeoVolume * MakePgon(const char *name, TGeoMedium *medium, Double_t phi, Double_t dphi, Int_t nedges, Int_t nz)
Make in one step a volume pointing to a polygone shape with given medium.
Bool_t InitArrayPNE() const
Initialize PNE array for fast access via index and unique-id.
virtual void SetNmeshPoints(Int_t npoints)=0
virtual void Sort(Int_t upto=kMaxInt)
If objects in array are sortable (i.e.
Bool_t fMultiThread
Max number of threads.
TGeoVolume * MakeTrd1(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy, Double_t dz)
Make in one step a volume pointing to a TGeoTrd1 shape with given medium.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
void MasterToTop(const Double_t *master, Double_t *top) const
Convert coordinates from master volume frame to top.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
static void SetDoubleFormat(const char *fmt="%.14e")
set printf format for double members, default "%.14e" use it after SetFloatFormat,...
const char * Data() const
virtual void TestOverlaps(const char *path)=0
void EnableThreadSafety()
Enables the global mutex to make ROOT thread safe/aware.
void CountLevels()
Count maximum number of nodes per volume, maximum depth and maximum number of xtru vertices.
void TopToMaster(const Double_t *top, Double_t *master) const
Convert coordinates from top volume frame to master.
void Voxelize(Option_t *option)
build the voxels for this volume
static Int_t fgMaxXtruVert
Maximum number of daughters.
An extrusion with fixed outline shape in x-y and a sequence of z extents (segments).
TGeoElement * GetElement(Int_t z)
virtual TObject * Remove(TObject *obj)
Remove object from array.
virtual const char * GetTitle() const
Returns title of object.
TGeoElementTable * fElementTable
clipping shape for raytracing
void SetPhysicalNode(TGeoPhysicalNode *node)
Setter for the corresponding physical node.
TGeoParallelWorld * CreateParallelWorld(const char *name)
Create a parallel world for prioritised navigation.
static Int_t fgNumThreads
Thread id's map.
Int_t GetVisOption() const
Returns current depth to which geometry is drawn.
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
TGeoVolume * MakeArb8(const char *name, TGeoMedium *medium, Double_t dz, Double_t *vertices=0)
Make an TGeoArb8 volume.
Bool_t IsSameLocation(Double_t x, Double_t y, Double_t z, Bool_t change=kFALSE)
Checks if point (x,y,z) is still in the current node.
Int_t AddShape(TGeoShape *shape)
Add a shape to the list. Returns index of the shape in list.
virtual Int_t Export(const char *filename, const char *name="", Option_t *option="vg")
Export this geometry to a file.
void SetPhiRange(Double_t phimin=0., Double_t phimax=360.)
Set cut phi range.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TGeoNavigator * GetCurrentNavigator() const
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
virtual Bool_t IsMixture() const
virtual void GetBombFactors(Double_t &bombx, Double_t &bomby, Double_t &bombz, Double_t &bombr) const =0
void CdTop()
Make top level node the current node.
TGeoVolume * MakeGtra(const char *name, TGeoMedium *medium, Double_t dz, Double_t theta, Double_t phi, Double_t twist, Double_t h1, Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2, Double_t tl2, Double_t alpha2)
Make in one step a volume pointing to a twisted trapezoid shape with given medium.
TGeoVolume * GetVolume() const
void RefreshPhysicalNodes(Bool_t lock=kTRUE)
Refresh physical nodes to reflect the actual geometry paths after alignment was applied.
void CdNode(Int_t nodeid)
Change current path to point to the node having this id.
Bool_t fLoopVolumes
flag that geometry is closed
TGeoVolumeAssembly * MakeVolumeAssembly(const char *name)
Make an assembly of volumes.
TObjArray * fGVolumes
list of runtime shapes
Int_t AddTransformation(const TGeoMatrix *matrix)
Add a matrix to the list. Returns index of the matrix in list.
void AddOpticalSurface(TGeoOpticalSurface *optsurf)
Add optical surface;.
Double_t fTmax
lower time limit for tracks drawing
Int_t IndexOf(const TObject *obj) const
static Bool_t IsLocked()
Check lock state.
TGeoNavigator * AddNavigator()
Add a navigator in the list of navigators.
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.
void SortOverlaps()
Sort overlaps by decreasing overlap distance. Extrusions comes first.
virtual void SetTopVisible(Bool_t vis=kTRUE)=0
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
const char * AsString() const
Return the date & time as a string (ctime() format).
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
Int_t AddOverlap(const TNamed *ovlp)
Add an illegal overlap/extrusion to the list.
TGeoBorderSurface * GetBorderSurface(const char *name) const
Get border surface with a given name;.
static Bool_t LockDefaultUnits(Bool_t new_value)
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Base class for a flat parallel geometry.
const char * GetPath() const
Get path to the current node in the form /node0/node1/...
virtual void Test(Int_t npoints, Option_t *option)=0
TGeoMedium * Medium(const char *name, Int_t numed, Int_t nmat, Int_t isvol, Int_t ifield, Double_t fieldm, Double_t tmaxfd, Double_t stemax, Double_t deemax, Double_t epsil, Double_t stmin)
Create tracking medium.
TGeoNode * FindNextDaughterBoundary(Double_t *point, Double_t *dir, Int_t &idaughter, Bool_t compmatrix=kFALSE)
Computes as fStep the distance to next daughter of the current volume.
Int_t CountNodes(const TGeoVolume *vol=0, Int_t nlevels=10000, Int_t option=0)
Count the total number of nodes starting from a volume, nlevels down.
void CheckBoundaryReference(Int_t icheck=-1)
Check the boundary errors reference file created by CheckBoundaryErrors method.
virtual Double_t * GetViewBox()=0
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
TGeoNode * CrossBoundaryAndLocate(Bool_t downwards, TGeoNode *skipnode)
Cross next boundary and locate within current node The current point must be on the boundary of fCurr...
Int_t GetNsegments() const
Get number of segments approximating circles.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
void DrawCurrentPoint(Int_t color=2)
Draw current point in the same view.
Int_t GetVirtualLevel()
Find level of virtuality of current overlapping node (number of levels up having the same tracking me...
TGeoVolume * fTopVolume
current volume
virtual void SetMedium(TGeoMedium *medium)
Int_t GetEntries() const
Return the number of objects in array (i.e.
void SaveAs(const char *filename, Option_t *option="") const
Save geometry having this as top volume as a C++ macro.
Int_t GetVirtualLevel()
Find level of virtuality of current overlapping node (number of levels up having the same tracking me...
void RemoveMaterial(Int_t index)
Remove material at given index.
Small helper to keep current directory context.
TGeoNavigator * SetCurrentNavigator(Int_t inav)
void RestoreMasterVolume()
Restore the master volume of the geometry.
void AddSkinSurface(TGeoSkinSurface *surf)
Add skin surface;.
ConstPropMap_t fProperties
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
static void UnlockGeometry()
Unlock current geometry.
TGeoElement * GetElement() const
Get a pointer to the element this material is made of.
TGeoNode * Step(Bool_t is_geom=kTRUE, Bool_t cross=kTRUE)
Make a rectilinear step of length fStep from current point (fPoint) on current direction (fDirection)...
TGeoVolume * MakeCons(const char *name, TGeoMedium *medium, Double_t dz, Double_t rmin1, Double_t rmax1, Double_t rmin2, Double_t rmax2, Double_t phi1, Double_t phi2)
Make in one step a volume pointing to a cone segment shape with given medium.
TGeoVolume * Division(const char *name, const char *mother, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
Create a new volume by dividing an existing one (GEANT3 like)
TGeoVolume * MakeCtub(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2, Double_t lx, Double_t ly, Double_t lz, Double_t tx, Double_t ty, Double_t tz)
Make in one step a volume pointing to a tube segment shape with given medium.
TVirtualGeoTrack * GetMother() const
void CdDown(Int_t index)
Make a daughter of current node current.
void BuildDefaultMaterials()
Now just a shortcut for GetElementTable.
Buffer base class used for serializing objects.
TGeoVolume * MakeTrd2(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy1, Double_t dy2, Double_t dz)
Make in one step a volume pointing to a TGeoTrd2 shape with given medium.
virtual void DrawPath(const char *path, Option_t *option="")=0
TObject * UncheckedAt(Int_t i) const
void Refresh()
Refresh this physical node.
virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.)=0
virtual void GetViewAngles(Double_t &, Double_t &, Double_t &)
TObject * At(Int_t idx) const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
TObjArray * GetListOfPhysicalNodes()
void SetMotherVolume(TGeoVolume *mother)
TGeoNode * FindNode(Bool_t safe_start=kTRUE)
Returns deepest node containing current point.
virtual void SetBombFactors(Double_t bombx=1.3, Double_t bomby=1.3, Double_t bombz=1.3, Double_t bombr=1.3)=0
TGeoVolume * GetCurrentVolume() const
Bool_t IsOverlapping() const
Bool_t IsVisTouched() const
static Int_t GetMaxXtruVert()
Return maximum number of vertices for an xtru shape used.
Bool_t GotoSafeLevel()
Go upwards the tree until a non-overlapping node.
virtual TGeoElement * GetElement(Int_t i=0) const
Retrieve the pointer to the element corresponding to component I.
void SetTopVisible(Bool_t vis=kTRUE)
make top volume visible on screen
virtual TGeoMatrix * GetMatrix() const =0
TGeoVolumeAssembly * MakeVolumeAssembly(const char *name)
Make an assembly of volumes.
void ClearThreadData() const
virtual void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz, const char *target_vol, Bool_t check_norm)=0
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
virtual Bool_t IsRaytracing() const =0
void BuildIdArray()
Builds node id array.
TGeoVolume * MakeTrap(const char *name, TGeoMedium *medium, Double_t dz, Double_t theta, Double_t phi, Double_t h1, Double_t bl1, Double_t tl1, Double_t alpha1, Double_t h2, Double_t bl2, Double_t tl2, Double_t alpha2)
Make in one step a volume pointing to a trapezoid shape with given medium.
Double_t fVisDensity
particles to be drawn
virtual Int_t GetByteCount() const
Get total size in bytes of this.
TGeoNode * SearchNode(Bool_t downwards=kFALSE, const TGeoNode *skipnode=0)
Returns the deepest node containing fPoint, which must be set a priori.
Base class describing materials.
TGeoVolume * GetMotherVolume() const
Bool_t TestShapeBit(UInt_t f) const
TObjArray * fOpticalSurfaces
TString & ReplaceAll(const TString &s1, const TString &s2)
Class handling Boolean composition of shapes.
void DoBackupState()
Backup the current state without affecting the cache stack.
TGeoMedium * GetMedium() const
TObjArray * fUniqueVolumes
virtual Double_t Weight(Double_t precision, Option_t *option="v")=0
void DrawTracks(Option_t *option="")
Draw tracks over the geometry, according to option.
Int_t ReplaceVolume(TGeoVolume *vorig, TGeoVolume *vnew)
Replaces all occurrences of VORIG with VNEW in the geometry tree.
TGeoMaterial * Mixture(const char *name, Float_t *a, Float_t *z, Double_t dens, Int_t nelem, Float_t *wmat, Int_t uid)
Create mixture OR COMPOUND IMAT as composed by THE BASIC nelem materials defined by arrays A,...
void SetNsegments(Int_t nseg)
Set number of segments for approximating circles in drawing.
void SetNumber(Int_t number)
void AddBorderSurface(TGeoBorderSurface *surf)
Add border surface;.
TGeoPhysicalNode * MakePhysicalNode(const char *path=0)
Makes a physical node corresponding to a path.
TGeoNode * InitTrack(const Double_t *point, const Double_t *dir)
Initialize current point and current direction vector (normalized) in MARS.
void SetExplodedView(Int_t iopt=0)
Set type of exploding view (see TGeoPainter::SetExplodedView())
TGeoVolume * Division(const char *name, const char *mother, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
Create a new volume by dividing an existing one (GEANT3 like)
virtual Int_t IndexOf(const TObject *obj) const
Return index of object in collection.
TGeoVolume * MakePara(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz, Double_t alpha, Double_t theta, Double_t phi)
Make in one step a volume pointing to a parallelepiped shape with given medium.
void DoRestoreState()
Restore a backed-up state without affecting the cache stack.
Bool_t GetTminTmax(Double_t &tmin, Double_t &tmax) const
Get time cut for drawing tracks.
void CdUp()
Go one level up in geometry.
TGeoNode * FindNode(Bool_t safe_start=kTRUE)
Returns deepest node containing current point.
Int_t GetCurrentNodeId() const
Get the unique ID of the current node.
void CheckGeometry(Option_t *option="")
Perform last checks on the geometry.
std::map< std::thread::id, Int_t > ThreadsMap_t
void Node(const char *name, Int_t nr, const char *mother, Double_t x, Double_t y, Double_t z, Int_t irot, Bool_t isOnly, Float_t *upar, Int_t npar=0)
Create a node called <name_nr> pointing to the volume called <name> as daughter of the volume called ...
TGeoVolume * FindVolumeFast(const char *name, Bool_t multi=kFALSE)
Fast search for a named volume. All trailing blanks stripped.
Bool_t IsSameLocation() const
void DoBackupState()
Backup the current state without affecting the cache stack.
TGeoVolume * MakeCone(const char *name, TGeoMedium *medium, Double_t dz, Double_t rmin1, Double_t rmax1, Double_t rmin2, Double_t rmax2)
Make in one step a volume pointing to a cone shape with given medium.
void LocalToMaster(const Double_t *local, Double_t *master) const
virtual Bool_t IsEq(const TGeoMaterial *other) const
return true if the other material has the same physical properties
static Int_t fgMaxDaughters
Maximum level in geometry.
void DoRestoreState()
Restore a backed-up state without affecting the cache stack.
Bool_t cd(const char *path="")
Browse the tree of nodes starting from top node according to pathname.
Int_t fRaytraceMode
Flag for multi-threading.
virtual const char * GetName() const
Returns name of object.
Bool_t fUsePWNav
Raytrace mode: 0=normal, 1=pass through, 2=transparent.
TGeoNode * FindNextBoundary(Double_t stepmax=TGeoShape::Big(), const char *path="", Bool_t frombdr=kFALSE)
Find distance to next boundary and store it in fStep.
TObjArray * fGDMLMatrices
void InspectState() const
Inspects path and all flags for the current state.
Bool_t fMatrixTransform
flag that the list of physical nodes has to be drawn
void SetField(TObject *field)
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.
TGeoVolume * MakeCone(const char *name, TGeoMedium *medium, Double_t dz, Double_t rmin1, Double_t rmax1, Double_t rmin2, Double_t rmax2)
Make in one step a volume pointing to a cone shape with given medium.
double dist(Rotation3D const &r1, Rotation3D const &r2)
virtual void DefaultAngles()=0
Int_t AddMaterial(const TGeoMaterial *material)
Add a material to the list. Returns index of the material in list.
TGeoVolume * MakeArb8(const char *name, TGeoMedium *medium, Double_t dz, Double_t *vertices=0)
Make an TGeoArb8 volume.
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
static Int_t GetMaxLevels()
Return maximum number of levels used in the geometry.
void CdUp()
Go one level up in geometry.
Int_t AddRegion(TGeoRegion *region)
Add a new region of volumes.
void SetVisDensity(Double_t dens=0.01)
Set density threshold.
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
static Int_t GetNumThreads()
Returns number of threads that were set to use geometry.
TGeoNode * SearchNode(Bool_t downwards=kFALSE, const TGeoNode *skipnode=0)
Returns the deepest node containing fPoint, which must be set a priori.
void CheckGeometryFull(Int_t ntracks=1000000, Double_t vx=0., Double_t vy=0., Double_t vz=0., Option_t *option="ob")
Geometry checking.
void Voxelize(Option_t *option=0)
Voxelize all non-divided volumes.
TGeoSkinSurface * GetSkinSurface(const char *name) const
Get skin surface with a given name;.
virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="")=0
virtual Int_t CountVisibleNodes()=0
Base abstract class for all shapes.
void ClearNavigators()
Clear all navigators.
void CdTop()
Make top level node the current node.
void RegisterMatrix(const TGeoMatrix *matrix)
Register a matrix to the list of matrices.
void SetMaxThreads(Int_t nthreads)
Set maximum number of threads for navigation.
virtual void ClearThreadData() const
R__EXTERN TStyle * gStyle
TGeoPNEntry * SetAlignableEntry(const char *unique_name, const char *path, Int_t uid=-1)
Creates an alignable object with unique name corresponding to a path and adds it to the list of align...
void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)
Test for shape navigation methods.
virtual const char * GetClassName() const
static Bool_t fgLockNavigators
Number of registered threads.
Matrix class used for computing global transformations Should NOT be used for node definition.
void SetMatrix(const TGeoMatrix *matrix)
Matrix setter.
Base class for chemical elements.
TGeoVolume * MakeEltu(const char *name, TGeoMedium *medium, Double_t a, Double_t b, Double_t dz)
Make in one step a volume pointing to a tube shape with given medium.
TGeoVolume * MakeTrd2(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy1, Double_t dy2, Double_t dz)
Make in one step a volume pointing to a TGeoTrd2 shape with given medium.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
Bool_t SetCurrentNavigator(Int_t index)
Switch to another existing navigator for the calling thread.
void SetVisOption(Int_t option=0)
set drawing mode :
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
void CheckOverlaps(Double_t ovlp=0.1, Option_t *option="")
Check overlaps bigger than OVLP hierarchically, starting with this node.
void ClearAttributes()
Reset all attributes to default ones.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void ComputeBBox()=0
TGeoVolume * GetVolume(const char *name) const
Search for a named volume. All trailing blanks stripped.
void DefaultAngles()
Set default angles for a given view.
TObject * FindObject(const char *name) const
Find object using its name.
void ResetState()
Reset current state flags.
Bool_t IsReflection() const
virtual Bool_t cd(const char *path="")
Browse the tree of nodes starting from fTopNode according to pathname.
void RefreshPhysicalNodes()
Refresh the node pointers and re-voxelize.
Int_t GetEntriesFast() const
virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py)
Execute mouse actions on this manager.
virtual Double_t GetZ() const
virtual void EditGeometry(Option_t *option="")=0
void CdNext()
Do a cd to the node found next by FindNextBoundary.
The TNamed class is the base class for all named ROOT classes.
virtual void SetVisOption(Int_t option=0)=0
void GetBranchOnlys(Int_t *isonly) const
Fill node copy numbers of current branch into an array.
void SetVisTouched(Bool_t vis=kTRUE)
Mark visualization attributes as "modified".
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
TGeoNode * FindNextBoundary(Double_t stepmax=TGeoShape::Big(), const char *path="", Bool_t frombdr=kFALSE)
Find distance to next boundary and store it in fStep.
void ClearPhysicalNodes(Bool_t mustdelete=kFALSE)
Clear the current list of physical nodes, so that we can start over with a new list.
void SetVisibility(TObject *obj, Bool_t vis)
Set visibility for a volume.
void AddLast(TObject *obj)
Add object at the end of the list.
void SetNmeshPoints(Int_t npoints=1000)
Set the number of points to be generated on the shape outline when checking for overlaps.
TGeoPNEntry * GetAlignableEntry(const char *name) const
Retrieves an existing alignable object.
TGeoNode * CrossBoundaryAndLocate(Bool_t downwards, TGeoNode *skipnode)
Cross next boundary and locate within current node The current point must be on the boundary of fCurr...
TGeoVolume * fPaintVolume
TGeoNode * fTopNode
top level volume in geometry
void RegisterMatrix(TGeoMatrix *matrix)
Register a matrix to the list of matrices.
void OptimizeVoxels(const char *filename="tgeovox.C")
Optimize voxelization type for all volumes. Save best choice in a macro.
void UnmarkSaved()
Reset SavePrimitive bits.
void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="")
Classify a given point. See TGeoChecker::CheckPoint().
virtual void SetClippingShape(TGeoShape *shape)=0
void Test(Int_t npoints=1000000, Option_t *option="")
Check time of finding "Where am I" for n points.
Int_t CountNodes(Int_t nlevels=1000, Int_t option=0)
Count total number of subnodes starting from this volume, nlevels down.
TGeoVolume * MakeEltu(const char *name, TGeoMedium *medium, Double_t a, Double_t b, Double_t dz)
Make in one step a volume pointing to a tube shape with given medium.
The knowledge of the path to the objects that need to be misaligned is essential since there is no ot...
static void SetDefaultUnits(EDefaultUnits new_value)
A node containing local transformation.
virtual TVirtualGeoTrack * AddTrack(Int_t id, Int_t pdgcode, TObject *particle)=0
Int_t AddMaterial(TGeoMaterial *material)
Add a material to the list. Returns index of the material in list.
TVirtualGeoTrack * GetTrack(Int_t index)
TGeoVolume * MakeSphere(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t themin=0, Double_t themax=180, Double_t phimin=0, Double_t phimax=360)
Make in one step a volume pointing to a sphere shape with given medium.
Bool_t IsSamePoint(Double_t x, Double_t y, Double_t z) const
Check if a new point with given coordinates is the same as the last located one.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
Int_t AddTransformation(TGeoMatrix *matrix)
Add a matrix to the list. Returns index of the matrix in list.
Bool_t fPhiCut
flag to notify that the manager is being destructed
void SortNodes()
sort nodes by decreasing volume of the bounding box.
void ModifiedPad() const
Send "Modified" signal to painter.
void SetBombFactors(Double_t bombx=1.3, Double_t bomby=1.3, Double_t bombz=1.3, Double_t bombr=1.3)
Set factors that will "bomb" all translations in cartesian and cylindrical coordinates.
static Bool_t gGeometryLocked
virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)=0
virtual void BombTranslation(const Double_t *tr, Double_t *bombtr)=0
void SetVisBranch()
Set branch type visibility.
static Bool_t fgLock
mutex for navigator booking in MT mode
virtual void GrabFocus(Int_t nfr=0, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0)=0
void SetOverlapping(Bool_t flag=kTRUE)
TGeoVolume * MakeHype(const char *name, TGeoMedium *medium, Double_t rin, Double_t stin, Double_t rout, Double_t stout, Double_t dz)
Make in one step a volume pointing to a tube shape with given medium.
static TGeoVolumeAssembly * MakeAssemblyFromVolume(TGeoVolume *vol)
Make a clone of volume VOL but which is an assembly.
TVirtualGeoTrack * fCurrentTrack
TGeoMaterial * Material(const char *name, Double_t a, Double_t z, Double_t dens, Int_t uid, Double_t radlen=0, Double_t intlen=0)
Create material with given A, Z and density, having an unique id.
TGeoHMatrix * GetHMatrix()
Return stored current matrix (global matrix of the next touched node).
TGeoVolume * MakeTorus(const char *name, TGeoMedium *medium, Double_t r, Double_t rmin, Double_t rmax, Double_t phi1=0, Double_t dphi=360)
Make in one step a volume pointing to a torus shape with given medium.
void SetNeedRebuild(Bool_t flag=kTRUE)
TGeoVolumeMulti * MakeVolumeMulti(const char *name, TGeoMedium *medium)
Make a TGeoVolumeMulti handling a list of volumes.
Bool_t fActivity
flag for GL reflections
void SetTransparency(Char_t transparency=0)
TGeoNode * FindNextDaughterBoundary(Double_t *point, Double_t *dir, Int_t &idaughter, Bool_t compmatrix=kFALSE)
Computes as fStep the distance to next daughter of the current volume.
TGeoVolume * MakeTubs(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2)
Make in one step a volume pointing to a tube segment shape with given medium.
virtual Bool_t IsAssembly() const
Returns true if the volume is an assembly or a scaled assembly.
void SelectTrackingMedia()
Define different tracking media.
void SetUsed(Bool_t flag=kTRUE)
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void UnbombTranslation(const Double_t *tr, Double_t *bombtr)=0
void ResetState()
Reset current state flags.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
TGeoMaterial * GetMaterial(const char *matname) const
Search for a named material. All trailing blanks stripped.
void FindOverlaps() const
loop all nodes marked as overlaps and find overlapping brothers
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
TGeoParallelWorld * fParallelWorld
virtual void PrintOverlaps() const =0
virtual void Edit(Option_t *option="")
Append a pad for this geometry.
void SaveAttributes(std::ostream &out)
save attributes for this node
static void CreateDummyMedium()
Create a dummy medium.
Int_t fSizePNEId
array of physical node entries
TGeoVolume * fMasterVolume
top physical node
This class is used in the process of reading and writing the GDML "matrix" tag.
void SaveAttributes(const char *filename="tgeoatt.C")
Save current attributes in a macro.
void SetVisibility(Bool_t vis=kTRUE)
Set visibility of the node (obsolete).
TGeoVolume * MakeSphere(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t themin=0, Double_t themax=180, Double_t phimin=0, Double_t phimax=360)
Make in one step a volume pointing to a sphere shape with given medium.
Bool_t IsRunTimeShape() const
TObjArray * fBorderSurfaces
void RandomRays(Int_t nrays=1000, Double_t startx=0, Double_t starty=0, Double_t startz=0, const char *target_vol=0, Bool_t check_norm=kFALSE)
Randomly shoot nrays and plot intersections with surfaces for current top node.
Long64_t BinarySearch(Long64_t n, const T *array, T value)
void Matrix(Int_t index, Double_t theta1, Double_t phi1, Double_t theta2, Double_t phi2, Double_t theta3, Double_t phi3)
Create rotation matrix named 'mat<index>'.
Double_t Safety(Bool_t inside=kFALSE)
Compute safe distance from the current point.
static UInt_t fgExportPrecision
Maximum number of Xtru vertices.
void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
TObjArray * fSkinSurfaces
Bool_t CloseGeometry()
The main geometry must be closed.
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Bool_t CheckPath(const char *path) const
Check if a geometry path is valid without changing the state of the navigator.
virtual TGeoNode * SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path)=0
virtual TObject * ReadObj()
To read a TObject* from the file.
Sequenceable collection abstract base class.
void CdDown(Int_t index)
Make a daughter of current node current.
void PrintOverlaps() const
Prints the current list of overlaps.