ROOT Version: 6.32.02
Platform: Fedora 39
Compiler: G++ 13.2.0
Hi,
I’m working with a TGeoPgon object. After dividing this object using Divide, I get a TGeoVolumeMulti, to which I add a node, which is added to all child TGeoVolumes of my TGeoPgon.
The problem is that the node is added to each of the child Volumes with an offset of 360/nSectors, and not 360/(nSectors * 2) as I expect. As a result, it turns out that the figures from neighboring Volumes are each rotated by 30 degrees (I have 12 sectors), and not by 15, due to which I get a total angle between them of 60 degrees, and not 30, which completely breaks the regular dodecagon that I am building.
Attempts to somehow influence the insertion offset using TGeoCombiTrans did not bring any results. Apparently, when adding a node to TGeoVolumeMulti, a forced offset occurs at a fixed angle, which I was unable to change.
Perhaps I am not working correctly with this object, or I am missing another way to influence the node offset angle when inserting.
Below is a code fragment with the creation of TGeoPgon and adding a node there.
Thanks in advance for your answer
// Create TGeoPgon
TGeoPgon *pgon = new TGeoPgon("MainPolygon", 0, 360, 12, 2);
pgon->DefineSection(0, secGeo.GetZMin(), secGeo.GetYPadAreaLowerEdge(), secGeo.GetRmax());
pgon->DefineSection(0, secGeo.GetZMax(), secGeo.GetYPadAreaLowerEdge(), secGeo.GetRmax());
TGeoMedium *air = new TGeoMedium("Air", 1, new TGeoMaterial("Material", 0, 0, 0));
TGeoVolume *SectorBaseVolume = new TGeoVolume("SectorVolume", pgon, air);
// Add sensor
TGeoVolume *dividedSetcorVolume = SectorBaseVolume->Divide("divPgon", 2, 12, 0, -1);
TGeoVolume *innerSensorVolume = makeSensorVolume(geoManager, medium, secGeo.GetPadHeight()[0] * 0.5, secGeo.GetPadWidth()[0] * 0.5, secGeo.GetDriftLength() * 0.5, 0);
Double_t x = secGeo.GetYPadAreaLowerEdge();
Double_t y = 0;
Double_t z = 0;
dividedSetcorVolume->AddNode(currentSensorVolume, 1, new TGeoTranslation(x, y, z));