I believe that many of the problems in the geometry construction come from its monolithic construction with a lot of convoluted options. This makes consistent dimension checking nearly impossible.
One strategy that might help is further factorization of the construction into components, if it is implemented well. The components can be represented by classes or objects that can be queried for dimension information. This kind of encapsulation also usually makes debugging easier.
The PMT logical volume consists of
A containing volume in which all other components are embedded,
One of the following
A material representation of an individual PMT,
The PMT logical volumes of one or more PMTs of a multiPMT,
Optional decorators
Reflector
Supports
WLS plate
One layer of recursion is allowed for multiPMTs. The containing volume is the most important for interfaces with the rest of the geometry.
I believe that many of the problems in the geometry construction come from its monolithic construction with a lot of convoluted options. This makes consistent dimension checking nearly impossible.
One strategy that might help is further factorization of the construction into components, if it is implemented well. The components can be represented by classes or objects that can be queried for dimension information. This kind of encapsulation also usually makes debugging easier.
The PMT logical volume consists of
One layer of recursion is allowed for multiPMTs. The containing volume is the most important for interfaces with the rest of the geometry.
Originally posted by @spradlin in https://github.com/spradlin/WCSim/issues/24#issuecomment-1462143261