ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, 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$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  ITS cluster error and shape parameterization                             //
//                                                                           //
//  andrea.dainese@lnl.infn.it                                               //
///////////////////////////////////////////////////////////////////////////////
//#include "TFile.h"
//#include "TTree.h"
//#include <TVectorF.h>
//#include <TLinearFitter.h>
//#include <TH1F.h>
//#include <TProfile2D.h>
#include <TVector3.h>
#include "TMath.h"
#include "AliTracker.h"
#include "AliGeomManager.h"
#include "AliITSRecPoint.h"
#include "AliITSClusterParam.h"
#include "AliITSReconstructor.h"
#include "AliExternalTrackParam.h"
#include "AliCheb3DCalc.h"

ClassImp(AliITSClusterParam)


AliITSClusterParam* AliITSClusterParam::fgInstance = 0;


/*
  Example usage fitting parameterization (NOT YET...):
  TFile fres("resol.root");    //tree with resolution and shape 
  TTree * treeRes =(TTree*)fres.Get("Resol");
  
  AliITSClusterParam param;
  param.SetInstance(&param);
  param.FitResol(treeRes);
  param.FitRMS(treeRes);
  TFile fparam("ITSClusterParam.root","recreate");
  param.Write("Param");
  //
  //
  TFile fparam("ITSClusterParam.root");
  AliITSClusterParam *param2  =  (AliITSClusterParam *) fparam.Get("Param"); 
  param2->SetInstance(param2);
  param2->Test(treeRes);
  

  treeRes->Draw("(Resol-AliITSClusterParam::SGetError0(Dim,Pad,Zm,AngleM))/Resol","Dim==0&&QMean<0")
*/

//-------------------------------------------------------------------------
AliITSClusterParam* AliITSClusterParam::Instance()
{
  //
  // Singleton implementation
  // Returns an instance of this class, it is created if neccessary
  //
  if (fgInstance == 0){
    fgInstance = new AliITSClusterParam();
  }
  return fgInstance;
}
//-------------------------------------------------------------------------
void AliITSClusterParam::GetNTeor(Int_t layer,const AliITSRecPoint* /*cl*/, 
				  Float_t tgl,Float_t tgphitr,
				  Float_t &ny,Float_t &nz)
{
  //
  // Get "mean shape" (original parametrization from AliITStrackerMI)
  //
  tgl = TMath::Abs(tgl);
  tgphitr = TMath::Abs(tgphitr);

  // SPD
  if (layer==0) {
    ny = 1.+tgphitr*3.2;
    nz = 1.+tgl*0.34;
    return;
  }
  if (layer==1) {
    ny = 1.+tgphitr*3.2;
    nz = 1.+tgl*0.28;
    return;
  }
  // SSD
  if (layer==4 || layer==5) {
    ny = 2.02+tgphitr*1.95;
    nz = 2.02+tgphitr*2.35;
    return;
  }
  // SDD
  ny  = 6.6-2.7*tgphitr;
  nz  = 2.8-3.11*tgphitr+0.45*tgl;
  return;
}
//--------------------------------------------------------------------------
Int_t AliITSClusterParam::GetError(Int_t layer,
				   const AliITSRecPoint *cl,
				   Float_t tgl,Float_t tgphitr,Float_t expQ,
				   Float_t &erry,Float_t &errz,Float_t &covyz,
				   Bool_t addMisalErr)
{
  //
  // Calculate cluster position error
  //
  static Double_t bz = (Double_t)AliTracker::GetBz();
  Int_t retval=0;
  covyz=0.;
  switch(AliITSReconstructor::GetRecoParam()->GetClusterErrorsParam()) {
  case 0: 
    retval = GetErrorOrigRecPoint(cl,erry,errz,covyz);
    break;
  case 1: 
    retval = GetErrorParamMI(layer,cl,tgl,tgphitr,expQ,erry,errz);
    break;
  case 2: 
    retval = GetErrorParamAngle(layer,cl,tgl,tgphitr,erry,errz);
    break;
  case 3: 
    retval = GetErrorParamAngleOld(layer,cl,tgl,tgphitr,erry,errz);
    break;
  default: 
    retval = GetErrorParamMI(layer,cl,tgl,tgphitr,expQ,erry,errz);
    break;
  }

  // for SSD use the error provided by the cluster finder 
  // if single-sided clusters are enabled
  if(layer>=4 && AliITSReconstructor::GetRecoParam()->GetUseBadChannelsInClusterFinderSSD()) { 
    //printf("error 1 erry errz covyz %10.7f %10.7f %15.13f\n",erry,errz,covyz);
    retval = GetErrorOrigRecPoint(cl,erry,errz,covyz);
    //printf("type %d erry errz covyz %10.7f %10.7f %15.13f\n",cl->GetType(),erry,errz,covyz);
  }
  
  if(addMisalErr) {
    // add error due to misalignment (to be improved)
    Float_t errmisalY2 = AliITSReconstructor::GetRecoParam()->GetClusterMisalErrorY(layer,bz)
      *AliITSReconstructor::GetRecoParam()->GetClusterMisalErrorY(layer,bz);
    Float_t errmisalZ2 = AliITSReconstructor::GetRecoParam()->GetClusterMisalErrorZ(layer,bz)
      *AliITSReconstructor::GetRecoParam()->GetClusterMisalErrorZ(layer,bz);
    erry = TMath::Sqrt(erry*erry+errmisalY2);
    errz = TMath::Sqrt(errz*errz+errmisalZ2);
  }

  return retval;

}
//--------------------------------------------------------------------------
Int_t AliITSClusterParam::GetErrorOrigRecPoint(const AliITSRecPoint*cl,
				   Float_t &erry,Float_t &errz,Float_t &covyz)
{
  //
  // Calculate cluster position error (just take error from AliITSRecPoint)
  //
  erry   = TMath::Sqrt(cl->GetSigmaY2()); 
  errz   = TMath::Sqrt(cl->GetSigmaZ2()); 
  covyz  = cl->GetSigmaYZ();

  return 1;
}
//--------------------------------------------------------------------------
Int_t AliITSClusterParam::GetErrorParamMI(Int_t layer,const AliITSRecPoint*cl,
					  Float_t tgl,Float_t tgphitr,
					  Float_t expQ,
					  Float_t &erry,Float_t &errz)
{
  //
  // Calculate cluster position error (original parametrization from 
  // AliITStrackerMI)
  //
  Float_t nz,ny;
  GetNTeor(layer, cl,tgl,tgphitr,ny,nz);  
  erry   = TMath::Sqrt(cl->GetSigmaY2()); 
  errz   = TMath::Sqrt(cl->GetSigmaZ2()); 
  //
  // PIXELS
  if (layer<2){
    if (TMath::Abs(ny-cl->GetNy())>0.6)  {
      if (ny<cl->GetNy()){
	erry*=0.4+TMath::Abs(ny-cl->GetNy());
	errz*=0.4+TMath::Abs(ny-cl->GetNy());
      }else{
	erry*=0.7+0.5*TMath::Abs(ny-cl->GetNy());
	errz*=0.7+0.5*TMath::Abs(ny-cl->GetNy());
      }
    }
    if (TMath::Abs(nz-cl->GetNz())>1.)  {
      erry*=TMath::Abs(nz-cl->GetNz());
      errz*=TMath::Abs(nz-cl->GetNz());	      
    }
    erry*=0.85;
    errz*=0.85;
    erry= TMath::Min(erry,float(0.0050));
    errz= TMath::Min(errz,float(0.0300));
    return 10;
  }

  //STRIPS
  if (layer>3){ 
    //factor 1.8 appears in new simulation
    //
    Float_t scale=1.8;
    if (cl->GetNy()==100||cl->GetNz()==100){
      erry = 0.004*scale;
      errz = 0.2*scale;
      return 100;
    }
    if (cl->GetNy()+cl->GetNz()>12){
      erry = 0.06*scale;
      errz = 0.57*scale;
      return 100;
    }
    Float_t normq = cl->GetQ()/(TMath::Sqrt(1+tgl*tgl+tgphitr*tgphitr));
    Float_t chargematch = TMath::Max(double(normq/expQ),2.);
    //
    if (cl->GetType()==1 || cl->GetType()==10 ){     							       
      if (chargematch<1.0 || (cl->GetNy()+cl->GetNz()<nz+ny+0.5)){
	errz = 0.043*scale;
	erry = 0.00094*scale;
	return 101;
      }
      if (cl->GetNy()+cl->GetNz()<nz+ny+1.2){
	errz = 0.06*scale;
	erry =0.0013*scale;
	return 102;
      }
      erry = 0.0027*scale;
      errz = TMath::Min(0.028*(chargematch+cl->GetNy()+cl->GetNz()-nz+ny),0.15)*scale;
      return 103;
    }
    if (cl->GetType()==2 || cl->GetType()==11 ){ 
      erry = TMath::Min(0.0010*(1+chargematch+cl->GetNy()+cl->GetNz()-nz+ny),0.05)*scale;
      errz = TMath::Min(0.025*(1+chargematch+cl->GetNy()+cl->GetNz()-nz+ny),0.5)*scale;
      return 104;
    }
    
    if (cl->GetType()>100 ){     							       
      if ((chargematch+cl->GetNy()+cl->GetNz()-nz-ny<1.5)){
	errz = 0.05*scale;
	erry = 0.00096*scale;
	return 105;
      }
      if (cl->GetNy()+cl->GetNz()-nz-ny<1){
	errz = 0.10*scale;
	erry = 0.0025*scale;
	return 106;
      }

      errz = TMath::Min(0.05*(chargematch+cl->GetNy()+cl->GetNz()-nz-ny),0.4)*scale;
      erry = TMath::Min(0.003*(chargematch+cl->GetNy()+cl->GetNz()-nz-ny),0.05)*scale;
      return 107;
    }    
    Float_t diff = cl->GetNy()+cl->GetNz()-ny-nz;
    if (diff<1) diff=1;
    if (diff>4) diff=4;
        
    if (cl->GetType()==5||cl->GetType()==6||cl->GetType()==7||cl->GetType()==8){
      errz = 0.14*diff;
      erry = 0.003*diff;
      return 108;
    }  
    erry = 0.04*diff;
    errz = 0.06*diff;
    return 109;
  }
  //DRIFTS
  Float_t normq = cl->GetQ()/(TMath::Sqrt(1+tgl*tgl+tgphitr*tgphitr));
  Float_t chargematch = normq/expQ;
  chargematch/=2.4; // F. Prino Sept. 2007: SDD charge conversion keV->ADC
  Float_t factorz=1;
  Int_t   cnz = cl->GetNz()%10;
  //charge match
  if (cl->GetType()==1){
    if (chargematch<1.25){
      erry =  0.0028*(1.+6./cl->GetQ());  // gold clusters
    }
    else{
      erry = 0.003*chargematch;
      if (cl->GetNz()==3) erry*=1.5;
    }
    if (chargematch<1.0){
      errz =  0.0011*(1.+6./cl->GetQ());
    }
    else{
      errz = 0.002*(1+2*(chargematch-1.));
    }
    if (cnz>nz+0.6) {
      erry*=(cnz-nz+0.5);
      errz*=1.4*(cnz-nz+0.5);
    }
  }
  if (cl->GetType()>1){
    if (chargematch<1){
      erry =  0.00385*(1.+6./cl->GetQ());  // gold clusters
      errz =  0.0016*(1.+6./cl->GetQ());
    }
    else{
      errz = 0.0014*(1+3*(chargematch-1.));
      erry = 0.003*(1+3*(chargematch-1.));
    } 
    if (cnz>nz+0.6) {
      erry*=(cnz-nz+0.5);
      errz*=1.4*(cnz-nz+0.5);
    }
  }

  if (TMath::Abs(cl->GetY())>2.5){
    factorz*=1+2*(TMath::Abs(cl->GetY())-2.5);
  }
  if (TMath::Abs(cl->GetY())<1){
    factorz*=1.+0.5*TMath::Abs(TMath::Abs(cl->GetY())-1.);
  }
  factorz= TMath::Min(factorz,float(4.));  
  errz*=factorz;

  erry= TMath::Min(erry,float(0.05));
  errz= TMath::Min(errz,float(0.05));  
  return 200;
}
//--------------------------------------------------------------------------
Int_t AliITSClusterParam::GetErrorParamAngle(Int_t layer,
					     const AliITSRecPoint *cl,
					     Float_t tgl,Float_t tgphitr,
					     Float_t &erry,Float_t &errz)
{
  //
  // Calculate cluster position error (parametrization extracted from rp-hit
  // residuals, as a function of angle between track and det module plane.
  // Origin: M.Lunardon, S.Moretto)
  //
  const int   kNcfSPDResX = 21;
  const float kCfSPDResX[kNcfSPDResX] = {+1.1201e+01,+2.0903e+00,-2.2909e-01,-2.6413e-01,+4.2135e-01,-3.7190e-01,
					 +4.2339e-01,+1.8679e-01,-5.1249e-01,+1.8421e-01,+4.8849e-02,-4.3127e-01,
					 -1.1148e-01,+3.1984e-03,-2.5743e-01,-6.6408e-02,+3.0756e-01,+2.6809e-01,
					 -5.0339e-03,-1.4964e-01,-1.1001e-01};
  const float kSPDazMax=56.000000;
  //
  const int   kNcfSPDMeanX = 16;
  const float kCfSPDMeanX[kNcfSPDMeanX] = {-1.2532e+00,-3.8185e-01,-8.9039e-01,+2.6648e+00,+7.0361e-01,+1.2298e+00,
					   +3.2871e-01,+7.8487e-02,-1.6792e-01,-1.3966e-01,-3.1670e-01,-2.1795e-01,
					   -1.9451e-01,-4.9347e-02,-1.9186e-01,-1.9195e-01};
  //
  const int   kNcfSPDResZ = 5;
  const float kCfSPDResZ[kNcfSPDResZ] = {+9.2384e+01,+3.4352e-01,-2.7317e+01,-1.4642e-01,+2.0868e+00};
  const float kSPDpolMin=34.358002, kSPDpolMax=145.000000;
  //
  const Double_t kMaxSigmaSDDx=100.;
  const Double_t kMaxSigmaSDDz=400.;
  const Double_t kMaxSigmaSSDx=100.;
  const Double_t kMaxSigmaSSDz=1000.;
  //  
  const Double_t kParamSDDx[2]={30.93,0.059};
  const Double_t kParamSDDz[2]={33.09,0.011};
  const Double_t kParamSSDx[2]={18.64,-0.0046};
  const Double_t kParamSSDz[2]={784.4,-0.828};
  Double_t sigmax=1000.0,sigmaz=1000.0;
  Double_t biasx = 0.0;

  Int_t volId = (Int_t)cl->GetVolumeId();
  Double_t rotMA[9]; AliGeomManager::GetRotation(volId,rotMA);      // misaligned rotation
  Double_t rotOR[9]; AliGeomManager::GetOrigRotation(volId,rotOR);  // original rotation
  // difference in phi of original and misaligned sensors
  double cross = rotOR[1]*rotMA[4]-rotOR[4]*rotMA[1];
  cross /= TMath::Sqrt( (1.-rotOR[7]*rotOR[7]) * (1.-rotMA[7]*rotMA[7]) );
  Double_t angleAzi = TMath::Abs(TMath::ATan(tgphitr) - TMath::ASin(cross) );
  Double_t anglePol = TMath::Abs(TMath::ATan(tgl));

  if(angleAzi>0.5*TMath::Pi()) angleAzi = TMath::Pi()-angleAzi;
  if(anglePol>0.5*TMath::Pi()) anglePol = TMath::Pi()-anglePol;
  Double_t angleAziDeg = angleAzi*180./TMath::Pi();
  Double_t anglePolDeg = anglePol*180./TMath::Pi();
  
  if(layer==0 || layer==1) { // SPD
    //
    float phiInt    = angleAziDeg/kSPDazMax; // mapped to -1:1
    if (phiInt>1) phiInt = 1; else if (phiInt<-1) phiInt = -1;
    float phiAbsInt = (TMath::Abs(angleAziDeg+angleAziDeg) - kSPDazMax)/kSPDazMax; // mapped to -1:1
    if (phiAbsInt>1) phiAbsInt = 1; else if (phiAbsInt<-1) phiAbsInt = -1;
    anglePolDeg += 90; // the parameterization was provided in polar angle (90 deg - normal to sensor)
    float polInt   = (anglePolDeg+anglePolDeg - (kSPDpolMax+kSPDpolMin))/(kSPDpolMax-kSPDpolMin); // mapped to -1:1
    if (polInt>1) polInt = 1; else if (polInt<-1) polInt = -1;
    //
    sigmax = AliCheb3DCalc::ChebEval1D(phiAbsInt, kCfSPDResX , kNcfSPDResX);
    biasx  = AliCheb3DCalc::ChebEval1D(phiInt   , kCfSPDMeanX, kNcfSPDMeanX);
    sigmaz = AliCheb3DCalc::ChebEval1D(polInt   , kCfSPDResZ , kNcfSPDResZ);
    //
    // for the moment for the SPD only, need to decide where to put it
    biasx *= 1e-4;
    
  } else if(layer==2 || layer==3) { // SDD

    sigmax = angleAziDeg*kParamSDDx[1]+kParamSDDx[0];
    sigmaz = kParamSDDz[0]+kParamSDDz[1]*anglePolDeg;
    if(sigmax > kMaxSigmaSDDx) sigmax = kMaxSigmaSDDx;
    if(sigmaz > kMaxSigmaSDDz) sigmax = kMaxSigmaSDDz;
    
  } else if(layer==4 || layer==5) { // SSD

    sigmax = angleAziDeg*kParamSSDx[1]+kParamSSDx[0];
    sigmaz = kParamSSDz[0]+kParamSSDz[1]*anglePolDeg;
    if(sigmax > kMaxSigmaSSDx) sigmax = kMaxSigmaSSDx;
    if(sigmaz > kMaxSigmaSSDz) sigmax = kMaxSigmaSSDz;
    
  }

  // convert from micron to cm
  erry = 1.e-4*sigmax; 
  errz = 1.e-4*sigmaz;
  

  return 1;
}
//--------------------------------------------------------------------------
Int_t AliITSClusterParam::GetErrorParamAngleOld(Int_t layer,
						const AliITSRecPoint *cl,
						Float_t tgl,Float_t tgphitr,
						Float_t &erry,Float_t &errz)
{
  //
  // Calculate cluster position error (parametrization extracted from rp-hit
  // residuals, as a function of angle between track and det module plane.
  // Origin: M.Lunardon, S.Moretto)
  //

  Double_t maxSigmaSPDx=100.;
  Double_t maxSigmaSPDz=400.;
  Double_t maxSigmaSDDx=100.;
  Double_t maxSigmaSDDz=400.;
  Double_t maxSigmaSSDx=100.;
  Double_t maxSigmaSSDz=1000.;
  
  Double_t paramSPDx[3]={-6.417,0.18,11.14};
  Double_t paramSPDz[2]={118.,-0.155};
  Double_t paramSDDx[2]={30.93,0.059};
  Double_t paramSDDz[2]={33.09,0.011};
  Double_t paramSSDx[2]={18.64,-0.0046};
  Double_t paramSSDz[2]={784.4,-0.828};
  Double_t sigmax=1000.0,sigmaz=1000.0;
  
  Int_t volId = (Int_t)cl->GetVolumeId();
  Double_t rotMA[9]; AliGeomManager::GetRotation(volId,rotMA);      // misaligned rotation
  Double_t rotOR[9]; AliGeomManager::GetOrigRotation(volId,rotOR);  // original rotation
  // difference in phi of original and misaligned sensors
  double cross = rotOR[1]*rotMA[4]-rotOR[4]*rotMA[1];
  cross /= TMath::Sqrt( (1.-rotOR[7]*rotOR[7]) * (1.-rotMA[7]*rotMA[7]) );
  Double_t angleAzi = TMath::Abs(TMath::ATan(tgphitr) - TMath::ASin(cross) );
  Double_t anglePol = TMath::Abs(TMath::ATan(tgl));

  if(angleAzi>0.5*TMath::Pi()) angleAzi = TMath::Pi()-angleAzi;
  if(anglePol>0.5*TMath::Pi()) anglePol = TMath::Pi()-anglePol;
  Double_t angleAziDeg = angleAzi*180./TMath::Pi();
  Double_t anglePolDeg = anglePol*180./TMath::Pi();
  
  if(layer==0 || layer==1) { // SPD

    sigmax = TMath::Exp(angleAziDeg*paramSPDx[1]+paramSPDx[0])+paramSPDx[2];
    sigmaz = paramSPDz[0]+paramSPDz[1]*anglePolDeg;
    if(sigmax > maxSigmaSPDx) sigmax = maxSigmaSPDx;
    if(sigmaz > maxSigmaSPDz) sigmax = maxSigmaSPDz;

  } else if(layer==2 || layer==3) { // SDD

    sigmax = angleAziDeg*paramSDDx[1]+paramSDDx[0];
    sigmaz = paramSDDz[0]+paramSDDz[1]*anglePolDeg;
    if(sigmax > maxSigmaSDDx) sigmax = maxSigmaSDDx;
    if(sigmaz > maxSigmaSDDz) sigmax = maxSigmaSDDz;
    
  } else if(layer==4 || layer==5) { // SSD

    sigmax = angleAziDeg*paramSSDx[1]+paramSSDx[0];
    sigmaz = paramSSDz[0]+paramSSDz[1]*anglePolDeg;
    if(sigmax > maxSigmaSSDx) sigmax = maxSigmaSSDx;
    if(sigmaz > maxSigmaSSDz) sigmax = maxSigmaSSDz;
    
  }

  // convert from micron to cm
  erry = 1.e-4*sigmax; 
  errz = 1.e-4*sigmaz;
  
  return 1;
}
//--------------------------------------------------------------------------
void AliITSClusterParam::Print(Option_t* /*option*/) const {
  //
  // Print param Information
  //

  //
  // Error parameterization
  //
  printf("NOT YET...\n");
  return;
}





 AliITSClusterParam.cxx:1
 AliITSClusterParam.cxx:2
 AliITSClusterParam.cxx:3
 AliITSClusterParam.cxx:4
 AliITSClusterParam.cxx:5
 AliITSClusterParam.cxx:6
 AliITSClusterParam.cxx:7
 AliITSClusterParam.cxx:8
 AliITSClusterParam.cxx:9
 AliITSClusterParam.cxx:10
 AliITSClusterParam.cxx:11
 AliITSClusterParam.cxx:12
 AliITSClusterParam.cxx:13
 AliITSClusterParam.cxx:14
 AliITSClusterParam.cxx:15
 AliITSClusterParam.cxx:16
 AliITSClusterParam.cxx:17
 AliITSClusterParam.cxx:18
 AliITSClusterParam.cxx:19
 AliITSClusterParam.cxx:20
 AliITSClusterParam.cxx:21
 AliITSClusterParam.cxx:22
 AliITSClusterParam.cxx:23
 AliITSClusterParam.cxx:24
 AliITSClusterParam.cxx:25
 AliITSClusterParam.cxx:26
 AliITSClusterParam.cxx:27
 AliITSClusterParam.cxx:28
 AliITSClusterParam.cxx:29
 AliITSClusterParam.cxx:30
 AliITSClusterParam.cxx:31
 AliITSClusterParam.cxx:32
 AliITSClusterParam.cxx:33
 AliITSClusterParam.cxx:34
 AliITSClusterParam.cxx:35
 AliITSClusterParam.cxx:36
 AliITSClusterParam.cxx:37
 AliITSClusterParam.cxx:38
 AliITSClusterParam.cxx:39
 AliITSClusterParam.cxx:40
 AliITSClusterParam.cxx:41
 AliITSClusterParam.cxx:42
 AliITSClusterParam.cxx:43
 AliITSClusterParam.cxx:44
 AliITSClusterParam.cxx:45
 AliITSClusterParam.cxx:46
 AliITSClusterParam.cxx:47
 AliITSClusterParam.cxx:48
 AliITSClusterParam.cxx:49
 AliITSClusterParam.cxx:50
 AliITSClusterParam.cxx:51
 AliITSClusterParam.cxx:52
 AliITSClusterParam.cxx:53
 AliITSClusterParam.cxx:54
 AliITSClusterParam.cxx:55
 AliITSClusterParam.cxx:56
 AliITSClusterParam.cxx:57
 AliITSClusterParam.cxx:58
 AliITSClusterParam.cxx:59
 AliITSClusterParam.cxx:60
 AliITSClusterParam.cxx:61
 AliITSClusterParam.cxx:62
 AliITSClusterParam.cxx:63
 AliITSClusterParam.cxx:64
 AliITSClusterParam.cxx:65
 AliITSClusterParam.cxx:66
 AliITSClusterParam.cxx:67
 AliITSClusterParam.cxx:68
 AliITSClusterParam.cxx:69
 AliITSClusterParam.cxx:70
 AliITSClusterParam.cxx:71
 AliITSClusterParam.cxx:72
 AliITSClusterParam.cxx:73
 AliITSClusterParam.cxx:74
 AliITSClusterParam.cxx:75
 AliITSClusterParam.cxx:76
 AliITSClusterParam.cxx:77
 AliITSClusterParam.cxx:78
 AliITSClusterParam.cxx:79
 AliITSClusterParam.cxx:80
 AliITSClusterParam.cxx:81
 AliITSClusterParam.cxx:82
 AliITSClusterParam.cxx:83
 AliITSClusterParam.cxx:84
 AliITSClusterParam.cxx:85
 AliITSClusterParam.cxx:86
 AliITSClusterParam.cxx:87
 AliITSClusterParam.cxx:88
 AliITSClusterParam.cxx:89
 AliITSClusterParam.cxx:90
 AliITSClusterParam.cxx:91
 AliITSClusterParam.cxx:92
 AliITSClusterParam.cxx:93
 AliITSClusterParam.cxx:94
 AliITSClusterParam.cxx:95
 AliITSClusterParam.cxx:96
 AliITSClusterParam.cxx:97
 AliITSClusterParam.cxx:98
 AliITSClusterParam.cxx:99
 AliITSClusterParam.cxx:100
 AliITSClusterParam.cxx:101
 AliITSClusterParam.cxx:102
 AliITSClusterParam.cxx:103
 AliITSClusterParam.cxx:104
 AliITSClusterParam.cxx:105
 AliITSClusterParam.cxx:106
 AliITSClusterParam.cxx:107
 AliITSClusterParam.cxx:108
 AliITSClusterParam.cxx:109
 AliITSClusterParam.cxx:110
 AliITSClusterParam.cxx:111
 AliITSClusterParam.cxx:112
 AliITSClusterParam.cxx:113
 AliITSClusterParam.cxx:114
 AliITSClusterParam.cxx:115
 AliITSClusterParam.cxx:116
 AliITSClusterParam.cxx:117
 AliITSClusterParam.cxx:118
 AliITSClusterParam.cxx:119
 AliITSClusterParam.cxx:120
 AliITSClusterParam.cxx:121
 AliITSClusterParam.cxx:122
 AliITSClusterParam.cxx:123
 AliITSClusterParam.cxx:124
 AliITSClusterParam.cxx:125
 AliITSClusterParam.cxx:126
 AliITSClusterParam.cxx:127
 AliITSClusterParam.cxx:128
 AliITSClusterParam.cxx:129
 AliITSClusterParam.cxx:130
 AliITSClusterParam.cxx:131
 AliITSClusterParam.cxx:132
 AliITSClusterParam.cxx:133
 AliITSClusterParam.cxx:134
 AliITSClusterParam.cxx:135
 AliITSClusterParam.cxx:136
 AliITSClusterParam.cxx:137
 AliITSClusterParam.cxx:138
 AliITSClusterParam.cxx:139
 AliITSClusterParam.cxx:140
 AliITSClusterParam.cxx:141
 AliITSClusterParam.cxx:142
 AliITSClusterParam.cxx:143
 AliITSClusterParam.cxx:144
 AliITSClusterParam.cxx:145
 AliITSClusterParam.cxx:146
 AliITSClusterParam.cxx:147
 AliITSClusterParam.cxx:148
 AliITSClusterParam.cxx:149
 AliITSClusterParam.cxx:150
 AliITSClusterParam.cxx:151
 AliITSClusterParam.cxx:152
 AliITSClusterParam.cxx:153
 AliITSClusterParam.cxx:154
 AliITSClusterParam.cxx:155
 AliITSClusterParam.cxx:156
 AliITSClusterParam.cxx:157
 AliITSClusterParam.cxx:158
 AliITSClusterParam.cxx:159
 AliITSClusterParam.cxx:160
 AliITSClusterParam.cxx:161
 AliITSClusterParam.cxx:162
 AliITSClusterParam.cxx:163
 AliITSClusterParam.cxx:164
 AliITSClusterParam.cxx:165
 AliITSClusterParam.cxx:166
 AliITSClusterParam.cxx:167
 AliITSClusterParam.cxx:168
 AliITSClusterParam.cxx:169
 AliITSClusterParam.cxx:170
 AliITSClusterParam.cxx:171
 AliITSClusterParam.cxx:172
 AliITSClusterParam.cxx:173
 AliITSClusterParam.cxx:174
 AliITSClusterParam.cxx:175
 AliITSClusterParam.cxx:176
 AliITSClusterParam.cxx:177
 AliITSClusterParam.cxx:178
 AliITSClusterParam.cxx:179
 AliITSClusterParam.cxx:180
 AliITSClusterParam.cxx:181
 AliITSClusterParam.cxx:182
 AliITSClusterParam.cxx:183
 AliITSClusterParam.cxx:184
 AliITSClusterParam.cxx:185
 AliITSClusterParam.cxx:186
 AliITSClusterParam.cxx:187
 AliITSClusterParam.cxx:188
 AliITSClusterParam.cxx:189
 AliITSClusterParam.cxx:190
 AliITSClusterParam.cxx:191
 AliITSClusterParam.cxx:192
 AliITSClusterParam.cxx:193
 AliITSClusterParam.cxx:194
 AliITSClusterParam.cxx:195
 AliITSClusterParam.cxx:196
 AliITSClusterParam.cxx:197
 AliITSClusterParam.cxx:198
 AliITSClusterParam.cxx:199
 AliITSClusterParam.cxx:200
 AliITSClusterParam.cxx:201
 AliITSClusterParam.cxx:202
 AliITSClusterParam.cxx:203
 AliITSClusterParam.cxx:204
 AliITSClusterParam.cxx:205
 AliITSClusterParam.cxx:206
 AliITSClusterParam.cxx:207
 AliITSClusterParam.cxx:208
 AliITSClusterParam.cxx:209
 AliITSClusterParam.cxx:210
 AliITSClusterParam.cxx:211
 AliITSClusterParam.cxx:212
 AliITSClusterParam.cxx:213
 AliITSClusterParam.cxx:214
 AliITSClusterParam.cxx:215
 AliITSClusterParam.cxx:216
 AliITSClusterParam.cxx:217
 AliITSClusterParam.cxx:218
 AliITSClusterParam.cxx:219
 AliITSClusterParam.cxx:220
 AliITSClusterParam.cxx:221
 AliITSClusterParam.cxx:222
 AliITSClusterParam.cxx:223
 AliITSClusterParam.cxx:224
 AliITSClusterParam.cxx:225
 AliITSClusterParam.cxx:226
 AliITSClusterParam.cxx:227
 AliITSClusterParam.cxx:228
 AliITSClusterParam.cxx:229
 AliITSClusterParam.cxx:230
 AliITSClusterParam.cxx:231
 AliITSClusterParam.cxx:232
 AliITSClusterParam.cxx:233
 AliITSClusterParam.cxx:234
 AliITSClusterParam.cxx:235
 AliITSClusterParam.cxx:236
 AliITSClusterParam.cxx:237
 AliITSClusterParam.cxx:238
 AliITSClusterParam.cxx:239
 AliITSClusterParam.cxx:240
 AliITSClusterParam.cxx:241
 AliITSClusterParam.cxx:242
 AliITSClusterParam.cxx:243
 AliITSClusterParam.cxx:244
 AliITSClusterParam.cxx:245
 AliITSClusterParam.cxx:246
 AliITSClusterParam.cxx:247
 AliITSClusterParam.cxx:248
 AliITSClusterParam.cxx:249
 AliITSClusterParam.cxx:250
 AliITSClusterParam.cxx:251
 AliITSClusterParam.cxx:252
 AliITSClusterParam.cxx:253
 AliITSClusterParam.cxx:254
 AliITSClusterParam.cxx:255
 AliITSClusterParam.cxx:256
 AliITSClusterParam.cxx:257
 AliITSClusterParam.cxx:258
 AliITSClusterParam.cxx:259
 AliITSClusterParam.cxx:260
 AliITSClusterParam.cxx:261
 AliITSClusterParam.cxx:262
 AliITSClusterParam.cxx:263
 AliITSClusterParam.cxx:264
 AliITSClusterParam.cxx:265
 AliITSClusterParam.cxx:266
 AliITSClusterParam.cxx:267
 AliITSClusterParam.cxx:268
 AliITSClusterParam.cxx:269
 AliITSClusterParam.cxx:270
 AliITSClusterParam.cxx:271
 AliITSClusterParam.cxx:272
 AliITSClusterParam.cxx:273
 AliITSClusterParam.cxx:274
 AliITSClusterParam.cxx:275
 AliITSClusterParam.cxx:276
 AliITSClusterParam.cxx:277
 AliITSClusterParam.cxx:278
 AliITSClusterParam.cxx:279
 AliITSClusterParam.cxx:280
 AliITSClusterParam.cxx:281
 AliITSClusterParam.cxx:282
 AliITSClusterParam.cxx:283
 AliITSClusterParam.cxx:284
 AliITSClusterParam.cxx:285
 AliITSClusterParam.cxx:286
 AliITSClusterParam.cxx:287
 AliITSClusterParam.cxx:288
 AliITSClusterParam.cxx:289
 AliITSClusterParam.cxx:290
 AliITSClusterParam.cxx:291
 AliITSClusterParam.cxx:292
 AliITSClusterParam.cxx:293
 AliITSClusterParam.cxx:294
 AliITSClusterParam.cxx:295
 AliITSClusterParam.cxx:296
 AliITSClusterParam.cxx:297
 AliITSClusterParam.cxx:298
 AliITSClusterParam.cxx:299
 AliITSClusterParam.cxx:300
 AliITSClusterParam.cxx:301
 AliITSClusterParam.cxx:302
 AliITSClusterParam.cxx:303
 AliITSClusterParam.cxx:304
 AliITSClusterParam.cxx:305
 AliITSClusterParam.cxx:306
 AliITSClusterParam.cxx:307
 AliITSClusterParam.cxx:308
 AliITSClusterParam.cxx:309
 AliITSClusterParam.cxx:310
 AliITSClusterParam.cxx:311
 AliITSClusterParam.cxx:312
 AliITSClusterParam.cxx:313
 AliITSClusterParam.cxx:314
 AliITSClusterParam.cxx:315
 AliITSClusterParam.cxx:316
 AliITSClusterParam.cxx:317
 AliITSClusterParam.cxx:318
 AliITSClusterParam.cxx:319
 AliITSClusterParam.cxx:320
 AliITSClusterParam.cxx:321
 AliITSClusterParam.cxx:322
 AliITSClusterParam.cxx:323
 AliITSClusterParam.cxx:324
 AliITSClusterParam.cxx:325
 AliITSClusterParam.cxx:326
 AliITSClusterParam.cxx:327
 AliITSClusterParam.cxx:328
 AliITSClusterParam.cxx:329
 AliITSClusterParam.cxx:330
 AliITSClusterParam.cxx:331
 AliITSClusterParam.cxx:332
 AliITSClusterParam.cxx:333
 AliITSClusterParam.cxx:334
 AliITSClusterParam.cxx:335
 AliITSClusterParam.cxx:336
 AliITSClusterParam.cxx:337
 AliITSClusterParam.cxx:338
 AliITSClusterParam.cxx:339
 AliITSClusterParam.cxx:340
 AliITSClusterParam.cxx:341
 AliITSClusterParam.cxx:342
 AliITSClusterParam.cxx:343
 AliITSClusterParam.cxx:344
 AliITSClusterParam.cxx:345
 AliITSClusterParam.cxx:346
 AliITSClusterParam.cxx:347
 AliITSClusterParam.cxx:348
 AliITSClusterParam.cxx:349
 AliITSClusterParam.cxx:350
 AliITSClusterParam.cxx:351
 AliITSClusterParam.cxx:352
 AliITSClusterParam.cxx:353
 AliITSClusterParam.cxx:354
 AliITSClusterParam.cxx:355
 AliITSClusterParam.cxx:356
 AliITSClusterParam.cxx:357
 AliITSClusterParam.cxx:358
 AliITSClusterParam.cxx:359
 AliITSClusterParam.cxx:360
 AliITSClusterParam.cxx:361
 AliITSClusterParam.cxx:362
 AliITSClusterParam.cxx:363
 AliITSClusterParam.cxx:364
 AliITSClusterParam.cxx:365
 AliITSClusterParam.cxx:366
 AliITSClusterParam.cxx:367
 AliITSClusterParam.cxx:368
 AliITSClusterParam.cxx:369
 AliITSClusterParam.cxx:370
 AliITSClusterParam.cxx:371
 AliITSClusterParam.cxx:372
 AliITSClusterParam.cxx:373
 AliITSClusterParam.cxx:374
 AliITSClusterParam.cxx:375
 AliITSClusterParam.cxx:376
 AliITSClusterParam.cxx:377
 AliITSClusterParam.cxx:378
 AliITSClusterParam.cxx:379
 AliITSClusterParam.cxx:380
 AliITSClusterParam.cxx:381
 AliITSClusterParam.cxx:382
 AliITSClusterParam.cxx:383
 AliITSClusterParam.cxx:384
 AliITSClusterParam.cxx:385
 AliITSClusterParam.cxx:386
 AliITSClusterParam.cxx:387
 AliITSClusterParam.cxx:388
 AliITSClusterParam.cxx:389
 AliITSClusterParam.cxx:390
 AliITSClusterParam.cxx:391
 AliITSClusterParam.cxx:392
 AliITSClusterParam.cxx:393
 AliITSClusterParam.cxx:394
 AliITSClusterParam.cxx:395
 AliITSClusterParam.cxx:396
 AliITSClusterParam.cxx:397
 AliITSClusterParam.cxx:398
 AliITSClusterParam.cxx:399
 AliITSClusterParam.cxx:400
 AliITSClusterParam.cxx:401
 AliITSClusterParam.cxx:402
 AliITSClusterParam.cxx:403
 AliITSClusterParam.cxx:404
 AliITSClusterParam.cxx:405
 AliITSClusterParam.cxx:406
 AliITSClusterParam.cxx:407
 AliITSClusterParam.cxx:408
 AliITSClusterParam.cxx:409
 AliITSClusterParam.cxx:410
 AliITSClusterParam.cxx:411
 AliITSClusterParam.cxx:412
 AliITSClusterParam.cxx:413
 AliITSClusterParam.cxx:414
 AliITSClusterParam.cxx:415
 AliITSClusterParam.cxx:416
 AliITSClusterParam.cxx:417
 AliITSClusterParam.cxx:418
 AliITSClusterParam.cxx:419
 AliITSClusterParam.cxx:420
 AliITSClusterParam.cxx:421
 AliITSClusterParam.cxx:422
 AliITSClusterParam.cxx:423
 AliITSClusterParam.cxx:424
 AliITSClusterParam.cxx:425
 AliITSClusterParam.cxx:426
 AliITSClusterParam.cxx:427
 AliITSClusterParam.cxx:428
 AliITSClusterParam.cxx:429
 AliITSClusterParam.cxx:430
 AliITSClusterParam.cxx:431
 AliITSClusterParam.cxx:432
 AliITSClusterParam.cxx:433
 AliITSClusterParam.cxx:434
 AliITSClusterParam.cxx:435
 AliITSClusterParam.cxx:436
 AliITSClusterParam.cxx:437
 AliITSClusterParam.cxx:438
 AliITSClusterParam.cxx:439
 AliITSClusterParam.cxx:440
 AliITSClusterParam.cxx:441
 AliITSClusterParam.cxx:442
 AliITSClusterParam.cxx:443
 AliITSClusterParam.cxx:444
 AliITSClusterParam.cxx:445
 AliITSClusterParam.cxx:446
 AliITSClusterParam.cxx:447
 AliITSClusterParam.cxx:448
 AliITSClusterParam.cxx:449
 AliITSClusterParam.cxx:450
 AliITSClusterParam.cxx:451
 AliITSClusterParam.cxx:452
 AliITSClusterParam.cxx:453
 AliITSClusterParam.cxx:454
 AliITSClusterParam.cxx:455
 AliITSClusterParam.cxx:456
 AliITSClusterParam.cxx:457
 AliITSClusterParam.cxx:458
 AliITSClusterParam.cxx:459
 AliITSClusterParam.cxx:460
 AliITSClusterParam.cxx:461
 AliITSClusterParam.cxx:462
 AliITSClusterParam.cxx:463
 AliITSClusterParam.cxx:464
 AliITSClusterParam.cxx:465
 AliITSClusterParam.cxx:466
 AliITSClusterParam.cxx:467
 AliITSClusterParam.cxx:468
 AliITSClusterParam.cxx:469
 AliITSClusterParam.cxx:470
 AliITSClusterParam.cxx:471
 AliITSClusterParam.cxx:472
 AliITSClusterParam.cxx:473
 AliITSClusterParam.cxx:474
 AliITSClusterParam.cxx:475
 AliITSClusterParam.cxx:476
 AliITSClusterParam.cxx:477
 AliITSClusterParam.cxx:478
 AliITSClusterParam.cxx:479
 AliITSClusterParam.cxx:480
 AliITSClusterParam.cxx:481
 AliITSClusterParam.cxx:482
 AliITSClusterParam.cxx:483
 AliITSClusterParam.cxx:484
 AliITSClusterParam.cxx:485
 AliITSClusterParam.cxx:486
 AliITSClusterParam.cxx:487
 AliITSClusterParam.cxx:488
 AliITSClusterParam.cxx:489
 AliITSClusterParam.cxx:490
 AliITSClusterParam.cxx:491
 AliITSClusterParam.cxx:492
 AliITSClusterParam.cxx:493
 AliITSClusterParam.cxx:494
 AliITSClusterParam.cxx:495
 AliITSClusterParam.cxx:496
 AliITSClusterParam.cxx:497
 AliITSClusterParam.cxx:498
 AliITSClusterParam.cxx:499
 AliITSClusterParam.cxx:500
 AliITSClusterParam.cxx:501
 AliITSClusterParam.cxx:502
 AliITSClusterParam.cxx:503
 AliITSClusterParam.cxx:504
 AliITSClusterParam.cxx:505
 AliITSClusterParam.cxx:506
 AliITSClusterParam.cxx:507
 AliITSClusterParam.cxx:508
 AliITSClusterParam.cxx:509
 AliITSClusterParam.cxx:510
 AliITSClusterParam.cxx:511
 AliITSClusterParam.cxx:512
 AliITSClusterParam.cxx:513
 AliITSClusterParam.cxx:514
 AliITSClusterParam.cxx:515
 AliITSClusterParam.cxx:516