]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONSlatGeometryBuilder.cxx
Remove default OCDB location and exit with fatal error if OCDB URI is
[u/mrichter/AliRoot.git] / MUON / AliMUONSlatGeometryBuilder.cxx
index 10965f1f84d8331cbe3be78cd05fb6519f026a29..129f3d1d85297fa6ffcd253fe6709e1d762cb0b2 100644 (file)
@@ -227,7 +227,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
   Float_t xxmax = (kBframeLength - kNulocLength)/2.; 
   Int_t index=0;
   Int_t* fStations = new Int_t[5];
-  for (Int_t i=0; i<5; i++) fStations[i] = 1;
+  for (Int_t iSt=0; iSt<5; iSt++) fStations[iSt] = 1;
   fStations[2] = 1;
      
   if (fStations[2])
@@ -261,7 +261,6 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       Float_t senspar2[3]   = { tlength/2., senspar[1],   senspar[2]}; 
       Float_t hFramepar2[3] = { tlength/2., hFramepar[1], hFramepar[2]}; 
       Float_t bFramepar2[3] = { tlength/2., bFramepar[1], bFramepar[2]}; 
-      Float_t *dum=0;
       Float_t pcbDLength3   = (kPcbLength - tlength);
       
       // For rounded pcb of central slat
@@ -290,11 +289,12 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
 
       // create and position the slat (mother) volumes 
 
-      char idSlatCh5[5];
-      char idSlatCh6[5];
+      char idSlatCh5[6];
+      char idSlatCh6[6];
       Float_t xSlat3;
       Float_t ySlat3 = 0;
-      Float_t angle = 0.;
+      angle = 0.;
+
       Float_t spar2[3];
       for (i = 0; i < kNslats3; i++){
 
@@ -314,9 +314,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        spar2[1] = spar[1];
        spar2[2] = spar[2]; 
        Float_t dzCh3 = dzCh; 
-       Float_t zSlat3 = (i%2 ==0)? -zSlat : zSlat; // seems not that zSlat3 = zSlat4 & 5 refering to plan PQ7EN345-6 ?
+       Float_t dzSlat3 = -0.25; // see drawing PQ7EN345-6 (Delta_slat=80mm instead 85mm)
+       Float_t zSlat3 = (i%2 ==0)? -(zSlat+dzSlat3) : (zSlat+dzSlat3); // seems not that zSlat3 = zSlat4 & 5 refering to plan PQ7EN345-6 ? -> Indeed, fixed J.C.
 
-       sprintf(idSlatCh5,"LA%d",i+kNslats3-1);
+       sprintf(idSlatCh5,"SLA%d",i+kNslats3-1);
        detElemId = 509 - (i + kNslats3-1-4);
        moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 0)
@@ -326,7 +327,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
            GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
                                                TGeoRotation("rot1",90,angle,90,270+angle,180,0) ); 
 
-       sprintf(idSlatCh5,"LA%d",3*kNslats3-2+i);
+       sprintf(idSlatCh5,"SLA%d",3*kNslats3-2+i);
        detElemId = 500 + (i + kNslats3-1-4);
        moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 0)
@@ -337,7 +338,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
                                                TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
 
        if (i > 0) { 
-         sprintf(idSlatCh5,"LA%d",kNslats3-1-i);
+         sprintf(idSlatCh5,"SLA%d",kNslats3-1-i);
          detElemId = 509 + (i + kNslats3-1-4);
          moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
          if (detElemId % 2 == 0 && detElemId != 510)
@@ -347,7 +348,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
              GetEnvelopes(moduleId)->AddEnvelope(idSlatCh5, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3), 
                                                  TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
 
-         sprintf(idSlatCh5,"LA%d",3*kNslats3-2-i);
+         sprintf(idSlatCh5,"SLA%d",3*kNslats3-2-i);
          detElemId = 518 - (i + kNslats3-1-4);
          moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
          if (detElemId % 2 == 1 && detElemId != 517)
@@ -358,7 +359,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
                                                  TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) );   
        }
 
-       sprintf(idSlatCh6,"LB%d",kNslats3-1+i);  
+       sprintf(idSlatCh6,"SLB%d",kNslats3-1+i);  
        detElemId = 609 - (i  + kNslats3-1-4);
        moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 0)
@@ -368,7 +369,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
            GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, ySlat3, -zSlat3 + dzCh3),
                                     TGeoRotation("rot5",90,angle,90,270+angle,180,0) );
 
-       sprintf(idSlatCh6,"LB%d",3*kNslats3-2+i);
+       sprintf(idSlatCh6,"SLB%d",3*kNslats3-2+i);
        detElemId = 600 + (i + kNslats3-1-4);
        moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 0)
@@ -379,7 +380,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
                                                TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) ); 
 
        if (i > 0) { 
-         sprintf(idSlatCh6,"LB%d",kNslats3-1-i);
+         sprintf(idSlatCh6,"SLB%d",kNslats3-1-i);
          detElemId = 609 + (i + kNslats3-1-4);
          moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
          if (detElemId % 2 == 0 && detElemId != 610)
@@ -388,7 +389,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          else
              GetEnvelopes(moduleId)->AddEnvelope(idSlatCh6, detElemId, true, TGeoTranslation(xSlat3, -ySlat3, -zSlat3 + dzCh3),
                                                  TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
-         sprintf(idSlatCh6,"LB%d",3*kNslats3-2-i);
+         sprintf(idSlatCh6,"SLB%d",3*kNslats3-2-i);
          detElemId = 618 - (i + kNslats3-1-4);
          moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
          if (detElemId % 2 == 1 && detElemId != 617)
@@ -514,6 +515,12 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        trCTube->RegisterYourself();
        TGeoTranslation* trDTube = new TGeoTranslation("trDTube", -(kPcbLength+kVframeLength)/2., -kYpos3[1], 0.);
        trDTube->RegisterYourself();
+       TGeoTranslation* trCBTube = new TGeoTranslation("trCBTube", 0., ( kPcbHeight - kBframeHeight ) / 2., 0.);
+       trCBTube->Add(trCTube);
+       trCBTube->RegisterYourself();
+       TGeoTranslation* trDBTube = new TGeoTranslation("trDBTube", 0., ( kPcbHeight - kBframeHeight ) / 2., 0.);
+       trDBTube->Add(trDTube);
+       trDBTube->RegisterYourself();
 
        Float_t cPhi2 = (TMath::Pi()/2.-TMath::ACos((kSensHeight/2.)/(AliMUONConstants::Rmin(2)-kRframeLength)));
        TGeoBBox *boxCCut = new TGeoBBox("boxCCut",(cFramepar3[1]-cFramepar3[0]*TMath::Cos(cPhi2))/2., hFramepar3[1], cFramepar3[2]+0.001);
@@ -548,13 +555,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
                TString compOperation(csName);
                compOperation+="-tubeCut:tr";
                compOperation+=slatType[iSlatType];
-               compOperation+="Tube";
                if (strstr(volName,"B")){
-                 // Displacement
-                 TGeoTranslation* trB = new TGeoTranslation("trB", 0., -( kPcbHeight - kBframeHeight ) / 2., 0.);
-                 trB->RegisterYourself();
-                 compOperation.ReplaceAll("-tubeCut",":trB-tubeCut");
+                 compOperation+="B";
                }
+               compOperation+="Tube";
                compName=Form("composite%d%c",iCh,volLetter[iVol]);
                composite[lIndex] = new TGeoCompositeShape(compName, compOperation.Data()); 
                
@@ -601,8 +605,8 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          if (i == 0 && quadrant == 2) continue;
          if (i == 0 && quadrant == 4) continue;
 
-         sprintf(idSlatCh5,"LA%d",ConvertSlatNum(i,quadrant,kNslats3-1));
-         sprintf(idSlatCh6,"LB%d",ConvertSlatNum(i,quadrant,kNslats3-1));
+         sprintf(idSlatCh5,"SLA%d",ConvertSlatNum(i,quadrant,kNslats3-1));
+         sprintf(idSlatCh6,"SLB%d",ConvertSlatNum(i,quadrant,kNslats3-1));
          Int_t moduleSlatCh5 = GetModuleId(idSlatCh5);
          Int_t moduleSlatCh6 = GetModuleId(idSlatCh6);
          Float_t xvFrame  = (slatLength3[i] - kVframeLength)/2.;
@@ -656,7 +660,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          // position the panels and the insulating material 
          for (j = 0; j < kNPCB3[i]; j++){
            index++;
-           Float_t xx = kSensLength * (-kNPCB3[i]/2. + j + 0.5); 
+           xx = kSensLength * (-kNPCB3[i]/2. + j + 0.5); 
            Float_t xx2 = xx - pcbDLength3/2.; 
            Float_t xx3 = xx + (kSensLength-csvPcbLength)/2.;
 
@@ -751,17 +755,17 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       gMC->Gspos("S05B",2,"S05P",0.,-yborder,0.,0,"ONLY"); 
       gMC->Gspos("SB5B",1,"SB5P",0., yborder,0.,0,"ONLY"); 
       gMC->Gspos("SB5B",2,"SB5P",0.,-yborder,0.,0,"ONLY"); 
-      gMC->Gspos("SC5B",1,"SC5P",0., 0.,0.,0,"ONLY"); 
-      gMC->Gspos("SC5B",2,"SC5P",0., 0.,0.,rotB,"ONLY"); 
-      gMC->Gspos("SD5B",1,"SD5P",0., 0.,0.,0,"ONLY"); 
+      gMC->Gspos("SC5B",1,"SC5P",0., yborder,0.,rotB,"ONLY"); 
+      gMC->Gspos("SC5B",2,"SC5P",0.,-yborder,0.,0,"ONLY"); 
       gMC->Gspos("S05B",1,"SD5P",0., yborder,0.,0,"ONLY"); 
+      gMC->Gspos("SD5B",1,"SD5P",0.,-yborder,0.,0,"ONLY"); 
 
       gMC->Gspos("S06B",1,"S06P",0., yborder,0.,0,"ONLY"); 
       gMC->Gspos("S06B",2,"S06P",0.,-yborder,0.,0,"ONLY"); 
-      gMC->Gspos("SC6B",1,"SC6P",0., 0.,0.,0,"ONLY"); 
-      gMC->Gspos("SC6B",2,"SC6P",0., 0.,0.,rotB,"ONLY"); 
-      gMC->Gspos("SD6B",1,"SD6P",0., 0.,0.,0,"ONLY"); 
+      gMC->Gspos("SC6B",1,"SC6P",0., yborder,0.,rotB,"ONLY"); 
+      gMC->Gspos("SC6B",2,"SC6P",0.,-yborder,0.,0,"ONLY"); 
       gMC->Gspos("S06B",1,"SD6P",0., yborder,0.,0,"ONLY"); 
+      gMC->Gspos("SD6B",1,"SD6P",0.,-yborder,0.,0,"ONLY"); 
   
       // create the NULOC volume and position it in the horizontal frame
       gMC->Gsvolu("S05E","BOX",kNulocMaterial,nulocpar,3);
@@ -782,16 +786,16 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          gMC->Gspos("S05E",2*index  ,"SB5B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
        }
        if (xx > -xxmax3 && xx< xxmax3) {
-         gMC->Gspos("S05E",2*index-1,"SC5B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2., 0, "ONLY");
-         gMC->Gspos("S05E",2*index  ,"SC5B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2., 0, "ONLY");
-         gMC->Gspos("S06E",2*index-1,"SC6B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-         gMC->Gspos("S06E",2*index  ,"SC6B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+         gMC->Gspos("S05E",2*index-1,"SC5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2., 0, "ONLY");
+         gMC->Gspos("S05E",2*index  ,"SC5B", xx, 0., kBframeWidth/2.- kNulocWidth/2., 0, "ONLY");
+         gMC->Gspos("S06E",2*index-1,"SC6B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+         gMC->Gspos("S06E",2*index  ,"SC6B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
        }
        if (xx > xxmax4 && xx< xxmax) {
-         gMC->Gspos("S05E",2*index-1,"SD5B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-         gMC->Gspos("S05E",2*index  ,"SD5B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
-         gMC->Gspos("S06E",2*index-1,"SD6B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-         gMC->Gspos("S06E",2*index  ,"SD6B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+         gMC->Gspos("S05E",2*index-1,"SD5B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+         gMC->Gspos("S05E",2*index  ,"SD5B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+         gMC->Gspos("S06E",2*index-1,"SD6B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+         gMC->Gspos("S06E",2*index  ,"SD6B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
        }
       }
       
@@ -866,7 +870,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          cablepar6[0] = supporthlengthCh6/2.;
          lCableX6 = 0.;
          lCableDY = (kYpos3[i+1]+kYpos3[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
-         lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+         lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
          if(i==0){ // central slat is shorter (rounded)
            cablepar[0] -= (kPcbLength-csvPcbLength)/2.;
            lCableX = (kPcbLength-csvPcbLength)/2.;
@@ -908,7 +912,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          cablepar6[0] = (supporthlengthCh6-kPcbLength-kVframeLength)/2.;
          lCableX6 = (kPcbLength+kVframeLength)/2.;
          lCableDY = (kYpos3[i+1]+kYpos3[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
-         lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+         lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
          gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);       
          gMC->Gsposp("S05L",100*i+cIndex++,"S05S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
          gMC->Gsposp("S06L",100*i+cIndex6++,"S06S",lCableX6,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar6,3);    
@@ -933,7 +937,8 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        else {
          lCableDY = (kYpos3[i+1]+kYpos3[i+2])/2.-cablepar[1];
        }
-       lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+       lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
+
        if (i<=2){ // shortened pcb
          cablepar[0] += pcbDLength3/2.;
          lCableX -=  pcbDLength3/2.;
@@ -992,8 +997,8 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
     Float_t rFramepar4[5] = { AliMUONConstants::Rmin(3)-kRframeLength, AliMUONConstants::Rmin(3), kRframeWidth, rPhi1, rPhi2}; 
     Float_t vrFrameHeight = hFramepar[1]+kYpos41[1]-AliMUONConstants::Rmin(3)+kRframeLength;
     
-    char idSlatCh7[5];
-    char idSlatCh8[5];
+    char idSlatCh7[6];
+    char idSlatCh8[6];
     Float_t xSlat4;
     Float_t ySlat41 = 0;
     Float_t ySlat42 = 0;
@@ -1011,7 +1016,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       Float_t dzCh4 = dzCh;
       Float_t zSlat4 = (i%2 ==0)? -zSlat : zSlat; 
 
-      sprintf(idSlatCh7,"LC%d",kNslats4-1+i);
+      sprintf(idSlatCh7,"SLC%d",kNslats4-1+i);
       detElemId = 713 - (i + kNslats4-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1021,7 +1026,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, ySlat41, -zSlat4 + dzCh4),
                                   TGeoRotation("rot1",90,angle,90,270+angle,180,0) );
 
-      sprintf(idSlatCh7,"LC%d",3*kNslats4-2+i);
+      sprintf(idSlatCh7,"SLC%d",3*kNslats4-2+i);
       detElemId = 700 + (i + kNslats4-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1031,7 +1036,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(-xSlat4, ySlat41, zSlat4 - dzCh4),
                                   TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
       if (i > 0) { 
-       sprintf(idSlatCh7,"LC%d",kNslats4-1-i);
+       sprintf(idSlatCh7,"SLC%d",kNslats4-1-i);
        detElemId = 713 + (i + kNslats4-1-6);
         moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 0 && detElemId != 714)
@@ -1040,7 +1045,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        else
            GetEnvelopes(moduleId)->AddEnvelope(idSlatCh7, detElemId, true, TGeoTranslation(xSlat4, -ySlat41, -zSlat4 + dzCh4),
                                                TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
-       sprintf(idSlatCh7,"LC%d",3*kNslats4-2-i);
+       sprintf(idSlatCh7,"SLC%d",3*kNslats4-2-i);
        detElemId = 726 - (i + kNslats4-1-6);
         moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 1 && detElemId != 725 )
@@ -1051,7 +1056,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
                                     TGeoRotation("rot4",90,180+angle,90,270+angle,0,0) ); 
       }
 
-      sprintf(idSlatCh8,"LD%d",kNslats4-1+i);
+      sprintf(idSlatCh8,"SLD%d",kNslats4-1+i);
       detElemId = 813 - (i + kNslats4-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1061,7 +1066,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, ySlat42, -zSlat4 + dzCh4),
                                   TGeoRotation("rot5",90,angle,90,270+angle,180,0) ); 
 
-      sprintf(idSlatCh8,"LD%d",3*kNslats4-2+i);
+      sprintf(idSlatCh8,"SLD%d",3*kNslats4-2+i);
       detElemId = 800 + (i + kNslats4-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1071,7 +1076,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(-xSlat4, ySlat42, zSlat4 - dzCh4),
                                   TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) );
       if (i > 0) { 
-       sprintf(idSlatCh8,"LD%d",kNslats4-1-i);
+       sprintf(idSlatCh8,"SLD%d",kNslats4-1-i);
        detElemId = 813 + (i + kNslats4-1-6);
         moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 0 && detElemId != 814)
@@ -1080,7 +1085,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        else
            GetEnvelopes(moduleId)->AddEnvelope(idSlatCh8, detElemId, true, TGeoTranslation(xSlat4, -ySlat42, -zSlat4 + dzCh4),
                                                TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
-       sprintf(idSlatCh8,"LD%d",3*kNslats4-2-i);
+       sprintf(idSlatCh8,"SLD%d",3*kNslats4-2-i);
        detElemId = 826 - (i + kNslats4-1-6);
         moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 1 && detElemId != 825 )
@@ -1179,6 +1184,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       // Displacement
       TGeoTranslation* trDTube4 = new TGeoTranslation("trDTube4", -(kPcbLength+kVframeLength)/2., -kYpos41[1], 0.);
       trDTube4->RegisterYourself();
+      TGeoTranslation* trDBTube4 = new TGeoTranslation("trDBTube4", 0., ( kPcbHeight - kBframeHeight ) / 2., 0.);
+      trDBTube4->Add(trDTube4);
+      trDBTube4->RegisterYourself();
+
       TObjArray composite4(nSlatType*((nVol+1)*2));
       new TGeoBBox("box4DCut",(kPcbLength+kVframeLength)/2., hFramepar[1], vFramepar[2]+0.001);
       // Displacement
@@ -1208,16 +1217,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
              TString compOperation(csName);
              compOperation+="-tube4Cut:tr";
              compOperation+=slatType[iSlatType];
-             compOperation+="Tube4";
              if (strstr(volName,"B")){
-               // Displacement
-               Float_t posXb = 0.;
-               Float_t posYb = -( kPcbHeight - kBframeHeight ) / 2.;
-               Float_t posZb = 0.;
-               TGeoTranslation* trB = new TGeoTranslation("trB", posXb, posYb, posZb);
-               trB->RegisterYourself();
-               compOperation.ReplaceAll("-tube4Cut",":trB-tube4Cut");
-             }
+               compOperation+="B";
+             }       
+             compOperation+="Tube4";
              compName=Form("composite4%d%c",iCh,volLetter[iVol]);
              composite4[lIndex] = new TGeoCompositeShape(compName, compOperation.Data()); 
              
@@ -1262,8 +1265,8 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        if (i == 0 && quadrant == 2) continue;
        if (i == 0 && quadrant == 4) continue;
 
-       sprintf(idSlatCh7,"LC%d",ConvertSlatNum(i,quadrant,kNslats4-1));
-       sprintf(idSlatCh8,"LD%d",ConvertSlatNum(i,quadrant,kNslats4-1));
+       sprintf(idSlatCh7,"SLC%d",ConvertSlatNum(i,quadrant,kNslats4-1));
+       sprintf(idSlatCh8,"SLD%d",ConvertSlatNum(i,quadrant,kNslats4-1));
        Int_t moduleSlatCh7 = GetModuleId(idSlatCh7);
        Int_t moduleSlatCh8 = GetModuleId(idSlatCh8);
 
@@ -1284,7 +1287,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        // position the panels and the insulating material 
        for (j = 0; j < kNPCB4[i]; j++){
          index++;
-         Float_t xx = kSensLength * (-kNPCB4[i]/2.+j+.5); 
+         xx = kSensLength * (-kNPCB4[i]/2.+j+.5); 
          Float_t zPanel = spar[2] - nomexbpar[2]; 
          if (i==1 && j==0){ // Rounded pcb of rounded slat
            GetEnvelopes(moduleSlatCh7)->AddEnvelopeConstituent("SD7X", idSlatCh7, 2*index-1,TGeoTranslation(xx,0.,zPanel));
@@ -1339,12 +1342,12 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
     Float_t yborder = ( kPcbHeight - kBframeHeight ) / 2.; 
     gMC->Gspos("S07B",1,"S07P",0., yborder,0.,0,"ONLY"); 
     gMC->Gspos("S07B",2,"S07P",0.,-yborder,0.,0,"ONLY");
-    gMC->Gspos("SD7B",1,"SD7P",0., 0.,0.,0,"ONLY"); 
-    gMC->Gspos("S07B",1,"SD7P",0., yborder,0.,0,"ONLY"); 
+    gMC->Gspos("S07B",1,"SD7P",0., yborder,0.,0,"ONLY");
+    gMC->Gspos("SD7B",1,"SD7P",0.,-yborder,0.,0,"ONLY");  
     gMC->Gspos("S08B",1,"S08P",0., yborder,0.,0,"ONLY"); 
     gMC->Gspos("S08B",2,"S08P",0.,-yborder,0.,0,"ONLY"); 
-    gMC->Gspos("SD8B",1,"SD8P",0., 0.,0.,0,"ONLY"); 
     gMC->Gspos("S08B",1,"SD8P",0., yborder,0.,0,"ONLY"); 
+    gMC->Gspos("SD8B",1,"SD8P",0.,-yborder,0.,0,"ONLY"); 
 
     // create the NULOC volume and position it in the horizontal frame
 
@@ -1361,10 +1364,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       gMC->Gspos("S08E",2*index  ,"S08B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
     }
     if (xx > xxmax4 && xx< xxmax) {
-      gMC->Gspos("S07E",2*index-1,"SD7B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-      gMC->Gspos("S07E",2*index  ,"SD7B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
-      gMC->Gspos("S08E",2*index-1,"SD8B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-      gMC->Gspos("S08E",2*index  ,"SD8B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S07E",2*index-1,"SD7B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S07E",2*index  ,"SD7B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S08E",2*index-1,"SD8B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S08E",2*index  ,"SD8B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
     }
 
     //
@@ -1427,7 +1430,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        lCableX = kXpos4[i]/2.;
        lCableDY = (kYpos41[i+1]+kYpos41[i+2])/2.-cablepar[1];
        lCableDY8 = (kYpos42[i+1]+kYpos42[i+2])/2.-cablepar[1];
-       lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+       lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
        gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);  
        gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
        gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3);       
@@ -1464,7 +1467,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        lCableX = (kPcbLength+kVframeLength)/2.;
        lCableDY = (kYpos41[i+1]+kYpos41[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
        lCableDY8 = (kYpos42[i+1]+kYpos42[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
-       lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+       lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
        gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3); 
        gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3); 
        gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3); 
@@ -1482,7 +1485,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        lCableDY = (kYpos41[i+1]+kYpos41[i+2])/2.-cablepar[1];
        lCableDY8 = (kYpos42[i+1]+kYpos42[i+2])/2.-cablepar[1];
       }
-      lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+      lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
       gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3); 
       gMC->Gsposp("S07L",10*i+cIndex++,"S07S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3); 
       gMC->Gsposp("S08L",10*i+cIndex8++,"S08S",lCableX,lCableY8+lCableDY8,lCableZ,0,"ONLY",cablepar,3); 
@@ -1546,8 +1549,8 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
     Float_t rFramepar5[5] = { AliMUONConstants::Rmin(4)-kRframeLength, AliMUONConstants::Rmin(4), kRframeWidth, rPhi1, rPhi2}; 
     Float_t vrFrameHeight = hFramepar[1]+kYpos5[1]-AliMUONConstants::Rmin(4)+kRframeLength;
 
-    char idSlatCh9[5];
-    char idSlatCh10[5];
+    char idSlatCh9[6];
+    char idSlatCh10[6];
     Float_t xSlat5;
     Float_t ySlat5 = 0;
     angle = 0.;
@@ -1565,7 +1568,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       Float_t dzCh5  = dzCh;
       Float_t zSlat5 = (i%2 ==0)? -zSlat : zSlat; 
 
-      sprintf(idSlatCh9,"LE%d",kNslats5-1+i);
+      sprintf(idSlatCh9,"SLE%d",kNslats5-1+i);
       detElemId = 913 - (i + kNslats5-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1574,7 +1577,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       else
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
                                              TGeoRotation("rot1",90,angle,90,270+angle,180,0) );
-      sprintf(idSlatCh9,"LE%d",3*kNslats5-2+i);
+      sprintf(idSlatCh9,"SLE%d",3*kNslats5-2+i);
       detElemId = 900 + (i + kNslats5-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1584,7 +1587,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
                                              TGeoRotation("rot2",90,180+angle,90,90+angle,180,0) );
       if (i > 0) { 
-       sprintf(idSlatCh9,"LE%d",kNslats5-1-i);
+       sprintf(idSlatCh9,"SLE%d",kNslats5-1-i);
        detElemId = 913 + (i + kNslats5-1-6);
        moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0  && detElemId != 914)
@@ -1593,7 +1596,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       else
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh9, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
                                     TGeoRotation("rot3",90,angle,90,270+angle,180,0) );
-       sprintf(idSlatCh9,"LE%d",3*kNslats5-2-i);
+       sprintf(idSlatCh9,"SLE%d",3*kNslats5-2-i);
        detElemId = 926 - (i + kNslats5-1-6);
        moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 1 && detElemId != 925 )
@@ -1604,7 +1607,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
                                                TGeoRotation("rot4",90,180+angle,90,270+angle,0,0)  );   
       }
 
-      sprintf(idSlatCh10,"LF%d",kNslats5-1+i);
+      sprintf(idSlatCh10,"SLF%d",kNslats5-1+i);
       detElemId = 1013 - (i + kNslats5-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1614,7 +1617,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, ySlat5, -zSlat5 + dzCh5),
                                              TGeoRotation("rot5",90,angle,90,270+angle,180,0) );
 
-      sprintf(idSlatCh10,"LF%d",3*kNslats5-2+i);
+      sprintf(idSlatCh10,"SLF%d",3*kNslats5-2+i);
       detElemId = 1000 + (i + kNslats5-1-6);
       moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0)
@@ -1624,7 +1627,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(-xSlat5, ySlat5, zSlat5 - dzCh5),
                                              TGeoRotation("rot6",90,180+angle,90,90+angle,180,0) ); 
       if (i > 0) { 
-       sprintf(idSlatCh10,"LF%d",kNslats5-1-i);
+       sprintf(idSlatCh10,"SLF%d",kNslats5-1-i);
        detElemId = 1013 + (i + kNslats5-1-6);
         moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
       if (detElemId % 2 == 0  && detElemId != 1014)
@@ -1633,7 +1636,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       else
          GetEnvelopes(moduleId)->AddEnvelope(idSlatCh10, detElemId, true, TGeoTranslation(xSlat5, -ySlat5, -zSlat5 + dzCh5),
                                     TGeoRotation("rot7",90,angle,90,270+angle,180,0) );
-       sprintf(idSlatCh10,"LF%d",3*kNslats5-2-i);
+       sprintf(idSlatCh10,"SLF%d",3*kNslats5-2-i);
        detElemId = 1026 - (i + kNslats5-1-6);
         moduleId = AliMpDEManager::GetGeomModuleId(detElemId);
        if (detElemId % 2 == 1 && detElemId != 1025 )
@@ -1731,6 +1734,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       // Displacement
       TGeoTranslation* trDTube5 = new TGeoTranslation("trDTube5", -(kPcbLength+kVframeLength)/2., -kYpos5[1], 0.);
       trDTube5->RegisterYourself();
+      TGeoTranslation* trDBTube5 = new TGeoTranslation("trDBTube5", 0., ( kPcbHeight - kBframeHeight ) / 2., 0.);
+      trDBTube5->Add(trDTube5);
+      trDBTube5->RegisterYourself();
+
       TObjArray composite5(nSlatType*((nVol+1)*2));
       new TGeoBBox("box5DCut",(kPcbLength+kVframeLength)/2., hFramepar[1], vFramepar[2]+0.001);
       // Displacement
@@ -1760,13 +1767,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
              TString compOperation(csName);
              compOperation+="-tube5Cut:tr";
              compOperation+=slatType[iSlatType];
-             compOperation+="Tube5";
              if (strstr(volName,"B")){
-               // Displacement
-               TGeoTranslation* trB = new TGeoTranslation("trB", 0., -(kPcbHeight - kBframeHeight)/2., 0.);
-               trB->RegisterYourself();
-               compOperation.ReplaceAll("-tube5Cut",":trB-tube5Cut");
+               compOperation+="B";
              }
+             compOperation+="Tube5";
              compName=Form("composite5%d%c",iCh,volLetter[iVol]);
              composite5[lIndex] = new TGeoCompositeShape(compName, compOperation.Data()); 
              
@@ -1810,8 +1814,8 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        if (i == 0 && quadrant == 2) continue;
        if (i == 0 && quadrant == 4) continue;
 
-       sprintf(idSlatCh9,"LE%d",ConvertSlatNum(i,quadrant,kNslats5-1));
-       sprintf(idSlatCh10,"LF%d",ConvertSlatNum(i,quadrant,kNslats5-1));
+       sprintf(idSlatCh9,"SLE%d",ConvertSlatNum(i,quadrant,kNslats5-1));
+       sprintf(idSlatCh10,"SLF%d",ConvertSlatNum(i,quadrant,kNslats5-1));
        Int_t moduleSlatCh9 = GetModuleId(idSlatCh9);
        Int_t moduleSlatCh10 = GetModuleId(idSlatCh10);
        Float_t xvFrame  = (slatLength5[i] - kVframeLength)/2.; // ok
@@ -1832,7 +1836,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        // position the panels and the insulating material 
        for (j = 0; j < kNPCB5[i]; j++){
          index++;
-         Float_t xx = kSensLength * (-kNPCB5[i]/2.+j+.5); 
+         xx = kSensLength * (-kNPCB5[i]/2.+j+.5); 
 
          Float_t zPanel = spar[2] - nomexbpar[2]; 
          if (i==1 && j==0){ // Rounded pcb of rounded slat 
@@ -1889,12 +1893,12 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
     Float_t yborder = ( kPcbHeight - kBframeHeight ) / 2.; 
     gMC->Gspos("S09B",1,"S09P",0., yborder,0.,0,"ONLY"); 
     gMC->Gspos("S09B",2,"S09P",0.,-yborder,0.,0,"ONLY"); 
-    gMC->Gspos("SD9B",1,"SD9P",0., 0.,0.,0,"ONLY"); 
     gMC->Gspos("S09B",1,"SD9P",0., yborder,0.,0,"ONLY"); 
+    gMC->Gspos("SD9B",1,"SD9P",0.,-yborder,0.,0,"ONLY"); 
     gMC->Gspos("S10B",1,"S10P",0., yborder,0.,0,"ONLY"); 
     gMC->Gspos("S10B",2,"S10P",0.,-yborder,0.,0,"ONLY"); 
-    gMC->Gspos("SD0B",1,"SD0P",0., 0.,0.,0,"ONLY"); 
     gMC->Gspos("S10B",1,"SD0P",0., yborder,0.,0,"ONLY"); 
+    gMC->Gspos("SD0B",1,"SD0P",0.,-yborder,0.,0,"ONLY"); 
 
     //      // create the NULOC volume and position it in the horizontal frame
 
@@ -1911,10 +1915,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       gMC->Gspos("S10E",2*index  ,"S10B", xx, 0., kBframeWidth/2. - kNulocWidth/2, 0, "ONLY");
     }
     if (xx > xxmax4 && xx< xxmax) {
-      gMC->Gspos("S09E",2*index-1,"SD9B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-      gMC->Gspos("S09E",2*index  ,"SD9B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
-      gMC->Gspos("S10E",2*index-1,"SD0B", xx, -yborder,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
-      gMC->Gspos("S10E",2*index  ,"SD0B", xx, -yborder, kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S09E",2*index-1,"SD9B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S09E",2*index  ,"SD9B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S10E",2*index-1,"SD0B", xx, 0.,-kBframeWidth/2.+ kNulocWidth/2, 0, "ONLY");
+      gMC->Gspos("S10E",2*index  ,"SD0B", xx, 0., kBframeWidth/2.- kNulocWidth/2, 0, "ONLY");
     }
 
     //    
@@ -1970,7 +1974,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        else {
          lCableDY = (kYpos5[i+1]+kYpos5[i+2])/2.-cablepar[1];
        }
-       lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+       lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
        gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3);  
        gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3);
        // Then bottom cables
@@ -1997,7 +2001,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
        cablepar[0] = (supporthlength-kPcbLength-kVframeLength)/2.;
        lCableX = (kPcbLength+kVframeLength)/2.;
        lCableDY = (kYpos5[i+1]+kYpos5[i+2])/2.-cablepar[1]; // half way between 2 slats on same side
-       lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+       lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);
        gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3); 
        gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3); 
       }        
@@ -2012,7 +2016,7 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
       else {
        lCableDY = (kYpos5[i+1]+kYpos5[i+2])/2.-cablepar[1];
       }
-      lCableZ = TMath::Power(-1,i)*(nomexthickness+carbonthickness+(iCable++)*kCableWidth)/2.;
+      lCableZ = TMath::Power(-1,i)*(nomexthickness/2.+carbonthickness+(-1+iCable++)*kCableWidth+kCableWidth/2.);       
       gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,lCableY+lCableDY,lCableZ,0,"ONLY",cablepar,3); 
       gMC->Gsposp("S09L",10*i+cIndex++,"S09S",lCableX,-(lCableY+lCableDY),lCableZ,0,"ONLY",cablepar,3); 
       if(i>0){
@@ -2050,11 +2054,10 @@ void AliMUONSlatGeometryBuilder::CreateGeometry()
 
 }
 
-
 //______________________________________________________________________________
-void AliMUONSlatGeometryBuilder::SetTransformations()
+void AliMUONSlatGeometryBuilder::SetVolumes()
 {
-/// Defines the transformations for the station345 chambers.
+/// Defines the volumes for the station345 chambers.
 
   if (gAlice->GetModule("DIPO")) {
     // if DIPO is preset, the whole station will be placed in DDIP volume
@@ -2087,6 +2090,13 @@ void AliMUONSlatGeometryBuilder::SetTransformations()
   SetVolume(13, "SC09O", true);
   SetVolume(14, "SC10I", true);
   SetVolume(15, "SC10O", true);
+}
+
+
+//______________________________________________________________________________
+void AliMUONSlatGeometryBuilder::SetTransformations()
+{
+/// Defines the transformations for the station345 chambers.
 
 // Stations 345 are not perpendicular to the beam axis
 // See AliMUONConstants class