]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZEROv7.cxx
changed plotting style
[u/mrichter/AliRoot.git] / VZERO / AliVZEROv7.cxx
index 5d3797440884248f565d0469d222289fcc4f9a26..ab9d59f580550172067b1236c2330453776c37f4 100644 (file)
@@ -76,7 +76,7 @@ AliVZEROv7:: AliVZEROv7():AliVZERO(),
    fV0CLidThickness(0.30),
    fV0CCellThickness(2.00),
    fV0CBoxThickness(4.70),
-   fV0COffsetFibers(1.0),
+   fV0COffsetFibers(1.125),
    fV0CLightYield(93.75),
    fV0CLightAttenuation(0.05),
    fV0CnMeters(15.0),
@@ -138,7 +138,7 @@ AliVZEROv7::AliVZEROv7(const char *name, const char *title):AliVZERO(name,title)
    fV0CLidThickness(0.30),
    fV0CCellThickness(2.00),
    fV0CBoxThickness(4.70),
-   fV0COffsetFibers(1.0),
+   fV0COffsetFibers(1.125),
    fV0CLightYield(93.75),
    fV0CLightAttenuation(0.05),
    fV0CnMeters(15.0),
@@ -272,13 +272,45 @@ void AliVZEROv7::CreateGeometry()
     partube[0] =   fV0CRMin;
     partube[1] =   fV0CRBox;
     partube[2] =   fV0CLidThickness/2.0;
-    TGeoTube   *sV0CA = new TGeoTube("V0CA", partube[0], partube[1], partube[2]);
-    TGeoVolume *v0CA  = new TGeoVolume("V0CA",sV0CA,medV0CCar);
-    TGeoTranslation *tr2 = new TGeoTranslation(0.,0., fV0CBoxThickness/2.0-partube[2]);
-    TGeoTranslation *tr3 = new TGeoTranslation(0.,0.,-fV0CBoxThickness/2.0+partube[2]);
-    v0RI->AddNode(v0CA,1,tr2);
-    v0RI->AddNode(v0CA,2,tr3);
-    v0CA->SetLineColor(kYellow);
+    //    TGeoTube   *sV0CA = new TGeoTube("V0CA", partube[0], partube[1], partube[2]);
+    //    TGeoVolume *v0CA  = new TGeoVolume("V0CA",sV0CA,medV0CCar);
+    //    TGeoTranslation *tr2 = new TGeoTranslation(0.,0., fV0CBoxThickness/2.0-partube[2]);
+    //    TGeoTranslation *tr3 = new TGeoTranslation(0.,0.,-fV0CBoxThickness/2.0+partube[2]);
+    //    v0RI->AddNode(v0CA,1,tr2);
+    //    v0RI->AddNode(v0CA,2,tr3);
+    //    v0CA->SetLineColor(kYellow);
+
+    Float_t rInt1 = 11.5, rOut1 = 20.0, rInt2 = 9.0;
+
+    TGeoTube   *sV0CA4 = new TGeoTube("V0CA4", partube[0], rInt2, partube[2] - 0.1);
+    TGeoVolume *v0CA4  = new TGeoVolume("V0CA4",sV0CA4,medV0CCar);
+    TGeoTranslation *tr21 = new TGeoTranslation(0.,0., fV0CBoxThickness/2.0-partube[2] + 0.1);
+    v0RI->AddNode(v0CA4,1,tr21);
+    v0CA4->SetLineColor(kYellow);
+
+    TGeoTube   *sV0CA5 = new TGeoTube("V0CA5", rInt2, partube[1], partube[2]);
+    TGeoVolume *v0CA5  = new TGeoVolume("V0CA5",sV0CA5,medV0CCar);
+    TGeoTranslation *tr22 = new TGeoTranslation(0.,0., fV0CBoxThickness/2.0-partube[2]);
+    v0RI->AddNode(v0CA5,1,tr22);
+    v0CA5->SetLineColor(kYellow);
+
+    TGeoTube   *sV0CA1 = new TGeoTube("V0CA1",partube[0], rInt1, partube[2]);
+    TGeoVolume *v0CA1  = new TGeoVolume("V0CA1",sV0CA1,medV0CCar);
+    TGeoTranslation *tr31 = new TGeoTranslation(0.,0.,-fV0CBoxThickness/2.0+partube[2]);
+    v0RI->AddNode(v0CA1,1,tr31);
+    v0CA1->SetLineColor(kYellow);
+
+    TGeoTube   *sV0CA2 = new TGeoTube("V0CA2", rInt1, rOut1, partube[2] - 0.1);
+    TGeoVolume *v0CA2  = new TGeoVolume("V0CA2",sV0CA2,medV0CCar);
+    TGeoTranslation *tr32 = new TGeoTranslation(0.,0.,-fV0CBoxThickness/2.0+partube[2] - 0.1);
+    v0RI->AddNode(v0CA2,1,tr32);
+    v0CA2->SetLineColor(kYellow);
+
+    TGeoTube   *sV0CA3 = new TGeoTube("V0CA3", rOut1, partube[1], partube[2]);
+    TGeoVolume *v0CA3  = new TGeoVolume("V0CA3",sV0CA3,medV0CCar);
+    TGeoTranslation *tr33 = new TGeoTranslation(0.,0.,-fV0CBoxThickness/2.0+partube[2]);
+    v0RI->AddNode(v0CA3,1,tr33);
+    v0CA3->SetLineColor(kYellow);
 
     // Creation of aluminum rings 3.0 mm thick to maintain the v0RI pieces : 
     partube[0] =   fV0CRMin - 0.3;
@@ -312,7 +344,7 @@ void AliVZEROv7::CreateGeometry()
     TGeoTubeSeg *sV0R1 = new TGeoTubeSeg("V0R1", partubs[0], partubs[1], partubs[2],
                                         partubs[3], partubs[4]);
     TGeoVolume  *v0R1  = new TGeoVolume("V0R1",sV0R1,medV0CSci);                                      
-    TGeoTranslation *tr4 = new TGeoTranslation(0.,0.,-offset);
+    TGeoTranslation *tr4 = new TGeoTranslation(0.,0., offset);
     v0R0->AddNode(v0R1,1,tr4);
     v0R1->SetLineColor(kColorVZERO);
 
@@ -324,7 +356,7 @@ void AliVZEROv7::CreateGeometry()
     TGeoTubeSeg *sV0R2 = new TGeoTubeSeg("V0R2", partubs[0], partubs[1], partubs[2],
                                         partubs[3], partubs[4]);
     TGeoVolume  *v0R2  = new TGeoVolume("V0R2",sV0R2,medV0CSci);
-    TGeoTranslation *tr5 = new TGeoTranslation(0.0,0.2,-offset + fV0COffsetFibers);
+    TGeoTranslation *tr5 = new TGeoTranslation(0.0,0.2, offset - fV0COffsetFibers);
     v0R0->AddNode(v0R2,1,tr5);
     v0R2->SetLineColor(kColorVZERO);
 
@@ -338,7 +370,7 @@ void AliVZEROv7::CreateGeometry()
     TGeoTubeSeg *sV0R3 = new TGeoTubeSeg("V0R3", partubs[0], partubs[1], partubs[2],
                                         partubs[3], partubs[4]);
     TGeoVolume  *v0R3  = new TGeoVolume("V0R3",sV0R3,medV0CSci);
-    TGeoTranslation *tr6 = new TGeoTranslation(0.,0.2,-offset + 2.0*fV0COffsetFibers);
+    TGeoTranslation *tr6 = new TGeoTranslation(0.,0.2, offset - 2.0*fV0COffsetFibers);
     v0R0->AddNode(v0R3,1,tr6);
     v0R3->SetLineColor(kColorVZERO);
     partubs[3]     = 112.5-22.5;
@@ -359,7 +391,7 @@ void AliVZEROv7::CreateGeometry()
     TGeoTubeSeg *sV0R5 = new TGeoTubeSeg("V0R5", partubs[0], partubs[1], partubs[2],
                                         partubs[3], partubs[4]);
     TGeoVolume  *v0R5  = new TGeoVolume("V0R5",sV0R5,medV0CSci);
-    TGeoTranslation *tr7 = new TGeoTranslation(0.,0.0,-offset + 2.0*fV0COffsetFibers);                                       
+    TGeoTranslation *tr7 = new TGeoTranslation(0.,0.0, offset - 2.0*fV0COffsetFibers + 0.25);                                        
     v0R0->AddNode(v0R5,1,tr7);
     v0R5->SetLineColor(kColorVZERO);
     partubs[3]     = 112.5-22.5+x;
@@ -449,13 +481,13 @@ void AliVZEROv7::CreateGeometry()
     TGeoRotation *rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0);
-    double FEEshiftR2Sec1 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
-    TGeoCombiTrans *posFicFEEBSec1 = new TGeoCombiTrans("posFicFEEBSec1", FEEshiftR2Sec1*cos225 + 2.0, 0, 7.5, rot);
+    double aFEEshiftR2Sec1 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
+    TGeoCombiTrans *posFicFEEBSec1 = new TGeoCombiTrans("posFicFEEBSec1", aFEEshiftR2Sec1*cos225 + 2.0, 0, 7.5, rot);
     posFicFEEBSec1->RegisterYourself();
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0+45.0);
-    TGeoCombiTrans *posFicFEEBUpSec1 = new TGeoCombiTrans("posFicFEEBUpSec1", (FEEshiftR2Sec1*cos225 + 2.0 )*cos45, (FEEshiftR2Sec1*cos225 + 2.0 )*sin45, 7.5, rot);
+    TGeoCombiTrans *posFicFEEBUpSec1 = new TGeoCombiTrans("posFicFEEBUpSec1", (aFEEshiftR2Sec1*cos225 + 2.0 )*cos45, (aFEEshiftR2Sec1*cos225 + 2.0 )*sin45, 7.5, rot);
     posFicFEEBUpSec1->RegisterYourself();
     for (int i=0;i<2;i++) {
     v0APts[0+8*i] = fV0AOctH2/2.;             v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
@@ -464,11 +496,11 @@ void AliVZEROv7::CreateGeometry()
     v0APts[6+8*i] = -fV0AOctH2/2.;            v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
     }
     new TGeoArb8("sV0AFicOct2Sec1", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
-    TGeoTranslation *posFicOct2Sec1 = new TGeoTranslation("posFicOct2Sec1",(FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
+    TGeoTranslation *posFicOct2Sec1 = new TGeoTranslation("posFicOct2Sec1",(aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
     posFicOct2Sec1->RegisterYourself();  
     rot = new TGeoRotation("rot");
     rot->RotateZ(-90.0+45.0+90.0);
-    TGeoCombiTrans *posFicOct2UpSec1 = new TGeoCombiTrans("posFicOct2UpSec1",((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
+    TGeoCombiTrans *posFicOct2UpSec1 = new TGeoCombiTrans("posFicOct2UpSec1",((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
     posFicOct2UpSec1->RegisterYourself(); 
 
     /// Frame
@@ -747,8 +779,8 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(+90.0);
-    double FEEshiftR = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
-    v0LE->AddNode(v0AFEE,1, new TGeoCombiTrans( FEEshiftR*cos225+2.0, 0, 7.5, rot));
+    double aFEEshiftR = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
+    v0LE->AddNode(v0AFEE,1, new TGeoCombiTrans( aFEEshiftR*cos225+2.0, 0, 7.5, rot));
     for (int i=0;i<2;i++) {
     v0APts[0+8*i] = fV0AOctH2/2.;             v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
     v0APts[2+8*i] = fV0AOctH2/2.;              v0APts[3+8*i] = -fV0AFEEBHt/2.- 2.5;
@@ -758,7 +790,7 @@ void AliVZEROv7::CreateGeometry()
     TGeoArb8 *sV0AFEEOct2 = new TGeoArb8("sV0AFEEOct2", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
     TGeoVolume *v0AFEEOct2 = new TGeoVolume("V0AFEEOct2",sV0AFEEOct2, medV0ASup);
     v0AFEEOct2->SetLineColor(kV0AColorOct);
-    v0LE->AddNode(v0AFEEOct2,1, new TGeoTranslation((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0));
+    v0LE->AddNode(v0AFEEOct2,1, new TGeoTranslation((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0));
 
 
     /// Definition sector 2
@@ -798,8 +830,8 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0);
-    double FEEshiftR2Sec2 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
-    TGeoCombiTrans *posFicFEEBSec2 = new TGeoCombiTrans("posFicFEEBSec2", FEEshiftR2Sec2*cos225 + 2.0, 0, 7.5, rot);
+    double aFEEshiftR2Sec2 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
+    TGeoCombiTrans *posFicFEEBSec2 = new TGeoCombiTrans("posFicFEEBSec2", aFEEshiftR2Sec2*cos225 + 2.0, 0, 7.5, rot);
     posFicFEEBSec2->RegisterYourself();
     for (int i=0;i<2;i++) {
     v0APts[0+8*i] = fV0AOctH2/2.;             v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
@@ -808,7 +840,7 @@ void AliVZEROv7::CreateGeometry()
     v0APts[6+8*i] = -fV0AOctH2/2.;            v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
     }
     new TGeoArb8("sV0AFicOct2Sec2", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
-    TGeoTranslation *posFicOct2Sec2 = new TGeoTranslation("posFicOct2Sec2",(FEEshiftR2Sec2*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
+    TGeoTranslation *posFicOct2Sec2 = new TGeoTranslation("posFicOct2Sec2",(aFEEshiftR2Sec2*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
     posFicOct2Sec2->RegisterYourself();  
 
     /// Frame
@@ -1051,10 +1083,10 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(+90.0-45.0+90);
-    v0LE->AddNode(v0AFEE2,1, new TGeoCombiTrans( (FEEshiftR2Sec1*cos225 + 2.0)*cos45, (FEEshiftR2Sec1*cos225 + 2.0)*sin45, 7.5, rot));
+    v0LE->AddNode(v0AFEE2,1, new TGeoCombiTrans( (aFEEshiftR2Sec1*cos225 + 2.0)*cos45, (aFEEshiftR2Sec1*cos225 + 2.0)*sin45, 7.5, rot));
     rot = new TGeoRotation("rot");
     rot->RotateZ(-90.0+45.0+90.0);
-    v0LE->AddNode(v0AFEEOct2,2, new TGeoCombiTrans(((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot));
+    v0LE->AddNode(v0AFEEOct2,2, new TGeoCombiTrans(((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot));
 
    
     //Upper supports
@@ -1113,11 +1145,11 @@ void AliVZEROv7::CreateGeometry()
     new TGeoCompositeShape("sV0AChaSec3","sV0ACha12Sec3+sV0ANailsSciHolesSec3");
     new TGeoTubeSeg("sV0AFicR5Sec3", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec3, 0, 45);
     new TGeoBBox("sV0AFicFEEBSec3", fV0AFEEBWd/2., fV0AFEEBHt/2., fV0AFEEBTh/2.);
-    double FEEshiftR2Sec3 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
+    double aFEEshiftR2Sec3 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0+45.0);
-    TGeoCombiTrans *posFicFEEBSec3 = new TGeoCombiTrans("posFicFEEBSec3", (FEEshiftR2Sec3*cos225 + 2.0 )*cos45, (FEEshiftR2Sec3*cos225 + 2.0 )*sin45, 7.5, rot);
+    TGeoCombiTrans *posFicFEEBSec3 = new TGeoCombiTrans("posFicFEEBSec3", (aFEEshiftR2Sec3*cos225 + 2.0 )*cos45, (aFEEshiftR2Sec3*cos225 + 2.0 )*sin45, 7.5, rot);
     posFicFEEBSec3->RegisterYourself();
     for (int i=0;i<2;i++) {
     v0APts[0+8*i] = fV0AOctH2/2.;             v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
@@ -1128,7 +1160,7 @@ void AliVZEROv7::CreateGeometry()
     new TGeoArb8("sV0AFicOct2Sec3", (fV0ASciWd+2*fV0AOctWd)/2., v0APts); 
     rot = new TGeoRotation("rot");
     rot->RotateZ(-90.0+45.0+90.0);
-    TGeoCombiTrans *posFicOct2UpSec3 = new TGeoCombiTrans("posFicOct2UpSec3",((FEEshiftR2Sec3*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec3*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
+    TGeoCombiTrans *posFicOct2UpSec3 = new TGeoCombiTrans("posFicOct2UpSec3",((aFEEshiftR2Sec3*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((aFEEshiftR2Sec3*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
     posFicOct2UpSec3->RegisterYourself();
 
     /// Frame
@@ -1371,10 +1403,10 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0+45.0-90);
-    v0LE->AddNode(v0AFEE3,1, new TGeoCombiTrans( -(FEEshiftR2Sec1*cos225 + 2.0)*cos45, (FEEshiftR2Sec1*cos225 + 2.0)*sin45, 7.5, rot) );
+    v0LE->AddNode(v0AFEE3,1, new TGeoCombiTrans( -(aFEEshiftR2Sec1*cos225 + 2.0)*cos45, (aFEEshiftR2Sec1*cos225 + 2.0)*sin45, 7.5, rot) );
     rot = new TGeoRotation("rot");
     rot->RotateZ(+90.0-45.0-90.0);
-    v0LE->AddNode(v0AFEEOct2,3, new TGeoCombiTrans(-((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot)); 
+    v0LE->AddNode(v0AFEEOct2,3, new TGeoCombiTrans(-((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot)); 
 
 
     /// Definition sector 4
@@ -1414,13 +1446,13 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0);
-    double FEEshiftR2Sec4 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
-    TGeoCombiTrans *posFicFEEBSec4 = new TGeoCombiTrans("posFicFEEBSec4", FEEshiftR2Sec4*cos225 + 2.0, 0, 7.5, rot);
+    double aFEEshiftR2Sec4 = fV0AR6  +  fV0AOctH2 + fV0APlaAl;
+    TGeoCombiTrans *posFicFEEBSec4 = new TGeoCombiTrans("posFicFEEBSec4", aFEEshiftR2Sec4*cos225 + 2.0, 0, 7.5, rot);
     posFicFEEBSec4->RegisterYourself();
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0+45.0);
-    TGeoCombiTrans *posFicFEEBUpSec4 = new TGeoCombiTrans("posFicFEEBUpSec4", (FEEshiftR2Sec4*cos225 + 2.0 )*cos45, (FEEshiftR2Sec4*cos225 + 2.0 )*sin45, 7.5, rot);
+    TGeoCombiTrans *posFicFEEBUpSec4 = new TGeoCombiTrans("posFicFEEBUpSec4", (aFEEshiftR2Sec4*cos225 + 2.0 )*cos45, (aFEEshiftR2Sec4*cos225 + 2.0 )*sin45, 7.5, rot);
     posFicFEEBUpSec4->RegisterYourself();
     for (int i=0;i<2;i++) {
     v0APts[0+8*i] = fV0AOctH2/2.;             v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
@@ -1429,11 +1461,11 @@ void AliVZEROv7::CreateGeometry()
     v0APts[6+8*i] = -fV0AOctH2/2.;            v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
     }
     new TGeoArb8("sV0AFicOct2Sec4", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
-    TGeoTranslation *posFicOct2Sec4 = new TGeoTranslation("posFicOct2Sec4",(FEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
+    TGeoTranslation *posFicOct2Sec4 = new TGeoTranslation("posFicOct2Sec4",(aFEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
     posFicOct2Sec4->RegisterYourself();  
     rot = new TGeoRotation("rot");
     rot->RotateZ(-90.0+45.0+90.0);
-    TGeoCombiTrans *posFicOct2UpSec4 = new TGeoCombiTrans("posFicOct2UpSec4",((FEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
+    TGeoCombiTrans *posFicOct2UpSec4 = new TGeoCombiTrans("posFicOct2UpSec4",((aFEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((aFEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
     posFicOct2UpSec4->RegisterYourself(); 
 
     /// Frame
@@ -1676,8 +1708,8 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0);
-    v0LE->AddNode(v0AFEE4,1, new TGeoCombiTrans( -FEEshiftR2Sec1*cos225-2.0, 0, 7.5, rot));   
-    v0LE->AddNode(v0AFEEOct2,4, new TGeoTranslation(-1.0*((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0),0.0,0.0));
+    v0LE->AddNode(v0AFEE4,1, new TGeoCombiTrans( -aFEEshiftR2Sec1*cos225-2.0, 0, 7.5, rot));   
+    v0LE->AddNode(v0AFEEOct2,4, new TGeoTranslation(-1.0*((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0),0.0,0.0));
 
 
     //Definition of sector 5
@@ -1726,9 +1758,9 @@ void AliVZEROv7::CreateGeometry()
     rot = new TGeoRotation("rot");
     rot->RotateX(90);
     rot->RotateZ(-90.0);
-    TGeoCombiTrans *posFicFEEBSec5 = new TGeoCombiTrans("posFicFEEBSec5", -FEEshiftR2Sec1*cos225 - 2.0, 0, 7.5, rot);
+    TGeoCombiTrans *posFicFEEBSec5 = new TGeoCombiTrans("posFicFEEBSec5", -aFEEshiftR2Sec1*cos225 - 2.0, 0, 7.5, rot);
     posFicFEEBSec5->RegisterYourself();
-    TGeoTranslation *posFicOct2Sec5 = new TGeoTranslation("posFicOct2Sec5",-1.0*((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0),0.0,0.0);
+    TGeoTranslation *posFicOct2Sec5 = new TGeoTranslation("posFicOct2Sec5",-1.0*((aFEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0),0.0,0.0);
     posFicOct2Sec5->RegisterYourself(); 
 
     /// Frame
@@ -2866,15 +2898,6 @@ void AliVZEROv7::CreateMaterials()
    
 }
 
-//_____________________________________________________________________________
-void AliVZEROv7::DrawModule() const
-{
-//  Drawing is done in DrawVZERO.C
-
-   AliDebug(2,"DrawModule");
-}
-
-
 //_____________________________________________________________________________
 void AliVZEROv7::DrawGeometry() 
 {
@@ -2918,25 +2941,41 @@ void AliVZEROv7::StepManager()
   vol[2]    = gMC->CurrentVolID(copy);
   vol[3]    = copy;
   static Int_t idV0R1 = gMC->VolId("V0R1");
-  static Int_t idV0L1 = gMC->VolId("V0L1");
+
+  static Int_t idV0L11 = gMC->VolId("V0L1Sec1");
+  static Int_t idV0L12 = gMC->VolId("V0L1Sec2");
+  static Int_t idV0L13 = gMC->VolId("V0L1Sec3");
+  static Int_t idV0L14 = gMC->VolId("V0L1Sec4");
   static Int_t idV0L15 = gMC->VolId("V0L15");
   static Int_t idV0L16 = gMC->VolId("V0L16");
   static Int_t idV0L17 = gMC->VolId("V0L17");
   static Int_t idV0L18 = gMC->VolId("V0L18");  
   static Int_t idV0R2 = gMC->VolId("V0R2");
-  static Int_t idV0L2 = gMC->VolId("V0L2");
+
+  static Int_t idV0L21 = gMC->VolId("V0L2Sec1");
+  static Int_t idV0L22 = gMC->VolId("V0L2Sec2");
+  static Int_t idV0L23 = gMC->VolId("V0L2Sec3");
+  static Int_t idV0L24 = gMC->VolId("V0L2Sec4");
   static Int_t idV0L25 = gMC->VolId("V0L25");
   static Int_t idV0L26 = gMC->VolId("V0L26");
   static Int_t idV0L27 = gMC->VolId("V0L27");
   static Int_t idV0L28 = gMC->VolId("V0L28");
   static Int_t idV0R3 = gMC->VolId("V0R3");
-  static Int_t idV0L3 = gMC->VolId("V0L3");
+
+  static Int_t idV0L31 = gMC->VolId("V0L3Sec1");
+  static Int_t idV0L32 = gMC->VolId("V0L3Sec2");
+  static Int_t idV0L33 = gMC->VolId("V0L3Sec3");
+  static Int_t idV0L34 = gMC->VolId("V0L3Sec4");
   static Int_t idV0L35 = gMC->VolId("V0L35");
   static Int_t idV0L36 = gMC->VolId("V0L36");
   static Int_t idV0L37 = gMC->VolId("V0L37");
   static Int_t idV0L38 = gMC->VolId("V0L38");
   static Int_t idV0R4 = gMC->VolId("V0R4");
-  static Int_t idV0L4 = gMC->VolId("V0L4");
+
+  static Int_t idV0L41 = gMC->VolId("V0L4Sec1");
+  static Int_t idV0L42 = gMC->VolId("V0L4Sec2");
+  static Int_t idV0L43 = gMC->VolId("V0L4Sec3");
+  static Int_t idV0L44 = gMC->VolId("V0L4Sec4");
   static Int_t idV0L45 = gMC->VolId("V0L45");
   static Int_t idV0L46 = gMC->VolId("V0L46");
   static Int_t idV0L47 = gMC->VolId("V0L47");
@@ -2948,18 +2987,93 @@ void AliVZEROv7::StepManager()
   double lightAttenuation;
   double nMeters; 
   double fibToPhot;
-  if      ( gMC->CurrentVolID(copy) == idV0R1 || gMC->CurrentVolID(copy) == idV0L1 || gMC->CurrentVolID(copy) == idV0L15 ||  gMC->CurrentVolID(copy) == idV0L16  || gMC->CurrentVolID(copy) == idV0L17  || gMC->CurrentVolID(copy) == idV0L18  )
-    ringNumber = 1;
-  else if ( gMC->CurrentVolID(copy) == idV0R2 || gMC->CurrentVolID(copy) == idV0L2 || gMC->CurrentVolID(copy) == idV0L25 || gMC->CurrentVolID(copy) == idV0L26 || gMC->CurrentVolID(copy) == idV0L27 || gMC->CurrentVolID(copy) == idV0L28 )
-    ringNumber = 2;  
-  else if ( gMC->CurrentVolID(copy) == idV0R3 || gMC->CurrentVolID(copy) == idV0R4
-           || gMC->CurrentVolID(copy) == idV0L3 || gMC->CurrentVolID(copy) == idV0L35 || gMC->CurrentVolID(copy) == idV0L36 || gMC->CurrentVolID(copy) == idV0L37 || gMC->CurrentVolID(copy) == idV0L38 ) ringNumber = 3;
-  else if ( gMC->CurrentVolID(copy) == idV0R5 || gMC->CurrentVolID(copy) == idV0R6
-           || gMC->CurrentVolID(copy) == idV0L4 || gMC->CurrentVolID(copy) == idV0L45 || gMC->CurrentVolID(copy) == idV0L46 || gMC->CurrentVolID(copy) == idV0L47 || gMC->CurrentVolID(copy) == idV0L48 ) ringNumber = 4;             
+  if      ( gMC->CurrentVolID(copy) == idV0R1   || 
+           gMC->CurrentVolID(copy) == idV0L11  || 
+           gMC->CurrentVolID(copy) == idV0L12  || 
+           gMC->CurrentVolID(copy) == idV0L13  || 
+           gMC->CurrentVolID(copy) == idV0L14  || 
+           gMC->CurrentVolID(copy) == idV0L15  ||  
+           gMC->CurrentVolID(copy) == idV0L16  || 
+           gMC->CurrentVolID(copy) == idV0L17  || 
+           gMC->CurrentVolID(copy) == idV0L18  
+      )
+      ringNumber = 1;
+  
+  else if ( gMC->CurrentVolID(copy) == idV0R2  || 
+           gMC->CurrentVolID(copy) == idV0L21 || 
+           gMC->CurrentVolID(copy) == idV0L22 || 
+           gMC->CurrentVolID(copy) == idV0L23 || 
+           gMC->CurrentVolID(copy) == idV0L24 || 
+           gMC->CurrentVolID(copy) == idV0L25 || 
+           gMC->CurrentVolID(copy) == idV0L26 || 
+           gMC->CurrentVolID(copy) == idV0L27 || 
+           gMC->CurrentVolID(copy) == idV0L28 
+      )
+      ringNumber = 2; 
+  
+  else if ( gMC->CurrentVolID(copy) == idV0R3  || 
+           gMC->CurrentVolID(copy) == idV0R4  || 
+           gMC->CurrentVolID(copy) == idV0L31 || 
+           gMC->CurrentVolID(copy) == idV0L32 || 
+           gMC->CurrentVolID(copy) == idV0L33 || 
+           gMC->CurrentVolID(copy) == idV0L34 || 
+           gMC->CurrentVolID(copy) == idV0L35 || 
+           gMC->CurrentVolID(copy) == idV0L36 || 
+           gMC->CurrentVolID(copy) == idV0L37 || 
+           gMC->CurrentVolID(copy) == idV0L38 
+      ) 
+      ringNumber = 3;
+  else if ( gMC->CurrentVolID(copy) == idV0R5  || 
+           gMC->CurrentVolID(copy) == idV0R6  || 
+           gMC->CurrentVolID(copy) == idV0L41 || 
+           gMC->CurrentVolID(copy) == idV0L42 || 
+           gMC->CurrentVolID(copy) == idV0L43 || 
+           gMC->CurrentVolID(copy) == idV0L44 || 
+           gMC->CurrentVolID(copy) == idV0L45 || 
+           gMC->CurrentVolID(copy) == idV0L46 || 
+           gMC->CurrentVolID(copy) == idV0L47 || 
+           gMC->CurrentVolID(copy) == idV0L48 
+      ) ringNumber = 4;               
+  
   else ringNumber = 0;
+  
   if  (ringNumber) {
-    if (gMC->CurrentVolID(copy) == idV0L1 || gMC->CurrentVolID(copy) == idV0L15  || gMC->CurrentVolID(copy) == idV0L16  || gMC->CurrentVolID(copy) == idV0L17 || gMC->CurrentVolID(copy) == idV0L18 || gMC->CurrentVolID(copy) == idV0L2 || gMC->CurrentVolID(copy) == idV0L25 || gMC->CurrentVolID(copy) == idV0L26  || gMC->CurrentVolID(copy) == idV0L27  || gMC->CurrentVolID(copy) == idV0L28 || gMC->CurrentVolID(copy) == idV0L3 || gMC->CurrentVolID(copy) == idV0L35 || gMC->CurrentVolID(copy) == idV0L36 || gMC->CurrentVolID(copy) == idV0L37 || gMC->CurrentVolID(copy) == idV0L38 || gMC->CurrentVolID(copy) == idV0L4 || gMC->CurrentVolID(copy) == idV0L45 || gMC->CurrentVolID(copy) == idV0L46 || gMC->CurrentVolID(copy) == idV0L47 || gMC->CurrentVolID(copy) == idV0L48)
-      hitOnV0C = false;
+      if (
+         gMC->CurrentVolID(copy) == idV0L11 || 
+         gMC->CurrentVolID(copy) == idV0L12 || 
+         gMC->CurrentVolID(copy) == idV0L13 || 
+         gMC->CurrentVolID(copy) == idV0L14 || 
+         gMC->CurrentVolID(copy) == idV0L15 || 
+         gMC->CurrentVolID(copy) == idV0L16 || 
+         gMC->CurrentVolID(copy) == idV0L17 || 
+         gMC->CurrentVolID(copy) == idV0L18 || 
+         gMC->CurrentVolID(copy) == idV0L21 || 
+         gMC->CurrentVolID(copy) == idV0L22 || 
+         gMC->CurrentVolID(copy) == idV0L23 || 
+         gMC->CurrentVolID(copy) == idV0L24 || 
+         gMC->CurrentVolID(copy) == idV0L25 || 
+         gMC->CurrentVolID(copy) == idV0L26 || 
+         gMC->CurrentVolID(copy) == idV0L27 || 
+         gMC->CurrentVolID(copy) == idV0L28 || 
+         gMC->CurrentVolID(copy) == idV0L31 || 
+         gMC->CurrentVolID(copy) == idV0L32 || 
+         gMC->CurrentVolID(copy) == idV0L33 || 
+         gMC->CurrentVolID(copy) == idV0L34 || 
+         gMC->CurrentVolID(copy) == idV0L35 || 
+         gMC->CurrentVolID(copy) == idV0L36 || 
+         gMC->CurrentVolID(copy) == idV0L37 || 
+         gMC->CurrentVolID(copy) == idV0L38 || 
+         gMC->CurrentVolID(copy) == idV0L41 || 
+         gMC->CurrentVolID(copy) == idV0L42 || 
+         gMC->CurrentVolID(copy) == idV0L43 || 
+         gMC->CurrentVolID(copy) == idV0L44 || 
+         gMC->CurrentVolID(copy) == idV0L45 || 
+         gMC->CurrentVolID(copy) == idV0L46 || 
+         gMC->CurrentVolID(copy) == idV0L47 || 
+         gMC->CurrentVolID(copy) == idV0L48
+         )
+         hitOnV0C = false;
+
     destep = gMC->Edep();
     step   = gMC->TrackStep();
     if (hitOnV0C) {
@@ -3045,32 +3159,22 @@ void AliVZEROv7::AddHit(Int_t track, Int_t *vol, Float_t *hits)
   new(lhits[fNhits++]) AliVZEROhit(fIshunt,track,vol,hits);
 }
 
-//_____________________________________________________________________________
-void AliVZEROv7::AddDigits(Int_t *tracks, Int_t* digits) 
-{
-//  Adds a VZERO digit
-
-   TClonesArray  &ldigits = *fDigits;
-   new(ldigits[fNdigits++]) AliVZEROdigit(tracks, digits);
-}
-
 //_____________________________________________________________________________
 void AliVZEROv7::MakeBranch(Option_t *option)
 {
 // Creates new branches in the current Root Tree
     
-  char branchname[10];
-  sprintf(branchname,"%s",GetName());
+  TString branchname(Form("%s",GetName()));
   AliDebug(2,Form("fBufferSize = %d",fBufferSize));
   const char *cH = strstr(option,"H");
   if (fHits   && fLoader->TreeH() && cH) {
-    fLoader->TreeH()->Branch(branchname,&fHits, fBufferSize);
-    AliDebug(2,Form("Making Branch %s for hits",branchname));
+    fLoader->TreeH()->Branch(branchname.Data(),&fHits, fBufferSize);
+    AliDebug(2,Form("Making Branch %s for hits",branchname.Data()));
   }     
   const char *cD = strstr(option,"D");
   if (fDigits   && fLoader->TreeD() && cD) {
-    fLoader->TreeD()->Branch(branchname,&fDigits, fBufferSize);
-    AliDebug(2,Form("Making Branch %s for digits",branchname));
+    fLoader->TreeD()->Branch(branchname.Data(),&fDigits, fBufferSize);
+    AliDebug(2,Form("Making Branch %s for digits",branchname.Data()));
   }  
 }
 
@@ -3108,26 +3212,45 @@ Int_t AliVZEROv7::GetCellId(Int_t *vol, Float_t *hits)
     //  << " called " << gMC->VolName(vol[0]) << endl;
     // cout << " vol[2] = " << vol[2] << " copy : " << vol[3] 
     //  << " called " << gMC->VolName(vol[2]) << endl;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1")) fCellId = vol[1]+47;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2")) fCellId = 8+vol[1]+47;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3")) fCellId = 16+vol[1]+47;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4")) fCellId = 24+vol[1]+47;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L15")) fCellId = 48+4;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L16")) fCellId = 48+5;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L17")) fCellId = 48+6;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L18")) fCellId = 48+7;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L25")) fCellId = 8+48+4;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L26")) fCellId = 8+48+5;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L27")) fCellId = 8+48+6;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L28")) fCellId = 8+48+7;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L35")) fCellId = 16+48+4;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L36")) fCellId = 16+48+5;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L37")) fCellId = 16+48+6;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L38")) fCellId = 16+48+7;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L45")) fCellId = 24+48+4;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L46")) fCellId = 24+48+5;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L47")) fCellId = 24+48+6;
-    if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L48")) fCellId = 24+48+7;
+    // upper half
+
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec1")) fCellId =  47 + 1;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec2")) fCellId =  47 + 2;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec3")) fCellId =  47 + 3;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec4")) fCellId =  47 + 4;
+
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec1")) fCellId =  47 +  9;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec2")) fCellId =  47 + 10;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec3")) fCellId =  47 + 11;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec4")) fCellId =  47 + 12;
+
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec1")) fCellId =  47 + 17;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec2")) fCellId =  47 + 18;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec3")) fCellId =  47 + 19;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec4")) fCellId =  47 + 20;
+
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec1")) fCellId =  47 + 25;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec2")) fCellId =  47 + 26;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec3")) fCellId =  47 + 27;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec4")) fCellId =  47 + 28;
+
+    // lower half 
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L15")) fCellId = 48+4;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L16")) fCellId = 48+5;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L17")) fCellId = 48+6;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L18")) fCellId = 48+7;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L25")) fCellId = 8+48+4;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L26")) fCellId = 8+48+5;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L27")) fCellId = 8+48+6;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L28")) fCellId = 8+48+7;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L35")) fCellId = 16+48+4;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L36")) fCellId = 16+48+5;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L37")) fCellId = 16+48+6;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L38")) fCellId = 16+48+7;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L45")) fCellId = 24+48+4;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L46")) fCellId = 24+48+5;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L47")) fCellId = 24+48+6;
+      if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L48")) fCellId = 24+48+7;
   }
 
   return fCellId;