Replies: 1 comment
-
In Acts we deal with up to 6D measurements and "project" them down to the dimension of the actual size. This mechanism also knows which dimensions are the ones that are measured. Acts abstracts measurements away and we basically let the user deal with it but we have containers in the Examples and interfaces for the EDM in Core
We usually also deal with templates there and "unroll" them during runtime with the dimension information. Generally we store the measurements and their covariance in a dense flat |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
for Belle II, I am working on improving genfit by replacing
TVector
,TMatrix
,TVector3
etc and everything else that is inherited fromTObject
to speed up operations. To avoid introducing another dependency, for now I decided to replaceTVector
andTMatrix
withSVector
andSMatrix
fromROOT::Math
instead of using e.g.Eigen
(andTVector3
anyway "needs" to be replaced withXYZVector
in most cases for the API to the outside world).However, now I am at a point where I am stuck. After adding template arguments for the matrix and vector sizes to half of the classes in genfit, including many of the abstract base classes, the compilation starts requiring concrete values for the template arguments. Usually this happens in the places where genfit deals with measurements of different dimensions for now, i.e. 1D measurements from e.g. wire measurements or silicon strip detectors, or 2D measurements from pixel detectors. Of course in principle these values are all known at compile time, but I did not (yet) find a way of providing them in a
constexpr
manner, and thus mostly functions / function calls that require template arguments.It might just be a lack of knowledge of C++ on my side. But I anyway thought it would be a good idea to learn how
Acts deals with these different kinds of measurements. Or is this not an issue after all for Acts because of the way the hits and surfaces are defined?
By now, I am second-guessing whether sticking with ROOT and
SVector
andSMatrix
was a good choice, I guess my life would be much easier if I could use theDynamic
"dimension" ofEigen
, a functionality which the ROOT matrices don't provide as far as I can tell. But I also hoped, that because everything should essentially be known at compile time, I could take full advantage of the compile time optimisation ofSMatrix
algebra.Thanks a lot in advance for your help and insights into Acts and how to potentially solve the issues that I face. I am currently working alone on this project, but it's quite likely that I'll soon involve a few more people from Belle II. So far I was confident I could do this by myself.
Best,
Christian
Beta Was this translation helpful? Give feedback.
All reactions