From 10458d31f574b2e1ff46f66a7135ba789ba08a5d Mon Sep 17 00:00:00 2001 From: Markus Frank <markus.frank@cern.ch> Date: Wed, 5 Nov 2014 10:49:55 +0000 Subject: [PATCH] Remove debugging items from CLICSiD compact xml. First implementation of Multipole magnetic field description. Add missing units in DDG4 LCIO conversion. --- DDCore/include/DD4hep/FieldTypes.h | 80 +- DDCore/include/XML/UnicodeValues.h | 12 +- DDCore/include/XML/XMLDimension.h | 124 +- DDCore/include/XML/XMLElements.h | 10 + DDCore/src/FieldTypes.cpp | 42 + DDCore/src/XML/XMLDimension.cpp | 117 +- DDCore/src/plugins/Compact2Objects.cpp | 50 +- DDCore/src/plugins/ShapePlugins.cpp | 113 ++ DDG4/lcio/LCIOConversions.cpp | 20 +- examples/CLICSiD/compact/compact.xml | 9 - examples/ClientTests/compact/MagnetFields.xml | 1567 +++++++++++++++++ 11 files changed, 2056 insertions(+), 88 deletions(-) create mode 100644 DDCore/src/plugins/ShapePlugins.cpp create mode 100644 examples/ClientTests/compact/MagnetFields.xml diff --git a/DDCore/include/DD4hep/FieldTypes.h b/DDCore/include/DD4hep/FieldTypes.h index d9611cd08..4a9ba7e5d 100644 --- a/DDCore/include/DD4hep/FieldTypes.h +++ b/DDCore/include/DD4hep/FieldTypes.h @@ -12,6 +12,7 @@ // Framework include files #include "DD4hep/Fields.h" +#include "DD4hep/Shapes.h" #include <vector> @@ -68,7 +69,7 @@ namespace DD4hep { /// Implementation object of a dipole magnetic field. /** - * Generic solonoid magnetic field + * Generic dipole magnetic field * * \author M.Frank * \version 1.0 @@ -88,6 +89,83 @@ namespace DD4hep { virtual void fieldComponents(const double* pos, double* field); }; + /// Implementation object of a dipole magnetic field. + /** + * Generic multipole magnetic field using the + * Multipole approach. The dipole is assumed to be horizontal + * as it is used for bending beams in large colliders + * ie. the dipole field lines are vertical. + * + * The different momenta are given by: + * + * \f{eqnarray*}{ + * B_y + i*B_x &=& C_n * (x + iy)^{n-1} \\ + * B_sum = B_y + i B_x &=& Sum_{n=1..4} (b_n + ia_n) (x + iy)^{n-1} \\ + * \f} + * With C_n being the complex multipole coefficients and + * b_n the "normal multipole coefficients" and a_n the "skew multipole coefficients". + * + * The maximal momentum used is the octopole momentum. + * + * The lower momenta are: + * + * \li Dipole (n=1): + * \f{eqnarray*}{ + * B_y &=& b_1 \\ + * B_x &=& a_1 \\ + * B_z &=& constant \\ + * \f} + * + * \li Quadrupole (n=2): + * + * \f{eqnarray*}{ + * B_y &=& b_2 x - a_2 y \\ + * B_x &=& b_2 y + a_2 x \\ + * \f} + * + * \li Sextupole (n=3): + * + * \f{eqnarray*}{ + * B_y + i B_x &=& (b_3 +ia_3) (x^2 + 2ixy - y^2) \\ + * B_y &=& b_3 x^2 - b_3 y^2 - 2 a_3 xy \\ + * B_x &=& a_3 x^2 - a_3 y^2 + 2 b_3 xy \\ + * \f} + * + * \li Octopole (n=4): + * + * \f{eqnarray*}{ + * B_y + i B_x &=& (b_4 +ia_4) (x^3 + 3ix^2y - 3xy^2 -iy^3) \\ + * B_y &=& b_4 x^3 - 3 b_4 x y^2 - 3 a_4 x^2 y + a_4 y^3 \\ + * B_x &=& 3 b_4 x^2 y + b_4 y^3 + a_4 x^3 - 3 a_4 x y^2 \\ + * \f} + * + * The defined field components only apply within the shape 'volume'. + * If 'volume' is an invalid shape (ie. not defined), then the field + * components are valied throughout the 'universe'. + * + * \see http://cas.web.cern.ch/cas/Belgium-2009/Lectures/PDFs/Wolski-1.pdf + * \see http://cas.web.cern.ch/cas/Bulgaria-2010/Talks-web/Brandt-1-web.pdf + * \see https://en.wikipedia.org/wiki/Multipole_magnet + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_GEOMETRY + */ + class MultipoleField: public CartesianField::Object { + public: + typedef std::vector<double> Coefficents; + Coefficents coefficents; + Coefficents skews; + Solid volume; + Transform3D transform; + double B_z; + public: + /// Initializing constructor + MultipoleField(); + /// Call to access the field components at a given location + virtual void fieldComponents(const double* pos, double* field); + }; + } /* End namespace Geometry */ } /* End namespace DD4hep */ #endif /* DD4HEP_GEOMETRY_FIELDTYPES_H */ diff --git a/DDCore/include/XML/UnicodeValues.h b/DDCore/include/XML/UnicodeValues.h index cbbfde10c..372159bae 100644 --- a/DDCore/include/XML/UnicodeValues.h +++ b/DDCore/include/XML/UnicodeValues.h @@ -56,6 +56,8 @@ namespace DD4hep { UNICODE (check); UNICODE (checksum); UNICODE (cm); + UNICODE (coefficient); + UNICODE (coefficients); UNICODE (color); UNICODE (combine_hits); UNICODE (combineHits); @@ -326,17 +328,19 @@ namespace DD4hep { UNICODE (sensor); UNICODE (sequence); UNICODE (setup); - UNICODE (size); - UNICODE(signed); - UNICODE (solidref); - UNICODE (sphere); + UNICODE (shape); UNICODE (show_daughters); UNICODE (showDaughters); + UNICODE (size); + UNICODE(signed); + UNICODE (skew); UNICODE (slice); UNICODE (slices); UNICODE (solid); UNICODE (solids); + UNICODE (solidref); UNICODE (spacer); + UNICODE (sphere); UNICODE (status); UNICODE (start); UNICODE (start_x); diff --git a/DDCore/include/XML/XMLDimension.h b/DDCore/include/XML/XMLDimension.h index cd2da45e2..3e93304eb 100644 --- a/DDCore/include/XML/XMLDimension.h +++ b/DDCore/include/XML/XMLDimension.h @@ -69,23 +69,49 @@ namespace DD4hep { /// Access rotation constants: angle double angle() const; - /// Access rotation constants: angle + /// Access rotation constants: alpha double alpha() const; + /// Access rotation constants: alpha + double alpha(double default_value) const; + /// Access rotation constants: alpha1 + double alpha1() const; + /// Access rotation constants: alpha1 + double alpha1(double default_value) const; + /// Access rotation constants: alpha2 + double alpha2() const; + /// Access rotation constants: alpha2 + double alpha2(double default_value) const; /// Access rotation constants: angle double beta() const; /// Access rotation constants: angle + double beta(double default_value) const; + /// Access rotation constants: angle double gamma() const; /// Access rotation constants: angle + double gamma(double default_value) const; + /// Access rotation constants: angle double delta() const; /// Access rotation constants: angle + double delta(double default_value) const; + /// Access rotation constants: angle double epsilon() const; + /// Access rotation constants: angle + double epsilon(double default_value) const; /// Access rotation constants: theta double theta() const; + /// Access rotation constants: theta + double theta(double default_value) const; + /// Access rotation constants: deltatheta + double deltatheta() const; + /// Access rotation constants: deltatheta + double deltatheta(double default_value) const; /// Access rotation constants: thetaBins int thetaBins() const; /// Access rotation constants: phi double phi() const; + /// Access rotation constants: phi + double phi(double default_value) const; /// Access rotation constants: phiBins int phiBins() const; /// Access rotation constants: phi0 @@ -98,11 +124,15 @@ namespace DD4hep { double phi1(double default_value) const; /// Access rotation constants: psi double psi() const; + /// Access rotation constants: psi + double psi(double default_value) const; /// Access Tube parameters: zhalf double zhalf() const; /// Access Tube parameters: deltaphi double deltaphi() const; + /// Access Tube parameters: deltaphi + double deltaphi(double default_value) const; /// Access parameters: b double b() const; @@ -119,26 +149,44 @@ namespace DD4hep { double r(double default_value) const; /// Access parameters: R double R() const; + /// Access parameters: R + double R(double default_value) const; /// Access parameters: dr double dr() const; - /// Access parameters: r0 - double r0() const; /// Access parameters: dr, if not present returns default double dr(double default_value) const; + /// Access parameters: r0 + double r0() const; + /// Access parameters: r0 + double r0(double default_value) const; /// Access min/max parameters: rmin double rmin() const; + /// Access min/max parameters: rmin + double rmin(double default_val) const; /// Access min/max parameters: rmax double rmax() const; + /// Access min/max parameters: rmax + double rmax(double default_val) const; /// Access min/max parameters: rmin1 double rmin1() const; + /// Access min/max parameters: rmin1 + double rmin1(double default_val) const; /// Access min/max parameters: rmax1 double rmax1() const; + /// Access min/max parameters: rmax1 + double rmax1(double default_val) const; /// Access min/max parameters: rmin2 double rmin2() const; + /// Access min/max parameters: rmin2 + double rmin2(double default_val) const; /// Access min/max parameters: rmax2 double rmax2() const; + /// Access min/max parameters: rmax2 + double rmax2(double default_val) const; /// Access parameters: radius double radius() const; + /// Access parameters: radius + double radius(double default_val) const; /// Access attribute values: outer_radius double outer_radius() const; /// Access attribute values: outer_r @@ -154,12 +202,28 @@ namespace DD4hep { double x(double default_val) const; /// Access parameters: X double X() const; + /// Access parameters: X + double X(double default_val) const; /// Access parameters: x0 double x0() const; + /// Access parameters: x0 + double x0(double default_val) const; /// Access parameters: x1 double x1() const; + /// Access parameters: x1 + double x1(double default_val) const; /// Access parameters: x2 double x2() const; + /// Access parameters: x2 + double x2(double default_val) const; + /// Access parameters: x3 + double x3() const; + /// Access parameters: x3 + double x3(double default_val) const; + /// Access parameters: x4 + double x4() const; + /// Access parameters: x4 + double x4(double default_val) const; /// Access parameters: dx double dx() const; /// Access parameters: dx, if not present returns default @@ -167,11 +231,19 @@ namespace DD4hep { /// Access min/max parameters: xmax double xmin() const; /// Access min/max parameters: xmax + double xmin(double default_value) const; + /// Access min/max parameters: xmax double xmax() const; + /// Access min/max parameters: xmax + double xmax(double default_value) const; /// Access min/max parameters: x_offset double x_offset() const; + /// Access min/max parameters: x_offset + double x_offset(double default_value) const; /// Access min/max parameters: dim_x double dim_x() const; + /// Access min/max parameters: dim_x + double dim_x(double default_value) const; /// Access parameters: y double y() const; @@ -179,12 +251,20 @@ namespace DD4hep { double y(double default_val) const; /// Access parameters: Y double Y() const; + /// Access parameters: Y + double Y(double default_val) const; /// Access parameters: y0 double y0() const; + /// Access parameters: y0 + double y0(double default_value) const; /// Access parameters: y1 double y1() const; + /// Access parameters: y1 + double y1(double default_value) const; /// Access parameters: y2 double y2() const; + /// Access parameters: y2 + double y2(double default_value) const; /// Access parameters: dy double dy() const; /// Access parameters: dz, if not present returns default @@ -192,11 +272,19 @@ namespace DD4hep { /// Access min/max parameters: ymax double ymin() const; /// Access min/max parameters: ymax + double ymin(double default_value) const; + /// Access min/max parameters: ymax double ymax() const; + /// Access min/max parameters: ymax + double ymax(double default_value) const; /// Access min/max parameters: y_offset double y_offset() const; + /// Access min/max parameters: y_offset + double y_offset(double default_value) const; /// Access min/max parameters: dim_y double dim_y() const; + /// Access min/max parameters: dim_y + double dim_y(double default_value) const; /// Access parameters: z double z() const; @@ -204,12 +292,20 @@ namespace DD4hep { double z(double default_val) const; /// Access parameters: Z double Z() const; + /// Access parameters: Z + double Z(double default_val) const; /// Access parameters: z0 double z0() const; + /// Access parameters: z0 + double z0(double default_val) const; /// Access parameters: z1 double z1() const; + /// Access parameters: z1 + double z1(double default_val) const; /// Access parameters: z2 double z2() const; + /// Access parameters: z2 + double z2(double default_val) const; /// Access parameters: dz double dz() const; /// Access parameters: dz, if not present returns default @@ -217,15 +313,23 @@ namespace DD4hep { /// Access min/max parameters: zmax double zmin() const; /// Access min/max parameters: zmax + double zmin(double default_value) const; + /// Access min/max parameters: zmax double zmax() const; + /// Access min/max parameters: zmax + double zmax(double default_value) const; /// Access attribute values: outer_z double outer_z() const; /// Access attribute values: inner_z double inner_z() const; /// Access min/max parameters: z_offset double z_offset() const; + /// Access min/max parameters: z_offset + double z_offset(double default_value) const; /// Access min/max parameters: dim_z double dim_z() const; + /// Access min/max parameters: dim_z + double dim_z(double default_value) const; /// Access attribute values: length double length() const; @@ -255,6 +359,16 @@ namespace DD4hep { /// Access attribute values: repeat int repeat() const; + /// Access attribute values: coefficient + double coefficient() const; + /// Access attribute values: coefficient + double coefficient(double default_value) const; + + /// Access attribute values: skew + double skew() const; + /// Access attribute values: skew + double skew(double default_value) const; + /// Access attribute values: outgoing_r double outgoing_r() const; /// Access attribute values: incoming_r @@ -311,8 +425,12 @@ namespace DD4hep { /// Access attribute values: start double start() const; + /// Access attribute values: start + double start(double default_value) const; /// Access attribute values: end double end() const; + /// Access attribute values: end + double end(double default_value) const; /// Access attribute values: inner_field double inner_field() const; /// Access attribute values: outer_field diff --git a/DDCore/include/XML/XMLElements.h b/DDCore/include/XML/XMLElements.h index a59bbacd7..d922a7584 100644 --- a/DDCore/include/XML/XMLElements.h +++ b/DDCore/include/XML/XMLElements.h @@ -668,6 +668,16 @@ namespace DD4hep { bool operator!() const { return 0 == m_element.ptr(); } + /// Assignment operator + Element& operator=(const Element& c) { + m_element = c.m_element; + return *this; + } + /// Assignment operator + Element& operator=(Handle_t handle) { + m_element = handle; + return *this; + } /// Automatic conversion to DOM element handle operator Handle_t() const { return m_element; diff --git a/DDCore/src/FieldTypes.cpp b/DDCore/src/FieldTypes.cpp index 8413b0789..9e4e16e80 100644 --- a/DDCore/src/FieldTypes.cpp +++ b/DDCore/src/FieldTypes.cpp @@ -21,6 +21,7 @@ using namespace DD4hep::Geometry; DD4HEP_INSTANTIATE_HANDLE(ConstantField); DD4HEP_INSTANTIATE_HANDLE(SolenoidField); DD4HEP_INSTANTIATE_HANDLE(DipoleField); +DD4HEP_INSTANTIATE_HANDLE(MultipoleField); /// Call to access the field components at a given location void ConstantField::fieldComponents(const double* /* pos */, double* field) { @@ -75,3 +76,44 @@ void DipoleField::fieldComponents(const double* pos, double* field) { field[0] += bx; } } + +/// Initializing constructor +MultipoleField::MultipoleField() : coefficents(), skews(), volume(), transform(), B_z(0.0) { + type = CartesianField::MAGNETIC; +} + +/// Call to access the field components at a given location +void MultipoleField::fieldComponents(const double* pos, double* field) { + Transform3D::Point p = transform * Transform3D::Point(pos[0],pos[1],pos[2]); + //const Transform3D::Point::CoordinateType& c = p.Coordinates(); + double x=p.X(), y=p.Y(), z=p.Z(); + double coord[3] = {x,y,z}; + if ( 0 == volume.ptr() || volume->Contains(coord) ) { + double bx = 0.0; + double by = 0.0; + double xy = x*y; + double x2 = x*x; + double y2 = y*y; + switch(coefficents.size()) { + case 4: // Ocupole momentum + by += coefficents[3] * (x2*x - 3.0*x*y2) + skews[3]*(y2*y - 3.0*x*y2); + bx += coefficents[3] * (3.0*x2*y - y2*y) + skews[3]*(x2*x - 3.0*x*y2); + case 3: // Sextupole momentum: + by += -coefficents[2] * (x2 - y2) + skews[2] * 2.0 * xy; + bx += coefficents[2] * 2.0 * xy + skews[2] * (x2 - y2); + case 2: // Quadrupole momentum: + bx += coefficents[1] * x - skews[1]*y; + by += coefficents[1] * y + skews[1]*x; + case 1: // Dipole momentum: + bx += skews[0]; + by += coefficents[0]; + case 0: // Nothing, but still valid + break; + default: // Error condition + throw runtime_error("Invalid multipole field definition!"); + } + field[0] += bx; + field[1] += by; + field[2] += B_z; + } +} diff --git a/DDCore/src/XML/XMLDimension.cpp b/DDCore/src/XML/XMLDimension.cpp index b3964c29d..3d48cae9e 100644 --- a/DDCore/src/XML/XMLDimension.cpp +++ b/DDCore/src/XML/XMLDimension.cpp @@ -18,7 +18,10 @@ using namespace DD4hep::XML; const XmlChar* val = m_element.attr_value_nothrow(Unicode_##name); \ return val ? dressing(val) : default_val; } -#define XML_ATTR_ACCESSOR_DOUBLE(name) XML_ATTR_ACCESSOR_DEFAULT(name,double,_toDouble) +#define XML_ATTR_ACCESSOR_DOUBLE(name) \ + XML_ATTR_ACCESSOR(double,name) \ + XML_ATTR_ACCESSOR_DEFAULT(name,double,_toDouble) + #define XML_ATTR_ACCESSOR_INT(name) XML_ATTR_ACCESSOR_DEFAULT(name,int,_toInt) #define XML_ATTR_ACCESSOR_BOOL(name) XML_ATTR_ACCESSOR_DEFAULT(name,bool,_toBool) @@ -30,44 +33,41 @@ XML_ATTR_ACCESSOR(int, id) XML_ATTR_ACCESSOR_INT(id) XML_ATTR_ACCESSOR(bool, combineHits) -XML_ATTR_ACCESSOR(double, x) XML_ATTR_ACCESSOR_DOUBLE(x) -XML_ATTR_ACCESSOR(double, X) -XML_ATTR_ACCESSOR(double, dx) +XML_ATTR_ACCESSOR_DOUBLE(X) XML_ATTR_ACCESSOR_DOUBLE(dx) -XML_ATTR_ACCESSOR(double, x0) -XML_ATTR_ACCESSOR(double, x1) -XML_ATTR_ACCESSOR(double, x2) -XML_ATTR_ACCESSOR(double, xmin) -XML_ATTR_ACCESSOR(double, xmax) -XML_ATTR_ACCESSOR(double, x_offset) -XML_ATTR_ACCESSOR(double, dim_x) - -XML_ATTR_ACCESSOR(double, y) + +XML_ATTR_ACCESSOR_DOUBLE(x0) +XML_ATTR_ACCESSOR_DOUBLE(x1) +XML_ATTR_ACCESSOR_DOUBLE(x2) +XML_ATTR_ACCESSOR_DOUBLE(x3) +XML_ATTR_ACCESSOR_DOUBLE(x4) +XML_ATTR_ACCESSOR_DOUBLE(xmin) +XML_ATTR_ACCESSOR_DOUBLE(xmax) +XML_ATTR_ACCESSOR_DOUBLE(x_offset) +XML_ATTR_ACCESSOR_DOUBLE(dim_x) + XML_ATTR_ACCESSOR_DOUBLE(y) -XML_ATTR_ACCESSOR(double, Y) -XML_ATTR_ACCESSOR(double, dy) +XML_ATTR_ACCESSOR_DOUBLE(Y) XML_ATTR_ACCESSOR_DOUBLE(dy) -XML_ATTR_ACCESSOR(double, y0) -XML_ATTR_ACCESSOR(double, y1) -XML_ATTR_ACCESSOR(double, y2) -XML_ATTR_ACCESSOR(double, ymin) -XML_ATTR_ACCESSOR(double, ymax) -XML_ATTR_ACCESSOR(double, y_offset) -XML_ATTR_ACCESSOR(double, dim_y) - -XML_ATTR_ACCESSOR(double, z) +XML_ATTR_ACCESSOR_DOUBLE(y0) +XML_ATTR_ACCESSOR_DOUBLE(y1) +XML_ATTR_ACCESSOR_DOUBLE(y2) +XML_ATTR_ACCESSOR_DOUBLE(ymin) +XML_ATTR_ACCESSOR_DOUBLE(ymax) +XML_ATTR_ACCESSOR_DOUBLE(y_offset) +XML_ATTR_ACCESSOR_DOUBLE(dim_y) + XML_ATTR_ACCESSOR_DOUBLE(z) -XML_ATTR_ACCESSOR(double, Z) -XML_ATTR_ACCESSOR(double, dz) +XML_ATTR_ACCESSOR_DOUBLE(Z) XML_ATTR_ACCESSOR_DOUBLE(dz) -XML_ATTR_ACCESSOR(double, z0) -XML_ATTR_ACCESSOR(double, z1) -XML_ATTR_ACCESSOR(double, z2) -XML_ATTR_ACCESSOR(double, zmin) -XML_ATTR_ACCESSOR(double, zmax) -XML_ATTR_ACCESSOR(double, z_offset) -XML_ATTR_ACCESSOR(double, dim_z) +XML_ATTR_ACCESSOR_DOUBLE(z0) +XML_ATTR_ACCESSOR_DOUBLE(z1) +XML_ATTR_ACCESSOR_DOUBLE(z2) +XML_ATTR_ACCESSOR_DOUBLE(zmin) +XML_ATTR_ACCESSOR_DOUBLE(zmax) +XML_ATTR_ACCESSOR_DOUBLE(z_offset) +XML_ATTR_ACCESSOR_DOUBLE(dim_z) XML_ATTR_ACCESSOR(double, outer_z) XML_ATTR_ACCESSOR(double, inner_z) @@ -75,44 +75,44 @@ XML_ATTR_ACCESSOR(double, b) XML_ATTR_ACCESSOR(double, g) XML_ATTR_ACCESSOR(double, B) XML_ATTR_ACCESSOR(double, G) -XML_ATTR_ACCESSOR(double, r) + XML_ATTR_ACCESSOR_DOUBLE(r) -XML_ATTR_ACCESSOR(double, R) -XML_ATTR_ACCESSOR(double, dr) -XML_ATTR_ACCESSOR(double, rmin) -XML_ATTR_ACCESSOR(double, rmax) -XML_ATTR_ACCESSOR(double, rmin1) -XML_ATTR_ACCESSOR(double, rmax1) -XML_ATTR_ACCESSOR(double, rmin2) -XML_ATTR_ACCESSOR(double, rmax2) -XML_ATTR_ACCESSOR(double, radius) +XML_ATTR_ACCESSOR_DOUBLE(R) +XML_ATTR_ACCESSOR_DOUBLE(dr) + +XML_ATTR_ACCESSOR_DOUBLE(rmin) +XML_ATTR_ACCESSOR_DOUBLE(rmax) +XML_ATTR_ACCESSOR_DOUBLE(rmin1) +XML_ATTR_ACCESSOR_DOUBLE(rmax1) +XML_ATTR_ACCESSOR_DOUBLE(rmin2) +XML_ATTR_ACCESSOR_DOUBLE(radius) XML_ATTR_ACCESSOR(double, outer_r) XML_ATTR_ACCESSOR(double, outer_radius) XML_ATTR_ACCESSOR(double, inner_r) XML_ATTR_ACCESSOR(double, inner_radius) XML_ATTR_ACCESSOR(double, angle) -XML_ATTR_ACCESSOR(double, alpha) -XML_ATTR_ACCESSOR(double, beta) -XML_ATTR_ACCESSOR(double, gamma) -XML_ATTR_ACCESSOR(double, delta) -XML_ATTR_ACCESSOR(double, epsilon) -XML_ATTR_ACCESSOR(double, theta) +XML_ATTR_ACCESSOR_DOUBLE(alpha) +XML_ATTR_ACCESSOR_DOUBLE(alpha1) +XML_ATTR_ACCESSOR_DOUBLE(alpha2) +XML_ATTR_ACCESSOR_DOUBLE(beta) +XML_ATTR_ACCESSOR_DOUBLE(gamma) +XML_ATTR_ACCESSOR_DOUBLE(delta) +XML_ATTR_ACCESSOR_DOUBLE(epsilon) +XML_ATTR_ACCESSOR_DOUBLE(theta) +XML_ATTR_ACCESSOR_DOUBLE(deltatheta) XML_ATTR_ACCESSOR(int, thetaBins) -XML_ATTR_ACCESSOR(double, psi) -XML_ATTR_ACCESSOR(double, phi) +XML_ATTR_ACCESSOR_DOUBLE(psi) +XML_ATTR_ACCESSOR_DOUBLE(phi) XML_ATTR_ACCESSOR(int, phiBins) -XML_ATTR_ACCESSOR(double, phi0) XML_ATTR_ACCESSOR_DOUBLE(phi0) -XML_ATTR_ACCESSOR(double, phi1) XML_ATTR_ACCESSOR_DOUBLE(phi1) -XML_ATTR_ACCESSOR(double, deltaphi) +XML_ATTR_ACCESSOR_DOUBLE(deltaphi) XML_ATTR_ACCESSOR(double, length) XML_ATTR_ACCESSOR(double, width) XML_ATTR_ACCESSOR(double, height) XML_ATTR_ACCESSOR(double, depth) -XML_ATTR_ACCESSOR(double, offset) XML_ATTR_ACCESSOR_DOUBLE(offset) XML_ATTR_ACCESSOR(double, crossing_angle) XML_ATTR_ACCESSOR(double, incoming_r) @@ -120,6 +120,9 @@ XML_ATTR_ACCESSOR(double, outgoing_r) XML_ATTR_ACCESSOR(double, phi_size_max) XML_ATTR_ACCESSOR(double, r_size) +XML_ATTR_ACCESSOR_DOUBLE(skew) +XML_ATTR_ACCESSOR_DOUBLE(coefficient) + XML_ATTR_ACCESSOR(double, gap) XML_ATTR_ACCESSOR(double, z_length) XML_ATTR_ACCESSOR(double, zhalf) @@ -128,8 +131,8 @@ XML_ATTR_ACCESSOR(int, nphi) XML_ATTR_ACCESSOR(double, rc) XML_ATTR_ACCESSOR(int, nz) XML_ATTR_ACCESSOR(double, zstart) -XML_ATTR_ACCESSOR(double, start) -XML_ATTR_ACCESSOR(double, end) +XML_ATTR_ACCESSOR_DOUBLE(start) +XML_ATTR_ACCESSOR_DOUBLE(end) XML_ATTR_ACCESSOR(double, thickness) XML_ATTR_ACCESSOR(int, numsides) XML_ATTR_ACCESSOR(int, number) diff --git a/DDCore/src/plugins/Compact2Objects.cpp b/DDCore/src/plugins/Compact2Objects.cpp index d64a7fd9b..5e5f5af93 100644 --- a/DDCore/src/plugins/Compact2Objects.cpp +++ b/DDCore/src/plugins/Compact2Objects.cpp @@ -139,9 +139,9 @@ static Ref_t create_DipoleField(lcdd_t& /* lcdd */, xml_h e) { xml_comp_t c(e); CartesianField obj; DipoleField* ptr = new DipoleField(); - double val; double lunit = c.hasAttr(_U(lunit)) ? c.attr<double>(_U(lunit)) : 1.0; double funit = c.hasAttr(_U(funit)) ? c.attr<double>(_U(funit)) : 1.0; + double val, mult = funit; if (c.hasAttr(_U(zmin))) ptr->zmin = _multiply<double>(c.attr < string > (_U(zmin)), lunit); @@ -149,9 +149,8 @@ static Ref_t create_DipoleField(lcdd_t& /* lcdd */, xml_h e) { ptr->zmax = _multiply<double>(c.attr < string > (_U(zmax)), lunit); if (c.hasAttr(_U(rmax))) ptr->rmax = _multiply<double>(c.attr < string > (_U(rmax)), lunit); - for (xml_coll_t coll(c, _U(dipole_coeff)); coll; ++coll) { - val = funit / pow(lunit, (int) ptr->coefficents.size()); - val = _multiply<double>(coll.text(), val); + for (xml_coll_t coll(c, _U(dipole_coeff)); coll; ++coll, mult /= lunit) { + val = _multiply<double>(coll.text(), mult); ptr->coefficents.push_back(val); } obj.assign(ptr, c.nameStr(), c.typeStr()); @@ -159,6 +158,49 @@ static Ref_t create_DipoleField(lcdd_t& /* lcdd */, xml_h e) { } DECLARE_XMLELEMENT(DipoleMagnet,create_DipoleField) +static Ref_t create_MultipoleField(lcdd_t& lcdd, xml_h e) { + xml_dim_t c(e), child; + CartesianField obj; + MultipoleField* ptr = new MultipoleField(); + double lunit = c.hasAttr(_U(lunit)) ? c.attr<double>(_U(lunit)) : 1.0; + double funit = c.hasAttr(_U(funit)) ? c.attr<double>(_U(funit)) : 1.0; + double val, mult = funit, bz = 0.0; + RotationZYX rot; + Position pos; + + if (c.hasAttr(_U(Z))) bz = c.Z() * funit; + if ((child = c.child(_U(position), false))) { // Position is not mandatory! + pos.SetXYZ(child.x(), child.y(), child.z()); + } + if ((child = c.child(_U(rotation), false))) { // Rotation is not mandatory + rot.SetComponents(child.z(), child.y(), child.x()); + } + if ((child = c.child(_U(shape), false))) { // Shape is not mandatory + string type = child.typeStr(); + string fac = type + "__shape_constructor"; + xml_h solid_elt = child; + Solid solid = Ref_t(PluginService::Create<NamedObject*>(fac, &lcdd, &solid_elt)); + if ( !solid.isValid() ) { + PluginDebug dbg; + PluginService::Create<NamedObject*>(type, &lcdd, &solid_elt); + throw_print("Failed to create solid of type " + type + ". " + dbg.missingFactory(type)); + } + ptr->volume = solid; + } + ptr->B_z = bz; + ptr->transform = Transform3D(rot,pos).Inverse(); + for (xml_coll_t coll(c, _U(coefficient)); coll; ++coll, mult /= lunit) { + xml_dim_t coeff = coll; + val = coeff.coefficient(0.0) * mult; + ptr->coefficents.push_back(val); + val = coeff.skew(0.0) * mult; + ptr->skews.push_back(val); + } + obj.assign(ptr, c.nameStr(), c.typeStr()); + return obj; +} +DECLARE_XMLELEMENT(MultipoleMagnet,create_MultipoleField) + static long create_Compact(lcdd_t& lcdd, xml_h element) { Converter < Compact > converter(lcdd); converter(element); diff --git a/DDCore/src/plugins/ShapePlugins.cpp b/DDCore/src/plugins/ShapePlugins.cpp new file mode 100644 index 000000000..d726089f1 --- /dev/null +++ b/DDCore/src/plugins/ShapePlugins.cpp @@ -0,0 +1,113 @@ +// $Id: StandardPlugins.cpp 1224 2014-06-19 19:26:59Z markus.frank@cern.ch $ +//==================================================================== +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------- +// +// Standard plugins necessary for nearly everything. +// +// Author : M.Frank +// +//==================================================================== + +// Framework include files +#include "DD4hep/DetFactoryHelper.h" + +using namespace std; +using namespace DD4hep; +using namespace DD4hep::Geometry; + +static Ref_t create_Box(lcdd_t&, xml_h e) { + xml_dim_t dim(e); + return Box(dim.dx(),dim.dy(),dim.dz()); +} +DECLARE_XMLELEMENT(Box__shape_constructor,create_Box) + +static Ref_t create_Polycone(lcdd_t&, xml_h element) { + xml_dim_t e(element); + int num = 0; + vector<double> rmin,rmax,z; + double start = e.start(0e0), deltaphi = e.deltaphi(2*M_PI); + for(xml_coll_t c(e,_U(zplane)); c; ++c, ++num) { + xml_comp_t plane(c); + rmin.push_back(plane.rmin()); + rmax.push_back(plane.rmax()); + z.push_back(plane.z()); + } + if ( num < 2 ) { + throw runtime_error("PolyCone Shape> Not enough Z planes. minimum is 2!"); + } + return Polycone(start,deltaphi,rmin,rmax,z); +} +DECLARE_XMLELEMENT(Polycone__shape_constructor,create_Polycone) + +static Ref_t create_ConeSegment(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return ConeSegment(e.rmin(0.0),e.rmax(),e.z(0.0),e.start(0.0),e.deltaphi(2*M_PI)); +} +DECLARE_XMLELEMENT(ConeSegment__shape_constructor,create_ConeSegment) + +static Ref_t create_Tube(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return Tube(e.rmin(0.0),e.rmax(),e.z(0.0),e.start(0.0),e.deltaphi(2*M_PI)); +} +DECLARE_XMLELEMENT(Tube__shape_constructor,create_Tube) + +static Ref_t create_Cone(lcdd_t&, xml_h element) { + xml_dim_t e(element); + double rmi1 = e.rmin1(0.0), rma1 = e.rmax1(); + return Cone(e.z(0.0),rmi1,rma1,e.rmin2(rmi1),e.rmax2(rma1)); +} +DECLARE_XMLELEMENT(Cone__shape_constructor,create_Cone) + +static Ref_t create_Trap(lcdd_t&, xml_h element) { + xml_dim_t e(element); + if ( e.hasAttr(_U(dz)) ) + return Trap(e.dz(),e.dy(),e.dx(),_toDouble(_Unicode(pLTX))); + return Trap(e.z(0.0),e.theta(),e.phi(0),e.y1(),e.x1(),e.x2(),e.alpha(),e.y2(),e.x3(),e.x4(),e.alpha2()); +} +DECLARE_XMLELEMENT(Trap__shape_constructor,create_Trap) + +static Ref_t create_Trapezoid(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return Trapezoid(e.x1(),e.x2(),e.y1(),e.y2(),e.z(0.0)); +} +DECLARE_XMLELEMENT(Trapezoid__shape_constructor,create_Trapezoid) + +static Ref_t create_Torus(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return Torus(e.r(),e.rmin(),e.rmax(),e.phi(M_PI),e.deltaphi(2.*M_PI)); +} +DECLARE_XMLELEMENT(Torus__shape_constructor,create_Torus) + +static Ref_t create_Sphere(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return Sphere(e.rmin(),e.rmax(),e.deltatheta(M_PI),e.phi(0e0),e.deltaphi(2.*M_PI)); +} +DECLARE_XMLELEMENT(Sphere__shape_constructor,create_Sphere) + +static Ref_t create_Paraboloid(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return Paraboloid(e.rmin(0.0),e.rmax(),e.dz()); +} +DECLARE_XMLELEMENT(Paraboloid__shape_constructor,create_Paraboloid) + +static Ref_t create_PolyhedraRegular(lcdd_t&, xml_h element) { + xml_dim_t e(element); + return PolyhedraRegular(e.numsides(),e.rmin(),e.rmax(),e.dz()); +} +DECLARE_XMLELEMENT(PolyhedraRegular__shape_constructor,create_PolyhedraRegular) + +static Ref_t create_EightPointSolid(lcdd_t&, xml_h element) { + xml_dim_t e(element); + double v[8][2]; + int num = 0; + memset(&v[0][0],0,sizeof(v)); + for(xml_coll_t c(e,_Unicode(vertex)); c && num<8; ++c, ++num) { + xml_comp_t vtx(c); + v[num][0] = vtx.x(); + v[num][1] = vtx.y(); + } + return EightPointSolid(e.dz(),&v[0][0]); +} +DECLARE_XMLELEMENT(EightPointSolid__shape_constructor,create_EightPointSolid) + diff --git a/DDG4/lcio/LCIOConversions.cpp b/DDG4/lcio/LCIOConversions.cpp index d9dfba47b..d9e7a3cf0 100644 --- a/DDG4/lcio/LCIOConversions.cpp +++ b/DDG4/lcio/LCIOConversions.cpp @@ -119,16 +119,16 @@ namespace DD4hep { const Geant4Tracker::Hit::Contribution& t = hit->truth; int trackID = pm->particleID(t.trackID); EVENT::MCParticle* lc_mcp = (EVENT::MCParticle*)lc_part->getElementAt(trackID); - double pos[3] = {hit->position.x(), hit->position.y(), hit->position.z()}; - lcio::SimTrackerHitImpl* lc_hit = new lcio::SimTrackerHitImpl; - lc_hit->setCellID0((hit->cellID >> 0 ) & 0xFFFFFFFF); + double pos[3] = {hit->position.x()/mm, hit->position.y()/mm, hit->position.z()/mm}; + lcio::SimTrackerHitImpl* lc_hit = new lcio::SimTrackerHitImpl; + lc_hit->setCellID0((hit->cellID >> 0 ) & 0xFFFFFFFF); lc_hit->setCellID1((hit->cellID >> sizeof(int)) & 0xFFFFFFFF); lc_hit->setEDep(hit->energyDeposit/GeV); - lc_hit->setPathLength(hit->length); - lc_hit->setTime(hit->truth.time); + lc_hit->setPathLength(hit->length/mm); + lc_hit->setTime(hit->truth.time/ns); lc_hit->setMCParticle(lc_mcp); lc_hit->setPosition(pos); - lc_hit->setMomentum(hit->momentum.x(),hit->momentum.y(),hit->momentum.z()); + lc_hit->setMomentum(hit->momentum.x()/GeV,hit->momentum.y()/GeV,hit->momentum.z()/GeV); lc_coll->addElement(lc_hit); } return lc_coll; @@ -171,7 +171,7 @@ namespace DD4hep { } for(size_t i=0; i<nhits; ++i) { const Geant4Calorimeter::Hit* hit = coll->hit(i); - float pos[3] = {float(hit->position.x()), float(hit->position.y()), float(hit->position.z())}; + float pos[3] = {float(hit->position.x()/mm), float(hit->position.y()/mm), float(hit->position.z()/mm)}; lcio::SimCalorimeterHitImpl* lc_hit = new lcio::SimCalorimeterHitImpl; lc_hit->setCellID0((hit->cellID >> 0 ) & 0xFFFFFFFF); lc_hit->setCellID1((hit->cellID >> sizeof(int)) & 0xFFFFFFFF); // ???? @@ -182,12 +182,12 @@ namespace DD4hep { for(Contributions::const_iterator j=hit->truth.begin(); j!=hit->truth.end(); ++j) { const Geant4HitData::Contribution& c = *j; int trackID = pm->particleID(c.trackID); - float pos[] = {c.x, c.y, c.z}; + float pos[] = {float(c.x/mm), float(c.y/mm), float(c.z/mm)}; EVENT::MCParticle* lc_mcp = (EVENT::MCParticle*)lc_parts->getElementAt(trackID); if ( hit_creation_mode == Geant4Sensitive::DETAILED_MODE ) - lc_hit->addMCParticleContribution(lc_mcp, c.deposit/GeV, c.time, lc_mcp->getPDG(), pos); + lc_hit->addMCParticleContribution(lc_mcp, c.deposit/GeV, c.time/ns, lc_mcp->getPDG(), pos); else - lc_hit->addMCParticleContribution(lc_mcp, c.deposit/GeV, c.time); + lc_hit->addMCParticleContribution(lc_mcp, c.deposit/GeV, c.time/ns); } } return lc_coll; diff --git a/examples/CLICSiD/compact/compact.xml b/examples/CLICSiD/compact/compact.xml index 5856ed685..58749eb4a 100644 --- a/examples/CLICSiD/compact/compact.xml +++ b/examples/CLICSiD/compact/compact.xml @@ -1546,14 +1546,5 @@ zmax="SolenoidCoilOuterZ" outer_radius="SolenoidalFieldRadius"> </field> - - <field name="GlobalDipole" type="DipoleMagnet" - rmax="50*cm" - zmin="0*cm" - zmax="50*cm"> - <dipole_coeff>1.0*tesla</dipole_coeff> - <dipole_coeff>0.1*tesla/pow(cm,1)</dipole_coeff> - <dipole_coeff>0.01*tesla/pow(cm,2)</dipole_coeff> - </field> </fields> </lccdd> diff --git a/examples/ClientTests/compact/MagnetFields.xml b/examples/ClientTests/compact/MagnetFields.xml new file mode 100644 index 000000000..9960e9d20 --- /dev/null +++ b/examples/ClientTests/compact/MagnetFields.xml @@ -0,0 +1,1567 @@ +<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema" + xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> + + <info name="clic_sid_cdr" + title="CLIC Silicon Detector CDR" + author="Christian Grefe" + url="https://twiki.cern.ch/twiki/bin/view/CLIC/ClicSidCdr" + status="development" + version="$Id: compact.xml 1368 2014-11-03 20:15:27Z markus.frank@cern.ch $"> + <comment>The compact format for the CLIC Silicon Detector used for the conceptual design report</comment> + </info> + + <includes> + <gdmlFile ref="elements.xml"/> + <gdmlFile ref="materials.xml"/> + <pyBuilder ref="../drivers"/> + </includes> + + <define> + <constant name="world_side" value="30000*mm"/> + <constant name="world_x" value="world_side"/> + <constant name="world_y" value="world_side"/> + <constant name="world_z" value="world_side"/> + + <constant name="CrossingAngle" value="0.020*rad"/> + + <constant name="CaloSides" value="12"/> + <constant name="MuonSides" value="8"/> + + <constant name="EcalBarrel_rmin" value="126.50*cm + world_side - world_side"/> + <constant name="EcalBarrel_rmin" value="126.50*cm"/> + <constant name="EcalBarrel_zmax" value="176.50*cm"/> + <constant name="EcalEndcap_rmin" value="21.0*cm"/> + <!-- Correction from going from inner circle to outer circle --> + <constant name="EcalEndcap_rmax" value="(EcalBarrel_rmin - 1.5*cm) / (cos(pi/CaloSides))"/> + <constant name="EcalEndcap_zmin" value="165.70*cm"/> + + <constant name="HcalBarrel_rmin" value="141.90*cm"/> + <constant name="HcalBarrel_layers" value="(int) 75"/> + <constant name="HcalBarrel_layer_thickness" value="1.0*cm + 0.65*cm"/> + <constant name="HcalEndcap_zmin" value="EcalBarrel_zmax + 4.0*cm"/> <!-- Gap for cables --> + <constant name="HcalEndcap_rmin" value="50.0*cm"/> + <!-- Correction from going from inner circle to outer circle --> + <constant name="HcalEndcap_rmax" value="(HcalBarrel_rmin + HcalBarrel_layers * HcalBarrel_layer_thickness) / (cos(pi/CaloSides))"/> + <constant name="HcalEndcap_layers" value="60"/> + <constant name="HcalEndcap_layer_thickness" value="2.0*cm + 0.65*cm"/> + <constant name="HcalEndcap_zmax" value="HcalEndcap_zmin + HcalEndcap_layers * HcalEndcap_layer_thickness"/> + + <constant name="tracking_region_radius" value="EcalBarrel_rmin - 1.0*mm"/> + <constant name="tracking_region_zmax" value="EcalEndcap_zmin - 1.0*mm"/> + <constant name="VXD_CF_sensor" value="0.026*cm"/> + <constant name="VXD_CF_support" value="0.05*cm"/> + + <constant name="SolenoidBarrelInnerRadius" value="HcalEndcap_rmax + 2.0*cm"/> + <constant name="SolenoidCoilOuterZ" value="HcalEndcap_zmax"/> <!-- Aligned with HCAL endcap --> + <constant name="SolenoidBarrelInnerCryostatThickness" value="3.0*cm"/> + <constant name="SolenoidBarrelInnerAirgapThickness" value="11.0*cm"/> + <constant name="SolenoidBarrelAlConductorThickness" value="38.4*cm"/> + <constant name="SolenoidBarrelQuenchbackThickness" value="5.0*cm"/> + <constant name="SolenoidBarrelOuterAirgapThickness" value="18.7*cm"/> + <constant name="SolenoidBarrelOuterCryostatThickness" value="4.0*cm"/> + <constant name="SolenoidEndcapCryostatThickness" value="6.0*cm"/> + <constant name="SolenoidEndcapAirgapThickness" value="12.0*cm"/> + <constant name="SolenoidBarrelOuterZ" value="SolenoidCoilOuterZ+SolenoidEndcapAirgapThickness"/> + <constant name="SolenoidBarrelConductorInnerRadius" value="SolenoidBarrelInnerRadius + SolenoidBarrelInnerCryostatThickness + SolenoidBarrelInnerAirgapThickness"/> + <constant name="SolenoidBarrelOuterCryostatInnerRadius" value="SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/> + <constant name="SolenoidBarrelOuterRadius" value="SolenoidBarrelOuterCryostatInnerRadius + SolenoidBarrelOuterAirgapThickness + SolenoidBarrelOuterCryostatThickness"/> + <constant name="SolenoidalFieldRadius" value="(SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness / 2.0)"/> + + <constant name="MuonBarrel_rmin" value="SolenoidBarrelOuterRadius + 1.0*cm"/> + <constant name="MuonBarrel_zmax" value="SolenoidBarrelOuterZ + SolenoidEndcapCryostatThickness"/> + <constant name="MuonBarrel_layers" value="15"/> + <constant name="MuonBarrel_layer_thickness" value="10.0*cm + 4.0*cm"/> + <constant name="MuonEndcap_zmin" value="MuonBarrel_zmax + 10.0*cm"/> <!-- Space for cables etc. --> + <constant name="MuonEndcap_rmin" value="69.0*cm"/> <!-- Space for QD0 and anti-solenoid--> + <!-- Correction from going from inner circle to outer circle --> + <constant name="MuonEndcap_rmax" value="(MuonBarrel_rmin + 57.0*cm + MuonBarrel_layers * MuonBarrel_layer_thickness) / (cos(pi/MuonSides))"/> + <constant name="MuonEndcap_layers" value="18"/> + <constant name="MuonEndcap_layer_thickness" value="10.0*cm + 4.0*cm"/> + <constant name="MuonEndcap_zmax" value="MuonEndcap_zmin + MuonEndcap_layers * MuonEndcap_layer_thickness"/> + + <constant name="LumiCal_rmin" value="6.4*cm"/> + <constant name="LumiCal_rmax" value="EcalEndcap_rmin + 3.0*cm"/> + <constant name="LumiCal_zmin" value="HcalEndcap_zmin"/> + <constant name="LumiCal_thickness" value="20*0.371*cm + 15*0.643*cm"/> + <constant name="LumiCal_zmax" value="LumiCal_zmin + LumiCal_thickness"/> + <constant name="LumiCalElectronics_rmax" value="LumiCal_rmax+5.0*cm"/> + + <constant name="SupportTube_thickness" value="1.0*cm"/> + <constant name="ForwardVacuumValve_thickness" value="36.0*cm"/> + <constant name="ForwardShielding_thickness" value="5.0*cm"/> + <constant name="ForwardMask_thickness" value="10.0*cm"/> + <constant name="ForwardMask_zmin" value="LumiCal_zmax + ForwardShielding_thickness + ForwardVacuumValve_thickness"/> + <constant name="BeamCal_rmax" value="13.0*cm"/> + <constant name="BeamCal_zmin" value="ForwardMask_zmin + ForwardMask_thickness"/> + + <constant name="VertexSupport_r1" value="16.87*cm"/> + <constant name="VertexSupport_r2" value="18.42*cm"/> + <constant name="VertexSupport_zmax" value="89.48*cm"/> + + <constant name="VertexBarrel_zmax" value="10.0*cm"/> + <constant name="VertexBarrel_r1" value="2.7*cm"/> + <constant name="VertexBarrel_r2" value="3.8*cm"/> + <constant name="VertexBarrel_r3" value="5.1*cm"/> + <constant name="VertexBarrel_r4" value="6.4*cm"/> + <constant name="VertexBarrel_r5" value="7.7*cm"/> + + <constant name="CentralBeamPipe_zmax" value="23.0*cm"/> + <constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/> + <constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/> <!-- 1% of the diameter --> + <constant name="CentralBeamPipe_rmin" value="CentralBeamPipe_rmax - CentralBeamPipe_thickness"/> + <constant name="BeamPipe_thickness" value="0.4*cm"/> + <constant name="BeamPipe_endThickness" value="0.1*cm"/> + <constant name="BeamPipe_zmax" value="LumiCal_zmin - 0.5*cm"/> + <constant name="BeamPipe_rmax" value="19.0*cm"/> + <constant name="BeamPipe_rmin" value="BeamPipe_rmax - BeamPipe_thickness"/> + <constant name="bp_cone_slope" value="(BeamPipe_rmax-CentralBeamPipe_rmax)/(tracking_region_zmax-CentralBeamPipe_zmax)"/> + <constant name="BeamPipe_zmin" value="CentralBeamPipe_zmax + (BeamPipe_thickness - CentralBeamPipe_thickness)/bp_cone_slope"/> + <constant name="BeamPipeLiner_thickness" value="0.0*cm"/> + + <constant name="VertexEndcap_rmax" value="11.5*cm"/> + <constant name="VertexEndcap_z1" value="12.0*cm"/> + <constant name="VertexEndcap_z2" value="16.0*cm"/> + <constant name="VertexEndcap_z3" value="20.0*cm"/> + <constant name="VertexEndcap_z4" value="24.0*cm"/> + <constant name="VertexEndcap_offset" value="0.2*cm"/> + <constant name="VertexEndcapModules" value="16"/> + <constant name="VertexEndcap_rmin1" value="CentralBeamPipe_rmax + VertexEndcap_offset"/> + <constant name="VertexEndcap_rmin2" value="CentralBeamPipe_rmax + VertexEndcap_offset"/> + <constant name="VertexEndcap_rmin3" value="CentralBeamPipe_rmax + VertexEndcap_offset"/> + <constant name="VertexEndcap_rmin4" value="(VertexEndcap_z4 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset"/> + + <constant name="ForwardTracker_rmax" value="16.87*cm"/> + <constant name="ForwardTracker_z1" value="28.0*cm"/> + <constant name="ForwardTracker_z2" value="50.0*cm"/> + <constant name="ForwardTracker_z3" value="83.0*cm"/> + <constant name="ForwardTracker_offset" value="0.2*cm"/> + <constant name="ForwardTrackerModules" value="16"/> + <constant name="ForwardTracker_rmin1" value="(ForwardTracker_z1 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/> + <constant name="ForwardTracker_rmin2" value="(ForwardTracker_z2 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/> + <constant name="ForwardTracker_rmin3" value="(ForwardTracker_z3 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/> + + <constant name="VertexService_zmin" value="ForwardTracker_z1 + 1.0*cm"/> + <constant name="VertexService_zmax" value="VertexService_zmin + 2.0*cm"/> + <constant name="VertexServiceThickness" value="0.3*cm"/> + <constant name="VertexCableThickness" value="0.005*cm"/> + + <constant name="IncomingBP_radius" value="0.25*cm"/> + <constant name="IncomingBP_thickness" value="0.05*cm"/> + <constant name="OutgoingBP_radius" value="tan(CrossingAngle/2/rad)*BeamCal_zmin"/> + <constant name="OutgoingBP_thickness" value="0.1*cm"/> + + </define> + <materials> + <material name="TungstenDens23"> + <D value="17.7" unit="g/cm3"/> + <fraction n="0.925" ref="W"/> + <fraction n="0.066" ref="Ni"/> + <fraction n="0.009" ref="Fe"/> + </material> + <material name="TungstenDens24"> + <D value="17.8" unit="g/cm3"/> + <fraction n="0.93" ref="W"/> + <fraction n="0.061" ref="Ni"/> + <fraction n="0.009" ref="Fe"/> + </material> + <material name="TungstenDens25"> + <D value="18.2" unit="g/cm3"/> + <fraction n="0.950" ref="W"/> + <fraction n="0.044" ref="Ni"/> + <fraction n="0.006" ref="Fe"/> + </material> + <material name="CarbonFiber_25percent"> + <D type="density" value="0.375" unit="g/cm3"/> + <fraction n="1.0" ref="CarbonFiber"/> + </material> + <material name="CarbonFiber_15percent"> + <D type="density" value="0.225" unit="g/cm3"/> + <fraction n="1.0" ref="CarbonFiber"/> + </material> + <material name="Rohacell31_50percent"> + <D type="density" value="0.016" unit="g/cm3"/> + <fraction n="1.0" ref="Rohacell31"/> + </material> + <material name="Rohacell31_15percent"> + <D type="density" value="0.0048" unit="g/cm3"/> + <fraction n="1.0" ref="Rohacell31"/> + </material> + <material name="BoratedPolyethylene5"> + <D value="0.93" unit="g/cm3"/> + <fraction n="0.612" ref="C"/> + <fraction n="0.222" ref="O"/> + <fraction n="0.116" ref="H"/> + <fraction n="0.050" ref="B"/> + </material> + <material name="SiliconCarbide"> + <D value="3.1" unit="g/cm3"/> + <composite n="1" ref="Si"/> + <composite n="1" ref="C"/> + </material> + <material name="SiliconCarbide_6percent"> + <D value="0.186" unit="g/cm3"/> + <fraction n="1.0" ref="SiliconCarbide"/> + </material> + <material name="Graphite"> + <D value="1.7" unit="g/cm3"/> + <composite n="1" ref="C"/> + </material> + </materials> + <limits> + <limitset name="cal_limits"> + <limit name="step_length_max" particles="*" value="5.0" unit="mm" /> + </limitset> + </limits> + + <display> + <vis name="InvisibleNoDaughters" showDaughters="false" visible="false"/> + <vis name="InvisibleWithDaughters" showDaughters="true" visible="false"/> + <vis name="SiVertexBarrelModuleVis" alpha="1.0" r="1" g="1" b="0.6" drawingStyle="wireframe" showDaughters="true" visible="true"/> + <vis name="SiVertexSensitiveVis" alpha="1.0" r="1" g="0.2" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="SiVertexPassiveVis" alpha="1.0" r="0" g="0.2" b="1" drawingStyle="solid" showDaughters="true" visible="true"/> + <vis name="SiVertexBarrelLayerVis" alpha="1.0" r="1" g="1" b="0.6" showDaughters="true" visible="false"/> + + <vis name="SiVertexEndcapLayerVis" alpha="1.0" r="1" g="0.75" b="0" showDaughters="false" visible="true"/> + + <vis name="SiTrackerBarrelModuleVis" alpha="1.0" r="0" g="1" b="0.6" drawingStyle="wireframe" showDaughters="false" visible="true"/> + <vis name="SiTrackerBarrelLayerVis" alpha="1.0" r="1" g="1" b="0.6" showDaughters="true" visible="true"/> + + <vis name="SiTrackerEndcapModuleVis" alpha="0.1" r="0.8" g="1.0" b="0.1" drawingStyle="wireframe" showDaughters="false" visible="true"/> + + <vis name="SiTrackerForwardVis" alpha="1.0" r="0.8" g="0.1" b="0.1" showDaughters="false" visible="true"/> + + <vis name="EcalBarrelVis" alpha="1.0" r="0" g="0" b="0.3" showDaughters="true" visible="true"/> + <vis name="EcalBarrelStaveVis" alpha="1.0" r="1" g="0.9" b="0.5" showDaughters="false" visible="true"/> + + <vis name="EcalEndcapVis" alpha="1" r="0.77" g="0.74" b="0.86" showDaughters="false" visible="true"/> + + <vis name="HcalBarrelVis" alpha="1" r="1" g="1" b="0.1" showDaughters="true" visible="true"/> + <vis name="HcalBarrelStavesVis" alpha="1" r="1" g="0" b="0.3" showDaughters="true" visible="true"/> + <vis name="HcalBarrelLayerVis" alpha="1" r="1" g="0" b="0.5" showDaughters="true" visible="true"/> + <vis name="HcalBarrelSensorVis" alpha="1" r="1" g="1" b="0.7" showDaughters="true" visible="true"/> + + <vis name="HcalEndcapVis" alpha="1" r="1" g="1" b="0.1" showDaughters="false" visible="true"/> + <vis name="HcalEndcapLayerVis" alpha="1" r="1" g="0" b="0.5" showDaughters="false" visible="true"/> + + <vis name="SolenoidBarrelLayerVis" alpha="1" r="0" g="0.3" b="0.3" showDaughters="false" visible="true"/> + <vis name="SolenoidCoilEndsVis" alpha="1" r="0" g="0.9" b="0.9" showDaughters="false" visible="true"/> + <vis name="AntiSolenoidVis" alpha="1" r="0.3" g="1" b="1" showDaughters="false" visible="true"/> + + <vis name="MuonBarrelVis" alpha="1" r="1" g="0.4" b="0.62" showDaughters="true" visible="true"/> + <vis name="MuonBarrelStavesVis" alpha="1" r="0" g="0.7" b="0.3" showDaughters="true" visible="true"/> + <vis name="MuonBarrelLayerVis" alpha="1" r="0" g="1" b="0.3" showDaughters="true" visible="true"/> + <vis name="MuonBarrelSensorVis" alpha="1" r="0.54" g="0.4" b="0.41" visible="true"/> + <vis name="MuonBarrelAbsorberVis" alpha="1" r="0.28" g="0.4" b="0.62" visible="true"/> + + <vis name="MuonEndcapVis" alpha="1" r="1" g="0.4" b="0.62" showDaughters="true" visible="true"/> + <vis name="MuonEndcapLayerVis" alpha="1" r="0" g="1" b="0.3" showDaughters="true" visible="true"/> + <vis name="MuonEndcapSensorVis" alpha="1" r="0.54" g="0.4" b="0.41" visible="true"/> + <vis name="MuonEndcapAbsorberVis" alpha="1" r="0.28" g="0.4" b="0.62" visible="true"/> + + + <vis name="BeamPipeVis" r="0.0" g="0.99" b="0.0" showDaughters="false" visible="true"/> + <vis name="CableVis" showDaughters="false" visible="true"/> + + <vis name="SupportTubeVis" r="0.1" g="0.1" b="0.99" showDaughters="false" visible="true"/> + <vis name="TungstenShieldingVis" r="0.99" g="0.1" b="0.2" showDaughters="false" visible="true"/> + + <vis name="SupportVis" r="0.8" g="0.8" b="0" showDaughters="false" visible="true"/> + <vis name="LumiCalVis" showDaughters="false" visible="true"/> + <vis name="GreenVis" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> + <vis name="RedVis" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/> + <vis name="BlueVis" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/> + </display> + + + + <detectors> + + <comment>Trackers</comment> + <include ref="VertexBarrel.xml"/> + + <comment>Vertex Detector Endcaps</comment> + <detector id="2" name="SiVertexEndcap" type="SiTrackerEndcap2" readout="SiVertexEndcapHits" reflect="true"> + <module name="SiVertexEndcapModule1"> + <trd x1="VertexEndcap_rmin1 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin1) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis"/> + <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis" /> + </module> + <module name="SiVertexEndcapModule2"> + <trd x1="VertexEndcap_rmin2 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin2) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis"/> + <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis" /> + </module> + <module name="SiVertexEndcapModule3"> + <trd x1="VertexEndcap_rmin3 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin3) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis"/> + <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis" /> + </module> + <module name="SiVertexEndcapModule4"> + <trd x1="VertexEndcap_rmin4 * tan(pi/(VertexEndcapModules-0.1))" x2="VertexEndcap_rmax * sin(pi/(VertexEndcapModules-0.1*cm))" z="(VertexEndcap_rmax - VertexEndcap_rmin4) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" vis="SiVertexSensitiveVis"/> + <module_component thickness="0.013*cm" material="Carbon" vis="SiVertexPassiveVis"/> + </module> + <layer id="1" vis="SiVertexEndcapLayerVis"> + <ring r="(VertexEndcap_rmax + VertexEndcap_rmin1) / 2" zstart="VertexEndcap_z1" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule1"/> + </layer> + <layer id="2" vis="SiVertexEndcapLayerVis"> + <ring r="(VertexEndcap_rmax + VertexEndcap_rmin2) / 2" zstart="VertexEndcap_z2" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule2"/> + </layer> + <layer id="3" vis="SiVertexEndcapLayerVis"> + <ring r="(VertexEndcap_rmax + VertexEndcap_rmin3) / 2" zstart="VertexEndcap_z3" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule3"/> + </layer> + <layer id="4" vis="SiVertexEndcapLayerVis"> + <ring r="(VertexEndcap_rmax + VertexEndcap_rmin4) / 2" zstart="VertexEndcap_z4" nmodules="(int) VertexEndcapModules" dz="0.011*cm" module="SiVertexEndcapModule4"/> + </layer> + </detector> + + <detector id="3" name="SiTrackerBarrel" type="SiTrackerBarrel" readout="SiTrackerBarrelHits"> + <comment>Outer Tracker Barrel</comment> + <module name="SiTrackerModule_Layer1" vis="SiTrackerBarrelModuleVis"> + <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false"> + <position z="-0.14*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="-0.122*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false"> + <position z="-0.024*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false"> + <position z="0.07475*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="0.0915*cm" /> + </module_component> + <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true"> + <position z="0.1145*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false"> + <position z="0.12974*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0038*cm" material="Kapton" sensitive="false"> + <position z="0.1375*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00038*cm" material="Copper" sensitive="false"> + <position z="0.146*cm"/> + </module_component> + </module> + <module name="SiTrackerModule_Layer2" vis="SiTrackerBarrelModuleVis"> + <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false"> + <position z="-0.14*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="-0.122*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false"> + <position z="-0.024*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false"> + <position z="0.07475*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="0.0915*cm" /> + </module_component> + <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true"> + <position z="0.1145*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false"> + <position z="0.12974*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0051*cm" material="Kapton" sensitive="false"> + <position z="0.1375*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00052*cm" material="Copper" sensitive="false"> + <position z="0.146*cm"/> + </module_component> + </module> + <module name="SiTrackerModule_Layer3" vis="SiTrackerBarrelModuleVis"> + <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false"> + <position z="-0.14*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="-0.122*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false"> + <position z="-0.024*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false"> + <position z="0.07475*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="0.0915*cm" /> + </module_component> + <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true"> + <position z="0.1145*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false"> + <position z="0.12974*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0064*cm" material="Kapton" sensitive="false"> + <position z="0.1375*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00065*cm" material="Copper" sensitive="false"> + <position z="0.146*cm"/> + </module_component> + </module> + <module name="SiTrackerModule_Layer4" vis="SiTrackerBarrelModuleVis"> + <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false"> + <position z="-0.14*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="-0.122*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false"> + <position z="-0.024*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false"> + <position z="0.07475*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="0.0915*cm" /> + </module_component> + <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true"> + <position z="0.1145*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false"> + <position z="0.12974*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0078*cm" material="Kapton" sensitive="false"> + <position z="0.1375*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00079*cm" material="Copper" sensitive="false"> + <position z="0.146*cm"/> + </module_component> + </module> + <module name="SiTrackerModule_Layer5" vis="SiTrackerBarrelModuleVis"> + <module_envelope width="97.79*mm" length="97.79*mm" thickness="0.3*cm"/> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.02*cm" material="PEEK" sensitive="false"> + <position z="-0.14*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="-0.122*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.18*cm" material="Rohacell31_50D" sensitive="false"> + <position z="-0.024*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0175*cm" material="Epoxy" sensitive="false"> + <position z="0.07475*cm" /> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.016*cm" material="CarbonFiber_50D" sensitive="false"> + <position z="0.0915*cm" /> + </module_component> + <module_component width="92.031*mm" length="92.031*mm" thickness="0.03*cm" material="Silicon" sensitive="true"> + <position z="0.1145*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00048*cm" material="Silicon" sensitive="false"> + <position z="0.12974*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.0091*cm" material="Kapton" sensitive="false"> + <position z="0.1375*cm"/> + </module_component> + <module_component width="97.79*mm" length="97.79*mm" thickness="0.00093*cm" material="Copper" sensitive="false"> + <position z="0.146*cm"/> + </module_component> + </module> + <layer module="SiTrackerModule_Layer1" id="1" vis="SiTrackerBarrelLayerVis"> + <barrel_envelope inner_r="215.075*mm" outer_r="245.0*mm" z_length="578 * 2*mm"/> + <rphi_layout phi_tilt="0.17506*rad" nphi="20" phi0="0." rc="(216.355 + 5.0)*mm" dr="0.0"/> + <z_layout dr="4.0*mm" z0="512.128*mm" nz="13"/> + </layer> + <layer module="SiTrackerModule_Layer2" id="2" vis="SiTrackerBarrelLayerVis"> + <barrel_envelope inner_r="465.075*mm" outer_r="501.0*mm" z_length="749.8 * 2*mm"/> + <rphi_layout phi_tilt="0.12217*rad" nphi="38" phi0="0.087*rad" rc="(466.355 + 5.0)*mm" dr="0.0"/> + <z_layout dr="4.0*mm" z0="690.605*mm" nz="17"/> + </layer> + <layer module="SiTrackerModule_Layer3" id="3" vis="SiTrackerBarrelLayerVis"> + <barrel_envelope inner_r="715.075*mm" outer_r="756.0*mm" z_length="1013.9 * 2*mm"/> + <rphi_layout phi_tilt="0.11493*rad" nphi="58" phi0="0.058*rad" rc="(716.355 + 5.0)*mm" dr="0.0"/> + <z_layout dr="4.0*mm" z0="954.625*mm" nz="23"/> + </layer> + <layer module="SiTrackerModule_Layer4" id="4" vis="SiTrackerBarrelLayerVis"> + <barrel_envelope inner_r="965.075*mm" outer_r="1012.0*mm" z_length="1272.3 * 2*mm"/> + <rphi_layout phi_tilt="0.11502*rad" nphi="80" phi0="0.0436*rad" rc="(966.355 + 5.0)*mm" dr="0.0"/> + <z_layout dr="4.0*mm" z0="1213.073*mm" nz="29"/> + </layer> + <layer module="SiTrackerModule_Layer5" id="5" vis="SiTrackerBarrelLayerVis"> + <barrel_envelope inner_r="1215.075*mm" outer_r="1263.0*mm" z_length="1535.7 * 2*mm"/> + <rphi_layout phi_tilt="0.11467*rad" nphi="102" phi0="0.01745*rad" rc="(1216.355 + 5.0)*mm" dr="0.0"/> + <z_layout dr="4.0*mm" z0="1476.497*mm" nz="35"/> + </layer> + </detector> + + <detector id="4" name="SiTrackerEndcap" type="SiTrackerEndcap2" readout="SiTrackerEndcapHits" reflect="true"> + <comment>Outer Tracker Endcaps</comment> + <module name="Module1" vis="SiTrackerEndcapModuleVis"> + <trd x1="36.112*mm" x2="46.635*mm" z="100.114/2*mm" /> + <module_component thickness="0.00052*cm" material="Copper" /> + <module_component thickness="0.0051*cm" material="Kapton" /> + <module_component thickness="0.00048*cm" material="Silicon" /> + <module_component thickness="0.03*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.016*cm" material="CarbonFiber_50D" /> + <module_component thickness="0.18*cm" material="Rohacell31_50D" /> + <module_component thickness="0.016*cm" material="CarbonFiber_50D" /> + <module_component thickness="0.0175*cm" material="Epoxy" /> + <module_component thickness="0.03*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.00048*cm" material="Silicon" /> + <module_component thickness="0.0051*cm" material="Kapton" /> + <module_component thickness="0.00052*cm" material="Copper" /> + </module> + <module name="Module2" vis="SiTrackerEndcapModuleVis"> + <trd x1="45.245*mm" x2="54.680*mm" z="89.773/2*mm" /> + <module_component thickness="0.00079*cm" material="Copper" /> + <module_component thickness="0.0078*cm" material="Kapton" /> + <module_component thickness="0.00048*cm" material="Silicon" /> + <module_component thickness="0.03*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.016*cm" material="CarbonFiber_50D" /> + <module_component thickness="0.18*cm" material="Rohacell31_50D" /> + <module_component thickness="0.016*cm" material="CarbonFiber_50D" /> + <module_component thickness="0.0175*cm" material="Epoxy" /> + <module_component thickness="0.03*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.00048*cm" material="Silicon" /> + <module_component thickness="0.0078*cm" material="Kapton" /> + <module_component thickness="0.00079*cm" material="Copper" /> + </module> + <layer id="1"> + <ring r="256.716*mm" zstart="(787.105+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/> + <ring r="353.991*mm" zstart="(778.776+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/> + <ring r="449.180*mm" zstart="(770.544+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/> + </layer> + <layer id="2"> + <ring r="256.716*mm" zstart="(1073.293+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/> + <ring r="353.991*mm" zstart="(1064.966+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/> + <ring r="449.180*mm" zstart="(1056.734+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/> + <ring r="538.520*mm" zstart="(1048.466+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/> + <ring r="625.654*mm" zstart="(1041.067+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/> + <ring r="703.666*mm" zstart="(1033.725+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/> + </layer> + <layer id="3"> + <ring r="256.716*mm" zstart="(1353.786+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/> + <ring r="353.991*mm" zstart="(1345.457+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/> + <ring r="449.180*mm" zstart="(1337.225+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/> + <ring r="538.520*mm" zstart="(1328.957+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/> + <ring r="625.654*mm" zstart="(1321.558+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/> + <ring r="703.666*mm" zstart="(1314.217+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/> + <ring r="793.448*mm" zstart="(1306.828+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/> + <ring r="874.239*mm" zstart="(1299.486+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/> + <ring r="958.364*mm" zstart="(1292.189+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/> + </layer> + <layer id="4"> + <ring r="256.716*mm" zstart="(1639.164+1.75)*mm" nmodules="24" dz="1.75*mm" module="Module1"/> + <ring r="353.991*mm" zstart="(1630.835+1.75)*mm" nmodules="32" dz="1.75*mm" module="Module1"/> + <ring r="449.180*mm" zstart="(1622.603+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module1"/> + <ring r="538.520*mm" zstart="(1614.335+1.75)*mm" nmodules="40" dz="1.75*mm" module="Module2"/> + <ring r="625.654*mm" zstart="(1606.936+1.75)*mm" nmodules="48" dz="1.75*mm" module="Module2"/> + <ring r="703.666*mm" zstart="(1599.595+1.75)*mm" nmodules="54" dz="1.75*mm" module="Module2" phi0="pi/54"/> + <ring r="793.448*mm" zstart="(1592.206+1.75)*mm" nmodules="58" dz="1.75*mm" module="Module2" phi0="pi/58"/> + <ring r="874.239*mm" zstart="(1584.864+1.75)*mm" nmodules="64" dz="1.75*mm" module="Module2"/> + <ring r="958.364*mm" zstart="(1577.567+1.75)*mm" nmodules="68" dz="1.75*mm" module="Module2"/> + <ring r="1040.970*mm" zstart="(1570.222+1.75)*mm" nmodules="72" dz="1.75*mm" module="Module2"/> + <ring r="1124.167*mm" zstart="(1562.916+1.75)*mm" nmodules="78" dz="1.75*mm" module="Module2" phi0="pi/78"/> + <ring r="1206.937*mm" zstart="(1555.647+1.75)*mm" nmodules="84" dz="1.75*mm" module="Module2"/> + </layer> + </detector> + + <detector id="5" name="SiTrackerForward" type="SiTrackerEndcap2" readout="SiTrackerForwardHits" reflect="true"> + <comment>Forward Tracker inside Vertex Support Barrel</comment> + <module name="SiTrackerForwardModule1"> + <trd x1="ForwardTracker_rmin1 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin1) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.013*cm" material="Carbon" /> + </module> + <module name="SiTrackerForwardModule2"> + <trd x1="ForwardTracker_rmin2 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin2) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.013*cm" material="Carbon" /> + </module> + <module name="SiTrackerForwardModule3"> + <trd x1="ForwardTracker_rmin3 * tan(pi/(ForwardTrackerModules-0.1))" x2="ForwardTracker_rmax * sin(pi/(ForwardTrackerModules-0.1))" z="(ForwardTracker_rmax - ForwardTracker_rmin3) / 2" /> + <module_component thickness="0.005*cm" material="Silicon" sensitive="true" /> + <module_component thickness="0.013*cm" material="Carbon" /> + </module> + <layer id="1"> + <ring r="(ForwardTracker_rmax + ForwardTracker_rmin1) / 2" zstart="ForwardTracker_z1" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule1"/> + </layer> + <layer id="2"> + <ring r="(ForwardTracker_rmax + ForwardTracker_rmin2) / 2" zstart="ForwardTracker_z2" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule2"/> + </layer> + <layer id="3"> + <ring r="(ForwardTracker_rmax + ForwardTracker_rmin3) / 2" zstart="ForwardTracker_z3" nmodules="(int) ForwardTrackerModules" dz="0.011*mm" module="SiTrackerForwardModule3"/> + </layer> + </detector> + + <comment>Calorimeters</comment> + <detector id="6" name="EcalBarrel" type="EcalBarrel" readout="EcalBarrelHits" vis="EcalBarrelVis" calorimeterType="EM_BARREL"> + <comment>EM Calorimeter Barrel</comment> + <dimensions numsides="(int) CaloSides" rmin="EcalBarrel_rmin" z="EcalBarrel_zmax*2" /> + <staves vis="EcalBarrelStaveVis"/> + <layer repeat="1"> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + <layer repeat="20"> + <slice material = "TungstenDens24" thickness = "0.25*cm" /> + <slice material = "Air" thickness = "0.025*cm" /> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + <layer repeat="10"> + <slice material = "TungstenDens24" thickness = "0.5*cm" /> + <slice material = "Air" thickness = "0.025*cm" /> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + </detector> + + <detector id="7" name="EcalEndcap" type="PolyhedraEndcapCalorimeter2" reflect="true" readout="EcalEndcapHits" vis="EcalEndcapVis" calorimeterType="EM_ENDCAP"> + <comment>EM Calorimeter Endcaps</comment> + <dimensions numsides="(int) CaloSides" zmin="EcalEndcap_zmin" rmin="EcalEndcap_rmin" rmax="EcalEndcap_rmax" /> + <layer repeat="1"> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + <layer repeat="20"> + <slice material = "TungstenDens24" thickness = "0.25*cm" /> + <slice material = "Air" thickness = "0.025*cm" /> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + <layer repeat="10"> + <slice material = "TungstenDens24" thickness = "0.5*cm" /> + <slice material = "Air" thickness = "0.025*cm" /> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + </detector> + + <detector id="8" name="HcalBarrel" type="PolyhedraBarrelCalorimeter2" readout="HcalBarrelHits" vis="HcalBarrelVis" calorimeterType="HAD_BARREL" gap="0.*cm" material="Steel235"> + <comment>Hadron Calorimeter Barrel</comment> + <dimensions numsides="(int) CaloSides" rmin="HcalBarrel_rmin" z="EcalBarrel_zmax*2"/> + <staves vis="HcalBarrelStavesVis"/> + <layer repeat="(int) HcalBarrel_layers"> + <slice material = "TungstenDens24" thickness = "1.00*cm" /> + <slice material = "Polystyrene" thickness = "0.50*cm" sensitive = "yes" limits="cal_limits" vis="HcalBarrelSensorVis"/> + <slice material = "Air" thickness = "0.15*cm" /> + </layer> + </detector> + + + <detector id="9" name="HcalEndcap" type="PolyhedraEndcapCalorimeter2" readout="HcalEndcapHits" vis="HcalEndcapVis" calorimeterType="HAD_ENDCAP"> + <comment>Hadron Calorimeter Endcaps</comment> + <dimensions numsides="(int) CaloSides" zmin="HcalEndcap_zmin" rmin="HcalEndcap_rmin" rmax="HcalEndcap_rmax" /> + <layer repeat="(int) HcalEndcap_layers"> + <slice material = "Steel235" thickness = "2.0*cm" /> + <slice material = "Polystyrene" thickness = "0.50*cm" sensitive = "yes" limits="cal_limits" /> + <slice material = "Air" thickness = "0.15*cm" /> + </layer> + </detector> + + <detector id="10" name="HcalPlug" type="PolyhedraEndcapCalorimeter2" readout="HcalPlugHits" vis="MuonEndcapVis"> + <comment>Hadron Calorimeter Plug</comment> + <dimensions numsides="(int) CaloSides" zmin="SolenoidCoilOuterZ" rmin="MuonEndcap_rmin" rmax="HcalEndcap_rmax" /> + <layer repeat="1" vis="MuonEndcapLayerVis"> + <slice material="Iron" thickness="15.0*cm" vis="MuonEndcapAbsorberVis"/> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonEndcapSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonEndcapSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="1.0*cm" /> + <slice material="Iron" thickness="9.0*cm" vis="MuonEndcapAbsorberVis"/> + </layer> + </detector> + + + <detector id="11" name="MuonBarrel" type="PolyhedraBarrelCalorimeter2" readout="MuonBarrelHits" vis="MuonBarrelVis" calorimeterType="MUON_BARREL" gap="0.*cm" material="Steel235"> + <comment>Muon Calorimeter Barrel</comment> + <dimensions numsides="(int) MuonSides" rmin="MuonBarrel_rmin" z="MuonBarrel_zmax * 2"/> + <staves vis="MuonBarrelStavesVis"/> + + <layer repeat="1" vis="MuonBarrelLayerVis"> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="1.0*cm" /> + <slice material="Iron" thickness="5.0*cm" vis="MuonBarrelAbsorberVis"/> + </layer> + <layer repeat="1" vis="MuonBarrelLayerVis"> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="1.0*cm" /> + <slice material="Iron" thickness="20.0*cm" vis="MuonBarrelAbsorberVis"/> + </layer> + <layer repeat="(int) MuonBarrel_layers" vis="MuonBarrelLayerVis"> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="1.0*cm" /> + <slice material="Iron" thickness="10.0*cm" vis="MuonBarrelAbsorberVis"/> + </layer> + + <layer repeat="1" vis="MuonBarrelLayerVis"> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonBarrelSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="1.0*cm" /> + <slice material="Iron" thickness="20.0*cm" vis="MuonBarrelAbsorberVis"/> + </layer> + </detector> + + <detector id="12" name="MuonEndcap" type="PolyhedraEndcapCalorimeter2" readout="MuonEndcapHits" reflect="true" vis="MuonEndcapVis" calorimeterType="MUON_ENDCAP"> + <comment>Muon Calorimeter Endcaps</comment> + <dimensions numsides="(int) MuonSides" zmin="MuonEndcap_zmin" rmin="MuonEndcap_rmin" rmax="MuonEndcap_rmax" /> + <layer repeat="(int) MuonEndcap_layers" vis="MuonEndcapLayerVis"> + <slice material="Iron" thickness="10.0*cm" vis="MuonEndcapAbsorberVis"/> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonEndcapSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="RPCGasDefault" thickness="0.2*cm" sensitive="yes" vis="MuonEndcapSensorVis"/> + <slice material="PyrexGlass" thickness="0.2*cm" /> + <slice material="Air" thickness="0.35*cm" /> + <slice material="Aluminum" thickness="0.1*cm" /> + <slice material="Air" thickness="1.0*cm" /> + </layer> + </detector> + + <detector id="13" name="LumiCal" reflect="true" type="CylindricalEndcapCalorimeter" readout="LumiCalHits" vis="LumiCalVis" calorimeterType="LUMI"> + <comment>Luminosity Calorimeter</comment> + <dimensions inner_r = "LumiCal_rmin" inner_z = "LumiCal_zmin" outer_r = "LumiCal_rmax" /> + <layer repeat="20" > + <slice material = "TungstenDens24" thickness = "0.271*cm" /> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + <layer repeat="15" > + <slice material = "TungstenDens24" thickness = "0.543*cm" /> + <slice material = "Silicon" thickness = "0.032*cm" sensitive = "yes" /> + <slice material = "Copper" thickness = "0.005*cm" /> + <slice material = "Kapton" thickness = "0.030*cm" /> + <slice material = "Air" thickness = "0.033*cm" /> + </layer> + </detector> + + <detector name="LumiReadout_Forward" type="PolyconeSupport" vis="LumiCalVis"> + <comment>Readout for Luminosity Calorimeter</comment> + <material name="G10"/> + <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin"/> + <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="LumiCal_zmin+LumiCal_thickness"/> + </detector> + + <detector name="LumiReadout_Backward" type="PolyconeSupport" vis="LumiCalVis"> + <comment>Readout for Luminosity Calorimeter</comment> + <material name="G10"/> + <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmin"/> + <zplane rmin="LumiCal_rmax" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmin+LumiCal_thickness)"/> + </detector> + + <detector id="14" name="BeamCal" reflect="true" type="ForwardDetector" readout="BeamCalHits" vis="LumiCalVis" calorimeterType="BEAM"> + <comment>Beam Calorimeter</comment> + <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="BeamCal_zmin" /> + <beampipe crossing_angle="CrossingAngle" outgoing_r="OutgoingBP_radius + 0.05*cm" incoming_r="IncomingBP_radius + 0.05*cm" /> + <layer repeat="50"> + <slice material="TungstenDens24" thickness="0.271*cm" /> + <slice material="Silicon" thickness="0.032*cm" sensitive="yes" /> + <slice material="Copper" thickness="0.005*cm" /> + <slice material="Kapton" thickness="0.030*cm" /> + <slice material="Air" thickness="0.033*cm" /> + </layer> + </detector> + + <comment>Dead material and supports</comment> + <comment>Beampipe</comment> + <detector name="Beampipe" type="PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis"> + <comment>Central Be Beampipe</comment> + <material name="Beryllium"/> + <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="-CentralBeamPipe_zmax"/> + <zplane rmin="CentralBeamPipe_rmin" rmax="CentralBeamPipe_rmax" z="CentralBeamPipe_zmax" /> + </detector> + <detector name="SteelConeZbackward" type="PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis"> + <material name="Iron"/> + <zplane rmin="BeamPipe_rmax - BeamPipe_thickness" + rmax="BeamPipe_rmax" + z="-tracking_region_zmax" /> + <zplane rmin="CentralBeamPipe_rmin" + rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + z="-BeamPipe_zmin" /> + <zplane rmin="CentralBeamPipe_rmin" + rmax="CentralBeamPipe_rmax" + z="-CentralBeamPipe_zmax"/> + </detector> + <detector name="SteelConeZbackward2" type="PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis"> + <material name="Iron"/> + <zplane rmin="BeamPipe_rmax - BeamPipe_thickness" + rmax="BeamPipe_rmax" + z="-(tracking_region_zmax + 0.01*cm)" /> + <zplane rmin="BeamPipe_rmax - BeamPipe_thickness" + rmax="BeamPipe_rmax" + z="- BeamPipe_zmax" /> + <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness" + rmax="BeamPipe_rmax" + z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" /> + <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness" + rmax="LumiCal_rmin - BeamPipe_endThickness" + z="- (LumiCal_zmin - BeamPipe_endThickness)" /> + <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness" + rmax="LumiCal_rmin - BeamPipe_endThickness" + z="- (ForwardMask_zmin - BeamPipe_endThickness)" /> + </detector> + <detector name="SteelConeZforward" type="PolyconeSupport" insideTrackingVolume="true" vis="BeamPipeVis"> + <material name="Iron"/> + <zplane rmin="CentralBeamPipe_rmin" + rmax="CentralBeamPipe_rmax" + z="CentralBeamPipe_zmax"/> + <zplane rmin="CentralBeamPipe_rmin" + rmax="(BeamPipe_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + z="BeamPipe_zmin" /> + <zplane rmin="BeamPipe_rmax - BeamPipe_thickness" + rmax="BeamPipe_rmax" + z="tracking_region_zmax" /> + </detector> + <detector name="SteelConeZforward2" type="PolyconeSupport" insideTrackingVolume="false" vis="BeamPipeVis"> + <material name="Iron"/> + <zplane rmin="BeamPipe_rmax - BeamPipe_thickness" + rmax="BeamPipe_rmax" + z="tracking_region_zmax + 0.01*cm" /> + <zplane rmin="BeamPipe_rmax - BeamPipe_thickness" + rmax="BeamPipe_rmax" + z="BeamPipe_zmax" /> + <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness" + rmax="BeamPipe_rmax" + z="LumiCal_zmin - 2*BeamPipe_endThickness" /> + <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness" + rmax="LumiCal_rmin - BeamPipe_endThickness" + z="LumiCal_zmin - BeamPipe_endThickness" /> + <zplane rmin="LumiCal_rmin - 2*BeamPipe_endThickness" + rmax="LumiCal_rmin - BeamPipe_endThickness" + z="ForwardMask_zmin - BeamPipe_endThickness" /> + </detector> + + <detector name="NorthIncomingBeampipe" type="TubeSegment" vis="BeamPipeVis"> + <material name="Iron" /> + <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" /> + <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" /> + <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" /> + </detector> + + + <detector name="SouthIncomingBeampipe" type="TubeSegment" vis="BeamPipeVis"> + <material name="Iron" /> + <tubs rmin="IncomingBP_radius - IncomingBP_thickness" rmax="IncomingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" /> + <position x="-((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" /> + <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" /> + </detector> + + <detector name="NorthOutgoingBeampipe" type="TubeSegment" vis="BeamPipeVis"> + <material name="Iron" /> + <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" /> + <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="(ForwardMask_zmin + MuonEndcap_zmax)/2.0" /> + <rotation x="0.0" y="-CrossingAngle/2.0/rad" z="0.0" /> + </detector> + + <detector name="SouthOutgoingBeampipe" type="TubeSegment" vis="BeamPipeVis"> + <material name="Iron" /> + <tubs rmin="OutgoingBP_radius - OutgoingBP_thickness" rmax="OutgoingBP_radius" zhalf="(MuonEndcap_zmax - ForwardMask_zmin)/2.0" /> + <position x="((ForwardMask_zmin + MuonEndcap_zmax)/2.0*tan(CrossingAngle/rad)/2.0)" y="0" z="- (ForwardMask_zmin + MuonEndcap_zmax)/2.0" /> + <rotation x="0.0" y="CrossingAngle/2.0/rad" z="0.0" /> + </detector> + + <!-- Beam pipe liner is not needed, use thicker conical steel pipe instead + <detector name="BeamPipeLiner" type="PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters"> + <comment>BeamPipe Liner to shield bremsstrahlung photons</comment> + <material name="Titanium"/> + <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="-tracking_region_zmax" /> + <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness" z="-(CentralBeamPipe_zmax + 0.01*cm)"/> + <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="-CentralBeamPipe_zmax" /> + <zplane rmin="CentralBeamPipe_rmin - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmin" z="CentralBeamPipe_zmax" /> + <zplane rmin="CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="CentralBeamPipe_rmax - BeamPipe_thickness" z="CentralBeamPipe_zmax + 0.01*cm" /> + <zplane rmin="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" rmax="(tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax - BeamPipe_thickness" z="tracking_region_zmax" /> + </detector> + --> + + <detector name="BeamPipeVacuum" type="PolyconeSupport" insideTrackingVolume="true" vis="InvisibleNoDaughters"> + <comment>Vacuum inside beampipe</comment> + <material name="Vacuum"/> + <zplane rmin="0.*cm" + rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" + z="-tracking_region_zmax" /> + <zplane rmin="0.*cm" + rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness" + z="-BeamPipe_zmin" /> + <zplane rmin="0.*cm" + rmax="CentralBeamPipe_rmin - BeamPipeLiner_thickness" + z="BeamPipe_zmin" /> + <zplane rmin="0.*cm" + rmax="BeamPipe_rmax - BeamPipe_thickness - BeamPipeLiner_thickness" + z="tracking_region_zmax" /> + </detector> + <detector name="ForwardVacuum" type="PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters"> + <material name="Vacuum"/> + <zplane rmin="0.*cm" + rmax="BeamPipe_rmax - BeamPipe_thickness" + z="tracking_region_zmax + 0.01*cm" /> + <zplane rmin="0.*cm" + rmax="BeamPipe_rmax - BeamPipe_thickness" + z="BeamPipe_zmax" /> + <zplane rmin="0.*cm" + rmax="LumiCal_rmin - 2*BeamPipe_endThickness" + z="LumiCal_zmin - 2*BeamPipe_endThickness" /> + <zplane rmin="0.*cm" + rmax="LumiCal_rmin - 2*BeamPipe_endThickness" + z="LumiCal_zmin - BeamPipe_endThickness" /> + <zplane rmin="0.*cm" + rmax="LumiCal_rmin - 2*BeamPipe_endThickness" + z="ForwardMask_zmin - BeamPipe_endThickness" /> + </detector> + <detector name="BackwardVacuum" type="PolyconeSupport" insideTrackingVolume="false" vis="InvisibleNoDaughters"> + <material name="Vacuum"/> + <zplane rmin="0.*cm" + rmax="BeamPipe_rmax - BeamPipe_thickness" + z="- (tracking_region_zmax + 0.01*cm)" /> + <zplane rmin="0.*cm" + rmax="BeamPipe_rmax - BeamPipe_thickness" + z="- BeamPipe_zmax" /> + <zplane rmin="0.*cm" + rmax="LumiCal_rmin - 2*BeamPipe_endThickness" + z="- (LumiCal_zmin - 2*BeamPipe_endThickness)" /> + <zplane rmin="0.*cm" + rmax="LumiCal_rmin - 2*BeamPipe_endThickness" + z="- (LumiCal_zmin - BeamPipe_endThickness)" /> + <zplane rmin="0.*cm" + rmax="LumiCal_rmin - 2*BeamPipe_endThickness" + z="- (ForwardMask_zmin - BeamPipe_endThickness)" /> + </detector> + <comment>Vertex Detector Supports and Readout</comment> + <detector name="VertexBarrelSupports" type="MultiLayerTracker" vis="SupportVis" reflect="true"> + <comment>Double-walled Carbon Fiber support tube</comment> + <layer id="6" inner_r = "16.87*cm" outer_z = "89.48*cm"> + <slice material = "CarbonFiber" thickness ="VXD_CF_support"/> + </layer> + <layer id="7" inner_r = "18.42*cm" outer_z = "89.48*cm"> + <slice material = "CarbonFiber" thickness ="VXD_CF_support"/> + </layer> + </detector> + <detector name="VertexEndSupports" type="DiskTracker" reflect="true" vis="SupportVis"> + <layer id="7" inner_r = "(86.88*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "86.88*cm" outer_r = "16.87*cm"> + <slice material = "CarbonFiber" thickness = "VXD_CF_support" /> + </layer> + <layer id="8" inner_r = "(89.43*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset" inner_z = "89.43*cm" outer_r = "16.87*cm"> + <slice material = "CarbonFiber" thickness = "VXD_CF_support" /> + </layer> + </detector> + <detector name="VertexReadout" type="DiskTracker" reflect="true" vis="CableVis"> + <comment>Readout and Cabling</comment> + <layer id="1" inner_r = "VertexBarrel_r1" outer_r="VertexBarrel_r1 + 0.02*cm" inner_z= "VertexBarrel_zmax + 0.1*cm" vis="GreenVis"> + <slice material = "G10" thickness ="0.5*cm"/> + </layer> + <layer id="2" inner_r = "VertexBarrel_r2" outer_r="VertexBarrel_r2 + 0.02*cm" inner_z="VertexBarrel_zmax + 0.1*cm" vis = "BlueVis"> + <slice material = "G10" thickness ="0.5*cm"/> + </layer> + <layer id="3" inner_r = "VertexBarrel_r3" outer_r="VertexBarrel_r3 + 0.02*cm" inner_z="VertexBarrel_zmax + 0.1*cm" vis="RedVis"> + <slice material = "G10" thickness ="0.5*cm"/> + </layer> + <layer id="4" inner_r = "VertexBarrel_r4" outer_r = "VertexBarrel_r4 + 0.02*cm" inner_z= "VertexBarrel_zmax + 0.1*cm"> + <slice material = "G10" thickness ="0.5*cm"/> + </layer> + <layer id="5" inner_r = "VertexBarrel_r5" outer_r = "VertexBarrel_r5 + 0.02*cm" inner_z= "VertexBarrel_zmax + 0.1*cm"> + <slice material = "G10" thickness ="0.5*cm"/> + </layer> + <layer id="6" inner_r = "VertexBarrel_r1 - 0.1*cm" outer_r = "VertexBarrel_r2" inner_z= "VertexBarrel_zmax + 0.6*cm"> + <slice material = "Copper" thickness ="0.0057*cm"/> + </layer> + <layer id="7" inner_r = "VertexBarrel_r2 - 0.01*cm" outer_r = "VertexBarrel_r3" inner_z= "VertexBarrel_zmax + 0.6*cm"> + <slice material = "Copper" thickness ="0.0031*cm"/> + </layer> + <layer id="8" inner_r = "VertexBarrel_r3 - 0.01*cm" outer_r = "VertexBarrel_r4" inner_z= "VertexBarrel_zmax + 0.6*cm"> + <slice material = "Copper" thickness ="0.0016*cm"/> + </layer> + <layer id="9" inner_r = "VertexBarrel_r4 - 0.01*cm" outer_r = "VertexBarrel_r5" inner_z= "VertexBarrel_zmax + 0.6*cm"> + <slice material = "Copper" thickness ="0.0007*cm"/> + </layer> + <layer id="10" inner_r = "VertexEndcap_rmin1 - 0.1*cm" outer_r = "VertexEndcap_rmin1 - 0.01*cm" inner_z = "VertexEndcap_z1 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="11" inner_r = "VertexEndcap_rmin2 - 0.1*cm" outer_r = "VertexEndcap_rmin2 - 0.01*cm" inner_z = "VertexEndcap_z2 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="12" inner_r = "VertexEndcap_rmin3 - 0.1*cm" outer_r = "VertexEndcap_rmin3 - 0.01*cm" inner_z = "VertexEndcap_z3 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="13" inner_r = "VertexEndcap_rmin4 - 0.1*cm" outer_r = "VertexEndcap_rmin4 - 0.01*cm" inner_z = "VertexEndcap_z4 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="14" inner_r = "VertexEndcap_rmax + 0.01*cm" outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z1 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="15" inner_r = "VertexEndcap_rmax + 0.01*cm" outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z2 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="16" inner_r = "VertexEndcap_rmax + 0.01*cm" outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z3 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + <layer id="17" inner_r = "VertexEndcap_rmax + 0.01*cm" outer_r = "VertexEndcap_rmax + 0.5*cm" inner_z = "VertexEndcap_z4 - 0.1*cm"> + <slice material = "G10" thickness = "0.02*cm" /> + </layer> + </detector> + <detector name="VXDcableZforwardBarrel" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="Copper"/> + <zplane rmin = "(CentralBeamPipe_rmax)" + rmax = "(CentralBeamPipe_rmax + VertexCableThickness)" + z="VertexBarrel_zmax + 0.61*cm"/> + <zplane rmin = "(CentralBeamPipe_rmax)" + rmax = "(CentralBeamPipe_rmax + VertexCableThickness)" + z="CentralBeamPipe_zmax"/> + </detector> + <detector name="VXDcableZbackwardBarrel" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="Copper"/> + <zplane rmin = "(CentralBeamPipe_rmax)" + rmax = "(CentralBeamPipe_rmax + VertexCableThickness)" + z="-(VertexBarrel_zmax + 0.61*cm)"/> + <zplane rmin = "(CentralBeamPipe_rmax)" + rmax = "(CentralBeamPipe_rmax + VertexCableThickness)" + z="-CentralBeamPipe_zmax"/> + </detector> + <detector name="VXDcableZbackwardOuter" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="Copper"/> + <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" + rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" + z="-tracking_region_zmax" /> + <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm" + z="-(VertexService_zmax + 0.01*cm)"/> + </detector> + <detector name="VXDcableZbackwardInner" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="Copper"/> + <zplane rmin="CentralBeamPipe_rmax" + rmax="CentralBeamPipe_rmax + VertexCableThickness" + z="-(CentralBeamPipe_zmax)"/> + <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness" + z="-(VertexService_zmin - 0.01*cm)"/> + </detector> + <detector name="VXDcableZforwardOuter" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="Copper"/> + <zplane rmin = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax)" + rmax = "((tracking_region_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.004*cm)" + z="tracking_region_zmax" /> + <zplane rmin="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmax + 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + 0.01*cm" + z="VertexService_zmax + 0.01*cm"/> + </detector> + <detector name="VXDcableZforwardInner" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="Copper"/> + <zplane rmin="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmin - 0.01*cm - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexCableThickness" + z="VertexService_zmin - 0.01*cm"/> + <zplane rmin="CentralBeamPipe_rmax" + rmax="CentralBeamPipe_rmax + VertexCableThickness" + z="CentralBeamPipe_zmax"/> + </detector> + <detector name="VXDserviceZbackward" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="G10"/> + <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness" + z="-VertexService_zmax"/> + <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness" + z="-VertexService_zmin"/> + </detector> + <detector name="VXDserviceZforward" type="PolyconeSupport" insideTrackingVolume="true" vis="CableVis"> + <material name="G10"/> + <zplane rmin = "(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmin - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness" + z="VertexService_zmin"/> + <zplane rmin = "(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax" + rmax="(VertexService_zmax - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexServiceThickness" + z="VertexService_zmax"/> + </detector> + + <comment>Outer Tracker Supports and Readout</comment> + <detector name="TrackerBarrelSupports" type="MultiLayerTracker" reflect="true"> + <comment>Barrels</comment> + <layer id="1" inner_r="206.0*mm" outer_z="577.328*mm"> + <slice material="CarbonFiber" thickness="0.05*cm" /> + <slice material="Rohacell31_15percent" thickness="0.8075*cm" /> + <slice material="CarbonFiber" thickness="0.05*cm" /> + </layer> + <layer id="2" inner_r="456.0*mm" outer_z="749.781*mm"> + <slice material="CarbonFiber" thickness="0.05*cm" /> + <slice material="Rohacell31_15percent" thickness="0.8075*cm" /> + <slice material="CarbonFiber" thickness="0.05*cm" /> + </layer> + <layer id="3" inner_r="706.0*mm" outer_z="1013.802*mm"> + <slice material= "CarbonFiber" thickness = "0.05*cm" /> + <slice material= "Rohacell31_15percent" thickness="0.8075*cm" /> + <slice material= "CarbonFiber" thickness="0.05*cm" /> + </layer> + <layer id="4" inner_r="956.0*mm" outer_z="1272.251*mm"> + <slice material="CarbonFiber" thickness="0.05*cm" /> + <slice material="Rohacell31_15percent" thickness="0.8075*cm" /> + <slice material="CarbonFiber" thickness="0.05*cm" /> + </layer> + <layer id="5" inner_r="1206.0*mm" outer_z="1535.676*mm"> + <slice material="CarbonFiber" thickness="0.05*cm" /> + <slice material="Rohacell31_15percent" thickness="0.8075*cm" /> + <slice material="CarbonFiber" thickness="0.05*cm" /> + </layer> + </detector> + + <comment>Dished endcap disks</comment> + <detector name="SiTrackerEndcapSupport1" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="510.448*mm" rmax="510.448*mm" z="(750.417-0.001)*mm" /> + <zplane rmin="504.711*mm" rmax="510.448*mm" z="(750.919-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(777.034-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(777.535-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport2" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="510.448*mm" rmax="510.448*mm" z="750.919*mm" /> + <zplane rmin="438.449*mm" rmax="510.448*mm" z="757.218*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="777.535*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="783.834*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport3" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="510.448*mm" rmax="510.448*mm" z="(757.218+0.001)*mm" /> + <zplane rmin="504.711*mm" rmax="510.448*mm" z="(757.720+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(783.834+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(784.336+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport4" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1014.437-0.001)*mm" /> + <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1014.939-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1063.219-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1063.721-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport5" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="763.796*mm" rmax="763.796*mm" z="1014.939*mm" /> + <zplane rmin="691.797*mm" rmax="763.796*mm" z="1021.238*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="1063.721*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="1070.020*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport6" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="763.796*mm" rmax="763.796*mm" z="(1021.238+0.001)*mm" /> + <zplane rmin="758.059*mm" rmax="763.796*mm" z="(1021.740+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1070.020+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1070.522+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport7" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1272.885-0.001)*mm" /> + <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1273.387-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1343.711-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1344.213-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport8" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="1273.387*mm" /> + <zplane rmin="943.753*mm" rmax="1015.748*mm" z="1279.686*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="1344.213*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="1350.512*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport9" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(1279.686+0.001)*mm" /> + <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(1280.188+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1350.512+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1351.014+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport10" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1536.560-0.001)*mm" /> + <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1537.062-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1629.089-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1629.591-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport11" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="1537.062*mm" /> + <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="1543.361*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="1629.591*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="1635.890*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport12" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(1543.361+0.001)*mm" /> + <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(1543.863+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(1635.890+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(1636.392+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport1Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-750.417+0.001)*mm" /> + <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-750.919+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-777.034+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-777.535+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport2Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="510.448*mm" rmax="510.448*mm" z="-750.919*mm" /> + <zplane rmin="438.449*mm" rmax="510.448*mm" z="-757.218*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="-777.535*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="-783.834*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport3Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="510.448*mm" rmax="510.448*mm" z="(-757.218-0.001)*mm" /> + <zplane rmin="504.711*mm" rmax="510.448*mm" z="(-757.720-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-783.834-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-784.336-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport4Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1014.437+0.001)*mm" /> + <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1014.939+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1063.219+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1063.721+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport5Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="763.796*mm" rmax="763.796*mm" z="-1014.939*mm" /> + <zplane rmin="691.797*mm" rmax="763.796*mm" z="-1021.238*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1063.721*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1070.020*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport6Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="763.796*mm" rmax="763.796*mm" z="(-1021.238-0.001)*mm" /> + <zplane rmin="758.059*mm" rmax="763.796*mm" z="(-1021.740-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1070.020-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1070.522-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport7Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1272.885+0.001)*mm" /> + <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1273.387+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1343.711+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1344.213+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport8Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="-1273.387*mm" /> + <zplane rmin="943.753*mm" rmax="1015.748*mm" z="-1279.686*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1344.213*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1350.512*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport9Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1015.748*mm" rmax="1015.748*mm" z="(-1279.686-0.001)*mm" /> + <zplane rmin="1010.011*mm" rmax="1015.748*mm" z="(-1280.188-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1350.512-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1351.014-0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport10Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1536.560+0.001)*mm" /> + <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1537.062+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1629.089+0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1629.591+0.001)*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport11Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="Rohacell31"/> + <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="-1537.062*mm" /> + <zplane rmin="1191.810*mm" rmax="1263.808*mm" z="-1543.361*mm" /> + <zplane rmin="206.234*mm" rmax="278.187*mm" z="-1629.591*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="-1635.890*mm" /> + </detector> + <detector name="SiTrackerEndcapSupport12Reflect" type="PolyconeSupport" insideTrackingVolume="true" vis="SupportVis"> + <material name="CarbonFiber"/> + <zplane rmin="1263.808*mm" rmax="1263.808*mm" z="(-1543.361-0.001)*mm" /> + <zplane rmin="1258.071*mm" rmax="1263.808*mm" z="(-1543.863-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="211.970*mm" z="(-1635.890-0.001)*mm" /> + <zplane rmin="206.234*mm" rmax="206.234*mm" z="(-1636.392-0.001)*mm" /> + </detector> + <detector name="TrackerReadout" type="DiskTracker" reflect="true" vis="GreenVis"> + <comment>Readouts</comment> + <layer id="1" inner_r="25.7*cm" inner_z="590.402*mm" outer_r="45.6*cm"> + <slice material="G10" thickness="0.057*cm" /> + <slice material="Copper" thickness="0.0038*cm" /> + </layer> + <layer id="2" inner_r="51.0*cm" inner_z="762.854*mm" outer_r="70.6*cm"> + <slice material = "G10" thickness="0.102*cm" /> + <slice material = "Copper" thickness="0.0068*cm" /> + </layer> + <layer id="3" inner_r="76.3*cm" inner_z="1026.874*mm" outer_r="95.6*cm"> + <slice material="G10" thickness="0.108*cm" /> + <slice material="Copper" thickness="0.0072*cm" /> + </layer> + <layer id="4" inner_r="101.3*cm" inner_z="1285.322*mm" outer_r="120.6*cm"> + <slice material="G10" thickness="0.186*cm" /> + <slice material="Copper" thickness="0.0124*cm" /> + </layer> + <layer id="5" inner_r= "101.3*cm" inner_z="1610.0*mm" outer_r="120.6*cm"> + <slice material="G10" thickness="0.246*cm" /> + <slice material="Copper" thickness="0.0164*cm" /> + </layer> + </detector> + <comment>Masks and Shielding</comment> + <detector name="LumiShielding_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis"> + <material name="TungstenDens24" /> + <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax"/> + <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="LumiCal_zmax+ForwardShielding_thickness"/> + </detector> + <detector name="LumiShielding_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis"> + <material name="TungstenDens24" /> + <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-LumiCal_zmax"/> + <zplane rmin="LumiCal_rmin" rmax="LumiCalElectronics_rmax" z="-(LumiCal_zmax+ForwardShielding_thickness)"/> + </detector> + <detector name="ECalShielding_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis"> + <material name="TungstenDens24" /> + <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin"/> + <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="HcalEndcap_zmin+ForwardShielding_thickness"/> + </detector> + <detector name="ECalShielding_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis"> + <material name="TungstenDens24" /> + <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-HcalEndcap_zmin"/> + <zplane rmin="LumiCalElectronics_rmax" rmax="HcalEndcap_rmin-SupportTube_thickness-1.0*cm" z="-(HcalEndcap_zmin+ForwardShielding_thickness)"/> + </detector> + <detector name="ShieldingTube_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis"> + <material name="TungstenDens24" /> + <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm" + rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm" + z="HcalEndcap_zmin + ForwardShielding_thickness"/> + <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm" + rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm" + z="HcalEndcap_zmax"/> + </detector> + <detector name="ShieldingTube_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="TungstenShieldingVis"> + <material name="TungstenDens24" /> + <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm" + rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm" + z="-(HcalEndcap_zmin + ForwardShielding_thickness)"/> + <zplane rmin="HcalEndcap_rmin - SupportTube_thickness - ForwardShielding_thickness - 1.0*cm" + rmax="HcalEndcap_rmin - SupportTube_thickness - 1.0*cm" + z="-HcalEndcap_zmax"/> + </detector> + <detector name="SupportTube_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis"> + <material name="Steel235" /> + <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness" + rmax="HcalEndcap_rmin - SupportTube_thickness" + z="HcalEndcap_zmin"/> + <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness" + rmax="HcalEndcap_rmin - SupportTube_thickness" + z="MuonEndcap_zmax"/> + </detector> + <detector name="SupportTube_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="SupportTubeVis"> + <material name="Steel235" /> + <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness" + rmax="HcalEndcap_rmin - SupportTube_thickness" + z="-HcalEndcap_zmin"/> + <zplane rmin="HcalEndcap_rmin - 2*SupportTube_thickness" + rmax="HcalEndcap_rmin - SupportTube_thickness" + z="-MuonEndcap_zmax"/> + </detector> + <detector name="AntiSolenoid_Forward" type="PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis"> + <material name="Steel235" /> + <zplane rmin="HcalEndcap_rmin + 1.0*cm" + rmax="MuonEndcap_rmin - 1.0*cm" + z="HcalEndcap_zmax + 1.0*cm"/> + <zplane rmin="HcalEndcap_rmin + 1.0*cm" + rmax="MuonEndcap_rmin - 1.0*cm" + z="MuonEndcap_zmax"/> + </detector> + <detector name="AntiSolenoid_Backward" type="PolyconeSupport" insideTrackingVolume="false" vis="AntiSolenoidVis"> + <material name="Steel235" /> + <zplane rmin="HcalEndcap_rmin + 1.0*cm" + rmax="MuonEndcap_rmin - 1.0*cm" + z="-(HcalEndcap_zmax + 1.0*cm)"/> + <zplane rmin="HcalEndcap_rmin + 1.0*cm" + rmax="MuonEndcap_rmin - 1.0*cm" + z="-MuonEndcap_zmax"/> + </detector> + + <detector name="ForwardLowZ" type="ForwardDetector" vis="TungstenShieldingVis" reflect="true"> + <dimensions outer_r="BeamCal_rmax" inner_r="0.0*cm" inner_z="ForwardMask_zmin" /> + <beampipe crossing_angle="CrossingAngle" outgoing_r="OutgoingBP_radius + 0.05*cm" incoming_r="IncomingBP_radius + 0.05*cm" /> + <layer repeat="1"> + <slice material = "Graphite" thickness = "ForwardMask_thickness" sensitive = "no" /> + </layer> + </detector> + + <comment>Solenoid</comment> + <detector name="SolenoidCoilBarrel" type="MultiLayerTracker" insideTrackingVolume="false" reflect="true"> + <layer id="1" inner_r="SolenoidBarrelInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis"> + <slice material="Steel235" thickness="SolenoidBarrelInnerCryostatThickness" /> + <slice material="Vacuum" thickness="SolenoidBarrelInnerAirgapThickness" /> + </layer> + <layer id="2" inner_r="SolenoidBarrelConductorInnerRadius" outer_z="SolenoidCoilOuterZ" vis="SolenoidBarrelLayerVis"> + <slice material="Aluminum" thickness="SolenoidBarrelAlConductorThickness" /> + <slice material="Aluminum" thickness="SolenoidBarrelQuenchbackThickness" /> + </layer> + <layer id="3" inner_r="SolenoidBarrelOuterCryostatInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis"> + <slice material="Vacuum" thickness="SolenoidBarrelOuterAirgapThickness" /> + <slice material="Steel235" thickness="SolenoidBarrelOuterCryostatThickness" /> + </layer> + </detector> + + <detector name="SolenoidCoilEnds" type="DiskTracker" reflect="true" insideTrackingVolume="false"> + <layer id="1" inner_r="SolenoidBarrelInnerRadius" inner_z="SolenoidBarrelOuterZ" outer_r="SolenoidBarrelOuterRadius" vis="SolenoidCoilEndsVis"> + <slice material="Steel235" thickness="SolenoidEndcapCryostatThickness" /> + </layer> + </detector> + + </detectors> + + <readouts> + <readout name="SiTrackerEndcapHits"> + <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id> + </readout> + <readout name="SiTrackerBarrelHits"> + <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:20</id> + </readout> + <readout name="SiVertexBarrelHits"> + <id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id> + </readout> + <readout name="SiVertexEndcapHits"> + <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:26</id> + </readout> + <readout name="EcalBarrelHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" /> + <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="EcalEndcapHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" /> + <id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="HcalBarrelHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" /> + <id>system:8,barrel:3,module:6,layer:8,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="HcalEndcapHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" /> + <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="HcalPlugHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" /> + <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="MuonBarrelHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" /> + <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="MuonEndcapHits"> + <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" /> + <id>system:8,barrel:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id> + </readout> + <readout name="SiTrackerForwardHits"> + <id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:28</id> + </readout> + <readout name="LumiCalHits"> + <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" /> + <id>system:8,barrel:3,layer:8,slice:8,x:32:-16,y:-16</id> + </readout> + <readout name="BeamCalHits"> + <segmentation type="CartesianGridXY" grid_size_x="0.35*cm" grid_size_y="0.35*cm" /> + <id>system:8,layer:8,barrel:3,layer:8,slice:5,x:32:-16,y:-16</id> + </readout> + </readouts> + + <fields> + <field name="GlobalSolenoid" type="solenoid" + inner_field="5.0*tesla" + outer_field="-1.5*tesla" + zmax="SolenoidCoilOuterZ" + outer_radius="SolenoidalFieldRadius"> + </field> + <field name="GlobalDipole" type="DipoleMagnet" + rmax="50*cm" + zmin="0*cm" + zmax="50*cm"> + <dipole_coeff>1.0*tesla</dipole_coeff> + <dipole_coeff>0.1*tesla/pow(cm,1)</dipole_coeff> + <dipole_coeff>0.01*tesla/pow(cm,2)</dipole_coeff> + </field> + <field name="GlobalMultipole" type="MultipoleMagnet" Z="50*cm"> + <position x="30*cm" y="20*cm" z="40*cm"/> + <rotation x="1" y="0" z="0"/> + <coefficient coefficient="1.0*tesla" skew="0.1*tesla"/> + <coefficient coefficient="2.0*tesla/cm" skew="0.2*tesla/cm"/> + <coefficient coefficient="3.0*tesla/cm" skew="0.3*tesla/cm/cm"/> + <coefficient coefficient="4.0*tesla/cm" skew="0.4*tesla/cm/cm/cm"/> + <shape type="Box" dx="5*cm" dy="10*cm" dz="20*cm"/> + </field> + </fields> +</lccdd> -- GitLab