|Message: Re: How to assing a Sensitive Detector for a GDML geometry||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)|
you can either 'harcode' the assignement of your sensitive detectors after having parsed the GDML or you can use the so called 'auxiliary' information available in GDML.
In the first case you should get the pointer (by looking in the volume store) of the logical volume you want to make sensitive, as well as the pointer to your sensitive detector (by using FindSensitiveDetector method of G4SDManager) and then assign it using SetSensitiveDetector method of G4LogicalVolume. As I said, this is all independent of GDML and should be done once the whole geometry tree is in memory. Of course, you first need to instantiate all your sensitive detector classes.
In the second case, i.e. when you use auxiliary information, you can specify the names of the sensitive detectors associated with given volumes inside your GDML file. Have a look at auxiliary.gdml example file within g4gogdml example. You will still need to use the FindSensitiveDetector method to get pointers to your sensitive detectors as well as set them afterwards using SetSensitiveDetector, but the information about which detector is assign to which volume will not be hardcoded in C++ but will come from your GDML file. The GDML processor will create a map with the keys being pointers to the volumes which have auxiliary information and values being pairs of containing the type of auxiliary infomation (like SD) and the values (the name of your sensitive detector). This map you can them use to do the actual assignment.
Finally, let me mention that there exist also a possibility of extending GDML with any user-specific information you may need to store. The procedure how to do it is documented in the Manual and there is an example (SimpleExtension) provided.
Best regards, Witek
|Inline Depth:||Outline Depth:||Add message:|