Skip to content

Commit d8b9d61

Browse files
committed
ITS3: Add metalstack to geometry
1 parent 64077ed commit d8b9d61

File tree

4 files changed

+25
-6
lines changed

4 files changed

+25
-6
lines changed

Detectors/Upgrades/ITS3/base/include/ITS3Base/SpecsV2.h

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,25 @@ constexpr std::array<int, 3> nHoles{11, 11, 11}; // how
106106
constexpr std::array<float, 3> radiusHoles{1.0 * mm, 1.0 * mm, 2.0 * mm}; // what is the radius of the holes for each layer?
107107
constexpr EColor color{kGray};
108108
} // namespace carbonfoam
109+
namespace metalstack
110+
{
111+
constexpr float thickness{5 * mu}; // physical thickness of the copper metal stack
112+
constexpr float length{segment::length};
113+
constexpr float width{segment::width};
114+
constexpr EColor color{kBlack};
115+
} // namespace metalstack
109116
constexpr unsigned int nLayers{3};
110117
constexpr unsigned int nTotLayers{7};
111118
constexpr unsigned int nSensorsIB{2 * nLayers};
112119
constexpr float equatorialGap{1 * mm};
113120
constexpr std::array<unsigned int, nLayers> nSegments{3, 4, 5};
114-
constexpr float thickness{50 * mu}; //< Physical Thickness of chip
115-
constexpr float effThickness{66 * mu}; //< Physical thickness + metal substrate
121+
constexpr float epitaxialThickness{10 * mu};
122+
constexpr float psubThickness{40 * mu};
123+
constexpr float thickness{epitaxialThickness + psubThickness}; // physical thickness of chip
124+
constexpr float effThickness{epitaxialThickness + psubThickness / 2.0}; // correction to the epitaxial layer
116125
constexpr std::array<float, nLayers> radii{19.0006 * mm, 25.228 * mm, 31.4554 * mm}; // middle radius e.g. inner radius+thickness/2.
117-
constexpr std::array<float, nLayers> radiiInner{radii[0] - thickness / 2.f, radii[1] - thickness / 2.f, radii[2] - thickness / 2.f}; // inner radius
118-
constexpr std::array<float, nLayers> radiiOuter{radii[0] + thickness / 2.f, radii[1] + thickness / 2.f, radii[2] + thickness / 2.f}; // inner radius
126+
constexpr std::array<float, nLayers> radiiInner{radii[0] - thickness / 2.0, radii[1] - thickness / 2.0, radii[2] - thickness / 2.0}; // inner radius
127+
constexpr std::array<float, nLayers> radiiOuter{radii[0] + thickness / 2.0, radii[1] + thickness / 2.0, radii[2] + thickness / 2.0}; // inner radius
119128
namespace detID
120129
{
121130
constexpr unsigned int mDetIDs{2 * 12 * 12 * 12}; //< 2 Hemispheres * (3,4,5=12 segments in a layer) * 12 RSUs in a segment * 12 Tiles in a RSU

Detectors/Upgrades/ITS3/macros/test/TestSensorGeometry.C

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void TestSensorGeometry(bool checkFull = false)
4545
if (checkFull) {
4646
gGeoManager->CheckGeometryFull();
4747
}
48-
gGeoManager->CheckOverlaps(0.0001);
48+
gGeoManager->CheckOverlaps(0.00001);
4949
TIter nextOverlap{gGeoManager->GetListOfOverlaps()};
5050
while ((obj = (TObject*)nextOverlap())) {
5151
LOGP(info, "Overlap in {}", obj->GetName());

Detectors/Upgrades/ITS3/simulation/include/ITS3Simulation/ITS3Layer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class ITS3Layer
8282
TGeoMedium* mSilicon{nullptr};
8383
TGeoMedium* mAir{nullptr};
8484
TGeoMedium* mCarbon{nullptr};
85+
TGeoMedium* mCopper{nullptr};
8586
void getMaterials(bool create = false);
8687
TGeoMedium* getMaterial(const char* matName, bool create = false);
8788

Detectors/Upgrades/ITS3/simulation/src/ITS3Layer.cxx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ void ITS3Layer::getMaterials(bool create)
4747
mSilicon = getMaterial("IT3_SI$", create);
4848
mAir = getMaterial("IT3_AIR$", create);
4949
mCarbon = getMaterial("IT3_CARBON$", create);
50+
mCopper = getMaterial("IT3_COPPER$", create);
5051
}
5152

5253
TGeoMedium* ITS3Layer::getMaterial(const char* matName, bool create)
@@ -276,11 +277,19 @@ void ITS3Layer::createChip()
276277
mChip = new TGeoVolumeAssembly(its3TGeo::getITS3ChipPattern(mNLayer));
277278
mChip->VisibleDaughters();
278279

280+
auto phiOffset = constants::segment::width / mR * o2m::Rad2Deg;
279281
for (unsigned int i{0}; i < constants::nSegments[mNLayer]; ++i) {
280-
double phiOffset = constants::segment::width / mR * o2m::Rad2Deg;
281282
auto rot = new TGeoRotation("", 0, 0, phiOffset * i);
282283
mChip->AddNode(mSegment, i, rot);
283284
}
285+
286+
// Add metal stack positioned radially outward
287+
auto zMoveMetal = new TGeoTranslation(0, 0, constants::metalstack::length / 2. - constants::segment::lec::length);
288+
auto metal = new TGeoTubeSeg(mRmax, mRmax + constants::metalstack::thickness, constants::metalstack::length / 2., 0, 3.0 * phiOffset);
289+
auto metalVol = new TGeoVolume(Form("metal%d", mNLayer), metal, mCopper);
290+
metalVol->SetLineColor(constants::metalstack::color);
291+
metalVol->RegisterYourself();
292+
mChip->AddNode(metalVol, 0, zMoveMetal);
284293
}
285294

286295
void ITS3Layer::createCarbonForm()

0 commit comments

Comments
 (0)