Missing modules for new geometric digitization #681
asalzburger
started this conversation in
Ideas / Feature Requests
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
As discussed in an email @noemina and @niermann999, there are still some missing components needed in the new geometric digitization.
As you can see, the three generators are not (yet) meaningful, they only are implemented as
Void*Generator
.This generator takes a position and a random number engine and generates a drift direction in the local 3D frame:
A simple implementation would be a constant drift for every module, a more complicated one calculates the Lorentz angle, etc. I think these two generators would be enough.
using ChargeGenerator = std::function<Acts::ActsScalar( Acts::ActsScalar, Acts::ActsScalar, RandomEngine&)>;
This generator takes two scalars, the first is the path length in a pixel, the second the drift length to the surface,
the idea of this generator is to transform it into a charge, such that the threshold can be applied. The RandomEngine allows for smearing of this.
This Generator takes the cluster size in loc0 and loc1 and a random engine and returns a covariance matrix.
A simple digital generator could just do pitch/sqrt(12) (but is incorrect), ideally we could have a parameterised version(see below) of the covariances attached to each module and depending on a size lookup it picks out the right covariance entry.
The way these generators work is that you implement a struct that is callable and has the right interface.
Additionally, we need to write a new collection from the
DigitizationAlgorithm
, which contains the raw data, i.e. the cell information. TheRootDigitizationWriter
should then be updated to check if this collection is retrievable and if so, add the cluster size information to the root output.The
Io/Csv
output has to be updated then as well.Beta Was this translation helpful? Give feedback.
All reactions