]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STRUCT/AliSHILv2.cxx
Adding a missing slash
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv2.cxx
index 4580766056e69a5a40ad519c096f99f808a0f66e..15663c0736e6d57c460a9fa8bd52e8f48d6d4222 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.6  2002/10/29 09:53:40  morsch
-Constants start with k. Warnings corrected.
-
-Revision 1.5  2002/10/14 14:57:39  hristov
-Merging the VirtualMC branch to the main development branch (HEAD)
-
-Revision 1.3.2.2  2002/10/11 08:04:28  hristov
-Updating VirtualMC to v3-09-02
+/* $Id$ */
 
-Revision 1.4  2002/09/02 15:32:15  morsch
-Gsbool calls to resolve MANY added (I. Hrivnacova)
-
-Revision 1.3  2002/07/25 10:00:08  morsch
-par4 size increased.
-
-Revision 1.2  2002/07/15 08:16:35  morsch
-New shield geometry.
-
-*/
+//-------------------------------------------------------------------------
+// MUON shielding class
+// Default version
+// Author: A.Morsch
+//-------------------------------------------------------------------------
 
+#include <TVirtualMC.h>
+#include <TArrayI.h>
 
 #include "AliSHILv2.h"
-#include "AliRun.h"
-#include "AliMC.h"
 #include "AliConst.h"
 #include "AliALIFE.h"
+#include "AliLog.h"
 
 ClassImp(AliSHILv2)
  
@@ -91,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"
     
@@ -106,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] ;  
@@ -138,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.;
@@ -220,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.;
@@ -246,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");
@@ -326,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,21 +609,27 @@ void AliSHILv2::CreateGeometry()
 // begin Fluka
 //
   Float_t rf1[10], rf2[10];
-  rf1[0]=0.; rf2[0]=0.;
+  rf1[0]=0.;
   rf1[1] = cpar0[1];
-  rf2[1] = cpar0[3];
-
+  rf1[2]=rf1[1]+0.15;
+  rf1[3]=rf1[2]+0.5;
+  rf1[4]=rf1[3]+0.1;
+  rf1[5]=par1[4];
+  rf1[6]=0.; //PH This has to be checked...
 
-  rf1[2]=rf1[1]+0.15; rf1[3]=rf1[2]+0.5; rf1[4]=rf1[3]+0.1;
-  rf1[5]=par1[4]; 
-  rf2[2]=rf2[1]+0.15; rf2[3]=rf2[2]+0.5; rf2[4]=rf2[3]+0.1; 
+  rf2[0]=0.;
+  rf2[1] = cpar0[3];
+  rf2[2]=rf2[1]+0.15;
+  rf2[3]=rf2[2]+0.5;
+  rf2[4]=rf2[3]+0.1; 
   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)");
@@ -670,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.;
@@ -759,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)");
@@ -870,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
@@ -932,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;
@@ -1398,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");  
 //
@@ -1419,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.;
@@ -1444,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]=50.;
-  gMC->Gsvolu("YAEM", "TUBE", idtmed[kAir], tpar, 3);
-  tpar[0]=kRAbs;
-  tpar[1]=kR43;
-  tpar[2]=50.;
-  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=kZvac12+50.;
-  gMC->Gspos("YAEM", 1, "ALIC", 0., 0., dz, 0, "ONLY"); 
+  dz=1921.6 + tpar[2];
+
+//  gMC->Gspos("YAEM", 1, "ALIC", 0., 0., - dz, 0, "ONLY"); 
 
 
 // 
@@ -1554,13 +1555,13 @@ void AliSHILv2::CreateGeometry()
 //  
   tpar[0] = 50.;
   tpar[1] = 310.;
-  tpar[2] = (kZFilterOut - kZFilterIn) / 4.;
+  tpar[2] = (kZFilterOut - kZFilterIn) / 2.;
   gMC->Gsvolu("YFIM", "TUBE", idtmed[kFe+40], tpar, 3);
   dz = (kZFilterIn + kZFilterOut) / 2.;
   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
 //
@@ -1570,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");
 
 
@@ -1588,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;
@@ -1602,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;
 
 
   
@@ -1648,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.;
@@ -1657,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
@@ -1677,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.
@@ -1730,7 +1729,7 @@ void AliSHILv2::CreateGeometry()
                  kZch22, kZvac6, posfluka,"NIW", "MF", "$SHS");
 
 */
-  if (fWriteGeometry) flukaGeom->Finish();
+  flukaGeom->Finish(!fWriteGeometry);
 
 // 
 // end Fluka
@@ -1781,13 +1780,13 @@ void AliSHILv2::CreateGeometry()
 
       par0[27]  = -dz + kZch52;
       par0[28]  = 30.;
-      par0[29]  = 30.+(kZch52-kZConeE)*TMath::Tan(kThetaOpenPbO);
+      par0[29]  = 30.+(kZch52+4.-kZConeE)*TMath::Tan(kThetaOpenPbO);
 // end of cone
       par0[30]  = +dl;
       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");
 
@@ -1886,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 ");