ROOT logo
/**************************************************************************
 * 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 <TMath.h>
#include <TGeoManager.h>
#include <TGeoVolume.h>
#include <TGeoBBox.h>
#include "AliITSsegmentationSDD.h"
#include "AliITSDriftSpeedSDD.h"

/////////////////////////////////////////////////////////////////////////////
// Segmentation class for drift detectors                                  //
//                                                                         //
//     microcables                                  microcables            //
//       /\                                           /\                   //
//       ||                                           ||                   //
//       ||                                           ||                   //
//       ||                                           ||                   //
//        0                     256                    0                   //
//      0 |----------------------|---------------------| 511               //
//        |       time-bins      |     time-bins       |                   //
//        | a                    |                   a |                   //
//        | n                    |                   n |                   //
//    X <_|_o____________________|___________________o_|__                 //
//        | d                    |                   d |                   //
//        | e     LEFT SIDE      |   RIGHT SIDE      e |                   //
//        | s     CHANNEL 0      |   CHANNEL 1       s |                   //
//        |       Xlocal > 0     |   Xlocal < 0        |                   //
//    255 |----------------------|---------------------| 256               //
//                               |                                         //
//                               |                                         //
//                               V                                         //
//                               Z                                         //
/////////////////////////////////////////////////////////////////////////////

/* $Id$ */

const Float_t AliITSsegmentationSDD::fgkDxDefault = 35085.;
const Float_t AliITSsegmentationSDD::fgkDzDefault = 75264.;
const Float_t AliITSsegmentationSDD::fgkDyDefault = 300.;
const Float_t AliITSsegmentationSDD::fgkPitchDefault = 294.;
const Float_t AliITSsegmentationSDD::fgkClockDefault = 40.;
const Int_t AliITSsegmentationSDD::fgkHalfNanodesDefault = 256; 
const Int_t AliITSsegmentationSDD::fgkNsamplesDefault = 256;
const Int_t AliITSsegmentationSDD::fgkNchipsPerHybrid = 4;
const Int_t AliITSsegmentationSDD::fgkNanodesPerChip = 64;
const Float_t AliITSsegmentationSDD::fgkCm2Micron = 10000.;
const Float_t AliITSsegmentationSDD::fgkMicron2Cm = 1.0E-04;

using std::endl;
using std::cout;
ClassImp(AliITSsegmentationSDD)

//______________________________________________________________________
AliITSsegmentationSDD::AliITSsegmentationSDD(Option_t *opt) : AliITSsegmentation(),
fNsamples(0),
fNanodes(0),
fPitch(0),
fTimeStep(0),
fDriftSpeed(0),
fSetDriftSpeed(0){
  // Default constructor
  Init();
  if(strstr(opt,"TGeo")){
    if(!gGeoManager){
      AliError("Geometry is not initialized\n");
      return;
    }
    TGeoVolume *v=NULL;
    v = gGeoManager->GetVolume("ITSsddSensitivL3");
    if(!v){
      AliWarning("TGeo volume ITSsddSensitivL3 not found (hint: use v11Hybrid geometry)\n Using hardwired default values"); 
    }
    else {
      TGeoBBox *s=(TGeoBBox*)v->GetShape();
      SetDetSize(s->GetDX()*10000.,s->GetDZ()*20000.,s->GetDY()*20000.);
    }
  }
}

//______________________________________________________________________
void AliITSsegmentationSDD::Copy(TObject &obj) const {
  // protected method. copy this to obj
  AliITSsegmentation::Copy(obj);
  ((AliITSsegmentationSDD& ) obj).fNsamples = fNsamples;
  ((AliITSsegmentationSDD& ) obj).fNanodes = fNanodes;
  ((AliITSsegmentationSDD& ) obj).fPitch = fPitch;
  ((AliITSsegmentationSDD& ) obj).fTimeStep = fTimeStep;
  ((AliITSsegmentationSDD& ) obj).fDriftSpeed = fDriftSpeed;
  ((AliITSsegmentationSDD& ) obj).fSetDriftSpeed = fSetDriftSpeed;
}

//______________________________________________________________________
AliITSsegmentationSDD& AliITSsegmentationSDD::operator=(const AliITSsegmentationSDD &source){
   // = operator
   if(this==&source) return *this;
   source.Copy(*this);
   return *this;
}

//____________________________________________________________________________
AliITSsegmentationSDD::AliITSsegmentationSDD(const AliITSsegmentationSDD &source) :
    AliITSsegmentation(source),
fNsamples(0),
fNanodes(0),
fPitch(0),
fTimeStep(0),
fDriftSpeed(0),
fSetDriftSpeed(0){
  // copy constructor
  source.Copy(*this);
}

//----------------------------------------------------------------------
void AliITSsegmentationSDD::Init(){
// Standard initilisation routine
   fDriftSpeed=AliITSDriftSpeedSDD::DefaultDriftSpeed();
   fCorr=0;
   SetDetSize(fgkDxDefault,fgkDzDefault,fgkDyDefault);
   SetPadSize(fgkPitchDefault,fgkClockDefault);
   SetNPads(fgkHalfNanodesDefault,fgkNsamplesDefault);
}

//----------------------------------------------------------------------
void AliITSsegmentationSDD::
Neighbours(Int_t iX, Int_t iZ, Int_t* Nlist, Int_t Xlist[8], Int_t Zlist[8]) const {
  // returns neighbours for use in Cluster Finder routines and the like

    if(iX >= fNanodes) printf("iX > fNanodes %d %d\n",iX,fNanodes);
    if(iZ >= fNsamples) printf("iZ > fNsamples %d %d\n",iZ,fNsamples);
    *Nlist=4;
    Xlist[0]=Xlist[1]=iX;
    if(iX && (iX != fNanodes/2)) Xlist[2]=iX-1;
    else Xlist[2]=iX;
    if ((iX !=fNanodes/2 -1) && (iX != fNanodes)) Xlist[3]=iX+1;
    else Xlist[3]=iX;
    if(iZ) Zlist[0]=iZ-1;
    else Zlist[0]=iZ;
    if (iZ < fNsamples) Zlist[1]=iZ+1;
    else Zlist[1]=iZ;
    Zlist[2]=Zlist[3]=iZ;
}
//----------------------------------------------------------------------
Float_t AliITSsegmentationSDD::GetAnodeFromLocal(Float_t xloc,Float_t zloc) const {
  // returns anode coordinate (as float) starting from local coordinates
  Float_t xAnode=zloc*fgkCm2Micron/fPitch;
  if(xloc>0){   // left side (anodes 0-255, anode 0 at zloc<0)
    xAnode+=(Float_t)fNanodes/4;
  }else{ // right side (anodes 256-511, anode 0 at zloc>0)
    xAnode=3*fNanodes/4-xAnode;
  }
  return xAnode;
}

//----------------------------------------------------------------------
Float_t AliITSsegmentationSDD::GetLocalZFromAnode(Int_t nAnode) const{
  // returns local Z coordinate from anode number (integer)
  Float_t zAnode=(Float_t)nAnode+0.5;
  return GetLocalZFromAnode(zAnode);
}

//----------------------------------------------------------------------
Float_t AliITSsegmentationSDD::GetLocalZFromAnode(Float_t zAnode) const{
  // returns local Z coordinate from anode number (float)
  Float_t zloc=0.;
  if(zAnode<fNanodes/2){ // left side
    zloc=(zAnode*fPitch-fDz/2)*fgkMicron2Cm;
  }else{  // right side
    zAnode-=fNanodes/2;
    zloc=-(zAnode*fPitch-fDz/2)*fgkMicron2Cm;
  }
  return zloc;
}
//----------------------------------------------------------------------
Int_t AliITSsegmentationSDD::GetChipFromChannel(Int_t ix, Int_t iz) const {
  // returns chip number (in range 0-7) starting from channel number
  if(iz>=fNanodes  || iz<0 || ix>fNsamples){
    AliError("Bad cell number");
    return -1;
  }
  Int_t theChip=iz/fgkNanodesPerChip;
  return theChip;
}
//----------------------------------------------------------------------
Int_t AliITSsegmentationSDD::GetChipFromLocal(Float_t xloc, Float_t zloc) const {  
  // returns chip number (in range 0-7) starting from local coordinates
  Float_t detsize=fDz*fgkMicron2Cm;
  Float_t chipsize=detsize/(Float_t)fgkNchipsPerHybrid;
  zloc+=detsize/2.;
  if(zloc<-0.01 || zloc>detsize+0.01){ // 100 micron tolerance around edges
    AliError("Z local value out of sensitive SDD area");
    return -1;
  }
  Int_t iChip=int(zloc/chipsize);
  if(zloc<0.) iChip=0;  
  if(zloc>=detsize) iChip=fgkNchipsPerHybrid-1;
  if(iChip>=fgkNchipsPerHybrid || iChip<0){ 
    AliError(Form("Bad chip number %d",iChip));
    return -1;
  }
  Int_t iSide=GetSideFromLocalX(xloc);
  if(iSide==1) iChip=fgkNchipsPerHybrid-iChip+3;   // i.e. 7-iChip
  return iChip;
}
//----------------------------------------------------------------------
Int_t AliITSsegmentationSDD::GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t xmin, Float_t xmax) const {
  // returns the numbers of the chips that read channels in a given region
  // of the module defined in local coordinates by zmin-zmax, xmin-max

  Int_t nChipInW = 0;
  Float_t zminDet=-fDz*fgkMicron2Cm/2.;
  Float_t zmaxDet=fDz*fgkMicron2Cm/2.;
  if(zmin<zminDet) zmin=zminDet;
  if(zmax>zmaxDet) zmax=zmaxDet;
  Float_t xminDet=-fDx*fgkMicron2Cm;
  Float_t xmaxDet=fDx*fgkMicron2Cm;
  if(xmin<xminDet) xmin=xminDet;
  if(xmax>xmaxDet) xmax=xmaxDet;
  Int_t n1=GetChipFromLocal(xmin,zmin);
  array[nChipInW]=n1;
  nChipInW++;
  Int_t n2=GetChipFromLocal(xmin,zmax);
  if(n2!=n1){
    Int_t imin=TMath::Min(n1,n2);
    Int_t imax=TMath::Max(n1,n2);
    for(Int_t ichip=imin; ichip<=imax; ichip++){
      if(ichip==n1) continue;
      array[nChipInW]=ichip;
      nChipInW++;    
    }
  }
  Int_t n3=GetChipFromLocal(xmax,zmin);
  if(n3!=n1){
    array[nChipInW]=n3;
    nChipInW++;
    Int_t n4=GetChipFromLocal(xmax,zmax);
    if(n4!=n3){
      Int_t imin=TMath::Min(n3,n4);
      Int_t imax=TMath::Max(n3,n4);
      for(Int_t ichip=imin; ichip<=imax; ichip++){
	if(ichip==n3) continue;
	array[nChipInW]=ichip;
	nChipInW++;    
      }
    }
  }
  return nChipInW;
}
//----------------------------------------------------------------------
void AliITSsegmentationSDD::GetPadIxz(Float_t x,Float_t z,
				      Int_t &timebin,Int_t &anode) const {
// Returns cell coordinates (time sample,anode)
// for given real local coordinates (x,z)

  // expects x, z in cm

  Float_t driftpath=fDx-TMath::Abs(x*fgkCm2Micron);
  timebin=(Int_t)(driftpath/fDriftSpeed/fTimeStep);
  anode=(Int_t)GetAnodeFromLocal(x,z);
  if(!fSetDriftSpeed){
    timebin=-999;
    AliWarning("Drift speed not set: timebin is dummy");
  }

}
//----------------------------------------------------------------------
void AliITSsegmentationSDD::GetPadCxz(Int_t timebin,Int_t anode,
				      Float_t &x ,Float_t &z) const{
  // Transform from cell to real local coordinates
  // returns x, z in cm

  // the +0.5 means that an # and time bin # should start from 0 !!! 
  // the +0.5 means that an # and time bin # should start from 0 !!! 

  Float_t driftpath=GetDriftTimeFromTb(timebin)*fDriftSpeed;
  if (anode < fNanodes/2){ // left side, positive x
    x=(fDx-driftpath)*fgkMicron2Cm;
  }else{ // right side, negative x
    x = -(fDx-driftpath)*fgkMicron2Cm;
  }
  z=GetLocalZFromAnode(anode);
  if(!fSetDriftSpeed){
    x=-9999.;
    AliWarning("Drift speed not set: x coord. is dummy");
  }
}
//----------------------------------------------------------------------
void AliITSsegmentationSDD::GetPadTxz(Float_t &x,Float_t &z) const{
    // Get anode and time bucket as floats - numbering from 0

    // expects x, z in cm

    Float_t xloc=x;
    Float_t zloc=z;
    Float_t driftpath=fDx-TMath::Abs(fgkCm2Micron*xloc);
    x=driftpath/fDriftSpeed/fTimeStep;
    if (xloc < 0) x = -x;
    z=GetAnodeFromLocal(xloc,zloc);
    if(!fSetDriftSpeed){
      x=-9999.;
      AliWarning("Drift speed not set: x coord. is dummy");
    }
}
//----------------------------------------------------------------------
void AliITSsegmentationSDD::Print(Option_t *opt) const {
  // Print SDD segmentation Parameters

   cout << "**************************************************" << endl;
   cout << "  Silicon Drift Detector Segmentation Parameters  " << opt << endl;
   cout << "**************************************************" << endl;
   cout << "Number of Time Samples: " << fNsamples << endl;
   cout << "Number of Anodes: " << fNanodes << endl;
   cout << "Time Step (ns): " << fTimeStep << endl;
   cout << "Anode Pitch (um): " << fPitch << endl;
   cout << "Full Detector Width     (x): " << fDx;
   cout<<" (Default is "<<fgkDxDefault<<") "<<endl;
   cout << "Half Detector Length    (z): " << fDz;
   cout<<" (Default is "<<fgkDzDefault<<") "<<endl;
   cout << "Full Detector Thickness (y): " << fDy;
   cout<<" (Default is "<<fgkDyDefault<<") "<<endl;
   cout << "**************************************************" << endl;

}

//----------------------------------------------------------------------
void AliITSsegmentationSDD::PrintDefaultParameters() const {
  // print SDD parameters defined as static const data members

  cout << "**************************************************" << endl;
  cout << "  Silicon Drift Detector Segmentation Parameters  " << endl;
  cout << " Default values defined as static const data members"<< endl;
  cout << " Actual values can be set with the relevant setters"<< endl; 
  cout << "**************************************************" << endl;
  cout<<"fgkDxDefault = "<<fgkDxDefault<<endl;
  cout<<"fgkDzDefault = "<<fgkDzDefault<<endl;
  cout<<"fgkDyDefault = "<<fgkDyDefault<<endl;
  cout<<"fgkPitchDefault = "<<fgkPitchDefault<<endl;
  cout<<"fgkClockDefault = "<<fgkClockDefault<<endl;
  cout<<"fgkHalfNanodesDefault = "<<fgkHalfNanodesDefault<<endl;
  cout<<"fgkNsamplesDefault = "<<fgkNsamplesDefault<<endl;
  cout << "**************************************************" << endl;

}

//______________________________________________________________________
Bool_t AliITSsegmentationSDD::LocalToDet(Float_t x,Float_t z,
                                         Int_t &ix,Int_t &iz) const {
// Transformation from Geant detector centered local coordinates (cm) to
// time bucket numbers ix and anode number iz.
// Input:
// Float_t   x      detector local coordinate x in cm with respect to the
//                  center of the sensitive volume.
// Float_t   z      detector local coordinate z in cm with respect to the
//                  center of the sensitive volulme.
// Output:
// Int_t    ix      detector x time coordinate. Has the range 0<=ix<fNsamples.
// Int_t    iz      detector z anode coordinate. Has the range 0<=iz<fNandoes.
//   A value of -1 for ix or iz indecates that this point is outside of the
// detector segmentation as defined.

    Float_t dx,dz;

    ix = -1; // default values
    iz = -1; // default values
    dx = -fgkMicron2Cm*Dx(); // lower left edge in cm.
    dz = -0.5*fgkMicron2Cm*Dz(); // lower left edge in cm.
    if(x<dx || x>-dx) {
      AliWarning(Form("Input argument %f out of range (%f, %f)",x,dx,-dx));
      return kFALSE; // outside of defined volume.
    }
    if(z<dz || z>-dz) {
      AliWarning(Form("Input argument %f out of range (%f, %f)",z,dz,-dz));
      return kFALSE; // outside of defined volume.
    }
    GetPadIxz(x,z,ix,iz);
    if(!fSetDriftSpeed){
      ix=-999;
      AliWarning("Drift speed not set: timebin is dummy");
      return kFALSE;
    }
    return kTRUE; // Found ix and iz, return.
}
//______________________________________________________________________
void AliITSsegmentationSDD::DetToLocal(Int_t ix,Int_t iz,Float_t &x,Float_t &z) const
{
// Transformation from Detector time bucket and anode coordiantes to Geant 
// detector centerd local coordinates (cm).
// Input:
// Int_t    ix      detector x time coordinate. Has the range 0<=ix<fNsamples.
// Int_t    iz      detector z anode coordinate. Has the range 0<=iz<fNandoes.
// Output:
// Float_t   x      detector local coordinate x in cm with respect to the
//                  center of the sensitive volume.
// Float_t   z      detector local coordinate z in cm with respect to the
//                  center of the sensitive volulme.
// If ix and or iz is outside of the segmentation range a value of -Dx()
// or -0.5*Dz() is returned.

  x=-Dx();
  z=-0.5*Dz();
  if(ix<0 || ix>=Npx()) {
    AliWarning(Form("Input argument %d out of range (0, %d)",ix,Npx()));
    return; // outside of detector
  }
  if(iz<0 || iz>=Npz()) {
    AliWarning(Form("Input argument %d out of range (0, %d)",iz,Npz()));
    return; // outside of detctor
  }
  GetPadCxz(ix,iz,x,z);
  if(!fSetDriftSpeed){
    x=-9999.;
    AliWarning("Drift speed not set: x coord. is dummy");
  }
  return; // Found x and z, return.
}
 AliITSsegmentationSDD.cxx:1
 AliITSsegmentationSDD.cxx:2
 AliITSsegmentationSDD.cxx:3
 AliITSsegmentationSDD.cxx:4
 AliITSsegmentationSDD.cxx:5
 AliITSsegmentationSDD.cxx:6
 AliITSsegmentationSDD.cxx:7
 AliITSsegmentationSDD.cxx:8
 AliITSsegmentationSDD.cxx:9
 AliITSsegmentationSDD.cxx:10
 AliITSsegmentationSDD.cxx:11
 AliITSsegmentationSDD.cxx:12
 AliITSsegmentationSDD.cxx:13
 AliITSsegmentationSDD.cxx:14
 AliITSsegmentationSDD.cxx:15
 AliITSsegmentationSDD.cxx:16
 AliITSsegmentationSDD.cxx:17
 AliITSsegmentationSDD.cxx:18
 AliITSsegmentationSDD.cxx:19
 AliITSsegmentationSDD.cxx:20
 AliITSsegmentationSDD.cxx:21
 AliITSsegmentationSDD.cxx:22
 AliITSsegmentationSDD.cxx:23
 AliITSsegmentationSDD.cxx:24
 AliITSsegmentationSDD.cxx:25
 AliITSsegmentationSDD.cxx:26
 AliITSsegmentationSDD.cxx:27
 AliITSsegmentationSDD.cxx:28
 AliITSsegmentationSDD.cxx:29
 AliITSsegmentationSDD.cxx:30
 AliITSsegmentationSDD.cxx:31
 AliITSsegmentationSDD.cxx:32
 AliITSsegmentationSDD.cxx:33
 AliITSsegmentationSDD.cxx:34
 AliITSsegmentationSDD.cxx:35
 AliITSsegmentationSDD.cxx:36
 AliITSsegmentationSDD.cxx:37
 AliITSsegmentationSDD.cxx:38
 AliITSsegmentationSDD.cxx:39
 AliITSsegmentationSDD.cxx:40
 AliITSsegmentationSDD.cxx:41
 AliITSsegmentationSDD.cxx:42
 AliITSsegmentationSDD.cxx:43
 AliITSsegmentationSDD.cxx:44
 AliITSsegmentationSDD.cxx:45
 AliITSsegmentationSDD.cxx:46
 AliITSsegmentationSDD.cxx:47
 AliITSsegmentationSDD.cxx:48
 AliITSsegmentationSDD.cxx:49
 AliITSsegmentationSDD.cxx:50
 AliITSsegmentationSDD.cxx:51
 AliITSsegmentationSDD.cxx:52
 AliITSsegmentationSDD.cxx:53
 AliITSsegmentationSDD.cxx:54
 AliITSsegmentationSDD.cxx:55
 AliITSsegmentationSDD.cxx:56
 AliITSsegmentationSDD.cxx:57
 AliITSsegmentationSDD.cxx:58
 AliITSsegmentationSDD.cxx:59
 AliITSsegmentationSDD.cxx:60
 AliITSsegmentationSDD.cxx:61
 AliITSsegmentationSDD.cxx:62
 AliITSsegmentationSDD.cxx:63
 AliITSsegmentationSDD.cxx:64
 AliITSsegmentationSDD.cxx:65
 AliITSsegmentationSDD.cxx:66
 AliITSsegmentationSDD.cxx:67
 AliITSsegmentationSDD.cxx:68
 AliITSsegmentationSDD.cxx:69
 AliITSsegmentationSDD.cxx:70
 AliITSsegmentationSDD.cxx:71
 AliITSsegmentationSDD.cxx:72
 AliITSsegmentationSDD.cxx:73
 AliITSsegmentationSDD.cxx:74
 AliITSsegmentationSDD.cxx:75
 AliITSsegmentationSDD.cxx:76
 AliITSsegmentationSDD.cxx:77
 AliITSsegmentationSDD.cxx:78
 AliITSsegmentationSDD.cxx:79
 AliITSsegmentationSDD.cxx:80
 AliITSsegmentationSDD.cxx:81
 AliITSsegmentationSDD.cxx:82
 AliITSsegmentationSDD.cxx:83
 AliITSsegmentationSDD.cxx:84
 AliITSsegmentationSDD.cxx:85
 AliITSsegmentationSDD.cxx:86
 AliITSsegmentationSDD.cxx:87
 AliITSsegmentationSDD.cxx:88
 AliITSsegmentationSDD.cxx:89
 AliITSsegmentationSDD.cxx:90
 AliITSsegmentationSDD.cxx:91
 AliITSsegmentationSDD.cxx:92
 AliITSsegmentationSDD.cxx:93
 AliITSsegmentationSDD.cxx:94
 AliITSsegmentationSDD.cxx:95
 AliITSsegmentationSDD.cxx:96
 AliITSsegmentationSDD.cxx:97
 AliITSsegmentationSDD.cxx:98
 AliITSsegmentationSDD.cxx:99
 AliITSsegmentationSDD.cxx:100
 AliITSsegmentationSDD.cxx:101
 AliITSsegmentationSDD.cxx:102
 AliITSsegmentationSDD.cxx:103
 AliITSsegmentationSDD.cxx:104
 AliITSsegmentationSDD.cxx:105
 AliITSsegmentationSDD.cxx:106
 AliITSsegmentationSDD.cxx:107
 AliITSsegmentationSDD.cxx:108
 AliITSsegmentationSDD.cxx:109
 AliITSsegmentationSDD.cxx:110
 AliITSsegmentationSDD.cxx:111
 AliITSsegmentationSDD.cxx:112
 AliITSsegmentationSDD.cxx:113
 AliITSsegmentationSDD.cxx:114
 AliITSsegmentationSDD.cxx:115
 AliITSsegmentationSDD.cxx:116
 AliITSsegmentationSDD.cxx:117
 AliITSsegmentationSDD.cxx:118
 AliITSsegmentationSDD.cxx:119
 AliITSsegmentationSDD.cxx:120
 AliITSsegmentationSDD.cxx:121
 AliITSsegmentationSDD.cxx:122
 AliITSsegmentationSDD.cxx:123
 AliITSsegmentationSDD.cxx:124
 AliITSsegmentationSDD.cxx:125
 AliITSsegmentationSDD.cxx:126
 AliITSsegmentationSDD.cxx:127
 AliITSsegmentationSDD.cxx:128
 AliITSsegmentationSDD.cxx:129
 AliITSsegmentationSDD.cxx:130
 AliITSsegmentationSDD.cxx:131
 AliITSsegmentationSDD.cxx:132
 AliITSsegmentationSDD.cxx:133
 AliITSsegmentationSDD.cxx:134
 AliITSsegmentationSDD.cxx:135
 AliITSsegmentationSDD.cxx:136
 AliITSsegmentationSDD.cxx:137
 AliITSsegmentationSDD.cxx:138
 AliITSsegmentationSDD.cxx:139
 AliITSsegmentationSDD.cxx:140
 AliITSsegmentationSDD.cxx:141
 AliITSsegmentationSDD.cxx:142
 AliITSsegmentationSDD.cxx:143
 AliITSsegmentationSDD.cxx:144
 AliITSsegmentationSDD.cxx:145
 AliITSsegmentationSDD.cxx:146
 AliITSsegmentationSDD.cxx:147
 AliITSsegmentationSDD.cxx:148
 AliITSsegmentationSDD.cxx:149
 AliITSsegmentationSDD.cxx:150
 AliITSsegmentationSDD.cxx:151
 AliITSsegmentationSDD.cxx:152
 AliITSsegmentationSDD.cxx:153
 AliITSsegmentationSDD.cxx:154
 AliITSsegmentationSDD.cxx:155
 AliITSsegmentationSDD.cxx:156
 AliITSsegmentationSDD.cxx:157
 AliITSsegmentationSDD.cxx:158
 AliITSsegmentationSDD.cxx:159
 AliITSsegmentationSDD.cxx:160
 AliITSsegmentationSDD.cxx:161
 AliITSsegmentationSDD.cxx:162
 AliITSsegmentationSDD.cxx:163
 AliITSsegmentationSDD.cxx:164
 AliITSsegmentationSDD.cxx:165
 AliITSsegmentationSDD.cxx:166
 AliITSsegmentationSDD.cxx:167
 AliITSsegmentationSDD.cxx:168
 AliITSsegmentationSDD.cxx:169
 AliITSsegmentationSDD.cxx:170
 AliITSsegmentationSDD.cxx:171
 AliITSsegmentationSDD.cxx:172
 AliITSsegmentationSDD.cxx:173
 AliITSsegmentationSDD.cxx:174
 AliITSsegmentationSDD.cxx:175
 AliITSsegmentationSDD.cxx:176
 AliITSsegmentationSDD.cxx:177
 AliITSsegmentationSDD.cxx:178
 AliITSsegmentationSDD.cxx:179
 AliITSsegmentationSDD.cxx:180
 AliITSsegmentationSDD.cxx:181
 AliITSsegmentationSDD.cxx:182
 AliITSsegmentationSDD.cxx:183
 AliITSsegmentationSDD.cxx:184
 AliITSsegmentationSDD.cxx:185
 AliITSsegmentationSDD.cxx:186
 AliITSsegmentationSDD.cxx:187
 AliITSsegmentationSDD.cxx:188
 AliITSsegmentationSDD.cxx:189
 AliITSsegmentationSDD.cxx:190
 AliITSsegmentationSDD.cxx:191
 AliITSsegmentationSDD.cxx:192
 AliITSsegmentationSDD.cxx:193
 AliITSsegmentationSDD.cxx:194
 AliITSsegmentationSDD.cxx:195
 AliITSsegmentationSDD.cxx:196
 AliITSsegmentationSDD.cxx:197
 AliITSsegmentationSDD.cxx:198
 AliITSsegmentationSDD.cxx:199
 AliITSsegmentationSDD.cxx:200
 AliITSsegmentationSDD.cxx:201
 AliITSsegmentationSDD.cxx:202
 AliITSsegmentationSDD.cxx:203
 AliITSsegmentationSDD.cxx:204
 AliITSsegmentationSDD.cxx:205
 AliITSsegmentationSDD.cxx:206
 AliITSsegmentationSDD.cxx:207
 AliITSsegmentationSDD.cxx:208
 AliITSsegmentationSDD.cxx:209
 AliITSsegmentationSDD.cxx:210
 AliITSsegmentationSDD.cxx:211
 AliITSsegmentationSDD.cxx:212
 AliITSsegmentationSDD.cxx:213
 AliITSsegmentationSDD.cxx:214
 AliITSsegmentationSDD.cxx:215
 AliITSsegmentationSDD.cxx:216
 AliITSsegmentationSDD.cxx:217
 AliITSsegmentationSDD.cxx:218
 AliITSsegmentationSDD.cxx:219
 AliITSsegmentationSDD.cxx:220
 AliITSsegmentationSDD.cxx:221
 AliITSsegmentationSDD.cxx:222
 AliITSsegmentationSDD.cxx:223
 AliITSsegmentationSDD.cxx:224
 AliITSsegmentationSDD.cxx:225
 AliITSsegmentationSDD.cxx:226
 AliITSsegmentationSDD.cxx:227
 AliITSsegmentationSDD.cxx:228
 AliITSsegmentationSDD.cxx:229
 AliITSsegmentationSDD.cxx:230
 AliITSsegmentationSDD.cxx:231
 AliITSsegmentationSDD.cxx:232
 AliITSsegmentationSDD.cxx:233
 AliITSsegmentationSDD.cxx:234
 AliITSsegmentationSDD.cxx:235
 AliITSsegmentationSDD.cxx:236
 AliITSsegmentationSDD.cxx:237
 AliITSsegmentationSDD.cxx:238
 AliITSsegmentationSDD.cxx:239
 AliITSsegmentationSDD.cxx:240
 AliITSsegmentationSDD.cxx:241
 AliITSsegmentationSDD.cxx:242
 AliITSsegmentationSDD.cxx:243
 AliITSsegmentationSDD.cxx:244
 AliITSsegmentationSDD.cxx:245
 AliITSsegmentationSDD.cxx:246
 AliITSsegmentationSDD.cxx:247
 AliITSsegmentationSDD.cxx:248
 AliITSsegmentationSDD.cxx:249
 AliITSsegmentationSDD.cxx:250
 AliITSsegmentationSDD.cxx:251
 AliITSsegmentationSDD.cxx:252
 AliITSsegmentationSDD.cxx:253
 AliITSsegmentationSDD.cxx:254
 AliITSsegmentationSDD.cxx:255
 AliITSsegmentationSDD.cxx:256
 AliITSsegmentationSDD.cxx:257
 AliITSsegmentationSDD.cxx:258
 AliITSsegmentationSDD.cxx:259
 AliITSsegmentationSDD.cxx:260
 AliITSsegmentationSDD.cxx:261
 AliITSsegmentationSDD.cxx:262
 AliITSsegmentationSDD.cxx:263
 AliITSsegmentationSDD.cxx:264
 AliITSsegmentationSDD.cxx:265
 AliITSsegmentationSDD.cxx:266
 AliITSsegmentationSDD.cxx:267
 AliITSsegmentationSDD.cxx:268
 AliITSsegmentationSDD.cxx:269
 AliITSsegmentationSDD.cxx:270
 AliITSsegmentationSDD.cxx:271
 AliITSsegmentationSDD.cxx:272
 AliITSsegmentationSDD.cxx:273
 AliITSsegmentationSDD.cxx:274
 AliITSsegmentationSDD.cxx:275
 AliITSsegmentationSDD.cxx:276
 AliITSsegmentationSDD.cxx:277
 AliITSsegmentationSDD.cxx:278
 AliITSsegmentationSDD.cxx:279
 AliITSsegmentationSDD.cxx:280
 AliITSsegmentationSDD.cxx:281
 AliITSsegmentationSDD.cxx:282
 AliITSsegmentationSDD.cxx:283
 AliITSsegmentationSDD.cxx:284
 AliITSsegmentationSDD.cxx:285
 AliITSsegmentationSDD.cxx:286
 AliITSsegmentationSDD.cxx:287
 AliITSsegmentationSDD.cxx:288
 AliITSsegmentationSDD.cxx:289
 AliITSsegmentationSDD.cxx:290
 AliITSsegmentationSDD.cxx:291
 AliITSsegmentationSDD.cxx:292
 AliITSsegmentationSDD.cxx:293
 AliITSsegmentationSDD.cxx:294
 AliITSsegmentationSDD.cxx:295
 AliITSsegmentationSDD.cxx:296
 AliITSsegmentationSDD.cxx:297
 AliITSsegmentationSDD.cxx:298
 AliITSsegmentationSDD.cxx:299
 AliITSsegmentationSDD.cxx:300
 AliITSsegmentationSDD.cxx:301
 AliITSsegmentationSDD.cxx:302
 AliITSsegmentationSDD.cxx:303
 AliITSsegmentationSDD.cxx:304
 AliITSsegmentationSDD.cxx:305
 AliITSsegmentationSDD.cxx:306
 AliITSsegmentationSDD.cxx:307
 AliITSsegmentationSDD.cxx:308
 AliITSsegmentationSDD.cxx:309
 AliITSsegmentationSDD.cxx:310
 AliITSsegmentationSDD.cxx:311
 AliITSsegmentationSDD.cxx:312
 AliITSsegmentationSDD.cxx:313
 AliITSsegmentationSDD.cxx:314
 AliITSsegmentationSDD.cxx:315
 AliITSsegmentationSDD.cxx:316
 AliITSsegmentationSDD.cxx:317
 AliITSsegmentationSDD.cxx:318
 AliITSsegmentationSDD.cxx:319
 AliITSsegmentationSDD.cxx:320
 AliITSsegmentationSDD.cxx:321
 AliITSsegmentationSDD.cxx:322
 AliITSsegmentationSDD.cxx:323
 AliITSsegmentationSDD.cxx:324
 AliITSsegmentationSDD.cxx:325
 AliITSsegmentationSDD.cxx:326
 AliITSsegmentationSDD.cxx:327
 AliITSsegmentationSDD.cxx:328
 AliITSsegmentationSDD.cxx:329
 AliITSsegmentationSDD.cxx:330
 AliITSsegmentationSDD.cxx:331
 AliITSsegmentationSDD.cxx:332
 AliITSsegmentationSDD.cxx:333
 AliITSsegmentationSDD.cxx:334
 AliITSsegmentationSDD.cxx:335
 AliITSsegmentationSDD.cxx:336
 AliITSsegmentationSDD.cxx:337
 AliITSsegmentationSDD.cxx:338
 AliITSsegmentationSDD.cxx:339
 AliITSsegmentationSDD.cxx:340
 AliITSsegmentationSDD.cxx:341
 AliITSsegmentationSDD.cxx:342
 AliITSsegmentationSDD.cxx:343
 AliITSsegmentationSDD.cxx:344
 AliITSsegmentationSDD.cxx:345
 AliITSsegmentationSDD.cxx:346
 AliITSsegmentationSDD.cxx:347
 AliITSsegmentationSDD.cxx:348
 AliITSsegmentationSDD.cxx:349
 AliITSsegmentationSDD.cxx:350
 AliITSsegmentationSDD.cxx:351
 AliITSsegmentationSDD.cxx:352
 AliITSsegmentationSDD.cxx:353
 AliITSsegmentationSDD.cxx:354
 AliITSsegmentationSDD.cxx:355
 AliITSsegmentationSDD.cxx:356
 AliITSsegmentationSDD.cxx:357
 AliITSsegmentationSDD.cxx:358
 AliITSsegmentationSDD.cxx:359
 AliITSsegmentationSDD.cxx:360
 AliITSsegmentationSDD.cxx:361
 AliITSsegmentationSDD.cxx:362
 AliITSsegmentationSDD.cxx:363
 AliITSsegmentationSDD.cxx:364
 AliITSsegmentationSDD.cxx:365
 AliITSsegmentationSDD.cxx:366
 AliITSsegmentationSDD.cxx:367
 AliITSsegmentationSDD.cxx:368
 AliITSsegmentationSDD.cxx:369
 AliITSsegmentationSDD.cxx:370
 AliITSsegmentationSDD.cxx:371
 AliITSsegmentationSDD.cxx:372
 AliITSsegmentationSDD.cxx:373
 AliITSsegmentationSDD.cxx:374
 AliITSsegmentationSDD.cxx:375
 AliITSsegmentationSDD.cxx:376
 AliITSsegmentationSDD.cxx:377
 AliITSsegmentationSDD.cxx:378
 AliITSsegmentationSDD.cxx:379
 AliITSsegmentationSDD.cxx:380
 AliITSsegmentationSDD.cxx:381
 AliITSsegmentationSDD.cxx:382
 AliITSsegmentationSDD.cxx:383
 AliITSsegmentationSDD.cxx:384
 AliITSsegmentationSDD.cxx:385
 AliITSsegmentationSDD.cxx:386
 AliITSsegmentationSDD.cxx:387
 AliITSsegmentationSDD.cxx:388
 AliITSsegmentationSDD.cxx:389
 AliITSsegmentationSDD.cxx:390
 AliITSsegmentationSDD.cxx:391
 AliITSsegmentationSDD.cxx:392
 AliITSsegmentationSDD.cxx:393
 AliITSsegmentationSDD.cxx:394
 AliITSsegmentationSDD.cxx:395
 AliITSsegmentationSDD.cxx:396
 AliITSsegmentationSDD.cxx:397
 AliITSsegmentationSDD.cxx:398
 AliITSsegmentationSDD.cxx:399
 AliITSsegmentationSDD.cxx:400
 AliITSsegmentationSDD.cxx:401
 AliITSsegmentationSDD.cxx:402
 AliITSsegmentationSDD.cxx:403
 AliITSsegmentationSDD.cxx:404
 AliITSsegmentationSDD.cxx:405
 AliITSsegmentationSDD.cxx:406
 AliITSsegmentationSDD.cxx:407
 AliITSsegmentationSDD.cxx:408
 AliITSsegmentationSDD.cxx:409
 AliITSsegmentationSDD.cxx:410
 AliITSsegmentationSDD.cxx:411
 AliITSsegmentationSDD.cxx:412
 AliITSsegmentationSDD.cxx:413
 AliITSsegmentationSDD.cxx:414
 AliITSsegmentationSDD.cxx:415
 AliITSsegmentationSDD.cxx:416
 AliITSsegmentationSDD.cxx:417
 AliITSsegmentationSDD.cxx:418
 AliITSsegmentationSDD.cxx:419
 AliITSsegmentationSDD.cxx:420
 AliITSsegmentationSDD.cxx:421
 AliITSsegmentationSDD.cxx:422
 AliITSsegmentationSDD.cxx:423
 AliITSsegmentationSDD.cxx:424
 AliITSsegmentationSDD.cxx:425
 AliITSsegmentationSDD.cxx:426
 AliITSsegmentationSDD.cxx:427