Message: daughter volumes not sensitive but should be pointed to? Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question daughter volumes not sensitive but should be pointed to? 

Keywords: hits nested SD volumes daughter sensitive detector volumes
Forum: Hits, Digitization and Pileup
Date: 07 Nov, 2005
From: Blair Smith <>

The question is this:  Is there a G4 method for finding the deepest 
(top level) daughter volume at a given point?  Taking a G4ThreeVector 
in global cordinates and returning the top most physical volume at 
that point.  

(Consistent I think with confusing G4 terminology the 
"topmost" level is the deepest nested---which is the 0th level of the 
geometry tree.---to my mind nested hierarchies should have the World
volume as the "top" at level=0  but I guess G4 developers decided 
otherwise!  I think the "G4 User's Guide for App. Dev." should have a 
sentence or two about this because it caused me a lot of wasted time 
early on trying to test to see what "topmost" meant in relation to 
the geometry tree!)

A further question that I think has been covered but that I wish to 
clarify for certain is this: Is my following description of hits in 
nested SD volumes correct? 

My Description:
OK, I seem to find that my touchable history handle always starts with 
level=0 as the SD volume itself.  What if I need to know about the 
actual daughter subvolume that the hit occurs within?

When I set "/tracking/verbose 1" I can see all the daughter volumes in the 
output, but when I collect hits using ProcessHits() I only seem to be able
to access the geometry levels above the SD volume, not the deeper daughter 
levels that I'd like to also know about.

Earlier I posted a reply to message 18 for this topic (original post 
by I. Cornelius) in which I recounted a conversation with another geant 
user.  There I worried about Makoto's expert statement that daughter 
volumes do not inherit sensitivity.  Well, it turns out that upon 
actual experience I would say that Makoto was correct (I did not doubt 
that), but what pains me is that my interpretation was incorrect.

I had assumed that although daughter volumes might not inherit 
sensitivity they might yet at least be accessed by the touchable 
history.  It is still true that when a daughter volume's boundary
is crossed the SD calls ProcessHits() for the parent volume.  I see 
that in the log output. But within ProcessHits() it seems I loose
the information about any daughter volumes, unless I inspect by 
looking at the hit position and infer the deepest volume at 
that point by brute force inspection.

So rather than write code to look up a volume based upon position 
(is there a G4 method for that????) I will instead probably take 
the easy route of simply making all the daughter volumes sensitive
as needed, creating and maintaining of course more hit collections, 
which is a slight pain but not too burdensome.


One good thing that matches intuition is that it seems as though
when one has a SD volume inside a parent SD volume and a hit occurs
in the daughter SD volume, the ProcessHits() method only gets called 
ONCE and it gets called naturally for the daughter, not the parent.
Thus hits in nested SD volumes do not cause redundant calls to 
ProcessHits().  This is as I would've hoped!

You can then loop through all your hit collections knowing that 
you will not encounter the same hit more than once.

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: daughter volumes not sensitive but should be pointed to?   (Makoto Asai - 08 Nov, 2005)
(_ Note: Re: daughter volumes not sensitive but should be pointed to?   (Blair Smith - 08 Nov, 2005)
 Add Message Add Message
to: "daughter volumes not sensitive but should be pointed to?"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]