167 {
168
169
171 TGeoMedium* air = gGeoManager->GetMedium("air");
172
174 TGeoMedium* PBase = gGeoManager->GetMedium("PlasticBase");
175
177 TGeoMedium* NEmu = gGeoManager->GetMedium("NuclearEmulsion");
178
179 TGeoMaterial* NEmuMat =
180 NEmu->GetMaterial();
181 TGeoMaterial* PBaseMat = PBase->GetMaterial();
182
189
191 cout << "TARGET PRINTOUT: Single volume for emulsion film chosen: average "
192 "density: "
193 << rho_film << " fraction in mass of emulsion " << frac_emu << endl;
194
195 TGeoMixture* emufilmmixture = new TGeoMixture(
196 "EmulsionFilmMixture",
197 2.00);
198
199 emufilmmixture->AddElement(NEmuMat, frac_emu);
200 emufilmmixture->AddElement(PBaseMat, 1. - frac_emu);
201
202 TGeoMedium* Emufilm = new TGeoMedium("EmulsionFilm", 100, emufilmmixture);
203
205 TGeoMedium* tungsten = gGeoManager->GetMedium("tungsten");
206
208
209
210
211 TGeoBBox* TargetBox =
213 TGeoVolume* volTarget = new TGeoVolume("volTarget", TargetBox, air);
214
215
216
217
218
219 [[maybe_unused]] TGeoBBox* Cell =
221 [[maybe_unused]] TGeoVolume* volCell = new TGeoVolume("Cell", Cell, air);
222
223
225 TGeoVolume* volBrick = new TGeoVolume("Brick", Brick, air);
226 volBrick->SetLineColor(kCyan);
227 volBrick->SetTransparency(1);
228
229 auto* Absorber =
231 auto* volAbsorber = new TGeoVolume("volAbsorber", Absorber, tungsten);
232
233 volAbsorber->SetTransparency(1);
234 volAbsorber->SetLineColor(kGray);
235 for (Int_t n = 0;
n < NPlates;
n++) {
236 volBrick->AddNode(
237 volAbsorber, n,
238 new TGeoTranslation(0, 0,
241 }
243
244 TGeoBBox* EmulsionFilm =
new TGeoBBox(
"EmulsionFilm",
EmulsionX / 2,
246 TGeoVolume* volEmulsionFilm =
247 new TGeoVolume("Emulsion", EmulsionFilm, Emufilm);
248 volEmulsionFilm->SetLineColor(kBlue);
249
251 AddSensitiveVolume(volEmulsionFilm);
252 }
253
254 for (Int_t n = 0;
n < NPlates + 1;
n++) {
255 volBrick->AddNode(
256 volEmulsionFilm, n,
257 new TGeoTranslation(0, 0,
260 }
261 } else {
262
263 TGeoBBox* EmulsionFilm =
new TGeoBBox(
"EmulsionFilm",
EmulsionX / 2,
265 TGeoVolume* volEmulsionFilm =
266 new TGeoVolume("Emulsion", EmulsionFilm, NEmu);
267 TGeoVolume* volEmulsionFilm2 =
268 new TGeoVolume("Emulsion2", EmulsionFilm, NEmu);
269 volEmulsionFilm->SetLineColor(kBlue);
270 volEmulsionFilm2->SetLineColor(kBlue);
271
273 AddSensitiveVolume(volEmulsionFilm);
274 AddSensitiveVolume(volEmulsionFilm2);
275 }
278 TGeoVolume* volPlBase = new TGeoVolume("PlasticBase", PlBase, PBase);
279 volPlBase->SetLineColor(kYellow - 4);
280 for (Int_t n = 0;
n < NPlates + 1;
n++) {
281 volBrick->AddNode(volEmulsionFilm2, n,
282 new TGeoTranslation(0, 0,
286 volBrick->AddNode(
287 volEmulsionFilm, n,
288 new TGeoTranslation(
289 0, 0,
292 volBrick->AddNode(
293 volPlBase, n,
294 new TGeoTranslation(0, 0,
298 }
299 }
300
301 volBrick->SetVisibility(kTRUE);
302 TGeoVolume*
top = gGeoManager->GetTopVolume();
303 TGeoVolumeAssembly* tTauNuDet = new TGeoVolumeAssembly("tTauNuDet");
304 top->AddNode(tTauNuDet, 1,
new TGeoTranslation(0, 0, 0));
305
306 tTauNuDet->AddNode(volTarget, 1,
new TGeoTranslation(0, 0,
fCenterZ));
308 TGeoVolume* volRow = new TGeoVolume("Row", Row, air);
309 volRow->SetLineColor(20);
310
312 for (
int j = 0; j <
fNCol; j++) {
313 volRow->AddNode(volBrick, j,
314 new TGeoTranslation(d_cl_x +
BrickX / 2, 0, 0));
316 }
317 TGeoBBox* Wall =
319 TGeoVolume* volWall = new TGeoVolume("Wall", Wall, air);
320 volWall->SetLineColor(kGreen);
321
323 for (
int k = 0;
k <
fNRow;
k++) {
324 volWall->AddNode(volRow, k,
new TGeoTranslation(0, d_cl_y +
BrickY / 2, 0));
325
326
328 }
329
330
332 for (
int l = 0; l <
fNWall; l++) {
333 volTarget->AddNode(volWall, l,
334 new TGeoTranslation(0, 0, d_cl_z +
BrickZ / 2));
335
336
337
339 }
340}
Double_t PlasticBaseThickness
Double_t EmulsionThickness
Bool_t fsingleemulsionfilm
Int_t InitMedium(const char *name)