Skip to content

Commit aa4fa4d

Browse files
MarekKowalski1504shahor02
authored andcommitted
corrected cdrum geometry, added heat strips
1 parent ee27003 commit aa4fa4d

File tree

1 file changed

+51
-17
lines changed

1 file changed

+51
-17
lines changed

Detectors/TPC/simulation/src/Detector.cxx

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,8 +1387,8 @@ void Detector::ConstructTPCGeometry()
13871387
// guard rings for IFC - outer placed in inner insulator, inner placed in the drift gas (3 different radii)
13881388
// AL, 1.2 cm wide, 0.015 cm thick, volumes TPC_IGR1 - outer, TPC_IGR2-4 - inner
13891389
//
1390-
auto* igro = new TGeoTube(76.6624, 76.6774, 0.6);
1391-
auto* igrio = new TGeoTube(78.845, 78.86, 0.6); //outer part
1390+
auto* igro = new TGeoTube(76.6624, 76.6774, 0.6); //inner part, ends at inner radius of the IFC
1391+
auto* igrio = new TGeoTube(78.845, 78.86, 0.6); //outer part
13921392
auto* igrim = new TGeoTube(78.795, 78.81, 0.6);
13931393
auto* igric = new TGeoTube(78.785, 78.8, 0.6);
13941394
//
@@ -1436,20 +1436,27 @@ void Detector::ConstructTPCGeometry()
14361436
//
14371437
auto* cflv = new TGeoVolume("TPC_CDR", cfl, m3);
14381438
// sandwich
1439-
auto* cd1 = new TGeoTubeSeg(60.6224, 61.19, 71.1, 0.2, 119.2);
1440-
auto* cd2 = new TGeoTubeSeg(60.6262, 61.1862, 71.1, 0.2, 119.2);
1441-
auto* cd3 = new TGeoTubeSeg(60.6462, 61.1662, 71.1, 0.2, 119.2);
1442-
auto* cd4 = new TGeoTubeSeg(60.6562, 61.1562, 71.1, 0.2, 119.2);
1443-
auto* tepox4 = new TGeoTubeSeg(60.6224, 61.19, 71.1, 359.8, 0.8);
1439+
auto* cd1 = new TGeoTubeSeg(60.6224, 61.19, 69.8, 0.2, 119.95);
1440+
auto* cd2 = new TGeoTubeSeg(60.6262, 61.1862, 69.8, 0.2, 119.95);
1441+
auto* cd3 = new TGeoTubeSeg(60.6462, 61.1662, 69.8, 0.2, 119.95);
1442+
auto* cd4 = new TGeoTubeSeg(60.6562, 61.1562, 69.8, 0.2, 119.95);
1443+
auto* tepox4 = new TGeoTubeSeg(60.6224, 61.19, 69.8, 359.8, 0.8);
14441444
//
14451445
TGeoMedium* sm6 = gGeoManager->GetMedium("TPC_Prepreg1");
14461446
TGeoMedium* sm8 = gGeoManager->GetMedium("TPC_Epoxyfm");
1447-
auto* cd1v = new TGeoVolume("TPC_CDR1", cd1, sm2); // tedlar
1448-
auto* cd2v = new TGeoVolume("TPC_CDR2", cd2, sm6); // prepreg1
1449-
auto* cd3v = new TGeoVolume("TPC_CDR3", cd3, sm8); // epoxy film
1450-
auto* cd4v = new TGeoVolume("TPC_CDR4", cd4, sm4); // nomex
1451-
auto* tvep4 = new TGeoVolume("TPC_IFEPOX4", tepox4, smep);
1452-
1447+
auto* cd1v = new TGeoVolume("TPC_CDR1", cd1, sm2); // tedlar
1448+
auto* cd2v = new TGeoVolume("TPC_CDR2", cd2, sm6); // prepreg1
1449+
auto* cd3v = new TGeoVolume("TPC_CDR3", cd3, sm8); // epoxy film
1450+
auto* cd4v = new TGeoVolume("TPC_CDR4", cd4, sm4); // nomex
1451+
auto* tvep4 = new TGeoVolume("TPC_IFEPOX4", tepox4, smep); // epoxy glue
1452+
//
1453+
// joints between sections 1 deg prepreg1 placed in nomex at lower and upper radius + 0.1 deg of glue (epoxy)
1454+
//
1455+
auto* cdjl = new TGeoTubeSeg(60.6562, 60.6762, 69.8, 0., 1.0); //lower, to be rotated when positioned
1456+
auto* cdju = new TGeoTubeSeg(61.1362, 61.1562, 69.8, 0., 1.0); //upper, to be rotated when positioned
1457+
//
1458+
auto* cdjlv = new TGeoVolume("TPC_CDJL", cdjl, sm6);
1459+
auto* cdjuv = new TGeoVolume("TPC_CDJU", cdju, sm6);
14531460
//
14541461
// seals for central drum 2 copies
14551462
//
@@ -1482,20 +1489,47 @@ void Detector::ConstructTPCGeometry()
14821489
cd1v->AddNode(cd2v, 1);
14831490
cd2v->AddNode(cd3v, 1);
14841491
cd3v->AddNode(cd4v, 1); // sandwich
1492+
//
1493+
// joints, lower part and upper parts, placed in nomex
1494+
//
1495+
segrot = new TGeoRotation();
1496+
segrot->RotateZ(0.05);
1497+
cd4v->AddNode(cdjlv, 1, segrot);
1498+
cd4v->AddNode(cdjuv, 1, segrot);
1499+
segrot = new TGeoRotation();
1500+
segrot->RotateZ(118.95);
1501+
cd4v->AddNode(cdjlv, 2, segrot);
1502+
cd4v->AddNode(cdjuv, 2, segrot);
1503+
//
1504+
// according to the conversion data, segments have an additionaly rotated by 4.6 deg
1505+
//
14851506
// first segment
1486-
cflv->AddNode(cd1v, 1);
1487-
cflv->AddNode(tvep4, 1);
1507+
segrot = new TGeoRotation();
1508+
segrot->RotateZ(4.6);
1509+
cflv->AddNode(cd1v, 1, segrot);
1510+
cflv->AddNode(tvep4, 1, segrot);
14881511
// second segment
14891512
segrot = new TGeoRotation();
1490-
segrot->RotateZ(120.);
1513+
segrot->RotateZ(124.6);
14911514
cflv->AddNode(cd1v, 2, segrot);
14921515
cflv->AddNode(tvep4, 2, segrot);
14931516
// third segment
14941517
segrot = new TGeoRotation();
1495-
segrot->RotateZ(240.);
1518+
segrot->RotateZ(244.6);
14961519
cflv->AddNode(cd1v, 3, segrot);
14971520
cflv->AddNode(tvep4, 3, segrot);
14981521
//
1522+
// heating strips
1523+
//
1524+
auto* hstr = new TGeoTubeSeg(60.6124, 60.6224, 68.5, 0., 1.25);
1525+
auto* hstrv = new TGeoVolume("TPC_HSTR", hstr, m1); // air, caved out from cflv, first strip starts at 0 deg
1526+
for (Int_t i = 0; i < 144; i++) {
1527+
Double_t alpha = 1.25 + i * 2.5;
1528+
segrot = new TGeoRotation();
1529+
segrot->RotateZ(alpha);
1530+
cflv->AddNode(hstrv, i + 1, segrot);
1531+
}
1532+
//
14991533
v1->AddNode(siv, 1, new TGeoTranslation(0., 0., -69.9));
15001534
v1->AddNode(siv, 2, new TGeoTranslation(0., 0., 69.9));
15011535
v1->AddNode(sev, 1);

0 commit comments

Comments
 (0)