[root] / trunk / geom / geom / src / TGeoShapeAssembly.cxx Repository:
ViewVC logotype

Log of /trunk/geom/geom/src/TGeoShapeAssembly.cxx

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 48928 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Mar 25 15:45:11 2013 UTC (22 months ago) by agheata
File length: 15582 byte(s)
Diff to previous 44507
Large scale cleanup in shapes navigation interfaces adding const modifier for point and direction parameters passed as input arguments.

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: 15538 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: 15533 byte(s)
Diff to previous 42982
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 42982 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Feb 13 10:21:23 2012 UTC (2 years, 11 months ago) by agheata
File length: 15595 byte(s)
Diff to previous 41341
Added support structure TGeoStateInfo to communicate stateful navigation data internally. Fully removed locking from TGeoManager and TGeoVoxelFinder.

Revision 41341 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Oct 11 14:58:29 2011 UTC (3 years, 3 months ago) by agheata
File length: 15267 byte(s)
Diff to previous 36632
Adding thread id as parameter to methods of TGeoVoxelFinder to avoid passing through the serial TGeoManager::ThreadId. This recovers quite good the scalability with the number of threads

Revision 36632 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 12 15:57:07 2010 UTC (4 years, 2 months ago) by agheata
File length: 15169 byte(s)
Diff to previous 35047
Fixed dynamic computation of assembly bounding boxes during alignment. The bounding box needs to be valid at all times, still does not need to be recomputed if no node is added or misaligned

Revision 35047 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Aug 27 14:38:41 2010 UTC (4 years, 4 months ago) by agheata
File length: 13639 byte(s)
Diff to previous 34892
Bounding box for assemblies is now computed dynamically when needed instead of after every AddNode operation.
The patch reduces the number of calls to TGeoShapeAssembly::ComputeBBox from 4.8 million to 12700 (!) in ALICE and gains 40% speedup in initialization time (~30sec).
Thanks to Matevz for spotting this. Also added Matevz's code for improving access by index to PNEntries.

Revision 34892 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Aug 20 15:11:10 2010 UTC (4 years, 5 months ago) by agheata
File length: 13068 byte(s)
Diff to previous 22923
Fixed uninitialized variable, coverity # 21469

Revision 22923 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Apr 1 12:34:14 2008 UTC (6 years, 9 months ago) by rdm
File length: 13006 byte(s)
Diff to previous 21494
move geom, geombuilder, geompainter and gdml to geom meta directory.

Revision 21494 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 19 15:50:40 2007 UTC (7 years, 1 month ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 13006 byte(s)
Diff to previous 21301
Update to the class docs and index.txt files.

Revision 21301 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Dec 10 16:21:50 2007 UTC (7 years, 1 month ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12977 byte(s)
Diff to previous 20882
From Andrei:
there was an implicit dependency of TGeoMatrix by TGeoManager.h via TGeoNavigator.h->TGeoCache.h + few other bad dependencies like: TGeoMatrix included by TGeoNode.h via TGeoPatternFinder.h  Hmm... I had to cleanup few inlines, introduce a transient matrix in TGeoNavigator (to recover the lost inlining speed) + add several #include "TGeoMatrix.h" allover where this was included and used via TGeoManager.h

Revision 20882 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 19 11:31:26 2007 UTC (7 years, 2 months ago) by rdm
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12953 byte(s)
Diff to previous 19826
Set property svn:eol-style LF on all source and Makefiles. This should avoid
problems with Win32 line endings ending up in the repository. All MS tools
support LF eols fine.

Revision 19826 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:56:11 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12953 byte(s)
Diff to previous 19825
imported svn:keywords Id property

Revision 19825 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:49:10 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 13013 byte(s)
Diff to previous 19650
remove :$ from tag line

Revision 19650 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Aug 20 08:49:08 2007 UTC (7 years, 5 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 13023 byte(s)
Diff to previous 18553
From Andrei:
- TGeoPNEntry class has now an additional pointer to the original matrix, which is set in the class ctor and works provided that all PNEntry objects are created BEFORE applying any alignment. The getter for this original (LOCAL) matrix of the last TGeoNode in the branch is:
   TGeoMatrix *TGeoPNEntry::GetMatrixOrig()

- Modified method:
   TGeoPNEntry * TGeoManager::SetAlignableEntry(const char *unique_name, const char *path, Int_t uid=-1);
 If UID is provided, one can do a (fast) retrieval by UID (based on binary search):
   TGeoPNEntry *TGeoManager::GetAlignableEntryByUID(Int_t uid) const;

The UID mapping becomes persistent with the geometry. To retrieve the number of entries having (or not) uid's defined, I modified:
   Int_t TGeoManager::GetNAlignable(Bool_t with_uid=kFALSE) const

- Added method TGeoOverlap::SampleOverlap(Int_t npoints) for overlaps/extrusions in the context menu of overlaps. This normally produces a picture of the overlap having random red points in the overlapping region. Helps a lot to check how big the overlap is (prints the volume of the overlapping region) and to validate if the overlap is valid or not.

- TGeoVolume::CheckOverlaps(Double_t ovlp, Option_t *option) produces now overlap objects in the list of overlaps of TGeoManager in case option="s" (sampling). Very useful for doing an extensive check on ovelaps as an alternative to the fast method.
 Note: when checking assembly vs. assembly (or volume) only one overlap is reported (the check does not show which node in the assembly produced the overlap). A graphical output giving hints is still provided in this case.

Revision 18553 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 23 08:58:53 2007 UTC (7 years, 9 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12457 byte(s)
Diff to previous 17356
From Andrei:
- new method  TGeoShape::GetMeshNumbers() that allows getting the number of points, segments and polygons in the mesh of any shape - to be used by an upgrade of the overlap checker
- addition in the overlap checker to use the above info
- modifications in TGeoManager for improving performance for tracking geantinos with G4root interface

Revision 17356 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 16 09:04:50 2007 UTC (8 years ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12162 byte(s)
Diff to previous 17306
Remove dependencies on TROOT.h

Revision 17306 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 12 16:03:17 2007 UTC (8 years ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12181 byte(s)
Diff to previous 15672
   TMath::Abs, TMath::Min, TMath::Max, TMath::Sign, TMath::Range
These functions are unfortunately not defined in a standard way in std::

This include is referenced by a new version of TMath.h.
As a result, TMath.h is back compatible with the previous version.

TMathBase.h is used in place of TMath.h in all the classes
that will go into the future miniCore library.
TMath.h and the TMath implementation will go into a new math sub-directory.

TString.h uses TMathBase.h instead of TMath.h.
As a result, it was necessary to include "TMath.h" in some classes
assuming that TMath was included via TString and using other functions
than the ones defined in TMathBase.h
 ----------------------------------------------------------------------

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/src/TGeoShapeAssembly.cxx
File length: 12162 byte(s)
Diff to previous 14611
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 14611 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 10 08:38:43 2006 UTC (8 years, 9 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12154 byte(s)
Diff to previous 14259
From Andrei:
- Navigation in assembly + MANY do not post warnings anymore
- Fixes in SavePrimitive (from Mihaela) for TGeoHMatrix and TGeoVolume when having
several with the same name.

Revision 14259 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Mar 14 15:16:35 2006 UTC (8 years, 10 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12156 byte(s)
Diff to previous 13282
From Andrei:
a modification and a fix:

- Changed behavior of TGeoVolume::Browse() and TGeoNode::Browse(). The title of the
volume may be used to store user info, so the browser will change it ONLY if not
touched by user. Additional info provided for volumes: shape type, type of volume,
division type

- Fix for a problem found by Christian for nested assemblies: if an assembly for which
the content was not defined yet was added as daughter of another assembly, this
resulted in a wrong bounding box. Now even if this is the case, it is automatically
corrected by the loop TGeoManager::CloseGeometry() -> TGeoVolume::Voxelize(). The
problem did not seem to affect current ALICE geometry.

Revision 13282 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 18 16:07:59 2005 UTC (9 years, 2 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12067 byte(s)
Diff to previous 13163
From Andrei:
a patch fixing RS2 and RS4 coding conventions violations..

Revision 13163 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 9 09:57:09 2005 UTC (9 years, 2 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12069 byte(s)
Diff to previous 12669
From Andrei Gheata:
removing an obsolete warning for assemblies with just one component

Revision 12669 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Sep 6 12:34:57 2005 UTC (9 years, 4 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12142 byte(s)
Diff to previous 12025
From Andrei:
a small patch that:
- fixes new method TGeoManager::FindNextBoundaryAndStep() in case of assemblies
and adds computation of safety as option
- fixes initialization of a data member in TGeoPhysicalNode

The new raytracing is a bit faster and much less error-prone due to fixes in the
navigation related to MANY's.

Revision 12025 - (view) (download) (as text) (annotate) - [select for diffs]
Added Mon Jun 13 12:17:32 2005 UTC (9 years, 7 months ago) by brun
Original Path: trunk/geom/src/TGeoShapeAssembly.cxx
File length: 12079 byte(s)
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.

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.

  Diffs between and
  Type of Diff should be a

Sort log by:

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9