150{
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");
168
169 TGeoVolume *tTarget = new TGeoVolumeAssembly("TargetArea");
170
174
175 TGeoVolume *frontcap;
176 TGeoVolume *endcap;
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);
184
186 TGeoVolume *slit;
187
188 for (Int_t i=0;
i<
fnS;
i++) {
189 TString nmi =
"Target_"; nmi +=
i+1;
190 TString sm =
"Slit_"; sm +=
i+1;
192 if (
fM.at(i)==
"molybdenummisis") {
material = momisis;};
193
194 if (
fM.at(i)==
"tungstenmisis") {
material = tungstenmisis;};
195
196
199 }
200 else {
202 }
203 if (
fM.at(i)==
"molybdenummisis") {
205 }
else {
target->SetLineColor(38);};
206 tTarget->AddNode(target, 1,
new TGeoTranslation(0, 0, zPos +
fL.at(i)/2.) );
207 if (i < slots){
209 slit = gGeoManager->MakeTube(sm, plasticbase, 0.,
fDiameter/2.,
fsl/2.);
210 }
211 else {
213 }
214 slit->SetLineColor(7);
215 if (i==0) {
216 tTarget->AddNode(frontcap, 11, new TGeoTranslation(0, 0, zPos-0.2501) );
217 }
218 tTarget->AddNode(slit, 1,
new TGeoTranslation(0, 0, zPos+
fL.at(i)+
fsl/2.) );
220 } else {
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) );
225 }
227 }
228 }
229
230 TGeoVolume *absorber;
231 TGeoVolume *absorbercutout;
232 TGeoVolume *aboveabsorbershield;
233 TGeoVolume *ironshield;
234 TGeoVolume *concreteshield;
235 TGeoVolume *abovetargetshield;
236 TGeoVolume *aboveabovetargetshield;
237 TGeoVolume *floor;
238 TGeoVolume *floorT34;
239 TGeoVolume *floorRPC;
240
242
245
254
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);
266
267 tTarget->AddNode(absorbercutout, 11,
new TGeoTranslation(18., 97.5,
fAbsorberZ-zPos));
268 tTarget->AddNode(absorber, 1,
new TGeoTranslation(0., -27.5,
fAbsorberZ-zPos));
269
270
271
272
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.));
276
277 TGeoShapeAssembly* asmb = dynamic_cast<TGeoShapeAssembly*>(tTarget->GetShape());
278 Double_t totLength = asmb->GetDZ();
279
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));
286
287 cout <<
"target and absorber positioned at " <<
fTargetZ <<
" "<<
fAbsorberZ <<
" m"<< endl;
288
289}
Double_t faboveabsorbershield_x
std::vector< std::string > fM
Double_t fabovetargetshield_y
Double_t fconcreteshield_z
Double_t fabovetargetshield_z
Double_t fabovetargetshield_x
Double_t faboveabovetargetshield_y
Double_t fconcreteshield_x
Double_t fabsorbercutout_x
Double_t faboveabsorbershield_y
Double_t fconcreteshield_y
ClassDef(MufluxTargetStation, 4) private Double_t fabsorber_y
Double_t fabsorbercutout_y
Int_t InitMedium(const char *name)
Double_t faboveabsorbershield_z