GeoModel merge requestshttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests2023-12-22T20:03:43+01:00https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/241GeoTessellatedSolid: migrate to the usage of GeoIntrusivePtr2023-12-22T20:03:43+01:00Vakhtang TsulaiaGeoTessellatedSolid: migrate to the usage of GeoIntrusivePtrhttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/242GeoMaterial: migration to GeoIntrisivePtr and code refactoring2024-01-15T18:46:35+01:00Vakhtang TsulaiaGeoMaterial: migration to GeoIntrisivePtr and code refactoring1. Replacing the vector of bare pointers to `GeoElement`-s with a vector of smart pointers
2. Initialization of private data members
3. Renaming of data members of vector type
4. Pre-increment instead of post-increment in loops
5. Format...1. Replacing the vector of bare pointers to `GeoElement`-s with a vector of smart pointers
2. Initialization of private data members
3. Renaming of data members of vector type
4. Pre-increment instead of post-increment in loops
5. Formatting changeshttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/243GeoCutVolAction: updated usage instructions2024-01-05T01:44:22+01:00Vakhtang TsulaiaGeoCutVolAction: updated usage instructionsNew instruction shows how to use `GeoCutVolAction` with `GeoIntrusivePtr`New instruction shows how to use `GeoCutVolAction` with `GeoIntrusivePtr`https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/244GeoDefinitions - Add function to extract the euler angles. Fix bugs in the intrinsic calculation of GeoRotation. Add corresponding unit test2024-01-24T02:38:10+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chGeoDefinitions - Add function to extract the euler angles. Fix bugs in the intrinsic calculation of GeoRotation. Add corresponding unit testHi everybody,
first of all happy new year. My first project of the year is to take the AGDD-based Toroid plugin, load it and then dump the transient GeoModel tree in memory into a GeoModelXML like format. If that's done then we can say,...Hi everybody,
first of all happy new year. My first project of the year is to take the AGDD-based Toroid plugin, load it and then dump the transient GeoModel tree in memory into a GeoModelXML like format. If that's done then we can say, wuuuhu cyaaa unmaintained AGDD code and in fact, any other piece of Geometry can be translated into the same format and we can do the same gestures to the depreciated code as to AGDD. But that's only neccessary, if it's as unmaintained. Anyhow, as a first step, I'd like to extract the six defining paramaters of a GeoTransform. The translation is a no-brainer. For the three Euler angles ${\theta}$, ${\phi}$ and ${\psi}$ with their associated rotation matrices
```math
R_{x}(\theta) = \begin{pmatrix}
1 & 0 & 0 \\
0 & \cos (\theta) & -\sin(\theta) \\
0 & \sin(\theta) & \cos(\theta)
\end{pmatrix},
R_{y}(\psi) = \begin{pmatrix}
\cos (\psi) & 0 & -\sin(\psi) \\
0 & 1 & 0 \\
\sin(\psi) & 0 & \cos(\psi)
\end{pmatrix},
R_{z}(\phi) = \begin{pmatrix}
\cos (\phi) & -\sin(\phi) & 0 \\
\sin(\phi) & \cos(\phi) & 0 \\
0 & 0 & 1
\end{pmatrix},
```
a bit more work is needed. The [GeoRotation](https://gitlab.cern.ch/GeoModelDev/GeoModel/-/blob/main/GeoModelCore/GeoModelKernel/GeoModelKernel/GeoDefinitions.h#L142-146) implements kind of a concatenation of the rotation matrices, where I'm currently trying to figure out the respective order. If I interpret the constrcutor
```cpp
GeoRotation::GeoRotation(double phi, double theta, double psi)
{
double sinPhi = std::sin( phi ), cosPhi = std::cos( phi );
double sinTheta = std::sin( theta ), cosTheta = std::cos( theta );
double sinPsi = std::sin( psi ), cosPsi = std::cos( psi );
this->operator()(0,0) = cosPsi * cosPhi - cosTheta * sinPhi * sinPsi;
this->operator()(0,1) = cosPsi * sinPhi + cosTheta * cosPhi * sinPsi;
this->operator()(0,2) = sinPsi * sinTheta;
this->operator()(1,0) = - sinPsi * cosPhi - cosTheta * sinPhi * cosPsi;
this->operator()(1,1) = - sinPsi * sinPhi + cosTheta * cosPhi * cosPsi;
this->operator()(1,2) = cosPsi * sinTheta;
this->operator()(2,0) = sinTheta * sinPhi;
this->operator()(2,1) = - sinTheta * cosPhi;
this->operator()(2,2) = cosTheta;
}
```
correctly, then
```math
\text{GeoRot}(\theta,\psi,\phi) = \begin{pmatrix}
\cos(\psi)\cos(\phi) - \cos(\theta)\sin(\phi)\sin(\psi) & -\sin(\psi) \cos(\phi) -\cos(\theta)\sin(\phi)\cos(\psi) & \sin(\theta)\sin(\phi) \\
\cos(\psi) \sin(\phi) + \cos(\theta)\cos(\phi)\sin(\psi) & -\sin(\psi)\sin(\phi) + \cos(\theta)\cos(\phi) \cos(\psi) & -\sin(\theta)\cos(\phi) \\
\sin(\psi)\sin(\theta) & \cos(\psi)\sin(\theta) & \cos(\theta)
\end{pmatrix}
```
is the corresponding matrix equation. Next, let's see which of the three ${R_{i}}$ is obtained by setting two of the parameters to zero.
```math
\text{GeoRot}(0, 0,\phi) = \begin{pmatrix}
\cos(0)\cos(\phi) - \cos(0)\sin(\phi)\sin(0) & -\sin(0) \cos(\phi) -\cos(0)\sin(\phi)\cos(0) & \sin(0)\sin(\phi) \\
\cos(0) \sin(\phi) + \cos(0)\cos(\phi)\sin(0) & -\sin(0)\sin(\phi) + \cos(0)\cos(\phi) \cos(0) & -\sin(0)\cos(\phi) \\
\sin(0)\sin(0) & \cos(0)\sin(0) & \cos(0)
\end{pmatrix} = \begin{pmatrix}
\cos (\phi) & -\sin(\phi) & 0 \\
\sin(\phi) & \cos(\phi) & 0 \\
0 & 0 & 1
\end{pmatrix} = R_{z}(\phi)
```
okay, ${\phi}$ is a rotation around the z-axis, Let's take a look at ${\theta}$:
```math
\text{GeoRot}(\theta,0, 0) = \begin{pmatrix}
\cos(0)\cos(0) - \cos(\theta)\sin(0)\sin(0) & -\sin(0) \cos(0) -\cos(\theta)\sin(0)\cos(0) & \sin(\theta)\sin(0) \\
\cos(0) \sin(0) + \cos(\theta)\cos(0)\sin(0) & -\sin(0)\sin(0) + \cos(\theta)\cos(0) \cos(0) & -\sin(\theta)\cos(0) \\
\sin(0)\sin(\theta) & \cos(0)\sin(\theta) & \cos(\theta)
\end{pmatrix} = \begin{pmatrix}
1 & 0 & 0 \\
0 & \cos (\theta) & -\sin(\theta) \\
0 & \sin(\theta) & \cos(\theta)
\end{pmatrix} = R_{x}(\theta)
```
Indeed, that's the rotation around the x-axis. Last but not least, the angle ${\psi}$ will be then the y-axis rotation.
```math
\text{GeoRot}(0,\psi,0) = \begin{pmatrix}
\cos(\psi)\cos(0) - \cos(0)\sin(0)\sin(\psi) & -\sin(\psi) \cos(0) -\cos(0)\sin(0)\cos(\psi) & \sin(0)\sin(0) \\
\cos(\psi) \sin(0) + \cos(0)\cos(0)\sin(\psi) & -\sin(\psi)\sin(0) + \cos(0)\cos(0) \cos(\psi) & -\sin(0)\cos(0) \\
\sin(\psi)\sin(0) & \cos(\psi)\sin(0) & \cos(0)
\end{pmatrix} =
\begin{pmatrix}
\cos(\psi) & -\sin(\psi) & 0 \\
\sin(\psi) & \cos(\psi) & 0\\
0 & 0 & 1
\end{pmatrix} = R_{x}(\psi)
```
![image](https://media1.tenor.com/m/wamL_NeO8-wAAAAd/bunnies-what.gif)
That's another x-axis rotation. I was quite confused about this result, so I've written a quick unit test to repeat the exercise above
```
1: testEulerAngles() 19 The GeoTrf::GeoRotation around the x-axis with angle 315
1: 0.707107 -0.707107 0
1: 0.707107 0.707107 0
1: -0 -0 1
1: testEulerAngles() 27 The GeoTrf::GeoRotation around the y-axis with angle 315
1: 1 0 -0
1: -0 0.707107 -0.707107
1: -0 0.707107 0.707107
1: testEulerAngles() 35 The GeoTrf::GeoRotation around the z-axis with angle 315
1: 0.707107 -0.707107 -0
1: 0.707107 0.707107 0
1: 0 -0 1
```
Indeed, in 2 out of the three cases, the rotation matrix is actually the same. [In athena](https://gitlab.cern.ch/search?search=GeoTrf%3A%3AGeoRotation&nav_source=navbar&project_id=53790&group_id=4114&search_code=true&repository_ref=main), GeoRotations around the three 'axes' are used in the inner detector GeoModel. There're also three usages of the GeoRotation in [GeoModelATLAS](https://gitlab.cern.ch/search?search=GeoTrf%3A%3AGeoRotation&nav_source=navbar&project_id=107366&group_id=29903&search_code=true&repository_ref=master).
There's also another interesting bug that setting 2 angles to non-zero does not neccessarily construct a valid rotation matrix
Tagging: @boudreau, @tsulaia, @nstyles, @jchapman, @jcatmore, @mbandier, @sroe
[Wolframalpha](https://www.wolframalpha.com/input?i=+%7B%7B1%2C0%2C0%7D%2C+%7B0%2C+cos%28x%29%2C-sin%28x%29%7D%2C%7B0%2Csin%28x%29%2Ccos%28x%29%7D%7D++*+%7B%7Bcos%28y%29%2C0%2C-sin%28y%29%7D%2C%7B0%2C1%2C0%7D%2C%7Bsin%28y%29%2C0%2Ccos%28y%29%7D%7D+++*+%7B%7Bcos%28z%29%2C-sin%28z%29%2C0%7D%2C%7Bsin%28z%29%2Ccos%28z%29%2C0%7D%2C%7B0%2C0%2C1%7D%7D)
![image](/uploads/b4e0aadf49c47b83ff24a9da57065600/image.png)
[Wolframalpha](https://www.wolframalpha.com/input?i=+%7B%7B1%2C0%2C0%7D%2C+%7B0%2C+cos%28x%29%2C-sin%28x%29%7D%2C%7B0%2Csin%28x%29%2Ccos%28x%29%7D%7D++++*+%7B%7Bcos%28z%29%2C-sin%28z%29%2C0%7D%2C%7Bsin%28z%29%2Ccos%28z%29%2C0%7D%2C%7B0%2C0%2C1%7D%7D+*+%7B%7Bcos%28y%29%2C0%2C-sin%28y%29%7D%2C%7B0%2C1%2C0%7D%2C%7Bsin%28y%29%2C0%2Ccos%28y%29%7D%7D+)
![image](/uploads/3fb34016933d41e2545581379e280223/image.png)
[Wolframalpha](https://www.wolframalpha.com/input?i=+%7B%7Bcos%28y%29%2C0%2C-sin%28y%29%7D%2C%7B0%2C1%2C0%7D%2C%7Bsin%28y%29%2C0%2Ccos%28y%29%7D%7D+++*++%7B%7B1%2C0%2C0%7D%2C+%7B0%2C+cos%28x%29%2C-sin%28x%29%7D%2C%7B0%2Csin%28x%29%2Ccos%28x%29%7D%7D+*+%7B%7Bcos%28z%29%2C-sin%28z%29%2C0%7D%2C%7Bsin%28z%29%2Ccos%28z%29%2C0%7D%2C%7B0%2C0%2C1%7D%7D)
![image](/uploads/226f98e7cc0654bd3f125766116dfaf8/image.png)
[Wolframalpha](https://www.wolframalpha.com/input?i=+%7B%7Bcos%28y%29%2C0%2C-sin%28y%29%7D%2C%7B0%2C1%2C0%7D%2C%7Bsin%28y%29%2C0%2Ccos%28y%29%7D%7D+*+%7B%7Bcos%28z%29%2C-sin%28z%29%2C0%7D%2C%7Bsin%28z%29%2Ccos%28z%29%2C0%7D%2C%7B0%2C0%2C1%7D%7D++*++%7B%7B1%2C0%2C0%7D%2C+%7B0%2C+cos%28x%29%2C-sin%28x%29%7D%2C%7B0%2Csin%28x%29%2Ccos%28x%29%7D%7D)
![image](/uploads/5ce0ce93c6c00985bb788cbcaa983bc9/image.png)
[Wolframalpha](https://www.wolframalpha.com/input?i=+%7B%7Bcos%28z%29%2C-sin%28z%29%2C0%7D%2C%7Bsin%28z%29%2Ccos%28z%29%2C0%7D%2C%7B0%2C0%2C1%7D%7D++*++%7B%7Bcos%28y%29%2C0%2C-sin%28y%29%7D%2C%7B0%2C1%2C0%7D%2C%7Bsin%28y%29%2C0%2Ccos%28y%29%7D%7D+*++%7B%7B1%2C0%2C0%7D%2C+%7B0%2C+cos%28x%29%2C-sin%28x%29%7D%2C%7B0%2Csin%28x%29%2Ccos%28x%29%7D%7D)
![image](/uploads/359ff9479b2709f9108dc53a61db87ee/image.png)
[Wolframalpha](https://www.wolframalpha.com/input?i=+%7B%7Bcos%28z%29%2C-sin%28z%29%2C0%7D%2C%7Bsin%28z%29%2Ccos%28z%29%2C0%7D%2C%7B0%2C0%2C1%7D%7D+*++%7B%7B1%2C0%2C0%7D%2C+%7B0%2C+cos%28x%29%2C-sin%28x%29%7D%2C%7B0%2Csin%28x%29%2Ccos%28x%29%7D%7D++*++%7B%7Bcos%28y%29%2C0%2C-sin%28y%29%7D%2C%7B0%2C1%2C0%7D%2C%7Bsin%28y%29%2C0%2Ccos%28y%29%7D%7D+)
![image](/uploads/21d1ce8562596f8f426d494fa3747228/image.png)https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/245GeoShapes -- Minor class & method clean up2024-01-15T18:47:41+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chGeoShapes -- Minor class & method clean uphttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/246Draft: Developments for the GeoModelXMLDumper - The first nail in AGDD's coffin2024-07-11T11:07:50+02:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chDraft: Developments for the GeoModelXMLDumper - The first nail in AGDD's coffinHi everybody,
this is the first prototype of the GeoModelXML dumper conversion programme. The idea behind it is to take any kind of GeoModel plugin and to dump it into a XML file that can be interpreted by the generic GeoModelXML plugin...Hi everybody,
this is the first prototype of the GeoModelXML dumper conversion programme. The idea behind it is to take any kind of GeoModel plugin and to dump it into a XML file that can be interpreted by the generic GeoModelXML plugin. E.g.
```bash
dumpGeoXML -p ../install/lib/libToroidPlugin.so \
-o ${run_dir}/dumpedXML.xml
```
As indicated in the description, the first & major use case will be the trans ToroidPlugin which is based on AGDD. If that translation is successful and correct, then we can say tschuuuuuus AGDD and press on its delete button.
A long the line, I introduced a couple of functions which can be of wider use, but I'm not certain whether we should put them into the GeoModelKernel itself. Hence, I opened the package `GeoModelFuncSnippets`
* dump the transformations to screen
* Comparison operators of `GeoShapes`, `GeoTrf::Transform3D` and `GeoPhysVol`. Eventhough, the objects are not the same, these operators allow to classify two distinct objects as equivalent if all of their defining parameters are the same within a certain precision. Usually that's in the order of microns.
* `GeoShapeUtils`: Helper functions to retrieve the operands of the boolean volumes or to collapse a concatination of `GeoShapeShifts` into a single `GeoShapeShift` object. Standard way to print a `GeoShape` to screen.
* `defineWorld()`: I've seen that the world node is reimplemented over and over again at lots of different places. I've created a `createGeoWorld()` function for this.
* `getChildrenWithRef ()`. Retrieves all children from the GeoVPhysVol together with the associated transformation. If the child volume is the same as the previous child and it's in kind of a regular pattern, then this volume is not added to the list but the copy number is incremented instead.
* The Euler angles are already described in !244
Last but not least, I've added a new feature to `GeoModelXML` itself. The `<shapeshift>` XML tag will create a GeoShapeShift from a previously registered shape.
Tagging: @boudreau, @rbianchi, @dellacqu, @tsulaia, @mbandier, @nstyles, @smeriano, @todorova, @ncalace, @asalzbur, @goblirschttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/247Draft: Fix compilation errors2024-01-09T16:56:53+01:00Marilena BandieramonteDraft: Fix compilation errorsThis MR fixes 2 compilation errors (one in FullSimLight and the other one in one of the examples) due to the interface change GeoPhysVol vs GeoVPhysVol.This MR fixes 2 compilation errors (one in FullSimLight and the other one in one of the examples) due to the interface change GeoPhysVol vs GeoVPhysVol.https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/248GeoShapeShift - Collapse a chain of GeoShapeShifts into one2024-01-15T18:48:27+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chGeoShapeShift - Collapse a chain of GeoShapeShifts into oneI've seen in the muon geometry a couple of places where we have
GeoShapeShift ( GeoShapeShift (GeoShapeShift (GeoShapeShift of something
That's producing an unneccassry call twoer given that we're only interested in the summarized s...I've seen in the muon geometry a couple of places where we have
GeoShapeShift ( GeoShapeShift (GeoShapeShift (GeoShapeShift of something
That's producing an unneccassry call twoer given that we're only interested in the summarized shift. This little checks at the construction stage of the GeoShapeShift whether the given shape is another shift. If so, then it combines the two transformations and takes the operand of the child.
Tagging: @rbianchi, @boudreau, @tsulaiahttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/249Introduce GeoModelFuncSnippets - Vol I2024-01-17T15:35:18+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chIntroduce GeoModelFuncSnippets - Vol IChopping up !246 into smaller pieces. This MR introduces the pieces of GeoModelFuncSnippets that are not relying on the changes in !244. I.e. the introduction of the Euler angles, sign swap etc.
Tagging: @boudreau, @rbianchi, @tsulaiaChopping up !246 into smaller pieces. This MR introduces the pieces of GeoModelFuncSnippets that are not relying on the changes in !244. I.e. the introduction of the Euler angles, sign swap etc.
Tagging: @boudreau, @rbianchi, @tsulaiahttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/250Fix a problem with squashing of multiple GeoShapeShifts, in which the original...2024-01-17T15:03:50+01:00Joseph BoudreauFix a problem with squashing of multiple GeoShapeShifts, in which the original...Fix a problem with squashing of multiple GeoShapeShifts, in which the original shape disappears from memory in the second operationFix a problem with squashing of multiple GeoShapeShifts, in which the original shape disappears from memory in the second operationhttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/251Introduce Shape & Volume sorters2024-01-22T18:40:54+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chIntroduce Shape & Volume sortersChanges on top of !244:
- Add helper functions to print shapes & Tansforms
- Add comparators to construct sets of GeoLogVol, GeoTransforms, GeoShapes and GeoPhysVolChanges on top of !244:
- Add helper functions to print shapes & Tansforms
- Add comparators to construct sets of GeoLogVol, GeoTransforms, GeoShapes and GeoPhysVolhttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/252Compatibility with Qt6 does not wreck Qt52024-07-02T16:22:48+02:00Joseph BoudreauCompatibility with Qt6 does not wreck Qt5Adapted GeoModelVisualization to Qt6 and to the recently released newversions of Coin (4.0.2) and SoQt (1.6.2). A number of classes were
suppressed totally, since they are not used (eg those dealing with
"2d systems" none of which are u...Adapted GeoModelVisualization to Qt6 and to the recently released newversions of Coin (4.0.2) and SoQt (1.6.2). A number of classes were
suppressed totally, since they are not used (eg those dealing with
"2d systems" none of which are used here. This was preferable to
making dead code compile.
This work should be tested on a variety of platforms before getting
merged to main. The branch can stay open until such time as.https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/253Fixed a compilation error on Mac.2024-01-19T13:44:59+01:00Joseph BoudreauFixed a compilation error on Mac.Fixes a compilation error. Johannes please check this code.Fixes a compilation error. Johannes please check this code.https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/254Docs: add a warning about Qt5 and Qt6 on macOS2024-01-19T12:59:37+01:00Riccardo Maria Bianchiriccardo.maria.bianchi@cern.chDocs: add a warning about Qt5 and Qt6 on macOSIt warns about Qt5 and Qt6 on the same macOS machineIt warns about Qt5 and Qt6 on the same macOS machinehttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/255GeoTransform - Return default transform by reference2024-01-22T18:38:35+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chGeoTransform - Return default transform by referenceThe object is already cached in the GeoTransform and never touched anywhere else. No need to copy itThe object is already cached in the GeoTransform and never touched anywhere else. No need to copy ithttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/256Resize world volume functionality2024-01-24T13:22:09+01:00Marilena BandieramonteResize world volume functionalityThis MR introduced the possibility to resize the world volume to the real need depending on the geometry that is built. This functionality is currently used in fullSimlight (and all the G4 dependent tools) when a geometry is built starti...This MR introduced the possibility to resize the world volume to the real need depending on the geometry that is built. This functionality is currently used in fullSimlight (and all the G4 dependent tools) when a geometry is built starting from a plugin and gmcat. In addition to that this MR:
- Changes the name of Air used for the world volume in FullSimLight/gmcat to avoid conflicts with other definitions
- Makes sure the definition of Air is the same as the one used in Athena
- Fixes a compilation bug in the HelloGeoReadG4 examplehttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/257Another collapse fix2024-01-28T00:20:11+01:00Johannes Junggeburthjohannes.josef.junggeburth@cern.chAnother collapse fixI noted that the sTGCs were collapsed into one point. The envelope is spanning over both sTGC multiplets thus far.
![image](/uploads/5937f09ddf570f0d4bd6560a41474e88/image.png)
This patch restores the old behaviour:
![image](/uploads/...I noted that the sTGCs were collapsed into one point. The envelope is spanning over both sTGC multiplets thus far.
![image](/uploads/5937f09ddf570f0d4bd6560a41474e88/image.png)
This patch restores the old behaviour:
![image](/uploads/5c3cfbfead4fece6a6a6c94a085edff0/image.png)https://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/258Fix implicit instantiation of undefined template compilation error on MacOS2024-01-24T11:57:28+01:00Marilena BandieramonteFix implicit instantiation of undefined template compilation error on MacOShttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/259CMakeLists: properly handle the GEOMODEL_BUILD_EXAMPLES_W_GEANT4 option2024-01-25T14:39:13+01:00Marilena BandieramonteCMakeLists: properly handle the GEOMODEL_BUILD_EXAMPLES_W_GEANT4 optionThe GEOMODEL_BUILD_EXAMPLES_W_GEANT4 option was working only when also the GEOMODEL_BUILD_EXAMPLES option was activated. Now:
- if both options are active, only one of the 2 is taken into consideration to avoid double inclusion of folder...The GEOMODEL_BUILD_EXAMPLES_W_GEANT4 option was working only when also the GEOMODEL_BUILD_EXAMPLES option was activated. Now:
- if both options are active, only one of the 2 is taken into consideration to avoid double inclusion of folders
- if only the GEOMODEL_BUILD_EXAMPLES_W_GEANT4 is set, the examples are built
This also allows the CI to test properly the Geant4 examples which were not built and tested beforehttps://gitlab.cern.ch/GeoModelDev/GeoModel/-/merge_requests/260Add support for split modules in alignment2024-06-05T21:10:07+02:00Nicholas StylesAdd support for split modules in alignmentFollowing [ATLIDTRKCP-519](https://its.cern.ch/jira/browse/ATLIDTRKCP-519). Add use of (already implemented) `addSplitAlignment` so that ITk Strip modules which are split into multiple readout elements can have those elements sharing an ...Following [ATLIDTRKCP-519](https://its.cern.ch/jira/browse/ATLIDTRKCP-519). Add use of (already implemented) `addSplitAlignment` so that ITk Strip modules which are split into multiple readout elements can have those elements sharing an AlignableTransform (the individual readout elements being part of the same silicon wafer, meaning they are physically bound together and should not be aligned with respect to one another).
This could also be used for any other case where the readout elements are not individually alignable.
FYI @xilin @sroe @pbruckma