62{
64
65 #ifndef BUILDVP1LIGHT
66 StoredMaterialManager* materialManager = nullptr;
67 if (StatusCode::SUCCESS !=
m_detectorStore->retrieve(materialManager, std::string(
"MATERIALS"))) {
68 return;
69 }
70 #endif
71
72
73
74
75
76 #if defined BUILDVP1LIGHT
77
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);
81 #else
82
83 const GeoMaterial *air = materialManager->
getMaterial(
"std::Air");
84 const GeoMaterial *poly = materialManager->
getMaterial(
"std::Polystyrene");
85 #endif
86
87
88
89
90 const GeoBox *toyBox = new GeoBox(800*SYSTEM_OF_UNITS::cm,800*SYSTEM_OF_UNITS::cm, 1000*SYSTEM_OF_UNITS::cm);
91
92
93
94 const GeoLogVol *toyLog = new GeoLogVol("ToyLog", toyBox, air);
95
96
97
98 GeoPhysVol *toyPhys = new GeoPhysVol(toyLog);
99
100
101
103
104
105
106
107
108
109 const GeoTube *ringTube = new GeoTube(500*SYSTEM_OF_UNITS::cm, 1000*SYSTEM_OF_UNITS::cm, 5.0*SYSTEM_OF_UNITS::cm);
110
111
112
113 const GeoLogVol *ringLog = new GeoLogVol("RingLog", ringTube, air);
114
115
116
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));
122 toyPhys->add(xform);
123 toyPhys->add(ringPhys);
125 }
126
127
128
129
130
131
132
133
134
135
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);
139
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);
143
144 pPass->add(pIPass);
145
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);
154
155
156
157
158
159
160 GeoSerialDenominator *pass1Name = new GeoSerialDenominator("PASSIVE-1-");
161 GeoSerialTransformer *
s1 =
new GeoSerialTransformer(pPass,&t1, NPLATES);
162 toyPhys->add(pass1Name);
163 toyPhys->add(s1);
164
165 GeoSerialDenominator *pass2Name = new GeoSerialDenominator("PASSIVE-2-");
166 GeoSerialTransformer *
s2 =
new GeoSerialTransformer(pPass,&t2, NPLATES);
167 toyPhys->add(pass2Name);
168 toyPhys->add(s2);
169
170
171
172
173 GeoNameTag *
tag =
new GeoNameTag(
"Toy");
174 world->add(tag);
175 world->add(toyPhys);
176
177}
virtual const GeoMaterial * getMaterial(const std::string &name)=0
std::vector< ALFA_RawDataContainer_p1 > t2
std::vector< ALFA_RawDataCollection_p1 > t1