]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSvPPRsymm.cxx
Removed warning from part of code not properly implimneted yet.
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRsymm.cxx
index 154406d06a3f1a93af994d91d9adf3c23f68a28d..c94eed67dad062df3d20038c0e9e892b70f84d35 100644 (file)
 
 /*
 $Log$
+Revision 1.42  2002/10/22 14:46:01  alibrary
+Introducing Riostream.h
+
+Revision 1.41  2002/10/14 14:57:09  hristov
+Merging the VirtualMC branch to the main development branch (HEAD)
+
+Revision 1.38.6.3  2002/10/14 13:14:12  hristov
+Updating VirtualMC to v3-09-02
+
+Revision 1.40  2002/10/02 17:56:35  barbera
+Bug in copy 37 of volume I570 corrected (thanks to J. Belikov)
+
+Revision 1.39  2002/04/13 22:35:52  nilsen
+Now symm is derived from asymm. This minimizes duplicated code because
+only the geometry is different between asymm and symm.
+
+Revision 1.38  2001/11/28 01:35:47  nilsen
+Using standard constructors instead of default constructors for Clusterfinder,
+Response, and FastSimulator.
+
+Revision 1.37  2001/10/22 11:00:54  hristov
+New naming schema of the rotation matrices in BuildGeometry() to avoid redefinition in other detectors (R.Barbera)
+
+Revision 1.36  2001/10/19 21:32:35  nilsen
+Minor changes to remove compliation warning on gcc 2.92.2 compiler, and
+cleanded up a little bit of code.
+
+Revision 1.35  2001/10/19 10:16:28  barbera
+A bug corrected in the definition of a TPCON
+
+Revision 1.34  2001/10/18 12:25:07  barbera
+Detailed geometry in BuildGeometry() commented out (450 MB needed to compile the file). Six cylinders put back but improved by comparison with the ITS coarse geometry
+
+Revision 1.33  2001/10/18 03:09:21  barbera
+The method BuildGeometry() has been completely rewritten. Now display.C can display the detailed ITS geometry instead of the old six dummy cylunders.
+
+Revision 1.32  2001/10/17 04:35:32  barbera
+Checks for the det and chip thickness modified in order to set the dafault values to 200 um if the user chosen values are outside the range 100-300 um
+
+Revision 1.31  2001/10/04 22:33:39  nilsen
+Fixed bugs in SetDefaults.
+
+Revision 1.30  2001/10/01 19:34:09  nilsen
+Fixed a bug in asigning detector types in SetDefaults under SSD layer 6.
+
+Revision 1.29  2001/06/07 14:42:14  barbera
+Both chip and det thicknesses set to [100,300]
+
+Revision 1.28  2001/05/31 19:24:47  barbera
+Default values of SPD detector and chip thickness set to 200 microns as defined by the Technical Board
+
+Revision 1.27  2001/05/30 16:15:47  fca
+Correct comparison wiht AliGeant3::Class() introduced. Thanks to I.Hrivnacova
+
+Revision 1.26  2001/05/30 15:55:35  hristov
+Strings compared instead of pointers
+
+Revision 1.25  2001/05/30 14:04:31  hristov
+Dynamic cast replaced (F.Carminati)
+
+Revision 1.24  2001/05/25 15:59:59  morsch
+Overlaps corrected. (R. Barbera)
+
+Revision 1.22  2001/05/16 08:17:49  hristov
+Bug fixed in the StepManager to account for the difference in the geometry tree for the ITS pixels. This fixes both the funny distribution of pixel coordinates and the missing hits/digits/points in many sectors of the ITS pixel barrel. Also included is a patch to properly get and use the detector dimensions through out the ITS code. (B.Nilsen)
+
 Revision 1.21  2001/05/10 00:12:59  nilsen
 Finished fixing up the default segmentation for the PPR geometry.
 
@@ -169,14 +235,15 @@ Introduction of the Copyright and cvs Log
 //                                                                          //
 //////////////////////////////////////////////////////////////////////////////
 // See AliITSvPPRsymm::StepManager().
-#include <iostream.h>
-#include <iomanip.h>
+#include <Riostream.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <TMath.h>
 #include <TGeometry.h>
 #include <TNode.h>
 #include <TTUBE.h>
+#include <TTUBS.h>
+#include <TPCON.h>
 #include <TFile.h>    // only required for Tracking function?
 #include <TCanvas.h>
 #include <TObjArray.h>
@@ -186,11 +253,9 @@ Introduction of the Copyright and cvs Log
 #include <TBRIK.h>
 #include <TSystem.h>
 
-#include "AliMC.h"
 #include "AliRun.h"
 #include "AliMagF.h"
 #include "AliConst.h"
-#include "../TGeant3/TGeant3.h"
 #include "AliITSGeant3Geometry.h"
 #include "AliITShit.h"
 #include "AliITS.h"
@@ -206,6 +271,9 @@ Introduction of the Copyright and cvs Log
 #include "AliITSsegmentationSPD.h"
 #include "AliITSsegmentationSDD.h"
 #include "AliITSsegmentationSSD.h"
+#include "AliITSsimulationSPD.h"
+#include "AliITSsimulationSDD.h"
+#include "AliITSsimulationSSD.h"
 #include "AliITSClusterFinderSPD.h"
 #include "AliITSClusterFinderSDD.h"
 #include "AliITSClusterFinderSSD.h"
@@ -214,74 +282,16 @@ Introduction of the Copyright and cvs Log
 ClassImp(AliITSvPPRsymm)
  
 //_____________________________________________________________________________
-AliITSvPPRsymm::AliITSvPPRsymm() {
+AliITSvPPRsymm::AliITSvPPRsymm() : AliITSvPPRasymm() {
 ////////////////////////////////////////////////////////////////////////
 //    Standard default constructor for the ITS version 9.
 ////////////////////////////////////////////////////////////////////////
-    Int_t i;
-
-    fIdN       = 0;
-    fIdName    = 0;
-    fIdSens    = 0;
-    fEuclidOut    = kFALSE; // Don't write Euclide file
-    fGeomDetOut   = kFALSE; // Don't write .det file
-    fGeomDetIn    = kFALSE; // Don't Read .det file
-    fMajorVersion = IsVersion();
-    fMinorVersion = -1;
-    for(i=0;i<60;i++) fRead[i] = '\0';
-    for(i=0;i<60;i++) fWrite[i] = '\0';
-    for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
 }
 //_____________________________________________________________________________
-AliITSvPPRsymm::AliITSvPPRsymm(const char *name, const char *title) : AliITS(name, title){
+AliITSvPPRsymm::AliITSvPPRsymm(const char *name, const char *title) : AliITSvPPRasymm(name, title){
 ////////////////////////////////////////////////////////////////////////
 //    Standard constructor for the ITS version 9.
 ////////////////////////////////////////////////////////////////////////
-    Int_t i;
-
-    fIdN = 6;
-    fIdName = new TString[fIdN];
-    fIdName[0] = "ITS1";
-    fIdName[1] = "ITS2";
-    fIdName[2] = "ITS3";
-    fIdName[3] = "ITS4";
-    fIdName[4] = "ITS5";
-    fIdName[5] = "ITS6";
-    fIdSens    = new Int_t[fIdN];
-    for (i=0;i<fIdN;i++) fIdSens[i] = 0;
-    fMajorVersion = IsVersion();
-    fMinorVersion = 2;
-    fEuclidOut    = kFALSE; // Don't write Euclide file
-    fGeomDetOut   = kFALSE; // Don't write .det file
-    fGeomDetIn    = kFALSE; // Don't Read .det file
-    SetThicknessDet1();
-    SetThicknessDet2();
-    SetThicknessChip1();
-    SetThicknessChip2();                        
-
-    fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.euc";
-    strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det",60);
-    strncpy(fRead,fEuclidGeomDet,60);
-    strncpy(fWrite,fEuclidGeomDet,60);  
-        
-}
-//____________________________________________________________________________
-AliITSvPPRsymm::AliITSvPPRsymm(const AliITSvPPRsymm &source){
-////////////////////////////////////////////////////////////////////////
-//     Copy Constructor for ITS version 9.
-////////////////////////////////////////////////////////////////////////
-    if(&source == this) return;
-    Warning("Copy Constructor","Not allowed to copy AliITSvPPRsymm");
-    return;
-}
-//_____________________________________________________________________________
-AliITSvPPRsymm& AliITSvPPRsymm::operator=(const AliITSvPPRsymm &source){
-////////////////////////////////////////////////////////////////////////
-//    Assignment operator for the ITS version 9.
-////////////////////////////////////////////////////////////////////////
-    if(&source == this) return *this;
-    Warning("= operator","Not allowed to copy AliITSvPPRsymm");
-    return *this;
 }
 //_____________________________________________________________________________
 AliITSvPPRsymm::~AliITSvPPRsymm() {
@@ -289,52 +299,6 @@ AliITSvPPRsymm::~AliITSvPPRsymm() {
 //    Standard destructor for the ITS version 9.
 ////////////////////////////////////////////////////////////////////////
 }
-//__________________________________________________________________________
-void AliITSvPPRsymm::BuildGeometry(){
-////////////////////////////////////////////////////////////////////////
-//    Geometry builder for the ITS version 9.
-////////////////////////////////////////////////////////////////////////
-    TNode *node, *top;
-    const int kColorITS=kYellow;
-    //
-    top = gAlice->GetGeometry()->GetNode("alice");
-
-    new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
-    top->cd();
-    node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
-    top->cd();
-    node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
-    top->cd();
-    node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
-    top->cd();
-    node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
-    top->cd();
-    node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-
-    new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
-    top->cd();
-    node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
-    node->SetLineColor(kColorITS);
-    fNodes->Add(node);
-}
 //_____________________________________________________________________________
 void AliITSvPPRsymm::CreateGeometry(){
 ////////////////////////////////////////////////////////////////////////
@@ -369,13 +333,13 @@ void AliITSvPPRsymm::CreateGeometry(){
   Float_t di1d3[3], di20a[3], di1d2[3];                      // for layer 2  
   Float_t di108[3], di104[3];                                // for both layers  
 
-  Float_t ddet1=300.;     // total detector thickness on layer 1 (micron)
-  Float_t dchip1=300.;    // total chip thickness on layer 1 (micron)
+  Float_t ddet1=200.;     // total detector thickness on layer 1 (micron)
+  Float_t dchip1=200.;    // total chip thickness on layer 1 (micron)
   
-  Float_t ddet2=300.;     // total detector thickness on layer 2 (micron)                         
-  Float_t dchip2=300.;    // total chip thickness on layer 2 (micron)
+  Float_t ddet2=200.;     // total detector thickness on layer 2 (micron)                         
+  Float_t dchip2=200.;    // total chip thickness on layer 2 (micron)
   
-  Float_t dbus=200.;      // total bus thickness on both layers (micron)
+  Float_t dbus=300.;      // total bus thickness on both layers (micron)
 
   ddet1 = GetThicknessDet1();
   ddet2 = GetThicknessDet2();
@@ -384,26 +348,26 @@ void AliITSvPPRsymm::CreateGeometry(){
 
   if(ddet1 < 100. || ddet1 > 300.) {
      cout << "ITS - WARNING: the detector thickness for layer 1 is outside the range of [100,300] microns."
-         " The default value of 300 microns will be used." << endl;
-         ddet1=300.;
+         " The default value of 200 microns will be used." << endl;
+         ddet1=200.;
   }
   
   if(ddet2 < 100. || ddet2 > 300.) {
      cout << "ITS - WARNING: the detector thickness for layer 2 is outside the range of [100,300] microns."
-         " The default value of 300 microns will be used." << endl;
-         ddet2=300.;
+         " The default value of 200 microns will be used." << endl;
+         ddet2=200.;
   }
   
-  if(dchip1 < 150. || dchip1 > 300.) {
-     cout << "ITS - WARNING: the chip thickness for layer 1 is outside the range of [150,300] microns."
-         " The default value of 300 microns will be used." << endl;
-         dchip1=300.;
+  if(dchip1 < 100. || dchip1 > 300.) {
+     cout << "ITS - WARNING: the chip thickness for layer 1 is outside the range of [100,300] microns."
+         " The default value of 200 microns will be used." << endl;
+         dchip1=200.;
   }
   
-  if(dchip2 < 150. || dchip2 > 300.) {
-     cout << "ITS - WARNING: the chip thickness for layer 2 is outside the range of [150,300] microns."
-         " The default value of 300 microns will be used." << endl;
-         dchip2=300.;
+  if(dchip2 < 100. || dchip2 > 300.) {
+     cout << "ITS - WARNING: the chip thickness for layer 2 is outside the range of [100,300] microns."
+         " The default value of 200 microns will be used." << endl;
+         dchip2=200.;
   }      
 
   Int_t rails = 1;       // flag for rails (1 --> rails in; 0 --> rails out)
@@ -448,8 +412,8 @@ void AliITSvPPRsymm::CreateGeometry(){
                
   Float_t deltax, deltay; 
 
-  Int_t thickness = fMinorVersion/10;
-  Int_t option    = fMinorVersion - 10*thickness;
+  Int_t thickness = GetMinorVersion()/10;
+  Int_t option    = GetMinorVersion() - 10*thickness;
 
 
   // Define some variables for SDD
@@ -547,19 +511,19 @@ void AliITSvPPRsymm::CreateGeometry(){
      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
-     AliMatrix(idrotm[237],90.0,0.0,90.0,90.0,180.0,0.0);
+     AliMatrix(idrotm[237],90.0,180.0,90.0,90.0,0.0,0.0);
      AliMatrix(idrotm[238],90.0,144.0,90.0,234.0,0.0,0.0);
      AliMatrix(idrotm[239],90.0,216.0,90.0,306.0,0.0,0.0);
      AliMatrix(idrotm[240],90.0,288.0,90.0,18.0,0.0,0.0);
      AliMatrix(idrotm[241],90.0,324.0,90.0,54.0,0.0,0.0);
      AliMatrix(idrotm[242],90.0,36.0,90.0,126.0,0.0,0.0);
      AliMatrix(idrotm[243],90.0,108.0,90.0,198.0,0.0,0.0);
-     AliMatrix(idrotm[244],90.0,0.0,90.0,270.0,180.0,0.0);
-     AliMatrix(idrotm[245],90.0,342.0,90.0,252.0,180.0,0.0);
-     AliMatrix(idrotm[246],90.0,130.0,90.0,40.0,180.0,0.0);
-     AliMatrix(idrotm[247],90.0,139.0,90.0,49.0,180.0,0.0);
-     AliMatrix(idrotm[248],90.0,148.0,90.0,58.0,180.0,0.0);
-     AliMatrix(idrotm[249],90.0,157.0,90.0,67.0,180.0,0.0);
+     AliMatrix(idrotm[244],90.0,180.0,90.0,270.0,0.0,0.0);
+     AliMatrix(idrotm[245],90.0,162.0,90.0,252.0,0.0,0.0);
+     AliMatrix(idrotm[246],90.0,310.0,90.0,40.0,0.0,0.0);
+     AliMatrix(idrotm[247],90.0,319.0,90.0,49.0,0.0,0.0);
+     AliMatrix(idrotm[248],90.0,328.0,90.0,58.0,0.0,0.0);
+     AliMatrix(idrotm[249],90.0,337.0,90.0,67.0,0.0,0.0);
      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
@@ -595,7 +559,7 @@ void AliITSvPPRsymm::CreateGeometry(){
     
   if (option == 2) {
 
-     AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,180.0,0.0);
+     AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
@@ -632,12 +596,12 @@ void AliITSvPPRsymm::CreateGeometry(){
      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
      AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
-     AliMatrix(idrotm[238],90.0,0.0,90.0,270.0,180.0,0.0);
-     AliMatrix(idrotm[239],90.0,342.0,90.0,252.0,180.0,0.0);
-     AliMatrix(idrotm[240],90.0,130.0,90.0,40.0,180.0,0.0);
-     AliMatrix(idrotm[241],90.0,139.0,90.0,49.0,180.0,0.0);
-     AliMatrix(idrotm[242],90.0,148.0,90.0,58.0,180.0,0.0);
-     AliMatrix(idrotm[243],90.0,157.0,90.0,67.0,180.0,0.0);
+     AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
+     AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
+     AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
+     AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
+     AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
+     AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
      AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
      AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
      AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
@@ -2987,15 +2951,15 @@ void AliITSvPPRsymm::CreateGeometry(){
      gMC->Gspos("I126",2,"I12A",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
      gMC->Gspos("I125",2,"I12A",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
      gMC->Gspos("I124",2,"I12A",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
-     gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,idrotm[237],"ONLY");
-     gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,idrotm[237],"ONLY");
+     gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,0,"ONLY");
+     gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,0,"ONLY");
      gMC->Gspos("I103",1,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],10.708,0,"ONLY");
      gMC->Gspos("I103",2,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],3.536,0,"ONLY");
      gMC->Gspos("I105",1,"I10A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
      gMC->Gspos("I105",2,"I10A",-0.05,0.01,16.844,0,"ONLY");
      gMC->Gspos("I104",1,"I10A",0.0,-di10a[1]+di104[1],0.0,0,"ONLY");
-     gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,idrotm[237],"ONLY");
-     gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,idrotm[237],"ONLY");
+     gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,0,"ONLY");
+     gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,0,"ONLY");
      gMC->Gspos("I1D3",1,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],10.708,0,"ONLY");
      gMC->Gspos("I1D3",2,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],3.536,0,"ONLY");
      gMC->Gspos("I105",3,"I20A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
@@ -3159,8 +3123,8 @@ void AliITSvPPRsymm::CreateGeometry(){
      gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
      gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
      gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
-     gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,idrotm[201],"ONLY");
-     gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,idrotm[201],"ONLY");
+     gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
+     gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
      gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
      gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
      gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
@@ -3630,7 +3594,7 @@ void AliITSvPPRsymm::CreateGeometry(){
   gMC->Gspos("I570",34,"IT56",21.7497,40.1899,-0.27,idrotm[549],"ONLY");
   gMC->Gspos("I570",35,"IT56",14.7884,43.0772,-0.27,idrotm[550],"ONLY");
   gMC->Gspos("I570",36,"IT56",7.5216,45.0744,-0.27,idrotm[551],"ONLY");
-  gMC->Gspos("I570",37,"IT56",-0.27,45.545,-0.27,0,"ONLY");
+  gMC->Gspos("I570",37,"IT56",0.,45.545,-0.27,0,"ONLY");
   gMC->Gspos("I570",38,"IT56",-7.5216,45.0744,-0.27,idrotm[552],"ONLY");
   gMC->Gspos("I570",1,"IT56",-14.7884,43.0772,-0.27,idrotm[553],"ONLY");
   gMC->Gspos("I570",2,"IT56",-21.7497,40.1899,-0.27,idrotm[620],"ONLY");
@@ -4051,8 +4015,8 @@ void AliITSvPPRsymm::CreateGeometry(){
   
   // --- Place volumes of cylinders between SPD and SDD and SDD and SSD 
   
-  gMC->Gspos("ICY1",1,"ITSD",0.0,0.0,0.,0,"ONLY");    
-  gMC->Gspos("ICY2",1,"ITSD",0.0,0.0,0.,0,"ONLY");    
+  gMC->Gspos("ICY1",1,"IS02",0.0,0.0,0.,0,"ONLY");    
+  gMC->Gspos("ICY2",1,"IS01",0.0,0.0,0.,0,"ONLY");    
   
 
   // --- Place volumes of SDD cone ---------------------------------- 
@@ -4459,14 +4423,14 @@ void AliITSvPPRsymm::CreateGeometry(){
   dgh[1] = 3.;         
   dgh[2] = 5.;  // 5. comes from the fact that the volume has to be 567.6/2 cm^3       
   gMC->Gsvolu("ISR1", "TUBE", idtmed[284], dgh, 3);   
-  gMC->Gspos("ISR1", 1, "ALIC", 54.9, 11., 79.5, 0, "ONLY");   
-  gMC->Gspos("ISR1", 2, "ALIC", 54.9, -11., 79.5, 0, "ONLY");   
-  gMC->Gspos("ISR1", 3, "ALIC", -54.9, 11., 79.5, 0, "ONLY"); 
-  gMC->Gspos("ISR1", 4, "ALIC", -54.9, -11., 79.5, 0, "ONLY");  
-  gMC->Gspos("ISR1", 5, "ALIC", 54.9, 11., -79.5, 0, "ONLY");   
-  gMC->Gspos("ISR1", 6, "ALIC", 54.9, -11., -79.5, 0, "ONLY");   
-  gMC->Gspos("ISR1", 7, "ALIC", -54.9, 11., -79.5, 0, "ONLY"); 
-  gMC->Gspos("ISR1", 8, "ALIC", -54.9, -11., -79.5, 0, "ONLY");         
+  gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");    
+  gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");   
+  gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY"); 
+  gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");  
+  gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");   
+  gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");   
+  gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY"); 
+  gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");        
   
   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
 
@@ -4498,610 +4462,7 @@ void AliITSvPPRsymm::CreateGeometry(){
   
   // --- Outputs the geometry tree in the EUCLID/CAD format 
   
-  if (fEuclidOut) {
+  if (GetEUCLID()) {
     gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
   }
 }
-//_____________________________________________________________________________
-void AliITSvPPRsymm::CreateMaterials(){
-////////////////////////////////////////////////////////////////////////
-  //
-  // Create ITS materials
-  //     This function defines the default materials used in the Geant
-  // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
-  // AliITSvPPRsymm.
-  // In general it is automatically replaced by
-  // the CreatMaterials routine defined in AliITSv?. Should the function
-  // CreateMaterials not exist for the geometry version you are using this
-  // one is used. See the definition found in AliITSv5 or the other routine
-  // for a complete definition.
-  //
-    
-  Int_t  isxfld  = gAlice->Field()->Integ();
-  Float_t sxmgmx = gAlice->Field()->Max();
-
-  // Freon
-  Float_t afre[2]  = { 12.011,18.9984032 };
-  Float_t zfre[2]  = { 6.,9. };
-  Float_t wfre[2]  = { 5.,12. };
-  Float_t densfre  = 1.5;  
-
-  // --- Define the various materials and media for GEANT --- 
-  
-  AliMaterial(1,"SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(1,"SI$",1,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(2,"SPD SI CHIP$",2,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,   0);
-
-  AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(3,"SPD SI BUS$",3,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(4,"C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
-  AliMedium(4,"C (M55J)$",4,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(5,"AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
-  AliMedium(5,"AIR$",5,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
-
-  AliMaterial(6,"GEN AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
-  AliMedium(6,"GEN AIR$",6,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
-
-  AliMaterial(7,"SDD SI CHIP$",0.374952E+02,0.178184E+02,0.24485E+01,0.76931E+01,0.99900E+03);
-  AliMedium(7,"SDD SI CHIP$",7,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(9,"SDD C (M55J)$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
-  AliMedium(9,"SDD C (M55J)$",9,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(10,"SDD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
-  AliMedium(10,"SDD AIR$",10,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
-
-  AliMaterial(11,"AL$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
-  AliMedium(11,"AL$",11,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(12,"WATER$",0.14322E+02,0.72167E+01,0.10000E+01,0.35759E+02,0.94951E+02);
-  AliMedium(12,"WATER$",12,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
-  AliMedium(13,"Freon$",13,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(14,"COPPER$",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03);
-  AliMedium(14,"COPPER$",14,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(15,"CERAMICS$",0.22314E+02,0.10856E+02,0.36000E+01,0.76200E+01,0.31901E+02);
-  AliMedium(15,"CERAMICS$",15,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(20,"SSD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
-  AliMedium(20,"SSD C (M55J)$",20,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(21,"SSD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
-  AliMedium(21,"SSD AIR$",21,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
-
-  AliMaterial(25,"G10FR4$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
-  AliMedium(25,"G10FR4$",25,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(26,"GEN C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
-  AliMedium(26,"GEN C (M55J)$",26,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(27,"GEN Air$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
-  AliMedium(27,"GEN Air$",27,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
-
-  AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(51,"SPD SI$",51,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(52,"SPD SI CHIP$",52,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(53,"SPD SI BUS$",53,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(54,"SPD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
-  AliMedium(54,"SPD C (M55J)$",54,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(55,"SPD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
-  AliMedium(55,"SPD AIR$",55,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
-
-  AliMaterial(56,"SPD KAPTON(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
-  AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(61,"EPOXY$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
-  AliMedium(61,"EPOXY$",61,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(62,"SILICON$",62,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(63,"KAPTONH(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
-  AliMedium(63,"KAPTONH(POLYCH2)$",63,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
-  AliMedium(64,"ALUMINUM$",64,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(65,"INOX$",0.55098E+02,0.2572E+02,0.7900E+01,0.17800E+01,0.99900E+03);
-  AliMedium(65,"INOX$",65,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(68,"ROHACELL$",0.123974E+02,0.62363E+01,0.500E-01,0.80986E+03,0.99900E+03);
-  AliMedium(68,"ROHACELL$",68,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(69,"SDD C AL (M55J)$",0.138802E+02,0.71315E+01,0.19837E+01,0.176542E+02,0.99900E+03);
-  AliMedium(69,"SDD C AL (M55J)$",69,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(70,"SDDKAPTON (POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
-  AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03);
-  AliMedium(71,"ITS SANDW A$",71,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03);
-  AliMedium(72,"ITS SANDW B$",72,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
-  AliMedium(73,"ITS SANDW C$",73,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
-  AliMedium(74,"HEAT COND GLUE$",74,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(75,"ELASTO SIL$",75,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03);
-  AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-               
-  AliMaterial(77,"SDD X7R capacitors$",0.1157516E+03,0.477056E+02,0.67200E+01,0.14236E+01,0.99900E+03);
-  AliMedium(77,"SDD X7R capacitors$",77,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(78,"SDD ruby sph. Al2O3$",0.218101E+02,0.106467E+02,0.39700E+01,0.48539E+01,0.99900E+03);
-  AliMedium(78,"SDD ruby sph. Al2O3$",78,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
-  AliMedium(79,"SDD SI insensitive$",79,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(80,"SDD HV microcable$",0.159379E+02,0.78598E+01,0.16087E+01,0.217906E+02,0.99900E+03);
-  AliMedium(80,"SDD HV microcable$",80,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(81,"SDD LV+signal cable$",0.223689E+02,0.108531+02,0.21035E+01,0.13440E+02,0.99900E+03);
-  AliMedium(81,"SDD LV+signal cable$",81,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(82,"SDD hybrid microcab$",0.218254E+02,0.106001E+02,0.20502E+01,0.137308E+02,0.99900E+03);
-  AliMedium(82,"SDD hybrid microcab$",82,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(83,"SDD anode microcab$",0.186438E+02,0.91193E+01,0.17854E+01,0.176451E+02,0.99900E+03);
-  AliMedium(83,"SDD anode microcab$",83,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(84,"SDD/SSD rings$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
-  AliMedium(84,"SDD/SSD rings$",84,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-  AliMaterial(85,"inox/alum$",0.321502E+02,0.153383E+02,0.30705E+01,0.69197E+01,0.99900E+03);
-  AliMedium(85,"inox/alum$",85,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
-
-
-  // Special media
-
-  AliMaterial(90,"SPD shield$", 12.011, 6., 1.93/10. , 22.1*10., 999);
-  AliMedium(90,"SPD shield$",90, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-
-  AliMaterial(91, "SPD End ladder$", 47.0447, 21.7963, 3.6374, 4.4711, 999); 
-  AliMedium(91, "SPD End ladder$",91, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-
-  AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);    
-  AliMedium(92, "SPD cone$",   92, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);   
-
-  AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999); 
-  AliMedium(93, "SDD End ladder$",93, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-
-  AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999);     
-  AliMedium(94, "SDD cone$",   94, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-
-  AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999); 
-  AliMedium(95, "SSD End ladder$",95, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-  
-  AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999); 
-  AliMedium(96, "SSD cone$",   96, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
-
-
-}
-//______________________________________________________________________
-void AliITSvPPRsymm::InitAliITSgeom(){
-//     Based on the geometry tree defined in Geant 3.21, this
-// routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
-// sturture.
-    if(!(dynamic_cast<TGeant3*>(gMC))) {
-       Error("InitAliITSgeom",
-               "Wrong Monte Carlo. InitAliITSgeom uses TGeant3 calls");
-       return;
-    } // end if
-    cout << "Reading Geometry transformation directly from Geant 3." << endl;
-    const Int_t nlayers = 6;
-    const Int_t ndeep = 9;
-    Int_t itsGeomTreeNames[nlayers][ndeep],lnam[20],lnum[20];
-    Int_t nlad[nlayers],ndet[nlayers];
-    Double_t t[3],r[10];
-    Float_t  par[20],att[20];
-    Int_t    npar,natt,idshape,imat,imed;
-    AliITSGeant3Geometry *ig = new AliITSGeant3Geometry();
-    Int_t mod,lay,lad,det,i,j,k;
-    Char_t names[nlayers][ndeep][4];
-    Int_t itsGeomTreeCopys[nlayers][ndeep];
-    if(fMinorVersion == 1){ // Option A
-    Char_t *namesA[nlayers][ndeep] = {
-     {"ALIC","ITSV","ITSD","IT12","I12A","I10A","I103","I101","ITS1"}, // lay=1
-     {"ALIC","ITSV","ITSD","IT12","I12A","I20A","I1D3","I1D1","ITS2"}, // lay=2
-     {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
-     {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
-     {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
-     {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
-    Int_t itsGeomTreeCopysA[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
-                                             {1,1,1,1,10, 4, 4,1,1},// lay=2
-                                             {1,1,1,1,14, 6, 1,0,0},// lay=3
-                                             {1,1,1,1,22, 8, 1,0,0},// lay=4
-                                             {1,1,1,1,34,22, 1,0,0},// lay=5
-                                             {1,1,1,1,38,25, 1,0,0}};//lay=6
-    for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
-       for(k=0;k<4;k++) names[i][j][k] = namesA[i][j][k];
-       itsGeomTreeCopys[i][j] = itsGeomTreeCopysA[i][j];
-    } // end for i,j
-    }else if(fMinorVersion == 2){ // Option B
-    Char_t *namesB[nlayers][ndeep] = {
-     {"ALIC","ITSV","ITSD","IT12","I12B","I10B","I107","I101","ITS1"}, // lay=1
-     {"ALIC","ITSV","ITSD","IT12","I12B","I20B","I1D7","I1D1","ITS2"}, // lay=2
-     {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
-     {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
-     {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
-     {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
-    Int_t itsGeomTreeCopysB[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
-                                             {1,1,1,1,10, 4, 4,1,1},// lay=2
-                                             {1,1,1,1,14, 6, 1,0,0},// lay=3
-                                             {1,1,1,1,22, 8, 1,0,0},// lay=4
-                                             {1,1,1,1,34,22, 1,0,0},// lay=5
-                                             {1,1,1,1,38,25, 1,0,0}};//lay=6
-    for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
-       for(k=0;k<4;k++) names[i][j][k] = namesB[i][j][k];
-       itsGeomTreeCopys[i][j] = itsGeomTreeCopysB[i][j];
-    } // end for i,j
-    } // end if fMinorVersion
-    // Sorry, but this is not very pritty code. It should be replaced
-    // at some point with a version that can search through the geometry
-    // tree its self.
-    cout << "Reading Geometry informaton from Geant3 common blocks" << endl;
-    for(i=0;i<20;i++) lnam[i] = lnum[i] = 0;
-    for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++) 
-       itsGeomTreeNames[i][j] = ig->StringToInt(names[i][j]);
-    mod = 0;
-    for(i=0;i<nlayers;i++){
-       k = 1;
-       for(j=0;j<ndeep;j++) if(itsGeomTreeCopys[i][j]!=0)
-           k *= TMath::Abs(itsGeomTreeCopys[i][j]);
-       mod += k;
-    } // end for i
-
-    if(fITSgeom!=0) delete fITSgeom;
-    nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
-    ndet[0]=4;ndet[1]=4;ndet[2]=6;ndet[3]=8;ndet[4]=22;ndet[5]=25;
-    fITSgeom = new AliITSgeom(0,6,nlad,ndet,mod);
-    mod = -1;
-    for(lay=1;lay<=nlayers;lay++){
-       for(j=0;j<ndeep;j++) lnam[j] = itsGeomTreeNames[lay-1][j];
-       for(j=0;j<ndeep;j++) lnum[j] = itsGeomTreeCopys[lay-1][j];
-       switch (lay){
-       case 1: case 2: // layers 1 and 2 are a bit special
-           lad = 0;
-           for(j=1;j<=itsGeomTreeCopys[lay-1][4];j++){
-               lnum[4] = j;
-               for(k=1;k<=itsGeomTreeCopys[lay-1][5];k++){
-                   lad++;
-                   lnum[5] = k;
-                   for(det=1;det<=itsGeomTreeCopys[lay-1][6];det++){
-                       lnum[6] = det;
-                       mod++;
-                       ig->GetGeometry(ndeep,lnam,lnum,t,r,idshape,npar,natt,
-                                       par,att,imat,imed);
-                       fITSgeom->CreatMatrix(mod,lay,lad,det,kSPD,t,r);
-                       if(!(fITSgeom->IsShapeDefined((Int_t)kSPD)))
-                             fITSgeom->ReSetShape(kSPD,
-                                        new AliITSgeomSPD425Short(npar,par));
-                   } // end for det
-               } // end for k
-            } // end for j
-           break;
-       case 3: case 4: case 5: case 6: // layers 3-6
-           lnum[6] = 1;
-           for(lad=1;lad<=itsGeomTreeCopys[lay-1][4];lad++){
-               lnum[4] = lad;
-               for(det=1;det<=itsGeomTreeCopys[lay-1][5];det++){
-                   lnum[5] = det;
-                   mod++;
-                   ig->GetGeometry(7,lnam,lnum,t,r,idshape,npar,natt,
-                                   par,att,imat,imed);
-                   switch (lay){
-                   case 3: case 4:
-                       fITSgeom->CreatMatrix(mod,lay,lad,det,kSDD,t,r);
-                       if(!(fITSgeom->IsShapeDefined(kSDD))) 
-                           fITSgeom->ReSetShape(kSDD,
-                                             new AliITSgeomSDD256(npar,par));
-                           break;
-                       case 5:
-                           fITSgeom->CreatMatrix(mod,lay,lad,det,kSSD,t,r);
-                           if(!(fITSgeom->IsShapeDefined(kSSD))) 
-                               fITSgeom->ReSetShape(kSSD,
-                                         new AliITSgeomSSD275and75(npar,par));
-                           break;
-                       case 6:
-                           fITSgeom->CreatMatrix(mod,lay,lad,det,kSSDp,t,r);
-                           if(!(fITSgeom->IsShapeDefined(kSSDp))) 
-                               fITSgeom->ReSetShape(kSSDp,
-                                          new AliITSgeomSSD75and275(npar,par));
-                           break;
-                       } // end switch
-               } // end for det
-           } // end for lad
-           break;
-       } // end switch
-    } // end for lay
-    return;
-}
-//_____________________________________________________________________________
-void AliITSvPPRsymm::Init(){
-////////////////////////////////////////////////////////////////////////
-//     Initialise the ITS after it has been created.
-////////////////////////////////////////////////////////////////////////
-    Int_t i;
-
-    cout << endl;
-    for(i=0;i<26;i++) cout << "*";
-    cout << " ITSvPPRsymm" << fMinorVersion << "_Init ";
-    for(i=0;i<25;i++) cout << "*";cout << endl;
-//
-    if(fRead[0]=='\0') strncpy(fRead,fEuclidGeomDet,60);
-    if(fWrite[0]=='\0') strncpy(fWrite,fEuclidGeomDet,60);
-    if(fITSgeom!=0) delete fITSgeom;
-    fITSgeom = new AliITSgeom();
-    if(fGeomDetIn) fITSgeom->ReadNewFile(fRead);
-    if(!fGeomDetIn) this->InitAliITSgeom();
-    if(fGeomDetOut) fITSgeom->WriteNewFile(fWrite);
-    AliITS::Init();
-//
-    for(i=0;i<72;i++) cout << "*";
-    cout << endl;
-}
-//_____________________________________________________________________________
-void AliITSvPPRsymm::SetDefaults(){
-    // sets the default segmentation, response, digit and raw cluster classes
-    const Float_t kconv = 1.0e+04; // convert cm to microns
-
-    cout << "AliITSvPPRasymm::SetDefaults" << endl;
-
-    AliITSDetType *iDetType;
-    AliITSgeomSPD  *s0;
-    AliITSgeomSDD  *s1;
-    AliITSgeomSSD  *s2;
-    Int_t i;
-    Float_t bx[256],bz[280];
-
-    //SPD
-    iDetType=DetType(0);
-    s0 = (AliITSgeomSPD*) fITSgeom->GetShape(kSPD);// Get shape info. Do it this way for now.
-    AliITSresponse *resp0=new AliITSresponseSPD();
-    SetResponseModel(0,resp0);
-    AliITSsegmentationSPD *seg0=new AliITSsegmentationSPD(fITSgeom);
-    seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
-                    s0->GetDz()*2.*kconv, // for now.
-                    s0->GetDy()*2.*kconv); // x,z,y full width in microns.
-    seg0->SetNPads(256,160);// Number of Bins in x and z
-    for(i=000;i<256;i++) bx[i] =  50.0; // in x all are 50 microns.
-    for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
-    for(i=160;i<280;i++) bz[i] =   0.0; // Outside of detector.
-    bz[ 31] = bz[ 32] = 625.0; // first chip boundry
-    bz[ 63] = bz[ 64] = 625.0; // first chip boundry
-    bz[ 95] = bz[ 96] = 625.0; // first chip boundry
-    bz[127] = bz[128] = 625.0; // first chip boundry
-    bz[160] = 425.0; // Set so that there is no zero pixel size for fNz.
-    seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
-    SetSegmentationModel(0,seg0);
-    // set digit and raw cluster classes to be used
-    const char *kData0=(iDetType->GetResponseModel())->DataType();
-    if (strstr(kData0,"real")) iDetType->ClassNames("AliITSdigit",
-                                                   "AliITSRawClusterSPD");
-    else iDetType->ClassNames("AliITSdigitSPD","AliITSRawClusterSPD");
-    //iDetType->SimulationModel(new AliITSsimulationSPD(seg0,resp0));
-    //iDetType->ReconstructionModel(new AliITSClusterFinderSPD());
-
-    // SDD
-    iDetType=DetType(1);
-    s1 = (AliITSgeomSDD*) fITSgeom->GetShape(kSDD);// Get shape info. Do it this way for now.
-    AliITSresponseSDD *resp1=new AliITSresponseSDD();
-    resp1->SetDriftSpeed(7.3); // set drift speed to 7.3 microns/ns.
-    SetResponseModel(1,resp1);
-    AliITSsegmentationSDD *seg1=new AliITSsegmentationSDD(fITSgeom,resp1);
-    seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
-                    s1->GetDz()*2.*kconv, // for now.
-                    s1->GetDy()*2.*kconv); // x,z,y full width in microns.
-    bx[0] = 1000./((s1->GetDx()*kconv/seg1->Dpx(0))/resp1->DriftSpeed()); // clock in Mhz
-    seg1->SetNPads(256,bx[0]);// Use AliITSgeomSDD for now
-    SetSegmentationModel(1,seg1);
-    const char *kData1=(iDetType->GetResponseModel())->DataType();
-    const char *kopt=iDetType->GetResponseModel()->ZeroSuppOption();
-    if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
-       iDetType->ClassNames("AliITSdigit","AliITSRawClusterSDD");
-    } else iDetType->ClassNames("AliITSdigitSDD","AliITSRawClusterSDD");
-    //iDetType->SimulationModel(new AliITSsimulationSDD(seg1,resp1));
-    //iDetType->ReconstructionModel(new AliITSClusterFinderSDD());
-
-    // SSD  Layer 5
-    iDetType=DetType(2);
-    s2 = (AliITSgeomSSD*) fITSgeom->GetShape(kSSD);// Get shape info. Do it this way for now.
-    AliITSresponse *resp2=new AliITSresponseSSD();
-    SetResponseModel(2,resp2);
-    AliITSsegmentationSSD *seg2=new AliITSsegmentationSSD(fITSgeom);
-    seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
-                    s2->GetDz()*2.*kconv, // for now.
-                    s2->GetDy()*2.*kconv); // x,z,y full width in microns.
-    seg2->SetPadSize(95.,0.); // strip x pitch in microns
-    seg2->SetNPads(768,0); // number of strips on each side.
-    seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
-    seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
-    seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
-    SetSegmentationModel(2,seg2); 
-    const char *kData2=(iDetType->GetResponseModel())->DataType();
-    if(strstr(kData2,"real") ) iDetType->ClassNames("AliITSdigit",
-                                                   "AliITSRawClusterSSD");
-    else iDetType->ClassNames("AliITSdigitSSD","AliITSRawClusterSSD");
-    //iDetType->SimulationModel(new AliITSsimulationSSD(seg2,resp2));
-    //iDetType->ReconstructionModel(new AliITSClusterFinderSSD());
-
-    if(kNTYPES>3){
-       Warning("SetDefaults",
-               "Only the four basic detector types are initialised!");
-    }// end if
-    return;
-}
-//_____________________________________________________________________________
-void AliITSvPPRsymm::DrawModule(){
-////////////////////////////////////////////////////////////////////////
-//     Draw a shaded view of the FMD version 9.
-////////////////////////////////////////////////////////////////////////
-  
-  // Set everything unseen
-  gMC->Gsatt("*", "seen", -1);
-  // 
-  // Set ALIC mother visible
-  gMC->Gsatt("ALIC","SEEN",0);
-  //
-  // Set the volumes visible
-  gMC->Gsatt("ITSD","SEEN",0);
-  gMC->Gsatt("ITS1","SEEN",1);
-  gMC->Gsatt("ITS2","SEEN",1);
-  gMC->Gsatt("ITS3","SEEN",1);
-  gMC->Gsatt("ITS4","SEEN",1);
-  gMC->Gsatt("ITS5","SEEN",1);
-  gMC->Gsatt("ITS6","SEEN",1);
-
-  gMC->Gsatt("IPCB","SEEN",1);
-  gMC->Gsatt("ICO2","SEEN",1);
-  gMC->Gsatt("ICER","SEEN",0);
-  gMC->Gsatt("ISI2","SEEN",0);
-  gMC->Gsatt("IPLA","SEEN",0);
-  gMC->Gsatt("ICO3","SEEN",0);
-  gMC->Gsatt("IEPX","SEEN",0);
-  gMC->Gsatt("ISI3","SEEN",1);
-  gMC->Gsatt("ISUP","SEEN",0);
-  gMC->Gsatt("ICHO","SEEN",0);
-  gMC->Gsatt("ICMO","SEEN",0);
-  gMC->Gsatt("ICMD","SEEN",0);
-  gMC->Gsatt("ICCO","SEEN",1);
-  gMC->Gsatt("ICCM","SEEN",0);
-  gMC->Gsatt("ITMD","SEEN",0);
-  gMC->Gsatt("ITTT","SEEN",1);
-
-  //
-  gMC->Gdopt("hide", "on");
-  gMC->Gdopt("shad", "on");
-  gMC->Gsatt("*", "fill", 7);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
-  gMC->Gdhead(1111, "Inner Tracking System Version 1");
-  gMC->Gdman(17, 6, "MAN");
-}
-//_____________________________________________________________________________
-void AliITSvPPRsymm::StepManager(){
-////////////////////////////////////////////////////////////////////////
-//    Called for every step in the ITS, then calles the AliITShit class
-// creator with the information to be recoreded about that hit.
-//     The value of the macro ALIITSPRINTGEOM if set to 1 will allow the
-// printing of information to a file which can be used to create a .det
-// file read in by the routine CreateGeometry(). If set to 0 or any other
-// value except 1, the default behavior, then no such file is created nor
-// it the extra variables and the like used in the printing allocated.
-////////////////////////////////////////////////////////////////////////
-  Int_t         copy, id;
-  Int_t          copy1,copy2;  
-  Float_t       hits[8];
-  Int_t         vol[4];
-  TLorentzVector position, momentum;
-  TClonesArray &lhits = *fHits;
-  //
-  // Track status
-  vol[3] = 0;
-  if(gMC->IsTrackInside())      vol[3] +=  1;
-  if(gMC->IsTrackEntering())    vol[3] +=  2;
-  if(gMC->IsTrackExiting())     vol[3] +=  4;
-  if(gMC->IsTrackOut())         vol[3] +=  8;
-  if(gMC->IsTrackDisappeared()) vol[3] += 16;
-  if(gMC->IsTrackStop())        vol[3] += 32;
-  if(gMC->IsTrackAlive())       vol[3] += 64;
-  //
-  // Fill hit structure.
-  if(!(gMC->TrackCharge())) return;
-  //
-  // Only entering charged tracks
-  if((id = gMC->CurrentVolID(copy)) == fIdSens[0]) {
-      vol[0] = 1;
-      id = gMC->CurrentVolOffID(2,copy);
-      //detector copy in the ladder = 1<->4  (ITS1 < I101 < I103 < I10A)
-      vol[1] = copy;
-      gMC->CurrentVolOffID(3,copy1);
-      //ladder copy in the module   = 1<->2  (I10A < I12A)
-      gMC->CurrentVolOffID(4,copy2);
-      //module copy in the layer    = 1<->10 (I12A < IT12)
-      vol[2] = copy1+(copy2-1)*2;//# of ladders in one module  = 2
-  } else if(id == fIdSens[1]){
-      vol[0] = 2;
-      id = gMC->CurrentVolOffID(2,copy);
-      //detector copy in the ladder = 1<->4  (ITS2 < I1D1 < I1D3 < I20A)
-      vol[1] = copy;
-      gMC->CurrentVolOffID(3,copy1);
-      //ladder copy in the module   = 1<->4  (I20A < I12A)
-      gMC->CurrentVolOffID(4,copy2);
-      //module copy in the layer    = 1<->10 (I12A < IT12)
-      vol[2] = copy1+(copy2-1)*4;//# of ladders in one module  = 4
-  } else if(id == fIdSens[2]){
-      vol[0] = 3;
-      id = gMC->CurrentVolOffID(1,copy);
-      //detector copy in the ladder = 1<->6  (ITS3 < I302 < I004)
-      vol[1] = copy;
-      id = gMC->CurrentVolOffID(2,copy);
-      //ladder copy in the layer    = 1<->14 (I004 < IT34)
-      vol[2] = copy;
-  } else if(id == fIdSens[3]){
-      vol[0] = 4;
-      id = gMC->CurrentVolOffID(1,copy);
-      //detector copy in the ladder = 1<->8  (ITS4 < I402 < I005)
-      vol[1] = copy;
-      id = gMC->CurrentVolOffID(2,copy);
-      //ladder copy in the layer    = 1<->22 (I005 < IT34))
-      vol[2] = copy;
-  }else if(id == fIdSens[4]){
-      vol[0] = 5;
-      id = gMC->CurrentVolOffID(1,copy);
-      //detector copy in the ladder = 1<->22  (ITS5 < I562 < I565)
-      vol[1] = copy;
-      id = gMC->CurrentVolOffID(2,copy);
-     //ladder copy in the layer    = 1<->34 (I565 < IT56)
-      vol[2] = copy;
-  }else if(id == fIdSens[5]){
-      vol[0] = 6;
-      id = gMC->CurrentVolOffID(1,copy);
-      //detector copy in the ladder = 1<->25  (ITS6 < I566 < I569)
-      vol[1] = copy;
-      id = gMC->CurrentVolOffID(2,copy);
-      //ladder copy in the layer = 1<->38 (I569 < IT56)
-      vol[2] = copy;
-  } else {
-      return; // not an ITS volume?
-  } // end if/else if (gMC->CurentVolID(copy) == fIdSens[i])
-//
-  gMC->TrackPosition(position);
-  gMC->TrackMomentum(momentum);
-  hits[0]=position[0];
-  hits[1]=position[1];
-  hits[2]=position[2];
-  hits[3]=momentum[0];
-  hits[4]=momentum[1];
-  hits[5]=momentum[2];
-  hits[6]=gMC->Edep();
-  hits[7]=gMC->TrackTime();
-  // Fill hit structure with this new hit.
-  new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
-
-  return;
-
-}