diff --git a/DDCore/src/plugins/ShapePlugins.cpp b/DDCore/src/plugins/ShapePlugins.cpp index 9234479049ebb0cecf74bbb26557c62a86a9dead..29dd992f60bb680d2a14619dd228d122634eddc3 100644 --- a/DDCore/src/plugins/ShapePlugins.cpp +++ b/DDCore/src/plugins/ShapePlugins.cpp @@ -62,7 +62,7 @@ static Handle<TObject> create_Polycone(Detector&, xml_h element) { double start = e.startphi(0e0), deltaphi = e.deltaphi(2*M_PI); for(xml_coll_t c(e,_U(zplane)); c; ++c, ++num) { xml_comp_t plane(c); - rmin.emplace_back(plane.rmin()); + rmin.emplace_back(plane.rmin(0.0)); rmax.emplace_back(plane.rmax()); z.emplace_back(plane.z()); } @@ -82,7 +82,7 @@ static Handle<TObject> create_ConeSegment(Detector&, xml_h element) { xml_attr_t bphi = element.attr_nothrow(_U(phi2)); if ( aphi || bphi ) { double phi1 = e.phi1(0.0); - double phi2 = e.phi2(2*M_PI) - phi1; + double phi2 = e.phi2(2*M_PI); /// Old naming: angles from [phi1,phi2] solid = ConeSegment(e.dz(),e.rmin1(0.0),e.rmax1(),e.rmin2(0.0),e.rmax2(),phi1,phi2); } @@ -90,7 +90,7 @@ static Handle<TObject> create_ConeSegment(Detector&, xml_h element) { double start_phi = e.startphi(0.0); double delta_phi = e.deltaphi(2*M_PI); /// New naming: angles from [startphi,startphi+deltaphi] - solid = ConeSegment(e.dz(),e.rmin1(0.0),e.rmax1(),e.rmin2(0.0),e.rmax2(),start_phi,delta_phi); + solid = ConeSegment(e.dz(),e.rmin1(0.0),e.rmax1(),e.rmin2(0.0),e.rmax2(),start_phi,start_phi+delta_phi); } if ( e.hasAttr(_U(name)) ) solid->SetName(e.attr<string>(_U(name)).c_str()); return solid; @@ -231,7 +231,8 @@ DECLARE_XML_SHAPE(Trd2__shape_constructor,create_Trd2) static Handle<TObject> create_Torus(Detector&, xml_h element) { xml_dim_t e(element); - Solid solid = Torus(e.r(),e.rmin(),e.rmax(),e.phi(M_PI),e.deltaphi(2.*M_PI)); + double startphi = e.hasAttr(_U(phi)) ? e.phi() : e.startphi(M_PI); + Solid solid = Torus(e.r(), e.rmin(), e.rmax(), phi, e.deltaphi(2.*M_PI)); if ( e.hasAttr(_U(name)) ) solid->SetName(e.attr<string>(_U(name)).c_str()); return solid; }