-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uniform random picking of points on detector surfaces for noise studies #1335
Comments
No there is not. Possible solutions are only possible if a segmentation allows to enumerate easily it's cells like rectangular wafers etc. |
Would a non-generic solution be acceptable, e.g. only certain surfaces or certain shapes at first, but with a return value that makes it clear when the request failed? |
@MarkusFrankATcernch thanks for pointing us to the previous discussions. Knowing that we can not pick random positions on surface, I tried to select random noisy pixels by cell ID. For example, for our three-layer Si vertex tracker with segmentation below:
This code does give me a list of valid cell id (despite of many volume manager complaints on invalid segmentation), and their layer and module id etc seem to be valid. However, the corresponding global position of those generated noise hits don't always make sense. For example, our barrel has radii of 3.6, 4.8, and 12cm, but the cell ID position from the converter is 30.88cm. Any suggestions ? |
@ShujieL For CartesianGridXY on a Box (such as a Wafer) it is actually possible to do this, because the CellIDs are easily enumerable.
and
at line 58:
instead of looping over all possible cell ids like in this example, Unfortunately this works only for regular shapes like yours, otherwise you get not only the error you see, but you also |
@MarkusFrankATcernch thanks! We did scan the cell ID and noticed that for a stave the segmentation occupies certain phase space, e.g. (0,6749) or (58786,65535) in seg_y (z direction). I am not sure though if it's a general solution b/c we do have Si disks formed with trapezoid, and moving forward will have inactive areas on each sensor unit, which may create discontinuity (not sure though, need your input). Can you give me an example of how to check if a valid cell ID is indeed on a valid sensitive surface? We may not be able to afford it in production, but can at least try for initial test. Eventually we need to generate electronic noise across all silicon detectors. are there alternative approaches we can explore? |
The surfaces in DD4hep are attached to volumes that are used to define the surface boundaries. For drawing we the |
@ShujieL I have no such example.... This is the method I think takes a lot if CPU. |
Is there a functionality in DD4hep to pick uniformly distributed random points on a detector surface? We have one of our collaborators working on implementing random tracking pixels firing (shot noise) in addition to the simulated physics events, to study impact on track reconstruction efficiency.
I was looking at the
DDRec::Surface
class but don't see such functionality, but this may be implemented elsewhere. I was also looking at the DDDigi subtree (includingDigiPoissonNoise
) but I was not able to discern how to adapt that to this use case.The text was updated successfully, but these errors were encountered: