38 if(shape->typeID() == GeoBox::getClassTypeID() ) {
39 const GeoBox* theBox =
dynamic_cast<const GeoBox*
> (shape);
42 out <<
" =========> Box:";
43 out <<
" X = "+QString::number(theBox->getXHalfLength()/CLHEP::mm)+
" mm";
44 out <<
" Y = "+QString::number(theBox->getYHalfLength()/CLHEP::mm)+
" mm";
45 out <<
" Z = "+QString::number(theBox->getZHalfLength()/CLHEP::mm)+
" mm";
47 }
else if(shape->typeID() == GeoTube::getClassTypeID() ) {
48 const GeoTube* theTube =
dynamic_cast<const GeoTube*
> (shape);
51 out <<
" =========> Tube:";
52 out <<
" RMin = "+QString::number(theTube->getRMin()/CLHEP::mm)+
" mm";
53 out <<
" RMax = "+QString::number(theTube->getRMax()/CLHEP::mm)+
" mm";
54 out <<
" DZ = "+QString::number(theTube->getZHalfLength()/CLHEP::mm)+
" mm";
56 }
else if(shape->typeID() == GeoTubs::getClassTypeID() ) {
57 const GeoTubs* theTubs =
dynamic_cast<const GeoTubs*
> (shape);
60 out <<
" =========> Tubs:";
61 out <<
" RMin = "+QString::number(theTubs->getRMin()/CLHEP::mm)+
" mm";
62 out <<
" RMax = "+QString::number(theTubs->getRMax()/CLHEP::mm)+
" mm";
63 out <<
" DZ = "+QString::number(theTubs->getZHalfLength()/CLHEP::mm)+
" mm";
64 out <<
" SPhi = "+QString::number(theTubs->getSPhi());
65 out <<
" DPhi = "+QString::number(theTubs->getDPhi());
67 }
else if(shape->typeID() == GeoTrd::getClassTypeID() ) {
68 const GeoTrd* theTrd =
dynamic_cast<const GeoTrd*
> (shape);
71 out <<
" =========> Trd:";
72 out <<
" X1 = "+QString::number(theTrd->getXHalfLength1()/CLHEP::mm)+
" mm";
73 out <<
" X2 = "+QString::number(theTrd->getXHalfLength2()/CLHEP::mm)+
" mm";
74 out <<
" Y1 = "+QString::number(theTrd->getYHalfLength1()/CLHEP::mm)+
" mm";
75 out <<
" Y2 = "+QString::number(theTrd->getYHalfLength2()/CLHEP::mm)+
" mm";
76 out <<
" Z = "+QString::number(theTrd->getZHalfLength()/CLHEP::mm)+
" mm";
78 }
else if(shape->typeID() == GeoPcon::getClassTypeID()) {
79 const GeoPcon* thePcon =
dynamic_cast<const GeoPcon*
>(shape);
82 out <<
" =========> Pcon:";
83 out<<
" Start phi = "+QString::number(thePcon->getSPhi())+
", Delta phi = "+QString::number(thePcon->getDPhi());
85 out <<
" Plane "+QString::number(
index);
86 out <<
" -> RMin = "+QString::number(thePcon->getRMinPlane(
index)/CLHEP::mm)+
" mm";
87 out <<
" -> RMax = "+QString::number(thePcon->getRMaxPlane(
index)/CLHEP::mm)+
" mm";
88 out <<
" -> Z = "+QString::number(thePcon->getZPlane(
index)/CLHEP::mm)+
" mm";
91 }
else if(shape->typeID() == GeoCons::getClassTypeID()) {
92 const GeoCons* theCons =
dynamic_cast<const GeoCons*
>(shape);
95 out <<
" =========> Cons:";
96 out <<
" RMin1 = "<<QString::number(theCons->getRMin1()/CLHEP::mm)+
" mm";
97 out <<
" RMin2 = "<<QString::number(theCons->getRMin2()/CLHEP::mm)+
" mm";
98 out <<
" RMax1 = "<<QString::number(theCons->getRMax1()/CLHEP::mm)+
" mm";
99 out <<
" RMax2 = "<<QString::number(theCons->getRMax2()/CLHEP::mm)+
" mm";
100 out <<
" DZ = "<<QString::number(theCons->getDZ()/CLHEP::mm)+
" mm";
101 out <<
" SPhi = "+QString::number(theCons->getSPhi());
102 out <<
" DPhi = "+QString::number(theCons->getDPhi());
104 }
else if(shape->typeID() == GeoPara::getClassTypeID()) {
105 const GeoPara* thePara =
dynamic_cast<const GeoPara*
>(shape);
108 out <<
" =========> Para:";
109 out <<
" X = "+QString::number(thePara->getXHalfLength()/CLHEP::mm)+
" mm";
110 out <<
" Y = "+QString::number(thePara->getYHalfLength()/CLHEP::mm)+
" mm";
111 out <<
" Z = "+QString::number(thePara->getZHalfLength()/CLHEP::mm)+
" mm";
112 out <<
" Alpha = "+QString::number(thePara->getAlpha());
113 out <<
" Theta = "+QString::number(thePara->getTheta());
114 out <<
" Phi = "+QString::number(thePara->getPhi());
116 }
else if(shape->typeID() == GeoPgon::getClassTypeID()) {
117 const GeoPgon* thePgon =
dynamic_cast<const GeoPgon*
>(shape);
120 out <<
" =========> Pgon:";
123 out <<
" Plane "+QString::number(
index);
124 out <<
": -> RMin = "+QString::number(thePgon->getRMinPlane(
index)/CLHEP::mm)+
" mm";
125 out <<
": -> RMax = "+QString::number(thePgon->getRMaxPlane(
index)/CLHEP::mm)+
" mm";
126 out <<
" -> Z = "+QString::number(thePgon->getZPlane(
index)/CLHEP::mm)+
" mm";
129 }
else if(shape->typeID() == GeoTrap::getClassTypeID()) {
130 const GeoTrap* theTrap =
dynamic_cast<const GeoTrap*
>(shape);
133 out <<
" =========> Trap:";
134 out <<
" DZ = "+QString::number(theTrap->getZHalfLength()/CLHEP::mm)+
" mm";
135 out <<
" Theta = "+QString::number(theTrap->getTheta());
136 out <<
" Phi = "+QString::number(theTrap->getPhi());
137 out <<
" Dydzn = "+QString::number(theTrap->getDydzn()/CLHEP::mm)+
" mm";
138 out <<
" Dxdyndzn = "+QString::number(theTrap->getDxdyndzn()/CLHEP::mm)+
" mm";
139 out <<
" Dxdypdzn = "+QString::number(theTrap->getDxdypdzn()/CLHEP::mm)+
" mm";
140 out <<
" Angleydzn = "+QString::number(theTrap->getAngleydzn());
141 out <<
" Dydzp = "+QString::number(theTrap->getDydzp()/CLHEP::mm)+
" mm";
142 out <<
" Dxdyndzp = "+QString::number(theTrap->getDxdyndzp()/CLHEP::mm)+
" mm";
143 out <<
" Dxdypdzp = "+QString::number(theTrap->getDxdypdzp()/CLHEP::mm)+
" mm";
144 out <<
" Angleydzp = "+QString::number(theTrap->getAngleydzp());
148 else if (shape->typeID() == GeoShapeShift::getClassTypeID() ) {
149 const GeoShapeShift* theShift =
dynamic_cast<const GeoShapeShift*
>(shape);
152 out <<
" =========> GeoShapeShift:";
155 float translation_x, translation_y, translation_z, rotaxis_x, rotaxis_y, rotaxis_z, rotangle_radians;
157 translation_x, translation_y, translation_z,
158 rotaxis_x, rotaxis_y, rotaxis_z, rotangle_radians );
159 out <<
" Information about contained transformation:";
160 out <<
"===> Translation:";
161 out <<
" x = "+QString::number(translation_x/CLHEP::mm)+
" mm";
162 out <<
" y = "+QString::number(translation_y/CLHEP::mm)+
" mm";
163 out <<
" z = "+QString::number(translation_z/CLHEP::mm)+
" mm";
164 out <<
"===> Rotation:";
165 out <<
" axis x = "+QString::number(rotaxis_x);
166 out <<
" axis y = "+QString::number(rotaxis_y);
167 out <<
" axis z = "+QString::number(rotaxis_z);
168 out <<
" angle = "+QString::number(rotangle_radians*180.0/
M_PI)+
" deg";
170 out <<
" Information about contained GeoShape:";
175 }
else if (shape->typeID() == GeoShapeUnion::getClassTypeID() ) {
176 const GeoShapeUnion* theUnion =
dynamic_cast<const GeoShapeUnion*
>(shape);
179 out <<
" =========> GeoShapeUnion:";
180 out <<
" First operand:";
183 out <<
" Second operand:";
187 }
else if (shape->typeID() == GeoShapeIntersection::getClassTypeID() ) {
188 const GeoShapeIntersection* theIntersection =
dynamic_cast<const GeoShapeIntersection*
>(shape);
189 assert(theIntersection);
190 if (theIntersection){
191 out <<
" =========> GeoShapeIntersection:";
192 out <<
" First operand:";
195 out <<
" Second operand:";
199 }
else if (shape->typeID() == GeoShapeSubtraction::getClassTypeID() ) {
200 const GeoShapeSubtraction* theSubtraction =
dynamic_cast<const GeoShapeSubtraction*
>(shape);
201 assert(theSubtraction);
203 out <<
" =========> GeoShapeSubtraction:";
204 out <<
" First operand:";
207 out <<
" Second operand:";
211 }
else if (shape->typeID() == GeoGenericTrap::getClassTypeID() ) {
212 const GeoGenericTrap* theGenericTrap =
dynamic_cast<const GeoGenericTrap*
>(shape);
213 assert(theGenericTrap);
215 out <<
" =========> GenericTrap:";
216 out <<
" halfZlength = "+QString::number(theGenericTrap->getZHalfLength()/CLHEP::mm)+
" mm";
217 std::vector<CLHEP::Hep2Vector> vertices;
218 vertices.reserve(theGenericTrap->getVertices().size());
219 for(
const auto& geoVertex : theGenericTrap->getVertices()) {
220 vertices.push_back(CLHEP::Hep2Vector(geoVertex.x(),geoVertex.y()));
223 out <<
"==> First 4 vertices at - hz/2";
224 out <<
"(Ax,Ay) = ( "+QString::number(vertices[0].
x()/CLHEP::mm)+
" , "+QString::number(vertices[0].
y()/CLHEP::mm)+
" ) mm";
225 out <<
"(Bx,By) = ( "+QString::number(vertices[1].
x()/CLHEP::mm)+
" , "+QString::number(vertices[1].
y()/CLHEP::mm)+
" ) mm";
226 out <<
"(Cx,Cy) = ( "+QString::number(vertices[2].
x()/CLHEP::mm)+
" , "+QString::number(vertices[2].
y()/CLHEP::mm)+
" ) mm";
227 out <<
"(Dx,Dy) = ( "+QString::number(vertices[3].
x()/CLHEP::mm)+
" , "+QString::number(vertices[3].
y()/CLHEP::mm)+
" ) mm";
228 out <<
"==> Second 4 vertices at +hz/2";
229 out <<
"(Ax,Ay) = ( "+QString::number(vertices[4].
x()/CLHEP::mm)+
" , "+QString::number(vertices[4].
y()/CLHEP::mm)+
" ) mm";
230 out <<
"(Bx,By) = ( "+QString::number(vertices[5].
x()/CLHEP::mm)+
" , "+QString::number(vertices[5].
y()/CLHEP::mm)+
" ) mm";
231 out <<
"(Cx,Cy) = ( "+QString::number(vertices[6].
x()/CLHEP::mm)+
" , "+QString::number(vertices[6].
y()/CLHEP::mm)+
" ) mm";
232 out <<
"(Dx,Dy) = ( "+QString::number(vertices[7].
x()/CLHEP::mm)+
" , "+QString::number(vertices[7].
y()/CLHEP::mm)+
" ) mm";
235 out <<
" =========> Unknown shape...";