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