151 TGeoVolume *top=gGeoManager->GetTopVolume();
153 TGeoMedium *tungstenmisis =gGeoManager->GetMedium(
"tungstenmisis");
155 TGeoMedium *concrete =gGeoManager->GetMedium(
"Concrete");
157 TGeoMedium *iron =gGeoManager->GetMedium(
"iron");
159 TGeoMedium *water =gGeoManager->GetMedium(
"H2O");
161 TGeoMedium *momisis =gGeoManager->GetMedium(
"molybdenummisis");
163 TGeoMedium *air = gGeoManager->GetMedium(
"air");
165 TGeoMedium *plasticbase = gGeoManager->GetMedium(
"PlasticBase");
167 TGeoMedium *steel = gGeoManager->GetMedium(
"steel");
169 TGeoVolume *tTarget =
new TGeoVolumeAssembly(
"TargetArea");
175 TGeoVolume *frontcap;
177 TGeoVolume *targettube;
178 frontcap = gGeoManager->MakeTube(
"FrontCap", steel, 0, 15./2., 0.5/2.);
179 frontcap->SetLineColor(20);
180 endcap = gGeoManager->MakeTube(
"EndCap", steel, 0, 15./2., 0.5/2.);
181 endcap->SetLineColor(20);
183 targettube->SetLineColor(20);
188 for (Int_t i=0; i<
fnS; i++) {
189 TString nmi =
"Target_"; nmi += i+1;
190 TString sm =
"Slit_"; sm += i+1;
191 TGeoMedium *material;
192 if (
fM.at(i)==
"molybdenummisis") {material = momisis;};
194 if (
fM.at(i)==
"tungstenmisis") {material = tungstenmisis;};
198 target = gGeoManager->MakeTube(nmi, material, 0.,
fDiameter/2.,
fL.at(i)/2.);
203 if (
fM.at(i)==
"molybdenummisis") {
204 target->SetLineColor(28);
205 }
else {target->SetLineColor(38);};
206 tTarget->AddNode(target, 1,
new TGeoTranslation(0, 0, zPos +
fL.at(i)/2.) );
209 slit = gGeoManager->MakeTube(sm, plasticbase, 0.,
fDiameter/2.,
fsl/2.);
214 slit->SetLineColor(7);
216 tTarget->AddNode(frontcap, 11,
new TGeoTranslation(0, 0, zPos-0.2501) );
218 tTarget->AddNode(slit, 1,
new TGeoTranslation(0, 0, zPos+
fL.at(i)+
fsl/2.) );
223 tTarget->AddNode(targettube, 13,
new TGeoTranslation(0, 0,
fTargetLength/2-0.5));
224 tTarget->AddNode(endcap, 12,
new TGeoTranslation(0, 0,
fTargetLength-0.7499) );
230 TGeoVolume *absorber;
231 TGeoVolume *absorbercutout;
232 TGeoVolume *aboveabsorbershield;
233 TGeoVolume *ironshield;
234 TGeoVolume *concreteshield;
235 TGeoVolume *abovetargetshield;
236 TGeoVolume *aboveabovetargetshield;
238 TGeoVolume *floorT34;
239 TGeoVolume *floorRPC;
255 ironshield->SetLineColor(42);
256 concreteshield->SetLineColor(kGray);
257 floor->SetLineColor(kGray);
258 floorT34->SetLineColor(kGray);
259 floorRPC->SetLineColor(kGray);
260 aboveabsorbershield->SetLineColor(kGray);
261 abovetargetshield->SetLineColor(kGray);
262 aboveabovetargetshield->SetLineColor(kGray);
263 frontcap->SetLineColor(29);
264 endcap->SetLineColor(29);
265 absorber->SetLineColor(42);
267 tTarget->AddNode(absorbercutout, 11,
new TGeoTranslation(18., 97.5,
fAbsorberZ-zPos));
268 tTarget->AddNode(absorber, 1,
new TGeoTranslation(0., -27.5,
fAbsorberZ-zPos));
273 tTarget->AddNode(floor, 7,
new TGeoTranslation(0., -217., 500.));
274 tTarget->AddNode(floorT34, 8,
new TGeoTranslation(0., -120.,
fAbsorberZ-zPos+771.125));
275 tTarget->AddNode(floorRPC, 9,
new TGeoTranslation(0., -94.49,
fAbsorberZ-zPos+1075.));
277 TGeoShapeAssembly* asmb =
dynamic_cast<TGeoShapeAssembly*
>(tTarget->GetShape());
278 Double_t totLength = asmb->GetDZ();
281 top->AddNode(ironshield, 2,
new TGeoTranslation(-50., -47.5,
fTargetZ - 83.49));
282 top->AddNode(concreteshield, 3,
new TGeoTranslation(85.,-47.5,
fTargetZ - 83.49));
283 top->AddNode(abovetargetshield, 4,
new TGeoTranslation(50.,77.5,
fTargetZ - 83.49));
284 top->AddNode(aboveabovetargetshield, 5,
new TGeoTranslation(-50.,165.0,
fAbsorberZ-zPos-624.5));
285 top->AddNode(aboveabsorbershield, 6,
new TGeoTranslation(0.,165.0,-26.48));
287 cout <<
"target and absorber positioned at " <<
fTargetZ <<
" "<<
fAbsorberZ <<
" m"<< endl;