diff --git a/Core/tests/src/test_deut_detailed.cpp b/Core/tests/src/test_deut_detailed.cpp index 341f81981d6ec37a8cd6f7d1191335d47cb524f1..3df4a4d07098e458514095d5585dbc563e73a47c 100644 --- a/Core/tests/src/test_deut_detailed.cpp +++ b/Core/tests/src/test_deut_detailed.cpp @@ -126,7 +126,9 @@ static long test_load_deut( dd4hep::Detector& description, int argc, char** argv } dd4hep::printout( dd4hep::INFO, "UT", "Checked global position of A-side" ); - // check ChannelID vs VolumeID + ///////////////////////////////// + /* check ChannelID vs VolumeID */ + ///////////////////////////////// for ( const auto& side : ut.sides() ) for ( const auto& layer : side.layers() ) for ( const auto& stave : layer.staves() ) @@ -158,15 +160,45 @@ static long test_load_deut( dd4hep::Detector& description, int argc, char** argv dd4hep::printout( dd4hep::DEBUG, "UTCondition", "values[%d]: %.0f", i, values[i].get<double>() ); } } - // for ( const std::string& layer_name : layer_names ) { - // const auto& values = readoutMapCond[layer_name + "Map"]; // implement for all layers - // for ( std::size_t i = 0; i < values.size(); i++ ) { - // dd4hep::printout( dd4hep::DEBUG, layer_name + "ReadoutMap", "values[%d]: %.0f", i, values[i].get<double>() ); - // } - // } } catch ( const char* msg ) { allChecksOK = false; } dd4hep::printout( dd4hep::INFO, "UTCondition", "Successfully accessed ReadoutMap condition" ); + //////////////////////// + /* check getLayerGeom */ + //////////////////////// + std::array<float, 4> z_values{{2328.15, 2383.15, 2593.15, 2648.15}}; + std::array<float, 4> invHalfSectorYSize_values{{0.0209205, 0.0210004, 0.0210004, 0.0209205}}; + std::array<float, 4> invHalfSectorXSize_values{{0.0209263, 0.0209166, 0.0209166, 0.0209263}}; + std::array<float, 4> dxDy_values{{0, 0.0874886, -0.0874886, 0}}; + for ( unsigned int i = 0; i < 4; i++ ) { + auto layerGeom = ut.getLayerGeom( i ); + if ( layerGeom.z - z_values[i] > 0.01 ) { + std::cerr << "layer " << layer_names[i] << " has z=" << layerGeom.z << ", expected z=" << z_values[i] + << ", diff=" << layerGeom.z - z_values[i] << std::endl; + allChecksOK = false; + } + if ( layerGeom.invHalfSectorYSize - invHalfSectorYSize_values[i] > 1e-5 ) { + std::cerr << "layer " << layer_names[i] << " has invHalfSectorYSize=" << layerGeom.invHalfSectorYSize + << ", expected invHalfSectorYSize=" << invHalfSectorYSize_values[i] + << ", diff=" << layerGeom.invHalfSectorYSize - invHalfSectorYSize_values[i] << std::endl; + allChecksOK = false; + } + if ( layerGeom.invHalfSectorXSize - invHalfSectorXSize_values[i] > 1e-5 ) { + std::cerr << "layer " << layer_names[i] << " has invHalfSectorXSize=" << layerGeom.invHalfSectorXSize + << ", expected invHalfSectorXSize=" << invHalfSectorXSize_values[i] + << ", diff=" << layerGeom.invHalfSectorXSize - invHalfSectorXSize_values[i] << std::endl; + allChecksOK = false; + } + if ( layerGeom.dxDy - dxDy_values[i] > 1e-5 ) { + std::cerr << "layer " << layer_names[i] << "has dxDy=" << layerGeom.dxDy << ", expected dxDy=" << dxDy_values[i] + << ", diff=" << layerGeom.dxDy - dxDy_values[i] << std::endl; + allChecksOK = false; + } + } + + //////////////////////////////////////////////// + /* sector and stave names based on GeoVersion */ + //////////////////////////////////////////////// std::vector<std::string> sector_names; std::vector<std::string> stave_names; if ( ut.version() == LHCb::Detector::UT::DeUT::GeoVersion::v1 ) { @@ -1080,17 +1112,6 @@ static long test_load_deut( dd4hep::Detector& description, int argc, char** argv "UTbXLayerR3Module7Sector9"}; } - // // FIXME: testing accessibility of production map from Condition DB - // dd4hep::printout( dd4hep::INFO, "UT", "Accessing ProductionMap.yml" ); - // try { - // const auto& prodMapCond = slice->get( utdet, LHCb::Detector::item_key( "ProductionMap" ) ).get<nlohmann::json>(); - // for ( const std::string& stave_name : stave_names ) { - // dd4hep::printout( dd4hep::INFO, "UT", "Accessing " + stave_name ); - // dd4hep::printout( dd4hep::DEBUG, stave_name, +"ProdID: %.0f", prodMapCond[stave_name]["ProdID"].get<double>() - // ); - // } - // } catch ( const char* msg ) { allChecksOK = false; } - // testing accessibility of noise values try { const auto& noiseValueCond = slice->get( utdet, LHCb::Detector::item_key( "NoiseValues" ) ).get<nlohmann::json>(); diff --git a/Core/tests/src/test_deut_stave_positions.cpp b/Core/tests/src/test_deut_stave_positions.cpp index 08c2c5dfe73e0a132528dc6918358953972b64fa..c969972f896ddb7c2e2e35467387f8ce16a33825 100644 --- a/Core/tests/src/test_deut_stave_positions.cpp +++ b/Core/tests/src/test_deut_stave_positions.cpp @@ -71,7 +71,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch bool allChecksOK{true}; std::map<std::string, ROOT::Math::XYZPoint> stave_positions{ - {"UTCsideUTaUStave1", ROOT::Math::XYZPoint{-47.0, 0.0, 2365}}, + {"UTCsideUTaUStave1", ROOT::Math::XYZPoint{-47.0, 4.096, 2365}}, {"UTCsideUTaUStave2", ROOT::Math::XYZPoint{-143.3, 0.0, 2380}}, {"UTCsideUTaUStave3", ROOT::Math::XYZPoint{-237.6, 0.0, 2365}}, {"UTCsideUTaUStave4", ROOT::Math::XYZPoint{-335.2, 0.0, 2380}}, @@ -79,7 +79,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch {"UTCsideUTaUStave6", ROOT::Math::XYZPoint{-527.1, 0.0, 2380}}, {"UTCsideUTaUStave7", ROOT::Math::XYZPoint{-619.2, 0.0, 2365}}, {"UTCsideUTaUStave8", ROOT::Math::XYZPoint{-719.0, 0.0, 2380}}, - {"UTAsideUTaUStave1", ROOT::Math::XYZPoint{47.0, 0.0, 2380}}, + {"UTAsideUTaUStave1", ROOT::Math::XYZPoint{47.0, -4.096, 2380}}, {"UTAsideUTaUStave2", ROOT::Math::XYZPoint{142.1, 0.0, 2365}}, {"UTAsideUTaUStave3", ROOT::Math::XYZPoint{239, 0.0, 2380}}, {"UTAsideUTaUStave4", ROOT::Math::XYZPoint{332.9, 0.0, 2365}}, @@ -103,7 +103,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch {"UTAsideUTaXStave6", ROOT::Math::XYZPoint{523.8, 0.0, 2310}}, {"UTAsideUTaXStave7", ROOT::Math::XYZPoint{623.2, 0.0, 2325}}, {"UTAsideUTaXStave8", ROOT::Math::XYZPoint{714.6, 0.0, 2310}}, - {"UTCsideUTbVStave1", ROOT::Math::XYZPoint{-47, 0.0, 2590}}, + {"UTCsideUTbVStave1", ROOT::Math::XYZPoint{-47, -4.096, 2590}}, {"UTCsideUTbVStave2", ROOT::Math::XYZPoint{-143.3, 0.0, 2605}}, {"UTCsideUTbVStave3", ROOT::Math::XYZPoint{-237.9, 0.0, 2590}}, {"UTCsideUTbVStave4", ROOT::Math::XYZPoint{-335.2, 0.0, 2605}}, @@ -112,7 +112,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch {"UTCsideUTbVStave7", ROOT::Math::XYZPoint{-619.6, 0.0, 2590}}, {"UTCsideUTbVStave8", ROOT::Math::XYZPoint{-719.2, 0.0, 2605}}, {"UTCsideUTbVStave9", ROOT::Math::XYZPoint{-810.5, 0.0, 2590}}, - {"UTAsideUTbVStave1", ROOT::Math::XYZPoint{47, 0.0, 2605}}, + {"UTAsideUTbVStave1", ROOT::Math::XYZPoint{47, 4.096, 2605}}, {"UTAsideUTbVStave2", ROOT::Math::XYZPoint{142.3, 0.0, 2590}}, {"UTAsideUTbVStave3", ROOT::Math::XYZPoint{239, 0.0, 2605}}, {"UTAsideUTbVStave4", ROOT::Math::XYZPoint{333, 0.0, 2590}}, @@ -139,17 +139,55 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch {"UTAsideUTbXStave7", ROOT::Math::XYZPoint{623, 0.0, 2660}}, {"UTAsideUTbXStave8", ROOT::Math::XYZPoint{714.9, 0.0, 2645}}, {"UTAsideUTbXStave9", ROOT::Math::XYZPoint{814.9, 0.0, 2660}}}; + + std::map<std::string, std::string> stave_names{ + {"UTCsideUTaXStave1", "UTaXLayerR2Stave2"}, {"UTCsideUTaXStave2", "UTaXLayerR2Stave1"}, + {"UTCsideUTaXStave3", "UTaXLayerR1Stave7"}, {"UTCsideUTaXStave4", "UTaXLayerR1Stave6"}, + {"UTCsideUTaXStave5", "UTaXLayerR1Stave5"}, {"UTCsideUTaXStave6", "UTaXLayerR1Stave4"}, + {"UTCsideUTaXStave7", "UTaXLayerR1Stave3"}, {"UTCsideUTaXStave8", "UTaXLayerR1Stave2"}, + {"UTCsideUTaUStave1", "UTaULayerR2Stave2"}, {"UTCsideUTaUStave2", "UTaULayerR2Stave1"}, + {"UTCsideUTaUStave3", "UTaULayerR1Stave7"}, {"UTCsideUTaUStave4", "UTaULayerR1Stave6"}, + {"UTCsideUTaUStave5", "UTaULayerR1Stave5"}, {"UTCsideUTaUStave6", "UTaULayerR1Stave4"}, + {"UTCsideUTaUStave7", "UTaULayerR1Stave3"}, {"UTCsideUTaUStave8", "UTaULayerR1Stave2"}, + {"UTCsideUTbVStave1", "UTbVLayerR2Stave2"}, {"UTCsideUTbVStave2", "UTbVLayerR2Stave1"}, + {"UTCsideUTbVStave3", "UTbVLayerR1Stave7"}, {"UTCsideUTbVStave4", "UTbVLayerR1Stave6"}, + {"UTCsideUTbVStave5", "UTbVLayerR1Stave5"}, {"UTCsideUTbVStave6", "UTbVLayerR1Stave4"}, + {"UTCsideUTbVStave7", "UTbVLayerR1Stave3"}, {"UTCsideUTbVStave8", "UTbVLayerR1Stave2"}, + {"UTCsideUTbVStave9", "UTbVLayerR1Stave1"}, {"UTCsideUTbXStave1", "UTbXLayerR2Stave2"}, + {"UTCsideUTbXStave2", "UTbXLayerR2Stave1"}, {"UTCsideUTbXStave3", "UTbXLayerR1Stave7"}, + {"UTCsideUTbXStave4", "UTbXLayerR1Stave6"}, {"UTCsideUTbXStave5", "UTbXLayerR1Stave5"}, + {"UTCsideUTbXStave6", "UTbXLayerR1Stave4"}, {"UTCsideUTbXStave7", "UTbXLayerR1Stave3"}, + {"UTCsideUTbXStave8", "UTbXLayerR1Stave2"}, {"UTCsideUTbXStave9", "UTbXLayerR1Stave1"}, + {"UTAsideUTaXStave1", "UTaXLayerR2Stave3"}, {"UTAsideUTaXStave2", "UTaXLayerR2Stave4"}, + {"UTAsideUTaXStave3", "UTaXLayerR3Stave1"}, {"UTAsideUTaXStave4", "UTaXLayerR3Stave2"}, + {"UTAsideUTaXStave5", "UTaXLayerR3Stave3"}, {"UTAsideUTaXStave6", "UTaXLayerR3Stave4"}, + {"UTAsideUTaXStave7", "UTaXLayerR3Stave5"}, {"UTAsideUTaXStave8", "UTaXLayerR3Stave6"}, + {"UTAsideUTaUStave1", "UTaULayerR2Stave3"}, {"UTAsideUTaUStave2", "UTaULayerR2Stave4"}, + {"UTAsideUTaUStave3", "UTaULayerR3Stave1"}, {"UTAsideUTaUStave4", "UTaULayerR3Stave2"}, + {"UTAsideUTaUStave5", "UTaULayerR3Stave3"}, {"UTAsideUTaUStave6", "UTaULayerR3Stave4"}, + {"UTAsideUTaUStave7", "UTaULayerR3Stave5"}, {"UTAsideUTaUStave8", "UTaULayerR3Stave6"}, + {"UTAsideUTbVStave1", "UTbVLayerR2Stave3"}, {"UTAsideUTbVStave2", "UTbVLayerR2Stave4"}, + {"UTAsideUTbVStave3", "UTbVLayerR3Stave1"}, {"UTAsideUTbVStave4", "UTbVLayerR3Stave2"}, + {"UTAsideUTbVStave5", "UTbVLayerR3Stave3"}, {"UTAsideUTbVStave6", "UTbVLayerR3Stave4"}, + {"UTAsideUTbVStave7", "UTbVLayerR3Stave5"}, {"UTAsideUTbVStave8", "UTbVLayerR3Stave6"}, + {"UTAsideUTbVStave9", "UTbVLayerR3Stave7"}, {"UTAsideUTbXStave1", "UTbXLayerR2Stave3"}, + {"UTAsideUTbXStave2", "UTbXLayerR2Stave4"}, {"UTAsideUTbXStave3", "UTbXLayerR3Stave1"}, + {"UTAsideUTbXStave4", "UTbXLayerR3Stave2"}, {"UTAsideUTbXStave5", "UTbXLayerR3Stave3"}, + {"UTAsideUTbXStave6", "UTbXLayerR3Stave4"}, {"UTAsideUTbXStave7", "UTbXLayerR3Stave5"}, + {"UTAsideUTbXStave8", "UTbXLayerR3Stave6"}, {"UTAsideUTbXStave9", "UTbXLayerR3Stave7"}}; + for ( const auto& side : ut.sides() ) for ( const auto& layer : side.layers() ) for ( const auto& stave : layer.staves() ) { ROOT::Math::XYZPoint stavePos = stave.toGlobal( ROOT::Math::XYZPoint{0.0, 0.0, 0.0} ); ROOT::Math::XYZPoint staveTruePos = stave_positions[stave.nickname()]; auto diff = staveTruePos - stavePos; - if ( diff.r() > 1e-5 ) { + if ( diff.r() > 1e-3 ) { + allChecksOK = false; dd4hep::printout( dd4hep::WARNING, "UT", fmt::format( "{stavePath} Pos: {x:>6.1f} {y:>4.1f} {z:>6.1f}, True: {x_true:>6.1f} {y_true:>4.1f} " - "{z_true:>6.1f}, Diff: {x_diff:>6.1f} {y_diff:>4.1f} {z_diff:>6.1f}", + "{z_true:>6.1f}, Diff: {x_diff:>6.4f} {y_diff:>4.4f} {z_diff:>6.4f}", fmt::arg( "stavePath", stave.nickname() ), fmt::arg( "x", stavePos.x() ), fmt::arg( "y", stavePos.y() ), fmt::arg( "z", stavePos.z() ), fmt::arg( "x_true", staveTruePos.x() ), fmt::arg( "y_true", staveTruePos.y() ), @@ -158,6 +196,18 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch } } + for ( const auto& side : ut.sides() ) + for ( const auto& layer : side.layers() ) + for ( const auto& stave : layer.staves() ) { + if ( stave.nicknameOld() != stave_names[stave.nickname()] ) { + allChecksOK = false; + dd4hep::printout( dd4hep::WARNING, "UT", + fmt::format( "Stave old nickname {stavePathOld}, expected {stavePathOldTrue}", + fmt::arg( "stavePathOld", stave.nicknameOld() ), + fmt::arg( "stavePathOldTrue", stave_names[stave.nickname()] ) ) ); + } + } + // Finalizing the service and returning dds.finalize(); diff --git a/Detector/UT/include/Detector/UT/DeUT.h b/Detector/UT/include/Detector/UT/DeUT.h index 69f4308d3b8997b95eab3bb9a981fb212c4262fe..87ada6ed635b42afd55dc4682fba783db1023b0a 100644 --- a/Detector/UT/include/Detector/UT/DeUT.h +++ b/Detector/UT/include/Detector/UT/DeUT.h @@ -201,9 +201,6 @@ namespace LHCb::Detector::UT { return ( ( aChannel.side() >= firstSide() ) && ( aChannel.side() < lastSide() ) ); }; - /// Workaround to prevent hidden base class function - // FIXME: need to find anything like ValidDataObject::isValid() in DD4HEP - bool isValid() const { return true; } // what is Gaudi::Time in dd4hep // TODO: looks no one use isValid (Time) ?? need to check!! // bool isValid( const Gaudi::Time& t ) const override { return ValidDataObject::isValid( t ); } @@ -232,7 +229,11 @@ namespace LHCb::Detector::UT { applyToAllSectors( func ); } - bool SectorsSwapped() const { return true; } + bool SectorsSwapped() const { + // UT in DD4hep supports only GeoVersion::v1 which + // does not have swapped sectors + return false; + } bool layerSizeOK() const { return static_cast<unsigned int>( version() ) != static_cast<unsigned int>( GeoVersion::v0 ); @@ -241,49 +242,57 @@ namespace LHCb::Detector::UT { const LayerGeom getLayerGeom( unsigned int layerid ) const { LayerGeom layergeom; auto SectorsInLayer = sectors( LayerID_t{layerid} ); - auto tStation = layerid / 2; - unsigned int keysectorID = ( tStation == 0 ) ? 31 : 11; + auto stationID = layerid / 2; + unsigned int keysectorID = ( stationID == 0 ) ? 31 : 11; layergeom.z = SectorsInLayer[keysectorID].globalCentre().z(); - float YFirstRow = std::numeric_limits<float>::max(); - float YLastRow = std::numeric_limits<float>::lowest(); - float smallestXLastCol = std::numeric_limits<float>::max(); - float smallestXFirstcol = std::numeric_limits<float>::max(); - float biggestXFirstCol = std::numeric_limits<float>::lowest(); - unsigned int biggestColumn = ( tStation == 0 ) ? 16u : 18u; - unsigned int smallestColumn = 1u; - unsigned int topMostRow = 14u; - unsigned int bottomMostRow = 1u; - - // Second pass - // find x and y values in the corners to deduce the geometry of the layer - auto checkSector = [&]( DeUTSector const& utSector ) { - // deal with x,y coordinates. Remember the corner coordinates - auto column = utSector.column(); - auto row = utSector.row(); - auto center = utSector.toGlobal( ROOT::Math::XYZPoint{0, 0, 0} ); - if ( column == smallestColumn ) { - if ( row == bottomMostRow ) { - smallestXFirstcol = center.x(); - YFirstRow = center.y(); - } else if ( row == topMostRow ) { - biggestXFirstCol = center.x(); - YLastRow = center.y(); - } + // columns = staves, counting from -x to +x + // -> From 1 to 16 for UTaX/U layers (stationID = 0) + // -> From 1 to 18 for UTbX/V layers (stationID = 1) + // rows = typeA/B 10cmx10cm sectors, rows = 2 x typeC/D sectors + unsigned int lastColumn = ( stationID == 0 ) ? 16u : 18u; + float yFirstRow = 0; // y of bottommost sector of outmost stave + float yLastRow = 0; // y of topmost sector of outmost stave + float xFirstColFirstRow = 0; // x of bottommost sector of Cside outmost stave + float xFirstColLastRow = 0; // x of topmost sector of Cside outmost stave + float xLastColFirstRow = 0; // x of bottommost sector of Aside outmost stave + unsigned int maxStaveID = ( stationID == 0 ) ? 7u : 8u; + unsigned int firstColumn = 1u; // count from 1 + unsigned int lastRow = 14u; // top most sector + unsigned int firstRow = 1u; // bottom most sector + std::map<std::string, ChannelID> cornerSectorChanIDs{ + {// Cside, LayerID, maxStaveID, Face1, Module0 + {"FirstColFirstRow", ChannelID( ChannelID::detType::typeUT, 0, layerid, maxStaveID, 1, 0, 0, 0 )}, + // Cside, LayerID, maxStaveID, Face0, Module7 + {"FirstColLastRow", ChannelID( ChannelID::detType::typeUT, 0, layerid, maxStaveID, 0, 7, 0, 0 )}, + // Aside, LayerID, maxStaveID, Face1, Module0 + {"LastColFirstRow", ChannelID( ChannelID::detType::typeUT, 1, layerid, maxStaveID, 1, 0, 0, 0 )}}}; + // loop over sectors within this layer to get x, y of corner sectors + std::for_each( SectorsInLayer.begin(), SectorsInLayer.end(), [&]( DeUTSector const& utSector ) { + if ( utSector.channelID() == cornerSectorChanIDs["FirstColFirstRow"] ) { + yFirstRow = utSector.globalCentre().y(); + xFirstColFirstRow = utSector.globalCentre().x(); + } else if ( utSector.channelID() == cornerSectorChanIDs["FirstColLastRow"] ) { + yLastRow = utSector.globalCentre().y(); + xFirstColLastRow = utSector.globalCentre().x(); + } else if ( utSector.channelID() == cornerSectorChanIDs["LastColFirstRow"] ) { + xLastColFirstRow = utSector.globalCentre().x(); } - if ( column == biggestColumn && row == bottomMostRow ) { smallestXLastCol = center.x(); } - }; - this->access()->m_sides[0].applyToAllSectors( checkSector ); - this->access()->m_sides[1].applyToAllSectors( checkSector ); + } ); + + dd4hep::printout( dd4hep::DEBUG, "DeUT::getLayerGeom", "xFirstColFirstRow = %.3f", xFirstColFirstRow ); + dd4hep::printout( dd4hep::DEBUG, "DeUT::getLayerGeom", "xFirstColLastRow = %.3f", xFirstColLastRow ); + dd4hep::printout( dd4hep::DEBUG, "DeUT::getLayerGeom", "xLastColFirstRow = %.3f", xLastColFirstRow ); + dd4hep::printout( dd4hep::DEBUG, "DeUT::getLayerGeom", "yFirstRow = %.3f", yFirstRow ); // gather all information into the corresponding LayerInfo object - auto ncols = biggestColumn - smallestColumn + 1; - auto nrows = topMostRow - bottomMostRow + 1; + auto ncols = lastColumn - firstColumn + 1; + auto nrows = lastRow - firstRow + 1; layergeom.nColsPerSide = ncols / 2; layergeom.nRowsPerSide = nrows / 2; - layergeom.invHalfSectorYSize = 2 * ( nrows - 1 ) / ( YLastRow - YFirstRow ); - layergeom.invHalfSectorXSize = 2 * ( ncols - 1 ) / ( smallestXLastCol - smallestXFirstcol ); - layergeom.dxDy = ( biggestXFirstCol - smallestXFirstcol ) / ( YLastRow - YFirstRow ); + layergeom.invHalfSectorYSize = 2 * ( nrows - 1 ) / ( yLastRow - yFirstRow ); + layergeom.invHalfSectorXSize = 2 * ( ncols - 1 ) / ( xLastColFirstRow - xFirstColFirstRow ); + layergeom.dxDy = ( xFirstColLastRow - xFirstColFirstRow ) / ( yLastRow - yFirstRow ); return layergeom; } diff --git a/Detector/UT/include/Detector/UT/DeUTLayer.h b/Detector/UT/include/Detector/UT/DeUTLayer.h index 064c7efe6baa7eb596724c02e1112129427df478..64409a61a1cc10e647499dca6ebcf443de47fef5 100644 --- a/Detector/UT/include/Detector/UT/DeUTLayer.h +++ b/Detector/UT/include/Detector/UT/DeUTLayer.h @@ -32,9 +32,9 @@ namespace LHCb::Detector::UT { std::array<DeUTStaveObject, 9> m_staves; ChannelID m_channelID; ROOT::Math::Plane3D m_plane; - double m_angle; - double m_sinAngle; - double m_cosAngle; + double m_angle = 0; + double m_sinAngle = 0; + double m_cosAngle = 0; void applyToAllChildren( const std::function<void( LHCb::Detector::DeIOV )>& func ) const override { for ( unsigned int i = 0; i < m_nStaves; i++ ) { func( &m_staves[i] ); }; diff --git a/Detector/UT/include/Detector/UT/DeUTSector.h b/Detector/UT/include/Detector/UT/DeUTSector.h index 50992a9f87f0c37a858ff984856f08ef0b05b1a7..6c85a2d72973c46be2b83397b52eabbcdc4f1e34 100644 --- a/Detector/UT/include/Detector/UT/DeUTSector.h +++ b/Detector/UT/include/Detector/UT/DeUTSector.h @@ -80,10 +80,9 @@ namespace LHCb::Detector::UT { float m_thickness; double m_stripLength; - unsigned int m_prodID = 0u; - double m_dxdy = 0.0; - double m_dzdy = 0.0; - double m_dy = 0.0; + double m_dxdy = 0.0; + double m_dzdy = 0.0; + double m_dy = 0.0; ROOT::Math::XYZVector m_dp0di; ROOT::Math::XYZPoint m_p0; double m_angle = 0.0; @@ -163,7 +162,6 @@ namespace LHCb::Detector::UT { // column and row are old channel id fields and should never be used in DD4HEP unsigned int column() const { return this->access()->m_column; } unsigned int row() const { return this->access()->m_row; } - unsigned int prodID() const { return this->access()->m_prodID; } unsigned int nBeetle() const { return nStrip() / nStripsInSector; } LineTraj<double> createTraj( unsigned int strip, double offset ) const { diff --git a/Detector/UT/include/Detector/UT/DeUTSensor.h b/Detector/UT/include/Detector/UT/DeUTSensor.h index f6fe1105c54fb8a988dbfcde634a10f4268fadc2..3cece986b7468bf9210af5cc6f85072adadad73c 100644 --- a/Detector/UT/include/Detector/UT/DeUTSensor.h +++ b/Detector/UT/include/Detector/UT/DeUTSensor.h @@ -25,7 +25,7 @@ namespace LHCb::Detector::UT { struct DeUTSensorObject : LHCb::Detector::detail::DeIOVObject { DeUTSensorObject( const dd4hep::DetElement& de, dd4hep::cond::ConditionUpdateContext& ctxt ); - unsigned int m_id; + unsigned int m_id = 0u; float m_pitch = 0.0; unsigned int m_nStrip = 512; @@ -34,15 +34,16 @@ namespace LHCb::Detector::UT { unsigned int m_firstStrip = 0u; unsigned int m_version = 2; ChannelID m_channelID; + char m_sensorType; - float m_uMaxLocal; - float m_uMinLocal; - float m_vMaxLocal; - float m_vMinLocal; - float m_stripLength; - float m_thickness; - bool m_xInverted; - bool m_yInverted; + float m_uMaxLocal = 0.0; + float m_uMinLocal = 0.0; + float m_vMaxLocal = 0.0; + float m_vMinLocal = 0.0; + float m_stripLength = 0.0; + float m_thickness = 0.0; + bool m_xInverted = false; + bool m_yInverted = false; ROOT::Math::Plane3D m_plane; ROOT::Math::Plane3D m_entryPlane; @@ -70,6 +71,7 @@ namespace LHCb::Detector::UT { unsigned int id() const { return this->access()->m_id; }; void setID( const unsigned int id ) { this->access()->m_id = id; } float pitch() const { return this->access()->m_pitch; } + char sensorType() const { return this->access()->m_sensorType; } unsigned int nStrip() const { return this->access()->m_nStrip; } float uMaxLocal() const { return this->access()->m_uMaxLocal; } float uMinLocal() const { return this->access()->m_uMinLocal; } @@ -91,7 +93,9 @@ namespace LHCb::Detector::UT { bool contains( const ChannelID aChannel ) const { return ( aChannel == channelID() ); } - bool isStrip( const unsigned int strip ) const { return strip < nStrip(); } + bool isStrip( const unsigned int strip ) const { + return ( strip >= firstStrip() ) && strip < nStrip() + firstStrip(); + } LineTraj<double> trajectory( unsigned int strip, double offset ) const { const double arclen = ( ( xInverted() && getStripflip() ) ? ( nStrip() - offset - strip - ( firstStrip() + 1 ) % 2 ) @@ -110,7 +114,7 @@ namespace LHCb::Detector::UT { } double localU( const unsigned int strip, const double offset = 0.0 ) const { // strip to local - double tStrip = strip + offset; + double tStrip = strip + offset + ( firstStrip() + 1 ) % 2; if ( !getStripflip() && xInverted() ) { return uMaxLocal() + pitch() * ( 0.5 - tStrip ); } else { @@ -120,8 +124,10 @@ namespace LHCb::Detector::UT { unsigned int localUToStrip( const double u ) const { // convert local u to a strip unsigned int strip = ( ( !getStripflip() && xInverted() ) - ? static_cast<unsigned int>( floor( ( ( uMaxLocal() - u ) / pitch() ) + 0.5 ) ) - : static_cast<unsigned int>( floor( ( ( u - uMinLocal() ) / pitch() ) + 0.5 ) ) ); + ? static_cast<unsigned int>( floor( ( ( uMaxLocal() - u ) / pitch() ) + 0.5 ) ) - + ( firstStrip() + 1 ) % 2 + : static_cast<unsigned int>( floor( ( ( u - uMinLocal() ) / pitch() ) + 0.5 ) ) ) - + ( firstStrip() + 1 ) % 2; return isStrip( strip ) ? strip : 0u; } bool localInBondGap( float v, float tol ) const { diff --git a/Detector/UT/include/Detector/UT/DeUTStave.h b/Detector/UT/include/Detector/UT/DeUTStave.h index dfe95c601172c06b97ed81eb79cbda499edf8d07..b7090db741e7a6ddbf2dc5c532ad791107dfc121 100644 --- a/Detector/UT/include/Detector/UT/DeUTStave.h +++ b/Detector/UT/include/Detector/UT/DeUTStave.h @@ -28,8 +28,12 @@ namespace LHCb::Detector::UT { const unsigned int m_id; std::string m_type; std::string m_nickname; + std::string m_nicknameOld; std::array<DeUTFaceObject, 2> m_faces; ChannelID m_channelID; + unsigned int m_version; + unsigned int m_column; + unsigned int m_detRegion; std::string getStaveName( const ChannelID& aChan ) const { static constexpr const char* sides[2] = {"C", "A"}; @@ -38,6 +42,12 @@ namespace LHCb::Detector::UT { fmt::arg( "layer", layers[aChan.layer()] ), fmt::arg( "stave", aChan.stave() + 1 ) ); } + std::string getStaveNameOld( const ChannelID& aChan ) const { + static constexpr const char* layers[4] = {"aX", "aU", "bV", "bX"}; + return fmt::format( "UT{layer}LayerR{region}Stave{column}", fmt::arg( "layer", layers[aChan.layer()] ), + fmt::arg( "region", m_detRegion ), fmt::arg( "column", m_column ) ); + } + void applyToAllChildren( const std::function<void( LHCb::Detector::DeIOV )>& func ) const override { for ( auto& face : m_faces ) { func( &face ); }; } @@ -89,7 +99,10 @@ namespace LHCb::Detector::UT { unsigned int layer() const { return channelID().layer(); } unsigned int side() const { return channelID().side(); } unsigned int stave() const { return channelID().stave(); } + unsigned int column() const { return this->access()->m_column; } + unsigned int detRegion() const { return this->access()->m_detRegion; } const std::string& nickname() const { return this->access()->m_nickname; } + const std::string& nicknameOld() const { return this->access()->m_nicknameOld; } const std::string& type() const { return this->access()->m_type; } diff --git a/Detector/UT/src/DeUT.cpp b/Detector/UT/src/DeUT.cpp index 60bf42dc60aabeea4abc0254c66cda512ea21cb1..a43c7ca1c6ec22b185103ad5a2c6bbb791e64cc4 100644 --- a/Detector/UT/src/DeUT.cpp +++ b/Detector/UT/src/DeUT.cpp @@ -90,12 +90,17 @@ LHCb::Detector::UT::detail::DeUTLayerObject::DeUTLayerObject( const dd4hep::DetE 0, 0, 0} { - ROOT::Math::XYZPoint p1 = toGlobal( ROOT::Math::XYZPoint( 0, 1, 0 ) ); - ROOT::Math::XYZPoint p2( 0, 1, 0 ); - m_angle = ROOT::Math::VectorUtil::Angle( p1, p2 ); - m_sinAngle = sin( m_angle ); - m_cosAngle = cos( m_angle ); - { + { // using first stave stereo angle as layer stereo angle + const DeUTStave thisStave = DeUTStave{&m_staves[0]}; + ROOT::Math::XYZVector v1 = ROOT::Math::XYZVector( thisStave->toGlobal( ROOT::Math::XYZPoint( 0, 10, 0 ) ) - + thisStave->toGlobal( ROOT::Math::XYZPoint( 0, 0, 0 ) ) ); + ROOT::Math::XYZVector v2 = + ROOT::Math::XYZVector( ROOT::Math::XYZPoint( 0, 10, 0 ) - ROOT::Math::XYZPoint( 0, 0, 0 ) ); + m_angle = ROOT::Math::VectorUtil::Angle( v1, v2 ); + m_sinAngle = sin( m_angle ); + m_cosAngle = cos( m_angle ); + } + { // initialize m_plane ROOT::Math::XYZPoint p1 = toGlobal( ROOT::Math::XYZPoint( 0, 0, 0 ) ); ROOT::Math::XYZPoint p2 = toGlobal( ROOT::Math::XYZPoint( 3 * dd4hep::meter, 0, 0 ) ); ROOT::Math::XYZPoint p3 = toGlobal( ROOT::Math::XYZPoint( 0, 3 * dd4hep::meter, 0 ) ); @@ -117,7 +122,49 @@ LHCb::Detector::UT::detail::DeUTStaveObject::DeUTStaveObject( const dd4hep::DetE 0, 0, 0} { - m_nickname = getStaveName( m_channelID ); + // Backward compatibility: column and detRegion from old UTChannelID + const unsigned int sideID = m_channelID.side(); + const unsigned int layerID = m_channelID.layer(); + const unsigned int staveID = m_channelID.stave(); + if ( layerID < 2 ) { // aStation, aX, aU + if ( sideID == 0 ) { // C-side + if ( staveID >= 2 ) { // Region 1 (-x, C-side) + m_detRegion = 1; + m_column = 9 - staveID; + } else { // Region 2 (C-side) + m_detRegion = 2; + m_column = 2 - staveID; + } + } else if ( sideID == 1 ) { // A-side + if ( staveID < 2 ) { // Region 2 (A-side) + m_detRegion = 2; + m_column = staveID + 3; + } else { // Region 3 (+x, A-side) + m_detRegion = 3; + m_column = staveID - 1; + } + } + } else if ( layerID >= 2 ) { // bStation, bV, bX + if ( sideID == 0 ) { // C-side + if ( staveID >= 2 ) { // Region 1 (-x, C-side) + m_detRegion = 1; + m_column = 9 - staveID; + } else { // Region 2 (C-side) + m_detRegion = 2; + m_column = 2 - staveID; + } + } else if ( sideID == 1 ) { // A-side + if ( staveID < 2 ) { // Region 2 (A-side) + m_detRegion = 2; + m_column = staveID + 3; + } else { // Region 3 (+x, A-side) + m_detRegion = 3; + m_column = staveID - 1; + } + } + } + m_nickname = getStaveName( m_channelID ); + m_nicknameOld = getStaveNameOld( m_channelID ); } LHCb::Detector::UT::detail::DeUTFaceObject::DeUTFaceObject( const dd4hep::DetElement& de, @@ -184,6 +231,54 @@ LHCb::Detector::UT::detail::DeUTSectorObject::DeUTSectorObject( const dd4hep::De m_pitch = dd4hep::_toDouble( "UTSensorBCDPitch" ); } + { // cacheInfo + auto thisSector = DeUTSector{this}; + auto firstTraj = thisSector.createTraj( thisSector.firstStrip(), 0 ); + // if ( m_stripflip && xInverted() ) firstTraj = createTraj( m_nStrip, 0 ); + if ( thisSector.stripflip() && thisSector.xInverted() ) + firstTraj = thisSector.createTraj( thisSector.nStrip() + thisSector.firstStrip(), 0 ); + + // get the start and end point. for piecewise trajectories, we + // effectively make an approximation by a straight line. + const ROOT::Math::XYZPoint g1 = firstTraj.beginPoint(); + const ROOT::Math::XYZPoint g2 = firstTraj.endPoint(); + + const double activeWidth = DeUTSensor{&m_sensor}.activeWidth(); + + // direction + ROOT::Math::XYZVector direction = g2 - g1; + m_stripLength = std::sqrt( direction.Mag2() ); + direction = direction.Unit(); + + // cross with normal along z + ROOT::Math::XYZVector zVec( 0, 0, 1 ); + ROOT::Math::XYZVector norm = direction.Cross( zVec ); + + // trajectory of middle + const ROOT::Math::XYZPoint g3 = g1 + 0.5 * ( g2 - g1 ); + const ROOT::Math::XYZPoint g4 = g3 + activeWidth * norm; + + // creating the 'fast' trajectories + const ROOT::Math::XYZVector vectorlayer = ( g4 - g3 ).unit() * m_pitch; + const ROOT::Math::XYZPoint p0 = g3 - 0.5 * m_stripLength * direction; + m_dxdy = direction.x() / direction.y(); + m_dzdy = direction.z() / direction.y(); + m_dy = m_stripLength * direction.y(); + m_dp0di.SetX( vectorlayer.x() - vectorlayer.y() * m_dxdy ); + m_dp0di.SetY( vectorlayer.y() ); + m_dp0di.SetZ( vectorlayer.z() - vectorlayer.y() * m_dzdy ); + m_p0.SetX( p0.x() - p0.y() * m_dxdy ); + m_p0.SetY( p0.y() ); + m_p0.SetZ( p0.z() - p0.y() * m_dzdy ); + + // Update the stereo angle. We correct by 'pi' if necessary. + ROOT::Math::XYZVector dir = direction; + if ( dir.y() < 0 ) dir *= -1; + m_angle = atan2( -dir.x(), dir.y() ); + m_cosAngle = cos( m_angle ); + m_sinAngle = sin( m_angle ); + } + // get status & noise condition auto deUT = de.parent().parent().parent().parent().parent().parent().parent(); m_statusCondition = ctxt.condition( dd4hep::ConditionKey::KeyMaker( deUT, "ReadoutSectors" ).hash ); @@ -234,11 +329,14 @@ LHCb::Detector::UT::detail::DeUTSensorObject::DeUTSensorObject( const dd4hep::De // get pitch size auto nameString = de.placement().volume().name(); std::string m_type( nameString + 8, nameString + std::strlen( nameString ) ); - if ( m_type == "Norm" ) { - m_pitch = dd4hep::_toDouble( "UTSensorAPitch" ); + m_pitch = dd4hep::_toDouble( "UTSensorAPitch" ); + m_sensorType = 'A'; } else { m_pitch = dd4hep::_toDouble( "UTSensorBCDPitch" ); + if ( m_type == "Dual" ) m_sensorType = 'B'; + if ( m_type == "Quad" ) m_sensorType = 'C'; + if ( m_type == "Hole" ) m_sensorType = 'D'; } m_uMaxLocal = 0.5f * ( m_pitch * m_nStrip ); diff --git a/Detector/UT/src/UT_geo.cpp b/Detector/UT/src/UT_geo.cpp index ff7f87df977ac1259a95d7be30de6ba66745bf33..385309fef33eff08ac48deca6e5b34d812c3c268 100644 --- a/Detector/UT/src/UT_geo.cpp +++ b/Detector/UT/src/UT_geo.cpp @@ -805,38 +805,38 @@ namespace { pv.addPhysVolID( "layer", 0 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTaX_1C), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrect+UTaXR2S2CorrectionX" ), 0, - _toDouble( "UTStaveDz/2" ) ) ); + _toDouble( "-UTStaveDz/2" ) ) ); pv->SetName( "pvCsideUTaXStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTaX_2C) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrect+UTaXR2S1CorrectionX" ), 0, - _toDouble( "-UTStaveDz/2" ) ) ); + _toDouble( "UTStaveDz/2" ) ) ); pv->SetName( "pvCsideUTaXStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-7 + // Stave 3-8 (UTaX_3C-8C) for ( int i = 2; i < 8; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth" ) - ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "UTStaveACorrect+UTaXR1S" + std::to_string( 8 - i ) + "CorrectionX" ), - 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ); + 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ); pv->SetName( _toString( i, "pvCsideUTaXStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -854,35 +854,35 @@ namespace { pv.addPhysVolID( "layer", 1 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTaU_1C), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Transform3D( RotationZ( _toDouble( "-UTAngle" ) ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrectUV+UTaUR2S2CorrectionX" ), - _toDouble( "UTStaveCUVPosY" ), _toDouble( "UTStaveDz/2" ) ) ) ); + _toDouble( "UTStaveCUVPosY" ), _toDouble( "-UTStaveDz/2" ) ) ) ); pv->SetName( "pvCsideUTaUStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTaU_2C) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Transform3D( RotationZ( _toDouble( "-UTAngle" ) ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrectUV+UTaUR2S1CorrectionX" ), - 0, _toDouble( "-UTStaveDz/2" ) ) ) ); + 0, _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( "pvCsideUTaUStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-7 + // Stave 3-8 (UTaU_3C-8C) for ( int i = 2; i < 8; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), Transform3D( RotationZ( _toDouble( "-UTAngle" ) ), @@ -890,7 +890,7 @@ namespace { ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "UTStaveACorrectUV+UTaUR1S" + std::to_string( 8 - i ) + "CorrectionX" ), - 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ) ); + 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( _toString( i, "pvCsideUTaUStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -907,35 +907,35 @@ namespace { pv.addPhysVolID( "layer", 2 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTbV_1C), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Transform3D( RotationZ( _toDouble( "UTAngle" ) ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrectUV+UTbVR2S2CorrectionX" ), - _toDouble( "-UTStaveCUVPosY" ), _toDouble( "UTStaveDz/2" ) ) ) ); + _toDouble( "-UTStaveCUVPosY" ), _toDouble( "-UTStaveDz/2" ) ) ) ); pv->SetName( "pvCsideUTbVStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTbV_2C) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Transform3D( RotationZ( _toDouble( "UTAngle" ) ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrectUV+UTbVR2S1CorrectionX" ), - 0, _toDouble( "-UTStaveDz/2" ) ) ) ); + 0, _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( "pvCsideUTbVStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-8 + // Stave 3-9 (UTbV_3C-9C) for ( int i = 2; i < 9; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), Transform3D( RotationZ( _toDouble( "UTAngle" ) ), @@ -943,7 +943,7 @@ namespace { ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "UTStaveACorrectUV+UTbVR1S" + std::to_string( 9 - i ) + "CorrectionX" ), - 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ) ); + 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( _toString( i, "pvCsideUTbVStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -960,38 +960,38 @@ namespace { pv.addPhysVolID( "layer", 3 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTbX_1C), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrect+UTbXR2S2CorrectionX" ), 0, - _toDouble( "UTStaveDz/2" ) ) ); + _toDouble( "-UTStaveDz/2" ) ) ); pv->SetName( "pvCsideUTbXStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTbX_2C) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrect+UTbXR2S1CorrectionX" ), 0, - _toDouble( "-UTStaveDz/2" ) ) ); + _toDouble( "UTStaveDz/2" ) ) ); pv->SetName( "pvCsideUTbXStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-8 + // Stave 3-9 (UTbX_3C-9C) for ( int i = 2; i < 9; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), Position( _toDouble( "1/2*UTLayerSideCorrectedWidth" ) - ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "UTStaveACorrect+UTbXR1S" + std::to_string( 9 - i ) + "CorrectionX" ), - 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ); + 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ); pv->SetName( _toString( i, "pvCsideUTbXStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -1010,35 +1010,35 @@ namespace { pv.addPhysVolID( "layer", 0 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTaX_1A), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Transform3D( RotationY( M_PI ), Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrect+UTaXR2S3CorrectionX" ), - 0, _toDouble( "-UTStaveDz/2" ) ) ) ); + 0, _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTaXStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTaX_2A) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Transform3D( RotationY( M_PI ), Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrect+UTaXR2S4CorrectionX" ), - 0, _toDouble( "UTStaveDz/2" ) ) ) ); + 0, _toDouble( "-UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTaXStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-7 + // Stave 3-8 (UTaX_3A-8A) for ( int i = 2; i < 8; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), @@ -1046,7 +1046,7 @@ namespace { ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "-UTStaveACorrect+UTaXR3S" + std::to_string( i - 1 ) + "CorrectionX" ), - 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ) ); + 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( _toString( i, "pvAsideUTaXStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -1062,7 +1062,7 @@ namespace { pv.addPhysVolID( "layer", 1 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTaU_1A), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Transform3D( @@ -1070,14 +1070,14 @@ namespace { Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrectUV+UTaUR2S3CorrectionX" ), - _toDouble( "-UTStaveCUVPosY" ), _toDouble( "-UTStaveDz/2" ) ) ) ); + _toDouble( "-UTStaveCUVPosY" ), _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTaUStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTaU_2A) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Transform3D( @@ -1085,14 +1085,14 @@ namespace { Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrectUV+UTaUR2S4CorrectionX" ), - 0, _toDouble( "UTStaveDz/2" ) ) ) ); + 0, _toDouble( "-UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTaUStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-7 + // Stave 3-8 (UTaU_3A-8A) for ( int i = 2; i < 8; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), Transform3D( RotationZYX( _toDouble( "UTAngle" ), M_PI, 0 ), @@ -1100,7 +1100,7 @@ namespace { ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "-UTStaveACorrectUV+UTaUR3S" + std::to_string( i - 1 ) + "CorrectionX" ), - 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ) ); + 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( _toString( i, "pvAsideUTaUStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -1116,7 +1116,7 @@ namespace { pv.addPhysVolID( "layer", 2 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTbV_1A), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Transform3D( @@ -1124,14 +1124,14 @@ namespace { Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrectUV+UTbVR2S3CorrectionX" ), - _toDouble( "UTStaveCUVPosY" ), _toDouble( "-UTStaveDz/2" ) ) ) ); + _toDouble( "UTStaveCUVPosY" ), _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTbVStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTbV_2A) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Transform3D( @@ -1139,14 +1139,14 @@ namespace { Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrectUV+UTbVR2S4CorrectionX" ), - 0, _toDouble( "UTStaveDz/2" ) ) ) ); + 0, _toDouble( "-UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTbVStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-8 + // Stave 3-9 (UTbV_3A-9A) for ( int i = 2; i < 9; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), Transform3D( RotationZYX( _toDouble( "-UTAngle" ), M_PI, 0 ), @@ -1154,7 +1154,7 @@ namespace { ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "-UTStaveACorrectUV+UTbVR3S" + std::to_string( i - 1 ) + "CorrectionX" ), - 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ) ); + 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( _toString( i, "pvAsideUTbVStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -1170,35 +1170,35 @@ namespace { pv.addPhysVolID( "layer", 3 ); deLayer.setPlacement( pv ); - // Stave 0 + // Stave 1 (UTbX_1A), index starts from 0 pv = lvLayer.placeVolume( volume( "lvStaveC" ), Transform3D( RotationY( M_PI ), Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrect+UTbXR2S3CorrectionX" ), - 0, _toDouble( "-UTStaveDz/2" ) ) ) ); + 0, _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTbXStave0" ); pv.addPhysVolID( "stave", 0 ); deStave = de_stave_c.clone( "Stave0", 0 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 1 + // Stave 2 (UTbX_2A) pv = lvLayer.placeVolume( volume( "lvStaveB" ), Transform3D( RotationY( M_PI ), Position( _toDouble( "-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrect+UTbXR2S4CorrectionX" ), - 0, _toDouble( "UTStaveDz/2" ) ) ) ); + 0, _toDouble( "-UTStaveDz/2" ) ) ) ); pv->SetName( "pvAsideUTbXStave1" ); pv.addPhysVolID( "stave", 1 ); deStave = de_stave_b.clone( "Stave1", 1 ); deStave.setPlacement( pv ); deLayer.add( deStave ); - // Stave 2-8 + // Stave 3-9 (UTbX_3A-9A) for ( int i = 2; i < 9; i++ ) { pv = lvLayer.placeVolume( volume( "lvStaveA" ), @@ -1206,7 +1206,7 @@ namespace { ( 5.0 / 2 + ( i - 2 ) ) * _toDouble( "UTStaveStep" ) + _toDouble( "-UTStaveACorrect+UTbXR3S" + std::to_string( i - 1 ) + "CorrectionX" ), - 0, pow( -1, i + 1 ) * _toDouble( "UTStaveDz/2" ) ) ) ); + 0, pow( -1, i ) * _toDouble( "UTStaveDz/2" ) ) ) ); pv->SetName( _toString( i, "pvAsideUTbXStave%d" ).c_str() ); pv.addPhysVolID( "stave", i ); deStave = de_stave_a.clone( _toString( i, "Stave%d" ), i ); @@ -1218,8 +1218,7 @@ namespace { } // lvUT - Box ut_shape( ( "UTVirtualBoxWide/2" ), "UTVirtualBoxLong/2", "UTBoxOuterThick/2" ); - Volume lvUT( "lvUT", ut_shape, description.air() ); + Volume lvUT = volume( "lvUT" ); if ( m_build_frame ) { pv = lvUT.placeVolume( volume( "lvUTFrame" ) ); } if ( m_build_box ) { pv = lvUT.placeVolume( volume( "lvUTBox" ) ); } if ( m_build_boxplug ) { pv = lvUT.placeVolume( volume( "lvUTBoxPlug" ) ); } @@ -1242,7 +1241,7 @@ namespace { Position( 0, 0, _toDouble( "UX851Rich1TTSplitZposIP-UTSystemZ" ) ) ); } if ( m_build_pipeheater ) { pv = lvUT.placeVolume( volume( "lvUTPipeHeater" ) ); } - registerVolume( lvUT.name(), lvUT ); + // registerVolume( lvUT.name(), lvUT ); } // build_detector void UTBuild::build_groups() { diff --git a/compact/before-rich1-geom-update-26052022/checksums b/compact/before-rich1-geom-update-26052022/checksums index 421196003ff6e5c49635a52a99bd8fc6e2889af1..db938c86b6821a0d69b5b23186223f5a672b95da 100644 --- a/compact/before-rich1-geom-update-26052022/checksums +++ b/compact/before-rich1-geom-update-26052022/checksums @@ -1,4 +1,4 @@ -/world_volume: 2466390942 +/world_volume: 748404671 /world_volume/lvAfterMagnetRegion_3: 1374469345 /world_volume/lvAfterMagnetRegion_3/lvRich2Master_1: 187033957 /world_volume/lvAfterMagnetRegion_3/lvRich2Master_1/pvRich2EntryWinTubeLock: 1979723490 @@ -48,7 +48,7 @@ /world_volume/lvAfterMagnetRegion_3/lvUX85BakeoutAfterMagnet_2: 2588750996 /world_volume/lvAfterMagnetRegion_3/lvUX85SupportsAfterMagnet_4: 2302184141 /world_volume/lvAfterMagnetRegion_3/lvUX85SupportsAfterMagnet_4/pvUX853AfterMagnetCollar: 2052547805 -/world_volume/lvBeforeMagnetRegion_1: 3440741171 +/world_volume/lvBeforeMagnetRegion_1: 2032076517 /world_volume/lvBeforeMagnetRegion_1/lvBeforeVelo_0: 2472087751 /world_volume/lvBeforeMagnetRegion_1/lvBeforeVelo_0/lvBcmUp_3: 2661979061 /world_volume/lvBeforeMagnetRegion_1/lvBeforeVelo_0/lvBlockWallBefMag_0: 2623562443 @@ -64,14 +64,15 @@ /world_volume/lvBeforeMagnetRegion_1/lvRich1Master_1/pvRich1SubMaster: 1822149947 /world_volume/lvBeforeMagnetRegion_1/lvRich1Master_1/pvUX851InRich1AfterSubM: 1874884759 /world_volume/lvBeforeMagnetRegion_1/lvRich1Master_1/pvUX851InRich1BeforeSubM: 3776943454 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3: 950047461 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTA_4: 3283219478 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBoxPlug_2: 2982282835 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBox_1: 2557552759 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTC_3: 1920000441 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3: 2855886064 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTA_4: 1269607549 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBoxPlug_2: 276155515 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBox_1: 2145795645 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTC_3: 1223200118 /world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTFrame_0: 1312950758 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTJacket_5: 2839967123 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUX851InUT_6: 2312201870 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTJacket_5: 814797345 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTPipeHeater_6: 456665699 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUX851InUT_7: 2312201870 /world_volume/lvBeforeMagnetRegion_1/lvVP_2: 3903272872 /world_volume/lvBeforeMagnetRegion_1/lvVP_2/lvVeloDownStreamPipe_6: 4275213241 /world_volume/lvBeforeMagnetRegion_1/lvVP_2/lvVeloUpStreamPipe_5: 2678709159 diff --git a/compact/trunk/Pipe/Magnet-UX851.xml b/compact/trunk/Pipe/Magnet-UX851.xml index 0401c5be912114db323dac527f85fe9858859022..3c81dd22b2c23f3fd241039a0651476cb02b8b96 100644 --- a/compact/trunk/Pipe/Magnet-UX851.xml +++ b/compact/trunk/Pipe/Magnet-UX851.xml @@ -33,6 +33,14 @@ <!-- UX85-1 Cone 10 mrad of Beryllium 1mm thick --> <!-- Start at end of BeforeMagnet Region --> + <!-- <volume vis="UT:PipeHeater" material="UT:PipeHeater" name="lvUTPipeHeaterDownstreamInMagnet"> + <shape name="utPipeHeaterInUT" operation="subtraction" type="BooleanShape"> + <shape dz="UTPipeHeaterDownstreamLength/2" name="UTPipeHeaterDownstream" rmax2="UTPipeHeaterDownstreamRadiusZmax+UTPipeHeaterDownstreamThick" rmax1="UTPipeHeaterDownstreamRadiusZmin+UTPipeHeaterDownstreamThick" rmin2="UTPipeHeaterDownstreamRadiusZmax" rmin1="UTPipeHeaterDownstreamRadiusZmin" type="ConeSegment" /> + <shape rmax="UTPipeHeaterDownstreamRadiusZmax+UTPipeHeaterDownstreamThick+UTEpsilon" dz="UTPipeHeaterDownstreamLengthInUT/2+UTEpsilon" name="UTPipeHeaterDownstreamInUTSubMagnet" type="Tube" /> + <position z="UTPipeHeaterDownstreamZmin+UTPipeHeaterDownstreamLengthInUT/2-UTPipeHeaterDownstreamPos-UTSystemZ-UTEpsilon" /> + </shape> + </volume> --> + <volume name="lvUX851Cone08B" material="Pipe:BeTV56" vis="Pipe:Magnet"> <shape type="ConeSegment" name="UX85-1-Cone10mrad-08B" dz="0.5*UX851Cone08BLenght" @@ -81,6 +89,10 @@ </volume> <volume name="lvUX851InMagnet" vis="Pipe:Magnet"> + <!-- <physvol name="pvUTPipeHeaterDownstreamInMagnet" volume="lvUTPipeHeaterDownstreamInMagnet"> + <position z="UTPipeHeaterDownstreamLengthInMagnet-UTPipeHeaterDownstreamLength/2"/> + </physvol> --> + <physvol name="pvUX851Cone08B" volume="lvUX851Cone08B"> <position z="UX851Cone08BZpos"/> </physvol> diff --git a/compact/trunk/UT/Module.xml b/compact/trunk/UT/Module.xml index cf564334df37baa6e54657759de97f9617254025..e970a9115007b38e18046ee891727c83bf6c5768 100644 --- a/compact/trunk/UT/Module.xml +++ b/compact/trunk/UT/Module.xml @@ -53,16 +53,6 @@ <position x="7/16*UTSensorSiWide"/> </physvol> </volume> - - <!-- - Computed in C++ - <volume material="UT:UTAsic" name="lvAsic4" vis="UT:Asic"> - <shape type="Box" name="utAsic4" dx="0.5*UTSensorWidth" dy="0.5*UTAsicHeight" dz="0.5*UTAsicThicknessAve*4"/> - </volume> - <volume material="UT:UTAsic" name="lvAsic8" vis="UT:Asic"> - <shape type="Box" name="utAsic8" dx="0.5*UTSensorWidth" dy="0.5*UTAsicHeight" dz="0.5*UTAsicThicknessAve*8"/> - </volume> - --> <!--====== HybridFlex ======--> <!-- Porting from UTv4r1-materials branch instead of UTV4r2 --> <volume material="UT:HybridFlex4" name="lvModuleFlex4" vis="UT:HybridFlex"> @@ -247,11 +237,7 @@ </shape> </volume> <!--====== Hybrid - SensorGroup + ASIC + HybridFlex + Hysol + Stiffener + Tim (Computed in C++) ======--> - <volume material="Air" name="lvModuleA" vis="UT:Envelope"> - <shape name="utHybridA" type="Box" dx="(UTHybridWide)/2" dy="(UTHybridLongA)/2" dz="(UTHybrid4Thick)/2"/> - <!-- <physvol volume="lvGroupA" name="pvGroupA"> - <position y="UTSensorYA" z="UTSensorZ"/> - </physvol> --> + <volume name="lvModuleA" vis="UT:Envelope"> <physvol volume="lvAsic4" name="pvAsicA"> <position y="UTAsicYA" z="UTAsic4Z"/> </physvol> @@ -269,11 +255,7 @@ </physvol> </volume> - <volume material="Air" name="lvModuleB" vis="UT:Envelope"> - <shape name="utHybridB" type="Box" dx="(UTHybridWide)/2" dy="(UTHybridLongB)/2" dz="(UTHybrid8Thick)/2"/> - <!-- <physvol volume="lvGroupB" name="pvGroupB"> - <position y="UTSensorYB" z="UTSensorZ"/> - </physvol> --> + <volume name="lvModuleB" vis="UT:Envelope"> <physvol volume="lvAsic8" name="pvAsicB"> <position y="UTAsicYB" z="UTAsic8Z"/> </physvol> @@ -291,11 +273,7 @@ </physvol> </volume> - <volume material="Air" name="lvModuleC" vis="UT:Envelope"> - <shape name="utHybridC" type="Box" dx="(UTHybridWide)/2" dy="(UTHybridLongC)/2" dz="(UTHybrid8Thick)/2"/> - <!-- <physvol volume="lvGroupC" name="pvGroupC"> - <position y="UTSensorYC" z="UTSensorZ"/> - </physvol> --> + <volume name="lvModuleC" vis="UT:Envelope"> <physvol volume="lvAsic8" name="pvAsicC"> <position y="UTAsicYC" z="UTAsic8Z"/> </physvol> @@ -313,11 +291,7 @@ </physvol> </volume> - <volume material="Air" name="lvModuleD" vis="UT:Envelope"> - <shape name="utHybridD" type="Box" dx="(UTHybridWide)/2" dy="(UTHybridLongD)/2" dz="(UTHybrid8Thick)/2"/> - <!-- <physvol volume="lvGroupD" name="pvGroupD"> - <position y="UTSensorYD" z="UTSensorZ"/> - </physvol> --> + <volume name="lvModuleD" vis="UT:Envelope"> <physvol volume="lvAsic8" name="pvAsicD"> <position y="UTAsicYD" z="UTAsic8Z"/> </physvol> diff --git a/compact/trunk/UT/Sensor.xml b/compact/trunk/UT/Sensor.xml index 3b656ad81afcd9ad7c7e20e9e0982a451ceeba5c..8e6cdbdd7cd9ffee68b78668571883124931ef0e 100644 --- a/compact/trunk/UT/Sensor.xml +++ b/compact/trunk/UT/Sensor.xml @@ -86,21 +86,11 @@ </volume> <!--======Sector (norm, dual, quad, hold)======--> - <volume material="Air" name="lvSectorNorm" vis="UT:Envelope"> - <shape name="utSectorNorm" type="Box" dx="(UTSensorSiWide)/2" dy="(UTSensorSiLongA)/2" dz="(UTSensorSiThickA)/2"/> - <!-- <physvol volume="lvSensorNorm" name="pvSensorNorm"/> --> - </volume> - <volume material="Air" name="lvSectorDual" vis="UT:Envelope"> - <shape name="utSectorDual" type="Box" dx="(UTSensorSiWide/2)/2" dy="(UTSensorSiLongB)/2" dz="(UTSensorSiThickB)/2"/> - <!-- <physvol volume="lvSensorDual" name="pvSensorDual"/> --> - </volume> - <volume material="Air" name="lvSectorQuad" vis="UT:Envelope"> - <shape name="utSectorQuad" type="Box" dx="(UTSensorSiWide/2)/2" dy="(UTSensorSiLongC)/2" dz="(UTSensorSiThickC)/2"/> - <!-- <physvol volume="lvSensorQuad" name="pvSensorQuad"/> --> - </volume> + <volume name="lvSectorNorm" vis="UT:Envelope"/> + <volume name="lvSectorDual" vis="UT:Envelope"/> + <volume name="lvSectorQuad" vis="UT:Envelope"/> <volume material="Air" name="lvSectorHole" vis="UT:Envelope"> <shape name="utSectorHole" type="Box" dx="(UTSensorSiWide/2)/2" dy="(UTSensorSiLongD)/2" dz="(UTSensorSiThickD)/2"/> - <!-- <physvol volume="lvSensorHole" name="pvSensorHole"/> --> </volume> <!--======Sensor Groups======--> <volume name="lvGroupA" vis="UT:Envelope"> @@ -110,9 +100,6 @@ <physvol volume="lvGuardRingA" name="pvGuardRingA"> <position z="UTSensorSiZ"/> </physvol> - <!-- <physvol volume="lvSectorNorm" name="pvSectorA1"> - <position y="UTSensorSiOffsetY" z="UTSensorSiZ" /> - </physvol> --> </volume> <volume name="lvGroupB" vis="UT:Envelope"> <physvol volume="lvMetalLayerB" name="pvMetalLayerB"> @@ -121,9 +108,6 @@ <physvol volume="lvGuardRingB" name="pvGuardRingB"> <position z="UTSensorSiZ"/> </physvol> - <!-- <physvol volume="lvSectorDual" name="pvSectorB1"> - <position x="-UTSensorSiWide/4" y="UTSensorSiOffsetY" z="UTSensorSiZ"/> - </physvol> --> </volume> <volume name="lvGroupC" vis="UT:Envelope"> <physvol volume="lvMetalLayerC" name="pvMetalLayerC"> @@ -132,12 +116,6 @@ <physvol volume="lvGuardRingC" name="pvGuardRingC"> <position z="UTSensorSiZ"/> </physvol> - <!-- <physvol volume="lvSectorQuad" name="pvSectorC1"> - <position x="-UTSensorSiWide/4" y="UTSensorSiOffsetY" z="UTSensorSiZ"/> - </physvol> - <physvol volume="lvSectorQuad" name="pvSectorC2"> - <position x="UTSensorSiWide/4" y="UTSensorSiOffsetY" z="UTSensorSiZ"/> - </physvol> --> </volume> <volume name="lvGroupD" vis="UT:Envelope"> <physvol volume="lvMetalLayerD" name="pvMetalLayerD"> @@ -146,11 +124,5 @@ <physvol volume="lvGuardRingD" name="pvGuardRingD"> <position z="UTSensorSiZ"/> </physvol> - <!-- <physvol volume="lvSectorQuad" name="pvSectorD1"> - <position x="-UTSensorSiWide/4" y="UTSensorSiOffsetY" z="UTSensorSiZ"/> - </physvol> - <physvol volume="lvSectorHole" name="pvSectorD2"> - <position x="UTSensorSiWide/4" y="UTSensorSiOffsetY" z="UTSensorSiZ"/> - </physvol> --> </volume> </ut> \ No newline at end of file diff --git a/compact/trunk/UT/Stave.xml b/compact/trunk/UT/Stave.xml index ceb062925d4a0c3242f376ef13b2cc8e3657f7c6..7bf12c7865cb35c6366425dc152d3364364170b6 100644 --- a/compact/trunk/UT/Stave.xml +++ b/compact/trunk/UT/Stave.xml @@ -1,35 +1,35 @@ <ut> <!-- (c) Copyright 2021 CERN for the benefit of the LHCb Collaboration - + This software is distributed under the terms of the GNU General Public Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". - + In applying this licence, CERN does not waive the privileges and immunities granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. --> <!-- ========== Stave Geometry ========== --> <!-- ========== MegArray connector ========== --> - <volume material="Silicon" name="lvMegArray"> + <volume material="Silicon" name="lvMegArray" vis="UT:Connector"> <shape dx="UTMegArrayWide/2" dy="UTMegArrayLong/2" dz="UTMegArrayThick/2" name="utMegArray" type="Box" /> </volume> <!-- ========== HV connector ========== --> - <volume material="Silicon" name="lvHVConnector"> + <volume material="Silicon" name="lvHVConnector" vis="UT:Connector"> <shape dx="UTHVConnectorWide/2" dy="UTHVConnectorLong/2" dz="UTHVConnectorThick/2" name="utHVConnector" type="Box" /> </volume> <!-- ========== Flex Cable Kapton========== --> - <volume material="UT:FlexCable" name="lvCableKaptonL"> + <volume material="UT:FlexCable" name="lvCableKaptonL" vis="UT:KaptonCable"> <shape dx="UTCableWide/2" dy="UTCableLongL/2" dz="UTCableKaptonThick/2" name="utCableKaptonL" type="Box" /> </volume> - <volume material="UT:FlexCable" name="lvCableKaptonM"> + <volume material="UT:FlexCable" name="lvCableKaptonM" vis="UT:KaptonCable"> <shape dx="UTCableWide/2" dy="UTCableLongM/2" dz="UTCableKaptonThick/2" name="utCableKaptonM" type="Box" /> </volume> - <volume material="UT:FlexCable" name="lvCableKaptonS"> + <volume material="UT:FlexCable" name="lvCableKaptonS" vis="UT:KaptonCable"> <shape dx="UTCableWide/2" dy="UTCableLongS/2" dz="UTCableKaptonThick/2" name="utCableKaptonS" type="Box" /> </volume> <!-- ========== Flex Cable Copper========== --> - <volume material="Copper" name="lvCableCuL"> + <volume material="Copper" name="lvCableCuL" vis="UT:KaptonCable"> <shape name="utCableCuL" operation="subtraction" type="BooleanShape"> <shape dx="UTCableWide/2" dy="UTCableLongL/2" dz="UTCableCuThickL0/2" name="utCableCuBoxL0" type="Box" /> <shape dx="UTCableWide" dy="UTCableLongL1" dz="UTCableCuThickL0-UTCableCuThickL1" name="utCableCuBoxL1" type="Box" /> @@ -40,8 +40,8 @@ <position y="-UTCableLongL/2+UTCableLongL0+UTCableLongL1+UTCableLongL2+UTCableLongL3" z="-UTCableCuThickL0/2" /> </shape> </volume> - <volume material="Copper" name="lvCableCuM"> - <shape name="utCableCML" operation="subtraction" type="BooleanShape"> + <volume material="Copper" name="lvCableCuM" vis="UT:KaptonCable"> + <shape name="utCableCuM" operation="subtraction" type="BooleanShape"> <shape dx="UTCableWide/2" dy="UTCableLongM/2" dz="UTCableCuThickM0/2" name="utCableCuBoxM0" type="Box" /> <shape dx="UTCableWide" dy="UTCableLongM1" dz="UTCableCuThickM0-UTCableCuThickM1" name="utCableCuBoxM1" type="Box" /> <position y="-UTCableLongM/2+UTCableLongM0+UTCableLongM1" z="-UTCableCuThickM0/2" /> @@ -51,7 +51,7 @@ <position y="-UTCableLongM/2+UTCableLongM0+UTCableLongM1+UTCableLongM2+UTCableLongM3" z="-UTCableCuThickM0/2" /> </shape> </volume> - <volume material="Copper" name="lvCableCuS"> + <volume material="Copper" name="lvCableCuS" vis="UT:KaptonCable"> <shape name="utCableCuS" operation="subtraction" type="BooleanShape"> <shape dx="UTCableWide/2" dy="UTCableLongS/2" dz="UTCableCuThickS0/2" name="utCableCuBoxS0" type="Box" /> <shape dx="UTCableWide" dy="UTCableLongS1" dz="UTCableCuThickS0-UTCableCuThickS1" name="utCableCuBoxS1" type="Box" /> @@ -61,7 +61,7 @@ </shape> </volume> <!-- ========== Kapton Cable ========== --> - <volume name="lvCableL" vis="UT:KaptonCable"> + <volume name="lvCableL"> <physvol name="pvCableCuL" volume="lvCableCuL"> <position z="UTCableKaptonThick/2" /> </physvol> @@ -69,13 +69,14 @@ <position z="-UTCableCuThickL0/2" /> </physvol> <physvol name="pvMegArrayL" volume="lvMegArray"> - <position y="-UTCableLongL/2+UTMegArrayY" z="-UTCableCuThickL0/2-UTMegArrayThick/2" /> + <position y="-UTCableLongL/2+UTMegArrayY" z="-1/2*(UTCableCuThickL0+UTMegArrayThick+UTCableKaptonThick)" /> </physvol> <physvol name="pvConnectorL" volume="lvHVConnector"> - <position x="UTHVConnectorLX" y="-UTCableLongL/2+UTHVConnectorLong/2" z="-UTCableCuThickL0/2-UTMegArrayThick/2" /> + <!-- <position x="UTHVConnectorLX" y="-UTCableLongL/2+UTHVConnectorLong/2" z="-1/2*(UTCableCuThickL0+UTHVConnectorThick+UTCableKaptonThick)" /> --> + <position y="-UTCableLongL/2+UTHVConnectorLong/2" z="-1/2*(UTCableCuThickL0+UTHVConnectorThick+UTCableKaptonThick)" /> </physvol> </volume> - <volume name="lvCableM" vis="UT:KaptonCable"> + <volume name="lvCableM"> <physvol name="pvCableCuM" volume="lvCableCuM"> <position z="UTCableKaptonThick/2" /> </physvol> @@ -83,13 +84,14 @@ <position z="-UTCableCuThickM0/2" /> </physvol> <physvol name="pvMegArrayM" volume="lvMegArray"> - <position y="-UTCableLongM/2+UTMegArrayY" z="-UTCableCuThickM0/2-UTMegArrayThick/2" /> + <position y="-UTCableLongM/2+UTMegArrayY" z="-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)" /> </physvol> <physvol name="pvConnectorM" volume="lvHVConnector"> - <position x="UTHVConnectorMX" y="-UTCableLongM/2+UTHVConnectorLong/2" z="-UTCableCuThickM0/2-UTMegArrayThick/2" /> + <position y="-UTCableLongM/2+UTHVConnectorLong/2" z="-1/2*(UTCableCuThickM0+UTHVConnectorThick+UTCableKaptonThick)" /> + <!-- <position x="UTHVConnectorMX" y="-UTCableLongM/2+UTHVConnectorLong/2" z="-1/2*(UTCableCuThickM0+UTHVConnectorThick+UTCableKaptonThick)" /> --> </physvol> </volume> - <volume name="lvCableS" vis="UT:KaptonCable"> + <volume name="lvCableS"> <physvol name="pvCableCuS" volume="lvCableCuS"> <position z="UTCableKaptonThick/2" /> </physvol> @@ -97,10 +99,11 @@ <position z="-UTCableCuThickS0/2" /> </physvol> <physvol name="pvMegArrayS" volume="lvMegArray"> - <position y="-UTCableLongS/2+UTMegArrayY" z="-UTCableCuThickS0/2-UTMegArrayThick/2" /> + <position y="-UTCableLongS/2+UTMegArrayY" z="-1/2*(UTCableCuThickS0+UTMegArrayThick+UTCableKaptonThick)" /> </physvol> <physvol name="pvConnectorS" volume="lvHVConnector"> - <position x="UTHVConnectorSX" y="-UTCableLongS/2+UTHVConnectorLong/2" z="-UTCableCuThickS0/2-UTMegArrayThick/2" /> + <position y="-UTCableLongS/2+UTHVConnectorLong/2" z="-1/2*(UTCableCuThickS0+UTHVConnectorThick+UTCableKaptonThick)" /> + <!-- <position x="UTHVConnectorSX" y="-UTCableLongS/2+UTHVConnectorLong/2" z="-1/2*(UTCableCuThickS0+UTHVConnectorThick+UTCableKaptonThick)" /> --> </physvol> </volume> <!-- ========== Bare Stave ========== --> @@ -120,14 +123,7 @@ <!-- ====== Stave A/B/C (Computed in C++) ====== --> <!-- ========== Stave Type A ========== --> <!-- ========== Stave Type A core ========== --> - <volume material="Air" name="lvStaveACore" vis="UT:Envelope"> - <shape name="utStaveACore" operation="union" type="BooleanShape"> - <shape dx="UTStaveWide/2" dy="UTStaveLong/2" dz="(UTBareStaveThick+UTCableThick*2)/2" name="utStaveACoreBox" type="Box" /> - <shape dx="UTStaveWide/2" dy="(UTMegArrayY+UTMegArrayLong/2)/2" dz="UTStaveThick/2" name="utStaveACoreTop" type="Box" /> - <position y="UTStaveLong/2-UTMegArrayY/2-UTMegArrayLong/4" /> - <shape dx="UTStaveWide/2" dy="(UTMegArrayY+UTMegArrayLong/2)/2" dz="UTStaveThick/2" name="utStaveACoreBottom" type="Box" /> - <position y="-UTStaveLong/2+UTMegArrayY/2+UTMegArrayLong/4" /> - </shape> + <volume name="lvStaveACore" vis="UT:Envelope"> <physvol name="pvBareStaveA" volume="lvBareStaveA" /> <physvol name="pvCableA1" volume="lvCableS"> <position y="-UTStaveLong/2+UTCableLongS/2" z="-UTStaveCableZ" /> @@ -146,94 +142,16 @@ </physvol> </volume> <!-- ========== Stave Type A Front ========== --> - <volume material="Air" name="lvStaveAFront" vis="UT:Envelope"> - <shape dx="UTHybridWide/2" dy="(13*UTStaveHybridAStepY+2*UTStaveAHybridY0+UTHybridLongA)/2" dz="(UTHybrid4Thick+2*UTEpsilon)/2" name="utHybridAFront" type="Box" /> - <!-- - <physvol name="pvHybridA1" volume="lvHybridA"> - <position y="-13/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridA3" volume="lvHybridA"> - <position y="-9/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridA5" volume="lvHybridA"> - <position y="-5/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridA7" volume="lvHybridA"> - <position y="-1/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridA9" volume="lvHybridA"> - <position y="3/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridA11" volume="lvHybridA"> - <position y="7/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridA13" volume="lvHybridA"> - <position y="11/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - --> - </volume> + <volume name="lvStaveAFront" vis="UT:Envelope"/> <!-- ========== Stave Type A Back ========== --> - <volume material="Air" name="lvStaveABack" vis="UT:Envelope"> - <shape dx="UTHybridWide/2" dy="(13*UTStaveHybridAStepY+2*UTStaveAHybridY0+UTHybridLongA)/2" dz="(UTHybrid4Thick+2*UTEpsilon)/2" name="utHybridABack" type="Box" /> - <!-- - <physvol name="pvHybridA2" volume="lvHybridA"> - <position y="-11/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - </physvol> - <physvol name="pvHybridA4" volume="lvHybridA"> - <position y="-7/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - </physvol> - <physvol name="pvHybridA6" volume="lvHybridA"> - <position y="-3/2*UTStaveHybridAStepY-UTStaveAHybridY0" /> - </physvol> - <physvol name="pvHybridA8" volume="lvHybridA"> - <position y="1/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridA10" volume="lvHybridA"> - <position y="5/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridA12" volume="lvHybridA"> - <position y="9/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridA14" volume="lvHybridA"> - <position y="13/2*UTStaveHybridAStepY+UTStaveAHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - --> - </volume> - <volume material="Air" name="lvStaveA" vis="UT:Envelope"> - <shape dx="UTStaveWide/2" dy="UTStaveLong/2" dz="UTStaveThick/2" name="utStaveA" type="Box" /> + <volume name="lvStaveABack" vis="UT:Envelope"/> + <volume name="lvStaveA" vis="UT:Envelope"> <physvol name="pvStaveACore" volume="lvStaveACore"> </physvol> - <!-- - <physvol name="pvStaveAFront" volume="lvStaveAFront"> - <position z="UTStaveHybridZ" /> - </physvol> - <physvol name="pvStaveABack" volume="lvStaveABack"> - <position z="-UTStaveHybridZ" /> - </physvol> - --> </volume> <!-- ========== Stave Type B ========== --> <!-- ========== Stave Type B core ========== --> - <volume material="Air" name="lvStaveBCore" vis="UT:Envelope"> - > - <shape name="utStaveBCore" operation="union" type="BooleanShape"> - <shape dx="UTStaveWide/2" dy="UTStaveLong/2" dz="(UTBareStaveThick+UTCableThick*2)/2" name="utStaveBCoreBox" type="Box" /> - <shape dx="UTStaveWide/2" dy="(UTMegArrayY+UTMegArrayLong/2)/2" dz="UTStaveThick/2" name="utStaveBCoreTop" type="Box" /> - <position y="UTStaveLong/2-UTMegArrayY/2-UTMegArrayLong/4" /> - <shape dx="UTStaveWide/2" dy="(UTMegArrayY+UTMegArrayLong/2)/2" dz="UTStaveThick/2" name="utStaveBCoreBottom" type="Box" /> - <position y="-UTStaveLong/2+UTMegArrayY/2+UTMegArrayLong/4" /> - </shape> + <volume name="lvStaveBCore" vis="UT:Envelope"> <physvol name="pvBareStaveB" volume="lvBareStaveB" /> <physvol name="pvCableB1" volume="lvCableS"> <position y="-UTStaveLong/2+UTCableLongS/2" z="-UTStaveCableZ" /> @@ -252,93 +170,16 @@ </physvol> </volume> <!-- ========== Stave Type B Front ========== --> - <volume material="Air" name="lvStaveBFront" vis="UT:Envelope"> - <shape dx="UTHybridWide/2" dy="(13*UTStaveHybridAStepY+2*UTStaveBHybridY0+UTHybridLongA)/2" dz="(UTHybrid4Thick+2*UTEpsilon)/2" name="utHybridBFront" type="Box" /> - <!-- - <physvol name="pvHybridB1" volume="lvHybridA"> - <position y="-13/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridB3" volume="lvHybridA"> - <position y="-9/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridB5" volume="lvHybridA"> - <position y="-5/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridB7" volume="lvHybridB"> - <position y="-1/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridB9" volume="lvHybridB"> - <position y="3/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridB11" volume="lvHybridA"> - <position y="7/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridB13" volume="lvHybridA"> - <position y="11/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - --> - </volume> + <volume name="lvStaveBFront" vis="UT:Envelope"/> <!-- ========== Stave Type B Back ========== --> - <volume material="Air" name="lvStaveBBack" vis="UT:Envelope"> - <shape dx="UTHybridWide/2" dy="(13*UTStaveHybridAStepY+2*UTStaveBHybridY0+UTHybridLongA)/2" dz="(UTHybrid4Thick+2*UTEpsilon)/2" name="utHybridBBack" type="Box" /> - <!-- - <physvol name="pvHybridB2" volume="lvHybridA"> - <position y="-11/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - </physvol> - <physvol name="pvHybridB4" volume="lvHybridA"> - <position y="-7/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - </physvol> - <physvol name="pvHybridB6" volume="lvHybridB"> - <position y="-3/2*UTStaveHybridAStepY-UTStaveBHybridY0" /> - </physvol> - <physvol name="pvHybridB8" volume="lvHybridB"> - <position y="1/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridB10" volume="lvHybridA"> - <position y="5/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridB12" volume="lvHybridA"> - <position y="9/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridB14" volume="lvHybridA"> - <position y="13/2*UTStaveHybridAStepY+UTStaveBHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - --> - </volume> - <volume material="Air" name="lvStaveB" vis="UT:Envelope"> - <shape dx="UTStaveWide/2" dy="UTStaveLong/2" dz="UTStaveThick/2" name="utStaveB" type="Box" /> + <volume name="lvStaveBBack" vis="UT:Envelope"/> + <volume name="lvStaveB" vis="UT:Envelope"> <physvol name="pvStaveBCore" volume="lvStaveBCore"> </physvol> - <!-- - <physvol name="pvStaveBFront" volume="lvStaveBFront"> - <position z="UTStaveHybridZ" /> - </physvol> - <physvol name="pvStaveBBack" volume="lvStaveBBack"> - <position z="-UTStaveHybridZ" /> - </physvol> - --> </volume> <!-- ========== Stave Type C ========== --> <!-- ========== Stave Type C core ========== --> - <volume material="Air" name="lvStaveCCore" vis="UT:Envelope"> - <shape name="utStaveCCore" operation="union" type="BooleanShape"> - <shape dx="UTStaveWide/2" dy="UTStaveLong/2" dz="(UTBareStaveThick+UTCableThick*2)/2" name="utStaveCCoreBox" type="Box" /> - <shape dx="UTStaveWide/2" dy="(UTMegArrayY+UTMegArrayLong/2)/2" dz="UTStaveThick/2" name="utStaveCCoreTop" type="Box" /> - <position y="UTStaveLong/2-UTMegArrayY/2-UTMegArrayLong/4" /> - <shape dx="UTStaveWide/2" dy="(UTMegArrayY+UTMegArrayLong/2)/2" dz="UTStaveThick/2" name="utStaveCCoreBottom" type="Box" /> - <position y="-UTStaveLong/2+UTMegArrayY/2+UTMegArrayLong/4" /> - </shape> + <volume name="lvStaveCCore" vis="UT:Envelope"> <physvol name="pvBareStaveC" volume="lvBareStaveC" /> <physvol name="pvCableC1" volume="lvCableL"> <position y="-UTStaveLong/2+UTCableLongL/2" z="-UTStaveCableZ" /> @@ -357,88 +198,11 @@ </physvol> </volume> <!-- ========== Stave Type C Front ========== --> - <volume material="Air" name="lvStaveCFront" vis="UT:Envelope"> - <shape dx="UTHybridWide/2" dy="(11*UTStaveHybridAStepY+2*UTStaveCHybridY0+4*UTStaveHybridCStepY+UTHybridLongA)/2" dz="(UTHybrid4Thick+2*UTEpsilon)/2" name="utHybridCFront" type="Box" /> - <!-- - <physvol name="pvHybridC1" volume="lvHybridA"> - <position y="-11/2*UTStaveHybridAStepY-UTStaveCHybridY0-2*UTStaveHybridCStepY" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridC3" volume="lvHybridA"> - <position y="-7/2*UTStaveHybridAStepY-UTStaveCHybridY0-2*UTStaveHybridCStepY" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridC5" volume="lvHybridA"> - <position y="-3/2*UTStaveHybridAStepY-UTStaveCHybridY0-2*UTStaveHybridCStepY" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridC7" volume="lvHybridC"> - <position y="-3/2*UTStaveHybridCStepY-UTStaveCHybridY0" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvHybridC9" volume="lvHybridD"> - <position y="1/2*UTStaveHybridCStepY+UTStaveCHybridY0" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridC11" volume="lvHybridB"> - <position y="1/2*UTStaveHybridAStepY+UTStaveCHybridY0+2*UTStaveHybridCStepY" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridC13" volume="lvHybridA"> - <position y="5/2*UTStaveHybridAStepY+UTStaveCHybridY0+2*UTStaveHybridCStepY" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - <physvol name="pvHybridC15" volume="lvHybridA"> - <position y="9/2*UTStaveHybridAStepY+UTStaveCHybridY0+2*UTStaveHybridCStepY" /> - <rotation y="pi*rad" z="pi*rad" /> - </physvol> - --> - </volume> + <volume name="lvStaveCFront" vis="UT:Envelope"/> <!-- ========== Stave Type C Back ========== --> - <volume material="Air" name="lvStaveCBack" vis="UT:Envelope"> - <shape dx="UTHybridWide/2" dy="(11*UTStaveHybridAStepY+2*UTStaveCHybridY0+4*UTStaveHybridCStepY+UTHybridLongA)/2" dz="(UTHybrid4Thick+2*UTEpsilon)/2" name="utHybridCBack" type="Box" /> - <!-- - <physvol name="pvHybridC2" volume="lvHybridA"> - <position y="-9/2*UTStaveHybridAStepY-UTStaveCHybridY0-2*UTStaveHybridCStepY" /> - </physvol> - <physvol name="pvHybridC4" volume="lvHybridA"> - <position y="-5/2*UTStaveHybridAStepY-UTStaveCHybridY0-2*UTStaveHybridCStepY" /> - </physvol> - <physvol name="pvHybridC6" volume="lvHybridB"> - <position y="-1/2*UTStaveHybridAStepY-UTStaveCHybridY0-2*UTStaveHybridCStepY" /> - </physvol> - <physvol name="pvHybridC8" volume="lvHybridD"> - <position y="-1/2*UTStaveHybridCStepY-UTStaveCHybridY0" /> - </physvol> - <physvol name="pvHybridC10" volume="lvHybridC"> - <position y="3/2*UTStaveHybridCStepY+UTStaveCHybridY0" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridC12" volume="lvHybridA"> - <position y="3/2*UTStaveHybridAStepY+UTStaveCHybridY0+2*UTStaveHybridCStepY" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridC14" volume="lvHybridA"> - <position y="7/2*UTStaveHybridAStepY+UTStaveCHybridY0+2*UTStaveHybridCStepY" /> - <rotation z="pi*rad" /> - </physvol> - <physvol name="pvHybridC16" volume="lvHybridA"> - <position y="11/2*UTStaveHybridAStepY+UTStaveCHybridY0+2*UTStaveHybridCStepY" /> - <rotation z="pi*rad" /> - </physvol> - --> - </volume> - <volume material="Air" name="lvStaveC" vis="UT:Envelope"> - <shape dx="UTStaveWide/2" dy="UTStaveLong/2" dz="UTStaveThick/2" name="utStaveC" type="Box" /> + <volume name="lvStaveCBack" vis="UT:Envelope"/> + <volume name="lvStaveC" vis="UT:Envelope"> <physvol name="pvStaveCCore" volume="lvStaveCCore"> </physvol> - <!-- - <physvol name="pvStaveCFront" volume="lvStaveCFront"> - <position z="UTStaveHybridZ" /> - </physvol> - <physvol name="pvStaveCBack" volume="lvStaveCBack"> - <position z="-UTStaveHybridZ" /> - </physvol> - --> </volume> </ut> diff --git a/compact/trunk/UT/UTBox.xml b/compact/trunk/UT/UTBox.xml index 18993d1a701a4753dc9aa839d005341e7e2c7a3f..7d8d95a965764cbb2a44e24e3f982871b01f6e01 100644 --- a/compact/trunk/UT/UTBox.xml +++ b/compact/trunk/UT/UTBox.xml @@ -10,6 +10,7 @@ or submit itself to any jurisdiction. --> <!-- UT frame --> + <volume name="lvUT" vis="UT:Envelope"/> <volume material="UT:Aluminium" name="lvUTFrame" vis="UT:Frame"> <shape name="utFrame" operation="subtraction" type="BooleanShape"> <shape dx="UTFrameOuterWide/2" dy="UTFrameOuterLong/2" dz="UTFrameThick/2" name="utFrameBoxOuter" type="Box" /> @@ -25,13 +26,13 @@ </shape> </volume> <!-- UT box plug --> - <volume material="UT:Airex" name="lvUTBoxPipeAirexRingInner"> + <volume vis="UT:Airex" material="UT:Airex" name="lvUTBoxPipeAirexRingInner"> <shape dz="UTBoxPipeAirexRingInnerThick/2" name="utBoxPipeAirexRingInner" rmax="UTBoxPipeAirexRingInnerOR" rmin="UTBoxPipeAirexRingIR" type="Tube" /> </volume> - <volume material="UT:Airex" name="lvUTBoxPipeAirexRingMiddle"> + <volume vis="UT:Airex" material="UT:Airex" name="lvUTBoxPipeAirexRingMiddle"> <shape dz="UTBoxPipeAirexRingMiddleThick/2" name="utBoxPipeAirexRingMiddle" rmax="UTBoxPipeAirexRingMiddleOR" rmin="UTBoxPipeAirexRingIR" type="Tube" /> </volume> - <volume material="UT:Airex" name="lvUTBoxPipeAirexRingOuter"> + <volume vis="UT:Airex" material="UT:Airex" name="lvUTBoxPipeAirexRingOuter"> <shape dz="UTBoxPipeAirexRingOuterThick/2" name="utBoxPipeAirexRingOuter" rmax="UTBoxPipeAirexRingOuterOR" rmin="UTBoxPipeAirexRingIR" type="Tube" /> </volume> <volume name="lvUTBoxPipeAirexRing"> @@ -43,18 +44,22 @@ <position z="-0.5*(UTBoxPipeAirexRingOuterThick+UTBoxPipeAirexRingMiddleThick)" /> </physvol> </volume> - <volume material="UT:EPDM" name="lvUTBoxWallSeal"> - <shape dz="UTBoxWallSealThick/2" name="utBoxWallSeal" rmax="UTBoxWallSealOR" rmin="UTBoxWallSealIR" type="Tube" /> + <volume vis="UT:EPDM" material="UT:EPDM" name="lvUTBoxWallSeal"> + <shape dz="UTBoxWallSealThick/2" name="utBoxWallSeal" rmax="UTBoxWallSealOR-UTEpsilon" rmin="UTBoxWallSealIR" type="Tube" /> </volume> - <volume material="UT:Airex" name="lvUTBoxInternalAirexRing"> - <shape dz="UTInternalRingThick/2" name="utBoxInternalAirexRing" rmax="UTInternalRingOR" rmin="UTInternalRingIR" type="Tube" /> + <volume vis="UT:HalfMoon" material="UT:Airex" name="lvUTBoxInternalAirexRing"> + <shape dz="UTInternalRingThick/2-UTEpsilon" name="utBoxInternalAirexRing" rmax="UTInternalRingOR" rmin="UTInternalRingIR" type="Tube" /> </volume> - <volume material="UT:EPDM" name="lvUTBoxInternalSeal"> + <volume vis="UT:EPDM" material="UT:EPDM" name="lvUTBoxInternalSeal"> <shape dz="UTInternalSealThick/2" name="utBoxInternalSeal" rmax="UTInternalSealOR" rmin="UTInternalSealIR" type="Tube" /> </volume> <volume name="lvUTBoxPlugPiece"> - <physvol name="pvUTBoxPipeAirexRing" volume="lvUTBoxPipeAirexRing" /> - <physvol name="pvUTBoxWallSeal" volume="lvUTBoxWallSeal" /> + <physvol name="pvUTBoxPipeAirexRing" volume="lvUTBoxPipeAirexRing"> + <position z="3*mm"/> + </physvol> + <physvol name="pvUTBoxWallSeal" volume="lvUTBoxWallSeal"> + <position z="3*mm"/> + </physvol> <physvol name="pvUTBoxInternalAirexRing" volume="lvUTBoxInternalAirexRing"> <position z="0.5*(UTBoxWallDownstreamThick+UTInternalRingThick)" /> </physvol> @@ -73,26 +78,26 @@ </volume> <!-- End of Stave (EOS) volumes --> <volume material="UT:Steel" name="lvUTaEOS" vis="UT:EOS"> - <shape dx="(UTEOSWideUTa/2)/2" dy="UTEOSLong/2" dz="UTEOSThick/2" name="utUTaEOS" type="Box" /> + <shape dx="(UTEOSWideUTa/2)/2-UTEpsilon" dy="UTEOSLong/2-UTEpsilon" dz="UTEOSThick/2-UTEpsilon" name="utUTaEOS" type="Box" /> </volume> <volume material="UT:EOSPigtail" name="lvUTaEOSPigtail" vis="UT:EOS"> - <shape dx="(UTEOSWideUTa/2)/2" dy="UTEOSPigtailLong/2" dz="UTEOSPigtailThick/2" name="utUTaEOSPigtail" type="Box" /> + <shape dx="(UTEOSWideUTa/2)/2-UTEpsilon" dy="UTEOSPigtailLong/2-UTEpsilon" dz="UTEOSPigtailThick/2-UTEpsilon" name="utUTaEOSPigtail" type="Box" /> </volume> <volume material="UT:Steel" name="lvUTbEOS" vis="UT:EOS"> - <shape dx="(UTEOSWideUTb/2)/2" dy="UTEOSLong/2" dz="UTEOSThick/2" name="utUTbEOS" type="Box" /> + <shape dx="(UTEOSWideUTb/2)/2-UTEpsilon" dy="UTEOSLong/2-UTEpsilon" dz="UTEOSThick/2-UTEpsilon" name="utUTbEOS" type="Box" /> </volume> <volume material="UT:EOSPigtail" name="lvUTbEOSPigtail" vis="UT:EOS"> - <shape dx="(UTEOSWideUTb/2)/2" dy="UTEOSPigtailLong/2" dz="UTEOSPigtailThick/2" name="utUTbEOSPigtail" type="Box" /> + <shape dx="(UTEOSWideUTb/2)/2-UTEpsilon" dy="UTEOSPigtailLong/2-UTEpsilon" dz="UTEOSPigtailThick/2-UTEpsilon" name="utUTbEOSPigtail" type="Box" /> </volume> <!-- UT Kapton jacket for electronic insulation --> <volume material="UT:BeamPipeJacket" name="lvUTCylJacket"> <shape dz="UTCylJacketLength/2" name="UTCylJacket" rmax="UTCylJacketRadius+UTCylJacketThick" rmin="UTCylJacketRadius" type="Tube" /> </volume> <volume material="UT:BeamPipeJacket" name="lvUTConeJacketUpstream"> - <shape dz="UTConeJacketUpstreamLength/2" name="UTConeJacketUpstream" rmax1="UTConeJacketCutOutRadiusZmin+UTConeJacketThick" rmax2="UTConeJacketRadiusZmin+UTConeJacketThick" rmin1="UTConeJacketCutOutRadiusZmin" rmin2="UTConeJacketRadiusZmin" type="ConeSegment" /> + <shape dz="UTConeJacketUpstreamLength/2" name="UTConeJacketUpstream" rmax2="UTConeJacketCutOutRadiusZmin+UTConeJacketThick" rmax1="UTConeJacketRadiusZmin+UTConeJacketThick" rmin2="UTConeJacketCutOutRadiusZmin" rmin1="UTConeJacketRadiusZmin" type="ConeSegment" /> </volume> <volume material="UT:BeamPipeJacket" name="lvUTConeJacketDownstream"> - <shape dz="UTConeJacketDownstreamLength/2" name="UTConeJacketDownstream" rmax1="UTConeJacketRadiusZmax+UTConeJacketThick" rmax2="UTConeJacketCutOutRadiusZmax+UTConeJacketThick" rmin1="UTConeJacketRadiusZmax" rmin2="UTConeJacketCutOutRadiusZmax" type="ConeSegment" /> + <shape dz="UTConeJacketDownstreamLength/2" name="UTConeJacketDownstream" rmax2="UTConeJacketRadiusZmax+UTConeJacketThick" rmax1="UTConeJacketCutOutRadiusZmax+UTConeJacketThick" rmin2="UTConeJacketRadiusZmax" rmin1="UTConeJacketCutOutRadiusZmax" type="ConeSegment" /> </volume> <volume name="lvUTJacket"> <physvol name="pvUTCylJacket" volume="lvUTCylJacket"> @@ -105,17 +110,21 @@ <position z="UTConeJacketZposDownstream" /> </physvol> </volume> - <volume material="UT:PipeHeater" name="lvUTPipeHeaterUpstream"> + <volume vis="UT:PipeHeater" material="UT:PipeHeater" name="lvUTPipeHeaterUpstream"> <shape dz="UTPipeHeaterUpstreamLength/2" name="UTPipeHeaterUpstream" rmax="UTPipeHeaterUpstreamRadius+UTPipeHeaterUpstreamThick" rmin="UTPipeHeaterUpstreamRadius" type="Tube" /> </volume> - <volume material="UT:PipeHeater" name="lvUTPipeHeaterDownstream"> - <shape dz="UTPipeHeaterDownstreamLength/2" name="UTPipeHeaterDownstream" rmax1="UTPipeHeaterDownstreamRadiusZmax+UTPipeHeaterDownstreamThick" rmax2="UTPipeHeaterDownstreamRadiusZmin+UTPipeHeaterDownstreamThick" rmin1="UTPipeHeaterDownstreamRadiusZmax" rmin2="UTPipeHeaterDownstreamRadiusZmin" type="ConeSegment" /> + <volume vis="UT:PipeHeater" material="UT:PipeHeater" name="lvUTPipeHeaterDownstreamInUT"> + <shape name="utPipeHeaterInUT" operation="subtraction" type="BooleanShape"> + <shape dz="UTPipeHeaterDownstreamLength/2" name="UTPipeHeaterDownstream" rmax2="UTPipeHeaterDownstreamRadiusZmax+UTPipeHeaterDownstreamThick" rmax1="UTPipeHeaterDownstreamRadiusZmin+UTPipeHeaterDownstreamThick" rmin2="UTPipeHeaterDownstreamRadiusZmax" rmin1="UTPipeHeaterDownstreamRadiusZmin" type="ConeSegment" /> + <shape rmax="UTPipeHeaterDownstreamRadiusZmax+UTPipeHeaterDownstreamThick+UTEpsilon" dz="(UTPipeHeaterDownstreamLengthInMagnet)/2+UTEpsilon" name="UTPipeHeaterDownstreamInUTSubMagnet" type="Tube" /> + <position z="UTPipeHeaterDownstreamZmax-(UTPipeHeaterDownstreamLengthInMagnet)/2+UTEpsilon-UTPipeHeaterDownstreamPos-UTSystemZ" /> + </shape> </volume> <volume name="lvUTPipeHeater"> <physvol name="pvUTPipeHeaterUpstream" volume="lvUTPipeHeaterUpstream"> <position z="UTPipeHeaterUpstreamPos" /> </physvol> - <physvol name="pvUTPipeHeaterDownstream" volume="lvUTPipeHeaterDownstream"> + <physvol name="pvUTPipeHeaterDownstream" volume="lvUTPipeHeaterDownstreamInUT"> <position z="UTPipeHeaterDownstreamPos" /> </physvol> </volume> diff --git a/compact/trunk/UT/UTHalf.xml b/compact/trunk/UT/UTHalf.xml index 4fc21cd2e1a1eb680548f08d8eba35738bc9109a..d80f4678aa49fc80126b4f194ca9acb63ba8699b 100644 --- a/compact/trunk/UT/UTHalf.xml +++ b/compact/trunk/UT/UTHalf.xml @@ -9,120 +9,6 @@ granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. --> - <volume material="Air" name="lvUTC" vis="UT:Envelope"> - <shape name="UTCBox" operation="subtraction" type="BooleanShape"> - <shape name="UTCBareBox" operation="union" type="BooleanShape"> - <!-- UTaX --> - <shape name="UTaXCsideBox" type="Trd2" x1="UTaXLayerSideShortWidth/2" x2="UTaXLayerSideLongWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXCsideEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXCsideEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - <!-- UTaU --> - <shape name="UTaUCsideBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTaUCvbox" type="Box" /> - <shape name="UTaUCsideBox0" type="Trd2" x1="UTaULayerSideShortWidth/2" x2="UTaULayerSideLongWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="UTLayerSideCorrectedX" y="UTLayerSideCorrectedY" /> - <rotation z="-UTAngle" /> - </shape> - <position z="UTLayerDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUCsideEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz+UTLayerDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUCsideEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz+UTLayerDz" /> - <!-- UTbV --> - <shape name="UTbVCsideBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTbVCvbox" type="Box" /> - <shape name="UTbVCsideBox0" type="Trd2" x1="UTbVLayerSideShortWidth/2" x2="UTbVLayerSideLongWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="UTLayerSideCorrectedX" y="-UTLayerSideCorrectedY" /> - <rotation z="UTAngle" /> - </shape> - <position z="UTStationDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVCsideEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz+UTStationDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVCsideEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz+UTStationDz" /> - <!-- UTbX --> - <shape name="UTbXCsideBox" type="Trd2" x1="UTbXLayerSideShortWidth/2" x2="UTbXLayerSideLongWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <position z="UTLayerDz+UTStationDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXCsideEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz+UTStationDz+UTLayerDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXCsideEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz+UTStationDz+UTLayerDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTCBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="1/2*UTLayerSideCorrectedWidth" z="1/2*UTLayerDz+1/2*UTStationDz" /> - </shape> - <!-- - <physvol name="pvUTaXCsideLayer" volume="lvUTaXCsideLayer"> - </physvol> - <physvol name="pvUTaUCsideLayer" volume="lvUTaUCsideLayer"> - <position z="UTLayerDz" /> - </physvol> - <physvol name="pvUTbVCsideLayer" volume="lvUTbVCsideLayer"> - <position z="UTStationDz" /> - </physvol> - <physvol name="pvUTbXCsideLayer" volume="lvUTbXCsideLayer"> - <position z="UTStationDz+UTLayerDz" /> - </physvol> - --> - </volume> - <volume material="Air" name="lvUTA" vis="UT:Envelope"> - <shape name="UTABox" operation="subtraction" type="BooleanShape"> - <shape name="UTABareBox" operation="union" type="BooleanShape"> - <!-- UTaX --> - <shape name="UTaXAsideBox" type="Trd2" x1="UTaXLayerSideLongWidth/2" x2="UTaXLayerSideShortWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXAsideEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXAsideEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - <!-- UTaU --> - <shape name="UTaUAsideBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTaUAvbox" type="Box" /> - <shape name="UTaUAsideBox0" type="Trd2" x1="UTaULayerSideLongWidth/2" x2="UTaULayerSideShortWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="-UTLayerSideCorrectedX" y="-UTLayerSideCorrectedY" /> - <rotation z="-UTAngle" /> - </shape> - <position z="UTLayerDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUAsideEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz+UTLayerDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUAsideEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz+UTLayerDz" /> - <!-- UTbV --> - <shape name="UTbVAsideBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTbVAvbox" type="Box" /> - <shape name="UTbVAsideBox0" type="Trd2" x1="UTbVLayerSideLongWidth/2" x2="UTbVLayerSideShortWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="-UTLayerSideCorrectedX" y="UTLayerSideCorrectedY" /> - <rotation z="UTAngle" /> - </shape> - <position z="UTStationDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVAsideEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz+UTStationDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVAsideEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz+UTStationDz" /> - <!-- UTbX --> - <shape name="UTbXAsideBox" type="Trd2" x1="UTbXLayerSideLongWidth/2" x2="UTbXLayerSideShortWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <position z="UTLayerDz+UTStationDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXAsideEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz+UTStationDz+UTLayerDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXAsideEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz+UTStationDz+UTLayerDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTABeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="-1/2*UTLayerSideCorrectedWidth" z="1/2*UTLayerDz+1/2*UTStationDz" /> - </shape> - <!-- - <physvol name="pvUTaXAsideLayer" volume="lvUTaXAsideLayer"> - </physvol> - <physvol name="pvUTaUAsideLayer" volume="lvUTaUAsideLayer"> - <position z="UTLayerDz" /> - </physvol> - <physvol name="pvUTbVAsideLayer" volume="lvUTbVAsideLayer"> - <position z="UTStationDz" /> - </physvol> - <physvol name="pvUTbXAsideLayer" volume="lvUTbXAsideLayer"> - <position z="UTStationDz+UTLayerDz" /> - </physvol> - --> - </volume> + <volume name="lvUTC" vis="UT:Envelope"/> + <volume name="lvUTA" vis="UT:Envelope"/> </ut> diff --git a/compact/trunk/UT/UTaULayer.xml b/compact/trunk/UT/UTaULayer.xml index e361fd96f2edac5ff9f28098241889906be02351..7ab08a95c3d506768b7936786e0e1381d55f5cf4 100644 --- a/compact/trunk/UT/UTaULayer.xml +++ b/compact/trunk/UT/UTaULayer.xml @@ -9,61 +9,7 @@ granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. --> - <volume material="Air" name="lvUTaUCsideLayer" vis="UT:Envelope"> - <shape name="UTaUCLayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTaUCLayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTaUCsideLayerBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTaUCLayervbox" type="Box" /> - <shape name="UTaUCsideLayerBox0" type="Trd2" x1="UTaULayerSideShortWidth/2" x2="UTaULayerSideLongWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="UTLayerSideCorrectedX" y="UTLayerSideCorrectedY" /> - <rotation z="-UTAngle" /> - </shape> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUCsideLayerEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUCsideLayerEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTaUCsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTaULayerR2Stave2" volume="lvStaveC"> - <position x="1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrectUV+UTaUR2S2CorrectionX" y="UTStaveCUVPosY" z="UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR2Stave1" volume="lvStaveB"> - <position x="1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrectUV+UTaUR2S1CorrectionX" z="-UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - --> - <!-- Region 1 at -X --> - <!-- - <physvol name="pvUTaULayerR1Stave6" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-5/2*UTStaveStep+UTStaveACorrectUV+UTaUR1S6CorrectionX" z="UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR1Stave5" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-7/2*UTStaveStep+UTStaveACorrectUV+UTaUR1S5CorrectionX" z="-UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR1Stave4" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-9/2*UTStaveStep+UTStaveACorrectUV+UTaUR1S4CorrectionX" z="UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR1Stave3" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-11/2*UTStaveStep+UTStaveACorrectUV+UTaUR1S3CorrectionX" z="-UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR1Stave2" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-13/2*UTStaveStep+UTStaveACorrectUV+UTaUR1S2CorrectionX" z="UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR1Stave1" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-15/2*UTStaveStep+UTStaveACorrectUV+UTaUR1S1CorrectionX" z="-UTStaveDz/2" /> - <rotation z="-UTAngle" /> - </physvol> - --> + <volume name="lvUTaUCsideLayer" vis="UT:Envelope"> <physvol name="pvUTaCEOSU1" volume="lvUTaEOS"> <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -71,68 +17,14 @@ <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTaCEOSPigtailU1" volume="lvUTaEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTaCEOSPigtailU2" volume="lvUTaEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> <!-- ================================================================= --> - <volume material="Air" name="lvUTaUAsideLayer" vis="UT:Envelope"> - <shape name="UTaUALayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTaUALayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTaUAsideLayerBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTaUALayervbox" type="Box" /> - <shape name="UTaUAsideLayerBox0" type="Trd2" x1="UTaULayerSideLongWidth/2" x2="UTaULayerSideShortWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="-UTLayerSideCorrectedX" y="-UTLayerSideCorrectedY" /> - <rotation z="-UTAngle" /> - </shape> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUAsideLayerEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaUAsideLayerEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTaUAsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="-1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTaULayerR2Stave3" volume="lvStaveC"> - <position x="-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrectUV+UTaUR2S3CorrectionX" y="-UTStaveCUVPosY" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR2Stave4" volume="lvStaveB"> - <position x="-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrectUV+UTaUR2S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - --> - <!-- Region 3 at +X --> - <!-- - <physvol name="pvUTaULayerR3Stave1" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+5/2*UTStaveStep-UTStaveACorrectUV+UTaUR3S1CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR3Stave2" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+7/2*UTStaveStep-UTStaveACorrectUV+UTaUR3S2CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR3Stave3" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+9/2*UTStaveStep-UTStaveACorrectUV+UTaUR3S3CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR3Stave4" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+11/2*UTStaveStep-UTStaveACorrectUV+UTaUR3S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR3Stave5" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+13/2*UTStaveStep-UTStaveACorrectUV+UTaUR3S5CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - <physvol name="pvUTaULayerR3Stave6" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+15/2*UTStaveStep-UTStaveACorrectUV+UTaUR3S6CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="UTAngle" /> - </physvol> - --> + <volume name="lvUTaUAsideLayer" vis="UT:Envelope"> <physvol name="pvUTaAEOSU1" volume="lvUTaEOS"> <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -140,10 +32,10 @@ <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTaAEOSPigtailU1" volume="lvUTaEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTaAEOSPigtailU2" volume="lvUTaEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> </ut> diff --git a/compact/trunk/UT/UTaXLayer.xml b/compact/trunk/UT/UTaXLayer.xml index 31bb9d350e64930774b84e089b1101808cca0a59..27523bed2b7da15b7a8c55149d4ee4d3e935437b 100644 --- a/compact/trunk/UT/UTaXLayer.xml +++ b/compact/trunk/UT/UTaXLayer.xml @@ -9,48 +9,7 @@ granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. --> - <volume material="Air" name="lvUTaXCsideLayer" vis="UT:Envelope"> - <shape name="UTaXCLayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTaXCLayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTaXCsideLayerBox" type="Trd2" x1="UTaXLayerSideShortWidth/2" x2="UTaXLayerSideLongWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXCsideLayerEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXCsideLayerEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTaXCsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTaXLayerR2Stave2" volume="lvStaveC"> - <position x="1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrect+UTaXR2S2CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTaXLayerR2Stave1" volume="lvStaveB"> - <position x="1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrect+UTaXR2S1CorrectionX" z="-UTStaveDz/2" /> - </physvol> - --> - <!-- Region 1 at -X --> - <!-- - <physvol name="pvUTaXLayerR1Stave6" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-5/2*UTStaveStep+UTStaveACorrect+UTaXR1S6CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTaXLayerR1Stave5" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-7/2*UTStaveStep+UTStaveACorrect+UTaXR1S5CorrectionX" z="-UTStaveDz/2" /> - </physvol> - <physvol name="pvUTaXLayerR1Stave4" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-9/2*UTStaveStep+UTStaveACorrect+UTaXR1S4CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTaXLayerR1Stave3" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-11/2*UTStaveStep+UTStaveACorrect+UTaXR1S3CorrectionX" z="-UTStaveDz/2" /> - </physvol> - <physvol name="pvUTaXLayerR1Stave2" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-13/2*UTStaveStep+UTStaveACorrect+UTaXR1S2CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTaXLayerR1Stave1" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-15/2*UTStaveStep+UTStaveACorrect+UTaXR1S1CorrectionX" z="-UTStaveDz/2" /> - </physvol> - --> + <volume name="lvUTaXCsideLayer" vis="UT:Envelope"> <physvol name="pvUTaCEOSX1" volume="lvUTaEOS"> <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -58,63 +17,14 @@ <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTaCEOSPigtailX1" volume="lvUTaEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTaCEOSPigtailX2" volume="lvUTaEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> <!-- ================================================================= --> - <volume material="Air" name="lvUTaXAsideLayer" vis="UT:Envelope"> - <shape name="UTaXALayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTaXALayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTaXAsideLayerBox" type="Trd2" x1="UTaXLayerSideLongWidth/2" x2="UTaXLayerSideShortWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXAsideLayerEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTa/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTaXAsideLayerEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTaXAsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="-1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTaXLayerR2Stave3" volume="lvStaveC"> - <position x="-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrect+UTaXR2S3CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTaXLayerR2Stave4" volume="lvStaveB"> - <position x="-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrect+UTaXR2S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - --> - <!-- Region 3 at +X --> - <!-- - <physvol name="pvUTaXLayerR3Stave1" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+5/2*UTStaveStep-UTStaveACorrect+UTaXR3S1CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTaXLayerR3Stave2" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+7/2*UTStaveStep-UTStaveACorrect+UTaXR3S2CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTaXLayerR3Stave3" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+9/2*UTStaveStep-UTStaveACorrect+UTaXR3S3CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTaXLayerR3Stave4" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+11/2*UTStaveStep-UTStaveACorrect+UTaXR3S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTaXLayerR3Stave5" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+13/2*UTStaveStep-UTStaveACorrect+UTaXR3S5CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTaXLayerR3Stave6" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+15/2*UTStaveStep-UTStaveACorrect+UTaXR3S6CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - --> + <volume name="lvUTaXAsideLayer" vis="UT:Envelope"> <physvol name="pvUTaAEOSX1" volume="lvUTaEOS"> <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -122,10 +32,10 @@ <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTaAEOSPigtailX1" volume="lvUTaEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTaAEOSPigtailX2" volume="lvUTaEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTa/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> </ut> diff --git a/compact/trunk/UT/UTbVLayer.xml b/compact/trunk/UT/UTbVLayer.xml index acced9b808b282b072d57701db1102051af73b37..302b7381665234c74a7854056eb058b3fc70c3d3 100644 --- a/compact/trunk/UT/UTbVLayer.xml +++ b/compact/trunk/UT/UTbVLayer.xml @@ -9,65 +9,7 @@ granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. --> - <volume material="Air" name="lvUTbVCsideLayer" vis="UT:Envelope"> - <shape name="UTbVCLayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTbVCLayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTbVCsideLayerBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTbVCLayervbox" type="Box" /> - <shape name="UTbVCsideLayerBox0" type="Trd2" x1="UTbVLayerSideShortWidth/2" x2="UTbVLayerSideLongWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="UTLayerSideCorrectedX" y="-UTLayerSideCorrectedY" /> - <rotation z="UTAngle" /> - </shape> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVCsideLayerEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVCsideLayerEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTbVCsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTbVLayerR2Stave2" volume="lvStaveC"> - <position x="1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrectUV+UTbVR2S2CorrectionX" y="-UTStaveCUVPosY" z="UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR2Stave1" volume="lvStaveB"> - <position x="1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrectUV+UTbVR2S1CorrectionX" z="-UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - --> - <!-- Region 1 at -X --> - <!-- - <physvol name="pvUTbVLayerR1Stave7" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-5/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S7CorrectionX" z="UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR1Stave6" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-7/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S6CorrectionX" z="-UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR1Stave5" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-9/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S5CorrectionX" z="UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR1Stave4" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-11/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S4CorrectionX" z="-UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR1Stave3" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-13/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S3CorrectionX" z="UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR1Stave2" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-15/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S2CorrectionX" z="-UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR1Stave1" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-17/2*UTStaveStep+UTStaveACorrectUV+UTbVR1S1CorrectionX" z="UTStaveDz/2" /> - <rotation z="UTAngle" /> - </physvol> - --> + <volume name="lvUTbVCsideLayer" vis="UT:Envelope"> <physvol name="pvUTbCEOSV1" volume="lvUTbEOS"> <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -75,72 +17,14 @@ <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTbCEOSPigtailV1" volume="lvUTbEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTbCEOSPigtailV2" volume="lvUTbEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> <!-- ================================================================= --> - <volume material="Air" name="lvUTbVAsideLayer" vis="UT:Envelope"> - <shape name="UTbVALayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTbVALayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTbVAsideLayerBox" operation="intersection" type="BooleanShape"> - <shape dx="UTVirtualBoxWide/2" dy="UTBoxInnerLong/2" dz="UTBareLayerThick/2" name="UTbVALayervbox" type="Box" /> - <shape name="UTbVAsideLayerBox0" type="Trd2" x1="UTbVLayerSideLongWidth/2" x2="UTbVLayerSideShortWidth/2" y1="UTBoxInnerLong" y2="UTBoxInnerLong" z="UTBareLayerThick/2" /> - <position x="-UTLayerSideCorrectedX" y="UTLayerSideCorrectedY" /> - <rotation z="UTAngle" /> - </shape> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVAsideLayerEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbVAsideLayerEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTbVAsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="-1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTbVLayerR2Stave3" volume="lvStaveC"> - <position x="-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrectUV+UTbVR2S3CorrectionX" y="UTStaveCUVPosY" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR2Stave4" volume="lvStaveB"> - <position x="-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrectUV+UTbVR2S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - --> - <!-- Region 3 at +X --> - <!-- - <physvol name="pvUTbVLayerR3Stave1" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+5/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S1CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR3Stave2" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+7/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S2CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR3Stave3" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+9/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S3CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR3Stave4" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+11/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR3Stave5" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+13/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S5CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR3Stave6" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+15/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S6CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - <physvol name="pvUTbVLayerR3Stave7" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+17/2*UTStaveStep-UTStaveACorrectUV+UTbVR3S7CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" z="-UTAngle" /> - </physvol> - --> + <volume name="lvUTbVAsideLayer" vis="UT:Envelope"> <physvol name="pvUTbAEOSV1" volume="lvUTbEOS"> <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -148,10 +32,10 @@ <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTbAEOSPigtailV1" volume="lvUTbEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTbAEOSPigtailV2" volume="lvUTbEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> </ut> diff --git a/compact/trunk/UT/UTbXLayer.xml b/compact/trunk/UT/UTbXLayer.xml index c4e65f7badfd009e0977dd7dcfca110283a5f436..0e205e655b4cdb6f83f3f65ba562a4fd35e060f3 100644 --- a/compact/trunk/UT/UTbXLayer.xml +++ b/compact/trunk/UT/UTbXLayer.xml @@ -9,51 +9,7 @@ granted to it by virtue of its status as an Intergovernmental Organization or submit itself to any jurisdiction. --> - <volume material="Air" name="lvUTbXCsideLayer" vis="UT:Envelope"> - <shape name="UTbXCLayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTbXCLayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTbXCsideLayerBox" type="Trd2" x1="UTbXLayerSideShortWidth/2" x2="UTbXLayerSideLongWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXCsideLayerEOSMountingBox1" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXCsideLayerEOSMountingBox2" type="Box" /> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTbXCsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTbXLayerR2Stave2" volume="lvStaveC"> - <position x="1/2*UTLayerSideCorrectedWidth-1/2*UTStaveStep+UTStaveCCorrect+UTbXR2S2CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR2Stave1" volume="lvStaveB"> - <position x="1/2*UTLayerSideCorrectedWidth-3/2*UTStaveStep+UTStaveBCorrect+UTbXR2S1CorrectionX" z="-UTStaveDz/2" /> - </physvol> - --> - <!-- Region 1 at -X --> - <!-- - <physvol name="pvUTbXLayerR1Stave7" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-5/2*UTStaveStep+UTStaveACorrect+UTbXR1S7CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR1Stave6" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-7/2*UTStaveStep+UTStaveACorrect+UTbXR1S6CorrectionX" z="-UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR1Stave5" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-9/2*UTStaveStep+UTStaveACorrect+UTbXR1S5CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR1Stave4" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-11/2*UTStaveStep+UTStaveACorrect+UTbXR1S4CorrectionX" z="-UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR1Stave3" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-13/2*UTStaveStep+UTStaveACorrect+UTbXR1S3CorrectionX" z="UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR1Stave2" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-15/2*UTStaveStep+UTStaveACorrect+UTbXR1S2CorrectionX" z="-UTStaveDz/2" /> - </physvol> - <physvol name="pvUTbXLayerR1Stave1" volume="lvStaveA"> - <position x="1/2*UTLayerSideCorrectedWidth-17/2*UTStaveStep+UTStaveACorrect+UTbXR1S1CorrectionX" z="UTStaveDz/2" /> - </physvol> - --> + <volume name="lvUTbXCsideLayer" vis="UT:Envelope"> <physvol name="pvUTbCEOSX1" volume="lvUTbEOS"> <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -61,67 +17,15 @@ <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTbCEOSPigtailX1" volume="lvUTbEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTbCEOSPigtailX2" volume="lvUTbEOSPigtail"> - <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> <!-- ================================================================= --> - <volume material="Air" name="lvUTbXAsideLayer" vis="UT:Envelope"> - <shape name="UTbXALayerBoxSub" operation="subtraction" type="BooleanShape"> - <shape name="UTbXALayerBareBox" operation="union" type="BooleanShape"> - <shape name="UTbXAsideLayerBox" type="Trd2" x1="UTbXLayerSideLongWidth/2" x2="UTbXLayerSideShortWidth/2" y1="UTBoxInnerLong/2" y2="UTBoxInnerLong/2" z="UTBareLayerThick/2" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXAsideLayerEOSMountingBox1" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2" z="UTStaveDz" /> - <shape dx="(UTEOSWideUTb/2)/2" dy="(UTEOSLong+UTEOSPigtailLong)/2" dz="UTEOSPigtailThick/2" name="UTbXAsideLayerEOSMountingBox2" type="Box" /> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong/2+UTEOSPigtailLong/2)" z="UTStaveDz" /> - </shape> - <shape dz="UTBoxOuterThick/2" name="UTbXAsideBeamPipe" rmax="UTVirtualHoleRadius" type="Tube" /> - <position x="-1/2*UTLayerSideCorrectedWidth" /> - </shape> - <!-- Region 2 in the middle --> - <!-- - <physvol name="pvUTbXLayerR2Stave3" volume="lvStaveC"> - <position x="-1/2*UTLayerSideCorrectedWidth+1/2*UTStaveStep-UTStaveCCorrect+UTbXR2S3CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR2Stave4" volume="lvStaveB"> - <position x="-1/2*UTLayerSideCorrectedWidth+3/2*UTStaveStep-UTStaveBCorrect+UTbXR2S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - --> - <!-- Region 3 at +X --> - <!-- - <physvol name="pvUTbXLayerR3Stave1" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+5/2*UTStaveStep-UTStaveACorrect+UTbXR3S1CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR3Stave2" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+7/2*UTStaveStep-UTStaveACorrect+UTbXR3S2CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR3Stave3" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+9/2*UTStaveStep-UTStaveACorrect+UTbXR3S3CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR3Stave4" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+11/2*UTStaveStep-UTStaveACorrect+UTbXR3S4CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR3Stave5" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+13/2*UTStaveStep-UTStaveACorrect+UTbXR3S5CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR3Stave6" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+15/2*UTStaveStep-UTStaveACorrect+UTbXR3S6CorrectionX" z="UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - <physvol name="pvUTbXLayerR3Stave7" volume="lvStaveA"> - <position x="-1/2*UTLayerSideCorrectedWidth+17/2*UTStaveStep-UTStaveACorrect+UTbXR3S7CorrectionX" z="-UTStaveDz/2" /> - <rotation y="pi*rad" /> - </physvol> - --> + <volume name="lvUTbXAsideLayer" vis="UT:Envelope"> + <physvol name="pvUTbAEOSX1" volume="lvUTbEOS"> <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong/2" z="UTStaveDz" /> </physvol> @@ -129,10 +33,10 @@ <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong/2)" z="UTStaveDz" /> </physvol> <physvol name="pvUTbAEOSPigtailX1" volume="lvUTbEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> <physvol name="pvUTbAEOSPigtailX2" volume="lvUTbEOSPigtail"> - <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz" /> + <position x="-(1/2*UTLayerSideCorrectedWidth-UTEOSWideUTb/4)" y="-(UTBareStaveLong/2+UTEOSLong+UTEOSPigtailLong/2)" z="UTStaveDz+UTEOSPigtailThick-(UTStaveDz/2-UTStaveCableZ-1/2*(UTCableCuThickM0+UTMegArrayThick+UTCableKaptonThick)-1/2*UTMegArrayThick)+UTEpsilon" /> </physvol> </volume> </ut> diff --git a/compact/trunk/UT/detector.xml b/compact/trunk/UT/detector.xml index 68adfd4aa89d48288f4283a21185103625b39a9e..9a4cd056a6b41df4ed76ec8cce4a9b3666351b9e 100644 --- a/compact/trunk/UT/detector.xml +++ b/compact/trunk/UT/detector.xml @@ -44,7 +44,7 @@ <item name="Build_Cside_UTbX" value="1"/> <item name="Build_Frame" value="1"/> <item name="Build_Jacket" value="1"/> - <item name="Build_PipeHeater" value="0"/> + <item name="Build_PipeHeater" value="1"/> <item name="Build_Box" value="1"/> <item name="Build_BoxPlug" value="1"/> <item name="select_volume" value="lvUT"/> @@ -56,7 +56,7 @@ </detectors> <readouts> <readout name="UTHits"> - <id>system:8,sensor:1,sector:1,module:3,face:1,stave:4,layer:2,side:1</id> + <id>system:8,sensor:1,sector:1,module:3,face:1,stave:4,layer:2,side:1</id> </readout> </readouts> </lccdd> diff --git a/compact/trunk/UT/parameters.xml b/compact/trunk/UT/parameters.xml index 5c1aab40996dd8f7e96ff53a8e41a166fcdb26e3..3c30e6ccb341be203ac604b1598677059f7e41bf 100644 --- a/compact/trunk/UT/parameters.xml +++ b/compact/trunk/UT/parameters.xml @@ -210,10 +210,10 @@ <constant name="UTBoxOuterLong" value="1960*mm" /> <constant name="UTFrameInnerLong" value="UTBoxOuterLong" /> <!-- UT light tight box --> - <constant name="UTBoxOuterThick" value="432.0*mm" /> - <constant name="UTBoxWallDownstreamThick" value="21.0*mm" /> + <constant name="UTBoxOuterThick" value="430.0*mm" /> + <constant name="UTBoxWallDownstreamThick" value="20.0*mm" /> <constant name="UTBoxInnerThick" value="UTBoxOuterThick-2*UTBoxWallDownstreamThick" /> - <constant name="UTBoxWallSideThick" value="26.0*mm" /> + <constant name="UTBoxWallSideThick" value="25.0*mm" /> <constant name="UTBoxInnerWide" value="UTBoxOuterWide-2*UTBoxWallSideThick" /> <constant name="UTBoxInnerLong" value="UTBoxOuterLong-2*UTBoxWallSideThick" /> <!-- UTBoxWallUpstreamThick is thickness of plates on front and back (in Z) in the UT --> @@ -273,11 +273,13 @@ <constant name="UTConeJacketZposUpstream" value="UTCylJacketLength+UTConeJacketUpstreamLength*0.5" /> <constant name="UTConeJacketZposDownstream" value="UTConeJacketCutOutPos+UTConeJacketCutOutLength+0.5*UTConeJacketDownstreamLength" /> <!-- beam pipe heaters --> - <constant name="UTPipeHeaterUpstreamLength" value="42.0*mm" /> + <constant name="UTPipeHeaterUpstreamLength" value="200.0*mm" /> <!-- 25+1+0.01 --> <constant name="UTPipeHeaterUpstreamPos" value="UX851Rich1TTSplitZposIP-UTSystemZ-17.0*mm+0.5*UTPipeHeaterUpstreamLength" /> <constant name="UTPipeHeaterDownstreamLength" value="67.0*mm" /> <constant name="UTPipeHeaterDownstreamZmin" value="UX851TTMagnetSplitZposIP-UTBoxWallDownstreamThick-5*mm" /> + <constant name="UTPipeHeaterDownstreamLengthInUT" value="UX851TTMagnetSplitZposIP-UTPipeHeaterDownstreamZmin" /> + <constant name="UTPipeHeaterDownstreamLengthInMagnet" value="UTPipeHeaterDownstreamLength-UTPipeHeaterDownstreamLengthInUT" /> <constant name="UTPipeHeaterDownstreamZmax" value="UTPipeHeaterDownstreamZmin+UTPipeHeaterDownstreamLength" /> <constant name="UTPipeHeaterDownstreamRadiusZmin" value="UTPipeHeaterDownstreamZmin*tan(UX851to4Angle)+UX851Cyl07Thick+0.01*mm" /> <constant name="UTPipeHeaterDownstreamRadiusZmax" value="UTPipeHeaterDownstreamZmax*tan(UX851to4Angle)+UX851Cyl07Thick+0.01*mm" /> @@ -319,74 +321,77 @@ <constant name="UTStaveBCorrectUV" value="UTStaveBCorrect-UTUVGlobalCorrectX" /> <constant name="UTStaveACorrectUV" value="UTStaveACorrect-UTUVGlobalCorrectX" /> <constant name="UTStaveCUVPosY" value="UTSinAngle*(UTStaveWide-UTStaveCOverlap)/2" /> - <constant name="UTaXR1S1CorrectionX" value="2.5*mm" /> - <constant name="UTaXR1S2CorrectionX" value="-2.00*mm" /> - <constant name="UTaXR1S3CorrectionX" value="1.5*mm" /> - <constant name="UTaXR1S4CorrectionX" value="-1.7*mm" /> - <constant name="UTaXR1S5CorrectionX" value="0.6*mm" /> - <constant name="UTaXR1S6CorrectionX" value="-1.5*mm" /> - <constant name="UTaXR2S1CorrectionX" value="0.2*mm" /> + <constant name="UTaXR1S1CorrectionX" value="-1.9*mm" /> + <constant name="UTaXR1S2CorrectionX" value="2.1*mm" /> + <constant name="UTaXR1S3CorrectionX" value="-1.8*mm" /> + <constant name="UTaXR1S4CorrectionX" value="1.0*mm" /> + <constant name="UTaXR1S5CorrectionX" value="-1.7*mm" /> + <constant name="UTaXR1S6CorrectionX" value="0.0*mm" /> + <constant name="UTaXR2S1CorrectionX" value="-1.0*mm" /> <constant name="UTaXR2S2CorrectionX" value="0.*mm" /> <constant name="UTaXR2S3CorrectionX" value="0.*mm" /> - <constant name="UTaXR2S4CorrectionX" value="1.0*mm" /> - <constant name="UTaXR3S1CorrectionX" value="0.1*mm" /> - <constant name="UTaXR3S2CorrectionX" value="1.7*mm" /> - <constant name="UTaXR3S3CorrectionX" value="-1.0*mm" /> - <constant name="UTaXR3S4CorrectionX" value="1.8*mm" /> - <constant name="UTaXR3S5CorrectionX" value="-2.1*mm" /> - <constant name="UTaXR3S6CorrectionX" value="1.9*mm" /> - <constant name="UTaUR1S1CorrectionX" value="2.5*mm" /> - <constant name="UTaUR1S2CorrectionX" value="-1.9*mm" /> - <constant name="UTaUR1S3CorrectionX" value="1.6*mm" /> - <constant name="UTaUR1S4CorrectionX" value="-1.7*mm" /> - <constant name="UTaUR1S5CorrectionX" value="0.6*mm" /> - <constant name="UTaUR1S6CorrectionX" value="-1.4*mm" /> - <constant name="UTaUR2S1CorrectionX" value="0.2*mm" /> - <constant name="UTaUR2S2CorrectionX" value="0.*mm" /> - <constant name="UTaUR2S3CorrectionX" value="0.*mm" /> - <constant name="UTaUR2S4CorrectionX" value="1.0*mm" /> - <constant name="UTaUR3S1CorrectionX" value="0.1*mm" /> - <constant name="UTaUR3S2CorrectionX" value="1.7*mm" /> - <constant name="UTaUR3S3CorrectionX" value="-1.0*mm" /> - <constant name="UTaUR3S4CorrectionX" value="1.8*mm" /> - <constant name="UTaUR3S5CorrectionX" value="-2.0*mm" /> - <constant name="UTaUR3S6CorrectionX" value="1.9*mm" /> - <constant name="UTbVR1S1CorrectionX" value="-1.9*mm" /> - <constant name="UTbVR1S2CorrectionX" value="2.3*mm" /> - <constant name="UTbVR1S3CorrectionX" value="-1.7*mm" /> - <constant name="UTbVR1S4CorrectionX" value="1.4*mm" /> - <constant name="UTbVR1S5CorrectionX" value="-1.6*mm" /> - <constant name="UTbVR1S6CorrectionX" value="0.5*mm" /> - <constant name="UTbVR1S7CorrectionX" value="-1.4*mm" /> - <constant name="UTbVR2S1CorrectionX" value="0.1*mm" /> - <constant name="UTbVR2S2CorrectionX" value="0.*mm" /> - <constant name="UTbVR2S3CorrectionX" value="0.*mm" /> - <constant name="UTbVR2S4CorrectionX" value="1.0*mm" /> - <constant name="UTbVR3S1CorrectionX" value="0.3*mm" /> - <constant name="UTbVR3S2CorrectionX" value="1.7*mm" /> - <constant name="UTbVR3S3CorrectionX" value="-0.7*mm" /> - <constant name="UTbVR3S4CorrectionX" value="1.9*mm" /> - <constant name="UTbVR3S5CorrectionX" value="-1.6*mm" /> - <constant name="UTbVR3S6CorrectionX" value="2.1*mm" /> - <constant name="UTbVR3S7CorrectionX" value="-2.5*mm" /> - <constant name="UTbXR1S1CorrectionX" value="-1.9*mm" /> - <constant name="UTbXR1S2CorrectionX" value="2.2*mm" /> - <constant name="UTbXR1S3CorrectionX" value="-1.8*mm" /> - <constant name="UTbXR1S4CorrectionX" value="1.3*mm" /> - <constant name="UTbXR1S5CorrectionX" value="-1.6*mm" /> - <constant name="UTbXR1S6CorrectionX" value="0.4*mm" /> - <constant name="UTbXR1S7CorrectionX" value="-1.4*mm" /> - <constant name="UTbXR2S1CorrectionX" value="0.1*mm" /> - <constant name="UTbXR2S2CorrectionX" value="0.*mm" /> - <constant name="UTbXR2S3CorrectionX" value="0.*mm" /> - <constant name="UTbXR2S4CorrectionX" value="1.0*mm" /> - <constant name="UTbXR3S1CorrectionX" value="0.3*mm" /> - <constant name="UTbXR3S2CorrectionX" value="1.7*mm" /> - <constant name="UTbXR3S3CorrectionX" value="-0.6*mm" /> - <constant name="UTbXR3S4CorrectionX" value="1.9*mm" /> - <constant name="UTbXR3S5CorrectionX" value="-1.5*mm" /> - <constant name="UTbXR3S6CorrectionX" value="2.1*mm" /> - <constant name="UTbXR3S7CorrectionX" value="-2.4*mm" /> + <constant name="UTaXR2S4CorrectionX" value="-0.2*mm" /> + <constant name="UTaXR3S1CorrectionX" value="1.5*mm" /> + <constant name="UTaXR3S2CorrectionX" value="-0.6*mm" /> + <constant name="UTaXR3S3CorrectionX" value="1.7*mm" /> + <constant name="UTaXR3S4CorrectionX" value="-1.5*mm" /> + <constant name="UTaXR3S5CorrectionX" value="2.00*mm" /> + <constant name="UTaXR3S6CorrectionX" value="-2.5*mm" /> + + <constant name="UTaUR1S1CorrectionX" value="-1.720*mm" /> + <constant name="UTaUR1S2CorrectionX" value="2.180*mm" /> + <constant name="UTaUR1S3CorrectionX" value="-1.620*mm" /> + <constant name="UTaUR1S4CorrectionX" value="1.180*mm" /> + <constant name="UTaUR1S5CorrectionX" value="-1.520*mm" /> + <constant name="UTaUR1S6CorrectionX" value="0.180*mm" /> + <constant name="UTaUR2S1CorrectionX" value="-0.820*mm" /> + <constant name="UTaUR2S2CorrectionX" value="-0.552*mm" /> + <constant name="UTaUR2S3CorrectionX" value="0.552*mm" /> + <constant name="UTaUR2S4CorrectionX" value="-0.380*mm" /> + <constant name="UTaUR3S1CorrectionX" value="1.220*mm" /> + <constant name="UTaUR3S2CorrectionX" value="-0.780*mm" /> + <constant name="UTaUR3S3CorrectionX" value="1.520*mm" /> + <constant name="UTaUR3S4CorrectionX" value="-1.780*mm" /> + <constant name="UTaUR3S5CorrectionX" value="1.720*mm" /> + <constant name="UTaUR3S6CorrectionX" value="-2.680*mm" /> + + <constant name="UTbVR1S1CorrectionX" value="2.680*mm" /> + <constant name="UTbVR1S2CorrectionX" value="-1.92*mm" /> + <constant name="UTbVR1S3CorrectionX" value="1.780*mm" /> + <constant name="UTbVR1S4CorrectionX" value="-1.720*mm" /> + <constant name="UTbVR1S5CorrectionX" value="0.880*mm" /> + <constant name="UTbVR1S6CorrectionX" value="-1.520*mm" /> + <constant name="UTbVR1S7CorrectionX" value="-0.120*mm" /> + <constant name="UTbVR2S1CorrectionX" value="-0.820*mm" /> + <constant name="UTbVR2S2CorrectionX" value="-0.552*mm" /> + <constant name="UTbVR2S3CorrectionX" value="0.552*mm" /> + <constant name="UTbVR2S4CorrectionX" value="-0.18*mm" /> + <constant name="UTbVR3S1CorrectionX" value="1.22*mm" /> + <constant name="UTbVR3S2CorrectionX" value="-0.68*mm" /> + <constant name="UTbVR3S3CorrectionX" value="1.42*mm" /> + <constant name="UTbVR3S4CorrectionX" value="-1.58*mm" /> + <constant name="UTbVR3S5CorrectionX" value="1.52*mm" /> + <constant name="UTbVR3S6CorrectionX" value="-2.48*mm" /> + <constant name="UTbVR3S7CorrectionX" value="1.72*mm" /> + + <constant name="UTbXR1S1CorrectionX" value="2.4*mm" /> + <constant name="UTbXR1S2CorrectionX" value="-2.1*mm" /> + <constant name="UTbXR1S3CorrectionX" value="1.5*mm" /> + <constant name="UTbXR1S4CorrectionX" value="-1.9*mm" /> + <constant name="UTbXR1S5CorrectionX" value="0.6*mm" /> + <constant name="UTbXR1S6CorrectionX" value="-1.7*mm" /> + <constant name="UTbXR1S7CorrectionX" value="-0.3*mm" /> + <constant name="UTbXR2S1CorrectionX" value="-1.0*mm" /> + <constant name="UTbXR2S2CorrectionX" value="0.0*mm" /> + <constant name="UTbXR2S3CorrectionX" value="0.0*mm" /> + <constant name="UTbXR2S4CorrectionX" value="0.0*mm" /> + <constant name="UTbXR3S1CorrectionX" value="1.4*mm" /> + <constant name="UTbXR3S2CorrectionX" value="-0.4*mm" /> + <constant name="UTbXR3S3CorrectionX" value="1.6*mm" /> + <constant name="UTbXR3S4CorrectionX" value="-1.3*mm" /> + <constant name="UTbXR3S5CorrectionX" value="1.8*mm" /> + <constant name="UTbXR3S6CorrectionX" value="-2.2*mm" /> + <constant name="UTbXR3S7CorrectionX" value="1.9*mm" /> <!-- A/C side cuts --> <constant name="UTStaveGap" value="UTStaveDz-UTStaveThick" /> <constant name="UTSideCutGap" value="10*mm" /> @@ -430,7 +435,7 @@ <fraction n="0.7" ref="Iron" /> <fraction n="0.1" ref="Carbon" /> <fraction n="0.2" ref="Copper" /> - </material> + </material> <material name="UT:Airex"> <D type="density" value="0.06" unit="g/cm3" /> <composite n="37" ref="Carbon" /> @@ -580,7 +585,6 @@ <fraction n="0.7692" ref="UT:Epoxy" /> <fraction n="0.2308" ref="UT:BoronNitride" /> </material> - <!-- material density="0.5844*g/cm3" ref="BareStave" --> <material name="UT:BareStave"> <D type="density" value="0.3823" unit="g/cm3" /> <fraction n="0.0383" ref="UT:RohacellFoam" /> @@ -591,7 +595,6 @@ <fraction n="0.0453" ref="UT:CoolingFluid" /> <fraction n="0.3099" ref="UT:HysolBN" /> </material> - <!-- material density="0.301*g/cm3" ref="BeamPipeJacket" --> <material name="UT:BeamPipeJacket"> <D type="density" value="0.209" unit="g/cm3" /> <fraction n="0.1601" ref="UT:Kapton" /> @@ -639,8 +642,6 @@ </material> <material name="UT:Dcdc"> <D type="density" value="7.4825" unit="g/cm3" /> - <!-- material density="1.4965*g/cm3" ref="Dcdc" --> - <!-- material density="2.8577*g/cm3" ref="Dcdc" --> <fraction n="0.0026" ref="Silicon" /> <fraction n="0.5186" ref="Gold" /> <fraction n="0.2672" ref="UT:Polyethylene" /> @@ -653,14 +654,6 @@ <fraction n="0.2681" ref="Copper" /> <fraction n="0.1568" ref="UT:HysolBN" /> </material> - <!-- - <material density="1.7988*g/cm3" ref="FlexCable"> - <fraction n="0.5758" ref="UT:Kapton" /> - <fraction n="0.2631" ref="Copper" /> - <fraction n="0.1611" ref="UT:Epoxy" /> - </material> - --> - <!-- fraction n="0.1398" ref="UT:HysolBN" --> <material name="UT:HybridFilm"> <D type="density" value="3.912" unit="g/cm3" /> <fraction n="0.5731" ref="UT:Glass" /> @@ -703,26 +696,24 @@ <fraction n="0.7062" ref="UT:Asic" /> <fraction n="0.2938" ref="UT:SilverEpoxy" /> </material> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> - <!-- Old --> </materials> <display> + <vis name="DEBUG:RED" alpha="0.5" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true" /> + <vis name="DEBUG:GREEN" alpha="0.5" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true" /> + <vis name="DEBUG:BLUE" alpha="0.5" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true" /> <vis name="UT:Envelope" alpha="0.0" r="0.5" g="0.5" b="0.5" showDaughters="true" visible="false" /> <vis name="UT:Invisible" alpha="0.0" r="1.0" g="1.0" b="1.0" showDaughters="false" visiable="false" /> <vis name="UT:Box" alpha="0.1" r="0.95" g="0.95" b="0.95" showDaughters="true" visible="true" /> + <vis name="UT:Airex" alpha="1.0" r="0.11" g="0.28" b="0.41" showDaughters="false" visible="true" /> + <vis name="UT:Connector" alpha="1.0" r="0.93" g="0.91" b="0.91" showDaughters="false" visible="true" /> + <vis name="UT:EPDM" alpha="1.0" r="0.75" g="0.75" b="0.90" showDaughters="false" visible="true" /> + <vis name="UT:HalfMoon" alpha="1.0" r="0.45" g="0.56" b="0.69" showDaughters="false" visible="true" /> + <vis name="UT:PipeHeater" alpha="1.0" r="0.36" g="0.79" b="0.79" showDaughters="false" visible="true" /> <!-- Silver --> <vis name="UT:Frame" alpha="1.0" r="0.33" g="0.18" b="0.25" showDaughters="true" visible="true" /> <vis name="UT:EOS" alpha="1.0" r="0.33" g="0.18" b="0.25" showDaughters="false" visible="true" /> <vis name="UT:Jacket" alpha="1.0" r="0.5" g="0.5" b="0.5" showDaughters="true" visible="true" /> - <vis name="UT:KaptonCable" alpha="0.5" r="0.15" g="0.15" b="0.15" showDaughters="false" visible="false" /> + <vis name="UT:KaptonCable" alpha="1.0" r="0.16" g="0.39" b="0.61" showDaughters="false" visible="true" /> <vis name="UT:BareStave" alpha="1.0" r="0.04" g="0.24" b="0.43" showDaughters="false" visible="true" /> <vis name="UT:HybridFlex" alpha="1.0" r="0.63" g="0.38" b="0.47" showDaughters="true" visible="true" /> <vis name="UT:Asic" alpha="1.0" r="0.71" g="0.74" b="0.76" showDaughters="false" visible="true" /> diff --git a/compact/trunk/checksums b/compact/trunk/checksums index 7e06b7dbcf94709c85092dc0c87858ca398ac4d2..f9ef5961da4aa90d36c20e9e0d154df9fa492454 100644 --- a/compact/trunk/checksums +++ b/compact/trunk/checksums @@ -1,4 +1,4 @@ -/world_volume: 2966518170 +/world_volume: 256435643 /world_volume/lvAfterMagnetRegion_3: 1374469345 /world_volume/lvAfterMagnetRegion_3/lvRich2Master_1: 187033957 /world_volume/lvAfterMagnetRegion_3/lvRich2Master_1/pvRich2EntryWinTubeLock: 1979723490 @@ -48,7 +48,7 @@ /world_volume/lvAfterMagnetRegion_3/lvUX85BakeoutAfterMagnet_2: 2588750996 /world_volume/lvAfterMagnetRegion_3/lvUX85SupportsAfterMagnet_4: 2302184141 /world_volume/lvAfterMagnetRegion_3/lvUX85SupportsAfterMagnet_4/pvUX853AfterMagnetCollar: 2052547805 -/world_volume/lvBeforeMagnetRegion_1: 1865264852 +/world_volume/lvBeforeMagnetRegion_1: 3676775170 /world_volume/lvBeforeMagnetRegion_1/lvBeforeVelo_0: 2472087751 /world_volume/lvBeforeMagnetRegion_1/lvBeforeVelo_0/lvBcmUp_3: 2661979061 /world_volume/lvBeforeMagnetRegion_1/lvBeforeVelo_0/lvBlockWallBefMag_0: 2623562443 @@ -64,14 +64,15 @@ /world_volume/lvBeforeMagnetRegion_1/lvRich1Master_1/pvRich1SubMaster: 941236678 /world_volume/lvBeforeMagnetRegion_1/lvRich1Master_1/pvUX851InRich1AfterSubM: 1874884759 /world_volume/lvBeforeMagnetRegion_1/lvRich1Master_1/pvUX851InRich1BeforeSubM: 3776943454 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3: 950047461 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTA_4: 3283219478 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBoxPlug_2: 2982282835 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBox_1: 2557552759 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTC_3: 1920000441 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3: 2855886064 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTA_4: 1269607549 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBoxPlug_2: 276155515 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTBox_1: 2145795645 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTC_3: 1223200118 /world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTFrame_0: 1312950758 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTJacket_5: 2839967123 -/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUX851InUT_6: 2312201870 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTJacket_5: 814797345 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUTPipeHeater_6: 456665699 +/world_volume/lvBeforeMagnetRegion_1/lvUT_3/lvUX851InUT_7: 2312201870 /world_volume/lvBeforeMagnetRegion_1/lvVP_2: 3903272872 /world_volume/lvBeforeMagnetRegion_1/lvVP_2/lvVeloDownStreamPipe_6: 4275213241 /world_volume/lvBeforeMagnetRegion_1/lvVP_2/lvVeloUpStreamPipe_5: 2678709159