67 if (StatusCode::SUCCESS !=
m_detectorStore->retrieve(materialManager, std::string(
"MATERIALS"))) {
76 #if defined BUILDVP1LIGHT
78 double densityOfAir=0.1, densityOfPolystyrene=0.2;
79 const GeoMaterial *air =
new GeoMaterial(
"Air Toy",densityOfAir);
80 const GeoMaterial *poly =
new GeoMaterial(
"std::Polystyrene",densityOfPolystyrene);
83 const GeoMaterial *air = materialManager->
getMaterial(
"std::Air");
84 const GeoMaterial *poly = materialManager->
getMaterial(
"std::Polystyrene");
90 const GeoBox *toyBox =
new GeoBox(800*SYSTEM_OF_UNITS::cm,800*SYSTEM_OF_UNITS::cm, 1000*SYSTEM_OF_UNITS::cm);
94 const GeoLogVol *toyLog =
new GeoLogVol(
"ToyLog", toyBox, air);
98 GeoPhysVol *toyPhys =
new GeoPhysVol(toyLog);
109 const GeoTube *ringTube =
new GeoTube(500*SYSTEM_OF_UNITS::cm, 1000*SYSTEM_OF_UNITS::cm, 5.0*SYSTEM_OF_UNITS::cm);
113 const GeoLogVol *ringLog =
new GeoLogVol(
"RingLog", ringTube, air);
117 GeoSerialDenominator *ringName =
new GeoSerialDenominator(
"RING");
118 toyPhys->add(ringName);
119 for (
int i=0;i<100;i++) {
120 GeoFullPhysVol *ringPhys =
new GeoFullPhysVol(ringLog);
121 GeoAlignableTransform *xform =
new GeoAlignableTransform(GeoTrf::TranslateZ3D((i-50)*20*SYSTEM_OF_UNITS::cm));
123 toyPhys->add(ringPhys);
136 GeoBox *sPass =
new GeoBox(5.0*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm, 30*SYSTEM_OF_UNITS::cm);
137 GeoLogVol *lPass =
new GeoLogVol(
"Passive", sPass, poly);
138 GeoPhysVol *pPass =
new GeoPhysVol(lPass);
140 GeoBox *sIPass =
new GeoBox(4*SYSTEM_OF_UNITS::cm, 25*SYSTEM_OF_UNITS::cm, 25*SYSTEM_OF_UNITS::cm);
141 GeoLogVol *lIPass =
new GeoLogVol(
"InnerPassive", sIPass, air);
142 GeoPhysVol *pIPass =
new GeoPhysVol(lIPass);
146 const unsigned int NPLATES=100;
149 GENFUNCTION f = 360*SYSTEM_OF_UNITS::deg/NPLATES*i;
150 GENFUNCTION g = sin(4*f);
152 TRANSFUNCTION t1 = Pow(GeoTrf::RotateZ3D(1.0),f)*GeoTrf::TranslateX3D(1100*SYSTEM_OF_UNITS::cm)*Pow(GeoTrf::TranslateZ3D(800*SYSTEM_OF_UNITS::cm),g);
153 TRANSFUNCTION t2 = Pow(GeoTrf::RotateZ3D(1.0),f)*GeoTrf::TranslateX3D(1100*SYSTEM_OF_UNITS::cm)*Pow(GeoTrf::TranslateZ3D(800*SYSTEM_OF_UNITS::cm),
h);
160 GeoSerialDenominator *pass1Name =
new GeoSerialDenominator(
"PASSIVE-1-");
161 GeoSerialTransformer *s1 =
new GeoSerialTransformer(pPass,&t1, NPLATES);
162 toyPhys->add(pass1Name);
165 GeoSerialDenominator *pass2Name =
new GeoSerialDenominator(
"PASSIVE-2-");
166 GeoSerialTransformer *s2 =
new GeoSerialTransformer(pPass,&t2, NPLATES);
167 toyPhys->add(pass2Name);
173 GeoNameTag *tag =
new GeoNameTag(
"Toy");