@@ -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