Skip to content

Commit 0572321

Browse files
Nicola NicassioNicola Nicassio
authored andcommitted
Latest v3b.1 RICH geometry with quadrants, modules and shielding
1 parent 7dc1b63 commit 0572321

4 files changed

Lines changed: 1331 additions & 223 deletions

File tree

Detectors/Upgrades/ALICE3/RICH/base/include/RICHBase/RICHBaseParam.h

Lines changed: 74 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,89 @@ namespace o2
2020
namespace rich
2121
{
2222
struct RICHBaseParam : public o2::conf::ConfigurableParamHelper<RICHBaseParam> {
23-
float zBaseSize = 18.6; // cm (18.4 in v3)
24-
float rMax = 131.0; // cm (117.0 in v3)
25-
float rMin = 104.0; // cm (90.0 in v3)
26-
float radiatorThickness = 2.0; // cm
27-
float detectorThickness = 0.2; // cm
28-
float zRichLength = 700.0; // cm
23+
double zBaseSize = 18.6; // cm (18.4 in v3)
24+
double rMax = 131.0; // cm (117.0 in v3)
25+
double rMin = 104.0; // cm (90.0 in v3)
26+
double radiatorThickness = 2.0; // cm
27+
double zRichLength = 700.0; // cm
2928
int nRings = 11; // (25 in v3)
3029
int nTiles = 44; // (36 in v3)
3130
bool oddGeom = true; // (false in v3)
31+
32+
// The active and passive silicon thicknesses must sum to detectorThickness.
33+
double siliconeLayerThickness = 0.010; // cm: 0.1 mm resin layer in front
34+
double detectorThickness = 0.1; // cm
35+
double activeSiliconThickness = 0.01; // cm: 0.1 mm sensitive silicon
36+
//double passiveSiliconThickness = 0.09f; // cm: (detectorThickness - activeSiliconThickness)
37+
38+
//cylindrical aerogel layout
39+
bool useCylindricalAerogel = true;
40+
double cylindricalAerogelEtaRef = 0.85;
41+
42+
// Enable geometry with rectangular modules
43+
bool useRectangularModules = true;
44+
45+
// Barrel photosensor active area.
46+
double sipmActiveSizeZ = 18.0; // cm
47+
double sipmActiveSizeRPhi = 17.0; // cm
3248

33-
// FWD and BWD RICH
34-
bool enableFWDRich = false;
35-
bool enableBWDRich = false;
49+
// Gas refractive index (then scaled with chromaticity)
50+
double nGasEffective = 1.0006;
3651

37-
float rFWDMin = 13.7413f;
38-
float rFWDMax = 103.947f;
52+
// Aerogel refractive index (then scaled with chromaticity)
53+
double nAerogelEffective = 1.03;
3954

40-
// Aerogel:
41-
float zAerogelMin = 375.f;
42-
float zAerogelMax = 377.f;
55+
// Parameters for geometry with quadrants
56+
bool flagUseQuadrants = false;
57+
// Opening between adjacent vessel quadrants, measured as a chord at shieldRMin.
58+
double vesselPhiGap = 1.0; // cm
59+
// Thickness of each lateral insulating wall at a quadrant boundary.
60+
double vesselThicknessShieldingLateral = 1.0; // cm
61+
// Rectangular size could be smaller with quadrants (< 17 cm depending on wall thickness)
62+
double quadrantModuleSizeRPhi = 16.5; // cm
4363

44-
// Argon:
45-
float zArgonMin = 377.f;
46-
float zArgonMax = 407.f;
64+
// Readout stack behind each SiPM plane, thicknesses along the local outward normal.
65+
double pcb1Thickness = 0.4; // cm
66+
double coolingPlateThickness = 0.4; // cm
67+
double pcb2Thickness = 0.4; // cm
68+
double pcb3Thickness = 0.4; // cm
69+
// Surface-to-surface gaps between consecutive layers.
70+
double gapSiPMToPCB1 = 0.10; // cm
71+
double gapPCB1ToCoolingPlate = 0.10; // cm
72+
double gapCoolingPlateToPCB2 = 0.10; // cm
73+
double gapPCB2ToPCB3 = 0.10; // cm
74+
75+
// Minimum edge-to-edge clearances used to avoid exact contacts between adjacent modules.
76+
double moduleClearanceZ = 0.02; // cm
77+
double moduleClearanceRPhi = 0.02; // cm
78+
79+
// Shielding:
80+
// Radial boundaries of the complete cylindrical enclosure.
81+
double shieldRMin = 100.0;
82+
double shieldRMax = 136.0;
83+
// Radial thickness of the inner insulating wall.
84+
double innerWallThickness = 2.0;
85+
// Radial thickness of the outer insulating wall.
86+
double outerWallThickness = 2.0;
87+
// Full longitudinal length of the cylindrical side walls.
88+
double shieldLengthZ = 220.0;
89+
// Thickness of each insulating end cap along Z.
90+
double endCapThicknessZ = 2.0;
4791

92+
// FWD and BWD RICH (legacy)
93+
bool enableFWDRich = false;
94+
bool enableBWDRich = false;
95+
double rFWDMin = 13.7413;
96+
double rFWDMax = 103.947;
97+
// Aerogel:
98+
double zAerogelMin = 375.;
99+
double zAerogelMax = 377.;
100+
// Argon:
101+
double zArgonMin = 377.;
102+
double zArgonMax = 407.;
48103
// Detector:
49-
float zSiliconMin = 407.f;
50-
float zSiliconMax = 407.2f;
104+
double zSiliconMin = 407.;
105+
double zSiliconMax = 407.2;
51106

52107
O2ParamDef(RICHBaseParam, "RICHBase");
53108
};

Detectors/Upgrades/ALICE3/RICH/simulation/include/RICHSimulation/RICHRing.h

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,20 @@ class Ring
3535
// z_ph: z position of the photosensitive surface (from the center)
3636
Ring(int rPosId,
3737
int nTilesPhi,
38-
float rMin,
39-
float rMax,
40-
float radThick,
41-
float radYmin,
42-
float radYmax,
43-
float radZ,
44-
float photThick,
45-
float photYmin,
46-
float photYmax,
47-
float photZ,
48-
float radRad0,
49-
float photRad0,
50-
float aerDetDistance,
51-
float thetaB,
38+
double rMin,
39+
double rMax,
40+
double radThick,
41+
double radYmin,
42+
double radYmax,
43+
double radZ,
44+
double photThick,
45+
double photYmin,
46+
double photYmax,
47+
double photZ,
48+
double radRad0,
49+
double photRad0,
50+
double aerDetDistance,
51+
double thetaB,
5252
const std::string motherName = "RICHV");
5353
~Ring() = default;
5454

@@ -60,10 +60,10 @@ class Ring
6060
private:
6161
int mPosId; // id of the ring
6262
int mNTiles; // number of modules
63-
float mRRad; // max distance for radiators
64-
float mRPhot; // max distance for photosensitive surfaces
65-
float mRadThickness; // thickness of the radiator
66-
float mPhotThickness; // thickness of the photosensitive surface
63+
double mRRad; // max distance for radiators
64+
double mRPhot; // max distance for photosensitive surfaces
65+
double mRadThickness; // thickness of the radiator
66+
double mPhotThickness; // thickness of the photosensitive surface
6767

6868
ClassDef(Ring, 0);
6969
};
@@ -74,32 +74,32 @@ class FWDRich
7474
public:
7575
FWDRich() = default;
7676
FWDRich(std::string name,
77-
float rMin,
78-
float rMax,
79-
float zAerogelMin,
80-
float dZAerogel,
81-
float zArgonMin,
82-
float dZArgon,
83-
float zSiliconMin,
84-
float dZSilicon);
77+
double rMin,
78+
double rMax,
79+
double zAerogelMin,
80+
double dZAerogel,
81+
double zArgonMin,
82+
double dZArgon,
83+
double zSiliconMin,
84+
double dZSilicon);
8585
void createFWDRich(TGeoVolume* motherVolume);
8686

8787
protected:
8888
std::string mName;
89-
float mRmin;
90-
float mRmax;
89+
double mRmin;
90+
double mRmax;
9191

9292
// Aerogel:
93-
float mZAerogelMin;
94-
float mDZAerogel;
93+
double mZAerogelMin;
94+
double mDZAerogel;
9595

9696
// Argon:
97-
float mZArgonMin;
98-
float mDZArgon;
97+
double mZArgonMin;
98+
double mDZArgon;
9999

100100
// Silicon:
101-
float mZSiliconMin;
102-
float mDZSilicon;
101+
double mZSiliconMin;
102+
double mDZSilicon;
103103

104104
ClassDef(FWDRich, 0);
105105
};
@@ -109,32 +109,32 @@ class BWDRich
109109
public:
110110
BWDRich() = default;
111111
BWDRich(std::string name,
112-
float rMin,
113-
float rMax,
114-
float zAerogelMin,
115-
float dZAerogel,
116-
float zArgonMin,
117-
float dZArgon,
118-
float zSiliconMin,
119-
float dZSilicon);
112+
double rMin,
113+
double rMax,
114+
double zAerogelMin,
115+
double dZAerogel,
116+
double zArgonMin,
117+
double dZArgon,
118+
double zSiliconMin,
119+
double dZSilicon);
120120
void createBWDRich(TGeoVolume* motherVolume);
121121

122122
protected:
123123
std::string mName;
124-
float mRmin;
125-
float mRmax;
124+
double mRmin;
125+
double mRmax;
126126

127127
// Aerogel:
128-
float mZAerogelMin;
129-
float mDZAerogel;
128+
double mZAerogelMin;
129+
double mDZAerogel;
130130

131131
// Argon:
132-
float mZArgonMin;
133-
float mDZArgon;
132+
double mZArgonMin;
133+
double mDZArgon;
134134

135135
// Silicon:
136-
float mZSiliconMin;
137-
float mDZSilicon;
136+
double mZSiliconMin;
137+
double mDZSilicon;
138138

139139
ClassDef(BWDRich, 0);
140140
};

0 commit comments

Comments
 (0)