// Author: A.Morsch
//-------------------------------------------------------------------------
+#include <TVirtualMC.h>
+#include <TArrayI.h>
+
#include "AliSHILv2.h"
-#include "AliRun.h"
#include "AliConst.h"
#include "AliALIFE.h"
+#include "AliLog.h"
ClassImp(AliSHILv2)
Float_t dz, dZ;
Int_t *idtmed = fIdtmed->GetArray()-1699;
-
+
+ Int_t idrotm[1799];
+
#include "ABSOSHILConst.h"
#include "SHILConst2.h"
//
// begin Fluka
AliALIFE* flukaGeom = new AliALIFE("beamshield.alife", "beamshield_vol.inp");
+
Int_t i=0,ifl=0;
Float_t posfluka[3]={0., 0., 0.};
Float_t zfluka[12], rfluka1[12], rfluka2[12], rfluka3[12] ;
par0[9] = par0[6];
par0[10] = 0.;
- par0[11] = 17.9;
+ par0[11] = kR11;
par0[12] = -dz+kZch12;
par0[13] = 0.;
- par0[14] = 17.9;
+ par0[14] = kR11;
par0[15] = par0[12];
par0[16] = 0.;
par0[69] = -dz+kZch52;
par0[70] = 0.;
- par0[71] = 30.+(kZch52-kZConeE)*TMath::Tan(kThetaOpenPbO);
+ par0[71] = 30.+(kZch52+4.-kZConeE)*TMath::Tan(kThetaOpenPbO);
// end of cone
par0[72] = -dz+kZvac10;
par0[73] = 0.;
- par0[74] = 30.+(kZvac10-kZConeE)*TMath::Tan(kThetaOpenPbO);
+ par0[74] = par0[71];
par0[75] = -dz+kZvac10;
par0[76] = 0.;
gMC->Gsvolu("YMOT", "PCON", idtmed[kVacuum], par0, 87);
dz=zstart+dl;
- gMC->Gspos("YMOT", 1, "ALIC", 0., 0., dz, 0, "ONLY");
+ AliMatrix(idrotm[1705], 270., 0., 90., 90., 180., 0.);
+ gMC->Gspos("YMOT", 1, "ALIC", 0., 0., - dz, idrotm[1705], "ONLY");
gMC->Gsbool("YMOT","L3DO");
gMC->Gsbool("YMOT","L3O1");
gMC->Gsbool("YMOT","L3O2");
Float_t rBox= par1[43]-0.1;
Float_t rc1 = par1[7];
- gMC->Gsvolu("YGO1", "PCON", idtmed[kNiCuW], par1, 45);
+ gMC->Gsvolu("YGO1", "PCON", idtmed[kNiCuW+40], par1, 45);
//
// begin Fluka
+
for (ifl=0; ifl<14; ifl++) {
zfluka[ifl]=par1[3+3*ifl]+dl+kZRear-kDRear;
rfluka1[ifl] = par1[4+3*ifl];
rf2[5]=par1[7];
rf2[6]=0.; //PH This has to be checked
- char* materialsA[7]
+ const char* materialsA[7]
= {"VACUUM", "STEEL", "PIPEINSU", "STEEL", "AIR", "AIR"};
- char* fieldsA[7]
+ const char* fieldsA[7]
= {"MF", "MF", "MF", "MF", "MF", "MF"};
- char* cutsA[7]
+ const char* cutsA[7]
= {"$SHH","$SHH","$SHH","$SHH","$SHH","$SHH","$SHH"};
flukaGeom->Comment("1st part: Beam pipe lateral struture (left)");
//
// begin Fluka
- char* materialsB[5]
+ const char* materialsB[5]
= {"VACUUM", "STEEL", "PIPEINSU", "STEEL", "AIR"};
- char* fieldsB[5]
+ const char* fieldsB[5]
= {"MF", "MF", "MF", "MF", "MF"};
- char* cutsB[5]
+ const char* cutsB[5]
= {"$SHH","$SHH","$SHH","$SHH","$SHH"};
rf1[0]=rf2[0]=0.;
//
// begin Fluka
- char* materials1[8]
+ const char* materials1[8]
= {"VACUUM", "STEEL", "PIPEINSU", "STEEL", "AIR", "NIW", "NIW", "STEEL"};
- char* fields1[8]
+ const char* fields1[8]
= {"MF", "MF", "MF", "MF", "MF", "MF", "MF", "MF"};
- char* cuts1[8]
+ const char* cuts1[8]
= {"$SHH","$SHH","$SHH","$SHH","$SHH","$SHH","$SHH","$SHH"};
flukaGeom->Comment("2nd part: Beam shield lateral struture (0)");
parPb[16] = r2+(kZvac7-kZvac4-10.) * TMath::Tan(kThetaOpen2);
parPb[17] = 30.;
- gMC->Gsvolu("YXO2", "PCON", idtmed[kPb], parPb, 18);
+ gMC->Gsvolu("YXO2", "PCON", idtmed[kPb+40], parPb, 18);
gMC->Gspos("YXO2", 1, "YGO2", 0., 0., (kZPb-kZvac4)/2., 0, "ONLY");
//
// Concrete replacing Pb
parW[13] = r2+(kZPb-kZvac4) * TMath::Tan(kThetaOpen2);
parW[14] = kZPb*TMath::Tan(kAccMin)-kDRSteel2;
- gMC->Gsvolu("YYO2", "PCON", idtmed[kNiCuW], parW, 15);
+ gMC->Gsvolu("YYO2", "PCON", idtmed[kNiCuW+40], parW, 15);
gMC->Gspos("YYO2", 1, "YGO2", 0., 0., -(kZvac7-kZPb)/2., 0, "ONLY");
for (i=4; i<35; i+=3) par2[i] = 0;
tpar[0]=kR41-kDRSteel2;
tpar[1]=kR41;
tpar[2]=(kZvac11-kZvac10)/2.;
- gMC->Gsvolu("YS43", "TUBE", idtmed[kPb], tpar, 3);
+ gMC->Gsvolu("YS43", "TUBE", idtmed[kPb+40], tpar, 3);
dz+=tpar[2];
gMC->Gspos("YS43", 1, "YGO4", 0., 0., dz, 0, "ONLY");
//
tpar[0]=kR42-5;
tpar[1]=kR42;
tpar[2]=(kZvac11-kZvac10)/2.;
- gMC->Gsvolu("YPBO", "TUBE", idtmed[kPb], tpar, 3);
+ gMC->Gsvolu("YPBO", "TUBE", idtmed[kPb+40], tpar, 3);
gMC->Gspos("YPBO", 1, "YPBI", 0., 0., 0., 0, "ONLY");
tpar[2]=(zCC2-zCC1)/2.;
dz=-(kZvac12-kZvac11)/2.+tpar[2];
gMC->Gspos("YFEO", 1, "YFEI", 0., 0., dz, 0, "ONLY");
//
+// The following element has been moved to ZDC
+//
// Magnet element
//
- tpar[0]=0.;
- tpar[1]=kR43;
- tpar[2]=85.;
- gMC->Gsvolu("YAEM", "TUBE", idtmed[kAir], tpar, 3);
- tpar[0]=6.3/2.;
- tpar[1]=kR43;
- tpar[2]=85.;
- gMC->Gsvolu("YFEM", "TUBE", idtmed[kFe], tpar, 3);
- gMC->Gspos("YFEM", 1, "YAEM", 0., 0., 0., 0, "ONLY");
+// tpar[0]=0.;
+// tpar[1]= 40.;
+// tpar[2]=85.;
+// gMC->Gsvolu("YAEM", "TUBE", idtmed[kAir], tpar, 3);
+// tpar[0]=17.6/2.;
+// tpar[1]=40.;
+// tpar[2]=85.;
+// gMC->Gsvolu("YFEM", "TUBE", idtmed[kFe], tpar, 3);
+// gMC->Gspos("YFEM", 1, "YAEM", 0., 0., 0., 0, "ONLY");
//
dz=1921.6 + tpar[2];
- gMC->Gspos("YAEM", 1, "ALIC", 0., 0., dz, 0, "ONLY");
+
+// gMC->Gspos("YAEM", 1, "ALIC", 0., 0., - dz, 0, "ONLY");
//
tpar[2] -= 10.;
gMC->Gsvolu("YFII","TUBE", idtmed[kFe], tpar, 3);
gMC->Gspos("YFII", 1, "YFIM", 0., 0., 0., 0, "ONLY");
- gMC->Gspos("YFIM", 1, "ALIC", 0., 0., dz, 0, "ONLY");
+ gMC->Gspos("YFIM", 1, "ALIC", 0., 0., - dz, 0, "ONLY");
//
// Shielding close to chamber
//
cpar[2]=kZRear*TMath::Tan(kAccMin);
cpar[3]=kR11;
cpar[4]=(kZRear+2.*cpar[0])*TMath::Tan(kAccMin);
- gMC->Gsvolu("YCS1", "CONE", idtmed[kNiCuW], cpar, 5);
+ gMC->Gsvolu("YCS1", "CONE", idtmed[kNiCuW+40], cpar, 5);
dz=-(kZvac12-zstart)/2.+(kZRear-zstart)+cpar[0];
gMC->Gspos("YCS1", 1, "YMOT", 0., 0., dz, 0, "ONLY");
- cpar[0]=(kZvac4-kZch12)/2.;
- cpar[1]=kR11;
- cpar[2]=kZch12*TMath::Tan(kAccMin);
- cpar[3]=kR11;
- cpar[4]=(kZch12+2.*cpar[0])*TMath::Tan(kAccMin);
- gMC->Gsvolu("YCS3", "CONE", idtmed[kNiCuW], cpar, 5);
- dz=-(kZvac12-zstart)/2.+(kZch12-zstart)+cpar[0];
+ cpar[0]=(kZvac4-kZvac41)/2.;
+ cpar[1]=kR21;
+ cpar[2]=kZvac41*TMath::Tan(kAccMin);
+ cpar[3]=kR21;
+ cpar[4]=(kZvac41+2.*cpar[0])*TMath::Tan(kAccMin);
+ gMC->Gsvolu("YCS3", "CONE", idtmed[kNiCuW+40], cpar, 5);
+ dz=-(kZvac12-zstart)/2.+(kZvac41-zstart)+cpar[0];
gMC->Gspos("YCS3", 1, "YMOT", 0., 0., dz, 0, "ONLY");
cpar[0]=(kZch12-kZch11)/2.;
cpar[1]=kR11;
- cpar[2]=18.;
+ cpar[2]=17.9;
cpar[3]=kR11;
cpar[4]=17.9;
- gMC->Gsvolu("YCS2", "CONE", idtmed[kAir], cpar, 5);
- dz=-(kZvac12-zstart)/2.+(kZch11-zstart)+cpar[0];
- gMC->Gspos("YCS2", 1, "YMOT", 0., 0., dz, 0, "ONLY");
+// gMC->Gsvolu("YCS2", "CONE", idtmed[kAir], cpar, 5);
+
+// gMC->Gspos("YCS2", 1, "ALIC", 0., 0., dz, idrotm[1705], "ONLY");
Float_t ptubs[5];
ptubs[0] = kR11;
// phi_min, phi_max
ptubs[3] = 0.;
ptubs[4] = 90.;
- gMC->Gsvolu("YCR0", "TUBS", idtmed[kNiCuW], ptubs, 0);
- Int_t idrotm[1799];
-
+ gMC->Gsvolu("YCR0", "TUBS", idtmed[kNiCuW+40], ptubs, 0);
+
AliMatrix(idrotm[1701],90., 0., 90., 90., 0., 0.);
AliMatrix(idrotm[1702],90., 90., 90., 180., 0., 0.);
AliMatrix(idrotm[1703],90., 180., 90., 270., 0., 0.);
AliMatrix(idrotm[1704],90., 270., 90., 0., 0., 0.);
// Int_t ipos;
-
- dz=-cpar[0];
+ dz= - kZch11;
// 1.
ptubs[2]=6.5/2.;
- dz+=ptubs[2];
- gMC->Gsposp("YCR0", 1, "YCS2", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
- gMC->Gsposp("YCR0", 2, "YCS2", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
- dz+=ptubs[2];
- dz+=1.5;
+ dz-=ptubs[2];
+ gMC->Gsposp("YCR0", 1, "ALIC", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
+ gMC->Gsposp("YCR0", 2, "ALIC", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
+ dz-=ptubs[2];
+ dz-=1.5;
// 2.
ptubs[2]=5.0/2.;
- dz+=ptubs[2];
- gMC->Gsposp("YCR0", 3, "YCS2", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
- gMC->Gsposp("YCR0", 4, "YCS2", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
- dz+=ptubs[2];
- dz+=1.5;
+ dz-=ptubs[2];
+ gMC->Gsposp("YCR0", 3, "ALIC", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
+ gMC->Gsposp("YCR0", 4, "ALIC", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
+ dz-=ptubs[2];
+ dz-=1.5;
// 3.
ptubs[2]=5.0/2.;
- dz+=ptubs[2];
- gMC->Gsposp("YCR0", 5, "YCS2", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
- gMC->Gsposp("YCR0", 6, "YCS2", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
- dz+=ptubs[2];
- dz+=1.5;
+ dz-=ptubs[2];
+ gMC->Gsposp("YCR0", 5, "ALIC", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
+ gMC->Gsposp("YCR0", 6, "ALIC", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
+ dz-=ptubs[2];
+ dz-=1.5;
// 4.
ptubs[2]=6.5/2.;
- dz+=ptubs[2];
- gMC->Gsposp("YCR0", 7, "YCS2", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
- gMC->Gsposp("YCR0", 8, "YCS2", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
- dz+=ptubs[2];
- dz+=1.5;
+ dz-=ptubs[2];
+ gMC->Gsposp("YCR0", 7, "ALIC", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
+ gMC->Gsposp("YCR0", 8, "ALIC", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
+ dz-=ptubs[2];
+ dz-=1.5;
cpar[2]=kZvac4*TMath::Tan(kAccMin);
cpar[3]=kR21;
cpar[4]=(kZvac4+2.*cpar[0])*TMath::Tan(kAccMin);
- gMC->Gsvolu("YCS4", "CONE", idtmed[kNiCuW], cpar, 5);
- dz=-(kZvac12-zstart)/2.+(kZvac4-zstart)+cpar[0];
+ gMC->Gsvolu("YCS4", "CONE", idtmed[kNiCuW+40], cpar, 5);
+ dz=-(kZvac12 - zstart)/2.+(kZvac4-zstart)+cpar[0];
gMC->Gspos("YCS4", 1, "YMOT", 0., 0., dz, 0, "ONLY");
cpar[0]=(kZvac6-kZch22)/2.;
cpar[2]=kZch22*TMath::Tan(kAccMin);
cpar[3]=kR21;
cpar[4]=(kZch22+2.*cpar[0])*TMath::Tan(kAccMin);
- gMC->Gsvolu("YCS6", "CONE", idtmed[kNiCuW], cpar, 5);
- dz=-(kZvac12-zstart)/2.+(kZch22-zstart)+cpar[0];
+ gMC->Gsvolu("YCS6", "CONE", idtmed[kNiCuW+40], cpar, 5);
+ dz=-(kZvac12 - zstart)/2.+(kZch22-zstart)+cpar[0];
gMC->Gspos("YCS6", 1, "YMOT", 0., 0., dz, 0, "ONLY");
// Recess station 2
ptubs[2] = 0.;
ptubs[3] = 0.;
ptubs[4] = 90.;
- gMC->Gsvolu("YCR1", "TUBS", idtmed[kNiCuW], ptubs, 0);
+ gMC->Gsvolu("YCR1", "TUBS", idtmed[kNiCuW+40], ptubs, 0);
dz=-cpar[0];
// 1.
kZch22, kZvac6, posfluka,"NIW", "MF", "$SHS");
*/
- if (fWriteGeometry) flukaGeom->Finish();
+ flukaGeom->Finish(!fWriteGeometry);
//
// end Fluka
par0[31] = 30.;
par0[32] = par0[29];
//
- gMC->Gsvolu("YOPB", "PCON", idtmed[kPb], par0, 33);
+ gMC->Gsvolu("YOPB", "PCON", idtmed[kPb+40], par0, 33);
Float_t dzs = -(kZvac12-zstart)/2. + (kZch32-zstart) + dl;
gMC->Gspos("YOPB", 1, "YMOT", 0., 0., dzs, 0, "ONLY");
//
Int_t i;
//
- if(fDebug) {
+ if(AliLog::GetGlobalDebugLevel()>0) {
printf("\n%s: ",ClassName());
for(i=0;i<35;i++) printf("*");
printf(" SHILv2_INIT ");