Log of /trunk/geom/geom/inc/TGeoVolume.h
Parent Directory
Revision
47228 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Nov 13 17:09:38 2012 UTC (2 years, 2 months ago) by
agheata
File length: 17117 byte(s)
Diff to
previous 44557
Added possibility to prevent known overlaps produced by misalignment by assignig priority to one of the candidates. This is not using the error prone AddNodeOverlap method, but composite shapes. One has to create the unprioritized shape as the subtraction of the original one and the shape of the node to prioritize, then position this composite shape colume with identity matrix. The prioritized volume should be added as node using the same local matrix as the one used in the subtraction operation. The matrix itself has to be declared shared via SetShared() method. Added few parameters to the RandomRays method.
Revision
44507 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 4 12:30:41 2012 UTC (2 years, 7 months ago) by
axel
File length: 17126 byte(s)
Diff to
previous 42999
Remove
using namespace std;
from Riostream.h, which has huge consequences for all of ROOT.
Riostream.h is now a simple wrapper for fstream, iostream, iomanip for backward compatibility; Riosfwd.h simply wraps iosfwd.
Because of templates and their inline functions, Riostream.h needed to be included in headers, too (e.g. TParameter.h), which violated the assumption that Riostream.h is not exposing its using namespace std to headers.
ROOT now requires R__ANSISTREAM, R__SSTREAM, which does not change the set of supported compilers.
Without "using namespace std", several identifiers are now prefixed by std::; e.g. roofit/* source files now have a using namespace std to keep their coding style.
TFile::MakeProject() now generates "using namespace std" to convert the CINT-style class names into C++ ones.
Revision
42999 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Feb 14 13:42:55 2012 UTC (2 years, 11 months ago) by
agheata
File length: 17121 byte(s)
Diff to
previous 41234
Thread data is now pre-allocated when calling gGeoManager->SetMaxThreads(). This adds ~20MB for ALICE geometry per 100 threads, but avoids atomic allocations and thread locking. All run-time geometry locks removed. Thread id stored now using static thread__ allocator, faster and lock free for subsequent calls issued by the same thread.
Revision
39018 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Apr 25 09:38:31 2011 UTC (3 years, 9 months ago) by
agheata
File length: 16718 byte(s)
Diff to
previous 33670
New generic method to check shape navigation methods TGeoShape::CheckShape that can run a given test number from a test suite. Currently a single test implemented (see desctiption in TGeoShape::CheckShape). Fixed TGeoArb8::DistToPlane with respect to boundary crossing. Added possibility to divide assemblies according a pattern (still under development). This is the first step in being able to gave generic divided-like volumes without being forced to have a container shape - particularly useful in describing calorimeters.
Revision
33670 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon May 31 14:45:23 2010 UTC (4 years, 7 months ago) by
agheata
File length: 16517 byte(s)
Diff to
previous 27731
Fixed support for divisions in the GDML parser. Basically everything was wrong, including the number of divisions parameter.
Revision
27731 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 9 17:40:56 2009 UTC (5 years, 10 months ago) by
brun
File length: 16457 byte(s)
Diff to
previous 22923
From Andrei:
- Removed casting away constness in headers, and removed == and != between doubles in all geom code (Philippe's suggestion)
- Info messages suppressed now by the static TGeoManager::SetVerboseLevel(0). We should probably call this at the beginning of stressGeometry.cxx
- Fine tune in TGeoIntersection::DistFromInside() that solves inner boundary crossings in case the starting point is very close to boundary
- TGeoManager::FindInCluster() gives now priority (when selecting between MANY candidates) to the node that was proposed by FindNextBoundary()
Revision
17063 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Dec 6 15:09:11 2006 UTC (8 years, 1 month ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 15997 byte(s)
Diff to
previous 16680
From Andrei:
a patch that implements the method:
TGeoNode *TGeoVolume::ReplaceNode(TGeoNode *nodeorig,
TGeoShape *newshape=0,
TGeoMatrix *newpos=0,
TGeoMedium *newmed=0)
The method allows replacing an existing daughter of a volume with another one. Providing only the node to be replaced will just create a new volume for the node but having exactly the same parameters as the old one. This helps in case of divisions for decoupling a node from the logical hierarchy so getting new content/properties.
For non divided volumes, one can change the shape and/or the position of the daughter.
Revision
16680 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Nov 3 21:22:32 2006 UTC (8 years, 2 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 15878 byte(s)
Diff to
previous 16589
From Andrei:
1. Possibility to export/import TGeoVolume objects in a similar way as we
can do it for TGeoManager class. Note that for the moment only the .root and
.C formats are supported (for .gdml I don't know how to do it). One can now
import several volumes from file(s) and connect them to the same TGeoManager
object:
Exporting is straightforward:
module1->Export("file.root"); // by default file is overwritten
module2->Export("file.root","","update"); // to the same file
Importing will append the volume to the current TGeoManager or will create
one:
TGeoManager *geom = new TGeoManager("myGeom", "");
TGeoVolume *top = geom->MakeBox(...);
geom->SetTopVolume(top);
TGeoVolume *module1 = TGeoVolume::Import("file.root", "MOD1"); //
name of volume or key (depending on export usage)
TGeoVolume *module2 = TGeoVolume::Import("file.root", "MOD2");
top->AddNode(module1, 1, new TGeoTranslation(0,0,100));
top->AddNode(module2, 1, new TGeoTranslation(0,0,-100));
geom->CloseGeometry(); // One should close himself the geometry
2. Fix in the overlap checker and functionality extension:
TGeoVolume::CheckOverlaps(Double_t ovlp, Option_t *option)
uses now option="d" or option="d<number>" to perform overlap checking by
sampling the volume with <number> random points (default 1 mil.). It
produces also a picture showing in red the overlapping region and estimates
the volume of the overlaps.
3. TGeoMaterial class takes now as optional arguments the material state,
temperature and pressure for compatibility with GEANT4
4. Few modifications of some navigation flags needed to run correctly G4
navigation interface.
Revision
16573 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Oct 20 08:38:43 2006 UTC (8 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 15615 byte(s)
Diff to
previous 16555
From Andrei:
a big chunk of modifications that mainly allow converting a geometry
containing reflection matrices into a reflection-free one.
This is done via a mechanism implemented in TGeoManager/TGeoVolume/TGeoScaledShape
classes which can be invoked using:
TGeoManager::ConvertReflections() method once the geometry is closed.
This is required for normal GEANT4 operation and is to be used only
in G4 navigation context.
Besides that, I made some changes which allow now controlling visibility
of nodes/volumes directly from the TBrowser (check-boxes).
This was not really working before.
Revision
15672 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jul 3 16:10:46 2006 UTC (8 years, 6 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 15560 byte(s)
Diff to
previous 15134
from Axel:
Change the signature of SavePrimitive from
void SavePrimitive(ofstream &out, Option_t *option);
to
void SavePrimitive(ostream &out, Option_t *option = "");
With this change one can do, eg
myhist.SavePrimitive(std::cout);
WARNING: do rm -f tree/src/*.o
Revision
15134 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue May 23 04:47:42 2006 UTC (8 years, 8 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 15564 byte(s)
Diff to
previous 14409
From Federico Carminati:
"I have implemented all copy and equal operators needed to silence all
warnings in AliRoot, as requested. I have implemented shallow copies as
would do the default operators synthetized by the compiler.
Most operators are protected. If users complain, you just have to move
them into the public area, but class derivation is of course supported.
It has been a terrible job, I have modified 278 files, but the changes
are backward compabile, and this goes a long way to permitting user to
use the effc++ flag with root headers."
Revision
14409 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Mar 24 15:11:23 2006 UTC (8 years, 10 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 15362 byte(s)
Diff to
previous 14240
From Andrei:
a big chunk of modifications. The class most affected is TGeoPainter, but
also some external methods (e.g.in TGeoVolume).
Currently all internal loops are working with TGeoIterator. The main advantages are
that: the painter does not need to change the top volume for TGeoManager and the loops
are not longer recursive. This makes painting a process that does not affect any more
(almost) the manager class. It makes possible having parallel views of different parts
of a geometry (or different geometries)
There are also few new features:
- visualisation options can be set at the level of volumes and there are new methods
accessible from the context menu of TGeoVolume:
SetVisContainers: draw all containers
SetVisLeaves : draw only leaves
SetVisOnly : draw only this volume
These options are operational only for the current drawn volume, which is accesible
even from the pad when approaching the right edge with the mouse. The manager class
can also be accessed from the pad approaching the top right corner.
Revision
13960 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jan 31 14:02:36 2006 UTC (8 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 14479 byte(s)
Diff to
previous 13864
From Andrei:
1. TGeoManager::SetNodeSelectable(flag); - allows user to make nodes selected in the
pad rather that volumes(default)
2. TGeoManager::ReplaceVolume(TGeoVolume *vorig, TGeoVolume *vnew); - allows
replacement of all occurances of VORIG with VNEW in the geometry tree. VORIG is not
removed from the list of volumes, but all nodes referencing it as their volume or
mother will reference instead VNEW.
3. static TGeoVolumeAssembly::MakeAssemblyFromVolume(TGeoVolume *vorig); - creates a
sort of clone of a normal volume (same daughters inside), but this will be an
assembly. This method can be used togeather with ReplaceVolume() to change some
virtual conainers in a closed geometry with assemblies.
4. TGeoVolume::RemoveNode(TGeoNode *node) - will safely remove a daughter node of a
volume, even if the geometry is closed. Geometry is valid for navigation afterwards.
Revision
13864 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Jan 19 11:23:08 2006 UTC (9 years ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 14241 byte(s)
Diff to
previous 13730
From Andrei:
- new TGeoNode::CheckOverlaps() allows checking overlaps for a whole geometry branch.
- fix in the paint mechanism when raytracing for a problem mentioned by Ivana (when
raytracing a volume without having a pad created it did not work)
Revision
13373 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 28 12:55:35 2005 UTC (9 years, 1 month ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 13986 byte(s)
Diff to
previous 13282
From Andrei:
some optimizations for creating physical nodes:
- re-voxelization no more done afer each Align() call - instead a signal is sent to
the existing voxels; the first navigation query to this voxel will rebuild it.
- volumes are aware if they were positioned more than once (replicated). If this is
not the case the volume is not cloned anymore for alignment.
Revision
13271 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Nov 17 13:17:55 2005 UTC (9 years, 2 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 13615 byte(s)
Diff to
previous 12025
From Andrei & Mihaela:
a diff containing the implementation of TGeoShape::Capacity. There are also
few other fixes (see below):
Mihaela:
New method:
Double_t TGeoShape::Capacity() const;
implemented for all supported shapes. The algorithms provide analytical computation of
shape capacity in [cm^3]. All algorithms are accurate with 2 exceptions:
- TGeoCtub : the formula is just an approximation due to the difficulties to integrate
over the phi angle in the general case.
- TGeoCompositeShape: the computation of the capacity is done by sampling, with an
accuracy of 1%.
Based on this method I extended the implementation of TGeoVolume::Weight(Double_t
precision, Option_t *option). The default value of option is now "va" meaning: verbose
+ analytical. Removing "a" from the default option performs computation of volume
weight using the old algorithm of sampling. I have checked the 2 ways of computing the
weight one against the other and they are consistent.
Andrei:
- fixed a memory leak related to TGeoShapeAssembly ownership
- fixed some tracking problems for assemblies (when the top volume was an assembly)
Revision
12025 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 13 12:17:32 2005 UTC (9 years, 7 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 13544 byte(s)
Diff to
previous 11664
From Andrei Gheata:
New developments related to assemblies. Assemblies were up to now just
a collection of nodes that could be handled together only during build
time(TGeoVolumeAssembly class).
When positioning an assembly as node in some container volume,
what happened was just that all components of the assembly were directly
put into this container (with the big disadvantage of creating a very
flat structure at the level ofthis container).
With the new implementation, an assembly volume has a shape
(TGeoShapeAssembly) that derives from TGeoShape and implements all
required navigation functionality. Practically, this behaves as the
union of all shapes positioned in the assembly, but it is not
represented as a composite shape and uses voxelization.
An assembly volume creates an hierarchical level and it geometrically
insulates the structure from the rest (as a normal volume). Physically,
a point that is INSIDE a TGeoShapeAssembly is always inside one of
the components, so a TGeoVolumeAssembly does not have a medium. Due to
the self containment of assemblies, they are very practical to use when
a container is hard to define due to possible overlaps during positioning.
For instance, it is very easy now to create honeycomb structures without
using the "MANY" (overlapping) feature that is quite expensive in
performance.
To create an assembly volume, one should:
TGeoVolume *vol = new TGeoVolumeAssembly(name);
vol->AddNode(vol1, 1, ...)
vol->AddNode(vol2, 1, ...)
....
The creation of the TGeoShapeAssembly for the assembly volume is
completely transparent to users. Its bounding box is recomputed after
the addition of a node. Users do not have to create TGeoShapeAssembly
themselves. One can even replace a container in his existing code
(if this needed to be positioned as overlapping) with an assembly, by
just replacing:
TGeoVolume *container = new TGeoVolume(name, shape, medium);
with:
TGeoVolume *container = new TGeoVolumeAssembly(name);
then replace:
some_mother_vol->AddNodeOverlap(container,1,...)
with:
some_mother_vol->AddNode(container,1,...)
One cam define assembly(assembly(assembly(...))) Usage of assemblies
does NOT imply any penalty in navigation performance in itself.
Assemblies can also be used to regroup existing flat structures of
nodes thus highly optimizing the performance.
Revision
11664 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Apr 25 07:53:27 2005 UTC (9 years, 9 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12539 byte(s)
Diff to
previous 11076
Implement changes in the TGeoPainter and TGeoChecker such that one
can draw geometries from several TGeoManagers.
The following mods have been made:
-new data member fGeoManager in TGeoVolume.
When a volume is created fGeoManager is set to the current gGeoManager.
When a volume is drawn, a TGeoPainter object is created in its own fGeoManager.
- new function TGeoVolume::GetGeoManager() const
-The TVirtualGeoPainter and TGeoPainter have now a constructor with:
TVirtualGeoPainter(TGeoManager *manager)
TGeoPainter(TGeoManager *manager)
-The TGeoManager::GetGeoPainter is now calling directly the plugin manager
to create a TGeoPainter if necessary.
-In TGeoVolume, all occurences of gGeoManager replaced by fGeoManager.
-In TGeoChecker and TGeoPainter, the existing member fGeom has been
renamed fGeoManager and all occurences of gGeoManager replaced by fGeoManager.
-In TGeoOverlap all occurences of gGeoManager are creplaced by
fVolume->GetGeoManager.
-In rootrc.in mod for calling TGeoPainter with the new argument TGeoManager*.
Revision
11076 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Feb 9 13:30:27 2005 UTC (9 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12372 byte(s)
Diff to
previous 11028
From Mihaela Gheata;
- divisions supporting SavePrimitive
- main SavePrimitive loop implemented at level of TGeoVolume
- user interface: TGeoVolume::SaveAs(const char *filename); having *MENU*
- can be called from the browser for any volume:
the resulting file will have a geometry starting with the selected
volume as TOP.
- should work with TPad::SavePrimitive(ofstream out, Option_t *option)
- not tested however
From Andrei:
I did some changes in TGeoCombiTrans to support a shared rotation matrix.
I also fixed a bug in TGeoTube::GetMakeRuntimeShape (and tube segment)
that produced wrong shapes in case one of the initial parameters was negative.
Revision
11028 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Feb 3 11:40:39 2005 UTC (9 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12268 byte(s)
Diff to
previous 10621
From Andrei Gheata:
The diffs for the changes from Mihaela. They implement the SavePrimitive method for:
- all shapes
- materials, mixtures and media
- matrices
- TGeoVolume - just a first version
What is missing:
Divisions + manager metod to save:
- all geometry
- just the branch corresponding to one volume
The differences compared to g2root are that:
- when saving just a a branch just materials/media/matrices for that branch are created (module encapsulation)
- instead of creating objects with numerical arguments, the coresponding variables are defined and used.
e.g. instead of :
new TGeoBBox("name", 10.,20.,30); the generated code is:
dx = 10.;
dy = 20.;
dz = 30.;
pShape = new TGeoBBox("name", dx,dy,dz);
The diffs contain also 2 shapes with boundary-safe algorithms: TGeoPara and TGeoTrap
Revision
10621 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Nov 25 12:10:01 2004 UTC (10 years, 2 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12163 byte(s)
Diff to
previous 10342
From Andrei and Mihaela Gheata:
New shape TGeoHype from Mihaela.
This patch contains all modifications in TGeo, additions in
g2root to adjust format of MakeHype(...) and a fix in TBuffer3D.cxx
(Paint("SAME")). Also Mihaela modified geodemo.C
The modifications (made by Timur probably) TGeoTube::Paint() for making
GL-like tubes are wrong so I temporary disabled them. The global matrix
filled to GL is wrongly retreived (+ it may come from other sources in
case of overlap drawing).
Revision
10342 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Oct 18 15:28:24 2004 UTC (10 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12240 byte(s)
Diff to
previous 10313
From Andrei Gheata:
- new TGeoManager::SetVisDensity() to set treshold for invisible volumes
by density. By default is 0, meaning the feature is disabled (one sees
everything)
- additional cleanup in TGeoPainter. 3D viewing is now possible in
parallel with raytracing.
- minor fixes in automatic visible depth computation
Revision
10313 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Oct 15 15:30:50 2004 UTC (10 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12277 byte(s)
Diff to
previous 9933
From Andrei Gheata;
- cleanup of all obsolete methods related to the old 3D visualization in
TGeoPainter
- fix in color settings for TGeoPhysicalNode - minor, but touches most
shape.cxx files
- improved visible node counting - it is now automatic and verbose. By
default the visible depth is automatized for 10000 nodes (as before) but
calling gGeoManager->SetVisLevel(n) disables this and switches to old
style. It can be turned on to automatic state by calling
gGeoManager->SetMaxVisNodes(n) (which also updates the current view).
Limitation : nodes are not recount after setting volumes or branches
invisible unless a new Draw() is called.
Revision
8565 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Apr 13 07:04:42 2004 UTC (10 years, 9 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 12031 byte(s)
Diff to
previous 7929
From Andrei Gheata:
- All shapes.cxx - added shape name in InspectShape() + some corrections
in error messages (Bjorn requirement)
- TGeoAtt.cxx - activity flag added (not yet taken into account by tracking)
- TGeoMaterial/Medium - added Cerenkov properties by Andreas (for FLUKA)
- TGeoVolume.h, TGeoManager.k - added *TOGGLE* 's
- TGeoPhysicalNode - possibility to align a physical node. One can
define a physical node according a path, then change its local
transformation matrix OR shape - the corresponding branch is decoupled
from the logical tree and a new trackable branch is created. A
post-alignment check for overlaps can be perfomed for the aligned node.
Revision
7451 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Oct 20 08:46:33 2003 UTC (11 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 11505 byte(s)
Diff to
previous 7064
From Andrei Gheata:
- fix in pcon and pgon safety for points exactly on boundaries
- new class TGeoVolumeAssembly inheriting from TGeoVolume and
representing an assembly of volumes. This helps grouping togeather a set
of nodes (using the usual TGeoVolumeAssembly::AddNode()) without the
definition of a container. When positioning an assembly in other volume,
this will just position its own nodes inside this, without being
integrated to the logical hierarchy. The class is not well documented,
but a detailed description will go to the users guide.
Revision
7064 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Aug 8 09:22:18 2003 UTC (11 years, 5 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10961 byte(s)
Diff to
previous 6725
From Andrei Gheata:
Fix to a problem reported by Ilektra Christidi.
The problem was that this calorimeter has 1.3E9 nodes and I did not
imagined that this can happen in real life. The cache produced a crash
since it tried to create an array 2 times this size. Now there is a
protection that will just disable physical node id tracking during
CDUp/Down in case there are too many nodes. I had also to introduce a
new data member in TGeoVolume (I increased the class version) in order
to fasten-up node counting (all the physical tree was parsed before).
Revision
6725 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jun 17 09:13:56 2003 UTC (11 years, 7 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10789 byte(s)
Diff to
previous 6563
New version of the geometry package from Andrei/Mihaela
TGeoArb8 - pictures added
TGeoBBox - doc, pictures
TGeoCache - id array for physical nodes
TGeoCompositeShape - doc added
TGeoCone - pictures, bug fiz in Z divisions, correction in 'safety'
TGeoEltu - pict. added
TGeoManager - registration of matrices, unique volume id's
TGeoMatrix - copy ctors., = and * operators, improvements, extensive doc.
TGeoNode - doc added
TGeoPara - pictures
TGeoPatternFinder - registration of pattern matrices
TGeoPcon - fix in Z divisions, fix in 'safety', pictures
TGeoPgon - same as Pcon
TGeoShape - doc added
TGeoSphere, Trd1,2, Tube - pictures added
TGeoVolume - doc updated
TGeoChecker - doc., improvement of extrusions checker by Mihaela
TGeoPainter - does not create polygons array in X3dBuffers when drawing
in pad
TGeoTrack - compilation warnings fixed
Revision
6563 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed May 7 13:32:39 2003 UTC (11 years, 8 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10698 byte(s)
Diff to
previous 6304
New version of the geometry package from Andrei:
4 new files:
geom/inc/TVirtualGeoTrack.h
geom/src/TVirtualGeoTrack.cxx
geompainter/inc/TGeoTrack.h
geompainter/src/TGeoTrack.cxx
This new version adds support for track visualization. Adding tracks is a user task
and can be done using :
TGeoManager::AddTrack() for primary tracks. The manager class knows
about the current primary and provides utility methods to
retreive/change this. Users has to handle only TVirtualGeoTracks.
Secondaries can be added to their primary :
TVirtualGeoTrack::AddDaughter()
Points (x,y,z,tof) can be associated with a track :
TVirtualGeoTrack::AddPoint()
Providing tracks to the modeller and adding points are users tasks.
Track names should be supplied by users after creation :
TVirtualGeoTrack::SetName() - note that tracks are not tnamed
objects, but their names are globally handled by the TGeoManager. The
usage of ROOT default particle names are recommended for tracks since it
triggers special colors/line attributes.
Tracks are drawable/pickable objects. Drawing options are :
- default - only current track drawn
- /D - track and first level daughters
- /* - track and all descendents
- /N<name> - only tracks from particles with given <name>
If points with time of flight are supplied, the drawing range tmin,tmax
can be specified :
TGeoManager::SetTminTmax() (if no arguments time cut is supressed)
Tracks can be animated individually or global :
TVirtualGeoTrack::AnimateTrack(tmin,tmax,nframes,option)
TGeoManager::AnimateTrack(tmin,tmax,nframes,option)
Animation otions are :
/G - animate also geometry in the given time interval
/S - save all frames as .gif files
drawing options act as well in animation. Options can be concatenated
and should be upper case (due to /N<name>)
If tracks are defined, the geometry I/O takes them into account.
However, when loading a geometry file containing tracks, libGeomPainter
has to be loaded since it contains the class implementation definition :
gSystem->Load("libGeom")
gSystem->Load("libGeomPainter")
TGeoManager::Import("mygeom.root")
Revision
6136 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Feb 17 11:57:31 2003 UTC (11 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10545 byte(s)
Diff to
previous 6083
m andrei;
TGeoManager :
- added TGeoManager::Safety() that computes the global safety for the
current point. This is just the first implementation, since it does not
use yet voxelization. This will be needed for the VMC because for the
time being safety is computed just for the crossed volumes along the
current direction plus the current volume, which of course is not enough
- finding the closest neighbour for a given point has to use a different
algorithm.
- added weight estimation for the top volume
TGeoMaterial :
- material index in the list of materials added as data member (as for
volumes) - I needed this for weight computation, but it will be helpfull
for any other analysis based on material indexing.
TGeoVolume :
- weight estimation method in the context menu of volumes : can be
verbose (default) or not and takes as argument the desired precision.
Prints error (1 x SIGMA)
TGeoChecker:
- implementation of weight estimation based on sampling random points
in the bounding box of a volume. Materials with rho<0.01 g/cm3 (mostly
gases) ignored due to the fact that we generally do not want to weight
the air in the top volume container (it can have quite significant mass)
other modified classes just provide redirection of Weight() method to
the geopainter package.
Revision
6083 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Feb 10 17:23:14 2003 UTC (11 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10461 byte(s)
Diff to
previous 6068
From Andrei:
- new files TGeoOverlap.h/cxx in geompainter directory. Contains one
base class and 2 derived, describing overlaps. The CheckOverlaps()
methods in TGeoManager and TGeoVolume fills a list of these objects
which is held by TGeoManager class and appears in the browser as
"Illegal overlaps". The elements in this list are ordered according the
overlapping distance, big comes first and extrusions before node
overlaps. Double-clicking triggers drawing. Points in the
overlapping/extruding region are paint in red, while the 2 candidates in
bleu/green. The list of overlaps is dynamic and changes whenever a check
is done per volume.
- volumes with invalid shapes post a warning (see ATLAS)
Revision
6068 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Feb 7 13:46:48 2003 UTC (11 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10603 byte(s)
Diff to
previous 5994
New version from Andrei and Mihaela:
- several implementations of method Safety for shapes
- few bug fixes in safety computation (phi segmented shapes)
- volumes have now an unique ID that you can get with GetNumber()
- Mihaela implemented an overlap checker that can be called either for
all geometry :
TGeoManager::CheckOverlaps(Double_t ovlp=0.1) or just for a given
volume. OVLP is the lower overlapping limit. The checker looks for the
following errors in the geometry definition :
1 - nodes extruding their mother - can be visualised with
TGeoManager::DrawExtrusion(char *mother, char *node) which draws mother
in blue and extruding daughter in red
2 - ONLY brothers overlapping to each other - can be visualized with
TGeoManager::DrawOverlap(char *volume, char *node1, char *node2) - node1
will appear in red and node2 in blue.
These methods can be called only after CheckOverlaps() that prints the
list of overlaps. They are all in the context menu of both TGeoVolume
and TGeoManager.
Revision
5994 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jan 27 18:04:47 2003 UTC (11 years, 11 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10294 byte(s)
Diff to
previous 5993
add a second argument to TGeoManager::GetBranchNumbers to also return the
volume serial numbers in addition to the volume copy numbers.
Add a new data member fNumber in TGeoVolume. fNumber is the volume
serial number in the list of volumes as returned by AddVolume.
Revision
5972 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Jan 23 14:25:37 2003 UTC (12 years ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10142 byte(s)
Diff to
previous 5918
From Andrei:
- all shape classes : changed the prototype for Safety() method.
Eliminated validity checking in Divide() methods that are now globally
handled by TGeoVolume::Divide(). Added methods
TGeoShape::GetAxisName/Range(Int_t iaxis) which are used by the new
global division mechanism.
- safety for TGeoTrap now computed (pcon, pgon not yet)
- TGeoVolume : eliminated unnecesarry Divide() prototypes. The new
Divide() prototype is backwards compatible (old macros works with it)
but supports an option in order to allow all G3 division types. More
description in TGeoVolume::Divide().
- TGeoManager : Only one prototype for G3-like divisions left,
supporting all G3 options and also being able to assign to the division
volumes a medium different than the one of the divided volume. New
FindNode(x,y,z) implemented. New IsSameLocation(x,y,z) with the same
functionality as GINVOL.
Revision
5883 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Jan 12 14:49:32 2003 UTC (12 years ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10345 byte(s)
Diff to
previous 5850
New version of TGeo classes from Andrei:
-TGeoManager - added G3-like prototypes for building geometry
-TGeoPatternFinder - added parameters of a division (fStart, fStep, fEnd)
-TGeoVolume - fix in TGeoVolumeMulti::AddVolume() to update existing
nodes for all volumes in list
several shapes supporting divisions - using TGeoVolumeMulti for divisions
-TGeoVoxelFinder - fixed dtor
Revision
5798 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Dec 11 17:10:20 2002 UTC (12 years, 1 month ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10165 byte(s)
Diff to
previous 5729
From Andrei:
attached the last version, with bug fixes in tracking. Now you can do
lego plots for everything in alice. It does not do extra steps (except
very seldom in ITS in som very thin tubes - 1 extra step to cross). Much
more stable. I temporarly disabled TGeoVolume::CheckGeometry from the
context menu of volumes since it seems to have a bug that I need to fix.
Much better version in computing distances.
Revision
5621 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Nov 20 08:55:11 2002 UTC (12 years, 2 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10316 byte(s)
Diff to
previous 5443
Following improvements by Andrei Gheata:
1. gpad - containing a modified src/TPad.cxx (notification to TView
class when resizing the pad and having perspective view)
2. base - containing modified TView.h/.cxx
3. geom, geompainter - modifications to geometry classes (perspective
view support + some bug fixes in shape algorithms)
New features :
- First implementation of TGeoChecker::CheckGeometry() by Mihaela : it
can be called from the volume context menu and for the time being just
draws the boundary intersections not matching on the way back and forth
(no histogram generated). Anyway, we discovered by using it that we have
to correct several bugs in the shapes DistToIn/Out algorithms ... :-(
- Perspective view fully implemented. Activated with TView(11) - this is
the default now for the new geometry classes. For all other views
(instantiated usually with TView(1)) one can switch parralel/perspective
from TView context menu.
- Navigation inside geometries based on perspective view : just draw
some geometry, then double-click on volumes in the pad - you will get a
nice grab-focus effect (specially if the number of volumes on screen is
relatively small)
- navigation keys : zoom in/out, move left/right/up/down exactly like in x3d
- resizing of pad and drawing of axes in TView supported - aspect ratio
always kept.
Revision
5443 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Oct 21 15:21:13 2002 UTC (12 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10151 byte(s)
Diff to
previous 5426
Upgrade of the geom classes by Andrei:
- improvements in the drawing mechanism (nodes can also be made
invisible, having higher priority than volumes;
- possibility of simple phi cut in TGeoManager::SetPhiRange(phimin, phimax)
- by default the phi range is (0, 360) - no cut performed
- setting different values for phimin, phimax will make invisible the
nodes having the origin in this range;
- documentation updated for TGeoArb8 class (picture in /gif directory)
Revision
5426 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Oct 13 15:45:24 2002 UTC (12 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 10063 byte(s)
Diff to
previous 5407
From Andrei:
I have made a few corrections related to TGeoManager registration to
the browser and to the TGeoChecker::LegoPlot. Also a small fix in
TGeoPgon class. Change the default number of bins for lego plots.
Revision
5406 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Oct 8 16:17:49 2002 UTC (12 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 9778 byte(s)
Diff to
previous 5354
new version of the geometry package from Andrei:
- bug fix in the destructor of TGeoPatternCylPhi
- several modifications in the default constructors of shapes.
- several corrections and "v" feature added to I/O
- removed base class for finders
Now you can save voxels and retreive them with no problem. You can use :
gGeoManager->Export("filename", "", "v") to do that. The size of files
without/with voxelization are :
Exp no voxels saved voxels saved
ALICE 404227 719703
CMS 550440 1275590
ATLAS 1858198 3335166
Be careful, the files TGeoFinder.h and TGeoFinder.cxx have been removed.
Suggest doing:
rm geom/src/*.o geom/src/G__*
Revision
5354 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Sep 27 16:16:06 2002 UTC (12 years, 3 months ago) by
brun
Original Path:
trunk/geom/inc/TGeoVolume.h
File length: 9778 byte(s)
Diff to
previous 4956
New version of the geometry package by Andrea & Mihaela Gheata
New features:
-I/O for all geometry classes. For example, to save/restore a geometry structure,
TFile f("mygeom.root","recreate");
gGeoManager->Write("mygeom");
and to read it back;
TFile f("mygeom.root");
f.Get("myGeom");
gGeoManager->CloseGeometry();
-Composite shapes fully implemented (no visualisation yet).
A composite shape is built out of basic shapes and transformations via
a simple formula mechanism, eg assuming a TGeoTube "tub1" and a TGeoMatrix "r1",
we can build a composite shape with:
TGeoCompositeShape *comp = new TGeoCompositeShape("comp",formula); where
char* formula="tub1+tub1:r1"
This will create the union of a tube with itself rotated.
The operators recognized by the geometry formula parser are "+","-","*"
for union, subtraction and intersection respectively. The colon ":" can be
used to specify a transformation for a given component.
-The voxelisation in cylindrical coordinates added as an optional optimisation
algorithm.
-Some bug fixes and several improvements in the tracking-related algorithms.
This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
enter a numeric revision.