]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliSHILv2.cxx
Adding a missing slash
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv2.cxx
index afa6b2bdae58ef2d7b99d9316a63407dfe42fd65..15663c0736e6d57c460a9fa8bd52e8f48d6d4222 100644 (file)
 // 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)
  
@@ -75,7 +78,9 @@ void AliSHILv2::CreateGeometry()
     Float_t dz, dZ;
     
     Int_t *idtmed = fIdtmed->GetArray()-1699;
-    
+
+    Int_t idrotm[1799];
+
 #include "ABSOSHILConst.h"
 #include "SHILConst2.h"
     
@@ -90,6 +95,7 @@ void AliSHILv2::CreateGeometry()
 //
 // 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] ;  
@@ -122,11 +128,11 @@ void AliSHILv2::CreateGeometry()
 
   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.;
@@ -204,13 +210,13 @@ void AliSHILv2::CreateGeometry()
 
   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.;
@@ -230,7 +236,8 @@ void AliSHILv2::CreateGeometry()
 
   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");
@@ -310,10 +317,11 @@ void AliSHILv2::CreateGeometry()
   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];
@@ -617,11 +625,11 @@ void AliSHILv2::CreateGeometry()
   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)");
@@ -660,13 +668,13 @@ void AliSHILv2::CreateGeometry()
 
 //
 // 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.;
@@ -749,11 +757,11 @@ void AliSHILv2::CreateGeometry()
 //
 // 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)");
@@ -860,7 +868,7 @@ void AliSHILv2::CreateGeometry()
   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
@@ -922,7 +930,7 @@ void AliSHILv2::CreateGeometry()
   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;
@@ -1388,7 +1396,7 @@ void AliSHILv2::CreateGeometry()
   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");  
 //
@@ -1409,7 +1417,7 @@ void AliSHILv2::CreateGeometry()
   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.;
@@ -1434,22 +1442,25 @@ void AliSHILv2::CreateGeometry()
   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"); 
 
 
 // 
@@ -1550,7 +1561,7 @@ void AliSHILv2::CreateGeometry()
   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
 //
@@ -1560,17 +1571,17 @@ void AliSHILv2::CreateGeometry()
   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");
 
 
@@ -1578,12 +1589,12 @@ void AliSHILv2::CreateGeometry()
 
   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;
@@ -1592,44 +1603,42 @@ void AliSHILv2::CreateGeometry()
 // 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;
 
 
   
@@ -1638,8 +1647,8 @@ void AliSHILv2::CreateGeometry()
   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.;
@@ -1647,8 +1656,8 @@ void AliSHILv2::CreateGeometry()
   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
@@ -1667,7 +1676,7 @@ void AliSHILv2::CreateGeometry()
   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.
@@ -1720,7 +1729,7 @@ void AliSHILv2::CreateGeometry()
                  kZch22, kZvac6, posfluka,"NIW", "MF", "$SHS");
 
 */
-  if (fWriteGeometry) flukaGeom->Finish();
+  flukaGeom->Finish(!fWriteGeometry);
 
 // 
 // end Fluka
@@ -1777,7 +1786,7 @@ void AliSHILv2::CreateGeometry()
       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");
 
@@ -1876,7 +1885,7 @@ void AliSHILv2::Init()
   //
   Int_t i;
   //
-  if(fDebug) {
+  if(AliLog::GetGlobalDebugLevel()>0) {
     printf("\n%s: ",ClassName());
     for(i=0;i<35;i++) printf("*");
     printf(" SHILv2_INIT ");