Skip to content

Commit 1dacf75

Browse files
dedxsawenzel
authored andcommitted
major revision: updated FT0 frame geometry for both A and C side detectors
1 parent cd5ca55 commit 1dacf75

3 files changed

Lines changed: 739 additions & 538 deletions

File tree

Detectors/FIT/FT0/base/src/Geometry.cxx

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,20 @@ Geometry::Geometry() : mMCP{{0, 0, 0}}
3131

3232
void Geometry::setAsideModules()
3333
{
34-
Float_t mPosModuleAx[Geometry::NCellsA] = {-12.2, -6.1, 0, 6.1, 12.2, -12.2, -6.1, 0,
35-
6.1, 12.2, -13.3743, -7.274299999999999,
36-
7.274299999999999, 13.3743, -12.2, -6.1, 0,
37-
6.1, 12.2, -12.2, -6.1, 0, 6.1, 12.2};
38-
39-
Float_t mPosModuleAy[Geometry::NCellsA] = {12.2, 12.2, 13.53, 12.2, 12.2, 6.1, 6.1,
40-
7.43, 6.1, 6.1, 0, 0, 0, 0, -6.1, -6.1,
41-
-7.43, -6.1, -6.1, -12.2, -12.2, -13.53,
42-
-12.2, -12.2};
34+
//These are coordinate positions for the sensitive elements within the FIT mother volume
35+
//measured from the CAD drawings. The positive/negative X values are referenced
36+
//from the back side of the frame lookinmg toward the interaction point
37+
Float_t mPosModuleAx[Geometry::NCellsA] = { -12.25, -6.15, -0.05, 6.15, 12.25,
38+
-12.25, -6.15, -0.05, 6.15, 12.25,
39+
-13.58, -7.48, 7.48, 13.58,
40+
-12.25, -6.15, 0.05, 6.15, 12.25,
41+
-12.25, -6.15, 0.05, 6.15, 12.25};
4342

43+
Float_t mPosModuleAy[Geometry::NCellsA] = { 12.2, 12.2, 13.53, 12.2, 12.2,
44+
6.1, 6.1, 7.43, 6.1, 6.1,
45+
0.0, 0.0, 0.0, 0.0,
46+
-6.1, -6.1, -7.43, -6.1, -6.1,
47+
-12.2, -12.2, -13.53, -12.2, -12.2};
4448
// A side Translations
4549
for (Int_t ipmt = 0; ipmt < NCellsA; ipmt++) {
4650
mMCP[ipmt].SetXYZ(mPosModuleAx[ipmt], mPosModuleAy[ipmt], ZdetA);

Detectors/FIT/FT0/simulation/include/FT0Simulation/Detector.h

Lines changed: 10 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -149,99 +149,32 @@ class Detector : public o2::base::DetImpl<Detector>
149149
std::vector<Double_t> mRindexFrontWindow;
150150

151151
// Define the aluminium frame for the detector
152-
TGeoVolume* constructFrameGeometry();
153-
std::string frame1CompositeShapeBoolean();
154-
std::string frame2CompositeShapeBoolean();
155-
std::string frameCompositeShapeBoolean();
156-
std::string plateGroupCompositeShapeBoolean();
157-
std::string opticalFiberPlateCompositeShapeBoolean1();
158-
std::string opticalFiberPlateCompositeShapeBoolean2();
159-
std::string pmtCornerCompositeShapeBoolean();
160-
std::string pmtCompositeShapeBoolean();
161-
std::string plateBoxCompositeShapeBoolean();
162-
void defineTransformations();
163-
void defineQuartzRadiatorTransformations();
164-
void definePmtTransformations();
165-
void definePlateTransformations();
166-
void defineFrameTransformations();
167-
152+
TGeoVolume* constructFrameAGeometry(); //A-side
153+
TGeoVolume* constructFrameCGeometry(); //C-side
154+
std::string cPlateShapeString();
155+
168156
// BEGIN: Support structure constants
169157
// define some error to avoid overlaps
170158
static constexpr Float_t sEps = 0.05;
171-
// offset found to potentially remove overlaps
172-
static constexpr Float_t sXoffset = 0.3027999999999995;
173-
static constexpr Float_t sYoffset = -0.6570999999999998;
174-
175-
// frame 1 has a longer side horizontal
176-
static constexpr Float_t sFrame1X = 21.500;
177-
static constexpr Float_t sFrame1Y = 13.705;
178-
static constexpr Float_t sFrame1PosX = 7.9278 - sXoffset;
179-
static constexpr Float_t sFrame1PosY = 9.2454 - sYoffset;
180-
static constexpr Float_t sRect1X = 15;
181-
static constexpr Float_t sRect1Y = 1.33;
182-
static constexpr Float_t sRect2X = 2.9;
183-
static constexpr Float_t sRect2Y = 12.2;
184-
static constexpr Float_t sRect3X = 1.57;
185-
static constexpr Float_t sRect3Y = .175;
186-
static constexpr Float_t sRect4X = 5.65;
187-
static constexpr Float_t sRect4Y = 1.075;
188-
// frame 2 has a longer side vertical
189-
static constexpr Float_t sFrame2X = 13.930;
190-
static constexpr Float_t sFrame2Y = 21.475;
191-
static constexpr Float_t sFrame2PosX = 10.1428 - sXoffset;
192-
static constexpr Float_t sFrame2PosY = -8.3446 - sYoffset;
193-
static constexpr Float_t sRect5X = 1.33;
194-
static constexpr Float_t sRect5Y = 12.1;
195-
196-
static constexpr Float_t sRect6X = .83;
197-
static constexpr Float_t sRect6Y = 3.0;
198-
static constexpr Float_t sRect7X = 13.1;
199-
static constexpr Float_t sRect7Y = 3.0;
200-
static constexpr Float_t sRect8X = 1.425;
201-
static constexpr Float_t sRect8Y = 5.5;
202-
203-
// both frame boxes are the same height
204159
static constexpr Float_t sFrameZ = 5.700;
205-
static constexpr Float_t sMountZ = 1.5;
206160

207161
// PMT socket dimensions
208162
static constexpr Float_t sPmtSide = 5.950;
209163
static constexpr Float_t sPmtZ = 3.750;
210164

211165
// quartz radiator socket dimensions
212-
// static constexpr Float_t sQuartzRadiatorSide = 5.350;
213-
// static constexpr Float_t sQuartzRadiatorZ = 1.950;
214-
static constexpr Float_t sQuartzRadiatorSide = 5.40;
215-
static constexpr Float_t sQuartzRadiatorZ = 2.0;
166+
static constexpr Float_t sQuartzRadiatorSide = 5.350;
167+
static constexpr Float_t sQuartzRadiatorZ = 1.950;
216168
// for the rounded socket corners
217-
static constexpr Float_t sCornerRadius = .300;
218-
219-
// bottom plates on the frame
220-
static constexpr Float_t sPlateSide = 6.000;
221-
static constexpr Float_t sBasicPlateZ = 0.200;
222-
static constexpr Float_t sCablePlateZ = 0.500;
223-
static constexpr Float_t sFiberHeadX = 0.675 * 2;
224-
static constexpr Float_t sFiberHeadY = 0.275 * 2;
225-
226-
// plate transformations
227-
static constexpr Float_t sOpticalFiberPlateZ = 0.35;
228-
static constexpr Float_t sPlateSpacing = 6.100;
229-
static constexpr Float_t sPlateDisplacementDeltaY = 1.33;
230-
static constexpr Float_t sPlateDisplacementX = sPlateSpacing + 0.3028;
231-
static constexpr Float_t sPlateDisplacementY = 12.8789 - sPlateDisplacementDeltaY;
232-
static constexpr Float_t sPlateGroupZ = -sFrameZ / 2 - sOpticalFiberPlateZ;
169+
static constexpr Float_t sCornerRadius = 0.300;
233170

234171
// quartz & PMT socket transformations
235172
static constexpr Float_t sQuartzHeight = -sFrameZ / 2 + sQuartzRadiatorZ / 2;
236173
static constexpr Float_t sPmtHeight = sFrameZ / 2 - sPmtZ / 2;
237-
static constexpr Float_t sPmtCornerTubePos = -.15;
174+
static constexpr Float_t sPmtCornerTubePos = -0.15;
238175
static constexpr Float_t sPmtCornerPos = 2.825;
239-
static constexpr Float_t sEdgeCornerPos[2] = {-6.515, -.515};
176+
static constexpr Float_t sEdgeCornerPos[2] = {-6.515, -0.515};
240177
static constexpr Float_t sQuartzFrameOffsetX = -1.525;
241-
static constexpr Float_t sPos1X[3] = {sQuartzFrameOffsetX - sPlateSpacing, sQuartzFrameOffsetX, sQuartzFrameOffsetX + sPlateSpacing};
242-
static constexpr Float_t sPos1Y[4] = {3.6275, -2.4725, 2.2975, -3.8025};
243-
static constexpr Float_t sPos2X[4] = {3.69, -2.410, 2.360, -3.740};
244-
static constexpr Float_t sPos2Y[3] = {7.6875, 1.5875, -4.5125};
245178
// END: Support structure constants
246179

247180
/// Container for data points
@@ -276,7 +209,7 @@ class Detector : public o2::base::DetImpl<Detector>
276209
Float_t mStartA[3] = {20., 20., 5};
277210
Float_t mInStart[3] = {2.9491, 2.9491, 2.6};
278211

279-
ClassDefOverride(Detector, 5);
212+
ClassDefOverride(Detector, 6);
280213
};
281214

282215
// Input and output function for standard C++ input/output.

0 commit comments

Comments
 (0)