323 log << MSG::INFO <<
" LUCID_DetectorFactory::addPmtTubes " <<
endmsg;
325 double MUMetalCylinderInnerRad = 7.99;
326 double MuMetalCylinderOuterRad = 8.835;
327 double MuMetalCylinderLength = 75;
329 double PmtRadius = 5;
330 double PmtCenterPosition = 125.5;
331 double PmtWindowThickness = 1.2;
333 double PeekCapInnerRad = 1.6;
334 double PeekCapOuterRad = 8.835;
335 double PeekCapLength = 2.8;
337 double MetalConnectorOuterRad = 1.6;
338 double MetalConnectorLength = 9.8;
340 GeoShape* aShape =
new GeoTube(0, PmtRadius, PmtWindowThickness/2);
341 GeoLogVol* logVol =
new GeoLogVol(
"lvPmt", aShape,
m_quartz);
342 GeoPhysVol* phyVol =
new GeoPhysVol(logVol);
344 GeoShape* aShapeMu =
new GeoTube(MUMetalCylinderInnerRad, MuMetalCylinderOuterRad, MuMetalCylinderLength/2);
346 GeoPhysVol* phyVolMu =
new GeoPhysVol(logVolMu);
348 GeoShape* aShapePeekCap =
new GeoTube(PeekCapInnerRad, PeekCapOuterRad, PeekCapLength/2);
349 GeoLogVol* logVolPeekCap =
new GeoLogVol(
"lvPmtPeekCap", aShapePeekCap,
m_peek);
350 GeoPhysVol* phyVolPeekCap =
new GeoPhysVol(logVolPeekCap);
352 GeoShape* aShapeMetalconnector =
new GeoTube(0, MetalConnectorOuterRad, MetalConnectorLength/2);
353 GeoLogVol* logVolMetalConnector =
new GeoLogVol(
"lvPmtMetalConnector", aShapeMetalconnector,
m_materialManager->
getMaterial(
"std::Iron"));
354 GeoPhysVol* phyVolMetalConnector =
new GeoPhysVol(logVolMetalConnector);
358 int nPmtTubesPerSection = 4;
360 for (
int sec=0; sec<nSections; sec++) {
361 for (
int tub=0; tub<nPmtTubesPerSection; tub++) {
365 double z = (16970-13442)+(PmtWindowThickness/2);
366 double zMu = (16963-13442)+(MuMetalCylinderLength/2);
367 double zCap = (16963-13442)-(PeekCapLength/2);
368 double zMetal = (16963-13442)-(MetalConnectorLength/2);
370 char sname[256]; sprintf(sname,
"LucidPmt%d", 4*sec+tub);
373 <<
format(
"Adding %11s phi:%10.3f x:%10.3f y:%10.3f z:%10.3f", sname,
phi,
x,
y,
z)
376 parent->add(
new GeoNameTag (sname));
377 parent->add(
new GeoTransform(GeoTrf::Translate3D(
x,
y,
z)));
380 char snameMu[256]; sprintf(snameMu,
"MuMetal cylinder%d", 4*sec+tub);
383 <<
format(
"Adding %11s phi:%10.3f x:%10.3f y:%10.3f zMu:%10.3f", snameMu,
phi,
x,
y, zMu)
386 parent->add(
new GeoNameTag (snameMu));
387 parent->add(
new GeoTransform(GeoTrf::Translate3D(
x,
y, zMu)));
390 char snamePeekCap[256]; sprintf(snamePeekCap,
"PmtPeekCap%d", 4*sec+tub);
393 <<
format(
"Adding %11s phi:%10.3f x:%10.3f y:%10.3f zCap:%10.3f", snamePeekCap,
phi,
x,
y, zCap)
396 parent->add(
new GeoNameTag (snamePeekCap));
397 parent->add(
new GeoTransform(GeoTrf::Translate3D(
x,
y, zCap)));
398 parent->add(phyVolPeekCap);
400 char snameMetalConnector[256]; sprintf(snameMetalConnector,
"MetalConnector%d", 4*sec+tub);
403 <<
format(
"Adding %11s phi:%10.3f x:%10.3f y:%10.3f zMetal:%10.3f", snameMetalConnector,
phi,
x,
y, zMetal)
406 parent->add(
new GeoNameTag (snameMetalConnector));
407 parent->add(
new GeoTransform(GeoTrf::Translate3D(
x,
y, zMetal)));
408 parent->add(phyVolMetalConnector);