Skip to content

Commit 48a4fd6

Browse files
committed
fix positioning of chips in modules + update otof geometry
1 parent e7f2545 commit 48a4fd6

6 files changed

Lines changed: 125 additions & 159 deletions

File tree

‎Detectors/Upgrades/ALICE3/IOTOF/base/include/IOTOFBase/IOTOFBaseParam.h‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ namespace iotof
2121
{
2222

2323
struct ChipSpecifics {
24-
int NCols = 129;
25-
int NRows = 271;
24+
int NCols = 120;
25+
int NRows = 240;
2626
float PitchCol = 250.00e-4;
2727
float PitchRow = 100.00e-4;
28-
float PassiveEdgeReadOut = 0.;
28+
float PassiveEdgeReadOut = 0.2;
2929
float PassiveEdgeTop = 0.;
3030
float PassiveEdgeSide = 0.;
3131
float PixelPassiveEdgeX = 0.;
@@ -63,11 +63,10 @@ struct IOTOFBaseParam : public o2::conf::ConfigurableParamHelper<IOTOFBaseParam>
6363

6464
// OTOF segmentation parameters
6565
float otofRadius = 92.f; // OTOF radius (cm)
66-
float otofLength = 680.f; // OTOF length (cm)
66+
float otofLength = 688.54f; // OTOF length (cm)
6767
int otofNStaves = 62; // OTOF number of staves
6868
float otofStaveTilt = 5; // OTOF stave tilt angle (deg)
6969

70-
7170
O2ParamDef(IOTOFBaseParam, "IOTOFBase");
7271
};
7372

‎Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/Layer.h‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class Layer
3434
auto getZLength() const { return mZLength; }
3535
auto getZOffset() const { return mZOffset; }
3636
auto getx2X0() const { return mX2X0; }
37-
auto getChipThickness() const { return mChipThickness; }
37+
auto getChipThickness() const { return mLayerThickness; }
3838
auto getName() const { return mLayerName; }
3939
auto getLayout() const { return mLayout; }
4040
auto getSegments() const { return mStaves; }
@@ -52,13 +52,19 @@ class Layer
5252
float mZLength;
5353
float mZOffset{0.f}; // Of use when fwd layers
5454
float mX2X0;
55-
float mChipThickness; // Thickness of the chip in cm, derived from mX2X0 and the radiation length of silicon
55+
float mLayerThickness; // Thickness of the layer in cm, derived from mX2X0 and the radiation length of silicon
5656
float mSensorThickness; // Thickness of the sensor in cm, to be subtracted from the chip thickness to get the total module thickness
5757
int mLayout{kBarrel}; // Identifier of the type of layer layout (barrel, disk, barrel segmented, disk segmented)
5858
// To be used only in case of the segmented layout, to define the number of staves in phi (for barrel) or in r (for disk)
5959
std::pair<int, float> mStaves{0, 0.0f}; // Number and size of staves in phi (for barrel) or in r (for disk) in case of segmented layout
6060
int mModulesPerStave{0}; // Number of modules along a stave
6161
double mTiltAngle{0.0}; // Tilt angle in degrees to be applied as a rotation around the local center of the stave
62+
63+
static const int sChipsPerRow; // number of chips per row in module
64+
static const int sChipsPerCol; // number of chips per col in module
65+
static const double sChipGap; // gap between chips in module
66+
static const double sModuleGap; // gap between modules in stave
67+
static const double sChipThickness; // full thickness of the chip
6268
};
6369

6470
class ITOFLayer : public Layer
@@ -67,6 +73,8 @@ class ITOFLayer : public Layer
6773
using Layer::Layer;
6874
virtual void createLayer(TGeoVolume* motherVolume) override;
6975
static std::vector<std::string> mRegister;
76+
77+
private:
7078
};
7179

7280
class OTOFLayer : public Layer
@@ -75,6 +83,9 @@ class OTOFLayer : public Layer
7583
using Layer::Layer;
7684
virtual void createLayer(TGeoVolume* motherVolume) override;
7785
static std::vector<std::string> mRegister;
86+
87+
static const double sSubStavesDistanceY;
88+
static const double sSubStavesOverlapX;
7889
};
7990

8091
class FTOFLayer : public Layer

‎Detectors/Upgrades/ALICE3/IOTOF/simulation/include/IOTOFSimulation/TF3Chip.h‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ class TF3Chip
4545

4646
static void createMaterials(Int_t id, Int_t fieldType, Float_t maxField);
4747

48-
private:
49-
static constexpr double chipSizeX = 2.6; // cm
50-
static constexpr double chipSizeZ = 3; // cm (TODO: will be decreased to 3 cm)
48+
static const double getChipSizeX() { return sChipSizeX; };
49+
static const double getChipSizeY() { return sChipSizeZ; };
50+
51+
static const double sChipSizeX;
52+
static const double sChipSizeZ;
5153

5254
ClassDefNV(TF3Chip, 0); // TF3Chip geometry
5355
};

‎Detectors/Upgrades/ALICE3/IOTOF/simulation/src/Detector.cxx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ void Detector::configLayers(bool itof, bool otof, bool ftof, bool btof, std::str
128128
const int nStaves = itofSegmented ? iotofPars.itofNStaves : 0; // number of staves in segmented case
129129
const double staveWidth = itofSegmented ? 5.42 : 0.0; // cm
130130
const double staveTiltAngle = itofSegmented ? iotofPars.itofStaveTilt : 0.0; // degrees
131-
const int modulesPerStave = itofSegmented ? 7 : 0; // number of modules per stave in segmented case
131+
const int modulesPerStave = itofSegmented ? 7 : 0; // number of modules per stave in segmented case
132132
mITOFLayer = ITOFLayer(name,
133133
dInnerTof.first, 0.f, dInnerTof.second, 0.f, x2x0, itofSegmented ? ITOFLayer::kBarrelSegmented : ITOFLayer::kBarrel,
134134
nStaves, staveWidth, staveTiltAngle, modulesPerStave, itofSegmented ? sensorThickness : 0.0f);
@@ -138,7 +138,7 @@ void Detector::configLayers(bool itof, bool otof, bool ftof, bool btof, std::str
138138
const int nStaves = otofSegmented ? iotofPars.otofNStaves : 0; // number of staves in segmented case
139139
const double staveWidth = otofSegmented ? 9.74 : 0.0; // cm
140140
const double staveTiltAngle = otofSegmented ? iotofPars.otofStaveTilt : 0.0; // degrees
141-
const int modulesPerStave = otofSegmented ? 54 : 0; // number of modules per stave in segmented case
141+
const int modulesPerStave = otofSegmented ? 38 : 0; // number of modules per stave in segmented case
142142
mOTOFLayer = OTOFLayer(name,
143143
dOuterTof.first, 0.f, dOuterTof.second, 0.f, x2x0, otofSegmented ? OTOFLayer::kBarrelSegmented : OTOFLayer::kBarrel,
144144
nStaves, staveWidth, staveTiltAngle, modulesPerStave, otofSegmented ? sensorThickness : 0.0f);

0 commit comments

Comments
 (0)