|
ATLAS Offline Software
|
Go to the documentation of this file.
10 #include <Inventor/nodes/SoMaterial.h>
11 #include <Inventor/nodes/SoSeparator.h>
12 #include <Inventor/nodes/SoTranslation.h>
13 #include <Inventor/nodes/SoPickStyle.h>
17 SoSeparator * attachsep,
36 SoSeparator * attachsep,
55 SoSeparator * attachsep,
111 InDetProjFlags::InDetProjPartsFlags
parts;
156 double barrel_inner_radius,
157 double barrel_outer_radius,
158 double barrel_posneg_z,
159 double endcap_surface_z,
160 double endcap_surface_length,
161 double endcap_inner_radius,
162 double endcap_outer_radius,
163 double endcap_zasr_disttobarrelcyl,
164 double endcap_zasr_squeezefact,
223 foreach(SoNode*
n,
l)
246 InDetProjFlags::InDetProjPartsFlags changedparts(
m_d->
parts ^ newparts);
354 sep =
new SoSeparator();
357 SoTranslation *
t =
new SoTranslation;
358 t->translation.setValue(0.0
f,0.0
f,zpos);
361 sep->addChild(shape);
376 theclass->messageVerbose(
"barrelCylShape");
377 if (!barrelcylshape) {
380 disc->
pRMin = barrel_inner_radius;
381 disc->
pRMax = barrel_outer_radius;
382 disc->
pDz = 0.5*surfacethickness;
386 barrelcylshape = disc;
387 barrelcylshape->ref();
389 return barrelcylshape;
395 theclass->messageVerbose(
"endcapInnerShape");
396 if (!endcapinnershape) {
399 cyl->
pRMax = endcap_inner_radius;
400 cyl->
pRMin = endcap_inner_radius-surfacethickness;
401 cyl->
pDz = 0.5*endcap_surface_length;
405 endcapinnershape = cyl;
406 endcapinnershape->ref();
408 return endcapinnershape;
414 theclass->messageVerbose(
"endcapOuterShape");
415 if (!endcapoutershape) {
418 cyl->
pRMax = endcap_outer_radius;
419 cyl->
pRMin = endcap_outer_radius-surfacethickness;
420 cyl->
pDz = 0.5*endcap_surface_length;
424 endcapoutershape = cyl;
425 endcapoutershape->ref();
427 return endcapoutershape;
433 theclass->messageVerbose(
"endcapZAsRCylShape");
434 if (!endcapzasrcylshape) {
437 double rmin = barrel_outer_radius+endcap_zasr_disttobarrelcyl;
439 disc->
pRMax = rmin + endcap_surface_length/endcap_zasr_squeezefact;
440 disc->
pDz = 0.5*surfacethickness;
444 endcapzasrcylshape = disc;
445 endcapzasrcylshape->ref();
447 return endcapzasrcylshape;
454 theclass->messageVerbose(
"ensureDetached");
457 if (
sep->findChild(
s)>-1)
465 theclass->messageVerbose(
"ensureAttached");
469 sep =
new SoSeparator;
471 SoPickStyle *pickStyle =
new SoPickStyle;
472 pickStyle->style=SoPickStyle::UNPICKABLE;
473 sep->addChild(pickStyle);
476 attachsep->addChild(
sep);
480 theclass->messageVerbose(
"ensureAttached done");
static ProjectionSurfacesHelper * createPixelHelper(SoMaterial *, SoSeparator *attachsep, QObject *parent=0, IVP1System *sys=0)
SoSeparator * sep_endcap_outer_pos
SoShape * barrelCylShape()
static double pixel_endcap_zasr_disttobarrelcyl()
static double sct_endcap_surface_z()
static ProjectionSurfacesHelper * createSCTHelper(SoMaterial *, SoSeparator *attachsep, QObject *parent=0, IVP1System *sys=0)
void ensureAttached(SoSeparator *)
void setSurfaces(InDetProjFlags::InDetProjPartsFlags)
double barrel_inner_radius
static double trt_endcap_outer_radius()
double endcap_zasr_squeezefact
static double trt_endcap_surface_z()
SoSeparator * sep_endcap_zasr_central
SoSeparator * sep_barrel_neg
static double pixel_barrel_posneg_z()
SoShape * endcapZAsRCylShape()
static double sct_barrel_posneg_z()
SoTubs - Inventor version of the G4Tubs Geant Geometry entity.
void ensureDetached(SoSeparator *)
SoSeparator * sep_barrel_pos
static double pixel_barrel_outer_radius()
SoSeparator * sep_barrel_central
void messageVerbose(const QString &) const
static double sct_barrel_outer_radius()
InDetProjFlags::InDetProjPartsFlags shownParts() const
static double trt_barrel_inner_radius()
double endcap_zasr_disttobarrelcyl
ProjectionSurfacesHelper(double surfacethickness, double barrel_inner_radius, double barrel_outer_radius, double barrel_posneg_z, double endcap_surface_z, double endcap_surface_length, double endcap_inner_radius, double endcap_outer_radius, double endcap_zasr_disttobarrelcyl, double endcap_zasr_squeezefact, SoMaterial *, SoSeparator *attachsep, QObject *parent, IVP1System *sys)
SoSeparator * sep_endcap_zasr_neg
static double sct_barrel_inner_radius()
SoShape * endcapinnershape
static double trt_barrel_posneg_z()
SoSeparator * sep_endcap_zasr_pos
static double trt_endcap_zasr_squeezefact()
SoSeparator * sep_endcap_inner_pos
static double sct_endcap_outer_radius()
double barrel_outer_radius
def save(self, fileName="./columbo.out")
static double pixel_endcap_zasr_squeezefact()
static double surfacethickness()
SoSeparator * sep_endcap_inner_neg
static double sct_endcap_inner_radius()
double endcap_inner_radius
static double trt_barrel_outer_radius()
SoShape * endcapOuterShape()
static void initClass()
Class Initializer, required.
static double sct_endcap_zasr_squeezefact()
static double pixel_endcap_outer_radius()
SoSFFloat pDPhi
Delta-angle, in radians.
static double sct_endcap_zasr_disttobarrelcyl()
static double pixel_barrel_inner_radius()
virtual ~ProjectionSurfacesHelper()
SoSFInt32 pOverrideNPhi
Override number of phi subdivision used for rendering shape (i.e.
InDetProjFlags::InDetProjPartsFlags parts
double endcap_surface_length
static double trt_endcap_zasr_disttobarrelcyl()
static double sct_endcap_surface_length()
SoShape * endcapzasrcylshape
Imp(ProjectionSurfacesHelper *tc, SoSeparator *as)
static double pixel_endcap_surface_z()
double endcap_outer_radius
void initPartsSep(float zpos, SoSeparator *&sep, SoShape *)
ProjectionSurfacesHelper * theclass
SoSeparator * sep_endcap_outer_neg
static double pixel_endcap_surface_length()
SoSFFloat pDz
Half-length in Z.
static double trt_endcap_surface_length()
static double trt_endcap_inner_radius()
SoShape * endcapoutershape
static double pixel_endcap_inner_radius()
static ProjectionSurfacesHelper * createTRTHelper(SoMaterial *, SoSeparator *attachsep, QObject *parent=0, IVP1System *sys=0)
SoSFFloat pRMin
Inside radius of the tube.
SoShape * endcapInnerShape()
SoSFFloat pRMax
Outside radius of the tube.
SoSFFloat pSPhi
Starting angle, in radians.