I’d like to create the geometry of a tracker based on alternating scintillating fibres along orthogonal directions. It seems that the best performance is achieved by dividing an existing TGeoVolume, hence I’m trying to implement the following algorithm:
- create a box enclosing the whole tracker
- divide the box along Z into several thin slices
- divide even Z-slices along X and divide odd Z-slices along Y
This should give a block of square fibres running along X and Y in alternating planes, stacked along Z. This is the geometry I’d like to simulate. However, I don’t find a way of implementing point 3) above.
How can I access individual Z-slices produced after step 2)? If I can get their pointers, I can apply TGeoVolume::Divide() in the desired way.
Thanks a lot,
When you slice a volume, it gets you back a pointer to a TGeoVolumeMulti, that represents the group of the newly created volumes, which you can slice again. The problem for X/Y/Z divisions is that there is a single volume representing a “slice” (as they are all identical), so no way to slice this along both X and Y…
What you can do is the following: do the Z slicing so that each slice can accommodate both the fibres along X and those along Y. Then position inside every slice (the pointer returned by the first Z Divide) 2 equal boxes on top of each other that completely fill the slice (Xfibers and Yfibers). Then Divide the Xfibers box along X and Yfibers box along Y. You will get at the end the expected result…
Thanks. This works.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.