|Message: Most efficient way to store track info on particles as they enter a senstive detector||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)|
Hi, I'm looking for the most computationally efficient way of characterizing a position sensitive detector. I want to record both the energy depositing events that take place within the volume of the detector, and to record characteristics of the particles at the point that they crossed into the detector. For recording the interactions within the detector volume I can simply define a sensitive-detector class and an energy-depositing hit class, then generate and store the hits in a hit collection within the sensitive detector. The novice/N02 ExN02TrackerSD and ExN02TrackerHit classes pretty much do exactly what I want. To record the characteristics of the particles crossing into the detector, I had initially installed a custom user stepping action and on every step checked whether the particle had crossed into the volume of my sensitive detector. if (post_pt->GetStepStatus () == fGeomBoundary && post_pt->GetPhysicalVolume () == myTrackerPV) This works fine. However, of course it means this test has to run on every step of every particle being tracked. Probably not that big a deal, but it does somewhat frustrate the way Geant tries to compartmentalize things. After attending the recent tutorial session at SLAC (which was great... thank you so much guys!!!) I learned about the very slick voxelization optimization that Geant uses when tracking particles. Ideally my code would only be executed for particles tracking within my sensitive detector. However... the problem is: (1) The sensitive detector only gets steps where the step has traversed through some finite length of the sensitive detector region. The sensitive detector doesn't get the step for the entry event where post-step point was limited by entry to the sensitive detector volume. (This is reasonable, because the energy loss along this step should be associated with the volume the step came from, not the volume it has just entered. However, it frustrates my attempt to get track info on entry this way.) (2) If I trigger recording an hit where pre-step point was entry to the sensitive detector region, it's too late to get the track information for the particle on entry. It's already suffered an interaction event within the detector and the track parameters will not be the parameters of the particle as it first crossed into the detector. (3) To be able to reach back in time to the track status on the pre-step point, I'll need to do a test on every step and record the track info on the point of entry to the sensitive detector region. For this, I go back to requiring a user stepping action test that executes on every step. I suppose I could just define two separate sensitive detector; a volumetric detector that gets the energy depositing hits, and a very thin particle traversal detector that is a sliver of vacuum on the front surface of my volumetric detector. My particle traversal detector would record hits on exit from its volume, triggered by post-step points that lie on its surface. This setup would, at least, make use of Geant's voxelization tracking optimization. However, this all seems somewhat kludgey. Am I missing something? Something like a property that could be set on a volume to trigger a zero-length step on entry? Thanks, -- Robert D. Penny <email@example.com>
|Inline Depth:||Outline Depth:||Add message:|