|Message: Re: daughter volumes not sensitive but should be pointed to?||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
Here is a copy of some off-forum communications that I thought would be helpful to other newbies. This I think clears up this thread pretty completely, thanks to Makoto Asai. ---From Makoto Asai--- Hi Blair, > ---From Blair Smith --- > What I meant by the following... > >> 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. >> >> Here I do not understand what you meant. Even if a step is limited by >> the daughter volume's bounday, the step belongs to that daughter >> volume and thus the SD associated to the daughter volume is invoked. >> > ...was that supposing the daughter in this case is NOT a SD, say I neglected to make it sensitive, > then the touchable history pointer in ProcessHits() will not > point to the daughter, is that correct? It can only point to a sensitive PV. In the case that NO SD is assigned to the "immediate" PV, then NO SD would be invoked. > ---From Blair Smith--- > Then for example when you say, > >> As I wrote above, you can assign the same SD object to both mother >> and daughter volumes. Then you have only one hits collection. >> > I assume that means I can use the same SD name, to get just one hit collection, is that right? > So in my G4UserDetectorConstruction::Construct() method I can write simply the following, > > G4VSensitiveDetector* ecrdVoxelSD = new CZTEcrdSD( "/ECRD/VoxelSD" ); > SDman->AddNewDetector( ecrdVoxelSD ); > logicVoxelElement->SetSensitiveDetector( ecrdVoxelSD ); > logicPixel->SetSensitiveDetector( ecrdVoxelSD ); > > so that hits received in a "physPixel" go into the same collection as those received in a > mother "physVoxelElement"? If I had logixPixel as a daughter of logicVoxelElement? > This would be rather than having two different collections as in, > > G4VSensitiveDetector* ecrdVoxelSD = new CZTEcrdSD( "/ECRD/VoxelSD" ); > SDman->AddNewDetector( ecrdVoxelSD ); > logicVoxelElement->SetSensitiveDetector( ecrdVoxelSD ); > G4VSensitiveDetector* ecrdPixelSD = new CZTEcrdSD( "/ECRD/PixelSD" ); > SDman->AddNewDetector( ecrdPixelSD ); > logicPixel->SetSensitiveDetector( ecrdPixelSD ); > > is this so? If so then I think I'm all set and you have been a great help! Yes, once you assign THE SAME OBJECT to both the mother and the daughter as you wrote: > logicVoxelElement->SetSensitiveDetector( ecrdVoxelSD ); > logicPixel->SetSensitiveDetector( ecrdVoxelSD ); your "ecrdVoxelSD" will be invoked for all steps in both "logicVoxelElement" and "logicPixel". Cheers, Makoto
|Inline Depth:||Outline Depth:||Add message:|