Skip to content

Commit 40accf2

Browse files
MarekKowalski1504sawenzel
authored andcommitted
Removed fake overlaps. Added guard rings for IFC and OFC
1 parent d437d52 commit 40accf2

File tree

1 file changed

+58
-7
lines changed

1 file changed

+58
-7
lines changed

Detectors/TPC/simulation/src/Detector.cxx

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,21 @@ void Detector::ConstructTPCGeometry()
11241124
v2->AddNode(v4, 1);
11251125
//
11261126
v1->AddNode(v2, 1);
1127+
//
1128+
// Outer field cage guard rings. Inner placed in the drift gas, outer placed in the outer insulator (CO2)
1129+
//
1130+
auto* ogri = new TGeoTube(257.985, 258., 0.6); // placed in the drift volume
1131+
auto* ogro = new TGeoTube(260.0676, 260.0826, 0.6); //placed in the outer insulator
1132+
//
1133+
auto* ogriv = new TGeoVolume("TPC_OGRI", ogri, m3);
1134+
auto* ogrov = new TGeoVolume("TPC_OGRO", ogro, m3);
1135+
//
1136+
for (Int_t i = 0; i < 24; i++) {
1137+
v9->AddNode(ogriv, (i + 1), new TGeoTranslation(0., 0., (i + 1) * 10));
1138+
v9->AddNode(ogriv, (i + 25), new TGeoTranslation(0., 0., -(i + 1) * 10));
1139+
v2->AddNode(ogrov, (i + 1), new TGeoTranslation(0., 0., (i + 1) * 10));
1140+
v2->AddNode(ogrov, (i + 25), new TGeoTranslation(0., 0., -(i + 1) * 10));
1141+
}
11271142
//--------------------------------------------------------------------
11281143
// Tpc Inner INsulator (CO2)
11291144
// the cones, the central drum and the inner f.c. sandwich with a piece
@@ -1366,6 +1381,42 @@ void Detector::ConstructTPCGeometry()
13661381
v1->AddNode(hvss, 1, new TGeoTranslation(0., 0., 163.8));
13671382
v9->AddNode(tv100, 1);
13681383
//
1384+
// guard rings for IFC - outer placed in inner insulator, inner placed in the drift gas (3 different radii)
1385+
// AL, 1.2 cm wide, 0.015 cm thick, volumes TPC_IGR1 - outer, TPC_IGR2-4 - inner
1386+
//
1387+
auto* igro = new TGeoTube(76.6624, 76.6774, 0.6);
1388+
auto* igrio = new TGeoTube(78.845, 78.86, 0.6); //outer part
1389+
auto* igrim = new TGeoTube(78.795, 78.81, 0.6);
1390+
auto* igric = new TGeoTube(78.785, 78.8, 0.6);
1391+
//
1392+
// volumes
1393+
//
1394+
auto* igrov = new TGeoVolume("TPC_IGR1", igro, m3);
1395+
auto* igriov = new TGeoVolume("TPC_IGR2", igrio, m3);
1396+
auto* igrimv = new TGeoVolume("TPC_IGR3", igrim, m3);
1397+
auto* igricv = new TGeoVolume("TPC_IGR4", igric, m3);
1398+
//
1399+
// outer guard rings for IFC placement - every 10 cm
1400+
//
1401+
for (Int_t i = 0; i < 24; i++) {
1402+
v5->AddNode(igrov, (i + 1), new TGeoTranslation(0., 0., (i + 1) * 10));
1403+
v5->AddNode(igrov, (i + 25), new TGeoTranslation(0., 0., -(i + 1) * 10));
1404+
}
1405+
//
1406+
// inner guard rings for IFC placement
1407+
//
1408+
for (Int_t i = 0; i < 9; i++) {
1409+
v9->AddNode(igricv, (i + 1), new TGeoTranslation(0., 0., (i + 1) * 10));
1410+
v9->AddNode(igricv, (i + 10), new TGeoTranslation(0., 0., -(i + 1) * 10));
1411+
}
1412+
v9->AddNode(igrimv, 1, new TGeoTranslation(0., 0., 100.));
1413+
v9->AddNode(igrimv, 2, new TGeoTranslation(0., 0., -100.));
1414+
//
1415+
for (Int_t i = 0; i < 13; i++) {
1416+
v9->AddNode(igriov, i + 1, new TGeoTranslation(0., 0., 100 + (i + 1) * 10));
1417+
v9->AddNode(igriov, i + 14, new TGeoTranslation(0., 0., -(100 + (i + 1) * 10)));
1418+
}
1419+
//
13691420
// central drum
13701421
//
13711422
// flange + sandwich
@@ -1479,21 +1530,21 @@ void Detector::ConstructTPCGeometry()
14791530
Double_t lowEdge = 86.3; // hole in the wheel
14801531
Double_t upEdge = 240.4; // hole in the wheel
14811532
//
1482-
new TGeoTubeSeg("sec", 74.5, 264.4, 3., 0., 20.);
1533+
new TGeoTubeSeg("tpc_ssec", 74.5, 264.4, 3., 0., 20.);
14831534
//
1484-
auto* hole = new TGeoPgon("hole", 0., 20., 1, 4);
1535+
auto* tpc_hole = new TGeoPgon("tpc_hole", 0., 20., 1, 4);
14851536
//
1486-
hole->DefineSection(0, -3.5, lowEdge - shift, upEdge - shift);
1487-
hole->DefineSection(1, -1.5, lowEdge - shift, upEdge - shift);
1537+
tpc_hole->DefineSection(0, -3.5, lowEdge - shift, upEdge - shift);
1538+
tpc_hole->DefineSection(1, -1.5, lowEdge - shift, upEdge - shift);
14881539
//
1489-
hole->DefineSection(2, -1.5, lowEdge - shift, upEdge + 3. - shift);
1490-
hole->DefineSection(3, 3.5, lowEdge - shift, upEdge + 3. - shift);
1540+
tpc_hole->DefineSection(2, -1.5, lowEdge - shift, upEdge + 3. - shift);
1541+
tpc_hole->DefineSection(3, 3.5, lowEdge - shift, upEdge + 3. - shift);
14911542
//
14921543
Double_t ys = shift * TMath::Sin(openingAngle);
14931544
Double_t xs = shift * TMath::Cos(openingAngle);
14941545
auto* tr = new TGeoTranslation("tr", xs, ys, 0.);
14951546
tr->RegisterYourself();
1496-
auto* chamber = new TGeoCompositeShape("sec-hole:tr");
1547+
auto* chamber = new TGeoCompositeShape("tpc_ssec-tpc_hole:tr");
14971548
auto* sv = new TGeoVolume("TPC_WSEG", chamber, m3);
14981549
auto* bar = new TGeoPgon("bar", 0., 20., 1, 2);
14991550
bar->DefineSection(0, -3., 131.5 - shift, 136.5 - shift);

0 commit comments

Comments
 (0)