Removed some obsolete TOF classes
authordecaro <decaro@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Jan 2010 18:32:06 +0000 (18:32 +0000)
committerdecaro <decaro@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 15 Jan 2010 18:32:06 +0000 (18:32 +0000)
32 files changed:
TOF/AliTOFGeometryV4.cxx [deleted file]
TOF/AliTOFGeometryV4.h [deleted file]
TOF/AliTOFGeometryV5.cxx [deleted file]
TOF/AliTOFGeometryV5.h [deleted file]
TOF/AliTOFPID.cxx [deleted file]
TOF/AliTOFPID.h [deleted file]
TOF/AliTOFProb.cxx [deleted file]
TOF/AliTOFProb.h [deleted file]
TOF/AliTOFRawDigit.cxx [deleted file]
TOF/AliTOFRawDigit.h [deleted file]
TOF/AliTOFRawSector.cxx [deleted file]
TOF/AliTOFRawSector.h [deleted file]
TOF/AliTOFRecHit.cxx [deleted file]
TOF/AliTOFRecHit.h [deleted file]
TOF/AliTOFRoc.cxx [deleted file]
TOF/AliTOFRoc.h [deleted file]
TOF/AliTOFv0.cxx [deleted file]
TOF/AliTOFv0.h [deleted file]
TOF/AliTOFv1.cxx [deleted file]
TOF/AliTOFv1.h [deleted file]
TOF/AliTOFv2.cxx [deleted file]
TOF/AliTOFv2.h [deleted file]
TOF/AliTOFv2FHoles.cxx [deleted file]
TOF/AliTOFv2FHoles.h [deleted file]
TOF/AliTOFv3.cxx [deleted file]
TOF/AliTOFv3.h [deleted file]
TOF/AliTOFv4.cxx [deleted file]
TOF/AliTOFv4.h [deleted file]
TOF/AliTOFv4T0.cxx [deleted file]
TOF/AliTOFv4T0.h [deleted file]
TOF/AliTOFv5T0.cxx [deleted file]
TOF/AliTOFv5T0.h [deleted file]

diff --git a/TOF/AliTOFGeometryV4.cxx b/TOF/AliTOFGeometryV4.cxx
deleted file mode 100644 (file)
index 2c15d09..0000000
+++ /dev/null
@@ -1,960 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/*
-$Log$
-Revision 1.5  2006/04/20 22:30:50  hristov
-Coding conventions (Annalisa)
-
-Revision 1.4  2006/04/16 22:29:05  hristov
-Coding conventions (Annalisa)
-
-Revision 1.3  2006/03/12 14:38:13  arcelli
- Changes for TOF Reconstruction using TGeo
-
-Revision 1.2  2006/02/28 10:38:00  decaro
-AliTOFGeometry::fAngles, AliTOFGeometry::fHeights, AliTOFGeometry::fDistances arrays: dimension definition in the right location
-
-Revision 1.1  2005/12/15 08:55:33  decaro
-New TOF geometry description (V5) -G. Cara Romeo and A. De Caro
-
-Revision 0.1  2005/07/19 A. De Caro
-        Modify Global methods IsInsideThePad & DistanceToPad
-               according to the PPR TOF geometry
-        Implement Global  methods GetPadDx & GetPadDy & GetPadDz
-        Modify Global methods GetDetID & GetPlate & GetSector &
-                              GetStrip & GetPadX & GetPadZ
-               according to the PPR TOF geometry
-        Modify Global methods GetPos & GetX & GetY & GetZ
-               according to the PPR TOF geometry
-*/
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  TOF Geometry class (PPR version)                                         //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "TGeoManager.h"
-
-#include "AliConst.h"
-#include "AliLog.h"
-
-#include "AliTOFGeometryV4.h"
-
-extern TGeoManager *gGeoManager;
-
-ClassImp(AliTOFGeometryV4)
-
-
-const Float_t AliTOFGeometryV4::fgkZlenA    = 106.0;    // length (cm) of the A module
-const Float_t AliTOFGeometryV4::fgkZlenB    = 141.0;    // length (cm) of the B module
-const Float_t AliTOFGeometryV4::fgkZlenC    = 177.5;    // length (cm) of the C module
-const Float_t AliTOFGeometryV4::fgkMaxhZtof = 371.5;    // Max half z-size of TOF (cm)
-
-const Float_t AliTOFGeometryV4::fgkDeadBndX = 1.0;      // Dead Boundaries of a Strip along X direction (length) (cm)
-const Float_t AliTOFGeometryV4::fgkDeadBndZ = 1.5;      // Dead Boundaries of a Strip along Z direction (width) (cm)
-const Float_t AliTOFGeometryV4::fgkOverSpc = 15.3;      // Space available for sensitive layers in radial direction (cm)
-
-const Float_t AliTOFGeometryV4::fgkDprecMin = 0.0000075;//num.prec.tolerance on Thmin 
-const Float_t AliTOFGeometryV4::fgkDprecMax = 0.0000100;//num.prec.tolerance on Thma 
-const Float_t AliTOFGeometryV4::fgkDprecCen = 0.0000005;//num.prec.tolerance on <Theta> 
-
-const Float_t AliTOFGeometryV4::fgkxTOF     = 371.;     // Inner radius of the TOF for Reconstruction (cm)
-const Float_t AliTOFGeometryV4::fgkRmin     = 370.;     // Inner radius of the TOF (cm)
-const Float_t AliTOFGeometryV4::fgkRmax     = 399.;     // Outer radius of the TOF (cm)
-
-//_____________________________________________________________________________
-AliTOFGeometryV4::AliTOFGeometryV4()
-  :AliTOFGeometry()
-{
-  //
-  // AliTOFGeometryV4 default constructor
-  //
-
-  AliTOFGeometry::fNStripC   = kNStripC;         // number of strips in C type module
-
-  AliTOFGeometry::fZlenA    = fgkZlenA;          // length (cm) of the A module
-  AliTOFGeometry::fZlenB    = fgkZlenB;          // length (cm) of the B module
-  AliTOFGeometry::fZlenC    = fgkZlenC;          // length (cm) of the C module
-  AliTOFGeometry::fMaxhZtof = fgkMaxhZtof;       // Max half z-size of TOF (cm)
-
-  AliTOFGeometry::fxTOF   = fgkxTOF;           // Inner radius of the TOF for Reconstruction (cm)
-  AliTOFGeometry::fRmin   = fgkRmin;           // Inner radius of the TOF (cm)
-  AliTOFGeometry::fRmax   = fgkRmax;           // Outer radius of the TOF (cm)
-
-  Init();
-
-}
-
-//_____________________________________________________________________________
-AliTOFGeometryV4::~AliTOFGeometryV4()
-{
-  //
-  // AliTOFGeometryV4 destructor
-  //
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV4::ImportGeometry(){
-  TGeoManager::Import("geometry.root");
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV4::Init()
-{
-  //
-  // Initialize strip Tilt Angles and Heights
-  //
-  // Strips Tilt Angles
-  fPhiSec   = 360./kNSectors;
-
-  Float_t const kangles[kNPlates][kMaxNstrip] ={
-
- {44.494, 43.725, 42.946, 42.156, 41.357, 40.548, 39.729, 38.899, 
-  38.060, 37.211, 36.353, 35.484, 34.606, 33.719, 32.822, 31.916, 
-  31.001, 30.077, 29.144, 28.202 },
-
- {26.884, 25.922, 24.952, 23.975, 22.989, 22.320, 21.016, 20.309,
-  19.015, 18.270, 16.989, 16.205, 14.941, 14.117, 12.871, 12.008,
-  10.784, 9.8807, 8.681, 0.0 },
-
- { 7.5835, 6.4124, 5.4058, 4.2809, 3.2448,  2.1424, 1.078, -0., -1.078, 
-  -2.1424, -3.2448, -4.2809, -5.4058, -6.4124, -7.5835, 0.0, 0.0, 0.0,
-  0.0, 0.0 },
-  
- {-8.681, -9.8807, -10.784, -12.008, -12.871, -14.117, -14.941, -16.205,
-  -16.989, -18.27, -19.015, -20.309, -21.016, -22.32, -22.989,
-   -23.975, -24.952, -25.922, -26.884, 0. },
-  
- {-28.202, -29.144, -30.077, -31.001, -31.916, -32.822, -33.719, -34.606,
-  -35.484, -36.353, -37.211, -38.06, -38.899, -39.729, -40.548,
-   -41.357, -42.156, -42.946, -43.725, -44.494 }};
-
-
-  //Strips Heights
-
-   Float_t const kheights[kNPlates][kMaxNstrip]= {
-
-  {-5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5,
-   -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5 },
-  
-  {-6.3, -7.1, -7.9, -8.7, -9.5, -3, -9.5,   -3, -9.5,   -3, 
-   -9.5, -3.0, -9.5, -3.0, -9.5, -3, -9.5,   -3,   -9 , 0.},
-  
-  {  -3,   -9, -4.5,   -9, -4.5,     -9, -4.5,   -9, -4.5,   -9, 
-     -4.5,   -9, -4.5,   -9,   -3,   0.0, 0.0, 0.0, 0.0, 0.0 },
-  
-  {  -9,   -3, -9.5,   -3, -9.5, -3, -9.5,   -3, -9.5,   -3, -9.5,
-     -3, -9.5,   -3, -9.5,  -8.7, -7.9, -7.1, -6.3, 0. },
-  
-  {-5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5,
-   -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5, -5.5 }};
-
-   // Deposit in fAngles, fHeights
-
-   for (Int_t iplate = 0; iplate < kNPlates; iplate++) {
-     for (Int_t istrip = 0; istrip < kMaxNstrip; istrip++) {
-       AliTOFGeometry::fAngles[iplate][istrip]   = kangles[iplate][istrip];
-       AliTOFGeometry::fHeights[iplate][istrip]  = kheights[iplate][istrip];
-     }
-   }
-
-}
-
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::DistanceToPadPar(Int_t *det, Float_t *pos, Float_t *dist3d) const
-{
-//
-// Returns distance of  space point with coor pos (x,y,z) (cm) wrt 
-// pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-    
-  //Transform pos into Sector Frame
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t radius = TMath::Sqrt(x*x+y*y);
-  Float_t phi=TMath::ATan2(y,x);       
-  if(phi<0) phi=2.*TMath::Pi()+phi;
-  //  Get the local angle in the sector philoc
-  Float_t angle   = phi*kRaddeg-( Int_t (kRaddeg*phi/fPhiSec) + 0.5)*fPhiSec;
-  Float_t xs = radius*TMath::Cos(angle/kRaddeg);
-  Float_t ys = radius*TMath::Sin(angle/kRaddeg);
-  Float_t zs = z;
-
-  // Do the same for the selected pad
-
-  Float_t g[3];
-  GetPosPar(det,g);
-
-  Float_t padRadius = TMath::Sqrt(g[0]*g[0]+g[1]*g[1]);
-  Float_t padPhi=TMath::ATan2(g[1],g[0]);      
-  if(padPhi<0) padPhi=2.*TMath::Pi()+padPhi;
-  //  Get the local angle in the sector philoc
-  Float_t padAngle   = padPhi*kRaddeg-( Int_t (padPhi*kRaddeg/fPhiSec)+ 0.5) * fPhiSec; 
-  Float_t padxs = padRadius*TMath::Cos(padAngle/kRaddeg);
-  Float_t padys = padRadius*TMath::Sin(padAngle/kRaddeg);
-  Float_t padzs = g[2];
-  
-  //Now move to local pad coordinate frame. Translate:
-  
-  Float_t xt = xs-padxs;
-  Float_t yt = ys-padys;
-  Float_t zt = zs-padzs;
-  //Now Rotate:
-  
-  Float_t alpha = GetAngles(det[1],det[2]);
-  Float_t xr =  xt*TMath::Cos(alpha/kRaddeg)+zt*TMath::Sin(alpha/kRaddeg);
-  Float_t yr =  yt;
-  Float_t zr = -xt*TMath::Sin(alpha/kRaddeg)+zt*TMath::Cos(alpha/kRaddeg);
-
-  Float_t dist = TMath::Sqrt(xr*xr+yr*yr+zr*zr);
-  if (dist3d){
-    dist3d[0] = xr;
-    dist3d[1] = yr;
-    dist3d[2] = zr;
-  }
-
-  return dist;
-
-}
-
-//_____________________________________________________________________________
-Bool_t AliTOFGeometryV4::IsInsideThePadPar(Int_t *det, Float_t *pos) const
-{
-//
-// Returns true if space point with coor pos (x,y,z) (cm) falls 
-// inside pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-
-  Bool_t isInside=false; 
-
-  //Transform pos into Sector Frame
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t radius = TMath::Sqrt(x*x+y*y);
-  Float_t phi=TMath::ATan2(y,x);       
-  if(phi<0) phi=2.*TMath::Pi()+phi;
-  //  Get the local angle in the sector philoc
-  Float_t angle   = phi*kRaddeg-( Int_t (kRaddeg*phi/fPhiSec) + 0.5) *fPhiSec;
-  Float_t xs = radius*TMath::Cos(angle/kRaddeg);
-  Float_t ys = radius*TMath::Sin(angle/kRaddeg);
-  Float_t zs = z;
-
-  // Do the same for the selected pad
-
-  Float_t g[3];
-  GetPosPar(det,g);
-
-  Float_t padRadius = TMath::Sqrt(g[0]*g[0]+g[1]*g[1]);
-  Float_t padPhi=TMath::ATan2(g[1],g[0]);      
-  if(padPhi<0) padPhi=2.*TMath::Pi()+padPhi;
-  //  Get the local angle in the sector philoc
-  Float_t padAngle   = padPhi*kRaddeg-( Int_t (padPhi*kRaddeg/fPhiSec)+ 0.5) * fPhiSec; 
-  Float_t padxs = padRadius*TMath::Cos(padAngle/kRaddeg);
-  Float_t padys = padRadius*TMath::Sin(padAngle/kRaddeg);
-  Float_t padzs = g[2];
-
-  //Now move to local pad coordinate frame. Translate:
-
-  Float_t xt = xs-padxs;
-  Float_t yt = ys-padys;
-  Float_t zt = zs-padzs;
-
-  //Now Rotate:
-
-  Float_t alpha = GetAngles(det[1],det[2]);
-  Float_t xr =  xt*TMath::Cos(alpha/kRaddeg)+zt*TMath::Sin(alpha/kRaddeg);
-  Float_t yr =  yt;
-  Float_t zr = -xt*TMath::Sin(alpha/kRaddeg)+zt*TMath::Cos(alpha/kRaddeg);
-
-  if(TMath::Abs(xr)<=0.75 && TMath::Abs(yr)<= (fgkXPad*0.5) && TMath::Abs(zr)<= (fgkZPad*0.5))
-    isInside=true; 
-  return isInside;
-
-}
-
-
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::DistanceToPad(Int_t *det, TGeoHMatrix mat, Float_t *pos, Float_t *dist3d) const
-{
-//
-// Returns distance of  space point with coor pos (x,y,z) (cm) wrt 
-// pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-  if (!gGeoManager) {
-    printf("ERROR: no TGeo\n");
-    return 0.;
-  }
-  Double_t vecg[3];
-  vecg[0]=pos[0];
-  vecg[1]=pos[1];
-  vecg[2]=pos[2];
-  Double_t veclr[3]={-1.,-1.,-1.};
-  Double_t vecl[3]={-1.,-1.,-1.};
-  mat.MasterToLocal(vecg,veclr);  
-  vecl[0]=veclr[1];
-  vecl[1]=veclr[0];
-  vecl[2]=-veclr[2];
-  //Take into account reflections
-  if(det[1]>2){
-    vecl[1]=-veclr[0];
-    vecl[2]= veclr[2];
-  }    
-
-  Float_t dist = TMath::Sqrt(vecl[0]*vecl[0]+vecl[1]*vecl[1]+vecl[2]*vecl[2]);
-
-
-  if (dist3d){
-    dist3d[0] = vecl[0];
-    dist3d[1] = vecl[1];
-    dist3d[2] = vecl[2];
-  }
-
-  return dist;
-
-}
-
-
-//_____________________________________________________________________________
-Bool_t AliTOFGeometryV4::IsInsideThePad( Int_t *det, TGeoHMatrix mat, Float_t *pos) const
-{
-//
-// Returns true if space point with coor pos (x,y,z) (cm) falls 
-// inside pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-
-  const Float_t khsensmy = 0.5;      // heigth of Sensitive Layer
-
-  Double_t vecg[3];
-  vecg[0]=pos[0];
-  vecg[1]=pos[1];
-  vecg[2]=pos[2];
-  Double_t veclr[3]={-1.,-1.,-1.};
-  Double_t vecl[3]={-1.,-1.,-1.};
-  mat.MasterToLocal(vecg,veclr);  
-  vecl[0]=veclr[1];
-  vecl[1]=veclr[0];
-  vecl[2]=-veclr[2];
-  //Take into account reflections
-  if(det[1]>2){
-    vecl[1]=-veclr[0];
-    vecl[2]= veclr[2];
-  }    
-
-  Float_t xr = vecl[0];
-  Float_t yr = vecl[1];
-  Float_t zr = vecl[2];
-
-  Bool_t isInside=false; 
-  if(TMath::Abs(xr)<= khsensmy*0.5 && TMath::Abs(yr)<= (fgkXPad*0.5) && TMath::Abs(zr)<= (fgkZPad*0.5))
-    isInside=true; 
-  return isInside;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetX(Int_t *det) const
-{
-  //
-  // Returns X coordinate (cm)
-  //
-
-  Int_t isector = det[0];
-  Int_t iplate  = det[1];
-  Int_t istrip  = det[2];
-  Int_t ipadz   = det[3];
-  Int_t ipadx   = det[4];
-
-  // Find out distance d on the plane wrt median phi:
-  Float_t d = (ipadx+0.5)*fgkXPad-(kNpadX*fgkXPad)*0.5;
-
-  // The radius r in xy plane:
-  Float_t r = (fgkRmin+fgkRmax)/2.+fHeights[iplate][istrip]+
-    (ipadz-0.5)*fgkZPad*TMath::Sin(fAngles[iplate][istrip]/kRaddeg)-0.25;
-
-  // local azimuthal angle in the sector philoc
-  Float_t philoc   = TMath:: ATan(d/r);
-
-  // azimuthal angle in the global frame  phi
-  Float_t phi      = philoc*kRaddeg+(isector+0.5 )*fPhiSec;                    
-
-  Float_t xCoor    = r/TMath::Cos(philoc)*TMath::Cos(phi/kRaddeg);
-
-  return xCoor;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetY(Int_t *det) const
-{
-  //
-  // Returns Y coordinate (cm)
-  //
-
-  Int_t isector = det[0];
-  Int_t iplate  = det[1];
-  Int_t istrip  = det[2];
-  Int_t ipadz   = det[3];
-  Int_t ipadx   = det[4];
-
-  // Find out distance d on the plane wrt median phi:
-  Float_t d = (ipadx+0.5)*fgkXPad-(kNpadX*fgkXPad)*0.5;
-
-  // The radius r in xy plane:
-  Float_t r = (fgkRmin+fgkRmax)/2.+fHeights[iplate][istrip]+
-    (ipadz-0.5)*fgkZPad*TMath::Sin(fAngles[iplate][istrip]/kRaddeg)-0.25;
-
-  // local azimuthal angle in the sector philoc
-  Float_t philoc   = TMath:: ATan(d/r);
-
-  // azimuthal angle in the global frame  phi
-  Float_t phi      = philoc*kRaddeg+(isector+0.5 )*fPhiSec;                    
-
-  Float_t yCoor    = r/TMath::Cos(philoc)*TMath::Sin(phi/kRaddeg);
-
-  return yCoor;
-
-}
-
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetZ(Int_t *det) const
-{
-  //
-  // Returns Z coordinate (cm)
-  //
-
-  Int_t iplate  = det[1];
-  Int_t istrip  = det[2];
-  Int_t ipadz   = det[3];
-
-  // The radius r in xy plane:
-  Float_t r = (fgkRmin+fgkRmax)/2.+fHeights[iplate][istrip];
-
-  Float_t zCoor = r*TMath::Tan(0.5*TMath::Pi()-GetStripTheta(iplate,istrip))-
-         (ipadz-0.5)*fgkZPad*TMath::Cos(fAngles[iplate][istrip]/kRaddeg);
-  return zCoor;
-
-}
-
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetSector(Float_t *pos) const
-{
-  //
-  // Returns the Sector index 
-  //
-
-  Int_t   iSect = -1; 
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-
-  Float_t phi     =  TMath::ATan2(y,x);        
-  if(phi<0.) phi=2.*TMath::Pi()+phi;
-  iSect  = (Int_t) (phi*kRaddeg/fPhiSec);
-
-  return iSect;
-
-}
-
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetPadX(Float_t *pos) const
-{
-  //
-  // Returns the Pad index along X 
-  //
-
-  Int_t iPadX  = -1;
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Int_t isector = GetSector(pos);
-  if(isector == -1){  
-    AliError("Detector Index could not be determined");
-    return iPadX;}
-  Int_t iplate =  GetPlate(pos);
-  if(iplate == -1){  
-    AliError("Detector Index could not be determined");
-    return iPadX;} 
-  Int_t istrip =  GetStrip(pos);
-  if(istrip == -1){  
-    AliError("Detector Index could not be determined");
-    return iPadX;}
-
-
-  Float_t rho=TMath::Sqrt(x*x+y*y);
-  Float_t phi =  TMath::ATan2(y,x);    
-  if(phi<0.) phi=2.*TMath::Pi()+phi;
-  // Get the local angle in the sector philoc
-  Float_t philoc   = phi*kRaddeg-(isector+0.5)*fPhiSec;
-  philoc*=TMath::Pi()/180.;
-  // theta projected on the median of the sector
-  Float_t theta = TMath::ATan2(rho*TMath::Cos(philoc),z);
-  // The radius r in xy plane:
-  Float_t r   = (fgkRmin+fgkRmax)/2.+fHeights[iplate][istrip]+
-               (theta-GetStripTheta(iplate, istrip))/
-    (GetMaxStripTheta(iplate, istrip)-GetMinStripTheta(iplate, istrip))
-   * 2.*fgkZPad*TMath::Sin(fAngles[iplate][istrip]/kRaddeg)-0.25;
-
-  // Find out distance projected onto the strip plane 
-  Float_t d = (r*TMath::Tan(philoc)+(kNpadX*fgkXPad)*0.5);
-
-  iPadX  =  (Int_t) ( d/fgkXPad);  
-  return iPadX;
-
-}
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetPlate(Float_t *pos) const
-{
-  //
-  // Returns the Plate index 
-  //
-  Int_t iPlate=-1;
-
-  Int_t isector = GetSector(pos);
-  if(isector == -1){  
-    AliError("Detector Index could not be determined");
-    return iPlate;}
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t rho=TMath::Sqrt(x*x+y*y);
-  Float_t phi=TMath::ATan2(y,x);       
-  if(phi<0) phi=2.*TMath::Pi()+phi;
-  // Get the local angle in the sector philoc
-  Float_t philoc   = phi*kRaddeg-(isector+0.5)*fPhiSec;
-  philoc*=TMath::Pi()/180.;
-  // theta projected on the median of the sector
-  Float_t theta=TMath::ATan2(rho*TMath::Cos(philoc),z);
-
-  for (Int_t i=0; i<kNPlates; i++){
-    if ( GetMaxPlateTheta(i) >= theta && 
-         GetMinPlateTheta(i) <= theta)iPlate=i;
-  }
-
-  return iPlate;
-
-}
-
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetStrip(Float_t *pos) const
-{
-  //
-  // Returns the Strip index 
-  //
-
-  Int_t iStrip=-1;
-
-
-  Int_t isector = GetSector(pos);
-  if(isector == -1){  
-    AliError("Detector Index could not be determined");
-    return iStrip;}
-  Int_t iplate =  GetPlate(pos);
-  if(iplate == -1){  
-    AliError("Detector Index could not be determined");
-    return iStrip;} 
-
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Int_t nstrips=0;
-  if(iplate==0 || iplate == 4)nstrips=kNStripC;
-  if(iplate==1 || iplate == 3)nstrips=kNStripB;
-  if(iplate==2)               nstrips=kNStripA;
-
-  Float_t rho=TMath::Sqrt(x*x+y*y);
-  Float_t phi=TMath::ATan2(y,x);       
-  if(phi<0) phi=2.*TMath::Pi()+phi;
-  // Get the local angle in the sector philoc
-  Float_t philoc   = phi*kRaddeg-(isector+0.5)*fPhiSec;
-  philoc*=TMath::Pi()/180.;
-  // theta projected on the median of the sector
-  Float_t theta=TMath::ATan2(rho*TMath::Cos(philoc),z);
-
-  for (Int_t istrip=0; istrip<nstrips; istrip++){
-
-    if( 
-       GetMaxStripTheta(iplate,istrip) >= theta 
-       &&  
-       GetMinStripTheta(iplate,istrip) <= theta ) iStrip = istrip;
-   
-  }
-
-  return iStrip;
-
-}
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV4::GetPadZ(Float_t *pos) const
-{
-  //
-  // Returns the Pad index along Z 
-  //
-  Int_t iPadZ = -1;
-
-  Int_t isector = GetSector(pos);
-  if(isector == -1){  
-    AliError("Detector Index could not be determined");
-    return iPadZ;}
-  Int_t iplate =  GetPlate(pos);
-  if(iplate == -1){  
-    AliError("Detector Index could not be determined");
-    return iPadZ;} 
-  Int_t istrip =  GetStrip(pos);
-  if(istrip == -1){  
-    AliError("Detector Index could not be determined");
-    return iPadZ;}
-
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t rho=TMath::Sqrt(x*x+y*y);
-  Float_t phi=TMath::ATan2(y,x);       
-  if(phi<0) phi=2.*TMath::Pi()+phi;
-  Float_t philoc   = phi*kRaddeg-(isector+0.5)*fPhiSec;
-  philoc*=TMath::Pi()/180.;
-  Float_t theta=TMath::ATan2(rho*TMath::Cos(philoc),z);
-
-  if (theta >= GetStripTheta(iplate, istrip))iPadZ=1;
-  else iPadZ=0;
-
-  return iPadZ;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetMinPlateTheta(Int_t iPlate) const
-{
-  //
-  // Returns the minimum theta angle of a given plate iPlate (rad)
-  //
-  
-
-  Int_t index=0;
-
-  Float_t delta =0.;
-  if(iPlate==0)delta = -1. ;
-  if(iPlate==1)delta = -0.5;
-  if(iPlate==3)delta = +0.5;
-  if(iPlate==4)delta = +1. ;
-
-  Float_t z=(fgkRmin+2.)*TMath::Tan(fAngles[iPlate][index]/kRaddeg)+delta;
-  Float_t r=(fgkRmin+fgkRmax)/2.+fHeights[iPlate][index];
-  z =z+fgkZPad*TMath::Cos(fAngles[iPlate][index]/kRaddeg);
-  r =r-fgkZPad*TMath::Sin(fAngles[iPlate][index]/kRaddeg);
-
-  Float_t thmin = 0.5*TMath::Pi()-TMath::ATan(z/r)-fgkDprecMin;
-  return thmin;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV4::GetMaxPlateTheta(Int_t iPlate) const
-{
-  //
-  // Returns the maximum theta angle of a given plate iPlate (rad)
-  
-  Int_t index=0;
-  if(iPlate==0 ||iPlate == 4)index=kNStripC-1;
-  if(iPlate==1 ||iPlate == 3)index=kNStripB-1;
-  if(iPlate==2)              index=kNStripA-1;
-
-  Float_t delta =0.;
-  if(iPlate==0)delta = -1. ;
-  if(iPlate==1)delta = -0.5;
-  if(iPlate==3)delta = +0.5;
-  if(iPlate==4)delta = +1. ;
-
-  Float_t z=(fgkRmin+2.)*TMath::Tan(fAngles[iPlate][index]/kRaddeg)+delta;
-  Float_t r=(fgkRmin+fgkRmax)/2.+fHeights[iPlate][index];
-  z =z-fgkZPad*TMath::Cos(fAngles[iPlate][index]/kRaddeg);
-  r= r+fgkZPad*TMath::Sin(fAngles[iPlate][index]/kRaddeg);
-
-  Float_t thmax    = 0.5*TMath::Pi()-TMath::ATan(z/r)+fgkDprecMax;
-
-  return thmax;
-
-}
-//_____________________________________________________________________________
-Float_t  AliTOFGeometryV4::GetMaxStripTheta(Int_t iPlate, Int_t iStrip) const
-{
-  //
-  // Returns the maximum theta angle of a given strip iStrip (rad)
-  //
-
-
-  Float_t delta =0.;
-  if(iPlate==0)delta = -1. ;
-  if(iPlate==1)delta = -0.5;
-  if(iPlate==3)delta = +0.5;
-  if(iPlate==4)delta = +1. ;
-
-  Float_t r =(fgkRmin+fgkRmax)/2.+fHeights[iPlate][iStrip];
-  Float_t z =(fgkRmin+2.)*TMath::Tan(fAngles[iPlate][iStrip]/kRaddeg)+delta;
-  z = z-fgkZPad*TMath::Cos(fAngles[iPlate][iStrip]/kRaddeg);
-  r = r+fgkZPad*TMath::Sin(fAngles[iPlate][iStrip]/kRaddeg);
-  Float_t thmax =0.5*TMath::Pi()-TMath::ATan(z/r)+fgkDprecMax;
-  return thmax;
-
-}
-//_____________________________________________________________________________
-Float_t  AliTOFGeometryV4::GetMinStripTheta(Int_t iPlate, Int_t iStrip) const
-{
-  //
-  // Returns the minimum theta angle of a given Strip iStrip (rad)
-  //
-  
-
-  Float_t delta =0.;
-  if(iPlate==0)delta = -1. ;
-  if(iPlate==1)delta = -0.5;
-  if(iPlate==3)delta = +0.5;
-  if(iPlate==4)delta = +1. ;
-
-
-  Float_t r =(fgkRmin+fgkRmax)/2.+fHeights[iPlate][iStrip];
-  Float_t z =(fgkRmin+2.)*TMath::Tan(fAngles[iPlate][iStrip]/kRaddeg)+delta;
-  z =z+fgkZPad*TMath::Cos(fAngles[iPlate][iStrip]/kRaddeg);
-  r =r-fgkZPad*TMath::Sin(fAngles[iPlate][iStrip]/kRaddeg);
-  Float_t thmin =0.5*TMath::Pi()-TMath::ATan(z/r)-fgkDprecMin;
-
-  return thmin;
-
-}
-//_____________________________________________________________________________
-Float_t  AliTOFGeometryV4::GetStripTheta(Int_t iPlate, Int_t iStrip) const
-{
-  //
-  // returns the median theta angle of a given strip iStrip (rad)
-  //
-  
-
-  Float_t delta =0.;
-  if(iPlate==0)delta = -1. ;
-  if(iPlate==1)delta = -0.5;
-  if(iPlate==3)delta = +0.5;
-  if(iPlate==4)delta = +1. ;
-
-  Float_t r =(fgkRmin+fgkRmax)/2.+fHeights[iPlate][iStrip];
-  Float_t z =(fgkRmin+2.)*TMath::Tan(fAngles[iPlate][iStrip]/kRaddeg)+delta;
-  Float_t theta =0.5*TMath::Pi()-TMath::ATan(z/r);
-  if(iPlate != 2){
-  if(theta > 0.5*TMath::Pi() )theta+=fgkDprecCen;
-  if(theta < 0.5*TMath::Pi() )theta-=fgkDprecCen;
-  }
-  return theta;
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV4::GetVolumePath(Int_t *ind, Char_t *path ) {
-  //--------------------------------------------------------------------
-  // This function returns the colume path of a given pad 
-  //--------------------------------------------------------------------
-  Int_t sector = ind[0];
-  Char_t  string1[100];
-  Char_t  string2[100];
-  Char_t  string3[100];
-  Char_t  string4[100];
-  Int_t nstrB = NStripB();
-  Int_t nstrC = NStripC();
-  
-  Int_t icopy=-1;
-  
-  if(sector<3){
-    icopy=sector+1;
-    sprintf(string1,"/ALIC_1/B077_1/B075_%i/BTO3_1",icopy);
-  }
-  else if(sector<11){
-    // icopy=sector-2;
-    icopy=sector+3;
-    sprintf(string1,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
-  }
-  else if(sector==11 || sector==12){
-    icopy=sector-10;
-    sprintf(string1,"/ALIC_1/B077_1/B074_%i/BTO2_1",icopy);
-  }
-  else {
-    // icopy=sector-4;
-    icopy=sector-12;
-    sprintf(string1,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
-  }
-  
-  Int_t modnum=ind[1];
-  Int_t istrip=ind[2];
-  
-  if( modnum ==0){
-    sprintf(string2,"FTOC_1/FLTC_0");
-    icopy= nstrC - istrip;
-    sprintf(string3,"FSTR_%i",icopy);
-  }    
-  else if( modnum ==1){
-    sprintf(string2,"FTOB_1/FLTB_0");
-    icopy= nstrB - istrip;
-      sprintf(string3,"FSTR_%i",icopy);
-  }
-  else if( modnum ==2){
-    sprintf(string2,"FTOA_0/FLTA_0");
-    icopy= istrip+1;
-    sprintf(string3,"FSTR_%i",icopy);
-  }
-  else if( modnum ==3){
-    sprintf(string2,"FTOB_2/FLTB_0");
-    icopy= istrip+1;
-    sprintf(string3,"FSTR_%i",icopy);
-  }
-  else if( modnum ==4){
-    sprintf(string2,"FTOC_2/FLTC_0");
-    icopy= istrip+1;
-    sprintf(string3,"FSTR_%i",icopy);
-  }
-
-
-  Int_t padz = ind[3]+1; 
-  Int_t padx = ind[4]+1;
-  if(modnum==3 || modnum==4){
-    padz = NpadZ() -ind[3];
-    padx = NpadX() -ind[4];
-  }
-  sprintf(string4,"FSEN_0/FSEZ_%i/FSEX_%i",padz,padx);
-  sprintf(path,"%s/%s/%s/%s",string1,string2,string3,string4); 
-
-}
-
-//_____________________________________________________________________________
-void AliTOFGeometryV4::GetVolumePath(Int_t sector, Char_t *path ) {
-  //--------------------------------------------------------------------
-  // This function returns the colume path of a given sector 
-  //--------------------------------------------------------------------
-  Char_t string[100];
-  
-  Int_t icopy=-1;
-  
-  if(sector<3){
-    icopy=sector+1;
-    sprintf(string,"/ALIC_1/B077_1/B075_%i/BTO3_1",icopy);
-  }
-  else if(sector<11){
-    // icopy=sector-2;
-    icopy=sector+3;
-    sprintf(string,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
-  }
-  else if(sector==11 || sector==12){
-    icopy=sector-10;
-    sprintf(string,"/ALIC_1/B077_1/B074_%i/BTO2_1",icopy);
-  }
-  else {
-    // icopy=sector-4;
-    icopy=sector-12;
-    sprintf(string,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
-  }
-  
-  sprintf(path,"%s",string); 
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV4::GetVolumePath(Int_t sector, Int_t plate, Int_t strip, Char_t *path ) {
-  //--------------------------------------------------------------------
-  // This function returns the colume path of a given strip 
-  //--------------------------------------------------------------------
-  Char_t string1[100];
-  Char_t string2[100];
-  Char_t string3[100];
-  Int_t nstrB = NStripB();
-  Int_t nstrC = NStripC();
-  
-  Int_t icopy=-1;
-  
-  if(sector<3){
-    icopy=sector+1;
-    sprintf(string1,"/ALIC_1/B077_1/B075_%i/BTO3_1",icopy);
-  }
-  else if(sector<11){
-    // icopy=sector-2;
-    icopy=sector+3;
-    sprintf(string1,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
-  }
-  else if(sector==11 || sector==12){
-    icopy=sector-10;
-    sprintf(string1,"/ALIC_1/B077_1/B074_%i/BTO2_1",icopy);
-  }
-  else {
-    // icopy=sector-4;
-    icopy=sector-12;
-    sprintf(string1,"/ALIC_1/B077_1/B071_%i/BTO1_1",icopy);
-  }
-  
-  if( plate ==0){
-    sprintf(string2,"FTOC_1/FLTC_0");
-    icopy = nstrC - strip;
-    sprintf(string3,"FSTR_%i",icopy);
-  }    
-  else if( plate ==1){
-    sprintf(string2,"FTOB_1/FLTB_0");
-    icopy = nstrB - strip;
-      sprintf(string3,"FSTR_%i",icopy);
-  }
-  else if( plate ==2){
-    sprintf(string2,"FTOA_0/FLTA_0");
-    icopy = strip+1;
-    sprintf(string3,"FSTR_%i",icopy);
-  }
-  else if( plate ==3){
-    sprintf(string2,"FTOB_2/FLTB_0");
-    icopy = strip+1;
-    sprintf(string3,"FSTR_%i",icopy);
-  }
-  else if( plate ==4){
-    sprintf(string2,"FTOC_2/FLTC_0");
-    icopy = strip+1;
-    sprintf(string3,"FSTR_%i",icopy);
-  }
-
-  sprintf(path,"%s/%s/%s/FSEN_0",string1,string2,string3); 
-
-}
-
-//_____________________________________________________________________________
-void AliTOFGeometryV4::GetPos(Int_t *det, Float_t *pos) 
-{
-//
-// Returns space point coor (x,y,z) (cm)  for Detector 
-// Indices  (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-  Char_t path[100];
-  GetVolumePath(det,path );
-  if (!gGeoManager) {
-    printf("ERROR: no TGeo\n");
-  }
-  gGeoManager->cd(path);
-  TGeoHMatrix global;
-  global = *gGeoManager->GetCurrentMatrix();
-  const Double_t *tr = global.GetTranslation();
-
-  pos[0]=tr[0];  
-  pos[1]=tr[1];  
-  pos[2]=tr[2];
-}
-//_____________________________________________________________________________
diff --git a/TOF/AliTOFGeometryV4.h b/TOF/AliTOFGeometryV4.h
deleted file mode 100644 (file)
index 6ce9802..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef ALITOFGEOMETRYV4_H
-#define ALITOFGEOMETRYV4_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  TOF geometry class (PPR version)                                         //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "AliTOFGeometry.h"
-
-class AliTOFGeometryV4: public AliTOFGeometry {
-
- public:
-  AliTOFGeometryV4();
-  virtual ~AliTOFGeometryV4();
-  
-  void    ImportGeometry();
-  void    Init();
-  Bool_t  IsInsideThePad(Int_t *det, TGeoHMatrix mat, Float_t *pos) const ;
-  Float_t DistanceToPad(Int_t *det, TGeoHMatrix mat, Float_t *pos, Float_t *dist3d=0) const ;
-  Bool_t  IsInsideThePadPar(Int_t *det, Float_t *pos) const ; 
-  Float_t DistanceToPadPar(Int_t *det, Float_t *pos, Float_t *dist3d=0) const ;
-  void    GetVolumePath(Int_t *ind, Char_t *path );
-  void    GetVolumePath(Int_t sector, Char_t *path );
-  void    GetVolumePath(Int_t sector, Int_t plate, Int_t strip, Char_t *path );
-  Int_t   GetPlate(Float_t *pos) const ;
-  Int_t   GetStrip(Float_t *pos) const ;
-  Int_t   GetSector(Float_t *pos) const ;
-  Int_t   GetPadX(Float_t *pos) const ;
-  Int_t   GetPadZ(Float_t *pos) const ;
-  void    GetPos(Int_t *det,Float_t *pos);
-  Float_t GetX(Int_t *det) const ;
-  Float_t GetY(Int_t *det) const ;
-  Float_t GetZ(Int_t *det) const ;
-  Float_t GetMinPlateTheta(Int_t iPlate) const;
-  Float_t GetMaxPlateTheta(Int_t iPlate) const;
-  Float_t GetMinStripTheta(Int_t iPlate, Int_t iStrip) const;
-  Float_t GetMaxStripTheta(Int_t iPlate, Int_t iStrip) const;
-  Float_t GetStripTheta(Int_t iPlate, Int_t iStrip) const;
-
-  Int_t NStripC() const    { return kNStripC;};
-  Int_t   NPadXSector() const { return (AliTOFGeometry::kNStripA + 2*AliTOFGeometry::kNStripB +
-                                 2*kNStripC)*AliTOFGeometry::kNpadX*AliTOFGeometry::kNpadZ;};
-
-  Float_t RinTOF() const     { return fgkxTOF;};
-  Float_t Rmin()  const      { return fgkRmin;};
-  Float_t Rmax()  const      { return fgkRmax;};
-
-  Float_t ZlenA()  const     { return fgkZlenA;};
-  Float_t ZlenB()  const     { return fgkZlenB;};
-  Float_t ZlenC()  const     { return fgkZlenC;};
-  Float_t MaxhZtof() const   { return fgkMaxhZtof;};
-
-  static  Float_t DeadBndX()    { return fgkDeadBndX;};
-  static  Float_t DeadBndZ()    { return fgkDeadBndZ;};
-  static  Float_t OverSpc()     { return fgkOverSpc;};
-
-  protected:
-  enum {
-    kNStripC    = 20 // number of strips in C type module 
-  };
-
-  //private:
-
-  static const Float_t fgkZlenA;       // length (cm) of the A module
-  static const Float_t fgkZlenB;       // length (cm) of the B module
-  static const Float_t fgkZlenC;       // length (cm) of the C module
-  static const Float_t fgkMaxhZtof;    // Max half z-size of TOF (cm)
-
-  static const Float_t fgkRmin;        // Inner radius of the TOF (cm)
-  static const Float_t fgkRmax;        // Outer radius of the TOF (cm)
-  static const Float_t fgkxTOF;        // Inner TOF Radius used in Reconstruction (cm)
-
-  static const Float_t fgkDeadBndX; // Dead Boundaries of a Strip along Z direction (width)
-  static const Float_t fgkDeadBndZ; // Dead Boundaries of a Strip along X direction (length)
-  static const Float_t fgkOverSpc;  // Space available for sensitive layers in radial direction (cm)
-
-  static const Float_t fgkDprecMin;//num.prec.tolerance on Thmin 
-  static const Float_t fgkDprecMax;//num.prec.tolerance on Thma 
-  static const Float_t fgkDprecCen;//num.prec.tolerance on <Theta> 
-
-  ClassDef(AliTOFGeometryV4,1) // TOF Geometry class
-};
-
-#endif
diff --git a/TOF/AliTOFGeometryV5.cxx b/TOF/AliTOFGeometryV5.cxx
deleted file mode 100644 (file)
index e54c5aa..0000000
+++ /dev/null
@@ -1,1719 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/*
-$Log$
-Revision 1.11  2007/05/09 08:37:40  arcelli
-Fix a bug in getting the pad volume path (in case of holes for PHOS)
-
-Revision 1.10  2007/05/03 08:04:19  decaro
-Coding convention: RN17 violation -> suppression
-
-Revision 1.9  2007/04/27 17:41:01  arcelli
-merge DistanceToPad and IsInsideThePad methods
-
-Revision 1.8  2007/02/19 18:55:26  decaro
-Added getter methods for volume path (for Event Display)
-
-Revision 1.17.1  2006/12/15
-         Added methods:
-            DetToSectorRF(...) to get pad corners
-          coordinates in its sector reference frame;
-            GetVolumePath(Int_t sector, Char_t *path)
-          to get the volume path for a sector
-            GetVolumePath(Int_t sector, Int_t plate, Int_t strip, Char_t *path)
-          to get the volume path for a strip
-         (A.De Caro, M.Di Stefano)
-Revision 1.7  2006/07/12 16:03:59  arcelli
-updates to match the new numbering of the TOF/TRD mother volumes in FRAME (ALICE convention)
-
-Revision 1.6  2006/05/04 19:41:42  hristov
-Possibility for partial TOF geometry (S.Arcelli)
-
-Revision 1.5  2006/04/20 22:30:50  hristov
-Coding conventions (Annalisa)
-
-Revision 1.4  2006/04/16 22:29:05  hristov
-Coding conventions (Annalisa)
-
-Revision 1.3  2006/03/12 14:38:05  arcelli
- Changes for TOF Reconstruction using TGeo
-
-Revision 1.2  2006/02/28 10:38:00  decaro
-AliTOFGeometry::fAngles, AliTOFGeometry::fHeights, AliTOFGeometry::fDistances arrays: dimension definition in the right location
-
-Revision 1.1  2005/12/15 08:55:33  decaro
-New TOF geometry description (V5) -G. Cara Romeo and A. De Caro
-
-Revision 0.1  2005/07/19 G. Cara Romeo and A. De Caro
-        Modify Global methods IsInsideThePad & DistanceToPad
-               according to the new TOF geometry
-        Implement Global  methods GetPadDx & GetPadDy & GetPadDz
-        Implement Private methods Translation & Rotation & InverseRotation
-        Modify Global methods GetDetID & GetPlate & GetSector &
-                              GetStrip & GetPadX & GetPadZ
-               according to the new TOF geometry
-        Modify Global methods GetPos & GetX & GetY & GetZ
-               according to the new TOF geometry
-*/
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  TOF Geometry class (new version)                                         //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "TGeoManager.h"
-
-#include "AliConst.h"
-#include "AliLog.h"
-
-#include "AliTOFGeometryV5.h"
-
-extern TGeoManager *gGeoManager;
-
-ClassImp(AliTOFGeometryV5)
-
-
-const Float_t AliTOFGeometryV5::fgkZlenA    = 370.6*2.; // length (cm) of the A module
-const Float_t AliTOFGeometryV5::fgkZlenB    = 146.5;    // length (cm) of the B module
-const Float_t AliTOFGeometryV5::fgkZlenC    = 170.45;   // length (cm) of the C module
-const Float_t AliTOFGeometryV5::fgkMaxhZtof = 370.6;    // Max half z-size of TOF (cm)
-
-const Float_t AliTOFGeometryV5::fgkxTOF     = 371.-0.01;// Inner radius of the TOF for Reconstruction (cm)
-const Float_t AliTOFGeometryV5::fgkRmin     = 370.-0.01;// Inner radius of the TOF (cm)
-const Float_t AliTOFGeometryV5::fgkRmax     = 399.-0.01;// Outer radius of the TOF (cm)
-
-//_____________________________________________________________________________
-AliTOFGeometryV5::AliTOFGeometryV5()
-  :AliTOFGeometry()
-{
-  //
-  // AliTOFGeometryV5 default constructor
-  //
-
-  AliTOFGeometry::fNStripC     = kNStripC;       // number of strips in C type module
-
-  AliTOFGeometry::fZlenA       = fgkZlenA;       // length of the TOF supermodule (cm)
-  AliTOFGeometry::fZlenB       = fgkZlenB;       // length of the B module (cm)
-  AliTOFGeometry::fZlenC       = fgkZlenC;       // length of the C module (cm)
-  AliTOFGeometry::fMaxhZtof    = fgkMaxhZtof;    // Max half z-size of TOF supermodule (cm)
-
-  AliTOFGeometry::fxTOF   = fgkxTOF;           // Inner radius of the TOF for Reconstruction (cm)
-  AliTOFGeometry::fRmin   = fgkRmin;           // Inner radius of the TOF (cm)
-  AliTOFGeometry::fRmax   = fgkRmax;           // Outer radius of the TOF (cm)
-
-  Init();
-
-}
-
-//_____________________________________________________________________________
-AliTOFGeometryV5::~AliTOFGeometryV5()
-{
-  //
-  // AliTOFGeometryV5 destructor
-  //
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::ImportGeometry(){
-  TGeoManager::Import("geometry.root");
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::Init()
-{
-  //
-  // Initialize strip Tilt Angles, Heights and Distances
-  //
-  // Strips Tilt Angles
-  // For each strip to be positoned in FLTA/FLTB/FLTC,
-  // define 3 arrays containing:
-  //   the angle of the normal with respect to the Y axis of FLTA/FLTB/FLTC
-  //   the Y of the center with respect to the FLTA/FLTB/FLTC reference frame
-  //   the Z of the center with respect to the BT01/BT02/BT03 reference frame
-
-
-  fPhiSec   = 360./kNSectors;
-
-  Float_t const kangles[kNPlates][kMaxNstrip] ={
-    { 43.99,  43.20,  42.40,  41.59,  40.77,  39.94,  39.11,  38.25,  37.40,  36.53,
-      35.65,  34.76,  33.87,  32.96,  32.05,  31.13,  30.19,  29.24,  12.33,  0.00},
-
-    { 27.26,  26.28,  25.30,  24.31,  23.31,  22.31,  21.30,  20.29,  19.26,  18.24,
-      17.20,  16.16,  15.11,  14.05,  13.00,  11.93,  10.87,   9.80,   8.74,  0.00},
-
-    {  0.00,   6.30,   5.31,   4.25,   3.19,   2.12,   1.06,   0.00,  -1.06,  -2.12,
-      -3.19,  -4.25,  -5.31,  -6.30,   0.00,   0.00,   0.00,   0.00,   0.00,  0.00},
-
-    { -8.74,  -9.80, -10.87, -11.93, -13.00, -14.05, -15.11, -16.16, -17.20, -18.24,
-     -19.26, -20.29, -21.30, -22.31, -23.31, -24.31, -25.30, -26.28, -27.26,  0.00},
-    
-    {-12.33, -29.24, -30.19, -31.13, -32.05, -32.96, -33.87, -34.76, -35.65, -36.53,
-     -37.40, -38.25, -39.11, -39.94, -40.77, -41.59, -42.40, -43.20, -43.99,  0.00}
-  };
-
-  Float_t const kheights[kNPlates][kMaxNstrip]= {
-    {-8.2,  -7.5,  -8.2,  -7.7,  -8.1,  -7.6,  -7.7,  -7.7,  -7.7,  -7.7,
-     -7.5,  -7.2,  -7.3,  -7.5,  -7.6,  -7.8,  -8.3,  -9.3,  -3.1,   0.0},
-
-    {-7.9,  -8.1,  -8.5,  -9.0, -10.1,  -3.9,  -5.9,  -7.7, -10.1,  -3.6,
-     -5.8,  -8.0, -10.4,  -4.4,  -7.2, -10.2,  -4.6,  -7.4, -10.4,   0.0},
-
-    {-2.5, -10.4,  -5.0,  -9.9,  -4.8,  -9.9,  -4.7, -10.2,  -4.7,  -9.9,
-     -4.8,  -9.9,  -5.0, -10.4,  -2.5,   0.0,   0.0,   0.0,   0.0,   0.0},
-
-    {-10.4, -7.4,  -4.6, -10.2,  -7.2,  -4.4, -10.4,  -8.0,  -5.8,  -3.6,
-     -10.1,  -7.7, -5.9,  -3.9, -10.1,  -9.0,  -8.5,  -8.1,  -7.9,   0.0},
-
-    { -3.1,  -9.3, -8.3,  -7.8,  -7.6,  -7.5,  -7.3,  -7.2,  -7.5,  -7.7,
-      -7.7,  -7.7, -7.7,  -7.6,  -8.1,  -7.7,  -8.2,  -7.5,  -8.2,   0.0}
-  };
-
-
-  Float_t const kdistances[kNPlates][kMaxNstrip]= {
-    { 364.1,  354.9,  344.5,  335.4,  325.5,  316.6,  307.2,  298.0,  288.9,  280.0,
-      271.3,  262.7,  254.0,  244.8,  236.1,  227.7,  219.1,  210.3,  205.7,    0.0},
-
-    { 194.2,  186.1,  177.9,  169.8,  161.5,  156.3,  147.8,  139.4,  130.9,  125.6,
-      117.3,  109.2,  101.1,   95.3,   87.1,   79.2,   73.0,   65.1,   57.6,    0.0},
-
-    {  49.5,   41.3,   35.3,   27.8,   21.2,   13.9,    7.0,    0.0,   -7.0,  -13.9,
-      -21.2,  -27.8,  -35.3,  -41.3,  -49.5,    0.0,    0.0,    0.0,    0.0,    0.0},
-
-    { -57.6,  -65.1,  -73.0,  -79.2,  -87.1,  -95.3, -101.1, -109.2, -117.3, -125.6,
-     -130.9, -139.4, -147.8, -156.3, -161.5, -169.8, -177.9, -186.1, -194.2,    0.0},
-
-    {-205.7, -210.3, -219.1, -227.7, -236.1, -244.8, -254.0, -262.7, -271.3, -280.0,
-     -288.9, -298.0, -307.2, -316.6, -325.5, -335.4, -344.5, -354.9, -364.1,    0.0}
-  };
-
-
-  for (Int_t iplate = 0; iplate < kNPlates; iplate++) {
-    for (Int_t istrip = 0; istrip < kMaxNstrip; istrip++) {
-      AliTOFGeometry::fAngles[iplate][istrip]   = kangles[iplate][istrip];
-      AliTOFGeometry::fHeights[iplate][istrip]  = kheights[iplate][istrip];
-      AliTOFGeometry::fDistances[iplate][istrip]= kdistances[iplate][istrip];
-    }
-  }
-
-}
-
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV5::DistanceToPadPar(Int_t *det, Float_t *pos, Float_t *dist3d) const
-{
-//
-// Returns distance of  space point with coor pos (x,y,z) (cm) wrt 
-// pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-    
-  //Transform pos into Sector Frame
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t radius = TMath::Sqrt(x*x+y*y);
-  //Float_t phi=TMath::ATan(y/x);      
-  //if(phi<0) phi = k2PI+phi; //2.*TMath::Pi()+phi;
-  Float_t phi = TMath::Pi()+TMath::ATan2(-y,-x);       
-  //  Get the local angle in the sector philoc
-  Float_t angle   = phi*kRaddeg-( Int_t (kRaddeg*phi/fPhiSec) + 0.5)*fPhiSec;
-  Float_t xs = radius*TMath::Cos(angle/kRaddeg);
-  Float_t ys = radius*TMath::Sin(angle/kRaddeg);
-  Float_t zs = z;
-
-  // Do the same for the selected pad
-
-  Float_t g[3];
-  GetPosPar(det,g);
-
-  Float_t padRadius = TMath::Sqrt(g[0]*g[0]+g[1]*g[1]);
-  //Float_t padPhi = TMath::ATan(g[1]/g[0]);   
-  //if(padPhi<0) padPhi = k2Pi + padPhi;
-  Float_t padPhi = TMath::Pi()+TMath::ATan2(-g[1],-g[0]);      
-
-  //  Get the local angle in the sector philoc
-  Float_t padAngle = padPhi*kRaddeg-( Int_t (padPhi*kRaddeg/fPhiSec)+ 0.5) * fPhiSec;
-  Float_t padxs = padRadius*TMath::Cos(padAngle/kRaddeg);
-  Float_t padys = padRadius*TMath::Sin(padAngle/kRaddeg);
-  Float_t padzs = g[2];
-  
-  //Now move to local pad coordinate frame. Translate:
-  
-  Float_t xt = xs-padxs;
-  Float_t yt = ys-padys;
-  Float_t zt = zs-padzs;
-  //Now Rotate:
-  
-  Float_t alpha = GetAngles(det[1],det[2]);
-  Float_t xr =  xt*TMath::Cos(alpha/kRaddeg)+zt*TMath::Sin(alpha/kRaddeg);
-  Float_t yr =  yt;
-  Float_t zr = -xt*TMath::Sin(alpha/kRaddeg)+zt*TMath::Cos(alpha/kRaddeg);
-
-  Float_t dist = TMath::Sqrt(xr*xr+yr*yr+zr*zr);
-
-  if (dist3d){
-    dist3d[0] = xr;
-    dist3d[1] = yr;
-    dist3d[2] = zr;
-  }
-
-  return dist;
-
-}
-
-//_____________________________________________________________________________
-Bool_t AliTOFGeometryV5::IsInsideThePadPar(Int_t *det, Float_t *pos) const
-{
-//
-// Returns true if space point with coor pos (x,y,z) (cm) falls 
-// inside pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-
-  Bool_t isInside=false; 
-
-  /*
-  const Float_t khhony    = 1.0          ; // heigth of HONY  Layer
-  const Float_t khpcby    = 0.08         ; // heigth of PCB   Layer
-  const Float_t khrgly    = 0.055        ; // heigth of RED GLASS  Layer
-  const Float_t khglfy    = 0.285        ; // heigth of GLASS+FISHLINE  Layer
-  const Float_t khcpcby   = 0.16         ; // heigth of PCB  Central Layer
-  //const Float_t kwcpcbz   = 12.4         ; // z dimension of PCB  Central Layer
-  const Float_t khstripy = 2.*khhony+2.*khpcby+4.*khrgly+2.*khglfy+khcpcby;//3.11
-  //const Float_t kwstripz = kwcpcbz;
-  //const Float_t klstripx = fgkStripLength;
-  */
-
-  const Float_t kPadDepth = 0.5;//0.05;//0.11;//0.16;//          // heigth of Sensitive Layer
-
-  //Transform pos into Sector Frame
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t radius = TMath::Sqrt(x*x+y*y);
-  Float_t phi = TMath::Pi()+TMath::ATan2(-y,-x);       
-
-  //  Get the local angle in the sector philoc
-  Float_t angle = phi*kRaddeg-( Int_t (kRaddeg*phi/fPhiSec) + 0.5) *fPhiSec;
-  Float_t xs = radius*TMath::Cos(angle/kRaddeg);
-  Float_t ys = radius*TMath::Sin(angle/kRaddeg);
-  Float_t zs = z;
-
-  // Do the same for the selected pad
-
-  Float_t g[3];
-  GetPosPar(det,g);
-
-  Float_t padRadius = TMath::Sqrt(g[0]*g[0]+g[1]*g[1]);
-  Float_t padPhi = TMath::Pi()+TMath::ATan2(-g[1],-g[0]);      
-
-  //  Get the local angle in the sector philoc
-  Float_t padAngle = padPhi*kRaddeg-( Int_t (padPhi*kRaddeg/fPhiSec)+ 0.5) * fPhiSec; 
-  Float_t padxs = padRadius*TMath::Cos(padAngle/kRaddeg);
-  Float_t padys = padRadius*TMath::Sin(padAngle/kRaddeg);
-  Float_t padzs = g[2];
-
-  //Now move to local pad coordinate frame. Translate:
-
-  Float_t xt = xs-padxs;
-  Float_t yt = ys-padys;
-  Float_t zt = zs-padzs;
-
-  //Now Rotate:
-
-  Float_t alpha = GetAngles(det[1],det[2]);
-  Float_t xr =  xt*TMath::Cos(alpha/kRaddeg)+zt*TMath::Sin(alpha/kRaddeg);
-  Float_t yr =  yt;
-  Float_t zr = -xt*TMath::Sin(alpha/kRaddeg)+zt*TMath::Cos(alpha/kRaddeg);
-
-  if(TMath::Abs(xr)<=kPadDepth*0.5 && TMath::Abs(yr)<= (fgkXPad*0.5) && TMath::Abs(zr)<= (fgkZPad*0.5))
-    isInside=true;
-  return isInside;
-
-}
-
-
-//_____________________________________________________________________________
-Bool_t AliTOFGeometryV5::IsInsideThePad(TGeoHMatrix mat, Float_t *pos, Float_t *dist3d) const
-{
-//
-// Returns true if space point with coor pos (x,y,z) (cm) falls 
-// inside pad with Detector Indices idet (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-
-  const Float_t kPadDepth = 0.5;      // heigth of Sensitive Layer
-  Double_t vecg[3];
-  vecg[0]=pos[0];
-  vecg[1]=pos[1];
-  vecg[2]=pos[2];
-  Double_t veclr[3]={-1.,-1.,-1.};
-  Double_t vecl[3]={-1.,-1.,-1.};
-  mat.MasterToLocal(vecg,veclr);  
-  vecl[0]=veclr[1];
-  vecl[1]=veclr[0];
-  //take into account reflections 
-  vecl[2]=-veclr[2];
-
-  Float_t xr = vecl[0];
-  Float_t yr = vecl[1];
-  Float_t zr = vecl[2];
-
-  if (dist3d){
-    dist3d[0] = vecl[0];
-    dist3d[1] = vecl[1];
-    dist3d[2] = vecl[2];
-  }
-  Bool_t isInside=false; 
-  if(TMath::Abs(xr)<= kPadDepth*0.5 && TMath::Abs(yr)<= (fgkXPad*0.5) && TMath::Abs(zr)<= (fgkZPad*0.5))
-    isInside=true; 
-  return isInside;
-
-}
-//_____________________________________________________________________________
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV5::GetX(Int_t *det) const
-{
-  //
-  // Returns X coordinate (cm)
-  //
-
-  Int_t isector = det[0];
-  Int_t iplate  = det[1];
-  Int_t istrip  = det[2];
-  Int_t ipadz   = det[3];
-  Int_t ipadx   = det[4];
-
-  /*
-  // Find out distance d on the plane wrt median phi:
-  Float_t d = (ipadx+0.5-kNpadX*0.5)*fgkXPad;
-
-  // The radius r in xy plane:
-  //Float_t r = (fgkRmin+fgkRmax)*0.5-0.01+GetHeights(iplate,istrip)+
-  //  (ipadz-0.5)*fgkZPad*TMath::Sin(GetAngles(iplate,istrip)/kRaddeg)-0.25; ???
-  Float_t r = (fgkRmin+fgkRmax)*0.5-0.01+GetHeights(iplate,istrip)+
-    (ipadz-0.5)*fgkZPad*TMath::Sin(GetAngles(iplate,istrip)/kRaddeg);
-
-  // local azimuthal angle in the sector philoc
-  Float_t philoc  = TMath::ATan(d/r);
-  //if(philoc<0.) philoc = k2PI + philoc;
-
-  // azimuthal angle in the global frame  phi
-  Float_t phi   = philoc*kRaddeg+(isector+0.5)*fPhiSec;
-
-  Float_t xCoor = r/TMath::Cos(philoc)*TMath::Cos(phi/kRaddeg);
-  */
-
-  // Pad reference frame -> FSTR reference frame
-  //  /*
-  Float_t posLocal[3] = {0., 0., 0.};
-  Float_t step[3] = {-(ipadx+0.5)*fgkXPad, 0., -(ipadz+0.5)*fgkZPad};
-  Translation(posLocal,step);
-
-  step[0] = kNpadX*0.5*fgkXPad;
-  step[1] = 0.;
-  step[2] = kNpadZ*0.5*fgkZPad;
-  //  */
-  /*
-  Float_t posLocal[3] = {(ipadx+0.5)*fgkXPad, 0., (ipadz+0.5)*fgkZPad};
-  Float_t step[3]= {kNpadX*0.5*fgkXPad, 0., kNpadZ*0.5*fgkZPad};
-  */
-  Translation(posLocal,step);
-
-  // FSTR reference frame -> FTOA/B/C = FLTA/B/C reference frame
-  Double_t angles[6];
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-
-  InverseRotation(posLocal,angles);
-
-  step[0] = 0.;
-  step[1] = -GetHeights(iplate,istrip);
-  step[2] =  GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  // FTOA = FLTA reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  InverseRotation(posLocal,angles);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> ALICE reference frame
-  step[0] = 0.;
-  step[1] = 0.;
-  step[2] = -((fgkRmax+fgkRmin)*0.5);
-  Translation(posLocal,step);
-
-  angles[0] = 90.;
-  angles[1] = 90.+(isector+0.5)*fPhiSec;
-  angles[2] = 0.;
-  angles[3] = 0.;
-  angles[4] = 90.;
-  angles[5] = (isector+0.5)*fPhiSec;
-
-  InverseRotation(posLocal,angles);
-
-  Float_t xCoor = posLocal[0];
-
-  return xCoor;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV5::GetY(Int_t *det) const
-{
-  //
-  // Returns Y coordinate (cm)
-  //
-
-  Int_t isector = det[0];
-  Int_t iplate  = det[1];
-  Int_t istrip  = det[2];
-  Int_t ipadz   = det[3];
-  Int_t ipadx   = det[4];
-
-  /*
-  // Find out distance d on the plane wrt median phi:
-  Float_t d = (ipadx+0.5-kNpadX*0.5)*fgkXPad;
-
-  // The radius r in xy plane:
-  //Float_t r = (fgkRmin+fgkRmax)*0.5-0.01+GetHeights(iplate,istrip)+
-  //  (ipadz-0.5)*fgkZPad*TMath::Sin(GetAngles(iplate,istrip)/kRaddeg)-0.25; ???
-  Float_t r = (fgkRmin+fgkRmax)*0.5-0.01+GetHeights(iplate,istrip)+
-    (ipadz-0.5)*fgkZPad*TMath::Sin(GetAngles(iplate,istrip)/kRaddeg);
-
-  // local azimuthal angle in the sector philoc
-  Float_t philoc = TMath::ATan(d/r);
-  //if(philoc<0.) philoc = k2PI + philoc;
-
-  // azimuthal angle in the global frame  phi
-  Float_t phi   = philoc*kRaddeg+(isector+0.5)*fPhiSec;
-
-  Float_t yCoor = r/TMath::Cos(philoc)*TMath::Sin(phi/kRaddeg);
-  */
-
-  // Pad reference frame -> FSTR reference frame
-  //  /*
-  Float_t posLocal[3] = {0., 0., 0.};
-  Float_t step[3] = {-(ipadx+0.5)*fgkXPad, 0., -(ipadz+0.5)*fgkZPad};
-  Translation(posLocal,step);
-
-  step[0] = kNpadX*0.5*fgkXPad;
-  step[1] = 0.;
-  step[2] = kNpadZ*0.5*fgkZPad;
-  //  */
-  /*
-  Float_t posLocal[3] = {(ipadx+0.5)*fgkXPad, 0., (ipadz+0.5)*fgkZPad};
-  Float_t step[3]= {kNpadX*0.5*fgkXPad, 0., kNpadZ*0.5*fgkZPad};
-  */
-  Translation(posLocal,step);
-
-  // FSTR reference frame -> FTOA/B/C = FLTA/B/C reference frame
-
-  Double_t angles[6];
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-
-  InverseRotation(posLocal,angles);
-
-  step[0] = 0.;
-  step[1] = -GetHeights(iplate,istrip);
-  step[2] =  GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  // FTOA = FLTA reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  InverseRotation(posLocal,angles);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> ALICE reference frame
-  step[0] = 0.;
-  step[1] = 0.;
-  step[2] = -((fgkRmax+fgkRmin)*0.5);
-  Translation(posLocal,step);
-
-  angles[0] = 90.;
-  angles[1] = 90.+(isector+0.5)*fPhiSec;
-  angles[2] = 0.;
-  angles[3] = 0.;
-  angles[4] = 90.;
-  angles[5] = (isector+0.5)*fPhiSec;
-
-  InverseRotation(posLocal,angles);
-
-  Float_t yCoor = posLocal[1];
-
-  return yCoor;
-
-}
-
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV5::GetZ(Int_t *det) const
-{
-  //
-  // Returns Z coordinate (cm)
-  //
-
-  Int_t isector = det[0];
-  Int_t iplate  = det[1];
-  Int_t istrip  = det[2];
-  Int_t ipadz   = det[3];
-  Int_t ipadx   = det[4];
-
-  /*
-  Float_t zCoor = GetDistances(iplate,istrip) +
-    (0.5-ipadz) * fgkZPad * TMath::Cos(GetAngles(iplate,istrip)*kDegrad);
-  */
-
-  // Pad reference frame -> FSTR reference frame
-  //  /*
-  Float_t posLocal[3] = {0., 0., 0.};
-  Float_t step[3] = {-(ipadx+0.5)*fgkXPad, 0., -(ipadz+0.5)*fgkZPad};
-  Translation(posLocal,step);
-
-  step[0] = kNpadX*0.5*fgkXPad;
-  step[1] = 0.;
-  step[2] = kNpadZ*0.5*fgkZPad;
-  //  */
-  /*
-  Float_t posLocal[3] = {(ipadx+0.5)*fgkXPad, 0., (ipadz+0.5)*fgkZPad};
-  Float_t step[3]= {kNpadX*0.5*fgkXPad, 0., kNpadZ*0.5*fgkZPad};
-  */
-  Translation(posLocal,step);
-
-  // FSTR reference frame -> FTOA/B/C = FLTA/B/C reference frame
-  Double_t angles[6];
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-
-  InverseRotation(posLocal,angles);
-
-  step[0] = 0.;
-  step[1] = -GetHeights(iplate,istrip);
-  step[2] =  GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  // FTOA = FLTA reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  InverseRotation(posLocal,angles);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> ALICE reference frame
-  step[0] = 0.;
-  step[1] = 0.;
-  step[2] = -((fgkRmax+fgkRmin)*0.5);
-  Translation(posLocal,step);
-
-  angles[0] = 90.;
-  angles[1] = 90.+(isector+0.5)*fPhiSec;
-  angles[2] = 0.;
-  angles[3] = 0.;
-  angles[4] = 90.;
-  angles[5] = (isector+0.5)*fPhiSec;
-
-  InverseRotation(posLocal,angles);
-
-  Float_t zCoor = posLocal[2];
-
-  return zCoor;
-
-}
-
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV5::GetSector(Float_t *pos) const
-{
-  //
-  // Returns the Sector index 
-  //
-
-  //const Float_t khAlWall = 0.1;
-  //const Float_t kModuleWallThickness = 0.3;
-
-  Int_t   iSect = -1; 
-
-  Float_t x = pos[0];
-  Float_t y = pos[1];
-  Float_t z = pos[2];
-
-  Float_t rho = TMath::Sqrt(x*x + y*y);
-
-  //if (!((z>=-fgkMaxhZtof && z<=fgkMaxhZtof) &&
-  if (!((z>=-fgkZlenA*0.5 && z<=fgkZlenA*0.5) &&
-       (rho>=(fgkRmin) && rho<=(fgkRmax)))) {
-    //(rho>=(fgkRmin-0.05)+kModuleWallThickness && rho<=(fgkRmax-0.05)-kModuleWallThickness-khAlWall-kModuleWallThickness))) {
-    //AliError("Detector Index could not be determined");
-    return iSect;
-  }
-
-  Float_t phi = TMath::Pi() + TMath::ATan2(-y,-x);     
-
-  iSect  = (Int_t) (phi*kRaddeg/fPhiSec);
-  
-  return iSect;
-
-}
-//_____________________________________________________________________________
-
-Int_t AliTOFGeometryV5::GetPlate(Float_t *pos) const
-{
-  //
-  // Returns the Plate index 
-  //
-  const Float_t kInterCentrModBorder1 = 49.5;
-  const Float_t kInterCentrModBorder2 = 57.5;
-  const Float_t kExterInterModBorder1 = 196.0;
-  const Float_t kExterInterModBorder2 = 203.5;
-
-  const Float_t kLengthExInModBorder  = 4.7;
-  const Float_t kLengthInCeModBorder  = 7.0;
-
-  //const Float_t khAlWall = 0.1;
-  const Float_t kModuleWallThickness = 0.3;
-  //const Float_t kHoneycombLayerThickness = 1.5;
-
-  Int_t iPlate=-1;
-
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return iPlate;
-  }
-
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0., 0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA = FLTA reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  Float_t yLocal = posLocal[1];
-  Float_t zLocal = posLocal[2];
-
-  Float_t deltaRhoLoc  = (fgkRmax-fgkRmin)*0.5 - kModuleWallThickness + yLocal;
-  Float_t deltaZetaLoc = TMath::Abs(zLocal);
-
-  Float_t deltaRHOmax = 0.;
-
-  if (TMath::Abs(zLocal)>=kExterInterModBorder1 && TMath::Abs(zLocal)<=kExterInterModBorder2) 
-    {
-      deltaRhoLoc -= kLengthExInModBorder;
-      deltaZetaLoc = kExterInterModBorder2-deltaZetaLoc;
-      deltaRHOmax  = (fgkRmax - fgkRmin)*0.5 - kModuleWallThickness - 2.*kLengthExInModBorder; // old 5.35, new 4.8
-
-      if (deltaRhoLoc > deltaZetaLoc*deltaRHOmax/(kInterCentrModBorder2-kInterCentrModBorder1)) {
-       if (zLocal<0) iPlate = 0;
-       else iPlate = 4;
-      }
-      else {
-       if (zLocal<0) iPlate = 1;
-       else iPlate = 3;
-      }
-    }
-  else if (TMath::Abs(zLocal)>=kInterCentrModBorder1 && TMath::Abs(zLocal)<=kInterCentrModBorder2) 
-    {
-      deltaRhoLoc -= kLengthInCeModBorder;
-      deltaZetaLoc = deltaZetaLoc-kInterCentrModBorder1;
-      deltaRHOmax = (fgkRmax - fgkRmin)*0.5 - kModuleWallThickness - 2.*kLengthInCeModBorder; // old 0.39, new 0.2
-
-      if (deltaRhoLoc>deltaZetaLoc*deltaRHOmax/(kInterCentrModBorder2-kInterCentrModBorder1)) iPlate = 2;
-      else {
-       if (zLocal<0) iPlate = 1;
-       else iPlate = 3;
-      }
-    }
-
-  if      (zLocal>-fgkZlenA*0.5/*fgkMaxhZtof*/ && zLocal<-kExterInterModBorder2)       iPlate = 0;
-  else if (zLocal>-kExterInterModBorder1       && zLocal<-kInterCentrModBorder2)       iPlate = 1;
-  else if (zLocal>-kInterCentrModBorder1       && zLocal< kInterCentrModBorder1)       iPlate = 2;
-  else if (zLocal> kInterCentrModBorder2       && zLocal< kExterInterModBorder1)       iPlate = 3;
-  else if (zLocal> kExterInterModBorder2       && zLocal< fgkZlenA*0.5/*fgkMaxhZtof*/) iPlate = 4;
-  
-  return iPlate;
-
-}
-
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV5::GetStrip(Float_t *pos) const
-{
-  //
-  // Returns the Strip index 
-  //
-  const Float_t khhony    = 1.0          ; // heigth of HONY  Layer
-  const Float_t khpcby    = 0.08         ; // heigth of PCB   Layer
-  const Float_t khrgly    = 0.055        ; // heigth of RED GLASS  Layer
-  const Float_t khglfy    = 0.285        ; // heigth of GLASS+FISHLINE  Layer
-  const Float_t khcpcby   = 0.16         ; // heigth of PCB  Central Layer
-  const Float_t kwcpcbz   = 12.4         ; // z dimension of PCB  Central Layer
-  const Float_t khstripy = 2.*khhony+2.*khpcby+4.*khrgly+2.*khglfy+khcpcby;//3.11
-  const Float_t kwstripz = kwcpcbz;
-  const Float_t klstripx = fgkStripLength;
-  
-  Int_t iStrip=-1;
-   
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return iStrip;}
-  Int_t iplate =  GetPlate(posLocal);
-  if(iplate == -1){
-    //AliError("Detector Index could not be determined");
-    return iStrip;} 
-
-  Int_t nstrips=0;
-  switch (iplate) {
-  case 0:
-    nstrips=kNStripC;
-    break;
-  case 4:
-    nstrips=kNStripC;
-    break;
-  case 1:
-    nstrips=kNStripB;
-    break;
-  case 3:
-    nstrips=kNStripB;
-    break;
-  case 2:
-    nstrips=kNStripA;
-    break;
-  }
-  
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0., 0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA = FLTA reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  // FTOA/B/C = FLTA/B/C reference frame -> FSTR reference frame
-  Int_t totStrip=0;
-  for (Int_t istrip=0; istrip<nstrips; istrip++){
-
-    Float_t posLoc2[3]={posLocal[0],posLocal[1],posLocal[2]};        
-
-    step[0] = 0.;
-    step[1] = GetHeights(iplate,istrip);
-    step[2] = -GetDistances(iplate,istrip);
-    Translation(posLoc2,step);
-
-    if      (GetAngles(iplate,istrip) >0.) {
-      angles[0] = 90.;
-      angles[1] =  0.;
-      angles[2] = 90.+GetAngles(iplate,istrip);
-      angles[3] = 90.;
-      angles[4] = GetAngles(iplate,istrip);
-      angles[5] = 90.;
-    }
-    else if (GetAngles(iplate,istrip)==0.) {
-      angles[0] = 90.;
-      angles[1] =  0.;
-      angles[2] = 90.;
-      angles[3] = 90.;
-      angles[4] =  0;
-      angles[5] =  0.;
-    }
-    else if (GetAngles(iplate,istrip) <0.) {
-      angles[0] = 90.;
-      angles[1] =  0.;
-      angles[2] = 90.+GetAngles(iplate,istrip);
-      angles[3] = 90.;
-      angles[4] =-GetAngles(iplate,istrip);
-      angles[5] = 270.;
-    }
-    Rotation(posLoc2,angles);
-
-    if ((TMath::Abs(posLoc2[0])<=klstripx*0.5) &&
-       (TMath::Abs(posLoc2[1])<=khstripy*0.5) &&
-       (TMath::Abs(posLoc2[2])<=kwstripz*0.5)) {
-      iStrip = istrip;
-      totStrip++;
-      for (Int_t jj=0; jj<3; jj++) posLocal[jj]=posLoc2[jj];
-      //AliInfo(Form(" posLocal[0] = %f, posLocal[1] = %f, posLocal[2] = %f ", posLocal[0],posLocal[1],posLocal[2]));
-
-      //AliInfo(Form(" GetAngles(%1i,%2i) = %f, pos[0] = %f, pos[1] = %f, pos[2] = %f", iplate, istrip, GetAngles(iplate,istrip), pos[0], pos[1], pos[2]));
-      break;
-    }
-
-    if (totStrip>1) AliInfo(Form("total strip number found %2i",totStrip));
-
-  }
-
-  return iStrip;
-  
-}
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV5::GetPadZ(Float_t *pos) const
-{
-  //
-  // Returns the Pad index along Z 
-  //
-  //const Float_t klsensmx = kNpadX*fgkXPad;  // length of Sensitive Layer
-  //const Float_t khsensmy = 0.05;//0.11;//0.16;// heigth of Sensitive Layer
-  //const Float_t kwsensmz = kNpadZ*fgkZPad;  // width of Sensitive Layer
-
-  Int_t iPadZ = -1;
-
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return iPadZ;}
-  Int_t iplate =  GetPlate(posLocal);
-  if(iplate == -1){
-    //AliError("Detector Index could not be determined");
-    return iPadZ;}
-  Int_t istrip =  GetStrip(posLocal);
-  if(istrip == -1){
-    //AliError("Detector Index could not be determined");
-    return iPadZ;}
-
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0., 0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA = FLTA reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  // FTOA/B/C = FLTA/B/C reference frame -> FSTR reference frame
-  step[0] = 0.;
-  step[1] = GetHeights(iplate,istrip);
-  step[2] = -GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-  Rotation(posLocal,angles);
-
-  //if (TMath::Abs(posLocal[0])<=klsensmx*0.5 && /*TMath::Abs(posLocal[1])<=khsensmy*0.5+0.005 &&*/ TMath::Abs(posLocal[2])<=kwsensmz*0.5) {
-  //if (TMath::Abs(posLocal[1])<=khsensmy*0.5) {
-
-    step[0] =-0.5*kNpadX*fgkXPad;
-    step[1] = 0.;
-    step[2] =-0.5*kNpadZ*fgkZPad;
-    Translation(posLocal,step);
-
-    iPadZ = (Int_t)(posLocal[2]/fgkZPad);
-    if (iPadZ==kNpadZ) iPadZ--;
-    else if (iPadZ>kNpadZ) iPadZ=-1;
-
-  //}
-  // else AliError("Detector Index could not be determined");
-
-  return iPadZ;
-
-}
-//_____________________________________________________________________________
-Int_t AliTOFGeometryV5::GetPadX(Float_t *pos) const
-{
-  //
-  // Returns the Pad index along X 
-  //
-  //const Float_t klsensmx = kNpadX*fgkXPad;  // length of Sensitive Layer
-  //const Float_t khsensmy = 0.05;//0.11;//0.16;// heigth of Sensitive Layer
-  //const Float_t kwsensmz = kNpadZ*fgkZPad;  // width of Sensitive Layer
-
-  Int_t iPadX  = -1;
-
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return iPadX;}
-  Int_t iplate =  GetPlate(posLocal);
-  if(iplate == -1){
-    //AliError("Detector Index could not be determined");
-    return iPadX;} 
-  Int_t istrip =  GetStrip(posLocal);
-  if(istrip == -1){  
-    //AliError("Detector Index could not be determined");
-    return iPadX;}
-
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0.,  0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA/B/C = FLTA/B/C reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  // FTOA/B/C = FLTA/B/C reference frame -> FSTR reference frame
-  step[0] = 0.;
-  step[1] = GetHeights(iplate,istrip);
-  step[2] = -GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-  Rotation(posLocal,angles);
-
-  //if (TMath::Abs(posLocal[0])<=klsensmx*0.5 && /*TMath::Abs(posLocal[1])<=khsensmy*0.5+0.005 &&*/ TMath::Abs(posLocal[2])<=kwsensmz*0.5) {
-  //if (TMath::Abs(posLocal[1])<=khsensmy*0.5) {
-
-    step[0] =-0.5*kNpadX*fgkXPad;
-    step[1] = 0.;
-    step[2] =-0.5*kNpadZ*fgkZPad;
-    Translation(posLocal,step);
-
-    iPadX = (Int_t)(posLocal[0]/fgkXPad);
-    if (iPadX==kNpadX) iPadX--;
-    else if (iPadX>kNpadX) iPadX=-1;
-
-  //}
-  //else AliError("Detector Index could not be determined");
-
-  return iPadX;
-
-}
-//_____________________________________________________________________________
-
-Float_t AliTOFGeometryV5::GetPadDx(Float_t *pos)
-{
-  //
-  // Returns the x coordinate in the Pad reference frame
-  //
-
-  Float_t xpad = -2.;
-
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return xpad;}
-  Int_t iplate =  GetPlate(posLocal);
-  if(iplate == -1){
-    //AliError("Detector Index could not be determined");
-    return xpad;} 
-  Int_t istrip =  GetStrip(posLocal);
-  if(istrip == -1){  
-    //AliError("Detector Index could not be determined");
-    return xpad;}
-  Int_t ipadz =  GetPadZ(posLocal);
-  if(ipadz == -1){  
-    //AliError("Detector Index could not be determined");
-    return xpad;}
-  Int_t ipadx =  GetPadX(posLocal);
-  if(ipadx == -1){
-    //AliError("Detector Index could not be determined");
-    return xpad;}
-
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0.,  0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA/B/C = FLTA/B/C reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  // FTOA/B/C = FLTA/B/C reference frame -> FSTR reference frame
-  step[0] = 0.;
-  step[1] = GetHeights(iplate,istrip);
-  step[2] = -GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-  Rotation(posLocal,angles);
-
-  step[0] =-0.5*kNpadX*fgkXPad;
-  step[1] = 0.;
-  step[2] =-0.5*kNpadZ*fgkZPad;
-  Translation(posLocal,step);
-
-  step[0] = (ipadx+0.5)*fgkXPad;
-  step[1] = 0.;
-  step[2] = (ipadz+0.5)*fgkZPad;
-  Translation(posLocal,step);
-  
-  xpad=posLocal[0];
-
-  return xpad;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV5::GetPadDy(Float_t *pos)
-{
-  //
-  // Returns the y coordinate in the Pad reference frame
-  //
-
-  Float_t ypad = -2.;
-
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return ypad;}
-  Int_t iplate =  GetPlate(posLocal);
-  if(iplate == -1){
-    //AliError("Detector Index could not be determined");
-    return ypad;} 
-  Int_t istrip =  GetStrip(posLocal);
-  if(istrip == -1){  
-    //AliError("Detector Index could not be determined");
-    return ypad;}
-  Int_t ipadz =  GetPadZ(posLocal);
-  if(ipadz == -1){  
-    //AliError("Detector Index could not be determined");
-    return ypad;}
-  Int_t ipadx =  GetPadX(posLocal);
-  if(ipadx == -1){
-    //AliError("Detector Index could not be determined");
-    return ypad;}
-
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0.,  0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA/B/C = FLTA/B/C reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  // FTOA/B/C = FLTA/B/C reference frame -> FSTR reference frame
-  step[0] = 0.;
-  step[1] = GetHeights(iplate,istrip);
-  step[2] = -GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-  Rotation(posLocal,angles);
-
-  step[0] =-0.5*kNpadX*fgkXPad;
-  step[1] = 0.;
-  step[2] =-0.5*kNpadZ*fgkZPad;
-  Translation(posLocal,step);
-  
-  step[0] = (ipadx+0.5)*fgkXPad;
-  step[1] = 0.;
-  step[2] = (ipadz+0.5)*fgkZPad;
-  Translation(posLocal,step);
-  
-  ypad=posLocal[1];
-  
-  return ypad;
-
-}
-//_____________________________________________________________________________
-Float_t AliTOFGeometryV5::GetPadDz(Float_t *pos)
-{
-  //
-  // Returns the z coordinate in the Pad reference frame
-  //
-
-  Float_t zpad = -2.;
-
-  Float_t posLocal[3];
-  for (Int_t ii=0; ii<3; ii++) posLocal[ii] = pos[ii];
-  Int_t isector = GetSector(posLocal);
-  if(isector == -1){
-    //AliError("Detector Index could not be determined");
-    return zpad;}
-  Int_t iplate =  GetPlate(posLocal);
-  if(iplate == -1){
-    //AliError("Detector Index could not be determined");
-    return zpad;} 
-  Int_t istrip =  GetStrip(posLocal);
-  if(istrip == -1){  
-    //AliError("Detector Index could not be determined");
-    return zpad;}
-  Int_t ipadz =  GetPadZ(posLocal);
-  if(ipadz == -1){  
-    //AliError("Detector Index could not be determined");
-    return zpad;}
-  Int_t ipadx =  GetPadX(posLocal);
-  if(ipadx == -1){
-    //AliError("Detector Index could not be determined");
-    return zpad;}
-
-  // ALICE reference frame -> B071/B074/B075 = BTO1/2/3 reference frame
-  Double_t angles[6] = 
-    {90., 90.+(isector+0.5)*fPhiSec,
-      0.,  0.,
-     90., (isector+0.5)*fPhiSec
-    };
-  Rotation(posLocal,angles);
-
-  Float_t step[3] = {0., 0., (fgkRmax+fgkRmin)*0.5};
-  Translation(posLocal,step);
-
-  // B071/B074/B075 = BTO1/2/3 reference frame -> FTOA/B/C = FLTA/B/C reference frame
-  angles[0] = 90.;
-  angles[1] =  0.;
-  angles[2] =  0.;
-  angles[3] =  0.;
-  angles[4] = 90.;
-  angles[5] =270.;
-
-  Rotation(posLocal,angles);
-
-  // FTOA/B/C = FLTA/B/C reference frame -> FSTR reference frame
-  step[0] = 0.;
-  step[1] = GetHeights(iplate,istrip);
-  step[2] = -GetDistances(iplate,istrip);
-  Translation(posLocal,step);
-
-  if      (GetAngles(iplate,istrip) >0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] = GetAngles(iplate,istrip);
-    angles[5] = 90.;
-  }
-  else if (GetAngles(iplate,istrip)==0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.;
-    angles[3] = 90.;
-    angles[4] =  0;
-    angles[5] =  0.;
-  }
-  else if (GetAngles(iplate,istrip) <0.) {
-    angles[0] = 90.;
-    angles[1] =  0.;
-    angles[2] = 90.+GetAngles(iplate,istrip);
-    angles[3] = 90.;
-    angles[4] =-GetAngles(iplate,istrip);
-    angles[5] = 270.;
-  }
-  Rotation(posLocal,angles);
-
-  step[0] =-0.5*kNpadX*fgkXPad;
-  step[1] = 0.;
-  step[2] =-0.5*kNpadZ*fgkZPad;
-  Translation(posLocal,step);
-  
-  step[0] = (ipadx+0.5)*fgkXPad;
-  step[1] = 0.;
-  step[2] = (ipadz+0.5)*fgkZPad;
-  Translation(posLocal,step);
-
-  zpad=posLocal[2];
-
-  return zpad;
-
-}
-//_____________________________________________________________________________
-
-void AliTOFGeometryV5::Translation(Float_t *xyz, Float_t translationVector[3]) const
-{
-  //
-  // Return the vector xyz translated by translationVector vector
-  //
-
-  Int_t ii=0;
-
-  for (ii=0; ii<3; ii++)
-    xyz[ii] -= translationVector[ii];
-
-  return;
-
-}
-//_____________________________________________________________________________
-
-void AliTOFGeometryV5::Rotation(Float_t *xyz, Double_t rotationAngles[6]) const
-{
-  //
-  // Return the vector xyz rotated according to the rotationAngles angles
-  //
-
-  Int_t ii=0;
-  /*
-  TRotMatrix *matrix = new TRotMatrix("matrix","matrix", angles[0], angles[1],
-                                     angles[2], angles[3],
-                                     angles[4], angles[5]);
-  */
-
-  for (ii=0; ii<6; ii++) rotationAngles[ii]*=kDegrad;
-
-  Float_t xyzDummy[3] = {0., 0., 0.};
-
-  for (ii=0; ii<3; ii++) {
-    xyzDummy[ii] =
-      xyz[0]*TMath::Sin(rotationAngles[2*ii])*TMath::Cos(rotationAngles[2*ii+1]) +
-      xyz[1]*TMath::Sin(rotationAngles[2*ii])*TMath::Sin(rotationAngles[2*ii+1]) +
-      xyz[2]*TMath::Cos(rotationAngles[2*ii]);
-  }
-
-  for (ii=0; ii<3; ii++) xyz[ii]=xyzDummy[ii];
-
-  return;
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::InverseRotation(Float_t *xyz, Double_t rotationAngles[6]) const
-{
-  //
-  //
-  //
-
-  Int_t ii=0;
-
-  for (ii=0; ii<6; ii++) rotationAngles[ii]*=kDegrad;
-
-  Float_t xyzDummy[3] = {0., 0., 0.};
-
-  xyzDummy[0] =
-    xyz[0]*TMath::Sin(rotationAngles[0])*TMath::Cos(rotationAngles[1]) +
-    xyz[1]*TMath::Sin(rotationAngles[2])*TMath::Cos(rotationAngles[3]) +
-    xyz[2]*TMath::Sin(rotationAngles[4])*TMath::Cos(rotationAngles[5]);
-  
-  xyzDummy[1] =
-    xyz[0]*TMath::Sin(rotationAngles[0])*TMath::Sin(rotationAngles[1]) +
-    xyz[1]*TMath::Sin(rotationAngles[2])*TMath::Sin(rotationAngles[3]) +
-    xyz[2]*TMath::Sin(rotationAngles[4])*TMath::Sin(rotationAngles[5]);
-  
-  xyzDummy[2] =
-    xyz[0]*TMath::Cos(rotationAngles[0]) +
-    xyz[1]*TMath::Cos(rotationAngles[2]) +
-    xyz[2]*TMath::Cos(rotationAngles[4]);
-  
-  for (ii=0; ii<3; ii++) xyz[ii]=xyzDummy[ii];
-
-  return;
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::GetVolumePath(Int_t *ind, Char_t *path ) {
-  //--------------------------------------------------------------------
-  // This function returns the colume path of a given pad 
-  //--------------------------------------------------------------------
-  Int_t sector = ind[0];
-  Char_t  string1[100];
-  Char_t  string2[100];
-  Char_t  string3[100];
-  
-  Int_t icopy=-1;
-  icopy=sector;
-  sprintf(string1,"/ALIC_1/B077_1/BSEGMO%i_1/BTOF%i_1",icopy,icopy);
-  
-  Int_t iplate=ind[1];
-  Int_t istrip=ind[2];
-  if( iplate==0) icopy=istrip; 
-  if( iplate==1) icopy=istrip+NStripC(); 
-  if( iplate==2) icopy=istrip+NStripC()+NStripB(); 
-  if( iplate==3) icopy=istrip+NStripC()+NStripB()+NStripA(); 
-  if( iplate==4) icopy=istrip+NStripC()+2*NStripB()+NStripA(); 
-  icopy++;
-  sprintf(string2,"FTOA_0/FLTA_0/FSTR_%i",icopy);
-  if(fHoles && (sector==11 || sector==12)){
-    if(iplate<2)  sprintf(string2,"FTOB_0/FLTB_0/FSTR_%i",icopy);
-    if(iplate>2)  sprintf(string2,"FTOC_0/FLTC_0/FSTR_%i",icopy);
-  }
-  Int_t padz = ind[3]+1; 
-  Int_t padx = ind[4]+1;
-  sprintf(string3,"FPCB_1/FSEN_1/FSEZ_%i/FPAD_%i",padz,padx);
-  sprintf(path,"%s/%s/%s",string1,string2,string3); 
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::GetVolumePath(Int_t sector, Char_t *path ){
-  //--------------------------------------------------------------------
-  // This function returns the colume path of a given sector 
-  //--------------------------------------------------------------------
-
-  Char_t string[100];
-
-  Int_t icopy = sector;
-
-  sprintf(string,"/ALIC_1/B077_1/BSEGMO%i_1/BTOF%i_1",icopy,icopy);
-  sprintf(path,"%s",string);
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::GetVolumePath(Int_t sector, Int_t plate, Int_t strip, Char_t *path ) {
-  //--------------------------------------------------------------------
-  // This function returns the colume path of a given strip 
-  //--------------------------------------------------------------------
-
-  Char_t string1[100];
-  Char_t string2[100];
-  Char_t string3[100];
-  
-  Int_t icopy = sector;
-
-  sprintf(string1,"/ALIC_1/B077_1/BSEGMO%i_1/BTOF%i_1",icopy,icopy);
-  
-  if(plate==0) icopy=strip; 
-  if(plate==1) icopy=strip+NStripC(); 
-  if(plate==2) icopy=strip+NStripC()+NStripB(); 
-  if(plate==3) icopy=strip+NStripC()+NStripB()+NStripA(); 
-  if(plate==4) icopy=strip+NStripC()+2*NStripB()+NStripA(); 
-  icopy++;
-  sprintf(string2,"FTOA_0/FLTA_0/FSTR_%i",icopy);
-  if(fHoles && (sector==11 || sector==12)) {
-    if(plate<2)  sprintf(string2,"FTOB_0/FLTB_0/FSTR_%i",icopy);
-    if(plate>2)  sprintf(string2,"FTOC_0/FLTC_0/FSTR_%i",icopy);
-  }
-
-  sprintf(string3,"FPCB_1/FSEN_1");
-  sprintf(path,"%s/%s/%s",string1,string2,string3); 
-
-}
-//_____________________________________________________________________________
-void AliTOFGeometryV5::GetPos(Int_t *det, Float_t *pos) 
-{
-//
-// Returns space point coor (x,y,z) (cm)  for Detector 
-// Indices  (iSect,iPlate,iStrip,iPadX,iPadZ) 
-//
-  Char_t path[100];
-  GetVolumePath(det,path );
-  if (!gGeoManager) {
-    printf("ERROR: no TGeo\n");
-  }
-  gGeoManager->cd(path);
-  TGeoHMatrix global;
-  global = *gGeoManager->GetCurrentMatrix();
-  const Double_t *tr = global.GetTranslation();
-
-  pos[0]=tr[0];  
-  pos[1]=tr[1];  
-  pos[2]=tr[2];
-}
-//_____________________________________________________________________________
-
-void AliTOFGeometryV5::DetToSectorRF(Int_t vol[5], Double_t **coord)
-{
-  //
-  // Returns the local coordinates (x, y, z) in sector reference frame
-  // for the 4 corners of each sector pad (vol[1], vol[2], vol[3], vol[4])
-  //
-
-  if (!gGeoManager) printf("ERROR: no TGeo\n");
-
-  // ALICE -> TOF Sector
-  Char_t path1[100]="";
-  GetVolumePath(vol[0],path1);
-  gGeoManager->cd(path1);
-  TGeoHMatrix aliceToSector;
-  aliceToSector = *gGeoManager->GetCurrentMatrix();
-
-  // TOF Sector -> ALICE
-  //TGeoHMatrix sectorToALICE = aliceToSector.Inverse();
-
-  // ALICE -> TOF Pad
-  Char_t path2[100]="";
-  GetVolumePath(vol,path2);
-  gGeoManager->cd(path2);
-  TGeoHMatrix aliceToPad;
-  aliceToPad = *gGeoManager->GetCurrentMatrix();
-
-  // TOF Pad -> ALICE
-  TGeoHMatrix padToALICE = aliceToPad.Inverse();
-
-  // TOF Pad -> TOF Sector
-  TGeoHMatrix padToSector = padToALICE*aliceToSector;
-
-  // TOF Sector -> TOF Pad
-  //TGeoHMatrix sectorToPad = sectorToALICE*aliceToPad;
-
-  // coordinates of the pad bottom corner
-  Double_t **cornerPad = new Double_t*[4];
-  for (Int_t ii=0; ii<4; ii++) cornerPad[ii] = new Double_t[3];
-
-  cornerPad[0][0] = -fgkXPad/2.;
-  cornerPad[0][1] =  0.;
-  cornerPad[0][2] = -fgkZPad/2.;
-
-  cornerPad[1][0] =  fgkXPad/2.;
-  cornerPad[1][1] =  0.;
-  cornerPad[1][2] = -fgkZPad/2.;
-
-  cornerPad[2][0] =  fgkXPad/2.;
-  cornerPad[2][1] =  0.;
-  cornerPad[2][2] =  fgkZPad/2.;
-
-  cornerPad[3][0] = -fgkXPad/2.;
-  cornerPad[3][1] =  0.;
-  cornerPad[3][2] =  fgkZPad/2.;
-
-  for(Int_t aa=0; aa<4; aa++) for(Int_t bb=0; bb<3; bb++) coord[aa][bb]=0.;
-
-  for (Int_t jj=0; jj<4; jj++) padToSector.MasterToLocal(&cornerPad[jj][0], &coord[jj][0]);
-
-  delete cornerPad;
-
-  //sectorToPad.LocalToMaster(cornerPad, coord);
-
-}
diff --git a/TOF/AliTOFGeometryV5.h b/TOF/AliTOFGeometryV5.h
deleted file mode 100644 (file)
index 565bc9a..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifndef ALITOFGEOMETRYV5_H
-#define ALITOFGEOMETRYV5_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  TOF geometry class (new version)                                         //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include "AliTOFGeometry.h"
-
-class AliTOFGeometryV5: public AliTOFGeometry {
-
- public:
-  AliTOFGeometryV5();
-  virtual ~AliTOFGeometryV5();
-   
-  void    ImportGeometry();
-  void    Init();
-  Bool_t  IsInsideThePad(TGeoHMatrix mat, Float_t *pos, Float_t *dist3d=0) const;
-  Bool_t  IsInsideThePadPar(Int_t *det, Float_t *pos) const; 
-  Float_t DistanceToPadPar(Int_t *det, Float_t *pos, Float_t *dist3d=0) const;
-  void    GetVolumePath(Int_t *ind, Char_t *path );
-  void    GetVolumePath(Int_t sector, Char_t *path );
-  void    GetVolumePath(Int_t sector, Int_t plate, Int_t strip, Char_t *path );
-  Int_t   GetPlate(Float_t *pos) const;
-  Int_t   GetStrip(Float_t *pos) const;
-  Int_t   GetSector(Float_t *pos) const;
-  Int_t   GetPadX(Float_t *pos) const;
-  Int_t   GetPadZ(Float_t *pos) const;
-  void    GetPos(Int_t *det,Float_t *pos);
-  Float_t GetX(Int_t *det) const;
-  Float_t GetY(Int_t *det) const;
-  Float_t GetZ(Int_t *det) const;
-  Float_t GetPadDx(Float_t *pos);
-  Float_t GetPadDy(Float_t *pos);
-  Float_t GetPadDz(Float_t *pos);
-
-  Int_t   NStripC()  const   { return kNStripC;};
-  Int_t   NPadXSector() const { return (AliTOFGeometry::kNStripA + 2*AliTOFGeometry::kNStripB +
-                                 2*kNStripC)*AliTOFGeometry::kNpadX*AliTOFGeometry::kNpadZ;};
-
-  Float_t RinTOF()  const    { return fgkxTOF;};
-  Float_t Rmin()   const     { return fgkRmin;};
-  Float_t Rmax()   const     { return fgkRmax;};
-
-  Float_t ZlenA() const      { return fgkZlenA;};
-  Float_t ZlenB() const      { return fgkZlenB;};
-  Float_t ZlenC() const      { return fgkZlenC;};
-  Float_t MaxhZtof() const   { return fgkMaxhZtof;};
-
-  void Translation(Float_t *xyz, Float_t translationVector[3]) const;
-  void Rotation(Float_t *xyz, Double_t rotationAngles[6]) const;
-  void InverseRotation(Float_t *xyz, Double_t rotationAngles[6]) const;
-
-  void DetToSectorRF(Int_t vol[5], Double_t **coord);
-
-  protected:
-
-  enum {
-    kNStripC    = 19 // number of strips in C type module 
-  };
-
-  //private:
-
-  static const Float_t fgkZlenA;       // length (cm) of the A module
-  static const Float_t fgkZlenB;       // length (cm) of the B module
-  static const Float_t fgkZlenC;       // length (cm) of the C module
-  static const Float_t fgkMaxhZtof;    // Max half z-size of TOF (cm)
-
-  static const Float_t fgkRmin;        // Inner radius of the TOF (cm)
-  static const Float_t fgkRmax;        // Outer radius of the TOF (cm)
-  static const Float_t fgkxTOF;        // Inner TOF Radius used in Reconstruction (cm)
-
-  ClassDef(AliTOFGeometryV5,1) // TOF Geometry class
-};
-
-#endif
diff --git a/TOF/AliTOFPID.cxx b/TOF/AliTOFPID.cxx
deleted file mode 100644 (file)
index 81e7a0a..0000000
+++ /dev/null
@@ -1,1362 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-//_________________________________________________________________________
-// TTask class for TOF PID.
-// Use case: start root and execute the following macro
-/*
-{
-  // Dynamically link some shared libs
-  if (gClassTable->GetID("AliRun") < 0) {
-    gROOT->LoadMacro("loadlibs.C");
-    loadlibs();
-  }
-  // create an instance of the AliTOFPID class
-  // You have to pass the ntuple and cuts filenames
- AliTOFPID* tofpid=new AliTOFPID("ntuple.root","cuts.root");
-
- // option "pp" for pp events (it includes also electron in the analysis)
- // option "visual" to shows interactively histos
- // option "asC" or "asEPS" to save canvas in the current dir in .C or .eps format
-
- // make a choice: uncomment one of these lines
- // tofpid->Exec("pp","visual","asC");
- // tofpid->Exec("pp","novisual","asC");
- // tofpid->Exec("Pb-Pb","visual","asC");
- // tofpid->Exec("pp","visual","asC");
- // tofpid->Exec("pp","novisual","asEPS");
-}
-*/
-//
-//
-//
-//
-//
-//
-// 
-//
-//-- Authors: B. Zagreev , F. Pierella
-//////////////////////////////////////////////////////////////////////////////
-
-#include "TStyle.h"
-#include "TTask.h"
-#include "TTree.h"
-#include "TSystem.h"
-#include "TFile.h"
-#include "TCanvas.h"
-#include "TPad.h"
-#include "TText.h"
-#include "TLine.h"
-#include "TPaveLabel.h"
-#include "TPaveText.h"
-#include "TFile.h"
-#include <TF1.h>
-#include <TF2.h>
-#include "TTask.h"
-#include "TTree.h"
-#include "TSystem.h"
-#include "TROOT.h"
-#include "TFolder.h"
-#include "TNtuple.h"
-#include "TLeaf.h"
-
-#include "AliConst.h"
-#include "AliTOFGeometry.h"
-#include "AliTOFPID.h"
-
-#include <stdlib.h>
-#include <Riostream.h>
-#include <Riostream.h>
-
-ClassImp(AliTOFPID)
-
-//____________________________________________________________________________ 
-  AliTOFPID::AliTOFPID():TTask("AliTOFPID","") 
-{
-  // default ctor - set the pointer member vars to zero
-  felectron = 0;
-  fpion     = 0;
-  fkaon     = 0;
-  fproton   = 0;
-  fcut      = 0;
-  fhfile    = 0;
-  fNtuple   = 0;
-  fgen      = 0;
-  foutfileName  = 0;
-
-}
-           
-//____________________________________________________________________________ 
-  AliTOFPID::AliTOFPID(char* headerFile, char *cutsFile, const Option_t* opt):TTask("AliTOFPID","") 
-{
-  felectron = 0;
-  fpion     = 0;
-  fkaon     = 0;
-  fproton   = 0;
-  fhfile = TFile::Open(headerFile); // connect file with ntuple
-  fcut = TFile::Open(cutsFile); // connect file for cuts
-  foutfileName=headerFile;
-  fNtuple   = 0;
-  fgen      = 0;
-
-  Init(opt);
-  // add Task to //root/Tasks folder
-  TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ; 
-  roottasks->Add(this) ; 
-
-}
-//____________________________________________________________________________ 
-void AliTOFPID::Init(const Option_t* opt)
-{
-  if(strstr(opt,"pp")){ 
-    if(fcut->GetKey("electron")) felectron = (TCutG*)fcut->Get("electron");
-    fcut->Print();
-    if(fcut->GetKey("pion")) fpion = (TCutG*)fcut->Get("pion");
-    fcut->Print();
-  }
-  if(fcut->GetKey("kaon")) fkaon = (TCutG*)fcut->Get("kaon");
-  fcut->Print();
-  if(fcut->GetKey("proton")) fproton = (TCutG*)fcut->Get("proton");
-
-  gFile->ls();
-  fNtuple= (TNtuple*)fhfile->Get("Ntuple"); // get ntuple from file
-  Int_t nvar = fNtuple->GetNvar(); cout <<"N of var.="<< nvar << endl;
-  fNtuple->GetEvent(0);
-
-}
-
-//____________________________________________________________________________ 
-  AliTOFPID::~AliTOFPID()
-{
-  //
-  // dtor (free used memory)
-  //
-
-  if (felectron)
-    {
-      delete felectron;
-      felectron = 0;
-    }
-
-  if (fpion)
-    {
-      delete fpion;
-      fpion = 0;
-    }
-
-  if (fkaon)
-    {
-      delete fkaon;
-      fkaon = 0;
-    }
-
-  if (fproton)
-    {
-      delete fproton;
-      fproton = 0;
-    }
-
-  if (fcut)
-    {
-      delete fcut;
-      fcut = 0;
-    }
-
-
-  if (fhfile)
-    {
-      delete fhfile;
-      fhfile = 0;
-    }
-
-
-  if (fNtuple)
-    {
-      delete fNtuple;
-      fNtuple = 0;
-    }
-
-  if (fgen)
-    {
-      delete fgen;
-      fgen = 0;
-    }
-
-  if (foutfileName)
-    {
-      delete foutfileName;
-      foutfileName = 0;
-    }
-}
-
-
-//____________________________________________________________________________
-void AliTOFPID::Exec(const Option_t *eventType, const Option_t *outputmode, const Option_t *outputsavemode) 
-{ 
-  //
-  // Performs PID for TOF detector
-  // 
-
-  fTask=1;
-  TAxis *xaxis;
-  ////////// Create histograms /////////////////
-  // for electron only in pp case
-  TH1F* eleff=0;
-  TH1F* eleffls=0;
-  TH1F *elcon=0;
-  TH1F *elid=0;
-  TH1F *elmatch=0;
-  TH1F *elall=0;
-
-  if(strstr(eventType,"pp")){
-    eleff = new TH1F("eleff","",10,0,0.6);
-    xaxis=eleff->GetYaxis();
-    xaxis->SetLabelSize(.08);
-    eleffls = new TH1F("eleffls","",10,0,0.6);
-    xaxis=eleffls->GetYaxis();
-    xaxis->SetLabelSize(.08);
-    elcon = new TH1F("elcon","",10,0,0.6);
-    xaxis=elcon->GetXaxis();
-    xaxis->SetLabelSize(.09);
-    xaxis=elcon->GetYaxis();
-    xaxis->SetLabelSize(.08);
-    elid = new TH1F("elid","Identified electrons",10,0,0.6);
-    elmatch = new TH1F("elmatch","N(e)",10,0,0.6);
-    elall = new TH1F("elall","Electrons",10,0,0.6);
-  }
-
-  // pions
-  TH1F *pit  = new TH1F("pit","",15,0,2.5); //part. with tracks
-  TH1F *pig  = new TH1F("pig","",15,0,2.5); //part. in geometry acceptance
-  TH1F *pieff = new TH1F("pieff","",15,0,2.5); //efficiency
-  TH1F *pieffls = new TH1F("pieffls","",15,0,2.5); //efficiency (last step)
-  xaxis=pieff->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  xaxis=pieffls->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *picon = new TH1F("picon","",15,0,2.5); //contamination
-  xaxis=picon->GetXaxis();
-  xaxis->SetLabelSize(.09);
-  xaxis=picon->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *piid  = new TH1F("piid","Identified pions",15,0,2.5);
-  TH1F *piall = new TH1F("piall","Pions",15,0,2.5);
-  TH1F *pimatch = new TH1F("pimatch","N(Pions)",15,0,2.5);
-  TH1F *pigen = new TH1F("pigen","Pions",15,0,2.5);
-  xaxis=pigen->GetXaxis();
-  xaxis->SetLabelSize(.09);
-  pigen->SetXTitle("P?t! (GeV/c)");
-  xaxis->SetTitleSize(.09);
-  xaxis=pigen->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  //pigen->SetYTitle("1/P?t!dN/dP?t! (GeV/c)^-2!");
-  xaxis->SetTitleSize(.09);
-
-  // kaons
-  TH1F *kat  = new TH1F("kat","",15,0,2.5);
-  TH1F *kag  = new TH1F("kag","",15,0,2.5);
-  TH1F *kaeff = new TH1F("kaeff","",15,0,2.5);
-  xaxis=kaeff->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *kaeffls = new TH1F("kaeffls","",15,0,2.5);
-  xaxis=kaeffls->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *kacon = new TH1F("kacon","",15,0,2.5);
-  xaxis=kacon->GetXaxis();
-  xaxis->SetLabelSize(.09);
-  xaxis=kacon->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *kaid  = new TH1F("kaid","Identified kaons",15,0,2.5);
-  TH1F *kamatch  = new TH1F("kamatch","N(K)",15,0,2.5);
-  TH1F *kaall = new TH1F("kaall","Kaons",15,0,2.5);
-  TH1F *kagen = new TH1F("kagen","Kaons",15,0,2.5);
-  xaxis=kagen->GetXaxis();
-  xaxis->SetLabelSize(.09);
-  kagen->SetXTitle("P?t! (GeV/c)");
-  xaxis->SetTitleSize(.09);
-  xaxis=kagen->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  //kagen->SetYTitle("1/P?t!dN/dP?t! (GeV/c)^-2!");
-  xaxis->SetTitleSize(.09);
-
-  // protons
-  TH1F *prt  = new TH1F("prt","",15,0,4.4);
-  TH1F *prg  = new TH1F("prg","",15,0,4.4);
-  TH1F *preff = new TH1F("preff","",15,0,4.4);
-  xaxis=preff->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *preffls = new TH1F("preffls","",15,0,4.4);
-  xaxis=preffls->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *prcon = new TH1F("prcon","",15,0,4.4);
-  xaxis=prcon->GetXaxis();
-  xaxis->SetLabelSize(.09);
-  xaxis=prcon->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  TH1F *prid  = new TH1F("prid","Identified protons",15,0,4.4);
-  TH1F *prmatch  = new TH1F("prmatch","N(p)",15,0,4.4);
-  TH1F *prall = new TH1F("prall","Protons",15,0,4.4);
-  TH1F *prgen = new TH1F("prgen","Protons",15,0,4.4);
-  xaxis=prgen->GetXaxis();
-  xaxis->SetLabelSize(.09);
-  prgen->SetXTitle("P?t! (GeV/c)");
-  xaxis->SetTitleSize(.09);
-  xaxis=prgen->GetYaxis();
-  xaxis->SetLabelSize(.08);
-  //prgen->SetYTitle("1/P?t!dN/dP?t! (GeV/c)^-2!");
-  xaxis->SetTitleSize(.09);
-
-  // 2-D histos (extrapolated mass vs momentum)
-  TH2F* hel=0;
-  if(strstr(eventType,"pp")){
-    hel = new TH2F("hel","",1000,-.2,1.2,1000,-4.2,0.);
-    hel->SetXTitle("Mass (GeV/c^{2})");
-    hel->SetYTitle("Momentum (GeV/c)");
-  }
-  TH2F *hpi = new TH2F("hpi","",1000,-.2,1.2,1000,-4.2,0.);
-  hpi->SetXTitle("Mass (GeV/c^{2})");
-  hpi->SetYTitle("Momentum (GeV/c)");
-  TH2F *hka = new TH2F("hka","",1000,-.2,1.2,1000,-4.2,0.);
-  hka->SetXTitle("Mass (GeV/c^{2})");
-  hka->SetYTitle("Momentum (GeV/c)");
-  TH2F *hpr = new TH2F("hpr","",1000,-.2,1.2,1000,-4.2,0.);
-  hpr->SetXTitle("Mass (GeV/c^{2})");
-  hpr->SetYTitle("Momentum (GeV/c)");
-  
-
-  fhfile->cd();
-  Int_t nparticles = (Int_t)fNtuple->GetEntries();
-  cout << " Number of nparticles =" << nparticles << endl;
-  if (nparticles <= 0) return;
-
-  Float_t ka=0, pi=0, pr=0, kaal=0, pial=0, pral=0;
-  Float_t pitrack=0, pimag=0, pigeom=0;
-  Float_t katrack=0, kamag=0, kageom=0;
-  Float_t prtrack=0, prmag=0, prgeom=0;
-  Float_t pif=0, kaf=0, prf=0, pin=0, kan=0, prn=0;
-  Float_t px, py, pz, x, y, z, mass;
-  Int_t event, matc, imam, pdgcode;
-  Int_t indexOfFile=0, numfile=0;
-  //////// Loop over tracks (particles)///////////////////////
-  
-  for (Int_t i=0; i < nparticles; i++) {
-    fNtuple->GetEvent(i);
-    event=(Int_t)(fNtuple->GetLeaf("event")->GetValue());
-    pdgcode=(Int_t)(fNtuple->GetLeaf("ipart")->GetValue());
-    mass=fNtuple->GetLeaf("mext")->GetValue(0);
-    matc=(Int_t)(fNtuple->GetLeaf("matc")->GetValue(0));
-    imam=(Int_t)(fNtuple->GetLeaf("imam")->GetValue(0));
-    px=fNtuple->GetLeaf("pxvtx")->GetValue(0);
-    py=fNtuple->GetLeaf("pyvtx")->GetValue(0);
-    pz=fNtuple->GetLeaf("pzvtx")->GetValue(0);
-    x=fNtuple->GetLeaf("xvtx")->GetValue(0);
-    y=fNtuple->GetLeaf("yvtx")->GetValue(0);
-    z=fNtuple->GetLeaf("zvtx")->GetValue(0);
-    Float_t pvtx=TMath::Sqrt(px*px+py*py+pz*pz);
-    Float_t ptvtx=TMath::Sqrt(px*px+py*py);
-    Float_t mt=0.;
-    Bool_t isSelected=(imam == 0 && pz !=0 && TMath::ATan(TMath::Abs(ptvtx/pz))>TMath::Pi()*45./180.);
-    Int_t abspdgcode=TMath::Abs(pdgcode);
-    switch(abspdgcode){
-    case 321:
-      if(isSelected && (matc==3 || matc==4)) kamatch->Fill(pvtx);
-      mt=TMath::Sqrt(AliTOFGeometry::KaonMass()*AliTOFGeometry::KaonMass()+px*px+py*py);
-      break;
-    case 2212:
-      if(isSelected && (matc==2 || matc==3 || matc==4)) prmatch->Fill(pvtx);
-      mt=TMath::Sqrt(AliTOFGeometry::ProtonMass()*AliTOFGeometry::ProtonMass()+px*px+py*py);
-      break;
-    case 11:
-      if(strstr(eventType,"pp") && (matc==3 || matc==4)) elmatch->Fill(pvtx); //  as in kaon case
-      mt=TMath::Sqrt(AliTOFGeometry::ElectronMass()*AliTOFGeometry::ElectronMass()+px*px+py*py);
-      break;
-    default:
-      if(isSelected && matc>0) pimatch->Fill(pvtx);
-      mt=TMath::Sqrt(AliTOFGeometry::PionMass()*AliTOFGeometry::PionMass()+px*px+py*py);
-      break;
-    }
-
-    if (isSelected)
-      {//only primary +/-45  
-       if (fkaon->IsInside(mass,-pvtx) && matc>2) {
-         ka++;
-         if (fTask!=2) kaid->Fill(pvtx); else {kaid->Fill(ptvtx);}
-         if (TMath::Abs(pdgcode)==321) {kaf++; kaeff->Fill(pvtx); kaeffls->Fill(pvtx);} else {kan++; kacon->Fill(pvtx);}
-       } else if (fproton->IsInside(mass,-pvtx) && matc>1) {
-         pr++;
-         if (fTask!=2) prid->Fill(pvtx); else 
-           {prid->Fill(ptvtx);}
-         if (TMath::Abs(pdgcode)==2212) {prf++; preff->Fill(pvtx); preffls->Fill(pvtx);} else {prn++; prcon->Fill(pvtx);}
-       } else  if (strstr(eventType,"pp") && felectron->IsInside(mass,-pvtx) && matc>2) {elid->Fill(pvtx);
-       if (strstr(eventType,"pp") && TMath::Abs(pdgcode)==11) {eleff->Fill(pvtx); eleffls->Fill(pvtx);} else {elcon->Fill(pvtx);}
-       } else if (matc>0) {
-         //||matc==-4&&fpion->IsInside(mass,-pvtx)
-         pi++;
-         if (fTask!=2) piid->Fill(pvtx); else {piid->Fill(ptvtx);}
-         if (TMath::Abs(pdgcode)==211) {pif++; pieff->Fill(pvtx); pieffls->Fill(pvtx);} else {pin++; picon->Fill(pvtx);}
-       }
-
-       //////////////// Normalization histograms ////////////////////
-       if (strstr(eventType,"pp") && TMath::Abs(pdgcode)==11) {
-         if (fTask!=2) elall->Fill(pvtx); else elall->Fill(ptvtx);
-         if (fTask==1) hel->Fill(mass,-pvtx);
-         
-       } else if (TMath::Abs(pdgcode)==211) {
-         pial++;
-         if (matc!=0) {
-           pitrack++; 
-           pit->Fill(pvtx);
-           if (matc!=-1) {
-             pimag++;
-             if (matc>-2 || matc==-4) {
-               pigeom++;
-               pig->Fill(pvtx);
-             }
-           }
-         }
-         if (fTask!=2) piall->Fill(pvtx); 
-         else {
-           piall->Fill(ptvtx,1/ptvtx);
-         }
-         if (fTask==1) hpi->Fill(mass,-pvtx); 
-         
-       } else if (TMath::Abs(pdgcode)==321) {
-         kaal++;
-         if (matc!=0) {
-           katrack++;
-           kat->Fill(pvtx);
-           if (matc!=-1) {
-             kamag++;
-             if (matc>-2 || matc==-4) {
-               kageom++;
-               kag->Fill(pvtx);
-             }
-           }
-         }
-         if (fTask!=2) kaall->Fill(pvtx); 
-         else {
-           kaall->Fill(ptvtx,1/ptvtx);
-         }
-         if (fTask==1) hka->Fill(mass,-pvtx);
-         
-       } else if (TMath::Abs(pdgcode)==2212) {
-         pral++;
-         if (matc!=0) {
-           prtrack++;
-           prt->Fill(pvtx);
-           if (matc!=-1) {
-             prmag++;
-             if (matc>-2 || matc==-4) {
-               prgeom++;
-               prg->Fill(pvtx);
-             }
-           }
-         }
-         if (fTask!=2) prall->Fill(pvtx); 
-         else {
-           prall->Fill(ptvtx,1/ptvtx);
-         }
-         if (fTask==1) hpr->Fill(mass,-pvtx);}
-       
-      }// End of cuts appling
-  }// End of loop over particles
-
-  // display results
-  cout<< "Pions in 45-135 deg.     "<< pial <<" (100%)"<< endl;
-  cout<< "Pions that have track    "<< pitrack/pial*100 <<" %"<<endl;
-  cout<< "Magnetic field           "<< pimag/pial*100 <<" %"<<endl;
-  cout<< "Geometry efficiency      "<< pigeom/pial*100 <<" %"<<endl;
-  cout<< "PID procedure            "<< pif/pial*100 <<" %"<<endl;
-  cout<< "Contamination            "<< pin/pi*100 <<" %"<<endl;
-  cout<<endl;
-  cout<< "Kaons in 45-135 deg.     "<< kaal <<" (100%)"<< endl;
-  cout<< "Kaons that have track    "<< katrack/kaal*100 <<" %"<<endl;
-  cout<< "Magnetic field           "<< kamag/kaal*100 <<" %"<<endl;
-  cout<< "Geometry efficiency      "<< kageom/kaal*100 <<" %"<<endl;
-  cout<< "PID procedure(+decays)   "<< kaf/kaal*100 <<" %"<<endl;
-  cout<< "Contamination            "<< kan/ka*100 <<" %"<<endl;
-  cout<<endl;
-  cout<< "Protons in 45-135 deg.   "<< pral <<" (100%)"<< endl;
-  cout<< "Protons that have track  "<< prtrack/pral*100 <<" %"<<endl;
-  cout<< "Magnetic field           "<< prmag/pral*100 <<" %"<<endl;
-  cout<< "Geometry efficiency      "<< prgeom/pral*100 <<" %"<<endl;
-  cout<< "PID procedure            "<< prf/pral*100 <<" %"<<endl;
-  cout<< "Contamination            "<< prn/pr*100 <<" %"<<endl;
-  cout<<endl;
-  cout<< "All part. in 45-135 deg.  "<< pial+kaal+pral <<" (100%)"<< endl;
-  cout<< "All part. that have track "<< (pitrack+katrack+prtrack)/(pial+kaal+pral)*100 <<" %"<<endl;
-  cout<< "Magnetic field            "<< (pimag+kamag+prmag)/(pial+kaal+pral)*100 <<" %"<<endl;
-  cout<< "Geometry efficiency       "<< (pigeom+kageom+prgeom)/(pial+kaal+pral)*100 <<" %"<<endl;
-  cout<< "PID procedure             "<< (pif+kaf+prf)/(pial+kaal+pral)*100 <<" %"<<endl;
-  cout<< "Contamination             "<< (pin+kan+prn)/(pi+ka+pr)*100 <<" %"<<endl;
-  cout<<endl;
-  
-  TCanvas *pidCanvas=0;   // overall
-  TCanvas *pidCanvasls=0; // last step of PID
-  TCanvas *momvsmassCanvas=0;
-  // overall Efficiency
-  TPad  *tp=0;
-  TPad  *pad1=0;
-  TPad  *pad2=0;
-  TPad  *pad3=0;
-  TPad  *pad4=0;
-  TPad  *pad5=0;
-  TPad  *pad6=0;
-  TPad  *pad7=0;
-  TPad  *pad8=0;
-
-  // last step Efficiency
-  TPad  *tpls=0;
-  TPad  *pad1ls=0;
-  TPad  *pad2ls=0;
-  TPad  *pad3ls=0;
-  TPad  *pad4ls=0;
-  TPad  *pad5ls=0;
-  TPad  *pad6ls=0;
-  TPad  *pad7ls=0;
-  TPad  *pad8ls=0;
-
-  //////////////////////// For fTask 1 ///////////////////////////
-  if (fTask==1) {
-    if (strstr(eventType,"pp")){
-      eleff->Divide(elall);
-      eleffls->Divide(elmatch);
-    }
-    // overall efficiency
-    pieff->Divide(piall);
-    kaeff->Divide(kaall);
-    preff->Divide(prall);
-
-    // last step efficiency
-    pieffls->Divide(pimatch);
-    kaeffls->Divide(kamatch);
-    preffls->Divide(prmatch);
-
-    pit->Divide(piall);
-    kat->Divide(kaall);
-    prt->Divide(prall);
-    pig->Divide(piall);
-    kag->Divide(kaall);
-    prg->Divide(prall);
-    if (strstr(eventType,"pp")){
-      elcon->Divide(elid);
-    }
-    // contamination
-    picon->Divide(piid);
-    kacon->Divide(kaid);
-    prcon->Divide(prid);
-
-    //Create a canvas, set the view range, show histograms
-    // for overall PID
-    if (indexOfFile==0) {
-      // overall Efficiency canvas
-      pidCanvas = new TCanvas("pidCanvas","PID (Overall)",10,100,800,500);
-      pidCanvas->SetBorderMode(0);
-      pidCanvas->SetBorderSize(0);
-      pidCanvas->SetFillColor(0);
-      pidCanvas->SetFillStyle(0);
-
-      // last step Efficiency canvas
-      pidCanvasls = new TCanvas("pidCanvasls","PID (Last Step)",10,100,800,500);
-      pidCanvasls->SetBorderMode(0);
-      pidCanvasls->SetBorderSize(0);
-      pidCanvasls->SetFillColor(0);
-      pidCanvasls->SetFillStyle(0);
-
-      if (strstr(outputmode,"visual")) {
-       pidCanvas->Draw();
-       pidCanvasls->Draw();
-      }
-
-      Float_t pxs=0.25+0.125; //X size of pad
-      Float_t pys=0.5+0.055;  //y size of pad
-      // overall
-      tp   = new TPad("histo","Histograms",.1,.1,.9,.9);
-      // last step
-      tpls = new TPad("histo","Histograms",.1,.1,.9,.9);
-
-      if (strstr(eventType,"Pb-Pb")){
-       // overall efficiency
-       //pad1 = new TPad("pad1","electron efficiency",0.,.5-.055,0.+pxs,.5-.055+pys-.00001,0,0,0);
-       pad2 = new TPad("pad2","pion efficiency",0.,0.5-.055,0.+pxs,0.5-.055+pys-.00001,0,0,0);
-       pad3 = new TPad("pad3","kaon efficiency",0.3,0.5-.055,0.3+pxs,0.5-.055+pys-.00001,0,0,0);
-       pad4 = new TPad("pad4","proton efficiency",0.6,0.5-.055,0.6+pxs,0.5-.055+pys-.00001,0,0,0);
-
-       // contamination
-       //pad5 = new TPad("pad5","electron contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
-       pad6 = new TPad("pad6","pion contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
-       pad7 = new TPad("pad7","kaon contamination",.3,0.,0.3+pxs,0.+pys,0,0,0);
-       pad8 = new TPad("pad8","proton contamination",.6,0.,0.6+pxs,0.+pys,0,0,0);
-
-       // we repeat the same for the last step of PID
-       //pad1ls = new TPad("pad1ls","electron efficiency",0.,.5-.055,0.+pxs,.5-.055+pys-.00001,0,0,0);
-       pad2ls = new TPad("pad2ls","pion efficiency",0.,0.5-.055,0.+pxs,0.5-.055+pys-.00001,0,0,0);
-       pad3ls = new TPad("pad3ls","kaon efficiency",0.3,0.5-.055,0.3+pxs,0.5-.055+pys-.00001,0,0,0);
-       pad4ls = new TPad("pad4ls","proton efficiency",0.6,0.5-.055,0.6+pxs,0.5-.055+pys-.00001,0,0,0);
-
-       // contamination
-       //pad5 = new TPad("pad5","electron contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
-       pad6ls = new TPad("pad6ls","pion contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
-       pad7ls = new TPad("pad7ls","kaon contamination",.3,0.,0.3+pxs,0.+pys,0,0,0);
-       pad8ls = new TPad("pad8ls","proton contamination",.6,0.,0.6+pxs,0.+pys,0,0,0);
-
-      }
-
-      if (strstr(eventType,"pp")){
-       // overall Efficiency
-       pad1 = new TPad("pad1","electron efficiency",0.,.5-.055,0.25+0.045,1.,0,0,0);
-       pad2 = new TPad("pad2","pion efficiency",0.25-0.015,0.5-.055,0.5+0.03,1.,0,0,0);
-       pad3 = new TPad("pad3","kaon efficiency",0.5-0.03,0.5-.055,0.75+0.015,1.,0,0,0);
-       pad4 = new TPad("pad4","proton efficiency",0.75-0.045,0.5-.055,1.,1.,0,0,0);
-
-       // contamination
-       pad5 = new TPad("pad5","electron contamination",0.,0.,.25+.045,.5+.055,0,0,0);
-       pad6 = new TPad("pad6","pion contamination",.25-.015,0.,.5+.03,.5+.055,0,0,0);
-       pad7 = new TPad("pad7","kaon contamination",.5-.03,0.,.75+.015,.5+.055,0,0,0);
-       pad8 = new TPad("pad8","proton contamination",.75-.045,0.,1.,.5+.055,0,0,0);
-
-
-       // we repeat the same for the last step of PID
-       pad1ls = new TPad("pad1ls","electron efficiency",0.,.5-.055,0.25+0.045,1.,0,0,0);
-       pad2ls = new TPad("pad2ls","pion efficiency",0.25-0.015,0.5-.055,0.5+0.03,1.,0,0,0);
-       pad3ls = new TPad("pad3ls","kaon efficiency",0.5-0.03,0.5-.055,0.75+0.015,1.,0,0,0);
-       pad4ls = new TPad("pad4ls","proton efficiency",0.75-0.045,0.5-.055,1.,1.,0,0,0);
-
-       // contamination
-       pad5ls = new TPad("pad5ls","electron contamination",0.,0.,.25+.045,.5+.055,0,0,0);
-       pad6ls = new TPad("pad6ls","pion contamination",.25-.015,0.,.5+.03,.5+.055,0,0,0);
-       pad7ls = new TPad("pad7ls","kaon contamination",.5-.03,0.,.75+.015,.5+.055,0,0,0);
-       pad8ls = new TPad("pad8ls","proton contamination",.75-.045,0.,1.,.5+.055,0,0,0);
-
-
-      }
-
-      // last step of PID
-      gStyle->SetOptStat(0);
-      tpls->SetFillStyle(0);
-      tpls->SetFillColor(0);
-      tpls->SetBorderSize(0);
-      pidCanvasls->cd();
-      TText *text1ls= new TText(.1,.2,"Contamination              Efficiency"); 
-      text1ls->SetTextAngle(90);
-      if (strstr(outputmode,"visual")) text1ls->Draw();
-      //tp->DrawText(.3,.0,"p (GeV/c");
-      pidCanvasls->cd();
-      TText *text2ls= new TText(.8,.0,"p (GeV/c)"); 
-      if (strstr(outputmode,"visual")) {
-       text2ls->Draw();
-       tpls->Draw();
-      }
-
-      // overall
-      gStyle->SetOptStat(0);
-      tp->SetFillStyle(0);
-      tp->SetFillColor(0);
-      tp->SetBorderSize(0);
-      pidCanvas->cd();
-      TText *text1= new TText(.1,.2,"Contamination              Efficiency"); 
-      text1->SetTextAngle(90);
-      if (strstr(outputmode,"visual")) text1->Draw();
-      //tp->DrawText(.3,.0,"p (GeV/c");
-      pidCanvas->cd();
-      TText *text2= new TText(.8,.0,"p (GeV/c)"); 
-      if (strstr(outputmode,"visual")) {
-       text2->Draw();
-       tp->Draw();
-      }
-
-    }
-
-
-    // drawing histos for overall case
-    if (strstr(eventType,"pp")){
-      pad1->SetFillStyle(0);
-      pad1->SetFillColor(10);
-      tp->cd();
-      if (strstr(outputmode,"visual")) pad1->Draw();
-      pad1->cd();
-      //eleff->SetLineWidth(15);
-      eleff->SetLineWidth(3);
-      eleff->SetMaximum(1.);
-      if (indexOfFile==0) {
-       //eleff->SetFillColor(33);
-       //eleff->SetFillColor(30);
-       //eleff->SetFillColor(0);
-       //eleff->SetLineColor(4);
-       eleff->SetLineColor(1);
-       if (strstr(outputmode,"visual")) eleff->Draw();
-      } else {
-       eleff->SetFillStyle(0);
-       eleff->SetFillColor(30);
-       if (indexOfFile==2) {
-         eleff->SetLineColor(3);
-         eleff->SetLineWidth(3);
-       } else {
-         //eleff->SetLineColor(2);
-         eleff->SetLineColor(1);
-         eleff->SetLineStyle(2);}
-       if (strstr(outputmode,"visual")) eleff->Draw("same");
-      }
-      //   eleff->Fit("pol1");
-      TPaveLabel *ellab = new TPaveLabel(.42,.85,.52,1.05,"e");
-      if (strstr(outputmode,"visual")) ellab->Draw();
-    }
-    
-    pad2->SetFillStyle(0);
-    pad2->SetFillColor(10);
-    tp->cd();
-    if (strstr(outputmode,"visual")) pad2->Draw();
-    pad2->cd();
-    pieff->SetLineWidth(3);
-    pieff->SetMaximum(1.);
-    if (indexOfFile==0) {
-      pieff->SetLineColor(1);
-      if (strstr(outputmode,"visual")) pieff->Draw();
-    } else {
-      pieff->SetFillStyle(0);
-      pieff->SetFillColor(30);
-      if (indexOfFile==1) {
-       pieff->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       pieff->SetLineStyle(3);
-      } else {
-       pieff->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) pieff->Draw("same");
-    }
-    TPaveLabel *pilab = new TPaveLabel(1.7,.85,2.2,1.05,"#pi");
-    if (strstr(outputmode,"visual")) pilab->Draw();
-    
-    pad3->SetFillStyle(0);
-    pad3->SetFillColor(10);
-    tp->cd();
-    if (strstr(outputmode,"visual")) pad3->Draw();
-    pad3->cd();
-    kaeff->SetLineWidth(3);
-    kaeff->SetMaximum(1.);
-    if (indexOfFile==0) {
-      kaeff->SetLineColor(1);
-      if (strstr(outputmode,"visual")) kaeff->Draw();
-    } else {
-      kaeff->SetFillStyle(0);
-      kaeff->SetFillColor(30);
-      if (indexOfFile==1) { 
-       kaeff->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       kaeff->SetLineStyle(3);
-      } else {
-       kaeff->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) kaeff->Draw("same");
-    }
-    TPaveLabel *kalab = new TPaveLabel(1.7,.85,2.2,1.05,"K");
-    if (strstr(outputmode,"visual")) kalab->Draw();
-    
-    pad4->SetFillStyle(0);
-    pad4->SetFillColor(10);
-    tp->cd();
-    if (strstr(outputmode,"visual")) pad4->Draw();
-    pad4->cd();
-    preff->SetLineWidth(3);
-    preff->SetMaximum(1.);
-    if (indexOfFile==0) {
-      preff->SetLineColor(1);
-      if (strstr(outputmode,"visual")) preff->Draw();
-    } else {
-      preff->SetFillStyle(0);
-      preff->SetFillColor(30);
-      if (indexOfFile==1) {
-       preff->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       preff->SetLineStyle(3);
-      } else {
-       preff->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) preff->Draw("same");
-    }
-    TPaveLabel *prlab = new TPaveLabel(3.2,.85,4.1,1.05,"p");
-    if (strstr(outputmode,"visual")) prlab->Draw();
-
-    if (strstr(eventType,"pp")){
-      pad5->SetFillStyle(0);
-      pad5->SetFillColor(10);
-      tp->cd();
-      if (strstr(outputmode,"visual")) pad5->Draw();
-      pad5->cd();
-      //elcon->SetLineWidth(5);
-      elcon->SetLineWidth(3);
-      elcon->SetMaximum(1.);
-      if (indexOfFile==0) {
-       //elcon->SetFillColor(33);
-       //elcon->SetFillColor(30);
-       //elcon->SetLineColor(4);
-       elcon->SetLineColor(1);
-       if (strstr(outputmode,"visual")) elcon->Draw();
-      } else {
-       elcon->SetFillStyle(4000);
-       elcon->SetFillColor(30);
-       if (indexOfFile==2) {
-         elcon->SetLineColor(3);
-         elcon->SetLineWidth(3);
-       } else {
-         elcon->SetLineColor(2);
-         elcon->SetLineStyle(2);}
-       if (strstr(outputmode,"visual")) elcon->Draw("same");
-      }
-    }
-
-
-    pad6->SetFillStyle(0);
-    pad6->SetFillColor(10);
-    tp->cd();
-    if (strstr(outputmode,"visual")) pad6->Draw();
-    pad6->cd();
-    picon->SetLineWidth(3);
-    picon->SetMaximum(1.);
-    if (indexOfFile==0) {
-      picon->SetLineColor(1);
-      if (strstr(outputmode,"visual")) picon->Draw();
-    } else {
-      picon->SetFillStyle(0);
-      picon->SetFillColor(30);
-      if (indexOfFile==1) { 
-       picon->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       picon->SetLineStyle(3);
-      } else {
-       picon->SetLineStyle(4);
-       TLine* line;
-       line = new TLine(0.2,0.85,0.9,0.85);
-       line->SetLineStyle(2);
-       line->SetLineWidth(1);
-       if (strstr(outputmode,"visual")) line->Draw();
-       line = new TLine(0.2,0.65,0.9,0.65);
-       line->SetLineWidth(2);
-       if (strstr(outputmode,"visual")) line->Draw();
-       line = new TLine(0.2,0.45,0.9,0.45);
-       line->SetLineStyle(3);
-       line->SetLineWidth(1);
-       if (strstr(outputmode,"visual")) line->Draw();
-       line = new TLine(0.2,0.25,0.9,0.25);
-       line->SetLineStyle(4);
-       line->SetLineWidth(1);
-       if (strstr(outputmode,"visual")) line->Draw();
-       TPaveLabel *pl = new TPaveLabel(1.1,0.8,1.9,0.9,"100 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-       pl = new TPaveLabel(1.1,0.6,1.9,0.7,"150 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-       pl = new TPaveLabel(1.1,0.4,1.9,0.5,"200 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-       pl = new TPaveLabel(1.1,0.2,1.9,0.3,"300 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-      }
-      if (strstr(outputmode,"visual")) picon->Draw("same");
-    }
-    
-    pad7->SetFillStyle(0);
-    pad7->SetFillColor(10);
-    tp->cd();
-    if (strstr(outputmode,"visual")) pad7->Draw();
-    pad7->cd();
-    kacon->SetLineWidth(3);
-    kacon->SetMaximum(1.);
-    if (indexOfFile==0) {
-      kacon->SetLineColor(1);
-      if (strstr(outputmode,"visual")) kacon->Draw();
-    } else {
-      kacon->SetFillStyle(0);
-      kacon->SetFillColor(30);
-      if (indexOfFile==1) {
-       kacon->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       kacon->SetLineStyle(3);
-      } else {
-       kacon->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) kacon->Draw("same");
-    }
-    
-    pad8->SetFillStyle(0);
-    pad8->SetFillColor(10);
-    tp->cd();
-    if (strstr(outputmode,"visual")) pad8->Draw();
-    pad8->cd();
-    prcon->SetLineWidth(3);
-    prcon->SetMaximum(1.);
-    if (indexOfFile==0) {
-      prcon->SetLineColor(1);
-      if (strstr(outputmode,"visual")) prcon->Draw();
-    } else {
-      prcon->SetFillStyle(0);
-      prcon->SetFillColor(30);
-      if (indexOfFile==1) {
-       prcon->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       prcon->SetLineStyle(3);
-      } else {
-       prcon->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) prcon->Draw("same");
-    }
-
-
-
-    // last step case (it is just a copy of the previous lines)
-    // moving to pidCanvasls canvas
-    pidCanvasls->cd();
-    // drawing histos for overall case
-    if (strstr(eventType,"pp")){
-      pad1ls->SetFillStyle(0);
-      pad1ls->SetFillColor(10);
-      tpls->cd();
-      if (strstr(outputmode,"visual")) pad1ls->Draw();
-      pad1ls->cd();
-      //eleff->SetLineWidth(15);
-      eleffls->SetLineWidth(3);
-      eleffls->SetMaximum(1.);
-      if (indexOfFile==0) {
-       //eleff->SetFillColor(33);
-       //eleff->SetFillColor(30);
-       //eleff->SetFillColor(0);
-       //eleff->SetLineColor(4);
-       eleffls->SetLineColor(1);
-       if (strstr(outputmode,"visual")) eleffls->Draw();
-      } else {
-       eleffls->SetFillStyle(0);
-       eleffls->SetFillColor(30);
-       if (indexOfFile==2) {
-         eleffls->SetLineColor(3);
-         eleffls->SetLineWidth(3);
-       } else {
-         //eleff->SetLineColor(2);
-         eleffls->SetLineColor(1);
-         eleffls->SetLineStyle(2);}
-       if (strstr(outputmode,"visual")) eleffls->Draw("same");
-      }
-      //   eleff->Fit("pol1");
-      TPaveLabel *ellabls = new TPaveLabel(.42,.85,.52,1.05,"e");
-      if (strstr(outputmode,"visual")) ellabls->Draw();
-    }
-    
-    pad2ls->SetFillStyle(0);
-    pad2ls->SetFillColor(10);
-    tpls->cd();
-    if (strstr(outputmode,"visual")) pad2ls->Draw();
-    pad2ls->cd();
-    pieffls->SetLineWidth(3);
-    pieffls->SetMaximum(1.);
-    if (indexOfFile==0) {
-      pieffls->SetLineColor(1);
-      if (strstr(outputmode,"visual")) pieffls->Draw();
-    } else {
-      pieffls->SetFillStyle(0);
-      pieffls->SetFillColor(30);
-      if (indexOfFile==1) {
-       pieffls->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       pieffls->SetLineStyle(3);
-      } else {
-       pieffls->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) pieffls->Draw("same");
-    }
-    TPaveLabel *pilabls = new TPaveLabel(1.7,.85,2.2,1.05,"#pi");
-    if (strstr(outputmode,"visual")) pilabls->Draw();
-    
-    pad3ls->SetFillStyle(0);
-    pad3ls->SetFillColor(10);
-    tpls->cd();
-    if (strstr(outputmode,"visual")) pad3ls->Draw();
-    pad3ls->cd();
-    kaeffls->SetLineWidth(3);
-    kaeffls->SetMaximum(1.);
-    if (indexOfFile==0) {
-      kaeffls->SetLineColor(1);
-      if (strstr(outputmode,"visual")) kaeffls->Draw();
-    } else {
-      kaeffls->SetFillStyle(0);
-      kaeffls->SetFillColor(30);
-      if (indexOfFile==1) { 
-       kaeffls->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       kaeffls->SetLineStyle(3);
-      } else {
-       kaeffls->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) kaeffls->Draw("same");
-    }
-    TPaveLabel *kalabls = new TPaveLabel(1.7,.85,2.2,1.05,"K");
-    if (strstr(outputmode,"visual")) kalabls->Draw();
-    
-    pad4ls->SetFillStyle(0);
-    pad4ls->SetFillColor(10);
-    tpls->cd();
-    if (strstr(outputmode,"visual")) pad4ls->Draw();
-    pad4ls->cd();
-    preffls->SetLineWidth(3);
-    preffls->SetMaximum(1.);
-    if (indexOfFile==0) {
-      preffls->SetLineColor(1);
-      if (strstr(outputmode,"visual")) preffls->Draw();
-    } else {
-      preffls->SetFillStyle(0);
-      preffls->SetFillColor(30);
-      if (indexOfFile==1) {
-       preffls->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       preffls->SetLineStyle(3);
-      } else {
-       preffls->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) preffls->Draw("same");
-    }
-    TPaveLabel *prlabls = new TPaveLabel(3.2,.85,4.1,1.05,"p");
-    if (strstr(outputmode,"visual")) prlabls->Draw();
-
-    if (strstr(eventType,"pp")){
-      pad5ls->SetFillStyle(0);
-      pad5ls->SetFillColor(10);
-      tpls->cd();
-      if (strstr(outputmode,"visual")) pad5ls->Draw();
-      pad5ls->cd();
-      //elcon->SetLineWidth(5);
-      elcon->SetLineWidth(3);
-      elcon->SetMaximum(1.);
-      if (indexOfFile==0) {
-       //elcon->SetFillColor(33);
-       //elcon->SetFillColor(30);
-       //elcon->SetLineColor(4);
-       elcon->SetLineColor(1);
-       if (strstr(outputmode,"visual")) elcon->Draw();
-      } else {
-       elcon->SetFillStyle(4000);
-       elcon->SetFillColor(30);
-       if (indexOfFile==2) {
-         elcon->SetLineColor(3);
-         elcon->SetLineWidth(3);
-       } else {
-         elcon->SetLineColor(2);
-         elcon->SetLineStyle(2);}
-       if (strstr(outputmode,"visual")) elcon->Draw("same");
-      }
-    }
-
-
-    pad6ls->SetFillStyle(0);
-    pad6ls->SetFillColor(10);
-    tpls->cd();
-    if (strstr(outputmode,"visual")) pad6ls->Draw();
-    pad6ls->cd();
-    picon->SetLineWidth(3);
-    picon->SetMaximum(1.);
-    if (indexOfFile==0) {
-      picon->SetLineColor(1);
-      if (strstr(outputmode,"visual")) picon->Draw();
-    } else {
-      picon->SetFillStyle(0);
-      picon->SetFillColor(30);
-      if (indexOfFile==1) { 
-       picon->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       picon->SetLineStyle(3);
-      } else {
-       picon->SetLineStyle(4);
-       TLine* line;
-       line = new TLine(0.2,0.85,0.9,0.85);
-       line->SetLineStyle(2);
-       line->SetLineWidth(1);
-       if (strstr(outputmode,"visual")) line->Draw();
-       line = new TLine(0.2,0.65,0.9,0.65);
-       line->SetLineWidth(2);
-       if (strstr(outputmode,"visual")) line->Draw();
-       line = new TLine(0.2,0.45,0.9,0.45);
-       line->SetLineStyle(3);
-       line->SetLineWidth(1);
-       if (strstr(outputmode,"visual")) line->Draw();
-       line = new TLine(0.2,0.25,0.9,0.25);
-       line->SetLineStyle(4);
-       line->SetLineWidth(1);
-       if (strstr(outputmode,"visual")) line->Draw();
-       TPaveLabel *pl = new TPaveLabel(1.1,0.8,1.9,0.9,"100 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-       pl = new TPaveLabel(1.1,0.6,1.9,0.7,"150 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-       pl = new TPaveLabel(1.1,0.4,1.9,0.5,"200 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-       pl = new TPaveLabel(1.1,0.2,1.9,0.3,"300 ps","br");
-       pl->SetFillColor(18);
-       pl->SetTextSize(0.99);
-       if (strstr(outputmode,"visual")) pl->Draw();
-      }
-      if (strstr(outputmode,"visual")) picon->Draw("same");
-    }
-    
-    pad7ls->SetFillStyle(0);
-    pad7ls->SetFillColor(10);
-    tpls->cd();
-    if (strstr(outputmode,"visual")) pad7ls->Draw();
-    pad7ls->cd();
-    kacon->SetLineWidth(3);
-    kacon->SetMaximum(1.);
-    if (indexOfFile==0) {
-      kacon->SetLineColor(1);
-      if (strstr(outputmode,"visual")) kacon->Draw();
-    } else {
-      kacon->SetFillStyle(0);
-      kacon->SetFillColor(30);
-      if (indexOfFile==1) {
-       kacon->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       kacon->SetLineStyle(3);
-      } else {
-       kacon->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) kacon->Draw("same");
-    }
-    
-    pad8ls->SetFillStyle(0);
-    pad8ls->SetFillColor(10);
-    tpls->cd();
-    if (strstr(outputmode,"visual")) pad8ls->Draw();
-    pad8ls->cd();
-    prcon->SetLineWidth(3);
-    prcon->SetMaximum(1.);
-    if (indexOfFile==0) {
-      prcon->SetLineColor(1);
-      if (strstr(outputmode,"visual")) prcon->Draw();
-    } else {
-      prcon->SetFillStyle(0);
-      prcon->SetFillColor(30);
-      if (indexOfFile==1) {
-       prcon->SetLineStyle(2);
-      } else if (indexOfFile==2) {
-       prcon->SetLineStyle(3);
-      } else {
-       prcon->SetLineStyle(4);}
-      if (strstr(outputmode,"visual")) prcon->Draw("same");
-    }
-
-
-
-
-
-
-
-    // momentum vs mass 2-D histos
-
-    if (indexOfFile==0) {
-      momvsmassCanvas = new TCanvas("momvsmassCanvas","Momentum vs mass disribution",500,10,700,700);
-      momvsmassCanvas->SetFillColor(0);
-      momvsmassCanvas->SetBorderMode(0);
-      gPad->SetFillStyle(0);
-      gPad->SetBorderMode(0);
-      gPad->SetFillColor(0);
-      //   gStyle->SetOptStat(11);
-      if (numfile==4) momvsmassCanvas->Divide(1,2,0,0); 
-    } else if (indexOfFile==1 && numfile == 4) {
-      momvsmassCanvas->cd(1);
-      TPaveLabel *pl = new TPaveLabel(-0.0376218,-3.03586,0.0979277,-2.70158,"100 ps","br");
-      pl->SetFillColor(18);
-      pl->SetTextSize(0.99);
-      if (strstr(outputmode,"visual")) pl->Draw();
-    } else if (indexOfFile==3 && numfile == 4) {
-      momvsmassCanvas->cd(2);
-      TPaveLabel *pl = new TPaveLabel(-0.0591866,-3.17077,0.076363,-2.86857,"300 ps","br");
-      pl->SetFillColor(18);
-      pl->SetTextSize(0.99);
-      if (strstr(outputmode,"visual")) pl->Draw();
-    }
-    if (numfile !=4) momvsmassCanvas->cd();
-    if (numfile !=4 || indexOfFile==1 || indexOfFile==3) {
-      //   hpi->PaintStat2(01);
-      hpi->SetMarkerColor(5);
-      if (strstr(outputmode,"visual")) hpi->Draw();
-      if(strstr(eventType,"pp")){
-       hel->SetMarkerColor(2);
-       if (strstr(outputmode,"visual")) hel->Draw("same");
-      }
-      hka->SetMarkerColor(4);
-      if (strstr(outputmode,"visual")) hka->Draw("same");
-      hpr->SetMarkerColor(3);
-      if (strstr(outputmode,"visual")) hpr->Draw("same");
-      if (strstr(outputmode,"visual")) {
-       fkaon->Draw();
-       fproton->Draw();
-       if(strstr(eventType,"pp")){
-         felectron->Draw();
-         fpion->Draw();
-       }
-      }
-      if(strstr(eventType,"pp")){
-       //TPaveText *ep = new TPaveText(-0.05,-0.5,0.05,-0.3);
-       //ep->AddText("e");
-       TPaveLabel *ep = new TPaveLabel(.42,.85,.52,1.05,"e");
-       if (strstr(outputmode,"visual")) ep->Draw();
-      }
-
-      TPaveText *pip = new TPaveText(0.15,-1.0,0.25,-0.8);
-      pip->AddText("#pi");
-      if (strstr(outputmode,"visual")) pip->Draw();
-      TPaveText *kp = new TPaveText(0.5,-2.0,0.6,-1.8);
-      kp->AddText("K");
-      if (strstr(outputmode,"visual")) kp->Draw();
-      TPaveText *prp = new TPaveText(0.9,-2.7,1.0,-2.5);
-      prp->AddText("p");
-      if (strstr(outputmode,"visual")) prp->Draw();
-      //   TText *text2= new TText(.59,.06,"Momentum"); 
-      //   text1->SetTextAngle(90);
-      //   text1->Draw();
-      //pidCanvas->DrawText(.1,.2,"Contamination               Efficiency");
-      momvsmassCanvas->Update();
-      if(strstr(outputsavemode,"asC")) momvsmassCanvas->Print("momvsmassCanvas.C");
-      if(strstr(outputsavemode,"asEPS")) momvsmassCanvas->Print("momvsmassCanvas.eps");
-      pidCanvas->cd();
-      pidCanvas->Update();
-      if(strstr(outputsavemode,"asC")) pidCanvas->Print("pidCanvas.C");
-      if(strstr(outputsavemode,"asEPS")) pidCanvas->Print("pidCanvas.eps");
-      char outFileName[100];
-      strcpy(outFileName,"histos");
-      strcat(outFileName,foutfileName);
-      TFile *houtfile = new TFile(outFileName,"recreate");
-      houtfile->cd();
-      // saving canvas
-      pidCanvas->Write(0,TObject::kOverwrite);
-      momvsmassCanvas->Write(0,TObject::kOverwrite);
-      // saving 1-D histos
-      pit->Write(0,TObject::kOverwrite);
-      pig->Write(0,TObject::kOverwrite);
-      pieff->Write(0,TObject::kOverwrite);
-      pieffls->Write(0,TObject::kOverwrite);
-      picon->Write(0,TObject::kOverwrite);
-      piid->Write(0,TObject::kOverwrite);
-      pimatch->Write(0,TObject::kOverwrite);
-      piall->Write(0,TObject::kOverwrite);
-      pigen->Write(0,TObject::kOverwrite);
-      kat->Write(0,TObject::kOverwrite);
-      kag->Write(0,TObject::kOverwrite);
-      kaeff->Write(0,TObject::kOverwrite);
-      kaeffls->Write(0,TObject::kOverwrite);
-      kaid->Write(0,TObject::kOverwrite);
-      kamatch->Write(0,TObject::kOverwrite);
-      kaall->Write(0,TObject::kOverwrite);
-      kagen->Write(0,TObject::kOverwrite);
-      kacon->Write(0,TObject::kOverwrite);
-      prt->Write(0,TObject::kOverwrite);
-      prg->Write(0,TObject::kOverwrite);
-      preff->Write(0,TObject::kOverwrite);
-      preffls->Write(0,TObject::kOverwrite);
-      prcon->Write(0,TObject::kOverwrite);
-      prid->Write(0,TObject::kOverwrite);
-      prmatch->Write(0,TObject::kOverwrite);
-      prall->Write(0,TObject::kOverwrite);
-      prgen->Write(0,TObject::kOverwrite);
-      // saving 2-D histos
-      hpi->Write(0,TObject::kOverwrite);
-      hka->Write(0,TObject::kOverwrite);
-      hpr->Write(0,TObject::kOverwrite);
-      // electron histos
-      if (hel && eleff && elcon && elid && elall){
-       hel->Write(0,TObject::kOverwrite);
-       eleff->Write(0,TObject::kOverwrite);
-       elcon->Write(0,TObject::kOverwrite);
-       elid->Write(0,TObject::kOverwrite);
-       elmatch->Write(0,TObject::kOverwrite);
-       elall->Write(0,TObject::kOverwrite);
-      }
-      cout << "file " << houtfile << " has been created" << endl;
-      cout << "it contains PID histos and canvas" << endl;
-      houtfile->Close();
-      houtfile->Write(0,TObject::kOverwrite);
-    }
-  }
-
-  if (strstr(outputmode,"novisual")){
-    // free used memory
-    delete pit  ; pit=0;
-    delete pig  ; pig=0;
-    delete pieff; pieff=0;
-    delete pieffls; pieffls=0;
-    delete picon; picon=0;
-    delete piid ; piid=0;
-    delete pimatch; pimatch=0;
-    delete piall; piall=0;
-    delete pigen; pigen=0;
-    delete kat  ; kat=0;
-    delete kag  ; kag=0;
-    delete kaeff; kaeff=0;
-    delete kaeffls; kaeffls=0;
-    delete kaid;  kaid=0;
-    delete kamatch; kamatch=0;
-    delete kaall; kaall=0;
-    delete kagen; kagen=0;
-    delete kacon; kacon=0;
-    delete prt;   prt=0;
-    delete prg;   prg=0;
-    delete preff; preff=0;
-    delete preffls; preffls=0;
-    delete prcon; prcon=0;
-    delete prid;  prid=0;
-    delete prmatch; prmatch=0;
-    delete prall; prall=0;
-    delete prgen; prgen=0;
-    // 2-D
-    delete hpi; hpi=0;
-    delete hka; hka=0;
-    delete hpr; hpr=0;
-    if (hel){ 
-      delete hel;
-      hel=0;
-    }
-    if (eleff){ 
-      delete eleff;
-      eleff=0;
-    }
-    if (eleffls){ 
-      delete eleffls;
-      eleffls=0;
-    }
-    if (elcon){ 
-      delete elcon;
-      elcon=0;
-    }
-    if (elid){ 
-      delete elid;
-      elid=0;
-    }
-    if (elmatch){ 
-      delete elmatch;
-      elmatch=0;
-    }
-    if (elall){ 
-      delete elall;
-      elall=0;
-    }
-  }
-}
-
-
-//__________________________________________________________________
-Bool_t AliTOFPID::operator==( AliTOFPID const & /*tofrec*/)const
-{
-  // dummy version of Equal operator.
-  // requested by coding conventions
-  return kTRUE;
-
-}
diff --git a/TOF/AliTOFPID.h b/TOF/AliTOFPID.h
deleted file mode 100644 (file)
index 23a2179..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef ALITOFPID_H
-#define ALITOFPID_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-
-//_________________________________________________________________________
-//  Task Class for PID in TOF      
-//                  
-//-- Authors: B. Zagreev, F. Pierella
-
-
-#include "TTask.h"
-#include "TCutG.h"
-#include "TString.h"
-#include <TF1.h>
-#include <TF2.h>
-#include <TH1.h>
-#include <TH2.h>
-#include <TNtuple.h>
-
-class AliTOFPID: public TTask {
-
-public:
-  AliTOFPID() ;          // ctor
-  AliTOFPID(char* headerFile, char *cutsFile, const Option_t* opt="pp") ; 
-  virtual ~AliTOFPID() ; // dtor   
-  virtual void  Exec(const Option_t *eventType, const Option_t *outputmode, const Option_t *outputsavemode); // do the main work
-  void          Init(const Option_t* opt);
-  void          SetNEvents(Int_t Nevents) {fNevents = Nevents;}
-  Int_t         GetNEvents() const {return fNevents;}
-  void  SetDbg(Int_t dbgflag)                        {fdbg=dbgflag;}
-  // getter for pointers to cuts
-  TCutG*        GetElectronCut() const {return felectron;}
-  TCutG*        GetPionCut()     const {return fpion;}
-  TCutG*        GetKaonCut()     const {return fkaon;}
-  TCutG*        GetProtonCut()   const {return fproton;}
-
-  TFile *       GetFileCuts()    const {return fcut;}
-  TNtuple*      GetInputNtuple() const {return fNtuple;}
-
-  Bool_t   operator == (const AliTOFPID & tofpid) const ;
-
-private:
-  TCutG *felectron; // pointer to cut for electron
-  TCutG *fpion;     // pointer to cut for pion
-  TCutG *fkaon;     // pointer to cut for kaon
-  TCutG *fproton;   // pointer to cut for proton
-  TFile *fcut;      // pointer to file containing cuts
-  TNtuple *fNtuple; // pointer to ntuple 
-  TFile *fhfile;
-  TFile *fgen;
-  char* foutfileName; // destination file name for histos
-  Int_t fNevents; // number of events
-  Int_t fdbg;
-  Int_t fTask;
-
- protected:
-
-  ClassDef(AliTOFPID,0)  // Task class for TOF pid
-
-};
-
-#endif // AliTOFPID_H
diff --git a/TOF/AliTOFProb.cxx b/TOF/AliTOFProb.cxx
deleted file mode 100644 (file)
index c6d987c..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-//_________________________________________________________________________
-// TTask class for TOF Probabilities (ALICE-Offline week June 2002).
-// Use case: start root and execute the following macro
-// ntuple.root is assumed to be the ntuple with the reconstructed
-// data
-/*
-{
-  // Dynamically link some shared libs
-  if (gClassTable->GetID("AliRun") < 0) {
-    gROOT->LoadMacro("loadlibs.C");
-    loadlibs();
-  }
-  // create an instance of the AliTOFProb class
-  // You have to pass the ntuple
- AliTOFProb* tofprob=new AliTOFProb("ntuple.root");
- tofprob->Exec("");
-}
-*/
-// 
-//-- Author: F. Pierella | pierella@bo.infn.it
-//////////////////////////////////////////////////////////////////////////////
-
-#include "TStyle.h"
-#include "TTask.h"
-#include "TTree.h"
-#include "TSystem.h"
-#include "TFile.h"
-#include "TH3.h"
-//#include "TH3.h"
-#include "TCanvas.h"
-#include "TFile.h"
-#include <TF1.h>
-#include <TF2.h>
-#include "TROOT.h"
-#include "TFolder.h"
-#include "TNtuple.h"
-#include "TLeaf.h"
-
-#include "AliConst.h"
-#include "AliTOFProb.h"
-
-#include <stdlib.h>
-#include <Riostream.h>
-#include <Riostream.h>
-
-ClassImp(AliTOFProb)
-
-//____________________________________________________________________________ 
-  AliTOFProb::AliTOFProb():TTask("AliTOFProb","") 
-{
-  // default ctor - set the pointer member vars to zero
-
-  fhfile    = 0;
-  fNtuple   = 0;
-  fgen      = 0;
-  foutfileName  = 0;
-}
-           
-//____________________________________________________________________________ 
-  AliTOFProb::AliTOFProb(char* headerFile):TTask("AliTOFProb","") 
-{
-
-  fhfile = TFile::Open(headerFile); // connect file with ntuple
-  foutfileName=headerFile;
-  fNtuple   = 0;
-  fgen      = 0;
-
-  Init();
-  // add Task to //root/Tasks folder
-  TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ; 
-  roottasks->Add(this) ; 
-}
-//____________________________________________________________________________ 
-void AliTOFProb::Init()
-{
-
-  fNtuple= (TNtuple*)fhfile->Get("Ntuple"); // get ntuple from file
-  Int_t nvar = fNtuple->GetNvar(); cout <<"N of var.="<< nvar << endl;
-  fNtuple->GetEvent(0);
-
-}
-
-//____________________________________________________________________________ 
-  AliTOFProb::~AliTOFProb()
-{
-  //
-  // dtor (free used memory)
-  //
-
-  if (fhfile)
-    {
-      delete fhfile;
-      fhfile = 0;
-    }
-
-
-  if (fNtuple)
-    {
-      delete fNtuple;
-      fNtuple = 0;
-    }
-
-  if (fgen)
-    {
-      delete fgen;
-      fgen = 0;
-    }
-
-  if (foutfileName)
-    {
-      delete foutfileName;
-      foutfileName = 0;
-    }
-}
-
-
-//____________________________________________________________________________
-void AliTOFProb::Exec(const Option_t * /*dummyOpt*/) 
-{ 
-  //
-  // Performs Prob for TOF detector
-  // 
-  fTask=1;
-  fhfile->cd();
-  // create the histo
-  TH3* h3D=new TH3F("h3D", "", 120, -0.1, 1.1, 120, -0.1, 1.1, 120, -0.1, 1.1);
-  TH3* h3Ddt=new TH3F("h3Ddt", "", 360, -120., 120., 360, -120., 120., 360, -120., 120.);
-
-  TH1* hpion  =new TH1F("hpion", "", 120, -0.1, 1.1);
-  TH1* hkaon  =new TH1F("hkaon", "", 120, -0.1, 1.1);
-  TH1* hproton=new TH1F("hproton", "", 120, -0.1, 1.1);
-
-  TH1* hdtpion  =new TH1F("hdtpion", "", 600, -120., 120.);
-  TH1* hdtkaon  =new TH1F("hdtkaon", "", 600, -120., 120.);
-  TH1* hdtproton=new TH1F("hdtproton", "", 600, -120., 120.);
-
-  const Float_t timeResolution=0.12;
-
-  Int_t nparticles = (Int_t)fNtuple->GetEntries();
-  cout << " Number of nparticles =" << nparticles << endl;
-  if (nparticles <= 0) return;
-  
-  for (Int_t i=0; i < nparticles; i++) {
-    fNtuple->GetEvent(i);
-    //Int_t event=(Int_t)(fNtuple->GetLeaf("event")->GetValue());
-    Int_t pdgcode=(Int_t)(fNtuple->GetLeaf("ipart")->GetValue());
-    // unused for the time being in the context of probabilities
-    // probably it will be included in AliESD approach
-    //Float_t mass=fNtuple->GetLeaf("mext")->GetValue(0);
-    Int_t matc=(Int_t)(fNtuple->GetLeaf("matc")->GetValue(0));
-    Int_t imam=(Int_t)(fNtuple->GetLeaf("imam")->GetValue(0));
-    Float_t time=fNtuple->GetLeaf("text")->GetValue(0); // [ns]
-    // generate a gaussian around time with sigma timeresolution [ns]
-    Float_t lowTime=time-1000.*timeResolution;
-    Float_t upTime =time+1000.*timeResolution;
-    TF1* gauss=new TF1("tg","gaus",lowTime,upTime);
-
-    Double_t p1=time;
-    Double_t p2=timeResolution;
-    //Float_t twopi=2*TMath::Pi();
-    //Float_t sqrtwopi=TMath::Sqrt(twopi);
-    //Double_t p0=1./(p2*sqrtwopi);
-    // choising a different normalization
-    Double_t p0=1.;
-    gauss->SetParameters(p0,p1,p2);
-
-    Float_t px=fNtuple->GetLeaf("pxvtx")->GetValue(0);
-    Float_t py=fNtuple->GetLeaf("pyvtx")->GetValue(0);
-    Float_t pz=fNtuple->GetLeaf("pzvtx")->GetValue(0);
-    // track length [cm]
-    Float_t toflen=fNtuple->GetLeaf("leng")->GetValue(0);
-
-    Float_t pvtx=TMath::Sqrt(px*px+py*py+pz*pz);
-    Float_t ptvtx=TMath::Sqrt(px*px+py*py);
-
-    Bool_t isSelected=(imam == 0 && pz !=0 && TMath::ATan(TMath::Abs(ptvtx/pz))>TMath::Pi()*45./180.);
-    Bool_t trackWithTime=(matc==2 || matc==3 || matc==4);
-
-    Int_t abspdgcode=TMath::Abs(pdgcode);
-    switch(abspdgcode){
-    case 321:
-      break;
-    case 2212:
-      break;
-    case 11:
-      break;
-    default:
-      break;
-    }
-
-    if (isSelected && trackWithTime && toflen>370.)
-      {//only primary +/-45  
-       Float_t beta[3]={0.,0.,0.};
-       Float_t timeth[3]={0.,0.,0.};
-       Float_t massarray[3]={0.13957,0.493677,0.9382723};
-       for (Int_t j=0; j < 3; j++) {
-         Float_t dummy=(pvtx/massarray[j])*(pvtx/massarray[j]);
-         beta[j]=TMath::Sqrt(dummy/(1.+dummy));
-         timeth[j]=toflen/(29.9792458*beta[j]);
-       }
-       Float_t pPion   =(Float_t)gauss->Eval(timeth[0],0.,0.);
-       Float_t pKaon   =(Float_t)gauss->Eval(timeth[1],0.,0.);
-       Float_t pProton =(Float_t)gauss->Eval(timeth[2],0.,0.);
-
-       Float_t dtpion=time-timeth[0];
-       Float_t dtkaon=time-timeth[1];
-       Float_t dtproton=time-timeth[2];
-       hdtpion->Fill(dtpion);
-       hdtkaon->Fill(dtkaon);
-       hdtproton->Fill(dtproton);
-
-       // normalizing probabilities
-       Float_t sumProb=pPion+pKaon+pProton;
-       pPion=pPion/sumProb;
-       pKaon=pKaon/sumProb;
-       pProton=pProton/sumProb;
-       hpion->Fill(pPion);
-       hkaon->Fill(pKaon);
-       hproton->Fill(pProton);
-       //cout << "pPion " << pPion << " pKaon " << pKaon << " pProton " << pProton << endl;
-       h3D->Fill(pPion,pKaon,pProton);
-       h3Ddt->Fill(dtpion,dtkaon,dtproton);
-       //cout << "pion " << timeth[0] << " kaon " << timeth[1] << " proton " << timeth[2] << endl;
-      }// End of cuts appling
-
-    delete gauss;
-
-  }// End of loop over particles
-
-  char outFileName[100];
-  strcpy(outFileName,"3DProbHisto.root");
-  TFile *houtfile = new TFile(outFileName,"recreate");
-  houtfile->cd();
-  h3D->Write(0,TObject::kOverwrite);
-  h3Ddt->Write(0,TObject::kOverwrite);
-  hpion->Write(0,TObject::kOverwrite);
-  hkaon->Write(0,TObject::kOverwrite);
-  hproton->Write(0,TObject::kOverwrite);
-  hdtpion->Write(0,TObject::kOverwrite);
-  hdtkaon->Write(0,TObject::kOverwrite);
-  hdtproton->Write(0,TObject::kOverwrite);
-
-  houtfile->Close();
-  houtfile->Write(0,TObject::kOverwrite);
-}
-
-
-//__________________________________________________________________
-Bool_t AliTOFProb::operator==( AliTOFProb const & /*tofrec*/)const
-{
-  // dummy version of Equal operator.
-  // requested by coding conventions
-  return kTRUE;
-
-}
diff --git a/TOF/AliTOFProb.h b/TOF/AliTOFProb.h
deleted file mode 100644 (file)
index 452925e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef ALITOFPROB_H
-#define ALITOFPROB_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-
-//_________________________________________________________________________
-//  Task Class for Probabilities in TOF      
-//                  
-//-- Author: F. Pierella
-
-
-#include "TTask.h"
-#include "TCutG.h"
-#include "TString.h"
-#include <TF1.h>
-#include <TF2.h>
-#include <TH1.h>
-#include <TH2.h>
-#include <TNtuple.h>
-
-class AliTOFProb: public TTask {
-
-public:
-  AliTOFProb() ;          // ctor
-  AliTOFProb(char* headerFile) ; 
-  virtual ~AliTOFProb() ; // dtor   
-  virtual void  Exec(const Option_t *dummyOpt); // do the main work
-  void          Init();
-
-  TNtuple*      GetInputNtuple() const {return fNtuple;}
-
-  Bool_t   operator == (const AliTOFProb & tofprob) const ;
-
-private:
-
-  TNtuple *fNtuple; // pointer to ntuple 
-  TFile *fhfile;
-  TFile *fgen;
-  char* foutfileName; // destination file name for histos
-  Int_t fTask;
-
- protected:
-
-  ClassDef(AliTOFProb,0)  // Task class for PID probabilities from TOF
-
-};
-
-#endif // AliTOFPROB_H
diff --git a/TOF/AliTOFRawDigit.cxx b/TOF/AliTOFRawDigit.cxx
deleted file mode 100644 (file)
index 1d5cfaa..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-////////////////////////////////////////////////
-//  Digitization class for set: TOF           //
-//  AliTOFRawDigit  class                     //
-//  Member variables                         //
-//                                           //
-//  Member functions                          //
-//                                            //
-//*-- Authors: Pierella, Seganti, Vicinanza   //
-//    (Bologna and Salerno University)        //
-////////////////////////////////////////////////
-
-
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-#include "AliTOFRawDigit.h"
-
-
-//******************************************************************************
-
-ClassImp(AliTOFRawDigit)
-
-//______________________________________________________________________________
-AliTOFRawDigit::AliTOFRawDigit()
-{
-//
-// Constructor of AliTOFRawDigit class  
-//
-  fTreeD     = 0;
-  fRawDigits = 0;  
-}
-
-//******************************************************************************
-
diff --git a/TOF/AliTOFRawDigit.h b/TOF/AliTOFRawDigit.h
deleted file mode 100644 (file)
index a349f48..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-////////////////////////////////////////////////
-//  Digitization class for set: TOF           //
-//  AliTOFRawDigit  class                     //
-//  Interface                                 // 
-//  Description                               //
-//*-- Authors: Pierella, Seganti, Vicinanza   //
-//    (Bologna and Salerno University)        //
-////////////////////////////////////////////////
-
-
-#ifndef ALITOFRAWDIGIT_H
-#define ALITOFRAWDIGIT_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-
-#include "TObject.h"
-#include "TClonesArray.h"
-
-//_______________________________________________________
-class AliTOFRawDigit : public TObject{
-
-public:
-  AliTOFRawDigit(); 
-  virtual ~AliTOFRawDigit(){};
-  
-protected:
-  Int_t fTreeD;     // class under construction
-  Int_t fRawDigits; // class under construction
-    
-    
-  ClassDef(AliTOFRawDigit,2) // TOF Digit in rawdata format
-};
-
-#endif /* ALITOFRAWDIGIT_H */
diff --git a/TOF/AliTOFRawSector.cxx b/TOF/AliTOFRawSector.cxx
deleted file mode 100644 (file)
index a3f8772..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-////////////////////////////////////////////////
-//  Digitization class for set: TOF           //
-//  AliTOFRawSector  class                    //
-//  Member variables                          //
-//                                            //
-//  Member functions                          //
-//                                            //
-//*-- Authors: Pierella, Seganti, Vicinanza   //
-//    (Bologna and Salerno University)        //
-////////////////////////////////////////////////
-
-
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-#include "TClonesArray.h"
-
-#include "AliTOFRawSector.h"
-#include "AliTOFRoc.h"
-
-ClassImp(AliTOFRawSector)
-
-//______________________________________________________________________________
-AliTOFRawSector::AliTOFRawSector()
-{
-//
-// Constructor of AliTOFRawSector class
-// Each sector is in effect a 
-// TClonesArray of 14 AliTOFRoc Objects
-//
-   fRocData = 0;   
-}
-
-//______________________________________________________________________________
-AliTOFRawSector::AliTOFRawSector(const AliTOFRawSector& tofrawsector)
-:TObject()
-// : fHeader(tofrawsector.fHeader), fGlobalCheckSum(tofrawsector.fGlobalCheckSum) 
-{
-// copy ctor for AliTOFRawSector class
-// (required also by RC10 Coding Convention)
-//
-// we make here a new istance of the TClonesArray containing Roc Data
-  fRocData = new TClonesArray("AliTOFRoc",14);
-
-// we make here a copy of Roc Data
-
-  for(Int_t nroc=1; nroc<=14; nroc++){
-// get the pointers to the current roc of new and to be copied TClonesArray
-    AliTOFRoc* currentrocnew = (AliTOFRoc*)fRocData->UncheckedAt(nroc);
-    AliTOFRoc* currentrocold = (AliTOFRoc*)tofrawsector.fRocData->UncheckedAt(nroc);
-
-// we create here 2 references: one for the new current roc and another for the old one
-    AliTOFRoc& newroc = *currentrocnew;
-    AliTOFRoc& oldroc = *currentrocold;
-
-    newroc = oldroc; // 'operator =' called for AliTOFRoc
-
-  } // end loop on Roc Data
-}
-
-//______________________________________________________________________________
-AliTOFRawSector& AliTOFRawSector::operator=(const  AliTOFRawSector& tofrawsector)
-{
-// Assignment operator for AliTOFRawSector 
-// (required also by RC10 Coding Conventions)
-//
-    if (this !=&tofrawsector) { // do nothing if assigned to self
-       fHeader=tofrawsector.fHeader;
-       fGlobalCheckSum=tofrawsector.fGlobalCheckSum;
-// loop on ROC data
-         for(Int_t nroc=1; nroc<=14; nroc++){
-// get the pointers to the current roc of new and to be copied TClonesArray
-            AliTOFRoc* currentrocnew = (AliTOFRoc*)fRocData->UncheckedAt(nroc);
-            AliTOFRoc* currentrocold = (AliTOFRoc*)tofrawsector.fRocData->UncheckedAt(nroc);
-// we create here 2 references: one for the new current roc and another for the old one
-            AliTOFRoc& newroc = *currentrocnew;   
-            AliTOFRoc& oldroc = *currentrocold;
-            newroc = oldroc; // 'operator =' called for AliTOFRoc
-         } // end loop on Roc Data
-    } // close if
-    return *this;
-}
-
-//______________________________________________________________________________
-AliTOFRawSector::~AliTOFRawSector()
-{
-// destructor of the AliTOFRawSector object
-// Here we delete the 14 AliTOFRoc istances
-//
-   if (fRocData) {
-       fRocData->Delete() ;
-       delete fRocData;
-       fRocData = 0;
-   }
-}
-
-//______________________________________________________________________________
-void AliTOFRawSector::WriteSector()
-{
-//
-// Starting from the raw data objects writes a binary file
-// similar to real raw data.
-//
-
-    FILE *rawfile;
-    rawfile = fopen("rawdata.dat","w");
-    
-//    fprintf(rawfile,Header);
-    
-    Int_t nRoc;
-
-// loop on all AliTOFRoc Headers to set them    
-    for(nRoc=1; nRoc<=14; nRoc++){
-       AliTOFRoc* currentRoc = (AliTOFRoc*)fRocData->UncheckedAt(nRoc);
-       currentRoc->SetHeader();
-       //       UInt_t RocHeader = currentRoc->fHeader;
-//      fprintf(rawfile,RocHeader);
-    }
-    
-    for(nRoc=1; nRoc<=14; nRoc++){
-       AliTOFRoc* currentRoc = (AliTOFRoc*)fRocData->UncheckedAt(nRoc);
-       Int_t rocItems = currentRoc->GetItems();
-
-       for(Int_t nItem=1; nItem<=rocItems;nItem++){
-        //          UInt_t TimeRow = currentRoc->GetTimeRow(nItem);
-//          fprintf(rawfile,TimeRow);
-         //          UInt_t ChrgRow = currentRoc->GetTimeRow(nItem);
-//          fprintf(rawfile,ChrgRow);
-       }
-    }
-    
-    //    UInt_t EndOfSector = GlobalCheckSum;
-//    fprintf(rawfile,EndOfSector);
-}
-
-//______________________________________________________________________________
-void AliTOFRawSector::ReadSector()
-{
-//
-// Starting from raw data initialize and write the 
-// Raw Data objects 
-//(i.e. a TClonesArray of 18 AliTOFRawSector)
-//
-
-    FILE *rawfile;
-    rawfile = fopen("rawdata.dat","r");
-    
-//    fscanf(rawfile,Header);
-//    fscanf(rawfile,Header);
-    Int_t nRoc;
-    
-    for(nRoc=1; nRoc<=14; nRoc++){
-       AliTOFRoc* currentRoc = (AliTOFRoc*)fRocData->UncheckedAt(nRoc);
-       UInt_t rocHeader;
-       fscanf(rawfile,"%u",&rocHeader);
-       currentRoc->SetHeader(rocHeader);
-    }
-    
-//      UInt_t SCMWord;
-//      fscanf(rawfile,"%u",SCMWord);
-    
-    for(nRoc=1; nRoc<=14; nRoc++){
-       AliTOFRoc* currentRoc = (AliTOFRoc*)fRocData->UncheckedAt(nRoc);
-       //       Int_t Size = currentRoc->SetSize();
-       Int_t nItems = currentRoc->GetItems();
-       for(Int_t nrow=0; nrow<=nItems; nrow++){
-          UInt_t charRow,timeRow;
-         fscanf(rawfile,"%u",&charRow);
-         currentRoc->SetTime(nrow, charRow);
-          fscanf(rawfile,"%u",&timeRow);
-         currentRoc->SetTime(nrow, timeRow);
-       }
-         Int_t finalWord;
-         fscanf(rawfile,"%d",&finalWord);              
-    }
-//    fscanf(rawfile,GlobalCheckSum);
-}
-
-
-
diff --git a/TOF/AliTOFRawSector.h b/TOF/AliTOFRawSector.h
deleted file mode 100644 (file)
index 7a7b1fb..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-////////////////////////////////////////////////
-//  Digitization class for set: TOF           //
-//  AliTOFRawSector class                     //
-//  Interface                                 //
-//  Description                               //
-//*-- Authors: Pierella, Seganti, Vicinanza   //
-//    (Bologna and Salerno University)        //
-////////////////////////////////////////////////
-
-#ifndef ALITOFRAWSECTOR_H
-#define ALITOFRAWSECTOR_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-
-#include "TObject.h"
-#include "TClonesArray.h"
-
-//_______________________________________________________
-class AliTOFRawSector : public TObject{
-
- public:
-  AliTOFRawSector();
-// dtor
-  virtual ~AliTOFRawSector();
-// copy ctor  (required also by RC10 Coding Convention)
-  AliTOFRawSector(const AliTOFRawSector& tofrawsector);
-// assignment operator (required also by RC10 Coding Convention)
-  AliTOFRawSector& operator = (const AliTOFRawSector& tofrawsector);
-  void   WriteSector(); // write a DAQ sector
-  void   ReadSector();  // read  a DAQ sector
-
-// getters for AliTOFRawSector object  
-  TClonesArray* GetRocData()        const {return fRocData;}
-  UInt_t        GetHeader()         const {return fHeader;}
-  UInt_t        GetGlobalCheckSum() const {return fGlobalCheckSum;}
-
-// setters for AliTOFRawSector object
-  void SetGlobalCS(UInt_t gcs){fGlobalCheckSum=gcs;}
-  void SetHeader  (UInt_t hdr){fHeader = hdr;}
-  
- protected:
-  TClonesArray* fRocData; // pointer to the TClonesArray of Roc Data
-  UInt_t        fHeader;    // RawSector header number   
-  UInt_t        fGlobalCheckSum; // check flag
-
-  ClassDef(AliTOFRawSector,2) // Container Class for AliTOFRoc objects
-};
-
-#endif /* ALITOFRAWSECTOR_H */
diff --git a/TOF/AliTOFRecHit.cxx b/TOF/AliTOFRecHit.cxx
deleted file mode 100644 (file)
index 8ec3a7e..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *    
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  * 
- **************************************************************************/
-
-
-////////////////////////////////////////////////////////////////////////
-//  Dummy hit for TOF reconstruction : member variables description
-//
-//  fTrack   :      track number of the particle that produced the hit
-//  fPdgCode :      GEANT code of the particle that produced the hit
-//  fX       :      x-coordinate of the hit 
-//  fY       :      y-coordinate of the hit 
-//  fZ       :      z-coordinate of the hit
-//  fP       :      momentum
-//  fVrho    :      rho-coordinate of the Vertex
-//  fFirst   :      =1 for the first hit of the track, =0 otherwise
-//  fNoise   :      =1 for the noise hit (Rvtx>200 or second, ... hit), 
-//                  =0 otherwise
-//  fRmin    :      distance to the nearest TOFhit
-//
-// For more detailed informations about the meaning of the hit 
-// for TOF reconstruction member variable look at 
-// http://bogrid1.bo.infn.it/~pierella/TOFWEB/index.php3
-//
-// -- Authors: Bologna-ITEP-Salerno Group
-//
-// Description: dummy hit class used in reconstruction (derived from AliHit)
-// For a given TOF hit, the class contains:
-// - the distance to the nearest hit
-// - flag for first or second track crossing
-// - number of the track which produced the hit
-// - flag for noise
-////////////////////////////////////////////////////////////////////////////
-
-#include "AliTOFRecHit.h"
-
-ClassImp(AliTOFRecHit)
-
-//____________________________________________________________________________
-AliTOFRecHit::AliTOFRecHit(const AliTOFRecHit & hit)
-:AliHit(hit)
-{
-  //
-  // copy ctor for AliTOFRecHit object
-  //
-  fTrack  = hit.fTrack;
-  fPdgCode= hit.fPdgCode;
-  fX      = hit.fX;
-  fY      = hit.fY;
-  fZ      = hit.fZ;
-  fP      = hit.fP;
-  fVrho   = hit.fVrho;
-  fFirst  = hit.fFirst; 
-  fNoise  = hit.fNoise;
-  fRmin   = hit.fRmin;
-
-}
-//______________________________________________________________________________
-AliTOFRecHit::AliTOFRecHit(Int_t shunt, Int_t track)
-:AliHit(shunt, track)
-{
-  //
-  // ctor for hit object
-  //
-  fTrack=0;
-  fPdgCode=0;
-  fX=0;
-  fY=0;
-  fZ=0;
-  fP=-1;
-  fVrho=-1;
-  fFirst=0;
-  fNoise=0;
-  fRmin=-1;
-}
-
-//______________________________________________________________________________
-void AliTOFRecHit::SetHit(Int_t track, Int_t pdgCode, Float_t* mrfpos, Float_t mom, Float_t vtxRadius, Int_t isFirstHit)
-{
-  // Setter for
-  // track number, pdg code, hit position in master reference frame, 
-  // momentum, vertex radius and flag to check if it is the first hit
-  //
-  fTrack  =track;
-  fPdgCode=pdgCode;
-  fX=mrfpos[0];
-  fY=mrfpos[1];
-  fZ=mrfpos[2];
-  fP=mom;
-  fVrho=vtxRadius;
-  fFirst=isFirstHit;
-}
diff --git a/TOF/AliTOFRecHit.h b/TOF/AliTOFRecHit.h
deleted file mode 100644 (file)
index d4f16c3..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef ALITOFRECHIT_H
-#define ALITOFRECHIT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-#include "AliHit.h"
-
-/////////////////////////////////////////////////////////////
-//                                            
-//  Dummy Hit class for TOF Reconstruction         
-//  AliTOFRecHit  class                        
-//  (see implementation file for details)
-//                               
-//-- Authors: Bologna-ITEP-Salerno Group         
-/////////////////////////////////////////////////////////////
-
-class AliTOFRecHit : public AliHit {
-  
-public:
-  AliTOFRecHit() {}
-  AliTOFRecHit(Int_t shunt, Int_t track);
-  AliTOFRecHit(const AliTOFRecHit & hit) ;
-  virtual ~AliTOFRecHit() {}
-       // setters and getters for AliTOFRecHit object
-
-  void SetTrack(Int_t track)     {fTrack=track;}   
-  void SetPdgCode(Int_t pdgCode) {fPdgCode=pdgCode;}   
-  void SetX(Float_t X)           {fX=X;}
-  void SetY(Float_t Y)           {fY=Y;}
-  void SetZ(Float_t Z)           {fZ=Z;}
-  void SetHit(Int_t track, Int_t pdgCode, Float_t* mrfpos, Float_t mom, Float_t vtxRadius, Int_t isFirstHit);
-  void SetP(Float_t p)           {fP=p;}
-  void SetVrho(Float_t vrho)     {fVrho=vrho;}
-  void SetFirst(Int_t first)     {fFirst=first;}   
-  void SetNoise(Int_t noise)     {fNoise=noise;}   
-  void SetRmin(Float_t rmin)     {fRmin=rmin;}
-
-  Int_t   GetTrack()   const {return fTrack;}
-  Int_t   GetPdgCode() const {return fPdgCode;}
-  // getters for fX, fY and fZ implemented in the mother class as X(), Y(), Z()
-  Float_t GetP()       const {return fP;}
-  Float_t GetVrho()    const {return fVrho;}
-  Int_t   GetFirst()   const {return fFirst;}
-  Int_t   GetNoise()   const {return fNoise;}
-  Float_t GetRmin()    const {return fRmin;}
-
-
-protected:
-  Int_t    fTrack;    //track number of the particle that produced the hit
-  Int_t    fPdgCode;  //GEANT code of the particle that produced the hit
-  /* they are defined in the mother class
-  Float_t  fX;        //x-coordinate of the hit 
-  Float_t  fY;        //y-coordinate of the hit 
-  Float_t  fZ;        //z-coordinate of the hit
-  */
-  Float_t  fP;        //momentum
-  Float_t  fVrho;     //rho-coordinate of the Vertex
-  Int_t    fFirst;    //=1 for the first hit of the track, =0 otherwise
-  Int_t    fNoise;    //=1 for the noise hit (Rvtx>200 or second, ... hit), =0 otherwise
-  Float_t  fRmin;     //distance to the nearest TOFhit (cm)
-
-  ClassDef(AliTOFRecHit,1)  // Dummy Hit class for TOF Reconstruction
-};
-
-#endif /* ALITOFRECHIT_H */
diff --git a/TOF/AliTOFRoc.cxx b/TOF/AliTOFRoc.cxx
deleted file mode 100644 (file)
index c23bcb9..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-////////////////////////////////////////////////
-//  Digitization class for set: TOF           //
-//  AliTOFRoc  class                          //
-//  Member variables                          //
-//   fItems :  number of items               //
-//   fSize  :  size                           //
-//   fNRoc  :  Roc number                     //
-//   fHeader:  Roc header number              //
-//   fChrgRow[1024]; // adc values            //
-//   fTimeRow[1024]; // tdc values            //
-//                                            //
-//  Member functions implemented here         //
-//                                            //
-//*-- Authors: Pierella, Seganti, Vicinanza   //
-//    (Bologna and Salerno University)        //
-////////////////////////////////////////////////
-
-
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-#include <Riostream.h>
-#include <assert.h>
-
-#include "AliTOFRoc.h"
-
-
-ClassImp(AliTOFRoc)
-
-//______________________________________________________________________________
-AliTOFRoc::AliTOFRoc()
-{
-//
-// Constructor of AliTOFRoc class
-// The class represents a ROC in the TARODA system
-// here we make the initialization of the member variables
-  fItems = 0;
-  fSize  = 0;
-  fNRoc  = 0;
-  fHeader= 0;
-// initialization of fChrgRow[1024] and fTimeRow[1024]
-  for(Int_t i=0; i < 1024; i++){
-     fChrgRow[i] = 0;
-     fTimeRow[i] = 0;
-  } // end loop
-}
-
-//______________________________________________________________________________
-AliTOFRoc::AliTOFRoc(const AliTOFRoc& tofroc)
-:TObject()
-// : fItems(tofroc.fItems), fSize(tofroc.fSize), fNRoc(tofroc.fNRoc), fHeader(tofroc.fHeader) 
-{ 
-//
-// copy ctor for AliTOFRoc class 
-//
-   assert(tofroc.fItems >= 0); // check for number of items
-   assert(tofroc.fSize  >= 0); // check for roc size
-// making a copy of adc and tdc vectors
-   for(Int_t i=0; i < 1024; i++){
-      fChrgRow[i] = tofroc.fChrgRow[i]; // coping adc values
-      fTimeRow[i] = tofroc.fTimeRow[i]; // coping tdc values
-   } // end loop
-}
-
-//______________________________________________________________________________
-AliTOFRoc& AliTOFRoc::operator=(const AliTOFRoc& tofroc)
-{
-//
-// Assignment operator for AliTOFRoc
-// (used by copy ctor of AliTOFRawSector)
-//
-   if (this !=&tofroc) { // do nothing if assigned to self
-     // setting head member data
-     SetHeadVar(tofroc.fItems,tofroc.fSize,tofroc.fNRoc,tofroc.fHeader);
-     // loop on adc and tdc values
-     for(Int_t i=0; i < 1024; i++){
-      fChrgRow[i] = tofroc.fChrgRow[i]; // coping adc values
-      fTimeRow[i] = tofroc.fTimeRow[i]; // coping tdc values
-     } // end loop
-   }
-   return *this;
-}
-
-//______________________________________________________________________________
-AliTOFRoc::~AliTOFRoc(){}
-
-//______________________________________________________________________________
-Int_t AliTOFRoc::AddItem(Int_t Fec, Int_t Tdc, Int_t Error,
-                         Float_t Charge, Float_t Time)
-{
-//
-// Adds an item (i.e. the charge, the TOF and the 
-// cohordinates of a hit pad) to the ROC class.
-//
-   fItems++;
-   SetCharge(fItems,Fec,Tdc,Charge);
-   SetTime  (fItems,Error,Time);
-   return fItems; // return the number of current items   
-}
-
-//______________________________________________________________________________
-void AliTOFRoc::SetHeadVar(Int_t items, Int_t size, Int_t nroc, UInt_t header)
-{
-//
-// set header member variables for AliTOFRoc 
-//
-  fItems = items;
-  fSize  = size ;
-  fNRoc  = nroc ;
-  fHeader= header ;
-}
-
-//______________________________________________________________________________
-void AliTOFRoc::SetHeader()
-{
-//
-// Calculate the header line of the ROC in the raw data file
-//
-
-   fHeader  = fNRoc<<28;
-   fHeader += fSize;
-}
-
-
-//______________________________________________________________________________
-void AliTOFRoc::SetTime(UInt_t Item, UInt_t Error, Float_t RealTime)
-{
-//
-// Calculate the raw data line relative to the TDC
-// output of a pad in the current ROC.
-//
-
-   UInt_t itime;
-   itime = (UInt_t)(RealTime/50.);
-   if (itime >= TMath::Power(2,24)) itime = 2^24-1;
-   Error <<= 24;
-   fTimeRow[Item]= Error+itime;
-}
-
-//______________________________________________________________________________
-void AliTOFRoc::SetCharge(UInt_t Item, UInt_t Fec, UInt_t Tdc, Float_t RealCharge)
-{
-//
-// Calculate the raw data line relative to the ADC 
-// output of a pad in the current ROC.
-//
-
-   UInt_t iCharge;
-   if (fNRoc>=TMath::Power(2,4)) fNRoc = 0;
-   fNRoc <<= 28;
-   if (Fec >=TMath::Power(2,6))  Fec = 0;
-   Fec  <<= 22;
-   if (Tdc >=TMath::Power(2,6))  Tdc = 0;
-   Tdc  <<= 16;
-   iCharge = (UInt_t)(RealCharge/50.); // 50 ps (TDC bin value)
-   if(iCharge>=TMath::Power(2,16)) iCharge = (UInt_t)TMath::Power(2,16)-1;
-   fChrgRow[Item] = iCharge+fNRoc+Fec+Tdc;
-}
-
-//______________________________________________________________________________
-void AliTOFRoc::SetTime(UInt_t Item, UInt_t tir)
-{
-//
-// Writes the raw data line relative to the TDC
-//
-
-   fChrgRow[Item]=tir;
-}
-
-//______________________________________________________________________________
-void AliTOFRoc::SetCharge(UInt_t Item, UInt_t chr)
-{
-//
-// Writes the raw data line relative to the ADC
-//
-
-   fChrgRow[Item]=chr;
-}
-
-//______________________________________________________________________________
-Float_t AliTOFRoc::GetCharge(Int_t Item) const
-{
-//
-// Reads the effective value of the charge starting
-// from the line of the raw data
-//
-
-   UInt_t  icharge  = fChrgRow[Item]&0x0000ffff;
-   Float_t charge = (Float_t)icharge*50.;
-   return charge;
-}
-
-//______________________________________________________________________________
-Float_t AliTOFRoc::GetTime(Int_t Item, UInt_t& Error) 
-{
-//
-// Reads the effective value of the time of flight starting
-// from the line of the raw data
-//
-
-   UInt_t  itime  = fTimeRow[Item]&0x00ffffff;
-   Float_t time = (Float_t)itime*50.;
-   Error = fTimeRow[Item]>>24; // the same as Error = fTimeRow[Item] / 24;
-   return time; 
-}
-
-//______________________________________________________________________________
-Int_t AliTOFRoc::GetTotPad(Int_t Item) const
-{
-//
-// Reads the cohordinates of the pad starting
-// from the line of the raw data
-//
-
-   UInt_t nRoc = (fChrgRow[Item]&0xf0000000)>>28; // >> the same as / (division by)
-   UInt_t nFec = (fChrgRow[Item]&0x0fc00000)>>22;
-   UInt_t nTdc = (fChrgRow[Item]&0x003f0000)>>16;
-   UInt_t pad = nRoc*32*32+nFec*32+nTdc;
-   return pad; 
-}
-
-//______________________________________________________________________________
-UInt_t AliTOFRoc::GetCheckSum()
-{
-//
-// Calculate the checksum word of the current ROC
-// 
-
-   UInt_t checkSum=0;
-   for(Int_t i=0; i<fItems; i++){
-      checkSum += BitCount(GetChrgRow(i));
-      checkSum += BitCount(GetTimeRow(i));
-   }
-   return checkSum;
-}
-
-//______________________________________________________________________________
-UInt_t AliTOFRoc::BitCount(UInt_t x) const
-{
-//
-// Count the "1" bit in the current word
-//
-
-   UInt_t count=0;
-   for (count=0; x!=0; x>>=1){
-      if(x&0x00000001) count++;
-   }
-   return count;
-}
-
-//______________________________________________________________________________
-UInt_t AliTOFRoc::SetSize()
-{
-//
-// Reads the size of data from current ROC starting
-// from the header line of the raw data
-//
-
-   fSize = fHeader&0x0000ffff;
-   fItems = (fSize-4)/4;
-   return fSize;
-}
-
-
-
diff --git a/TOF/AliTOFRoc.h b/TOF/AliTOFRoc.h
deleted file mode 100644 (file)
index 3549a5e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-////////////////////////////////////////////////
-//  Digitization class for set: TOF           //
-//  AliTOFRoc class                           //
-//  Interface                                 //
-//  Description                               // 
-//*-- Authors: Pierella, Seganti, Vicinanza   //
-//    (Bologna and Salerno University)        //
-////////////////////////////////////////////////
-
-#ifndef ALITOFROC_H
-#define ALITOFROC_H
-
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-
-#include "TObject.h"
-#include "TClonesArray.h"
-
-//_______________________________________________________
-
-class AliTOFRoc : public TObject {
-
- public:
-  AliTOFRoc();
-// copy ctor  (required also by RC10 Coding Convention)
-  AliTOFRoc(const AliTOFRoc& tofroc);
-// assignment operator (required also by RC10 Coding Convention)
-  AliTOFRoc& operator = (const AliTOFRoc& tofroc);
-// dtor
-  virtual ~AliTOFRoc();
-  Int_t   AddItem  (Int_t Fec, Int_t Tdc, Int_t Error, Float_t Charge, Float_t Time);
-//  Int_t   AddItem  (Int_t, UInt_t);
-
-// setters for AliTOFRoc object
-  void    SetHeadVar(Int_t items, Int_t size, Int_t nroc, UInt_t header);
-  void    SetHeader();
-  void    SetTime  (UInt_t Item, UInt_t Error, Float_t RealTime);
-  void    SetTime  (UInt_t Item, UInt_t tir);
-  void    SetCharge(UInt_t Item, UInt_t Fec,UInt_t Tdc,Float_t RealCharge);  
-  void    SetCharge(UInt_t Item, UInt_t chr);  
-
-// getters for AliTOFRoc object
-  Float_t GetTime  (Int_t Item,UInt_t& Error);
-  Float_t GetCharge(Int_t Item) const;
-  Int_t   GetTotPad(Int_t Item) const;
-  UInt_t  GetCheckSum();
-  UInt_t  BitCount (UInt_t x) const;
-  UInt_t  SetSize  ();
-  
-  Int_t  GetSize()           const {return fItems*8+4;}
-  Int_t  GetItems()          const {return fItems;}
-  UInt_t GetChrgRow(Int_t i) const {return fChrgRow[i];}
-  UInt_t GetTimeRow(Int_t i) const {return fTimeRow[i];} 
-  void   SetHeader(UInt_t head){fHeader=head;}
-
- protected:
-  Int_t   fItems;  // number of items
-  Int_t   fSize;   // size
-  Int_t   fNRoc;   // Roc number
-  UInt_t  fHeader; // Roc header number
-
-/*  class ChargeRow
-  {
-  public:
-    UInt_t RocID:4;
-    UInt_t FecID:6;
-    UInt_t TdcID:6;
-    Int_t  ChADC:16;
-  }Charge[1024];
-
-  class TimeRow
-  {
-  public:
-    UInt_t Error:12;
-    Int_t  TDC  :24;
-  }Time[1024];
-*/
-  UInt_t fChrgRow[1024]; // adc values
-  UInt_t fTimeRow[1024]; // tdc values
-
-  ClassDef(AliTOFRoc,2) // TOF Read Out Controller class 
-};
-
-#endif /* ALITOFROC_H */
diff --git a/TOF/AliTOFv0.cxx b/TOF/AliTOFv0.cxx
deleted file mode 100644 (file)
index 105c8da..0000000
+++ /dev/null
@@ -1,973 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  This class contains the functions for version 0 of the Time Of Flight    //
-//  detector.                                                                //
-//                                                                           //
-//  VERSION WITH 5 MODULES AND TILTED STRIPS                                 //
-//  NO HITS DEFINED BY DEFAULT FOR THIS VERSION                              //
-//   FULL COVERAGE VERSION                                                   //
-//                                                                           //
-//   Authors:                                                                //
-//                                                                           //
-//   Alessio Seganti                                                         //
-//   Domenico Vicinanza                                                      //
-//                                                                           //
-//   University of Salerno - Italy                                           //
-//                                                                           //
-//   Fabrizio Pierella                                                       //
-//   University of Bologna - Italy                                           //
-//                                                                           //
-//                                                                           //
-//Begin_Html                                                                 //
-/*                                                                           //
-<img src="picts/AliTOFv0Class.gif">                                          //
-*/                                                                           //
-//End_Html                                                                   //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-#include <stdlib.h>
-
-#include <TLorentzVector.h>
-#include <TObject.h>
-#include <TVirtualMC.h>
-
-#include "AliConst.h"
-#include "AliRun.h"
-#include "AliTOFv0.h"
-#include "AliTOFConstants.h" // AdC
-#include "AliMC.h"
-ClassImp(AliTOFv0)
-//_____________________________________________________________________________
-AliTOFv0::AliTOFv0()
-{
-  //
-  // Default constructor
-  //
-}
-//_____________________________________________________________________________
-AliTOFv0::AliTOFv0(const char *name, const char *title)
-        : AliTOF(name,title)
-{
-  //
-  // Standard constructor
-  //
-  //
-  // Check that FRAME is there otherwise we have no place where to
-  // put TOF
-  AliModule* frame=gAlice->GetModule("FRAME");
-  if(!frame) {
-    Error("Ctor","TOF needs FRAME to be present\n");
-    exit(1);
-  } else
-    if(frame->IsVersion()!=1) {
-      Error("Ctor","FRAME version 1 needed with this version of TOF\n");
-      exit(1);
-    }
-}
-
-//_____________________________________________________________________________
-void AliTOFv0::CreateGeometry()
-{
-  //
-  // Create geometry for Time Of Flight version 0
-  //
-  //Begin_Html
-  /*
-    <img src="picts/AliTOFv0.gif">
-  */
-  //End_Html
-  //
-  // Creates common geometry
-  //
-  AliTOF::CreateGeometry();
-}
-//_____________________________________________________________________________
-void AliTOFv0::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC,
-                    Float_t zlenB, Float_t zlenA, Float_t ztof0)
-{
-  //
-  // Definition of the Time Of Fligh Resistive Plate Chambers
-  // xFLT, yFLT, zFLT - sizes of TOF modules (large)
-  
-  Float_t  ycoor, zcoor;
-  Float_t  par[3];
-  Int_t    *idtmed = fIdtmed->GetArray()-499;
-  Int_t    idrotm[100];
-  Int_t    nrot = 0;
-  Float_t  hTof = fRmax-fRmin;
-  
-  Float_t radius = fRmin+2.;//cm
-
-  par[0] =  xtof * 0.5;
-  par[1] =  ytof * 0.5;
-  par[2] = zlenC * 0.5;
-  gMC->Gsvolu("FTOC", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenB * 0.5;
-  gMC->Gsvolu("FTOB", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenA * 0.5;
-  gMC->Gsvolu("FTOA", "BOX ", idtmed[506], par, 3);
-
-
-// Positioning of modules
-
-   Float_t zcor1 = ztof0 - zlenC*0.5;
-   Float_t zcor2 = ztof0 - zlenC - zlenB*0.5;
-   Float_t zcor3 = 0.;
-
-   AliMatrix(idrotm[0], 90.,  0., 0., 0., 90,-90.);
-   AliMatrix(idrotm[1], 90.,180., 0., 0., 90, 90.);
-   gMC->Gspos("FTOC", 1, "BTO1", 0,  zcor1, 0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOC", 2, "BTO1", 0, -zcor1, 0, idrotm[1], "ONLY");
-   gMC->Gspos("FTOC", 1, "BTO2", 0,  zcor1, 0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOC", 2, "BTO2", 0, -zcor1, 0, idrotm[1], "ONLY");
-   gMC->Gspos("FTOC", 1, "BTO3", 0,  zcor1, 0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOC", 2, "BTO3", 0, -zcor1, 0, idrotm[1], "ONLY");
-
-   gMC->Gspos("FTOB", 1, "BTO1", 0,  zcor2, 0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOB", 2, "BTO1", 0, -zcor2, 0, idrotm[1], "ONLY");
-   gMC->Gspos("FTOB", 1, "BTO2", 0,  zcor2, 0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOB", 2, "BTO2", 0, -zcor2, 0, idrotm[1], "ONLY");
-   gMC->Gspos("FTOB", 1, "BTO3", 0,  zcor2, 0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOB", 2, "BTO3", 0, -zcor2, 0, idrotm[1], "ONLY");
-
-   gMC->Gspos("FTOA", 0, "BTO1", 0, zcor3,  0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOA", 0, "BTO2", 0, zcor3,  0, idrotm[0], "ONLY");
-   gMC->Gspos("FTOA", 0, "BTO3", 0, zcor3,  0, idrotm[0], "ONLY");
-
-  Float_t db = 0.5;//cm
-  Float_t xFLT, xFST, yFLT, zFLTA, zFLTB, zFLTC;
-
-  xFLT = fStripLn;
-  yFLT = ytof;
-  zFLTA = zlenA;
-  zFLTB = zlenB;
-  zFLTC = zlenC;
-
-  xFST = xFLT-fDeadBndX*2;//cm
-
-// Sizes of MRPC pads
-
-  Float_t yPad = 0.505;//cm 
-  
-// Large not sensitive volumes with Insensitive Freon
-  par[0] = xFLT*0.5;
-  par[1] = yFLT*0.5;
-  
-  cout <<"************************* TOF geometry **************************"<<endl;
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FLTA", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTA", 0, "FTOA", 0., 0., 0., 0, "ONLY");
-
-  par[2] = (zFLTB * 0.5);
-  gMC->Gsvolu("FLTB", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTB", 0, "FTOB", 0., 0., 0., 0, "ONLY");
-
-  par[2] = (zFLTC * 0.5);
-  gMC->Gsvolu("FLTC", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTC", 0, "FTOC", 0., 0., 0., 0, "ONLY");
-////////// Layers of Aluminum before and after detector //////////
-////////// Aluminum Box for Modules (2.0 mm thickness)  /////////
-////////// lateral walls not simulated
-  par[0] = xFLT*0.5;
-  par[1] = 0.1;//cm
-  ycoor = -yFLT/2 + par[1];
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FALA", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALA", 1, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALA", 2, "FLTA", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FALB", "BOX ", idtmed[508], par, 3); // Alluminium 
-  gMC->Gspos ("FALB", 1, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALB", 2, "FLTB", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FALC", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALC", 1, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALC", 2, "FLTC", 0.,-ycoor, 0., 0, "ONLY");
-  
-///////////////// Detector itself //////////////////////
-  const Float_t  kdeadBound  =  fDeadBndZ; //cm non-sensitive between the pad edge 
-                                          //and the boundary of the strip
-  const Int_t    knx    = fNpadX;          // number of pads along x
-  const Int_t    knz    = fNpadZ;          // number of pads along z
-  const Float_t  kspace = fSpace;            //cm distance from the front plate of the box
-
-  Float_t zSenStrip  = fZpad*fNpadZ;//cm
-  Float_t stripWidth = zSenStrip + 2*kdeadBound;
-  par[0] = xFLT*0.5;
-  par[1] = yPad*0.5; 
-  par[2] = stripWidth*0.5;
-  
-// new description for strip volume -double stack strip-
-// -- all constants are expressed in cm
-// heigth of different layers
-  const Float_t khhony = 1.      ;   // heigth of HONY  Layer
-  const Float_t khpcby = 0.15    ;   // heigth of PCB   Layer
-  const Float_t khmyly = 0.035   ;   // heigth of MYLAR Layer
-  const Float_t khgraphy = 0.02  ;   // heigth of GRAPHITE Layer
-  const Float_t khglasseiy = 0.17;   // 0.6 Ext. Glass + 1.1 i.e. (Int. Glass/2) (mm)
-  const Float_t khsensmy = 0.11  ;   // heigth of Sensitive Freon Mixture
-  const Float_t kwsensmz = 2*3.5 ;   // cm
-  const Float_t klsensmx = 48*2.5;   // cm
-  const Float_t kwpadz = 3.5;   // cm z dimension of the FPAD volume
-  const Float_t klpadx = 2.5;   // cm x dimension of the FPAD volume
-  
-  // heigth of the FSTR Volume (the strip volume)
-  const Float_t khstripy = 2*khhony+3*khpcby+4*(khmyly+khgraphy+khglasseiy)+2*khsensmy;
-  // width  of the FSTR Volume (the strip volume)
-  const Float_t kwstripz = 10.;
-  // length of the FSTR Volume (the strip volume)
-  const Float_t klstripx = 122.;
-  
-  Float_t parfp[3]={klstripx*0.5,khstripy*0.5,kwstripz*0.5};
-// coordinates of the strip center in the strip reference frame; used for positioning
-// internal strip volumes
-  Float_t posfp[3]={0.,0.,0.};   
-
-  
-  // FSTR volume definition and filling this volume with non sensitive Gas Mixture
-  gMC->Gsvolu("FSTR","BOX",idtmed[512],parfp,3);
-  //-- HONY Layer definition
-//  parfp[0] = -1;
-  parfp[1] = khhony*0.5;
-//  parfp[2] = -1;
-  gMC->Gsvolu("FHON","BOX",idtmed[503],parfp,3);
-  // positioning 2 HONY Layers on FSTR volume
-
-  posfp[1]=-khstripy*0.5+parfp[1];
-  gMC->Gspos("FHON",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FHON",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-
-  //-- PCB Layer definition 
-  parfp[1] = khpcby*0.5;
-  gMC->Gsvolu("FPCB","BOX",idtmed[504],parfp,3);
-  // positioning 2 PCB Layers on FSTR volume
-  posfp[1]=-khstripy*0.5+khhony+parfp[1];
-  gMC->Gspos("FPCB",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FPCB",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // positioning the central PCB layer
-  gMC->Gspos("FPCB",3,"FSTR",0.,0.,0.,0,"ONLY");
-
-
-
-  //-- MYLAR Layer definition
-  parfp[1] = khmyly*0.5;
-  gMC->Gsvolu("FMYL","BOX",idtmed[511],parfp,3);
-  // positioning 2 MYLAR Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+parfp[1]; 
-  gMC->Gspos("FMYL",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 MYLAR Layers on FSTR volume
-  posfp[1] = khpcby*0.5+parfp[1];
-  gMC->Gspos("FMYL",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-
-
-  //-- Graphite Layer definition
-  parfp[1] = khgraphy*0.5;
-  gMC->Gsvolu("FGRP","BOX",idtmed[502],parfp,3);
-  // positioning 2 Graphite Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+parfp[1];
-  gMC->Gspos("FGRP",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Graphite Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+parfp[1];
-  gMC->Gspos("FGRP",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-
-  //-- Glass (EXT. +Semi INT.) Layer definition
-  parfp[1] = khglasseiy*0.5;
-  gMC->Gsvolu("FGLA","BOX",idtmed[514],parfp,3);
-  // positioning 2 Glass Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Glass Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-
-  
-  //-- Sensitive Mixture Layer definition
-  parfp[0] = klsensmx*0.5;
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwsensmz*0.5;
-  gMC->Gsvolu("FSEN","BOX",idtmed[513],parfp,3);
-  gMC->Gsvolu("FNSE","BOX",idtmed[512],parfp,3);
-  // positioning 2 gas Layers on FSTR volume
-  // the upper is insensitive freon
-  // while the remaining is sensitive
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+khglasseiy+parfp[1];
-  gMC->Gspos("FNSE",0,"FSTR", 0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FSEN",0,"FSTR", 0.,-posfp[1],0.,0,"ONLY");
-
-  // dividing FSEN along z in knz=2 and along x in knx=48
-  gMC->Gsdvn("FSEZ","FSEN",knz,3);
-  gMC->Gsdvn("FSEX","FSEZ",knx,1);
-  
-  // FPAD volume definition
-  parfp[0] = klpadx*0.5;    
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwpadz*0.5;
-  gMC->Gsvolu("FPAD","BOX",idtmed[513],parfp,3);
-  // positioning the FPAD volumes on previous divisions
-  gMC->Gspos("FPAD",0,"FSEX",0.,0.,0.,0,"ONLY");
-  
-////  Positioning the Strips  (FSTR) in the FLT volumes  /////
-
-  // Plate A (Central) 
-  
-  Float_t t = zFLTC+zFLTB+zFLTA*0.5+ 2*db;//Half Width of Barrel
-
-  Float_t gap  = fGapA+0.5; //cm  updated distance between the strip axis
-  Float_t zpos = 0;
-  Float_t ang  = 0;
-  Int_t j=1; // AdC
-  nrot  = 0;
-  zcoor = 0;
-  ycoor = -14.5 + kspace ; //2 cm over front plate
-
-  AliMatrix (idrotm[0],  90.,  0.,90.,90.,0., 90.);   
-
-  Int_t centerLoc= (Int_t)(fNStripA/2.) + 1; // AdC
-
-  //gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY");
-  gMC->Gspos("FSTR",centerLoc,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); // AdC
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  zcoor -= zSenStrip;
-  //j++; // AdC
-  Int_t upDown = -1; // upDown=-1 -> Upper strip
-                     // upDown=+1 -> Lower strip
-  do{
-     ang = atan(zcoor/radius);
-     ang *= kRaddeg;
-     AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-     AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-     ang /= kRaddeg;
-     ycoor = -14.5+ kspace; //2 cm over front plate
-     ycoor += (1-(upDown+1)/2)*gap;
-     //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-     //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-    gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-    gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-      printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-    }
-    //j += 2; // AdC
-    upDown*= -1; // Alternate strips 
-    zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-  } while (zcoor-(stripWidth/2)*TMath::Cos(ang)>-t+zFLTC+zFLTB+db*2);
-  
-  zcoor = zcoor+(zSenStrip/2)/TMath::Cos(ang)+
-    upDown*gap*TMath::Tan(ang)+
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  gap = fGapB;
-  zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  ang = atan(zcoor/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-  AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-  ang /= kRaddeg;
-         
-  ycoor = -14.5+ kspace; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-  //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-  gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-  gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  ycoor = -hTof/2.+ kspace;//2 cm over front plate
-
-  // Plate  B
-
-  nrot = 0;
-  Int_t i=1; // AdC
-  upDown = 1;
-  Float_t deadRegion = 1.0;//cm
-  
-  zpos = zcoor - (zSenStrip/2)/TMath::Cos(ang)-
-         upDown*gap*TMath::Tan(ang)-
-        (zSenStrip/2)/TMath::Cos(ang)-
-        deadRegion/TMath::Cos(ang);
-
-  ang = atan(zpos/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-  ang /= kRaddeg;
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-  gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-  if(fDebug>=1) {   
-    printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i); 
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  i++;
-  upDown*=-1;
-
-  do {
-     zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)-
-            upDown*gap*TMath::Tan(ang)-
-           (zSenStrip/2)/TMath::Cos(ang);
-     ang = atan(zpos/radius);
-     ang *= kRaddeg;
-     AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-     ang /= kRaddeg;
-     Float_t deltaSpaceinB=-0.5; // [cm] to avoid overlaps with the end of freon frame
-     Float_t deltaGapinB=0.5;    // [cm] to avoid overlaps in between initial strips
-     ycoor = -hTof*0.5+ kspace+deltaSpaceinB ; //2 cm over front plate
-     ycoor += (1-(upDown+1)/2)*(gap+deltaGapinB);
-     zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-     gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-     if(fDebug>=1) {   
-       printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i); 
-       printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-     }
-     upDown*=-1;
-     i++;
-  } while (TMath::Abs(ang*kRaddeg)<22.5);
-  //till we reach a tilting angle of 22.5 degrees
-
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  zpos = zpos - zSenStrip/TMath::Cos(ang);
-  // this avoid overlaps in between outer strips in plate B
-  Float_t deltaMovingUp=0.8;    // [cm]
-  Float_t deltaMovingDown=-0.5; // [cm]
-
-  do {
-     ang = atan(zpos/radius);
-     ang *= kRaddeg;
-     AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-     ang /= kRaddeg;
-     zcoor = zpos+(zFLTB/2+zFLTA/2+db);
-     gMC->Gspos("FSTR",i, "FLTB", 0., ycoor+deltaMovingDown+deltaMovingUp, zcoor,idrotm[nrot], "ONLY");
-     deltaMovingUp+=0.8; // update delta moving toward the end of the plate
-     zpos = zpos - zSenStrip/TMath::Cos(ang);
-     if(fDebug>=1) {
-       printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-       printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-     }
-     i++;
-  }  while (zpos-stripWidth*0.5/TMath::Cos(ang)>-t+zFLTC+db);
-  
-  // Plate  C
-  
-  zpos = zpos + zSenStrip/TMath::Cos(ang);
-
-  zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)+
-         gap*TMath::Tan(ang)-
-        (zSenStrip/2)/TMath::Cos(ang);
-
-  nrot = 0;
-  i=0;
-  Float_t deltaGap=-2.5; // [cm] update distance from strip center and plate
-  ycoor= -hTof*0.5+kspace+gap+deltaGap;
-
-  do {
-     i++;
-     ang = atan(zpos/radius);
-     ang *= kRaddeg;
-     AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-     ang /= kRaddeg;
-     zcoor = zpos+(zFLTC*0.5+zFLTB+zFLTA*0.5+db*2);
-     gMC->Gspos("FSTR",i, "FLTC", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-     if(fDebug>=1) {
-       printf("%s: %f,  St. %2i, Pl.5 ",ClassName(),ang*kRaddeg,i);
-       printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-     }
-     zpos = zpos - zSenStrip/TMath::Cos(ang);
-  }  while (zpos-stripWidth*TMath::Cos(ang)*0.5>-t);
-
-
-////////// Layers after strips /////////////////
-// honeycomb (Polyethilene) Layer after (1.2cm)
-
-  Float_t overSpace = fOverSpc;//cm
-
-  par[0] = xFLT*0.5;
-  par[1] = 0.6;
-  par[2] = (zFLTA *0.5);
-  ycoor = -yFLT/2 + overSpace + par[1];
-  gMC->Gsvolu("FPEA", "BOX ", idtmed[503], par, 3); // Hony
-  gMC->Gspos ("FPEA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FPEB", "BOX ", idtmed[503], par, 3); // Hony
-  gMC->Gspos ("FPEB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FPEC", "BOX ", idtmed[503], par, 3); // Hony
-  gMC->Gspos ("FPEC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-// Electronics (Cu) after
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = 1.43*0.05*0.5; // 5% of X0
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FECA", "BOX ", idtmed[501], par, 3); // Cu
-  gMC->Gspos ("FECA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FECB", "BOX ", idtmed[501], par, 3); // Cu
-  gMC->Gspos ("FECB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FECC", "BOX ", idtmed[501], par, 3); // Cu
-  gMC->Gspos ("FECC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-// cooling WAter after
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = 36.1*0.02*0.5; // 2% of X0
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FWAA", "BOX ", idtmed[515], par, 3); // Water
-  gMC->Gspos ("FWAA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FWAB", "BOX ", idtmed[515], par, 3); // Water
-  gMC->Gspos ("FWAB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FWAC", "BOX ", idtmed[515], par, 3); // Water
-  gMC->Gspos ("FWAC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-// frame of Air
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = (yFLT/2-ycoor-0.2)*0.5; // Aluminum layer considered (0.2 cm)
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FAIA", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FAIB", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FAIC", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-/* fp
-//Back Plate honycomb (2cm)
-  par[0] = -1;
-  par[1] = 2 *0.5;
-  par[2] = -1;
-  ycoor = yFLT/2 - par[1];
-  gMC->Gsvolu("FBPA", "BOX ", idtmed[503], par, 3); // Hony
-  gMC->Gspos ("FBPA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gsvolu("FBPB", "BOX ", idtmed[503], par, 3); // Hony
-  gMC->Gspos ("FBPB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gsvolu("FBPC", "BOX ", idtmed[503], par, 3); // Hony
-  gMC->Gspos ("FBPC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-fp */
-}
-
-//_____________________________________________________________________________
-void AliTOFv0::DrawModule() const
-{
-  //
-  // Draw a shaded view of the Time Of Flight version 0
-  //
-  // Set everything unseen
-  gMC->Gsatt("*", "seen", -1);
-  // 
-  // Set ALIC mother transparent
-  gMC->Gsatt("ALIC","SEEN",0);
-  //
-  // Set the volumes visible
-  gMC->Gsatt("ALIC","SEEN",0);
-
-  gMC->Gsatt("FTOA","SEEN",1);
-  gMC->Gsatt("FTOB","SEEN",1);
-  gMC->Gsatt("FTOC","SEEN",1);
-  gMC->Gsatt("FLTA","SEEN",1);
-  gMC->Gsatt("FLTB","SEEN",1);
-  gMC->Gsatt("FLTC","SEEN",1);
-  gMC->Gsatt("FPLA","SEEN",1);
-  gMC->Gsatt("FPLB","SEEN",1);
-  gMC->Gsatt("FPLC","SEEN",1);
-  gMC->Gsatt("FSTR","SEEN",1);
-  gMC->Gsatt("FPEA","SEEN",1);
-  gMC->Gsatt("FPEB","SEEN",1);
-  gMC->Gsatt("FPEC","SEEN",1);
-  
-  gMC->Gsatt("FLZ1","SEEN",0);
-  gMC->Gsatt("FLZ2","SEEN",0);
-  gMC->Gsatt("FLZ3","SEEN",0);
-  gMC->Gsatt("FLX1","SEEN",0);
-  gMC->Gsatt("FLX2","SEEN",0);
-  gMC->Gsatt("FLX3","SEEN",0);
-  gMC->Gsatt("FPAD","SEEN",0);
-
-  gMC->Gdopt("hide", "on");
-  gMC->Gdopt("shad", "on");
-  gMC->Gsatt("*", "fill", 7);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 40, 30, 0, 12, 9.5, .02, .02);
-  gMC->Gdhead(1111, "Time Of Flight");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-//_____________________________________________________________________________
-void AliTOFv0::DrawDetectorModules()
-{
-//
-// Draw a shaded view of the TOF detector version 0
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible
-// 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level                
-
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",-2);
-  gMC->Gsatt("FTOB","seen",-2);
-  gMC->Gsatt("FTOA","seen",-2);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF detector V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}                                 
-
-//_____________________________________________________________________________
-void AliTOFv0::DrawDetectorStrips()
-{
-//
-// Draw a shaded view of the TOF strips for version 0
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-  
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",0);
-  gMC->Gsatt("FTOB","seen",0);
-  gMC->Gsatt("FTOA","seen",0);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-
-// ==========================> Level 4
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOC
-  gMC->Gsatt("FLTC","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOB
-  gMC->Gsatt("FLTB","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOA
-  gMC->Gsatt("FLTA","seen",0);
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOC
-  // -> cfr previous settings
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOB
-  // -> cfr previous settings
-  // Level 4 of B075 / Level 3 of BTO3 / Level 2 of FTOC
-  // -> cfr previous settings
-
-//======================================> Level 5
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOC / Level 2 of FLTC
-  gMC->Gsatt("FALC","seen",0); // no children for FALC
-  gMC->Gsatt("FSTR","seen",-2);
-  gMC->Gsatt("FPEC","seen",0); // no children for FPEC
-  gMC->Gsatt("FECC","seen",0); // no children for FECC
-  gMC->Gsatt("FWAC","seen",0); // no children for FWAC
-  gMC->Gsatt("FAIC","seen",0); // no children for FAIC
-
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOB / Level 2 of FLTB
-  gMC->Gsatt("FALB","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-
-
-  // -> cfr previous settings
-  gMC->Gsatt("FPEB","seen",0); // no children for FPEB
-  gMC->Gsatt("FECB","seen",0); // no children for FECB
-  gMC->Gsatt("FWAB","seen",0); // no children for FWAB
-  gMC->Gsatt("FAIB","seen",0); // no children for FAIB
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOA / Level 2 of FLTA
-  gMC->Gsatt("FALA","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-  // -> cfr previous settings
-  gMC->Gsatt("FPEA","seen",0); // no children for FPEA
-  gMC->Gsatt("FECA","seen",0); // no children for FECA
-  gMC->Gsatt("FWAA","seen",0); // no children for FWAA
-  gMC->Gsatt("FAIA","seen",0); // no children for FAIA
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// for others Level 5, cfr. previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF Strips V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-
-//_____________________________________________________________________________
-void AliTOFv0::CreateMaterials()
-{
-  //
-  // Define materials for the Time Of Flight
-  //
-  AliTOF::CreateMaterials();
-}
-//_____________________________________________________________________________
-void AliTOFv0::Init()
-{
-  //
-  // Initialise the detector after the geometry has been defined
-  //
-  printf("**************************************"
-        "  TOF  "
-        "**************************************\n");
-  printf("\n   Version 0 of TOF initialing, "
-             "symmetric TOF - Full Coverage version\n");
-
-  AliTOF::Init();
-
-  fIdFTOA = gMC->VolId("FTOA");
-  fIdFTOB = gMC->VolId("FTOB");
-  fIdFTOC = gMC->VolId("FTOC");
-  fIdFLTA = gMC->VolId("FLTA");
-  fIdFLTB = gMC->VolId("FLTB");
-  fIdFLTC = gMC->VolId("FLTC");
-
-  if(fDebug) {
-    printf("%s: **************************************"
-          "  TOF  "
-          "**************************************\n",ClassName());
-  }
-}
-//_____________________________________________________________________________
-void AliTOFv0::StepManager()
-{
-  //
-  // Procedure called at each step in the Time Of Flight
-  //
-  TLorentzVector mom, pos;
-  Float_t xm[3],pm[3],xpad[3],ppad[3];
-  Float_t hits[13],phi,phid,z;
-  Int_t   vol[5];
-  Int_t   sector, plate, padx, padz, strip;
-  Int_t   copy, padzid, padxid, stripid, i;
-  Int_t   *idtmed = fIdtmed->GetArray()-499;
-  Float_t incidenceAngle;
-  
-  if(gMC->CurrentMedium()==idtmed[513] && 
-     gMC->IsTrackEntering() && gMC->TrackCharge()
-     && gMC->CurrentVolID(copy)==fIdSens) 
-  {    
-    // getting information about hit volumes
-    
-    padzid=gMC->CurrentVolOffID(2,copy);
-    padz=copy;  
-    
-    padxid=gMC->CurrentVolOffID(1,copy);
-    padx=copy;  
-    
-    stripid=gMC->CurrentVolOffID(4,copy);
-    strip=copy;  
-
-    gMC->TrackPosition(pos);
-    gMC->TrackMomentum(mom);
-
-//    Double_t NormPos=1./pos.Rho();
-    Double_t normMom=1./mom.Rho();
-
-//  getting the cohordinates in pad ref system
-    xm[0] = (Float_t)pos.X();
-    xm[1] = (Float_t)pos.Y();
-    xm[2] = (Float_t)pos.Z();
-
-    pm[0] = (Float_t)mom.X()*normMom;
-    pm[1] = (Float_t)mom.Y()*normMom;
-    pm[2] = (Float_t)mom.Z()*normMom;
-    gMC->Gmtod(xm,xpad,1);
-    gMC->Gmtod(pm,ppad,2);
-
-    incidenceAngle = TMath::ACos(ppad[1])*kRaddeg;
-
-    z = pos[2];
-
-    plate = 0;   
-    if (TMath::Abs(z) <=  fZlenA*0.5)  plate = 2; //3; // AdC
-    if (z < (fZlenA*0.5+fZlenB) && 
-        z >  fZlenA*0.5)               plate = 1; //4; // AdC
-    if (z >-(fZlenA*0.5+fZlenB) &&
-        z < -fZlenA*0.5)               plate = 3; //2; // AdC
-    if (z > (fZlenA*0.5+fZlenB))       plate = 0; //5; // AdC
-    if (z <-(fZlenA*0.5+fZlenB))       plate = 4; //1; // AdC
-
-    if (plate==0) strip=AliTOFConstants::fgkNStripC-strip; // AdC
-    else if (plate==1) strip=AliTOFConstants::fgkNStripB-strip; // AdC
-    else strip--; // AdC
-
-    if (z<=0.) padx=AliTOFConstants::fgkNpadX-padx; // AdC
-    else padx--; // AdC
-
-    if (plate==3 || plate==4) padz=AliTOFConstants::fgkNpadZ-padz; // AdC
-    else padz--; // AdC
-
-    phi = pos.Phi();
-    if (phi>=0.) phid = phi*kRaddeg; //+180.; // AdC
-    else phid = phi*kRaddeg + 360.; // AdC
-    sector = Int_t (phid/20.);
-    //sector++;  // AdC
-
-    for(i=0;i<3;++i) {
-      hits[i]   = pos[i];
-      hits[i+3] = pm[i];
-    }
-
-    hits[6] = mom.Rho();
-    hits[7] = pos[3];
-    hits[8] = xpad[0];
-    hits[9] = xpad[1];
-    hits[10]= xpad[2];
-    hits[11]= incidenceAngle;
-    hits[12]= gMC->Edep();
-    
-    vol[0]= sector;
-    vol[1]= plate;
-    vol[2]= strip;
-    vol[3]= padx;
-    vol[4]= padz;
-
-    AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol, hits);
-  }
-}
-
-
-
-
-
-
diff --git a/TOF/AliTOFv0.h b/TOF/AliTOFv0.h
deleted file mode 100644 (file)
index 2e088e3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//_________________________________________________________________________
-// Implementation version v0 of TOF Manager class
-// FULL COVERAGE VERSION i.e. NO HOLES FOR PHOS AND HMPID (RICH) ARE DEFINED
-// NO HITS DEFINED FOR THIS VERSION
-//*-- 
-//*-- Authors: Pierella, Seganti, Vicinanza (Bologna and Salerno University)
-
-#ifndef ALITOFv0_H
-#define ALITOFv0_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-#include "AliTOF.h"
-class AliTOFv0 : public AliTOF {
-
-public:
-  AliTOFv0();
-  AliTOFv0(const char *name, const char *title);
-  virtual ~AliTOFv0() {}
-  virtual void   CreateGeometry();
-  virtual void   CreateMaterials();
-  virtual void   Init();
-  virtual Int_t  IsVersion() const {return 0;}
-  virtual void   TOFpc(Float_t xtof,Float_t ytof,Float_t zlenC,Float_t zlenB,
-                       Float_t zlenA,Float_t ztof0);
-  virtual void   StepManager();
-  virtual void   DrawModule() const;
-  virtual void   DrawDetectorModules();
-  virtual void   DrawDetectorStrips();
-//  virtual void   DrawDetectorModulesinFrame();
-//  virtual void   DrawDetectorStripsinFrame();
-
-private:
-  Int_t fIdFTOA; // FTOA volume identifier (outer plate A)
-  Int_t fIdFTOB; // FTOB volume identifier (outer plate B)
-  Int_t fIdFTOC; // FTOC volume identifier (outer plate C)
-  Int_t fIdFLTA; // FLTA volume identifier (inner plate A)
-  Int_t fIdFLTB; // FLTB volume identifier (inner plate B)
-  Int_t fIdFLTC; // FLTC volume identifier (inner plate C)
-  
-   ClassDef(AliTOFv0,1)  //Time Of Flight version 0
-};
-#endif /*  ALITOFv0_H */
diff --git a/TOF/AliTOFv1.cxx b/TOF/AliTOFv1.cxx
deleted file mode 100644 (file)
index 907cf12..0000000
+++ /dev/null
@@ -1,1053 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  This class contains the functions for version 1 of the Time Of Flight    //
-//  detector.                                                                //
-//                                                                           //
-//  VERSION WITH 5 MODULES AND TILTED STRIPS                                 //
-//                                                                           //
-//  HOLES FOR PHOS DETECTOR                                                  //
-//                                                                           //
-//   Authors:                                                                //
-//                                                                           //
-//   Alessio Seganti                                                         //
-//   Domenico Vicinanza                                                      //
-//                                                                           //
-//   University of Salerno - Italy                                           //
-//                                                                           //
-//   Fabrizio Pierella                                                       //
-//   University of Bologna - Italy                                           //
-//                                                                           //
-//                                                                           //
-//Begin_Html                                                                 //
-/*                                                                           //
-<img src="picts/AliTOFv1Class.gif">                                          //
-*/                                                                           //
-//End_Html                                                                   //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-#include <stdlib.h>
-
-#include <TLorentzVector.h>
-#include <TObject.h>
-#include <TVirtualMC.h>
-
-#include "AliConst.h"
-#include "AliMagF.h"
-#include "AliRun.h"
-#include "AliTOFv1.h"
-#include "AliTOFConstants.h" // AdC
-#include "AliMC.h"
-ClassImp(AliTOFv1)
-//_____________________________________________________________________________
-AliTOFv1::AliTOFv1()
-{
-  //
-  // Default constructor
-  //
-}
-//_____________________________________________________________________________
-AliTOFv1::AliTOFv1(const char *name, const char *title)
-        : AliTOF(name,title)
-{
-  //
-  // Standard constructor
-  //
-  //
-  // Check that FRAME is there otherwise we have no place where to
-  // put TOF
-  AliModule* frame=gAlice->GetModule("FRAME");
-  if(!frame) {
-    Error("Ctor","TOF needs FRAME to be present\n");
-    exit(1);
-  } else
-    if(frame->IsVersion()!=1) {
-      Error("Ctor","FRAME version 1 needed with this version of TOF\n");
-      exit(1);
-    }
-}
-
-//_____________________________________________________________________________
-void AliTOFv1::CreateGeometry()
-{
-  //
-  // Create geometry for Time Of Flight version 0
-  //
-  //Begin_Html
-  /*
-    <img src="picts/AliTOFv1.gif">
-  */
-  //End_Html
-  //
-  // Creates common geometry
-  //
-  AliTOF::CreateGeometry();
-}
-//_____________________________________________________________________________
-void AliTOFv1::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC,
-                    Float_t zlenB, Float_t zlenA, Float_t ztof0)
-{
-  //
-  // Definition of the Time Of Fligh Resistive Plate Chambers
-  // xFLT, yFLT, zFLT - sizes of TOF modules (large)
-  
-  Float_t  ycoor, zcoor;
-  Float_t  par[3];
-  Int_t    *idtmed = fIdtmed->GetArray()-499;
-  Int_t    idrotm[100];
-  Int_t    nrot = 0;
-  Float_t  hTof = fRmax-fRmin;
-  
-  Float_t radius = fRmin+2.;//cm
-
-  par[0] =  xtof * 0.5;
-  par[1] =  ytof * 0.5;
-  par[2] = zlenC * 0.5;
-  gMC->Gsvolu("FTOC", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenB * 0.5;
-  gMC->Gsvolu("FTOB", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenA * 0.5;
-  gMC->Gsvolu("FTOA", "BOX ", idtmed[506], par, 3);
-  
-
-  // Positioning of modules
-
-  Float_t zcor1 = ztof0 - zlenC*0.5;
-  Float_t zcor2 = ztof0 - zlenC - zlenB*0.5;
-  Float_t zcor3 = 0.;
-  
-  AliMatrix(idrotm[0], 90.,  0., 0., 0., 90,-90.);
-  AliMatrix(idrotm[1], 90.,180., 0., 0., 90, 90.);
-  gMC->Gspos("FTOC", 1, "BTO1", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO1", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO2", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO2", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO3", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO3", 0, -zcor1, 0, idrotm[1], "ONLY");
-  
-  gMC->Gspos("FTOB", 1, "BTO1", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO1", 0, -zcor2, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOB", 1, "BTO2", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO2", 0, -zcor2, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOB", 1, "BTO3", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO3", 0, -zcor2, 0, idrotm[1], "ONLY");
-  
-  gMC->Gspos("FTOA", 0, "BTO1", 0, zcor3,  0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOA", 0, "BTO3", 0, zcor3,  0, idrotm[0], "ONLY");
-  
-  Float_t db = 0.5;//cm
-  Float_t xFLT, xFST, yFLT, zFLTA, zFLTB, zFLTC;
-  
-  xFLT = fStripLn;
-  yFLT = ytof;
-  zFLTA = zlenA;
-  zFLTB = zlenB;
-  zFLTC = zlenC;
-  
-  xFST = xFLT-fDeadBndX*2;//cm
-  
-  // Sizes of MRPC pads
-  
-  Float_t yPad = 0.505;//cm 
-  
-  // Large not sensitive volumes with Insensitive Freon
-  par[0] = xFLT*0.5;
-  par[1] = yFLT*0.5;
-  
-  if(fDebug) cout << ClassName()
-                 << ": ************************* TOF geometry **************************"
-                 <<endl;
-  
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FLTA", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTA", 0, "FTOA", 0., 0., 0., 0, "ONLY");
-  
-  par[2] = (zFLTB * 0.5);
-  gMC->Gsvolu("FLTB", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTB", 0, "FTOB", 0., 0., 0., 0, "ONLY");
-  
-  par[2] = (zFLTC * 0.5);
-  gMC->Gsvolu("FLTC", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTC", 0, "FTOC", 0., 0., 0., 0, "ONLY");
-
-  ///// Layers of Aluminum before and after detector /////
-  ///// Aluminum Box for Modules (1.8 mm thickness)  /////
-  ///// lateral walls not simulated for the time being
-  //const Float_t khAlWall = 0.18;
-  // fp to be checked
-  const Float_t khAlWall = 0.11;
-  par[0] = xFLT*0.5;
-  par[1] = khAlWall/2.;//cm
-  ycoor = -yFLT/2 + par[1];
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FALA", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALA", 1, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALA", 2, "FLTA", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FALB", "BOX ", idtmed[508], par, 3); // Alluminium 
-  gMC->Gspos ("FALB", 1, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALB", 2, "FLTB", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FALC", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALC", 1, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALC", 2, "FLTC", 0.,-ycoor, 0., 0, "ONLY");
-
-  ///////////////// Detector itself //////////////////////
-  
-  const Float_t  kdeadBound  =  fDeadBndZ; //cm non-sensitive between the pad edge 
-  //and the boundary of the strip
-  const Int_t    knx    = fNpadX;          // number of pads along x
-  const Int_t    knz    = fNpadZ;          // number of pads along z
-  const Float_t  kspace = fSpace;            //cm distance from the front plate of the box
-  
-  Float_t zSenStrip  = fZpad*fNpadZ;//cm
-  Float_t stripWidth = zSenStrip + 2*kdeadBound;
-  
-  par[0] = xFLT*0.5;
-  par[1] = yPad*0.5; 
-  par[2] = stripWidth*0.5;
-  
-  // new description for strip volume -double stack strip-
-  // -- all constants are expressed in cm
-  // heigth of different layers
-  const Float_t khhony = 0.8     ;   // heigth of HONY  Layer
-  const Float_t khpcby = 0.08    ;   // heigth of PCB   Layer
-  const Float_t khmyly = 0.035   ;   // heigth of MYLAR Layer
-  const Float_t khgraphy = 0.02  ;   // heigth of GRAPHITE Layer
-  const Float_t khglasseiy = 0.135;   // 0.6 Ext. Glass + 1.1 i.e. (Int. Glass/2) (mm)
-  const Float_t khsensmy = 0.11  ;   // heigth of Sensitive Freon Mixture
-  const Float_t kwsensmz = 2*3.5 ;   // cm
-  const Float_t klsensmx = 48*2.5;   // cm
-  const Float_t kwpadz = 3.5;   // cm z dimension of the FPAD volume
-  const Float_t klpadx = 2.5;   // cm x dimension of the FPAD volume
-  
-  // heigth of the FSTR Volume (the strip volume)
-  const Float_t khstripy = 2*khhony+3*khpcby+4*(khmyly+khgraphy+khglasseiy)+2*khsensmy;
-  // width  of the FSTR Volume (the strip volume)
-  const Float_t kwstripz = 10.;
-  // length of the FSTR Volume (the strip volume)
-  const Float_t klstripx = 122.;
-  
-  Float_t parfp[3]={klstripx*0.5,khstripy*0.5,kwstripz*0.5};
-  // coordinates of the strip center in the strip reference frame; used for positioning
-  // internal strip volumes
-  Float_t posfp[3]={0.,0.,0.};   
-  
-  
-  // FSTR volume definition and filling this volume with non sensitive Gas Mixture
-  gMC->Gsvolu("FSTR","BOX",idtmed[512],parfp,3);
-  //-- HONY Layer definition
-  //  parfp[0] = -1;
-  parfp[1] = khhony*0.5;
-  //  parfp[2] = -1;
-  gMC->Gsvolu("FHON","BOX",idtmed[503],parfp,3);
-  // positioning 2 HONY Layers on FSTR volume
-  
-  posfp[1]=-khstripy*0.5+parfp[1];
-  gMC->Gspos("FHON",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FHON",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  //-- PCB Layer definition 
-  parfp[1] = khpcby*0.5;
-  gMC->Gsvolu("FPCB","BOX",idtmed[504],parfp,3);
-  // positioning 2 PCB Layers on FSTR volume
-  posfp[1]=-khstripy*0.5+khhony+parfp[1];
-  gMC->Gspos("FPCB",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FPCB",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // positioning the central PCB layer
-  gMC->Gspos("FPCB",3,"FSTR",0.,0.,0.,0,"ONLY");
-  
-  
-  
-  //-- MYLAR Layer definition
-  parfp[1] = khmyly*0.5;
-  gMC->Gsvolu("FMYL","BOX",idtmed[511],parfp,3);
-  // positioning 2 MYLAR Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+parfp[1]; 
-  gMC->Gspos("FMYL",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 MYLAR Layers on FSTR volume
-  posfp[1] = khpcby*0.5+parfp[1];
-  gMC->Gspos("FMYL",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Graphite Layer definition
-  parfp[1] = khgraphy*0.5;
-  gMC->Gsvolu("FGRP","BOX",idtmed[502],parfp,3);
-  // positioning 2 Graphite Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+parfp[1];
-  gMC->Gspos("FGRP",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Graphite Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+parfp[1];
-  gMC->Gspos("FGRP",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Glass (EXT. +Semi INT.) Layer definition
-  parfp[1] = khglasseiy*0.5;
-  gMC->Gsvolu("FGLA","BOX",idtmed[514],parfp,3);
-  // positioning 2 Glass Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Glass Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Sensitive Mixture Layer definition
-  parfp[0] = klsensmx*0.5;
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwsensmz*0.5;
-  gMC->Gsvolu("FSEN","BOX",idtmed[513],parfp,3);
-  gMC->Gsvolu("FNSE","BOX",idtmed[512],parfp,3);
-  // positioning 2 gas Layers on FSTR volume
-  // the upper is insensitive freon
-  // while the remaining is sensitive
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+khglasseiy+parfp[1];
-  gMC->Gspos("FNSE",0,"FSTR", 0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FSEN",0,"FSTR", 0.,-posfp[1],0.,0,"ONLY");
-  
-  // dividing FSEN along z in knz=2 and along x in knx=48
-  gMC->Gsdvn("FSEZ","FSEN",knz,3);
-  gMC->Gsdvn("FSEX","FSEZ",knx,1);
-  
-  // FPAD volume definition
-  parfp[0] = klpadx*0.5;    
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwpadz*0.5;
-  gMC->Gsvolu("FPAD","BOX",idtmed[513],parfp,3);
-  // positioning the FPAD volumes on previous divisions
-  gMC->Gspos("FPAD",0,"FSEX",0.,0.,0.,0,"ONLY");
-  
-  ////  Positioning the Strips  (FSTR) in the FLT volumes  /////
-  
-  // Plate A (Central) 
-  
-  Float_t t = zFLTC+zFLTB+zFLTA*0.5+ 2*db;//Half Width of Barrel
-  
-  Float_t gap  = fGapA+0.5; //cm  updated distance between the strip axis
-  Float_t zpos = 0;
-  Float_t ang  = 0;
-  Int_t j=1; // AdC
-  nrot  = 0;
-  zcoor = 0;
-  ycoor = -14.5 + kspace ; //2 cm over front plate
-  
-  AliMatrix (idrotm[0],  90.,  0.,90.,90.,0., 90.);   
-
-  Int_t centerLoc= (Int_t)(fNStripA/2.) + 1; // AdC
-
-  //gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY");
-  gMC->Gspos("FSTR",centerLoc,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); // AdC
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  zcoor -= zSenStrip;
-  //j++; // AdC
-  Int_t upDown = -1; // upDown=-1 -> Upper strip
-                     // upDown=+1 -> Lower strip
-  do{
-    ang = atan(zcoor/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-    AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-    ang /= kRaddeg;
-    ycoor = -14.5+ kspace; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*gap;
-    //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-    //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-    gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-    gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-      printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-    }
-    j++; //j += 2; // AdC
-    upDown*= -1; // Alternate strips 
-    zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-  } while (zcoor-(stripWidth/2)*TMath::Cos(ang)>-t+zFLTC+zFLTB+db*2);
-  
-  zcoor = zcoor+(zSenStrip/2)/TMath::Cos(ang)+
-    upDown*gap*TMath::Tan(ang)+
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  gap = fGapB;
-  zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  ang = atan(zcoor/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-  AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-  ang /= kRaddeg;
-  
-  ycoor = -14.5+ kspace; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-  //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-  gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-  gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  ycoor = -hTof/2.+ kspace;//2 cm over front plate
-  
-  // Plate  B
-  
-  nrot = 0;
-  Int_t i=1; // AdC
-  upDown = 1;
-  Float_t deadRegion = 1.0;//cm
-  
-  zpos = zcoor - (zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang)-
-    deadRegion/TMath::Cos(ang);
-  
-  ang = atan(zpos/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-  ang /= kRaddeg;
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-  gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i); 
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  i++;
-  upDown*=-1;
-  
-  do {
-    zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    Float_t deltaSpaceinB=-0.5; // [cm] to avoid overlaps with the end of freon frame
-    Float_t deltaGapinB=0.5;    // [cm] to avoid overlaps in between initial strips
-    ycoor = -hTof*0.5+ kspace+deltaSpaceinB ; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*(gap+deltaGapinB);
-    zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-    gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i); 
-      printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-    }
-    upDown*=-1;
-    i++;
-  } while (TMath::Abs(ang*kRaddeg)<22.5);
-  //till we reach a tilting angle of 22.5 degrees
-  
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  zpos = zpos - zSenStrip/TMath::Cos(ang);
-  // this avoid overlaps in between outer strips in plate B
-  Float_t deltaMovingUp=0.8;    // [cm]
-  Float_t deltaMovingDown=-0.5; // [cm]
-  
-  do {
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    zcoor = zpos+(zFLTB/2+zFLTA/2+db);
-    gMC->Gspos("FSTR",i, "FLTB", 0., ycoor+deltaMovingDown+deltaMovingUp, zcoor,idrotm[nrot], "ONLY");
-    deltaMovingUp+=0.8; // update delta moving toward the end of the plate
-    zpos = zpos - zSenStrip/TMath::Cos(ang);
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i); 
-      printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-    }
-    i++;
-    
-  }  while (zpos-stripWidth*0.5/TMath::Cos(ang)>-t+zFLTC+db);
-  
-  // Plate  C
-  
-  zpos = zpos + zSenStrip/TMath::Cos(ang);
-  
-  zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)+
-    gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  nrot = 0;
-  i=0;
-  Float_t deltaGap=-2.5; // [cm] update distance from strip center and plate
-  ycoor= -hTof*0.5+kspace+gap+deltaGap;
-  
-  do {
-    i++;
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    zcoor = zpos+(zFLTC*0.5+zFLTB+zFLTA*0.5+db*2);
-    gMC->Gspos("FSTR",i, "FLTC", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.5 ",ClassName(),ang*kRaddeg,i); 
-      printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-    }
-    zpos = zpos - zSenStrip/TMath::Cos(ang);
-  }  while (zpos-stripWidth*TMath::Cos(ang)*0.5>-t);
-
-
-  ////////// Layers after strips /////////////////
-  // Al Layer thickness (2.3mm) factor 0.7
-  
-  Float_t overSpace = fOverSpc;//cm
-  
-  par[0] = xFLT*0.5;
-  par[1] = 0.115*0.7; // factor 0.7
-  par[2] = (zFLTA *0.5);
-  ycoor = -yFLT/2 + overSpace + par[1];
-  gMC->Gsvolu("FPEA", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FPEB", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FPEC", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-
-  // plexiglass thickness: 1.5 mm ; factor 0.3
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = 0.075*0.3; // factor 0.3 
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FECA", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FECB", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FECC", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  
-  // frame of Air
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = (yFLT/2-ycoor-khAlWall)*0.5; // Aluminum layer considered (0.18 cm)
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FAIA", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FAIB", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FAIC", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-  
-  // start with cards and cooling tubes
-  // finally, cards, cooling tubes and layer for thermal dispersion
-  // 3 volumes
-  // card volume definition
-  
-  // see GEOM200 in GEANT manual
-  AliMatrix(idrotm[98], 90., 0., 90., 90., 0., 0.); // 0 deg
-  
-  Float_t cardpar[3];
-  cardpar[0]= 61.;
-  cardpar[1]= 5.;
-  cardpar[2]= 0.1;
-  gMC->Gsvolu("FCAR", "BOX ", idtmed[504], cardpar, 3); // PCB Card 
-  //alu plate volume definition
-  cardpar[1]= 3.5;
-  cardpar[2]= 0.05;
-  gMC->Gsvolu("FALP", "BOX ", idtmed[508], cardpar, 3); // Alu Plate
-  
-  
-  // central module positioning (FAIA)
-  Float_t cardpos[3], aplpos2, stepforcardA=6.625;
-  cardpos[0]= 0.;
-  cardpos[1]= -0.5;
-  cardpos[2]= -53.;
-  Float_t aplpos1 = -2.;
-  Int_t icard;
-  for (icard=0; icard<15; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardA;
-    aplpos2 = cardpos[2]+0.15;
-    gMC->Gspos("FCAR",icard,"FAIA",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIA",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY");
-    
-  }
-  
-  
-  // intermediate module positioning (FAIB)
-  Float_t stepforcardB= 7.05;
-  cardpos[2]= -70.5;
-  for (icard=0; icard<19; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardB;
-    aplpos2 = cardpos[2]+0.15;  
-    gMC->Gspos("FCAR",icard,"FAIB",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIB",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY"); 
-  }
-  
-  
-  // outer module positioning (FAIC)
-  Float_t stepforcardC= 8.45238;
-  cardpos[2]= -88.75;
-  for (icard=0; icard<20; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardC;
-    aplpos2 = cardpos[2]+0.15;
-    gMC->Gspos("FCAR",icard,"FAIC",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIC",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY");
-  }
-  
-  // tube volume definition
-  Float_t tubepar[3];
-  tubepar[0]= 0.;
-  tubepar[1]= 0.4;
-  tubepar[2]= 61.;
-  gMC->Gsvolu("FTUB", "TUBE", idtmed[516], tubepar, 3); // cooling tubes (steel)
-  tubepar[0]= 0.;
-  tubepar[1]= 0.35;
-  tubepar[2]= 61.;
-  gMC->Gsvolu("FITU", "TUBE", idtmed[515], tubepar, 3); // cooling water
-  // positioning water tube into the steel one
-  gMC->Gspos("FITU",1,"FTUB",0.,0.,0.,0,"ONLY");
-  
-  
-  // rotation matrix
-  AliMatrix(idrotm[99], 180., 90., 90., 90., 90., 0.);
-  // central module positioning (FAIA)
-  Float_t tubepos[3], tdis=0.6;
-  tubepos[0]= 0.;
-  tubepos[1]= cardpos[1];
-  tubepos[2]= -53.+tdis;
-  //  tub1pos = 5.;
-  Int_t itub;
-  for (itub=0; itub<15; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardA;
-    gMC->Gspos("FTUB",itub,"FAIA",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-  
-  // intermediate module positioning (FAIB)
-  tubepos[2]= -70.5+tdis;
-  for (itub=0; itub<19; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardB;
-    gMC->Gspos("FTUB",itub,"FAIB",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-  // outer module positioning (FAIC)
-  tubepos[2]= -88.75+tdis;
-  for (itub=0; itub<20; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardC;
-    gMC->Gspos("FTUB",itub,"FAIC",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-
-}
-
-//_____________________________________________________________________________
-void AliTOFv1::DrawModule() const
-{
-  //
-  // Draw a shaded view of the Time Of Flight version 1
-  //
-  // Set everything unseen
-  gMC->Gsatt("*", "seen", -1);
-  // 
-  // Set ALIC mother transparent
-  gMC->Gsatt("ALIC","SEEN",0);
-  //
-  // Set the volumes visible
-  gMC->Gsatt("ALIC","SEEN",0);
-
-  gMC->Gsatt("FTOA","SEEN",1);
-  gMC->Gsatt("FTOB","SEEN",1);
-  gMC->Gsatt("FTOC","SEEN",1);
-  gMC->Gsatt("FLTA","SEEN",1);
-  gMC->Gsatt("FLTB","SEEN",1);
-  gMC->Gsatt("FLTC","SEEN",1);
-  gMC->Gsatt("FPLA","SEEN",1);
-  gMC->Gsatt("FPLB","SEEN",1);
-  gMC->Gsatt("FPLC","SEEN",1);
-  gMC->Gsatt("FSTR","SEEN",1);
-  gMC->Gsatt("FPEA","SEEN",1);
-  gMC->Gsatt("FPEB","SEEN",1);
-  gMC->Gsatt("FPEC","SEEN",1);
-  
-  gMC->Gsatt("FLZ1","SEEN",0);
-  gMC->Gsatt("FLZ2","SEEN",0);
-  gMC->Gsatt("FLZ3","SEEN",0);
-  gMC->Gsatt("FLX1","SEEN",0);
-  gMC->Gsatt("FLX2","SEEN",0);
-  gMC->Gsatt("FLX3","SEEN",0);
-  gMC->Gsatt("FPAD","SEEN",0);
-
-  gMC->Gdopt("hide", "on");
-  gMC->Gdopt("shad", "on");
-  gMC->Gsatt("*", "fill", 7);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 40, 30, 0, 12, 9.5, .02, .02);
-  gMC->Gdhead(1111, "Time Of Flight");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-//_____________________________________________________________________________
-void AliTOFv1::DrawDetectorModules()
-{
-//
-// Draw a shaded view of the TOF detector version 1
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible
-// 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level                
-
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",-2);
-  gMC->Gsatt("FTOB","seen",-2);
-  gMC->Gsatt("FTOA","seen",-2);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF detector V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}                                 
-
-//_____________________________________________________________________________
-void AliTOFv1::DrawDetectorStrips()
-{
-//
-// Draw a shaded view of the TOF strips for version 1
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-  
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",0);
-  gMC->Gsatt("FTOB","seen",0);
-  gMC->Gsatt("FTOA","seen",0);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-
-// ==========================> Level 4
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOC
-  gMC->Gsatt("FLTC","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOB
-  gMC->Gsatt("FLTB","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOA
-  gMC->Gsatt("FLTA","seen",0);
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOC
-  // -> cfr previous settings
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOB
-  // -> cfr previous settings
-  // Level 4 of B075 / Level 3 of BTO3 / Level 2 of FTOC
-  // -> cfr previous settings
-
-//======================================> Level 5
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOC / Level 2 of FLTC
-  gMC->Gsatt("FALC","seen",0); // no children for FALC
-  gMC->Gsatt("FSTR","seen",-2);
-  gMC->Gsatt("FPEC","seen",0); // no children for FPEC
-  gMC->Gsatt("FECC","seen",0); // no children for FECC
-  gMC->Gsatt("FWAC","seen",0); // no children for FWAC
-  gMC->Gsatt("FAIC","seen",0); // no children for FAIC
-
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOB / Level 2 of FLTB
-  gMC->Gsatt("FALB","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-
-
-  // -> cfr previous settings
-  gMC->Gsatt("FPEB","seen",0); // no children for FPEB
-  gMC->Gsatt("FECB","seen",0); // no children for FECB
-  gMC->Gsatt("FWAB","seen",0); // no children for FWAB
-  gMC->Gsatt("FAIB","seen",0); // no children for FAIB
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOA / Level 2 of FLTA
-  gMC->Gsatt("FALA","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-  // -> cfr previous settings
-  gMC->Gsatt("FPEA","seen",0); // no children for FPEA
-  gMC->Gsatt("FECA","seen",0); // no children for FECA
-  gMC->Gsatt("FWAA","seen",0); // no children for FWAA
-  gMC->Gsatt("FAIA","seen",0); // no children for FAIA
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// for others Level 5, cfr. previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF Strips V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-
-//_____________________________________________________________________________
-void AliTOFv1::CreateMaterials()
-{
-  //
-  // Define materials for the Time Of Flight
-  //
-  AliTOF::CreateMaterials();
-}
-//_____________________________________________________________________________
-void AliTOFv1::Init()
-{
-  //
-  // Initialise the detector after the geometry has been defined
-  //
-  printf("**************************************"
-        "  TOF  "
-        "**************************************\n");
-  printf("\n   Version 1 of TOF initialing, "
-             "TOF with holes for PHOS detector\n");
-
-  AliTOF::Init();
-
-  fIdFTOA = gMC->VolId("FTOA");
-  fIdFTOB = gMC->VolId("FTOB");
-  fIdFTOC = gMC->VolId("FTOC");
-  fIdFLTA = gMC->VolId("FLTA");
-  fIdFLTB = gMC->VolId("FLTB");
-  fIdFLTC = gMC->VolId("FLTC");
-
-  printf("**************************************"
-        "  TOF  "
-        "**************************************\n");
-}
-//_____________________________________________________________________________
-void AliTOFv1::StepManager()
-{
-  //
-  // Procedure called at each step in the Time Of Flight
-  //
-  TLorentzVector mom, pos;
-  Float_t xm[3],pm[3],xpad[3],ppad[3];
-  Float_t hits[13],phi,phid,z;
-  Int_t   vol[5];
-  Int_t   sector, plate, padx, padz, strip;
-  Int_t   copy, padzid, padxid, stripid, i;
-  Int_t   *idtmed = fIdtmed->GetArray()-499;
-  Float_t incidenceAngle;
-  
-  if(gMC->CurrentMedium()==idtmed[513] && 
-     gMC->IsTrackEntering() && gMC->TrackCharge()
-     && gMC->CurrentVolID(copy)==fIdSens) 
-  {    
-    // getting information about hit volumes
-    
-    padzid=gMC->CurrentVolOffID(2,copy);
-    padz=copy;  
-    
-    padxid=gMC->CurrentVolOffID(1,copy);
-    padx=copy;  
-    
-    stripid=gMC->CurrentVolOffID(4,copy);
-    strip=copy;  
-
-    gMC->TrackPosition(pos);
-    gMC->TrackMomentum(mom);
-
-//    Double_t NormPos=1./pos.Rho();
-    Double_t normMom=1./mom.Rho();
-
-//  getting the cohordinates in pad ref system
-    xm[0] = (Float_t)pos.X();
-    xm[1] = (Float_t)pos.Y();
-    xm[2] = (Float_t)pos.Z();
-
-    pm[0] = (Float_t)mom.X()*normMom;
-    pm[1] = (Float_t)mom.Y()*normMom;
-    pm[2] = (Float_t)mom.Z()*normMom;
-    gMC->Gmtod(xm,xpad,1);
-    gMC->Gmtod(pm,ppad,2);
-
-    if(ppad[1]>1.) ppad[1]=1.;
-    if(ppad[1]<-1.) ppad[1]=-1.;
-
-    incidenceAngle = TMath::ACos(ppad[1])*kRaddeg;
-
-    z = pos[2];
-
-    plate = 0;
-    if (TMath::Abs(z) <=  fZlenA*0.5)  plate = 2; //3; // AdC
-    if (z < (fZlenA*0.5+fZlenB) && 
-        z >  fZlenA*0.5)               plate = 1; //4; // AdC
-    if (z >-(fZlenA*0.5+fZlenB) &&
-        z < -fZlenA*0.5)               plate = 3; //2; // AdC
-    if (z > (fZlenA*0.5+fZlenB))       plate = 0; //5; // AdC
-    if (z <-(fZlenA*0.5+fZlenB))       plate = 4; //1; // AdC
-
-    if (plate==0) strip=AliTOFConstants::fgkNStripC-strip; // AdC
-    else if (plate==1) strip=AliTOFConstants::fgkNStripB-strip; // AdC
-    else strip--; // AdC
-
-    if (z<=0.) padx=AliTOFConstants::fgkNpadX-padx; // AdC
-    else padx--; // AdC
-
-    if (plate==3 || plate==4) padz=AliTOFConstants::fgkNpadZ-padz; // AdC
-    else padz--; // AdC
-
-    phi = pos.Phi();
-    if (phi>=0.) phid = phi*kRaddeg; //+180.; // AdC
-    else phid = phi*kRaddeg + 360.; // AdC
-    sector = Int_t (phid/20.);
-    //sector++; // AdC
-
-    for(i=0;i<3;++i) {
-      hits[i]   = pos[i];
-      hits[i+3] = pm[i];
-    }
-
-    hits[6] = mom.Rho();
-    hits[7] = pos[3];
-    hits[8] = xpad[0];
-    hits[9] = xpad[1];
-    hits[10]= xpad[2];
-    hits[11]= incidenceAngle;
-    hits[12]= gMC->Edep();
-    
-    vol[0]= sector;
-    vol[1]= plate;
-    vol[2]= strip;
-    vol[3]= padx;
-    vol[4]= padz;
-    
-    AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol, hits);
-  }
-}
-
diff --git a/TOF/AliTOFv1.h b/TOF/AliTOFv1.h
deleted file mode 100644 (file)
index bb5c4b5..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//_________________________________________________________________________
-// Implementation version v1 of TOF Manager class
-// HOLES ONLY FOR PHOS DETECTOR
-//   
-//*-- 
-//*-- Authors: Pierella, Seganti, Vicinanza (Bologna and Salerno University)
-
-#ifndef ALITOFv1_H
-#define ALITOFv1_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-
-#include "AliTOF.h"
-
-class AliTOFv1 : public AliTOF {
-public:
-  AliTOFv1();
-  AliTOFv1(const char *name, const char *title);
-  virtual ~AliTOFv1() {}
-  virtual void   CreateGeometry();
-  virtual void   CreateMaterials();
-  virtual void   Init();
-  virtual Int_t  IsVersion() const {return 1;}
-  virtual void   TOFpc(Float_t xtof,Float_t ytof,Float_t zlenC,Float_t zlenB,
-                       Float_t zlenA,Float_t ztof0);
-  virtual void   StepManager();
-  virtual void   DrawModule() const;
-  virtual void   DrawDetectorModules();
-  virtual void   DrawDetectorStrips();
-//  virtual void   DrawDetectorModulesinFrame();
-//  virtual void   DrawDetectorStripsinFrame();
-
-private:
-  Int_t fIdFTOA; // FTOA volume identifier (outer plate A)
-  Int_t fIdFTOB; // FTOB volume identifier (outer plate B)
-  Int_t fIdFTOC; // FTOC volume identifier (outer plate C)
-  Int_t fIdFLTA; // FLTA volume identifier (inner plate A)
-  Int_t fIdFLTB; // FLTB volume identifier (inner plate B)
-  Int_t fIdFLTC; // FLTC volume identifier (inner plate C)
-  
-   ClassDef(AliTOFv1,1)  //Time Of Flight version 1
-};
-#endif /* ALITOFv1_H */
diff --git a/TOF/AliTOFv2.cxx b/TOF/AliTOFv2.cxx
deleted file mode 100644 (file)
index 4b76620..0000000
+++ /dev/null
@@ -1,1064 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  This class contains the functions for version 2 of the Time Of Flight    //
-//  detector.                                                                //
-//                                                                           //
-//  VERSION WITH 5 MODULES AND TILTED STRIPS                                 //
-//                                                                           //
-//  HOLES FOR PHOS AND HMPID DETECTOR                                         //
-//                                                                           //
-//   Authors:                                                                //
-//                                                                           //
-//   Alessio Seganti                                                         //
-//   Domenico Vicinanza                                                      //
-//                                                                           //
-//   University of Salerno - Italy                                           //
-//                                                                           //
-//   Fabrizio Pierella                                                       //
-//   University of Bologna - Italy                                           //
-//                                                                           //
-//                                                                           //
-//Begin_Html                                                                 //
-/*                                                                           //
-<img src="picts/AliTOFv2Class.gif">                                          //
-*/                                                                           //
-//End_Html                                                                   //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-#include <stdlib.h>
-
-#include <TLorentzVector.h>
-#include <TObject.h>
-#include <TVirtualMC.h>
-
-#include "AliConst.h"
-#include "AliMagF.h"
-#include "AliRun.h"
-#include "AliTOFv2.h"
-#include "AliTOFConstants.h" // AdC
-#include "AliMC.h"
-ClassImp(AliTOFv2)
-//_____________________________________________________________________________
-AliTOFv2::AliTOFv2()
-{
-  //
-  // Default constructor
-  //
-}
-//_____________________________________________________________________________
-AliTOFv2::AliTOFv2(const char *name, const char *title)
-        : AliTOF(name,title)
-{
-  //
-  // Standard constructor
-  //
-  //
-  // Check that FRAME is there otherwise we have no place where to
-  // put TOF
-  AliModule* frame=gAlice->GetModule("FRAME");
-  if(!frame) {
-    Error("Ctor","TOF needs FRAME to be present\n");
-    exit(1);
-  } else
-    if(frame->IsVersion()!=1) {
-      Error("Ctor","FRAME version 1 needed with this version of TOF\n");
-      exit(1);
-    }
-
-}
-
-//_____________________________________________________________________________
-void AliTOFv2::CreateGeometry()
-{
-  //
-  // Create geometry for Time Of Flight version 0
-  //
-  //Begin_Html
-  /*
-    <img src="picts/AliTOFv2.gif">
-  */
-  //End_Html
-  //
-  // Creates common geometry
-  //
-  AliTOF::CreateGeometry();
-}
-//_____________________________________________________________________________
-void AliTOFv2::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC,
-                    Float_t zlenB, Float_t zlenA, Float_t ztof0)
-{
-  //
-  // Definition of the Time Of Fligh Resistive Plate Chambers
-  // xFLT, yFLT, zFLT - sizes of TOF modules (large)
-  
-  Float_t  ycoor, zcoor;
-  Float_t  par[3];
-  Int_t    *idtmed = fIdtmed->GetArray()-499;
-  Int_t    idrotm[100];
-  Int_t    nrot = 0;
-  Float_t  hTof = fRmax-fRmin;
-  
-  Float_t radius = fRmin+2.;//cm
-
-  par[0] =  xtof * 0.5;
-  par[1] =  ytof * 0.5;
-  par[2] = zlenC * 0.5;
-  gMC->Gsvolu("FTOC", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenB * 0.5;
-  gMC->Gsvolu("FTOB", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenA * 0.5;
-  gMC->Gsvolu("FTOA", "BOX ", idtmed[506], par, 3);
-
-
-  // Positioning of modules
-
-  Float_t zcor1 = ztof0 - zlenC*0.5;
-  Float_t zcor2 = ztof0 - zlenC - zlenB*0.5;
-  Float_t zcor3 = 0.;
-  
-  AliMatrix(idrotm[0], 90.,  0., 0., 0., 90,-90.);
-  AliMatrix(idrotm[1], 90.,180., 0., 0., 90, 90.);
-  gMC->Gspos("FTOC", 1, "BTO1", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO1", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO2", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO2", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO3", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO3", 0, -zcor1, 0, idrotm[1], "ONLY");
-  
-  gMC->Gspos("FTOB", 1, "BTO1", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO1", 0, -zcor2, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOB", 1, "BTO2", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO2", 0, -zcor2, 0, idrotm[1], "ONLY");
-  
-  gMC->Gspos("FTOA", 0, "BTO1", 0, zcor3,  0, idrotm[0], "ONLY");
-  
-  Float_t db = 0.5;//cm
-  Float_t xFLT, xFST, yFLT, zFLTA, zFLTB, zFLTC;
-  
-  xFLT = fStripLn;
-  yFLT = ytof;
-  zFLTA = zlenA;
-  zFLTB = zlenB;
-  zFLTC = zlenC;
-
-  xFST = xFLT-fDeadBndX*2;//cm
-
-// Sizes of MRPC pads
-
-  Float_t yPad = 0.505;//cm 
-  
-// Large not sensitive volumes with Insensitive Freon
-  par[0] = xFLT*0.5;
-  par[1] = yFLT*0.5;
-  
-  if(fDebug) 
-    cout <<ClassName()
-        <<": ************************* TOF geometry **************************"
-        <<endl;
-
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FLTA", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTA", 0, "FTOA", 0., 0., 0., 0, "ONLY");
-
-  par[2] = (zFLTB * 0.5);
-  gMC->Gsvolu("FLTB", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTB", 0, "FTOB", 0., 0., 0., 0, "ONLY");
-
-  par[2] = (zFLTC * 0.5);
-  gMC->Gsvolu("FLTC", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTC", 0, "FTOC", 0., 0., 0., 0, "ONLY");
-
-  ///// Layers of Aluminum before and after detector /////
-  ///// Aluminum Box for Modules (1.8 mm thickness)  /////
-  ///// lateral walls not simulated for the time being
-  //const Float_t khAlWall = 0.18;
-  // fp to be checked
-  const Float_t khAlWall = 0.11;
-  par[0] = xFLT*0.5;
-  par[1] = khAlWall/2.;//cm
-  ycoor = -yFLT/2 + par[1];
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FALA", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALA", 1, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALA", 2, "FLTA", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FALB", "BOX ", idtmed[508], par, 3); // Alluminium 
-  gMC->Gspos ("FALB", 1, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALB", 2, "FLTB", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FALC", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALC", 1, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALC", 2, "FLTC", 0.,-ycoor, 0., 0, "ONLY");
-  
-  ///////////////// Detector itself //////////////////////
-  
-  const Float_t  kdeadBound  =  fDeadBndZ; //cm non-sensitive between the pad edge 
-  //and the boundary of the strip
-  const Int_t    knx    = fNpadX;          // number of pads along x
-  const Int_t    knz    = fNpadZ;          // number of pads along z
-  const Float_t  kspace = fSpace;            //cm distance from the front plate of the box
-  
-  Float_t zSenStrip  = fZpad*fNpadZ;//cm
-  Float_t stripWidth = zSenStrip + 2*kdeadBound;
-  
-  par[0] = xFLT*0.5;
-  par[1] = yPad*0.5; 
-  par[2] = stripWidth*0.5;
-  
-  // new description for strip volume -double stack strip-
-  // -- all constants are expressed in cm
-  // heigth of different layers
-  const Float_t khhony = 0.8     ;   // heigth of HONY  Layer
-  const Float_t khpcby = 0.08    ;   // heigth of PCB   Layer
-  const Float_t khmyly = 0.035   ;   // heigth of MYLAR Layer
-  const Float_t khgraphy = 0.02  ;   // heigth of GRAPHITE Layer
-  const Float_t khglasseiy = 0.135;   // 0.6 Ext. Glass + 1.1 i.e. (Int. Glass/2) (mm)
-  const Float_t khsensmy = 0.11  ;   // heigth of Sensitive Freon Mixture
-  const Float_t kwsensmz = 2*3.5 ;   // cm
-  const Float_t klsensmx = 48*2.5;   // cm
-  const Float_t kwpadz = 3.5;   // cm z dimension of the FPAD volume
-  const Float_t klpadx = 2.5;   // cm x dimension of the FPAD volume
-  
-  // heigth of the FSTR Volume (the strip volume)
-  const Float_t khstripy = 2*khhony+3*khpcby+4*(khmyly+khgraphy+khglasseiy)+2*khsensmy;
-  // width  of the FSTR Volume (the strip volume)
-  const Float_t kwstripz = 10.;
-  // length of the FSTR Volume (the strip volume)
-  const Float_t klstripx = 122.;
-  
-  Float_t parfp[3]={klstripx*0.5,khstripy*0.5,kwstripz*0.5};
-  // coordinates of the strip center in the strip reference frame; used for positioning
-  // internal strip volumes
-  Float_t posfp[3]={0.,0.,0.};   
-  
-  
-  // FSTR volume definition and filling this volume with non sensitive Gas Mixture
-  gMC->Gsvolu("FSTR","BOX",idtmed[512],parfp,3);
-  //-- HONY Layer definition
-  //  parfp[0] = -1;
-  parfp[1] = khhony*0.5;
-  //  parfp[2] = -1;
-  gMC->Gsvolu("FHON","BOX",idtmed[503],parfp,3);
-  // positioning 2 HONY Layers on FSTR volume
-  
-  posfp[1]=-khstripy*0.5+parfp[1];
-  gMC->Gspos("FHON",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FHON",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  //-- PCB Layer definition 
-  parfp[1] = khpcby*0.5;
-  gMC->Gsvolu("FPCB","BOX",idtmed[504],parfp,3);
-  // positioning 2 PCB Layers on FSTR volume
-  posfp[1]=-khstripy*0.5+khhony+parfp[1];
-  gMC->Gspos("FPCB",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FPCB",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // positioning the central PCB layer
-  gMC->Gspos("FPCB",3,"FSTR",0.,0.,0.,0,"ONLY");
-  
-  
-  
-  //-- MYLAR Layer definition
-  parfp[1] = khmyly*0.5;
-  gMC->Gsvolu("FMYL","BOX",idtmed[511],parfp,3);
-  // positioning 2 MYLAR Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+parfp[1]; 
-  gMC->Gspos("FMYL",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 MYLAR Layers on FSTR volume
-  posfp[1] = khpcby*0.5+parfp[1];
-  gMC->Gspos("FMYL",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Graphite Layer definition
-  parfp[1] = khgraphy*0.5;
-  gMC->Gsvolu("FGRP","BOX",idtmed[502],parfp,3);
-  // positioning 2 Graphite Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+parfp[1];
-  gMC->Gspos("FGRP",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Graphite Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+parfp[1];
-  gMC->Gspos("FGRP",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Glass (EXT. +Semi INT.) Layer definition
-  parfp[1] = khglasseiy*0.5;
-  gMC->Gsvolu("FGLA","BOX",idtmed[514],parfp,3);
-  // positioning 2 Glass Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Glass Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Sensitive Mixture Layer definition
-  parfp[0] = klsensmx*0.5;
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwsensmz*0.5;
-  gMC->Gsvolu("FSEN","BOX",idtmed[513],parfp,3);
-  gMC->Gsvolu("FNSE","BOX",idtmed[512],parfp,3);
-  // positioning 2 gas Layers on FSTR volume
-  // the upper is insensitive freon
-  // while the remaining is sensitive
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+khglasseiy+parfp[1];
-  gMC->Gspos("FNSE",0,"FSTR", 0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FSEN",0,"FSTR", 0.,-posfp[1],0.,0,"ONLY");
-  
-  // dividing FSEN along z in knz=2 and along x in knx=48
-  gMC->Gsdvn("FSEZ","FSEN",knz,3);
-  gMC->Gsdvn("FSEX","FSEZ",knx,1);
-  
-  // FPAD volume definition
-  parfp[0] = klpadx*0.5;    
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwpadz*0.5;
-  gMC->Gsvolu("FPAD","BOX",idtmed[513],parfp,3);
-  // positioning the FPAD volumes on previous divisions
-  gMC->Gspos("FPAD",0,"FSEX",0.,0.,0.,0,"ONLY");
-  
-  ////  Positioning the Strips  (FSTR) in the FLT volumes  /////
-  
-  // Plate A (Central) 
-  
-  Float_t t = zFLTC+zFLTB+zFLTA*0.5+ 2*db;//Half Width of Barrel
-  
-  Float_t gap  = fGapA+0.5; //cm  updated distance between the strip axis
-  Float_t zpos = 0;
-  Float_t ang  = 0;
-  Int_t j=1; // AdC
-  nrot  = 0;
-  zcoor = 0;
-  ycoor = -14.5 + kspace ; //2 cm over front plate
-  
-  AliMatrix (idrotm[0],  90.,  0.,90.,90.,0., 90.);   
-
-  Int_t centerLoc= (Int_t)(fNStripA/2.) + 1; // AdC
-
-  //gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY");
-  
-  if(fDebug) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-  }
-  
-  zcoor -= zSenStrip;
-  //j++; // AdC
-  Int_t upDown = -1; // upDown=-1 -> Upper strip
-                     // upDown=+1 -> Lower strip
-  do{
-    ang = atan(zcoor/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-    AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-    ang /= kRaddeg;
-    ycoor = -14.5+ kspace; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*gap;
-    //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-    //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-    gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-    gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-    
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    
-    j++; //j += 2; // AdC
-    upDown*= -1; // Alternate strips 
-    zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-  } while (zcoor-(stripWidth/2)*TMath::Cos(ang)>-t+zFLTC+zFLTB+db*2);
-  
-  zcoor = zcoor+(zSenStrip/2)/TMath::Cos(ang)+
-    upDown*gap*TMath::Tan(ang)+
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  gap = fGapB;
-  zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  ang = atan(zcoor/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-  AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-  ang /= kRaddeg;
-  
-  ycoor = -14.5+ kspace; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-  //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-  gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-  gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC  
-  if(fDebug>=1) {   
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);  
-  }   
-  
-  ycoor = -hTof/2.+ kspace;//2 cm over front plate
-  
-  // Plate  B
-  
-  nrot = 0;
-  Int_t i=1; // AdC
-  upDown = 1;
-  Float_t deadRegion = 1.0;//cm
-  
-  zpos = zcoor - (zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang)-
-    deadRegion/TMath::Cos(ang);
-  
-  ang = atan(zpos/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-  ang /= kRaddeg;
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-  gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-  
-  if(fDebug>=1) {   
-    printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-    printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-  }   
-  
-  i++;
-  upDown*=-1;
-  
-  do {
-    zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    Float_t deltaSpaceinB=-0.5; // [cm] to avoid overlaps with the end of freon frame
-    Float_t deltaGapinB=0.5;    // [cm] to avoid overlaps in between initial strips
-    ycoor = -hTof*0.5+ kspace+deltaSpaceinB ; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*(gap+deltaGapinB);
-    zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-    gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-    
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    
-    upDown*=-1;
-    i++;
-  } while (TMath::Abs(ang*kRaddeg)<22.5);
-  //till we reach a tilting angle of 22.5 degrees
-  
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  zpos = zpos - zSenStrip/TMath::Cos(ang);
-  // this avoid overlaps in between outer strips in plate B
-  Float_t deltaMovingUp=0.8;    // [cm]
-  Float_t deltaMovingDown=-0.5; // [cm]
-  
-  do {
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    zcoor = zpos+(zFLTB/2+zFLTA/2+db);
-    gMC->Gspos("FSTR",i, "FLTB", 0., ycoor+deltaMovingDown+deltaMovingUp, zcoor,idrotm[nrot], "ONLY");
-    deltaMovingUp+=0.8; // update delta moving toward the end of the plate
-    zpos = zpos - zSenStrip/TMath::Cos(ang);
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    i++;
-    
-  }  while (zpos-stripWidth*0.5/TMath::Cos(ang)>-t+zFLTC+db);
-  
-  // Plate  C
-  
-  zpos = zpos + zSenStrip/TMath::Cos(ang);
-  
-  zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)+
-    gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  nrot = 0;
-  i=0;
-  Float_t deltaGap=-2.5; // [cm] update distance from strip center and plate
-  ycoor= -hTof*0.5+kspace+gap+deltaGap;
-  
-  do {
-    i++;
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    zcoor = zpos+(zFLTC*0.5+zFLTB+zFLTA*0.5+db*2);
-    gMC->Gspos("FSTR",i, "FLTC", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-    
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.5 ",ClassName(),ang*kRaddeg,i);
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    
-    zpos = zpos - zSenStrip/TMath::Cos(ang);
-  }  while (zpos-stripWidth*TMath::Cos(ang)*0.5>-t);
-  
-  
-  ////////// Layers after strips /////////////////
-  // Al Layer thickness (2.3mm) factor 0.7
-  
-  Float_t overSpace = fOverSpc;//cm
-  
-  par[0] = xFLT*0.5;
-  par[1] = 0.115*0.7; // factor 0.7
-  par[2] = (zFLTA *0.5);
-  ycoor = -yFLT/2 + overSpace + par[1];
-  gMC->Gsvolu("FPEA", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FPEB", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FPEC", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-
-  // plexiglass thickness: 1.5 mm ; factor 0.3
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = 0.075*0.3; // factor 0.3 
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FECA", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FECB", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FECC", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  
-  // frame of Air
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = (yFLT/2-ycoor-khAlWall)*0.5; // Aluminum layer considered (0.18 cm)
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FAIA", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FAIB", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FAIC", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-  
-  // start with cards and cooling tubes
-  // finally, cards, cooling tubes and layer for thermal dispersion
-  // 3 volumes
-  // card volume definition
-  
-  // see GEOM200 in GEANT manual
-  AliMatrix(idrotm[98], 90., 0., 90., 90., 0., 0.); // 0 deg
-  
-  Float_t cardpar[3];
-  cardpar[0]= 61.;
-  cardpar[1]= 5.;
-  cardpar[2]= 0.1;
-  gMC->Gsvolu("FCAR", "BOX ", idtmed[504], cardpar, 3); // PCB Card 
-  //alu plate volume definition
-  cardpar[1]= 3.5;
-  cardpar[2]= 0.05;
-  gMC->Gsvolu("FALP", "BOX ", idtmed[508], cardpar, 3); // Alu Plate
-  
-  
-  // central module positioning (FAIA)
-  Float_t cardpos[3], aplpos2, stepforcardA=6.625;
-  cardpos[0]= 0.;
-  cardpos[1]= -0.5;
-  cardpos[2]= -53.;
-  Float_t aplpos1 = -2.;
-  Int_t icard;
-  for (icard=0; icard<15; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardA;
-    aplpos2 = cardpos[2]+0.15;
-    gMC->Gspos("FCAR",icard,"FAIA",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIA",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY");
-    
-  }
-  
-  
-  // intermediate module positioning (FAIB)
-  Float_t stepforcardB= 7.05;
-  cardpos[2]= -70.5;
-  for (icard=0; icard<19; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardB;
-    aplpos2 = cardpos[2]+0.15;  
-    gMC->Gspos("FCAR",icard,"FAIB",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIB",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY"); 
-  }
-  
-  
-  // outer module positioning (FAIC)
-  Float_t stepforcardC= 8.45238;
-  cardpos[2]= -88.75;
-  for (icard=0; icard<20; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardC;
-    aplpos2 = cardpos[2]+0.15;
-    gMC->Gspos("FCAR",icard,"FAIC",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIC",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY");
-  }
-  
-  // tube volume definition
-  Float_t tubepar[3];
-  tubepar[0]= 0.;
-  tubepar[1]= 0.4;
-  tubepar[2]= 61.;
-  gMC->Gsvolu("FTUB", "TUBE", idtmed[516], tubepar, 3); // cooling tubes (steel)
-  tubepar[0]= 0.;
-  tubepar[1]= 0.35;
-  tubepar[2]= 61.;
-  gMC->Gsvolu("FITU", "TUBE", idtmed[515], tubepar, 3); // cooling water
-  // positioning water tube into the steel one
-  gMC->Gspos("FITU",1,"FTUB",0.,0.,0.,0,"ONLY");
-  
-  
-  // rotation matrix
-  AliMatrix(idrotm[99], 180., 90., 90., 90., 90., 0.);
-  // central module positioning (FAIA)
-  Float_t tubepos[3], tdis=0.6;
-  tubepos[0]= 0.;
-  tubepos[1]= cardpos[1];
-  tubepos[2]= -53.+tdis;
-  //  tub1pos = 5.;
-  Int_t itub;
-  for (itub=0; itub<15; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardA;
-    gMC->Gspos("FTUB",itub,"FAIA",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-  
-  // intermediate module positioning (FAIB)
-  tubepos[2]= -70.5+tdis;
-  for (itub=0; itub<19; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardB;
-    gMC->Gspos("FTUB",itub,"FAIB",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-  // outer module positioning (FAIC)
-  tubepos[2]= -88.75+tdis;
-  for (itub=0; itub<20; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardC;
-    gMC->Gspos("FTUB",itub,"FAIC",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-}
-
-//_____________________________________________________________________________
-void AliTOFv2::DrawModule() const
-{
-  //
-  // Draw a shaded view of the Time Of Flight version 2
-  //
-  // Set everything unseen
-  gMC->Gsatt("*", "seen", -1);
-  // 
-  // Set ALIC mother transparent
-  gMC->Gsatt("ALIC","SEEN",0);
-  //
-  // Set the volumes visible
-  gMC->Gsatt("ALIC","SEEN",0);
-
-  gMC->Gsatt("FTOA","SEEN",1);
-  gMC->Gsatt("FTOB","SEEN",1);
-  gMC->Gsatt("FTOC","SEEN",1);
-  gMC->Gsatt("FLTA","SEEN",1);
-  gMC->Gsatt("FLTB","SEEN",1);
-  gMC->Gsatt("FLTC","SEEN",1);
-  gMC->Gsatt("FPLA","SEEN",1);
-  gMC->Gsatt("FPLB","SEEN",1);
-  gMC->Gsatt("FPLC","SEEN",1);
-  gMC->Gsatt("FSTR","SEEN",1);
-  gMC->Gsatt("FPEA","SEEN",1);
-  gMC->Gsatt("FPEB","SEEN",1);
-  gMC->Gsatt("FPEC","SEEN",1);
-  
-  gMC->Gsatt("FLZ1","SEEN",0);
-  gMC->Gsatt("FLZ2","SEEN",0);
-  gMC->Gsatt("FLZ3","SEEN",0);
-  gMC->Gsatt("FLX1","SEEN",0);
-  gMC->Gsatt("FLX2","SEEN",0);
-  gMC->Gsatt("FLX3","SEEN",0);
-  gMC->Gsatt("FPAD","SEEN",0);
-
-  gMC->Gdopt("hide", "on");
-  gMC->Gdopt("shad", "on");
-  gMC->Gsatt("*", "fill", 7);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 40, 30, 0, 12, 9.5, .02, .02);
-  gMC->Gdhead(1111, "Time Of Flight");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-//_____________________________________________________________________________
-void AliTOFv2::DrawDetectorModules()
-{
-//
-// Draw a shaded view of the TOF detector version 2
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible
-// 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level                
-
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",-2);
-  gMC->Gsatt("FTOB","seen",-2);
-  gMC->Gsatt("FTOA","seen",-2);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF detector V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}                                 
-
-//_____________________________________________________________________________
-void AliTOFv2::DrawDetectorStrips()
-{
-//
-// Draw a shaded view of the TOF strips for version 2
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-  
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",0);
-  gMC->Gsatt("FTOB","seen",0);
-  gMC->Gsatt("FTOA","seen",0);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-
-// ==========================> Level 4
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOC
-  gMC->Gsatt("FLTC","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOB
-  gMC->Gsatt("FLTB","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOA
-  gMC->Gsatt("FLTA","seen",0);
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOC
-  // -> cfr previous settings
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOB
-  // -> cfr previous settings
-  // Level 4 of B075 / Level 3 of BTO3 / Level 2 of FTOC
-  // -> cfr previous settings
-
-//======================================> Level 5
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOC / Level 2 of FLTC
-  gMC->Gsatt("FALC","seen",0); // no children for FALC
-  gMC->Gsatt("FSTR","seen",-2);
-  gMC->Gsatt("FPEC","seen",0); // no children for FPEC
-  gMC->Gsatt("FECC","seen",0); // no children for FECC
-  gMC->Gsatt("FWAC","seen",0); // no children for FWAC
-  gMC->Gsatt("FAIC","seen",0); // no children for FAIC
-
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOB / Level 2 of FLTB
-  gMC->Gsatt("FALB","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-
-
-  // -> cfr previous settings
-  gMC->Gsatt("FPEB","seen",0); // no children for FPEB
-  gMC->Gsatt("FECB","seen",0); // no children for FECB
-  gMC->Gsatt("FWAB","seen",0); // no children for FWAB
-  gMC->Gsatt("FAIB","seen",0); // no children for FAIB
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOA / Level 2 of FLTA
-  gMC->Gsatt("FALA","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-  // -> cfr previous settings
-  gMC->Gsatt("FPEA","seen",0); // no children for FPEA
-  gMC->Gsatt("FECA","seen",0); // no children for FECA
-  gMC->Gsatt("FWAA","seen",0); // no children for FWAA
-  gMC->Gsatt("FAIA","seen",0); // no children for FAIA
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// for others Level 5, cfr. previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF Strips V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-
-//_____________________________________________________________________________
-void AliTOFv2::CreateMaterials()
-{
-  //
-  // Define materials for the Time Of Flight
-  //
-  AliTOF::CreateMaterials();
-}
-//_____________________________________________________________________________
-void AliTOFv2::Init()
-{
-  //
-  // Initialise the detector after the geometry has been defined
-  //
-  if(fDebug) {   
-    printf("%s: **************************************"
-           "  TOF  "
-           "**************************************\n",ClassName());
-    printf("\n%s:   Version 2 of TOF initialing, "
-           "TOF with holes for PHOS and HMPID \n",ClassName());
-  }  
-
-  AliTOF::Init();
-
-  fIdFTOA = gMC->VolId("FTOA");
-  fIdFTOB = gMC->VolId("FTOB");
-  fIdFTOC = gMC->VolId("FTOC");
-  fIdFLTA = gMC->VolId("FLTA");
-  fIdFLTB = gMC->VolId("FLTB");
-  fIdFLTC = gMC->VolId("FLTC");
-
-  if(fDebug) {
-    printf("%s: **************************************"
-           "  TOF  "
-           "**************************************\n",ClassName());
-  }
-}
-//_____________________________________________________________________________
-void AliTOFv2::StepManager()
-{
-  //
-  // Procedure called at each step in the Time Of Flight
-  //
-  TLorentzVector mom, pos;
-  Float_t xm[3],pm[3],xpad[3],ppad[3];
-  Float_t hits[13],phi,phid,z;
-  Int_t   vol[5];
-  Int_t   sector, plate, padx, padz, strip;
-  Int_t   copy, padzid, padxid, stripid, i;
-  Int_t   *idtmed = fIdtmed->GetArray()-499;
-  Float_t incidenceAngle;
-  
-  if(gMC->CurrentMedium()==idtmed[513] && 
-     gMC->IsTrackEntering() && gMC->TrackCharge()
-     && gMC->CurrentVolID(copy)==fIdSens) 
-  {    
-    // getting information about hit volumes
-    
-    padzid=gMC->CurrentVolOffID(2,copy);
-    padz=copy;  
-    
-    padxid=gMC->CurrentVolOffID(1,copy);
-    padx=copy;  
-    
-    stripid=gMC->CurrentVolOffID(4,copy);
-    strip=copy;  
-
-    gMC->TrackPosition(pos);
-    gMC->TrackMomentum(mom);
-
-//    Double_t NormPos=1./pos.Rho();
-    Double_t normMom=1./mom.Rho();
-
-//  getting the cohordinates in pad ref system
-    xm[0] = (Float_t)pos.X();
-    xm[1] = (Float_t)pos.Y();
-    xm[2] = (Float_t)pos.Z();
-
-    pm[0] = (Float_t)mom.X()*normMom;
-    pm[1] = (Float_t)mom.Y()*normMom;
-    pm[2] = (Float_t)mom.Z()*normMom;
-    gMC->Gmtod(xm,xpad,1);
-    gMC->Gmtod(pm,ppad,2);
-
-    if (ppad[1] > 1.) ppad[1]=1;
-    if (ppad[1] < -1.) ppad[1]=-1;
-    incidenceAngle = TMath::ACos(ppad[1])*kRaddeg;
-
-    z = pos[2];
-
-    plate = 0;
-    if (TMath::Abs(z) <=  fZlenA*0.5)  plate = 2; //3; // AdC
-    if (z < (fZlenA*0.5+fZlenB) && 
-        z >  fZlenA*0.5)               plate = 1; //4; // AdC
-    if (z >-(fZlenA*0.5+fZlenB) &&
-        z < -fZlenA*0.5)               plate = 3; //2; // AdC
-    if (z > (fZlenA*0.5+fZlenB))       plate = 0; //5;
-    if (z <-(fZlenA*0.5+fZlenB))       plate = 4; //1; // AdC
-
-    if (plate==0) strip=AliTOFConstants::fgkNStripC-strip; // AdC
-    else if (plate==1) strip=AliTOFConstants::fgkNStripB-strip; // AdC
-    else strip--; // AdC
-
-    if (z<=0.) padx=AliTOFConstants::fgkNpadX-padx; // AdC
-    else padx--; // AdC
-
-    if (plate==3 || plate==4) padz=AliTOFConstants::fgkNpadZ-padz; // AdC
-    else padz--; // AdC
-
-    phi = pos.Phi();
-    if (phi>=0.) phid = phi*kRaddeg; //+180.; // AdC
-    else phid = phi*kRaddeg + 360.; //+180.; // AdC
-    sector = Int_t (phid/20.);
-    //sector++; // AdC
-
-    for(i=0;i<3;++i) {
-      hits[i]   = pos[i];
-      hits[i+3] = pm[i];
-    }
-
-    hits[6] = mom.Rho();
-    hits[7] = pos[3];
-    hits[8] = xpad[0];
-    hits[9] = xpad[1];
-    hits[10]= xpad[2];
-    hits[11]= incidenceAngle;
-    hits[12]= gMC->Edep();
-    
-    vol[0]= sector;
-    vol[1]= plate;
-    vol[2]= strip;
-    vol[3]= padx;
-    vol[4]= padz;
-    
-    AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol, hits);
-  }
-}
diff --git a/TOF/AliTOFv2.h b/TOF/AliTOFv2.h
deleted file mode 100644 (file)
index bcc0886..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-//_________________________________________________________________________
-// Implementation version v2 of TOF Manager class
-// HOLES FOR PHOS AND HMPID (RICH) DETECTOR
-//   
-//*-- 
-//*-- Authors: Pierella, Seganti, Vicinanza (Bologna and Salerno University)
-
-#ifndef ALITOFv2_H
-#define ALITOFv2_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-/* $Id$ */
-#include "AliTOF.h"
-class AliTOFv2 : public AliTOF {
-public:
-  AliTOFv2();
-  AliTOFv2(const char *name, const char *title);
-  virtual ~AliTOFv2() {}
-  virtual void   CreateGeometry();
-  virtual void   CreateMaterials();
-  virtual void   Init();
-  virtual Int_t  IsVersion() const {return 2;}
-  virtual void   TOFpc(Float_t xtof,Float_t ytof,Float_t zlenC,Float_t zlenB,
-                       Float_t zlenA,Float_t ztof0);
-  virtual void   StepManager();
-  virtual void   DrawModule() const;
-  virtual void   DrawDetectorModules();
-  virtual void   DrawDetectorStrips();
-//  virtual void   DrawDetectorModulesinFrame();
-//  virtual void   DrawDetectorStripsinFrame();
-
-private:
-  Int_t fIdFTOA; // FTOA volume identifier (outer plate A)
-  Int_t fIdFTOB; // FTOB volume identifier (outer plate B)
-  Int_t fIdFTOC; // FTOC volume identifier (outer plate C)
-  Int_t fIdFLTA; // FLTA volume identifier (inner plate A)
-  Int_t fIdFLTB; // FLTB volume identifier (inner plate B)
-  Int_t fIdFLTC; // FLTC volume identifier (inner plate C)
-  
-   ClassDef(AliTOFv2,1)  //Time Of Flight version 2
-};
-#endif /* ALITOFv2_H  */
diff --git a/TOF/AliTOFv2FHoles.cxx b/TOF/AliTOFv2FHoles.cxx
deleted file mode 100644 (file)
index e564a43..0000000
+++ /dev/null
@@ -1,1076 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//
-//  This class contains the functions for version 2 of the Time Of Flight    //
-//  detector.                                                                //
-//
-//  VERSION WITH 5 MODULES AND TILTED STRIPS 
-//  
-//  HOLES FOR PHOS AND HMPID DETECTOR
-//
-//  !Not Official version!
-//
-//   Requested by Andreas Morsch to have TOFv2 full compliant
-//   with FRAME version 0
-//  
-//   Author:
-
-//   Fabrizio Pierella
-//   University of Bologna - Italy
-//
-//
-//Begin_Html
-/*
-<img src="picts/AliTOFv2FHolesClass.gif">
-*/
-//End_Html
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-#include <stdlib.h>
-
-#include <TLorentzVector.h>
-#include <TObject.h>
-#include <TVirtualMC.h>
-
-#include "AliConst.h"
-#include "AliMagF.h"
-#include "AliRun.h"
-#include "AliTOFv2FHoles.h"
-#include "AliTOFConstants.h" // AdC
-#include "AliMC.h"
-ClassImp(AliTOFv2FHoles)
-//_____________________________________________________________________________
-AliTOFv2FHoles::AliTOFv2FHoles()
-{
-  //
-  // Default constructor
-  //
-}
-//_____________________________________________________________________________
-AliTOFv2FHoles::AliTOFv2FHoles(const char *name, const char *title)
-        : AliTOF(name,title)
-{
-  //
-  // Standard constructor
-  //
-  //
-  // Check that FRAME is there otherwise we have no place where to
-  // put TOF
-  AliModule* frame=gAlice->GetModule("FRAME");
-  if(!frame) {
-    Error("Ctor","TOF needs FRAME to be present\n");
-    exit(1);
-  } else
-    if(frame->IsVersion()!=0) { 
-      Error("Ctor","FRAME version 0 needed with this version of TOF\n");
-      exit(1);
-    }
-}
-//_____________________________________________________________________________
-void AliTOFv2FHoles::CreateGeometry()
-{
-  //
-  // Create geometry for Time Of Flight version 0
-  //
-  //Begin_Html
-  /*
-    <img src="picts/AliTOFv2FHoles.gif">
-  */
-  //End_Html
-  //
-  // Creates common geometry
-  //
-  AliTOF::CreateGeometry();
-}
-//_____________________________________________________________________________
-void AliTOFv2FHoles::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC,
-                    Float_t zlenB, Float_t zlenA, Float_t ztof0)
-{
-  //
-  // Definition of the Time Of Fligh Resistive Plate Chambers
-  // xFLT, yFLT, zFLT - sizes of TOF modules (large)
-  
-  Float_t  ycoor, zcoor;
-  Float_t  par[3];
-  Int_t    *idtmed = fIdtmed->GetArray()-499;
-  Int_t    idrotm[100];
-  Int_t    nrot = 0;
-  Float_t  hTof = fRmax-fRmin;
-  
-  Float_t radius = fRmin+2.;//cm
-
-  // fixing parameters as requested by FRAME v0 (Morsch 16-10-2001)
-  zlenA = 124.;  // cm (A module length) original size 106.   enlarged   
-  zlenB = 154.;  // cm (B module length) original size 141.   enlarged
-  zlenC = 159.5; // cm (C module length) original size 175.5  reduced
-  ztof0 = 375.5; // total half-length of a TOF sector original size 371.5cm
-  
-
-  par[0] =  xtof * 0.5;
-  par[1] =  ytof * 0.5;
-  par[2] = zlenC * 0.5;
-  gMC->Gsvolu("FTOC", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenB * 0.5;
-  gMC->Gsvolu("FTOB", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenA * 0.5;
-  gMC->Gsvolu("FTOA", "BOX ", idtmed[506], par, 3);
-
-
-  // Positioning of modules
-
-  Float_t zcor1 = ztof0 - zlenC*0.5;
-  Float_t zcor2 = ztof0 - zlenC - zlenB*0.5;
-  Float_t zcor3 =    0.00;
-  Float_t zcor4 =  156.75 - zlenC*0.5;
-  Float_t zcor5 = -156.75 + zlenB*0.5;
-  
-  AliMatrix(idrotm[0], 90.,  0., 0., 0., 90,-90.);
-  AliMatrix(idrotm[1], 90.,180., 0., 0., 90, 90.);
-  gMC->Gspos("FTOC", 1, "BTO1", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO1", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO2", 0,  zcor4, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO3", 0,   0.,   0, idrotm[0], "ONLY");
-  
-  gMC->Gspos("FTOB", 1, "BTO1", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO1", 0, -zcor2, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOB", 1, "BTO2", 0,  zcor5, 0, idrotm[0], "ONLY");
-  
-  gMC->Gspos("FTOA", 0, "BTO1", 0,  zcor3, 0, idrotm[0], "ONLY");
-  
-  Float_t db = 0.5;//cm
-  Float_t xFLT, xFST, yFLT, zFLTA, zFLTB, zFLTC;
-  
-  xFLT = fStripLn;
-  yFLT = ytof;
-  zFLTA = zlenA;
-  zFLTB = zlenB;
-  zFLTC = zlenC;
-  
-  xFST = xFLT-fDeadBndX*2; //cm
-  
-  // Sizes of MRPC pads
-  
-  Float_t yPad = 0.505;   //cm 
-  
-  // Large not sensitive volumes with Insensitive Freon
-  par[0] = xFLT*0.5;
-  par[1] = yFLT*0.5;
-  
-  if(fDebug) 
-    cout <<ClassName()
-        <<": ************************* TOF geometry **************************"
-        <<endl;
-  
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FLTA", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTA", 0, "FTOA", 0., 0., 0., 0, "ONLY");
-  
-  par[2] = (zFLTB * 0.5);
-  gMC->Gsvolu("FLTB", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTB", 0, "FTOB", 0., 0., 0., 0, "ONLY");
-  
-  par[2] = (zFLTC * 0.5);
-  gMC->Gsvolu("FLTC", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTC", 0, "FTOC", 0., 0., 0., 0, "ONLY");
-
-  ///// Layers of Aluminum before and after detector /////
-  ///// Aluminum Box for Modules (1.8 mm thickness)  /////
-  ///// lateral walls not simulated for the time being
-  //const Float_t khAlWall = 0.18;
-  // fp to be checked
-  const Float_t khAlWall = 0.11;
-  par[0] = xFLT*0.5;
-  par[1] = khAlWall/2.;//cm
-  ycoor = -yFLT/2 + par[1];
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FALA", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALA", 1, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALA", 2, "FLTA", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FALB", "BOX ", idtmed[508], par, 3); // Alluminium 
-  gMC->Gspos ("FALB", 1, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALB", 2, "FLTB", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FALC", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALC", 1, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALC", 2, "FLTC", 0.,-ycoor, 0., 0, "ONLY");
-  
-  ///////////////// Detector itself //////////////////////
-  
-  const Float_t  kdeadBound  =  fDeadBndZ; //cm non-sensitive between the pad edge 
-  //and the boundary of the strip
-  const Int_t    knx    = fNpadX;          // number of pads along x
-  const Int_t    knz    = fNpadZ;          // number of pads along z
-  const Float_t  kspace = fSpace;            //cm distance from the front plate of the box
-
-  Float_t zSenStrip  = fZpad*fNpadZ;//cm
-  Float_t stripWidth = zSenStrip + 2*kdeadBound;
-
-  par[0] = xFLT*0.5;
-  par[1] = yPad*0.5; 
-  par[2] = stripWidth*0.5;
-  
-  // new description for strip volume -double stack strip-
-  // -- all constants are expressed in cm
-  // heigth of different layers
-  const Float_t khhony = 0.8     ;   // heigth of HONY  Layer
-  const Float_t khpcby = 0.08    ;   // heigth of PCB   Layer
-  const Float_t khmyly = 0.035   ;   // heigth of MYLAR Layer
-  const Float_t khgraphy = 0.02  ;   // heigth of GRAPHITE Layer
-  const Float_t khglasseiy = 0.135;   // 0.6 Ext. Glass + 1.1 i.e. (Int. Glass/2) (mm)
-  const Float_t khsensmy = 0.11  ;   // heigth of Sensitive Freon Mixture
-  const Float_t kwsensmz = 2*3.5 ;   // cm
-  const Float_t klsensmx = 48*2.5;   // cm
-  const Float_t kwpadz = 3.5;   // cm z dimension of the FPAD volume
-  const Float_t klpadx = 2.5;   // cm x dimension of the FPAD volume
-  
-  // heigth of the FSTR Volume (the strip volume)
-  const Float_t khstripy = 2*khhony+3*khpcby+4*(khmyly+khgraphy+khglasseiy)+2*khsensmy;
-  // width  of the FSTR Volume (the strip volume)
-  const Float_t kwstripz = 10.;
-  // length of the FSTR Volume (the strip volume)
-  const Float_t klstripx = 122.;
-  
-  Float_t parfp[3]={klstripx*0.5,khstripy*0.5,kwstripz*0.5};
-  // coordinates of the strip center in the strip reference frame; used for positioning
-  // internal strip volumes
-  Float_t posfp[3]={0.,0.,0.};   
-  
-  
-  // FSTR volume definition and filling this volume with non sensitive Gas Mixture
-  gMC->Gsvolu("FSTR","BOX",idtmed[512],parfp,3);
-  //-- HONY Layer definition
-  //  parfp[0] = -1;
-  parfp[1] = khhony*0.5;
-  //  parfp[2] = -1;
-  gMC->Gsvolu("FHON","BOX",idtmed[503],parfp,3);
-  // positioning 2 HONY Layers on FSTR volume
-  
-  posfp[1]=-khstripy*0.5+parfp[1];
-  gMC->Gspos("FHON",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FHON",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  //-- PCB Layer definition 
-  parfp[1] = khpcby*0.5;
-  gMC->Gsvolu("FPCB","BOX",idtmed[504],parfp,3);
-  // positioning 2 PCB Layers on FSTR volume
-  posfp[1]=-khstripy*0.5+khhony+parfp[1];
-  gMC->Gspos("FPCB",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FPCB",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // positioning the central PCB layer
-  gMC->Gspos("FPCB",3,"FSTR",0.,0.,0.,0,"ONLY");
-
-  //-- MYLAR Layer definition
-  parfp[1] = khmyly*0.5;
-  gMC->Gsvolu("FMYL","BOX",idtmed[511],parfp,3);
-  // positioning 2 MYLAR Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+parfp[1]; 
-  gMC->Gspos("FMYL",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 MYLAR Layers on FSTR volume
-  posfp[1] = khpcby*0.5+parfp[1];
-  gMC->Gspos("FMYL",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Graphite Layer definition
-  parfp[1] = khgraphy*0.5;
-  gMC->Gsvolu("FGRP","BOX",idtmed[502],parfp,3);
-  // positioning 2 Graphite Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+parfp[1];
-  gMC->Gspos("FGRP",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Graphite Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+parfp[1];
-  gMC->Gspos("FGRP",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Glass (EXT. +Semi INT.) Layer definition
-  parfp[1] = khglasseiy*0.5;
-  gMC->Gsvolu("FGLA","BOX",idtmed[514],parfp,3);
-  // positioning 2 Glass Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Glass Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Sensitive Mixture Layer definition
-  parfp[0] = klsensmx*0.5;
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwsensmz*0.5;
-  gMC->Gsvolu("FSEN","BOX",idtmed[513],parfp,3);
-  gMC->Gsvolu("FNSE","BOX",idtmed[512],parfp,3);
-  // positioning 2 gas Layers on FSTR volume
-  // the upper is insensitive freon
-  // while the remaining is sensitive
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+khglasseiy+parfp[1];
-  gMC->Gspos("FNSE",0,"FSTR", 0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FSEN",0,"FSTR", 0.,-posfp[1],0.,0,"ONLY");
-  
-  // dividing FSEN along z in knz=2 and along x in knx=48
-  gMC->Gsdvn("FSEZ","FSEN",knz,3);
-  gMC->Gsdvn("FSEX","FSEZ",knx,1);
-  
-  // FPAD volume definition
-  parfp[0] = klpadx*0.5;    
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwpadz*0.5;
-  gMC->Gsvolu("FPAD","BOX",idtmed[513],parfp,3);
-  // positioning the FPAD volumes on previous divisions
-  gMC->Gspos("FPAD",0,"FSEX",0.,0.,0.,0,"ONLY");
-  
-  ////  Positioning the Strips  (FSTR) in the FLT volumes  /////
-  
-  // Plate A (Central) 
-  
-  Float_t t = zFLTC+zFLTB+zFLTA*0.5+ 2*db;//Half Width of Barrel
-  
-  Float_t gap  = fGapA+1.; //cm  updated distance between the strip axis
-  // 1 cm is a special value exclusively for AliTOFv2FHoles geometry
-  Float_t zpos = 0;
-  Float_t ang  = 0;
-  Int_t j=1; // AdC
-  nrot  = 0;
-  zcoor = 0;
-  ycoor = -14.5 + kspace ; //2 cm over front plate
-  
-  AliMatrix (idrotm[0],  90.,  0.,90.,90.,0., 90.);   
-
-  Int_t centerLoc= (Int_t)(fNStripA/2.) + 1; // AdC
-
-  //gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY");
-  gMC->Gspos("FSTR",centerLoc,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); // AdC  
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-  }
-  
-  zcoor -= zSenStrip;
-  //j++; // AdC
-  Int_t upDown = -1; // upDown=-1 -> Upper strip
-                     // upDown=+1 -> Lower strip
-  do{
-    ang = atan(zcoor/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-    AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-    ang /= kRaddeg;
-    ycoor = -14.5+ kspace; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*gap;
-    //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-    //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-    gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-    gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    
-    j++; //j += 2; // AdC
-    upDown*= -1; // Alternate strips 
-    zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-  } while (zcoor-(stripWidth/2)*TMath::Cos(ang)>-t+zFLTC+zFLTB+db*2);
-  
-  zcoor = zcoor+(zSenStrip/2)/TMath::Cos(ang)+
-    upDown*gap*TMath::Tan(ang)+
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  gap = fGapB;
-  zcoor = zcoor-(zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  ang = atan(zcoor/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);   
-  AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-  ang /= kRaddeg;
-  
-  ycoor = -14.5+ kspace; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  
-  /* for FRAME v0
-     //gMC->Gspos("FSTR",j  ,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY");
-     //gMC->Gspos("FSTR",j+1,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY");
-     gMC->Gspos("FSTR",centerLoc-j,"FLTA",0.,ycoor, zcoor,idrotm[nrot],  "ONLY"); // AdC
-     gMC->Gspos("FSTR",centerLoc+j,"FLTA",0.,ycoor,-zcoor,idrotm[nrot+1],"ONLY"); // AdC
-     if(fDebug>=1) {   
-     printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-     printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-     }   
-  */
-  
-  ycoor = -hTof/2.+ kspace;//2 cm over front plate
-  
-  // Plate  B
-  
-  nrot = 0;
-  Int_t i=1; // AdC
-  upDown = 1;
-  Float_t deadRegion = 1.0;//cm
-  
-  zpos = zcoor - (zSenStrip/2)/TMath::Cos(ang)-
-    upDown*gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang)-
-    deadRegion/TMath::Cos(ang);
-  
-  ang = atan(zpos/radius);
-  ang *= kRaddeg;
-  AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-  ang /= kRaddeg;
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  ycoor += (1-(upDown+1)/2)*gap;
-  zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-  gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-  
-  if(fDebug>=1) {   
-    printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-    printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-  }   
-  
-  i++;
-  upDown*=-1;
-  
-  do {
-    zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)-
-      upDown*gap*TMath::Tan(ang)-
-      (zSenStrip/2)/TMath::Cos(ang);
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*gap;
-    zcoor = zpos+(zFLTA*0.5+zFLTB*0.5+db); // Moves to the system of the modulus FLTB
-    gMC->Gspos("FSTR",i, "FLTB", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    
-    upDown*=-1;
-    i++;
-  } while (TMath::Abs(ang*kRaddeg)<22.5);
-  //till we reach a tilting angle of 22.5 degrees
-  
-  ycoor = -hTof*0.5+ kspace ; //2 cm over front plate
-  zpos = zpos - zSenStrip/TMath::Cos(ang);
-  // this avoid overlaps in between outer strips in plate B
-  Float_t deltaMovingUp=0.8;    // [cm]
-  //Float_t deltaMovingDown=-0.0; // [cm] special value for AliTOFv2FHoles
-  
-  do {
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    zcoor = zpos+(zFLTB/2+zFLTA/2+db);
-    gMC->Gspos("FSTR",i, "FLTB", 0., ycoor+deltaMovingUp, zcoor,idrotm[nrot], "ONLY");
-    deltaMovingUp+=0.8; // update delta moving toward the end of the plate
-    zpos = zpos - zSenStrip/TMath::Cos(ang);
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.4 ",ClassName(),ang*kRaddeg,i);
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    i++;
-    
-  }  while (zpos-stripWidth*0.5/TMath::Cos(ang)>-t+zFLTC+db);
-  
-  // Plate  C
-  
-  zpos = zpos + zSenStrip/TMath::Cos(ang);
-  
-  zpos = zpos - (zSenStrip/2)/TMath::Cos(ang)+
-    gap*TMath::Tan(ang)-
-    (zSenStrip/2)/TMath::Cos(ang);
-  
-  nrot = 0;
-  i=0;
-  Float_t deltaGap=-2.5; // [cm] update distance from strip center and plate
-  ycoor= -hTof*0.5+kspace+gap+deltaGap;
-  
-  do {
-    i++;
-    ang = atan(zpos/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot], 90., 0., 90.-ang,90.,ang, 270.);
-    ang /= kRaddeg;
-    zcoor = zpos+(zFLTC*0.5+zFLTB+zFLTA*0.5+db*2);
-    if (i!=1)
-      gMC->Gspos("FSTR",i, "FLTC", 0., ycoor, zcoor,idrotm[nrot], "ONLY");
-    if(fDebug>=1) {
-      printf("%s: %f,  St. %2i, Pl.5 ",ClassName(),ang*kRaddeg,i);
-      printf("%s: y = %f,  z = %f, zpos = %f \n",ClassName(),ycoor,zcoor,zpos);
-    }
-    
-    zpos = zpos - zSenStrip/TMath::Cos(ang);
-  }  while (zpos-stripWidth*TMath::Cos(ang)*0.5>-t);
-  
-  
-  ////////// Layers after strips /////////////////
-  // Al Layer thickness (2.3mm) factor 0.7
-  
-  Float_t overSpace = fOverSpc;//cm
-  
-  par[0] = xFLT*0.5;
-  par[1] = 0.115*0.7; // factor 0.7
-  par[2] = (zFLTA *0.5);
-  ycoor = -yFLT/2 + overSpace + par[1];
-  gMC->Gsvolu("FPEA", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FPEB", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FPEC", "BOX ", idtmed[508], par, 3); // Al
-  gMC->Gspos ("FPEC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-
-  // plexiglass thickness: 1.5 mm ; factor 0.3
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = 0.075*0.3; // factor 0.3 
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FECA", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FECB", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FECC", "BOX ", idtmed[505], par, 3); // Plexigl.
-  gMC->Gspos ("FECC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  
-  // frame of Air
-  ycoor += par[1];
-  par[0] = xFLT*0.5;
-  par[1] = (yFLT/2-ycoor-khAlWall)*0.5; // Aluminum layer considered (0.18 cm)
-  par[2] = (zFLTA *0.5);
-  ycoor += par[1];
-  gMC->Gsvolu("FAIA", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIA", 0, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FAIB", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIB", 0, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FAIC", "BOX ", idtmed[500], par, 3); // Air
-  gMC->Gspos ("FAIC", 0, "FLTC", 0., ycoor, 0., 0, "ONLY");
-
-  
-  // start with cards and cooling tubes
-  // finally, cards, cooling tubes and layer for thermal dispersion
-  // 3 volumes
-  // card volume definition
-  
-  // see GEOM200 in GEANT manual
-  AliMatrix(idrotm[98], 90., 0., 90., 90., 0., 0.); // 0 deg
-  
-  Float_t cardpar[3];
-  cardpar[0]= 61.;
-  cardpar[1]= 5.;
-  cardpar[2]= 0.1;
-  gMC->Gsvolu("FCAR", "BOX ", idtmed[504], cardpar, 3); // PCB Card 
-  //alu plate volume definition
-  cardpar[1]= 3.5;
-  cardpar[2]= 0.05;
-  gMC->Gsvolu("FALP", "BOX ", idtmed[508], cardpar, 3); // Alu Plate
-  
-  
-  // central module positioning (FAIA)
-  Float_t cardpos[3], aplpos2, stepforcardA=6.89;
-  cardpos[0]= 0.;
-  cardpos[1]= -0.5;
-  cardpos[2]= -62.;
-  Float_t aplpos1 = -2.;
-  Int_t icard;
-  for (icard=0; icard<17; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardA;
-    aplpos2 = cardpos[2]+0.15;
-    gMC->Gspos("FCAR",icard,"FAIA",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIA",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY");
-    
-  }
-  
-  
-  // intermediate module positioning (FAIB)
-  Float_t stepforcardB= 7.05;
-  cardpos[2]= -70.5;
-  for (icard=0; icard<19; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardB;
-    aplpos2 = cardpos[2]+0.15;  
-    gMC->Gspos("FCAR",icard,"FAIB",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIB",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY"); 
-  }
-  
-  
-  // outer module positioning (FAIC)
-  Float_t stepforcardC= 8.45238;
-  cardpos[2]= -79.75;
-  for (icard=0; icard<17; ++icard) {
-    cardpos[2]= cardpos[2]+stepforcardC;
-    aplpos2 = cardpos[2]+0.15;
-    gMC->Gspos("FCAR",icard,"FAIC",cardpos[0],cardpos[1],cardpos[2],idrotm[98],"ONLY"); 
-    gMC->Gspos("FALP",icard,"FAIC",cardpos[0],aplpos1,aplpos2,idrotm[98],"ONLY");
-  }
-  
-  // tube volume definition
-  Float_t tubepar[3];
-  tubepar[0]= 0.;
-  tubepar[1]= 0.4;
-  tubepar[2]= 61.;
-  gMC->Gsvolu("FTUB", "TUBE", idtmed[516], tubepar, 3); // cooling tubes (steel)
-  tubepar[0]= 0.;
-  tubepar[1]= 0.35;
-  tubepar[2]= 61.;
-  gMC->Gsvolu("FITU", "TUBE", idtmed[515], tubepar, 3); // cooling water
-  // positioning water tube into the steel one
-  gMC->Gspos("FITU",1,"FTUB",0.,0.,0.,0,"ONLY");
-  
-  
-  // rotation matrix
-  AliMatrix(idrotm[99], 180., 90., 90., 90., 90., 0.);
-  // central module positioning (FAIA)
-  Float_t tubepos[3], tdis=0.6;
-  tubepos[0]= 0.;
-  tubepos[1]= cardpos[1];
-  tubepos[2]= -62.+tdis;
-  //  tub1pos = 5.;
-  Int_t itub;
-  for (itub=0; itub<17; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardA;
-    gMC->Gspos("FTUB",itub,"FAIA",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-  
-  // intermediate module positioning (FAIB)
-  tubepos[2]= -70.5+tdis;
-  for (itub=0; itub<19; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardB;
-    gMC->Gspos("FTUB",itub,"FAIB",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-  
-  // outer module positioning (FAIC)
-  tubepos[2]= -79.75+tdis;
-  for (itub=0; itub<17; ++itub) {
-    tubepos[2]= tubepos[2]+stepforcardC;
-    gMC->Gspos("FTUB",itub,"FAIC",tubepos[0],tubepos[1],tubepos[2],idrotm[99],
-              "ONLY");
-  }
-
-}
-
-//_____________________________________________________________________________
-void AliTOFv2FHoles::DrawModule() const
-{
-  //
-  // Draw a shaded view of the Time Of Flight version 2
-  //
-  // Set everything unseen
-  gMC->Gsatt("*", "seen", -1);
-  // 
-  // Set ALIC mother transparent
-  gMC->Gsatt("ALIC","SEEN",0);
-  //
-  // Set the volumes visible
-  gMC->Gsatt("ALIC","SEEN",0);
-
-  gMC->Gsatt("FTOA","SEEN",1);
-  gMC->Gsatt("FTOB","SEEN",1);
-  gMC->Gsatt("FTOC","SEEN",1);
-  gMC->Gsatt("FLTA","SEEN",1);
-  gMC->Gsatt("FLTB","SEEN",1);
-  gMC->Gsatt("FLTC","SEEN",1);
-  gMC->Gsatt("FPLA","SEEN",1);
-  gMC->Gsatt("FPLB","SEEN",1);
-  gMC->Gsatt("FPLC","SEEN",1);
-  gMC->Gsatt("FSTR","SEEN",1);
-  gMC->Gsatt("FPEA","SEEN",1);
-  gMC->Gsatt("FPEB","SEEN",1);
-  gMC->Gsatt("FPEC","SEEN",1);
-  
-  gMC->Gsatt("FLZ1","SEEN",0);
-  gMC->Gsatt("FLZ2","SEEN",0);
-  gMC->Gsatt("FLZ3","SEEN",0);
-  gMC->Gsatt("FLX1","SEEN",0);
-  gMC->Gsatt("FLX2","SEEN",0);
-  gMC->Gsatt("FLX3","SEEN",0);
-  gMC->Gsatt("FPAD","SEEN",0);
-
-  gMC->Gdopt("hide", "on");
-  gMC->Gdopt("shad", "on");
-  gMC->Gsatt("*", "fill", 7);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 40, 30, 0, 12, 9.5, .02, .02);
-  gMC->Gdhead(1111, "Time Of Flight");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-//_____________________________________________________________________________
-void AliTOFv2FHoles::DrawDetectorModules()
-{
-//
-// Draw a shaded view of the TOF detector version 2
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible
-// 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level                
-
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",-2);
-  gMC->Gsatt("FTOB","seen",-2);
-  gMC->Gsatt("FTOA","seen",-2);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF detector V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}                                 
-
-//_____________________________________________________________________________
-void AliTOFv2FHoles::DrawDetectorStrips()
-{
-//
-// Draw a shaded view of the TOF strips for version 2
-//
-//Set ALIC mother transparent
- gMC->Gsatt("ALIC","SEEN",0);
-
-//
-//Set volumes visible 
-//=====> Level 1
-  // Level 1 for TOF volumes
-  gMC->Gsatt("B077","seen",0);
-  
-//==========> Level 2
-  // Level 2
-  gMC->Gsatt("B076","seen",-1); // all B076 sub-levels skipped -
-  gMC->Gsatt("B071","seen",0);
-  gMC->Gsatt("B074","seen",0);
-  gMC->Gsatt("B075","seen",0);
-  gMC->Gsatt("B080","seen",0); // B080 does not has sub-level
-
-  // Level 2 of B071
-  gMC->Gsatt("B063","seen",-1); // all B063 sub-levels skipped   -
-  gMC->Gsatt("B065","seen",-1); // all B065 sub-levels skipped   -
-  gMC->Gsatt("B067","seen",-1); // all B067 sub-levels skipped   -
-  gMC->Gsatt("B069","seen",-1); // all B069 sub-levels skipped   -
-  gMC->Gsatt("B056","seen",0);  // B056 does not has sub-levels  -
-  gMC->Gsatt("B059","seen",-1); // all B059 sub-levels skipped   -
-  gMC->Gsatt("B072","seen",-1); // all B072 sub-levels skipped   -
-  gMC->Gsatt("BTR1","seen",0);  // BTR1 do not have sub-levels   -
-  gMC->Gsatt("BTO1","seen",0);
-
-// ==================> Level 3
-  // Level 3 of B071 / Level 2 of BTO1
-  gMC->Gsatt("FTOC","seen",0);
-  gMC->Gsatt("FTOB","seen",0);
-  gMC->Gsatt("FTOA","seen",0);
-  // Level 3 of B074 / Level 2 of BTO2
-  // -> cfr previous settings
-  // Level 3 of B075 / Level 2 of BTO3
-  // -> cfr previous settings
-
-
-// ==========================> Level 4
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOC
-  gMC->Gsatt("FLTC","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOB
-  gMC->Gsatt("FLTB","seen",0);
-  // Level 4 of B071 / Level 3 of BTO1 / Level 2 of FTOA
-  gMC->Gsatt("FLTA","seen",0);
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOC
-  // -> cfr previous settings
-  // Level 4 of B074 / Level 3 of BTO2 / Level 2 of FTOB
-  // -> cfr previous settings
-  // Level 4 of B075 / Level 3 of BTO3 / Level 2 of FTOC
-  // -> cfr previous settings
-
-//======================================> Level 5
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOC / Level 2 of FLTC
-  gMC->Gsatt("FALC","seen",0); // no children for FALC
-  gMC->Gsatt("FSTR","seen",-2);
-  gMC->Gsatt("FPEC","seen",0); // no children for FPEC
-  gMC->Gsatt("FECC","seen",0); // no children for FECC
-  gMC->Gsatt("FWAC","seen",0); // no children for FWAC
-  gMC->Gsatt("FAIC","seen",0); // no children for FAIC
-
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOB / Level 2 of FLTB
-  gMC->Gsatt("FALB","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-
-
-  // -> cfr previous settings
-  gMC->Gsatt("FPEB","seen",0); // no children for FPEB
-  gMC->Gsatt("FECB","seen",0); // no children for FECB
-  gMC->Gsatt("FWAB","seen",0); // no children for FWAB
-  gMC->Gsatt("FAIB","seen",0); // no children for FAIB
-  // Level 5 of B071 / Level 4 of BTO1 / Level 3 of FTOA / Level 2 of FLTA
-  gMC->Gsatt("FALA","seen",0); // no children for FALB
-//-->  gMC->Gsatt("FSTR","seen",-2);
-  // -> cfr previous settings
-  gMC->Gsatt("FPEA","seen",0); // no children for FPEA
-  gMC->Gsatt("FECA","seen",0); // no children for FECA
-  gMC->Gsatt("FWAA","seen",0); // no children for FWAA
-  gMC->Gsatt("FAIA","seen",0); // no children for FAIA
-
-  // Level 2 of B074
-  gMC->Gsatt("BTR2","seen",0); // BTR2 does not has sub-levels -
-  gMC->Gsatt("BTO2","seen",0);
-
-  // Level 2 of B075
-  gMC->Gsatt("BTR3","seen",0); // BTR3 do not have sub-levels -
-  gMC->Gsatt("BTO3","seen",0);
-
-// for others Level 5, cfr. previous settings
-
-  gMC->Gdopt("hide","on");
-  gMC->Gdopt("shad","on");
-  gMC->Gsatt("*", "fill", 5);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 1000, 0, 1000, 0, 1000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 45, 40, 0, 10, 10, .015, .015);
-  gMC->Gdhead(1111,"TOF Strips V1");
-  gMC->Gdman(18, 4, "MAN");
-  gMC->Gdopt("hide","off");
-}
-
-//_____________________________________________________________________________
-void AliTOFv2FHoles::CreateMaterials()
-{
-  //
-  // Define materials for the Time Of Flight
-  //
-  AliTOF::CreateMaterials();
-}
-//_____________________________________________________________________________
-void AliTOFv2FHoles::Init()
-{
-  //
-  // Initialise the detector after the geometry has been defined
-  //
-  if(fDebug) {   
-    printf("%s: **************************************"
-           "  TOF  "
-           "**************************************\n",ClassName());
-    printf("\n%s:   Version 2 of TOF initialing, "
-           "TOF with holes for PHOS and HMPID \n",ClassName());
-  }  
-
-  AliTOF::Init();
-
-  fIdFTOA = gMC->VolId("FTOA");
-  fIdFTOB = gMC->VolId("FTOB");
-  fIdFTOC = gMC->VolId("FTOC");
-  fIdFLTA = gMC->VolId("FLTA");
-  fIdFLTB = gMC->VolId("FLTB");
-  fIdFLTC = gMC->VolId("FLTC");
-
-  if(fDebug) {
-    printf("%s: **************************************"
-           "  TOF  "
-           "**************************************\n",ClassName());
-  }
-}
-//_____________________________________________________________________________
-void AliTOFv2FHoles::StepManager()
-{
-  //
-  // Procedure called at each step in the Time Of Flight
-  //
-  TLorentzVector mom, pos;
-  Float_t xm[3],pm[3],xpad[3],ppad[3];
-  Float_t hits[13],phi,phid,z;
-  Int_t   vol[5];
-  Int_t   sector, plate, padx, padz, strip;
-  Int_t   copy, padzid, padxid, stripid, i;
-  Int_t   *idtmed = fIdtmed->GetArray()-499;
-  Float_t incidenceAngle;
-  
-  if(gMC->CurrentMedium()==idtmed[513] && 
-     gMC->IsTrackEntering() && gMC->TrackCharge()
-     && gMC->CurrentVolID(copy)==fIdSens) 
-  {    
-    // getting information about hit volumes
-    
-    padzid=gMC->CurrentVolOffID(2,copy);
-    padz=copy;  
-    
-    padxid=gMC->CurrentVolOffID(1,copy);
-    padx=copy;  
-    
-    stripid=gMC->CurrentVolOffID(4,copy);
-    strip=copy;  
-
-    gMC->TrackPosition(pos);
-    gMC->TrackMomentum(mom);
-
-//    Double_t NormPos=1./pos.Rho();
-    Double_t normMom=1./mom.Rho();
-
-//  getting the cohordinates in pad ref system
-    xm[0] = (Float_t)pos.X();
-    xm[1] = (Float_t)pos.Y();
-    xm[2] = (Float_t)pos.Z();
-
-    pm[0] = (Float_t)mom.X()*normMom;
-    pm[1] = (Float_t)mom.Y()*normMom;
-    pm[2] = (Float_t)mom.Z()*normMom;
-    gMC->Gmtod(xm,xpad,1);
-    gMC->Gmtod(pm,ppad,2);
-
-    incidenceAngle = TMath::ACos(ppad[1])*kRaddeg;
-
-    z = pos[2];
-
-    plate = 0;   
-
-    /* to be changed
-    if (TMath::Abs(z) <=  fZlenA*0.5)  plate = 3;
-    if (z < (fZlenA*0.5+fZlenB) && 
-        z >  fZlenA*0.5)               plate = 4;
-    if (z >-(fZlenA*0.5+fZlenB) &&
-        z < -fZlenA*0.5)               plate = 2;
-    if (z > (fZlenA*0.5+fZlenB))       plate = 5;
-    if (z <-(fZlenA*0.5+fZlenB))       plate = 1;
-    end to be changed */
-
-    if (TMath::Abs(z) <=  124.*0.5)  plate = 2; //3; // AdC
-    if (z < (124.*0.5+154.) && 
-        z >  124.*0.5)               plate = 1; //4; // AdC
-    if (z >-(124.*0.5+154.) &&
-        z < -124.*0.5)               plate = 3; //2; // AdC
-    if (z > (124.*0.5+154.))         plate = 0; //5; // AdC
-    if (z <-(124.*0.5+154.))         plate = 4; //1; // AdC
-
-    if (plate==0) strip=AliTOFConstants::fgkNStripC-strip; // AdC
-    else if (plate==1) strip=AliTOFConstants::fgkNStripB-strip; // AdC
-    else strip--; // AdC
-
-    if (z<=0.) padx=AliTOFConstants::fgkNpadX-padx; // AdC
-    else padx--; // AdC
-
-    if (plate==3 || plate==4) padz=AliTOFConstants::fgkNpadZ-padz; // AdC
-    else padz--; // AdC
-
-    phi = pos.Phi();
-    if (phi>=0.) phid = phi*kRaddeg; //+180.; // AdC
-    else phid = phi*kRaddeg + 360.; // AdC
-    sector = Int_t (phid/20.);
-    //sector++; // AdC
-
-    for(i=0;i<3;++i) {
-      hits[i]   = pos[i];
-      hits[i+3] = pm[i];
-    }
-
-    hits[6] = mom.Rho();
-    hits[7] = pos[3];
-    hits[8] = xpad[0];
-    hits[9] = xpad[1];
-    hits[10]= xpad[2];
-    hits[11]= incidenceAngle;
-    hits[12]= gMC->Edep();
-    
-    vol[0]= sector;
-    vol[1]= plate;
-    vol[2]= strip;
-    vol[3]= padx;
-    vol[4]= padz;
-    
-    AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(),vol, hits);
-  }
-}
diff --git a/TOF/AliTOFv2FHoles.h b/TOF/AliTOFv2FHoles.h
deleted file mode 100644 (file)
index a746182..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-//_________________________________________________________________________
-// Implementation version v2 of TOF Manager class
-// HOLES FOR PHOS AND HMPID (RICH) DETECTOR
-// NOT Official code!
-// Requested by Andreas Morsch in order v2 TOF version
-// is compliant with Frame v0 (Frame with holes)  
-//*-- 
-//*-- Authors: Pierella, Seganti, Vicinanza (Bologna and Salerno University)
-
-#ifndef ALITOFv2FHoles_H
-#define ALITOFv2FHoles_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
-
-#include "AliTOF.h"
-class AliTOFv2FHoles : public AliTOF {
-public:
-  AliTOFv2FHoles();
-  AliTOFv2FHoles(const char *name, const char *title);
-  virtual ~AliTOFv2FHoles() {}
-  virtual void   CreateGeometry();
-  virtual void   CreateMaterials();
-  virtual void   Init();
-  virtual Int_t  IsVersion() const {return 2;}
-  virtual void   TOFpc(Float_t xtof,Float_t ytof,Float_t zlenC,Float_t zlenB,
-                       Float_t zlenA,Float_t ztof0);
-  virtual void   StepManager();
-  virtual void   DrawModule() const;
-  virtual void   DrawDetectorModules();
-  virtual void   DrawDetectorStrips();
-//  virtual void   DrawDetectorModulesinFrame();
-//  virtual void   DrawDetectorStripsinFrame();
-
-private:
-  Int_t fIdFTOA; // FTOA volume identifier (outer plate A)
-  Int_t fIdFTOB; // FTOB volume identifier (outer plate B)
-  Int_t fIdFTOC; // FTOC volume identifier (outer plate C)
-  Int_t fIdFLTA; // FLTA volume identifier (inner plate A)
-  Int_t fIdFLTB; // FLTB volume identifier (inner plate B)
-  Int_t fIdFLTC; // FLTC volume identifier (inner plate C)
-  
-   ClassDef(AliTOFv2FHoles,1)  //Time Of Flight version 2
-};
-#endif /* ALITOFv2FHoles_H  */
diff --git a/TOF/AliTOFv3.cxx b/TOF/AliTOFv3.cxx
deleted file mode 100644 (file)
index 87c3cd2..0000000
+++ /dev/null
@@ -1,1050 +0,0 @@
-/**************************************************************************
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                        *
- * Author: The ALICE Off-line Project.                                    *
- * Contributors are mentioned in the code where appropriate.              *
- *                                                                        *
- * Permission to use, copy, modify and distribute this software and its   *
- * documentation strictly for non-commercial purposes is hereby granted   *
- * without fee, provided that the above copyright notice appears in all   *
- * copies and that both the copyright notice and this permission notice   *
- * appear in the supporting documentation. The authors make no claims     *
- * about the suitability of this software for any purpose. It is          *
- * provided "as is" without express or implied warranty.                  *
- **************************************************************************/
-
-/* $Id$ */
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  This class contains the functions for version 3 of the Time Of Flight    //
-//  detector.                                                                //
-//                                                                           //
-//  VERSION WITH 5 MODULES AND TILTED STRIPS                                 //
-//  HITS DEFINED FOR THIS VERSION                                            //
-//  HOLES FOR HMPID DETECTOR                                                  //
-//                                                                           //
-//   Authors:                                                                //
-//                                                                           //
-//   Alessio Seganti                                                         //
-//   Domenico Vicinanza                                                      //
-//                                                                           //
-//   University of Salerno - Italy                                           //
-//                                                                           //
-//   Fabrizio Pierella                                                       //
-//   University of Bologna - Italy                                           //
-//                                                                           //
-//                                                                           //
-//Begin_Html                                                                 //
-/*                                                                           //
-<img src="picts/AliTOFv3Class.gif">                                          //
-*/                                                                           //
-//End_Html                                                                   //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-#include <Riostream.h>
-#include <stdlib.h>
-
-#include <TLorentzVector.h>
-#include <TObject.h>
-#include <TVirtualMC.h>
-
-#include "AliConst.h"
-#include "AliRun.h"
-#include "AliTOFv3.h"
-#include "AliTOFConstants.h" // AdC
-#include "AliMC.h"
-ClassImp(AliTOFv3)
-//_____________________________________________________________________________
-AliTOFv3::AliTOFv3()
-{
-  //
-  // Default constructor
-  //
-}
-//_____________________________________________________________________________
-AliTOFv3::AliTOFv3(const char *name, const char *title)
-        : AliTOF(name,title)
-{
-  //
-  // Standard constructor
-  //
-  //
-  // Check that FRAME is there otherwise we have no place where to
-  // put TOF
-  AliModule* frame=gAlice->GetModule("FRAME");
-  if(!frame) {
-    Error("Ctor","TOF needs FRAME to be present\n");
-    exit(1);
-  } else
-    if(frame->IsVersion()!=1) {
-      Error("Ctor","FRAME version 1 needed with this version of TOF\n");
-      exit(1);
-    }
-
-}
-//_____________________________________________________________________________
-void AliTOFv3::CreateGeometry()
-{
-  //
-  // Create geometry for Time Of Flight version 0
-  //
-  //Begin_Html
-  /*
-    <img src="picts/AliTOFv3.gif">
-  */
-  //End_Html
-  //
-  // Creates common geometry
-  //
-  AliTOF::CreateGeometry();
-}
-//_____________________________________________________________________________
-void AliTOFv3::TOFpc(Float_t xtof, Float_t ytof, Float_t zlenC,
-                    Float_t zlenB, Float_t zlenA, Float_t ztof0)
-{
-  //
-  // Definition of the Time Of Fligh Resistive Plate Chambers
-  // xFLT, yFLT, zFLT - sizes of TOF modules (large)
-  
-  Float_t  ycoor, zcoor;
-  Float_t  par[3];
-  Int_t    *idtmed = fIdtmed->GetArray()-499;
-  Int_t    idrotm[100];
-  Int_t    nrot = 0;
-  Float_t  hTof = fRmax-fRmin;
-  
-  Float_t radius = fRmin+2.;//cm
-  
-  par[0] =  xtof * 0.5;
-  par[1] =  ytof * 0.5;
-  par[2] = zlenC * 0.5;
-  gMC->Gsvolu("FTOC", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenB * 0.5;
-  gMC->Gsvolu("FTOB", "BOX ", idtmed[506], par, 3);
-  par[2] = zlenA * 0.5;
-  gMC->Gsvolu("FTOA", "BOX ", idtmed[506], par, 3);
-  
-  
-  // Positioning of modules
-  
-  Float_t zcor1 = ztof0 - zlenC*0.5;
-  Float_t zcor2 = ztof0 - zlenC - zlenB*0.5;
-  Float_t zcor3 = 0.;
-  
-  AliMatrix(idrotm[0], 90.,  0., 0., 0., 90,-90.);
-  AliMatrix(idrotm[1], 90.,180., 0., 0., 90, 90.);
-  gMC->Gspos("FTOC", 1, "BTO1", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO1", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO2", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO2", 0, -zcor1, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOC", 1, "BTO3", 0,  zcor1, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOC", 2, "BTO3", 0, -zcor1, 0, idrotm[1], "ONLY");
-  
-  gMC->Gspos("FTOB", 1, "BTO1", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO1", 0, -zcor2, 0, idrotm[1], "ONLY");
-  gMC->Gspos("FTOB", 1, "BTO2", 0,  zcor2, 0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOB", 2, "BTO2", 0, -zcor2, 0, idrotm[1], "ONLY");
-  
-  gMC->Gspos("FTOA", 0, "BTO1", 0, zcor3,  0, idrotm[0], "ONLY");
-  gMC->Gspos("FTOA", 0, "BTO2", 0, zcor3,  0, idrotm[0], "ONLY");
-  
-  Float_t db = 0.5;//cm
-  Float_t xFLT, xFST, yFLT, zFLTA, zFLTB, zFLTC;
-  
-  xFLT = fStripLn;
-  yFLT = ytof;
-  zFLTA = zlenA;
-  zFLTB = zlenB;
-  zFLTC = zlenC;
-  
-  xFST = xFLT-fDeadBndX*2;//cm
-  
-  // Sizes of MRPC pads
-  
-  Float_t yPad = 0.505;//cm 
-  
-  // Large not sensitive volumes with Insensitive Freon
-  par[0] = xFLT*0.5;
-  par[1] = yFLT*0.5;
-  
-  if (fDebug) cout << ClassName() <<
-               cout <<": ************************* TOF geometry **************************"<<endl;
-  
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FLTA", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTA", 0, "FTOA", 0., 0., 0., 0, "ONLY");
-  
-  par[2] = (zFLTB * 0.5);
-  gMC->Gsvolu("FLTB", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTB", 0, "FTOB", 0., 0., 0., 0, "ONLY");
-  
-  par[2] = (zFLTC * 0.5);
-  gMC->Gsvolu("FLTC", "BOX ", idtmed[512], par, 3); // Insensitive Freon
-  gMC->Gspos ("FLTC", 0, "FTOC", 0., 0., 0., 0, "ONLY");
-
-  ///// Layers of Aluminum before and after detector /////
-  ///// Aluminum Box for Modules (1.8 mm thickness)  /////
-  ///// lateral walls not simulated for the time being
-  //const Float_t khAlWall = 0.18;
-  // fp to be checked
-  const Float_t khAlWall = 0.11;
-  par[0] = xFLT*0.5;
-  par[1] = khAlWall/2.;//cm
-  ycoor = -yFLT/2 + par[1];
-  par[2] = (zFLTA *0.5);
-  gMC->Gsvolu("FALA", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALA", 1, "FLTA", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALA", 2, "FLTA", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTB *0.5);
-  gMC->Gsvolu("FALB", "BOX ", idtmed[508], par, 3); // Alluminium 
-  gMC->Gspos ("FALB", 1, "FLTB", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALB", 2, "FLTB", 0.,-ycoor, 0., 0, "ONLY");
-  par[2] = (zFLTC *0.5);
-  gMC->Gsvolu("FALC", "BOX ", idtmed[508], par, 3); // Alluminium
-  gMC->Gspos ("FALC", 1, "FLTC", 0., ycoor, 0., 0, "ONLY");
-  gMC->Gspos ("FALC", 2, "FLTC", 0.,-ycoor, 0., 0, "ONLY");
-  
-  ///////////////// Detector itself //////////////////////
-  
-  const Float_t  kdeadBound  =  fDeadBndZ; //cm non-sensitive between the pad edge 
-  //and the boundary of the strip
-  const Int_t    knx    = fNpadX;          // number of pads along x
-  const Int_t    knz    = fNpadZ;          // number of pads along z
-  const Float_t  kspace = fSpace;            //cm distance from the front plate of the box
-  
-  Float_t zSenStrip  = fZpad*fNpadZ;//cm
-  Float_t stripWidth = zSenStrip + 2*kdeadBound;
-  
-  par[0] = xFLT*0.5;
-  par[1] = yPad*0.5;
-  par[2] = stripWidth*0.5;
-  
-  // new description for strip volume -double stack strip-
-  // -- all constants are expressed in cm
-  // heigth of different layers
-  const Float_t khhony = 0.8     ;   // heigth of HONY  Layer
-  const Float_t khpcby = 0.08    ;   // heigth of PCB   Layer
-  const Float_t khmyly = 0.035   ;   // heigth of MYLAR Layer
-  const Float_t khgraphy = 0.02  ;   // heigth of GRAPHITE Layer
-  const Float_t khglasseiy = 0.135;   // 0.6 Ext. Glass + 1.1 i.e. (Int. Glass/2) (mm)
-  const Float_t khsensmy = 0.11  ;   // heigth of Sensitive Freon Mixture
-  const Float_t kwsensmz = 2*3.5 ;   // cm
-  const Float_t klsensmx = 48*2.5;   // cm
-  const Float_t kwpadz = 3.5;   // cm z dimension of the FPAD volume
-  const Float_t klpadx = 2.5;   // cm x dimension of the FPAD volume
-  
-  // heigth of the FSTR Volume (the strip volume)
-  const Float_t khstripy = 2*khhony+3*khpcby+4*(khmyly+khgraphy+khglasseiy)+2*khsensmy;
-  // width  of the FSTR Volume (the strip volume)
-  const Float_t kwstripz = 10.;
-  // length of the FSTR Volume (the strip volume)
-  const Float_t klstripx = 122.;
-  
-  Float_t parfp[3]={klstripx*0.5,khstripy*0.5,kwstripz*0.5};
-  // coordinates of the strip center in the strip reference frame; used for positioning
-  // internal strip volumes
-  Float_t posfp[3]={0.,0.,0.};  
-  
-  
-  // FSTR volume definition and filling this volume with non sensitive Gas Mixture
-  gMC->Gsvolu("FSTR","BOX",idtmed[512],parfp,3);
-  //-- HONY Layer definition
-  //  parfp[0] = -1;
-  parfp[1] = khhony*0.5;
-  //  parfp[2] = -1;
-  gMC->Gsvolu("FHON","BOX",idtmed[503],parfp,3);
-  // positioning 2 HONY Layers on FSTR volume
-  
-  posfp[1]=-khstripy*0.5+parfp[1];
-  gMC->Gspos("FHON",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FHON",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  //-- PCB Layer definition 
-  parfp[1] = khpcby*0.5;
-  gMC->Gsvolu("FPCB","BOX",idtmed[504],parfp,3);
-  // positioning 2 PCB Layers on FSTR volume
-  posfp[1]=-khstripy*0.5+khhony+parfp[1];
-  gMC->Gspos("FPCB",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FPCB",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // positioning the central PCB layer
-  gMC->Gspos("FPCB",3,"FSTR",0.,0.,0.,0,"ONLY");
-  
-  
-  
-  //-- MYLAR Layer definition
-  parfp[1] = khmyly*0.5;
-  gMC->Gsvolu("FMYL","BOX",idtmed[511],parfp,3);
-  // positioning 2 MYLAR Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+parfp[1];
-  gMC->Gspos("FMYL",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 MYLAR Layers on FSTR volume
-  posfp[1] = khpcby*0.5+parfp[1];
-  gMC->Gspos("FMYL",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FMYL",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Graphite Layer definition
-  parfp[1] = khgraphy*0.5;
-  gMC->Gsvolu("FGRP","BOX",idtmed[502],parfp,3);
-  // positioning 2 Graphite Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+parfp[1];
-  gMC->Gspos("FGRP",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Graphite Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+parfp[1];
-  gMC->Gspos("FGRP",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGRP",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Glass (EXT. +Semi INT.) Layer definition
-  parfp[1] = khglasseiy*0.5;
-  gMC->Gsvolu("FGLA","BOX",idtmed[514],parfp,3);
-  // positioning 2 Glass Layers on FSTR volume
-  posfp[1] = -khstripy*0.5+khhony+khpcby+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",1,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",2,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  // adding further 2 Glass Layers on FSTR volume
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+parfp[1];
-  gMC->Gspos("FGLA",3,"FSTR",0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FGLA",4,"FSTR",0.,-posfp[1],0.,0,"ONLY");
-  
-  
-  //-- Sensitive Mixture Layer definition
-  parfp[0] = klsensmx*0.5;
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwsensmz*0.5;
-  gMC->Gsvolu("FSEN","BOX",idtmed[513],parfp,3);
-  gMC->Gsvolu("FNSE","BOX",idtmed[512],parfp,3);
-  // positioning 2 gas Layers on FSTR volume
-  // the upper is insensitive freon
-  // while the remaining is sensitive
-  posfp[1] = khpcby*0.5+khmyly+khgraphy+khglasseiy+parfp[1];
-  gMC->Gspos("FNSE",0,"FSTR", 0., posfp[1],0.,0,"ONLY");
-  gMC->Gspos("FSEN",0,"FSTR", 0.,-posfp[1],0.,0,"ONLY");
-  
-  // dividing FSEN along z in knz=2 and along x in knx=48
-  gMC->Gsdvn("FSEZ","FSEN",knz,3);
-  gMC->Gsdvn("FSEX","FSEZ",knx,1);
-  
-  // FPAD volume definition
-  parfp[0] = klpadx*0.5;   
-  parfp[1] = khsensmy*0.5;
-  parfp[2] = kwpadz*0.5;
-  gMC->Gsvolu("FPAD","BOX",idtmed[513],parfp,3);
-  // positioning the FPAD volumes on previous divisions
-  gMC->Gspos("FPAD",0,"FSEX",0.,0.,0.,0,"ONLY");
-  
-  ////  Positioning the Strips  (FSTR) in the FLT volumes  /////
-  
-  // Plate A (Central) 
-  
-  Float_t t = zFLTC+zFLTB+zFLTA*0.5+ 2*db;//Half Width of Barrel
-  
-  Float_t gap  = fGapA+0.5; //cm  updated distance between the strip axis
-  Float_t zpos = 0;
-  Float_t ang  = 0;
-  Int_t j=1; // AdC
-  nrot  = 0;
-  zcoor = 0;
-  ycoor = -14.5 + kspace ; //2 cm over front plate
-
-  AliMatrix (idrotm[0],  90.,  0.,90.,90.,0., 90.);  
-
-  Int_t centerLoc= (Int_t)(fNStripA/2.) + 1; // AdC
-
-  //gMC->Gspos("FSTR",j,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY");
-  gMC->Gspos("FSTR",centerLoc,"FLTA",0.,ycoor, 0.,idrotm[0],"ONLY"); // AdC
-  if(fDebug>=1) {
-    printf("%s: %f,  St. %2i, Pl.3 ",ClassName(),ang*kRaddeg,j); // AdC
-    printf("y = %f,  z = %f, zpos = %f \n",ycoor,zcoor,zpos);
-  }
-  zcoor -= zSenStrip;
-  //j++; // AdC
-  Int_t upDown = -1; // upDown=-1 -> Upper strip
-                     // upDown=+1 -> Lower strip
-  do{
-    ang = atan(zcoor/radius);
-    ang *= kRaddeg;
-    AliMatrix (idrotm[nrot],  90.,  0.,90.-ang,90.,-ang, 90.);  
-    AliMatrix (idrotm[nrot+1],90.,180.,90.+ang,90., ang, 90.);
-    ang /= kRaddeg;
-    ycoor = -14.5+ kspace; //2 cm over front plate
-    ycoor += (1-(upDown+1)/2)*gap;
-    //gMC->Gspos("FSTR",j  ,"FLTA",0