ATLAS Offline Software
SoGenericBox.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Implementation of class SoGenericBox //
9 // //
10 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11 // Initial version: December 2008 //
12 // //
14 
16 
17 #include <Inventor/SbBox.h>
18 #include <Inventor/actions/SoPickAction.h>
19 #include <Inventor/nodes/SoSeparator.h>
20 #include <Inventor/nodes/SoIndexedFaceSet.h>
21 #include <Inventor/nodes/SoIndexedLineSet.h>
22 //#include <Inventor/nodes/SoLightModel.h>
23 #include <Inventor/SoPrimitiveVertex.h>
24 #include <Inventor/C/glue/gl.h>
25 #include <Inventor/elements/SoGLCacheContextElement.h>
26 #include <iostream>
27 
28 SO_NODE_SOURCE(SoGenericBox)
29 
30 static const int SOGENERICBOX_NPOINTS=8;
31 static const int SOGENERICBOX_NFACES=6;
32 
33 static int sogenericbox_vindices[] =
34 {
35  3, 2, 1, 0,
36  4, 5, 6, 7,
37  0, 1, 5, 4,
38  1, 2, 6, 5,
39  2, 3, 7, 6,
40  3, 0, 4, 7
41 };
42 
43 static int sogenericbox_vindices_foraltrepfaces[5*SOGENERICBOX_NFACES] =
44 {
45  3, 2, 1, 0, SO_END_FACE_INDEX,
46  4, 5, 6, 7, SO_END_FACE_INDEX,
47  0, 1, 5, 4, SO_END_FACE_INDEX,
48  1, 2, 6, 5, SO_END_FACE_INDEX,
49  2, 3, 7, 6, SO_END_FACE_INDEX,
50  3, 0, 4, 7, SO_END_FACE_INDEX
51 };
52 
53 static int sogenericbox_vindices_foraltreplines[20] =
54 {
55  0, 1, 2, 3, 0, 4, 5, 6, 7, 4, SO_END_LINE_INDEX,
56  3, 7, SO_END_LINE_INDEX,
57  6, 2, SO_END_LINE_INDEX,
58  5, 1, SO_END_LINE_INDEX,
59 };
60 
61 //____________________________________________________________________
63 {
64  [[maybe_unused]] static const bool didInit = [&]() {
65  SO_NODE_INIT_CLASS(SoGenericBox, SoShape, "Shape");
66  return true;
67  }();
68 }
69 
70 //____________________________________________________________________
72  : m_points(0), m_normals(0)
73 {
74  SO_NODE_CONSTRUCTOR(SoGenericBox);
75  SO_NODE_ADD_FIELD(drawEdgeLines, (false));
76  SO_NODE_ADD_FIELD(forceEdgeLinesInBaseColour, (true));
77  SO_NODE_ADD_FIELD(alternateRep,(NULL));
78  setNodeType(EXTENSION);
79 }
80 
81 //____________________________________________________________________
83 {
84  delete [] m_normals;
85  delete [] m_points;
86 }
87 
88 //____________________________________________________________________
90 
91  if (!m_points)
93 
94  // Access the state from the action
95  SoState *state = action->getState();
96 
97  if ( action->getTypeId().isDerivedFrom(SoPickAction::getClassTypeId()) ) {
98  //For picking:
99 
100  SoPrimitiveVertex vertex;
101  beginShape(action,QUADS);
102  int *iptr = sogenericbox_vindices;
103  for (int i=0;i<SOGENERICBOX_NFACES;++i) {
104  for (int j = 0; j < 4; ++j) {
105  const int ivert = *iptr++;
106  vertex.setPoint(SbVec3f(m_points[ivert*3+0], m_points[ivert*3+1], m_points[ivert*3+2]));
107  shapeVertex(&vertex);
108  }
109  }
110  endShape();
111  } else {
112 
113  glBegin(GL_QUADS);
114  int *iptr = sogenericbox_vindices;
115  for (int i=0;i<SOGENERICBOX_NFACES;i++) {
116  glNormal3fv((const GLfloat*)&m_normals[i*3]);
117  for (int j = 0; j < 4; j++)
118  glVertex3fv((const GLfloat*)&m_points[(*iptr++)*3]);
119  }
120  glEnd();
121 
122 
123  if (drawEdgeLines.getValue()) {
124 
125  const bool disableLighting(forceEdgeLinesInBaseColour.getValue()&&glIsEnabled(GL_LIGHTING));
126  const bool transparencyOn = glIsEnabled(GL_BLEND);
127 
128  if (disableLighting) glDisable(GL_LIGHTING);
129  if (transparencyOn) glDisable(GL_BLEND);
130 
131 #define trdV(i) glVertex3fv((const GLfloat*)&m_points[i*3]);
132  glBegin(GL_LINE_STRIP);
133  trdV(0)trdV(1)trdV(2)trdV(3)trdV(0)trdV(4)trdV(5)trdV(6)trdV(7)trdV(4)
134  glEnd();
135 
136  glBegin(GL_LINES);
137  trdV(3)trdV(7)
138  trdV(6)trdV(2)
139  trdV(5)trdV(1)
140  glEnd();
141 
142  if (disableLighting) glEnable(GL_LIGHTING);
143  if (transparencyOn) glEnable(GL_BLEND);
144  }
145  }
146 
147  if (state&&state->isElementEnabled(SoGLCacheContextElement::getClassStackIndex())) {
148  //Encourage auto caching
149  SoGLCacheContextElement::shouldAutoCache(state, SoGLCacheContextElement::DO_AUTO_CACHE);
150 #if ((COIN_MAJOR_VERSION>=3)||((COIN_MAJOR_VERSION==2)&&(COIN_MINOR_VERSION>=5)))
151  SoGLCacheContextElement::incNumShapes(state);
152 #endif
153  }
154 
155 }
156 
157 //____________________________________________________________________
159 {
160  if (!m_points)
161  m_points = new float[SOGENERICBOX_NPOINTS*3];
162 }
163 
164 //____________________________________________________________________
166 {
167  setParametersForBox( 0.5, 0.5, 0.5 );
168 }
169 
170 //____________________________________________________________________
171 void SoGenericBox::computeBBox(SoAction *, SbBox3f &box, SbVec3f &center ){
172  if (!m_points)
174  box = m_bbox;
175  center = m_center;
176 }
177 
178 //____________________________________________________________________
179 void SoGenericBox::setParametersForBox( float dx, float dy, float dz,
180  float xcenter, float ycenter, float zcenter ) {
182  m_points[0*3+0] = xcenter+dx; m_points[0*3+1] = ycenter+dy; m_points[0*3+2] = zcenter-dz;
183  m_points[1*3+0] = xcenter-dx; m_points[1*3+1] = ycenter+dy; m_points[1*3+2] = zcenter-dz;
184  m_points[2*3+0] = xcenter-dx; m_points[2*3+1] = ycenter-dy; m_points[2*3+2] = zcenter-dz;
185  m_points[3*3+0] = xcenter+dx; m_points[3*3+1] = ycenter-dy; m_points[3*3+2] = zcenter-dz;
186  m_points[4*3+0] = xcenter+dx; m_points[4*3+1] = ycenter+dy; m_points[4*3+2] = zcenter+dz;
187  m_points[5*3+0] = xcenter-dx; m_points[5*3+1] = ycenter+dy; m_points[5*3+2] = zcenter+dz;
188  m_points[6*3+0] = xcenter-dx; m_points[6*3+1] = ycenter-dy; m_points[6*3+2] = zcenter+dz;
189  m_points[7*3+0] = xcenter+dx; m_points[7*3+1] = ycenter-dy; m_points[7*3+2] = zcenter+dz;
190  pointsUpdated();
191 }
192 
193 //____________________________________________________________________
195  double phiMin, double phiMax,
196  double cellDepth, double cellDistance,
197  double etasqueezefact, double phisqueezefact )
198 {
200  if (phiMax<phiMin) std::swap(phiMin,phiMax);
202 
203  if (etasqueezefact!=1.0) {
204  double etashift(0.5*(1.0-etasqueezefact)*fabs(etaMax-etaMin));
205  etaMax -= etashift;
206  etaMin += etashift;
207  }
208  if (phisqueezefact!=1.0) {
209  double phishift(0.5*(1.0-phisqueezefact)*fabs(phiMax-phiMin));
210  phiMax -= phishift;
211  phiMin += phishift;
212  }
213 
214  if (cellDistance<0) cellDistance = -cellDistance;
215  if (cellDepth<0) cellDistance = std::max(cellDistance-cellDepth,0.0);
216  double tantheta2 = tan(2*atan(exp(-etaMin)));
217  double tantheta1 = tan(2*atan(exp(-etaMax)));
218  const double cpMin(cos(phiMin));
219  const double cpMax(cos(phiMax));
220  const double spMin(sin(phiMin));
221  const double spMax(sin(phiMax));
222  if (barrel) {
223  const double rf = cellDistance;
224  const double rb = cellDistance+cellDepth;
225  const double rfdivtantheta1(rf/tantheta1);
226  const double rbdivtantheta1(rb/tantheta1);
227  const double rfdivtantheta2(rf/tantheta2);
228  const double rbdivtantheta2(rb/tantheta2);
229  m_points[0*3+0] = rf*cpMin; m_points[0*3+1] = rf*spMin; m_points[0*3+2] = rfdivtantheta1;
230  m_points[1*3+0] = rf*cpMin; m_points[1*3+1] = rf*spMin; m_points[1*3+2] = rfdivtantheta2;
231  m_points[2*3+0] = rf*cpMax; m_points[2*3+1] = rf*spMax; m_points[2*3+2] = rfdivtantheta2;
232  m_points[3*3+0] = rf*cpMax; m_points[3*3+1] = rf*spMax; m_points[3*3+2] = rfdivtantheta1;
233  m_points[4*3+0] = rb*cpMin; m_points[4*3+1] = rb*spMin; m_points[4*3+2] = rbdivtantheta1;
234  m_points[5*3+0] = rb*cpMin; m_points[5*3+1] = rb*spMin; m_points[5*3+2] = rbdivtantheta2;
235  m_points[6*3+0] = rb*cpMax; m_points[6*3+1] = rb*spMax; m_points[6*3+2] = rbdivtantheta2;
236  m_points[7*3+0] = rb*cpMax; m_points[7*3+1] = rb*spMax; m_points[7*3+2] = rbdivtantheta1;
237  } else {
238  const double eta(0.5*(etaMin+etaMax));
239  const double zf(eta>0?cellDistance:-cellDistance);
240  double zb = (zf > 0 ? zf+cellDepth: zf-cellDepth);
241  m_points[0*3+0] = zf*tantheta1*cpMin; m_points[0*3+1] = zf*tantheta1*spMin; m_points[0*3+2] = zf;
242  m_points[1*3+0] = zf*tantheta2*cpMin; m_points[1*3+1] = zf*tantheta2*spMin; m_points[1*3+2] = zf;
243  m_points[2*3+0] = zf*tantheta2*cpMax; m_points[2*3+1] = zf*tantheta2*spMax; m_points[2*3+2] = zf;
244  m_points[3*3+0] = zf*tantheta1*cpMax; m_points[3*3+1] = zf*tantheta1*spMax; m_points[3*3+2] = zf;
245  m_points[4*3+0] = zb*tantheta1*cpMin; m_points[4*3+1] = zb*tantheta1*spMin; m_points[4*3+2] = zb;
246  m_points[5*3+0] = zb*tantheta2*cpMin; m_points[5*3+1] = zb*tantheta2*spMin; m_points[5*3+2] = zb;
247  m_points[6*3+0] = zb*tantheta2*cpMax; m_points[6*3+1] = zb*tantheta2*spMax; m_points[6*3+2] = zb;
248  m_points[7*3+0] = zb*tantheta1*cpMax; m_points[7*3+1] = zb*tantheta1*spMax; m_points[7*3+2] = zb;
249  }
250 
251  pointsUpdated();
252 }
253 
254 
255 //____________________________________________________________________
257  double phiMin, double phiMax,
258  double cellDepth, double cellDistance,
259  double etasqueezefact, double phisqueezefact )
260 {
261  internalSetParametersForEtaPhiCell( true, etaMin, etaMax, phiMin, phiMax,
262  cellDepth, cellDistance, etasqueezefact, phisqueezefact );
263 }
264 
265 //____________________________________________________________________
267  double phiMin, double phiMax,
268  double cellDepth, double cellDistance,
269  double etasqueezefact, double phisqueezefact )
270 {
271  internalSetParametersForEtaPhiCell( false, etaMin, etaMax, phiMin, phiMax,
272  cellDepth, cellDistance, etasqueezefact, phisqueezefact );
273 }
274 
275 //____________________________________________________________________
276 void SoGenericBox::setParametersForTrd( float dx1, float dx2,
277  float dy1, float dy2,
278  float dz )
279 {
281  m_points[0*3+0] = dx1; m_points[0*3+1] = dy1; m_points[0*3+2] = -dz;
282  m_points[1*3+0] = -dx1; m_points[1*3+1] = dy1; m_points[1*3+2] = -dz;
283  m_points[2*3+0] = -dx1; m_points[2*3+1] = -dy1; m_points[2*3+2] = -dz;
284  m_points[3*3+0] = dx1; m_points[3*3+1] = -dy1; m_points[3*3+2] = -dz;
285  m_points[4*3+0] = dx2; m_points[4*3+1] = dy2; m_points[4*3+2] = dz;
286  m_points[5*3+0] = -dx2; m_points[5*3+1] = dy2; m_points[5*3+2] = dz;
287  m_points[6*3+0] = -dx2; m_points[6*3+1] = -dy2; m_points[6*3+2] = dz;
288  m_points[7*3+0] = dx2; m_points[7*3+1] = -dy2; m_points[7*3+2] = dz;
289  pointsUpdated();
290 }
291 
292 //____________________________________________________________________
293 void SoGenericBox::setParametersForTrapezoid( float dz, float theta, float phi, float dy1,
294  float dx1, float dx2, float dy2, float dx3,
295  float dx4, float alp1, float alp2 )
296 
297 {
299  const float tanTheta(tan(theta));
300  const float TthetaCphi = tanTheta*cos(phi);
301  const float TthetaSphi = tanTheta*sin(phi);
302  const float Talp1 = tan(alp1);
303  const float Talp2 = tan(alp2);
304 
305  m_points[0*3+0] = dx2+dy1*Talp1;
306  m_points[0*3+1] = dy1;
307  m_points[0*3+2] = -dz;
308 
309  m_points[1*3+0] = -dx2+dy1*Talp1;
310  m_points[1*3+1] = dy1;
311  m_points[1*3+2] = -dz;
312 
313  m_points[2*3+0] = -dx1-dy1*Talp1;
314  m_points[2*3+1] = -dy1;
315  m_points[2*3+2] = -dz;
316 
317  m_points[3*3+0] = dx1-dy1*Talp1;
318  m_points[3*3+1] = -dy1;
319  m_points[3*3+2] = -dz;
320 
321  m_points[4*3+0] = dx4+dy2*Talp2;
322  m_points[4*3+1] = dy2;
323  m_points[4*3+2] = dz;
324 
325  m_points[5*3+0] = -dx4+dy2*Talp2;
326  m_points[5*3+1] = dy2;
327  m_points[5*3+2] = dz;
328 
329  m_points[6*3+0] = -dx3-dy2*Talp2;
330  m_points[6*3+1] = -dy2;
331  m_points[6*3+2] = dz;
332 
333  m_points[7*3+0] = dx3-dy2*Talp2;
334  m_points[7*3+1] = -dy2;
335  m_points[7*3+2] = dz;
336 
337  const float dzTthetaCphi(dz*TthetaCphi);
338  const float dzTthetaSphi(dz*TthetaSphi);
339  int i;
340  for (i=0;i<4;i++) {
341  m_points[i*3+0] -= dzTthetaCphi;
342  m_points[i*3+1] -= dzTthetaSphi;
343  }
344  for (i=4;i<8;i++) {
345  m_points[i*3+0] += dzTthetaCphi;
346  m_points[i*3+1] += dzTthetaSphi;
347  }
348  pointsUpdated();
349 }
350 
351 
352 //____________________________________________________________________
353 void SoGenericBox::setGenericParameters( float x0, float y0, float z0,
354  float x1, float y1, float z1,
355  float x2, float y2, float z2,
356  float x3, float y3, float z3,
357  float x4, float y4, float z4,
358  float x5, float y5, float z5,
359  float x6, float y6, float z6,
360  float x7, float y7, float z7 )
361 {
363  m_points[0*3+0] = x0; m_points[0*3+1] = y0; m_points[0*3+2] = z0;
364  m_points[1*3+0] = x1; m_points[1*3+1] = y1; m_points[1*3+2] = z1;
365  m_points[2*3+0] = x2; m_points[2*3+1] = y2; m_points[2*3+2] = z2;
366  m_points[3*3+0] = x3; m_points[3*3+1] = y3; m_points[3*3+2] = z3;
367  m_points[4*3+0] = x4; m_points[4*3+1] = y4; m_points[4*3+2] = z4;
368  m_points[5*3+0] = x5; m_points[5*3+1] = y5; m_points[5*3+2] = z5;
369  m_points[6*3+0] = x6; m_points[6*3+1] = y6; m_points[6*3+2] = z6;
370  m_points[7*3+0] = x7; m_points[7*3+1] = y7; m_points[7*3+2] = z7;
371  pointsUpdated();
372 }
373 
374 //____________________________________________________________________
376 {
377  //Normals:
378  if (!m_normals)
379  m_normals = new float[SOGENERICBOX_NFACES*3];
380  for (int iface = 0; iface < SOGENERICBOX_NFACES; ++iface) {
381  const int index_v1 = sogenericbox_vindices[iface*4+0];
382  const int index_v2 = sogenericbox_vindices[iface*4+1];
383  const int index_v3 = sogenericbox_vindices[iface*4+2];
384 
385  //Figure out normal: (v2-v1)(x)(v3-v1)
386  const double v1X(m_points[index_v1*3+0]), v1Y(m_points[index_v1*3+1]), v1Z(m_points[index_v1*3+2]);
387  const double edge1X(m_points[index_v2*3+0]-v1X), edge1Y(m_points[index_v2*3+1]-v1Y), edge1Z(m_points[index_v2*3+2]-v1Z);
388  const double edge2X(m_points[index_v3*3+0]-v1X), edge2Y(m_points[index_v3*3+1]-v1Y), edge2Z(m_points[index_v3*3+2]-v1Z);
389 
390  double nx(edge1Y*edge2Z-edge1Z*edge2Y);
391  double ny(edge1Z*edge2X-edge1X*edge2Z);
392  double nz(edge1X*edge2Y-edge1Y*edge2X);
393  double nl(nx*nx+ny*ny+nz*nz);
394  if (nl<=0) {
395  std::cout<<"SoGenericBox::Error Could not calculate normal due to degenerate face edge"<<std::endl;
396  nx=1.0;ny=0.0;nz=0.0;nl=1;
397  //Fixme: We should try to use index_v4 instead of one vertex,
398  //to get the normal (this would allow faces where one edge was
399  //collapsed).
400  //const int index_v4 = sogenericbox_vindices[iface*4+3];
401  }
402  const double s(1.0/sqrt(nl));
403  m_normals[iface*3+0] = nx*s;
404  m_normals[iface*3+1] = ny*s;
405  m_normals[iface*3+2] = nz*s;
406  }
407 
408  //BBox:
409  float xmin(1.0e99), ymin(1.0e99), zmin(1.0e99);//fixme: -> inf
410  float xmax(-1.0e99), ymax(-1.0e99), zmax(-1.0e99);
411  for (int i=0;i<SOGENERICBOX_NPOINTS;++i) {
412  const float x(m_points[i*3+0]), y(m_points[i*3+1]), z(m_points[i*3+2]);
416  }
417  m_bbox.setBounds (xmin, ymin, zmin, xmax, ymax, zmax);
418  m_center.setValue(0.5*(xmin+xmax),0.5*(ymin+ymax),0.5*(zmin+zmax));
419 
420  drawEdgeLines.touch();
421 }
422 
423 
425 // Stuff for alternate rep //
427 
428 //____________________________________________________________________
430 {
431  if (!m_points)
433  if (alternateRep.getValue())
435  SoSeparator * sep = new SoSeparator;
436 
437  //Vertice coordinates:
438  SoVertexProperty *vertices = new SoVertexProperty();
439  for (int i=0;i<SOGENERICBOX_NPOINTS;++i)
440  vertices->vertex.set1Value ( i, m_points[i*3+0],m_points[i*3+1],m_points[i*3+2] );
441  SoIndexedFaceSet * faceset = new SoIndexedFaceSet;
442  faceset->coordIndex.setValues(0,5*6, sogenericbox_vindices_foraltrepfaces);
443  faceset->vertexProperty = vertices;
444  sep->addChild(faceset);
445 
446  if (drawEdgeLines.getValue()) {
447 //Disable the lightmodel now since we in any case gets baselightning with the lineset defined this way...
448 // if (forceEdgeLinesInBaseColour.getValue()) {
449 // SoLightModel * lm = new SoLightModel;//Fixme: share
450 // lm->model = SoLightModel::BASE_COLOR;
451 // sep->addChild(lm);
452 // }
453  SoIndexedLineSet * lineset = new SoIndexedLineSet;
454  lineset->coordIndex.setValues(0,20,sogenericbox_vindices_foraltreplines);
455  lineset->vertexProperty = vertices;
456  sep->addChild(lineset);
457  }
458 
459  alternateRep.setValue(sep);
460 
461 }
462 
463 //____________________________________________________________________
465 {
466  alternateRep.setValue(NULL);
467  //Hmm... no ref/unref??
468 }
SoGenericBox::m_bbox
SbBox3f m_bbox
Definition: SoGenericBox.h:112
SoGenericBox::setParametersForTrapezoid
void setParametersForTrapezoid(float dz, float theta, float phi, float dy1, float dx1, float dx2, float dy2, float dx3, float dx4, float alp1, float alp2)
Definition: SoGenericBox.cxx:293
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
SoGenericBox::ensurePointsAllocated
void ensurePointsAllocated()
Definition: SoGenericBox.cxx:158
ymin
double ymin
Definition: listroot.cxx:63
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
max
#define max(a, b)
Definition: cfImp.cxx:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
WriteCellNoiseToCool.rb
rb
Definition: WriteCellNoiseToCool.py:229
SoGenericBox::m_normals
float * m_normals
Definition: SoGenericBox.h:111
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
PixelAthClusterMonAlgCfg.zmin
zmin
Definition: PixelAthClusterMonAlgCfg.py:176
SoGenericBox::computeBBox
virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f &center)
Definition: SoGenericBox.cxx:171
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
python.HLT.MinBias.MinBiasMenuSequences.zf
zf
Definition: MinBiasMenuSequences.py:187
SoGenericBox::setParametersForEndCapEtaPhiCell
void setParametersForEndCapEtaPhiCell(double etaMin, double etaMax, double phiMin, double phiMax, double cellDepth, double cellDistance, double etasqueezefact=1.0, double phisqueezefact=1.0)
Definition: SoGenericBox.cxx:266
SoGenericBox::setParametersForBarrelEtaPhiCell
void setParametersForBarrelEtaPhiCell(double etaMin, double etaMax, double phiMin, double phiMax, double cellDepth, double cellDistance, double etasqueezefact=1.0, double phisqueezefact=1.0)
Definition: SoGenericBox.cxx:256
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
x
#define x
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
SoGenericBox::initClass
static void initClass()
Definition: SoGenericBox.cxx:62
lumiFormat.i
int i
Definition: lumiFormat.py:92
xmin
double xmin
Definition: listroot.cxx:60
z
#define z
SoGenericBox::internalSetParametersForEtaPhiCell
void internalSetParametersForEtaPhiCell(bool barrel, double etaMin, double etaMax, double phiMin, double phiMax, double cellDepth, double cellDistance, double etasqueezefact, double phisqueezefact)
Definition: SoGenericBox.cxx:194
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
SoGenericBox::~SoGenericBox
virtual ~SoGenericBox()
Definition: SoGenericBox.cxx:82
PixelAthClusterMonAlgCfg.zmax
zmax
Definition: PixelAthClusterMonAlgCfg.py:176
SoGenericBox::setupDefaultPoints
void setupDefaultPoints()
Definition: SoGenericBox.cxx:165
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
WriteCalibToCool.swap
swap
Definition: WriteCalibToCool.py:94
SoGenericBox::setParametersForBox
void setParametersForBox(float dx, float dy, float dz, float xcenter=0.0, float ycenter=0.0, float zcenter=0.0)
Definition: SoGenericBox.cxx:179
SoGenericBox::generatePrimitives
virtual void generatePrimitives(SoAction *action)
Definition: SoGenericBox.cxx:89
min
#define min(a, b)
Definition: cfImp.cxx:40
grepfile.sep
sep
Definition: grepfile.py:38
SoGenericBox::setGenericParameters
void setGenericParameters(float x0, float y0, float z0, float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4, float x5, float y5, float z5, float x6, float y6, float z6, float x7, float y7, float z7)
Definition: SoGenericBox.cxx:353
SoGenericBox::clearAlternateRep
virtual void clearAlternateRep()
Definition: SoGenericBox.cxx:464
SoGenericBox::alternateRep
SoSFNode alternateRep
Definition: SoGenericBox.h:35
SoGenericBox::drawEdgeLines
SoSFBool drawEdgeLines
Definition: SoGenericBox.h:33
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
trdV
#define trdV(i)
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
SoGenericBox::generateAlternateRep
virtual void generateAlternateRep()
Definition: SoGenericBox.cxx:429
LArCellBinning.etaMin
etaMin
Definition: LArCellBinning.py:84
y
#define y
python.CaloScaleNoiseConfig.action
action
Definition: CaloScaleNoiseConfig.py:77
SoGenericBox::forceEdgeLinesInBaseColour
SoSFBool forceEdgeLinesInBaseColour
Definition: SoGenericBox.h:34
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
SoGenericBox
Definition: SoGenericBox.h:26
DetectorZone::barrel
@ barrel
xmax
double xmax
Definition: listroot.cxx:61
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
SoGenericBox::SoGenericBox
SoGenericBox()
Definition: SoGenericBox.cxx:71
SoGenericBox::m_points
float * m_points
Definition: SoGenericBox.h:110
SoGenericBox.h
SoGenericBox::m_center
SbVec3f m_center
Definition: SoGenericBox.h:113
ymax
double ymax
Definition: listroot.cxx:64
SoGenericBox::pointsUpdated
void pointsUpdated()
Definition: SoGenericBox.cxx:375
SoGenericBox::setParametersForTrd
void setParametersForTrd(float dx1, float dx2, float dy1, float dy2, float dz)
Definition: SoGenericBox.cxx:276