Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 79 additions & 24 deletions Detectors/Upgrades/ALICE3/RICH/base/include/RICHBase/RICHBaseParam.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,39 +20,94 @@ namespace o2
namespace rich
{
struct RICHBaseParam : public o2::conf::ConfigurableParamHelper<RICHBaseParam> {
float zBaseSize = 18.6; // cm (18.4 in v3)
float rMax = 131.0; // cm (117.0 in v3)
float rMin = 104.0; // cm (90.0 in v3)
float radiatorThickness = 2.0; // cm
float detectorThickness = 0.2; // cm
float zRichLength = 700.0; // cm
int nRings = 11; // (25 in v3)
int nTiles = 44; // (36 in v3)
bool oddGeom = true; // (false in v3)

// FWD and BWD RICH
bool enableFWDRich = false;
bool enableBWDRich = false;
double zBaseSize = 18.6; // cm (18.4 in v3)
double rMax = 131.0; // cm (117.0 in v3)
double rMin = 104.0; // cm (90.0 in v3)
double radiatorThickness = 2.0; // cm
double zRichLength = 700.0; // cm
int nRings = 11; // (25 in v3)
int nTiles = 44; // (36 in v3)
bool oddGeom = true; // (false in v3)

float rFWDMin = 13.7413f;
float rFWDMax = 103.947f;
// The active and passive silicon thicknesses must sum to detectorThickness.
double siliconeLayerThickness = 0.010; // cm: 0.1 mm resin layer in front
double detectorThickness = 0.1; // cm
double activeSiliconThickness = 0.01; // cm: 0.1 mm sensitive silicon
// double passiveSiliconThickness = 0.09f; // cm: (detectorThickness - activeSiliconThickness)

// Aerogel:
float zAerogelMin = 375.f;
float zAerogelMax = 377.f;
// cylindrical aerogel layout
bool useCylindricalAerogel = true;
double cylindricalAerogelEtaRef = 0.85;

// Argon:
float zArgonMin = 377.f;
float zArgonMax = 407.f;
// Enable geometry with rectangular modules
bool useRectangularModules = true;

// Barrel photosensor active area.
double sipmActiveSizeZ = 18.0; // cm
double sipmActiveSizeRPhi = 17.0; // cm

// Gas refractive index (then scaled with chromaticity)
double nGasEffective = 1.0006;

// Aerogel refractive index (then scaled with chromaticity)
double nAerogelEffective = 1.03;

// Parameters for geometry with quadrants
bool flagUseQuadrants = false;
// Opening between adjacent vessel quadrants, measured as a chord at shieldRMin.
double vesselPhiGap = 1.0; // cm
// Thickness of each lateral insulating wall at a quadrant boundary.
double vesselThicknessShieldingLateral = 1.0; // cm
// Rectangular size could be smaller with quadrants (< 17 cm depending on wall thickness)
double quadrantModuleSizeRPhi = 16.5; // cm

// Readout stack behind each SiPM plane, thicknesses along the local outward normal.
double pcb1Thickness = 0.4; // cm
double coolingPlateThickness = 0.4; // cm
double pcb2Thickness = 0.4; // cm
double pcb3Thickness = 0.4; // cm
// Surface-to-surface gaps between consecutive layers.
double gapSiPMToPCB1 = 0.10; // cm
double gapPCB1ToCoolingPlate = 0.10; // cm
double gapCoolingPlateToPCB2 = 0.10; // cm
double gapPCB2ToPCB3 = 0.10; // cm

// Minimum edge-to-edge clearances used to avoid exact contacts between adjacent modules.
double moduleClearanceZ = 0.02; // cm
double moduleClearanceRPhi = 0.02; // cm

// Shielding:
// Radial boundaries of the complete cylindrical enclosure.
double shieldRMin = 100.0;
double shieldRMax = 136.0;
// Radial thickness of the inner insulating wall.
double innerWallThickness = 2.0;
// Radial thickness of the outer insulating wall.
double outerWallThickness = 2.0;
// Full longitudinal length of the cylindrical side walls.
double shieldLengthZ = 220.0;
// Thickness of each insulating end cap along Z.
double endCapThicknessZ = 2.0;

// FWD and BWD RICH (legacy)
bool enableFWDRich = false;
bool enableBWDRich = false;
double rFWDMin = 13.7413;
double rFWDMax = 103.947;
// Aerogel:
double zAerogelMin = 375.;
double zAerogelMax = 377.;
// Argon:
double zArgonMin = 377.;
double zArgonMax = 407.;
// Detector:
float zSiliconMin = 407.f;
float zSiliconMax = 407.2f;
double zSiliconMin = 407.;
double zSiliconMax = 407.2;

O2ParamDef(RICHBaseParam, "RICHBase");
};

} // namespace rich
} // end namespace o2

#endif
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,20 @@ class Ring
// z_ph: z position of the photosensitive surface (from the center)
Ring(int rPosId,
int nTilesPhi,
float rMin,
float rMax,
float radThick,
float radYmin,
float radYmax,
float radZ,
float photThick,
float photYmin,
float photYmax,
float photZ,
float radRad0,
float photRad0,
float aerDetDistance,
float thetaB,
double rMin,
double rMax,
double radThick,
double radYmin,
double radYmax,
double radZ,
double photThick,
double photYmin,
double photYmax,
double photZ,
double radRad0,
double photRad0,
double aerDetDistance,
double thetaB,
const std::string motherName = "RICHV");
~Ring() = default;

Expand All @@ -60,10 +60,10 @@ class Ring
private:
int mPosId; // id of the ring
int mNTiles; // number of modules
float mRRad; // max distance for radiators
float mRPhot; // max distance for photosensitive surfaces
float mRadThickness; // thickness of the radiator
float mPhotThickness; // thickness of the photosensitive surface
double mRRad; // max distance for radiators
double mRPhot; // max distance for photosensitive surfaces
double mRadThickness; // thickness of the radiator
double mPhotThickness; // thickness of the photosensitive surface

ClassDef(Ring, 0);
};
Expand All @@ -74,32 +74,32 @@ class FWDRich
public:
FWDRich() = default;
FWDRich(std::string name,
float rMin,
float rMax,
float zAerogelMin,
float dZAerogel,
float zArgonMin,
float dZArgon,
float zSiliconMin,
float dZSilicon);
double rMin,
double rMax,
double zAerogelMin,
double dZAerogel,
double zArgonMin,
double dZArgon,
double zSiliconMin,
double dZSilicon);
void createFWDRich(TGeoVolume* motherVolume);

protected:
std::string mName;
float mRmin;
float mRmax;
double mRmin;
double mRmax;

// Aerogel:
float mZAerogelMin;
float mDZAerogel;
double mZAerogelMin;
double mDZAerogel;

// Argon:
float mZArgonMin;
float mDZArgon;
double mZArgonMin;
double mDZArgon;

// Silicon:
float mZSiliconMin;
float mDZSilicon;
double mZSiliconMin;
double mDZSilicon;

ClassDef(FWDRich, 0);
};
Expand All @@ -109,32 +109,32 @@ class BWDRich
public:
BWDRich() = default;
BWDRich(std::string name,
float rMin,
float rMax,
float zAerogelMin,
float dZAerogel,
float zArgonMin,
float dZArgon,
float zSiliconMin,
float dZSilicon);
double rMin,
double rMax,
double zAerogelMin,
double dZAerogel,
double zArgonMin,
double dZArgon,
double zSiliconMin,
double dZSilicon);
void createBWDRich(TGeoVolume* motherVolume);

protected:
std::string mName;
float mRmin;
float mRmax;
double mRmin;
double mRmax;

// Aerogel:
float mZAerogelMin;
float mDZAerogel;
double mZAerogelMin;
double mDZAerogel;

// Argon:
float mZArgonMin;
float mDZArgon;
double mZArgonMin;
double mDZArgon;

// Silicon:
float mZSiliconMin;
float mDZSilicon;
double mZSiliconMin;
double mDZSilicon;

ClassDef(BWDRich, 0);
};
Expand Down
Loading