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.                  *
**************************************************************************/

/*
$Id$
*/

#include <Riostream.h>
#include <TGeoGlobalMagField.h>
#include <TH1.h>
#include <TString.h>
#include "AliITS.h"
#include "AliITSdigitSPD.h"
#include "AliITShit.h"
#include "AliITSmodule.h"
#include "AliITSpList.h"
#include "AliITSCalibrationSPD.h"
#include "AliITSsegmentationSPD.h"
#include "AliITSsimulationSPD.h"
#include "AliLog.h"
#include "AliRun.h"
#include "AliMagF.h"
#include "AliMathBase.h"

//#define DEBUG

using std::endl;
using std::cout;
ClassImp(AliITSsimulationSPD)
////////////////////////////////////////////////////////////////////////
//  Version: 1
//  Modified by D. Elia, G.E. Bruno, H. Tydesjo 
//  Fast diffusion code by Bjorn S. Nilsen
//  March-April 2006
//  October     2007: GetCalibrationObjects() removed
//
//  Version: 0
//  Written by Boris Batyunya
//  December 20 1999
//
//
// AliITSsimulationSPD is to do the simulation of SPDs.
//
////////////////////////////////////////////////////////////////////////

//______________________________________________________________________
AliITSsimulationSPD::AliITSsimulationSPD():
AliITSsimulation(),
fHis(0),
fSPDname(),
fCoupling(),
fLorentz(kFALSE),
fTanLorAng(0),
fStrobe(kTRUE),
fStrobeLenght(4),
fStrobePhase(-12.5e-9){
   // Default constructor.
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //    A default constructed AliITSsimulationSPD class.

   AliDebug(1,Form("Calling default constructor"));
//    Init();
}
//______________________________________________________________________
AliITSsimulationSPD::AliITSsimulationSPD(AliITSDetTypeSim *dettyp):
AliITSsimulation(dettyp),
fHis(0),
fSPDname(),
fCoupling(),
fLorentz(kFALSE),
fTanLorAng(0),
fStrobe(kTRUE),
fStrobeLenght(4),
fStrobePhase(-12.5e-9){
   // standard constructor
   // Inputs:
   //    AliITSsegmentation *seg  A pointer to the segmentation class
   //                             to be used for this simulation
   //    AliITSCalibration     *resp A pointer to the responce class to
   //                             be used for this simulation
   // Outputs:
   //    none.
   // Return:
   //    A default constructed AliITSsimulationSPD class.

   AliDebug(1,Form("Calling standard constructor "));
   Init();
}
//______________________________________________________________________
void AliITSsimulationSPD::Init(){
   // Initilization
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //    none.
   const Double_t kmictocm = 1.0e-4; // convert microns to cm.

   SetModuleNumber(0);
   SetEventNumber(0);
   SetMap(new AliITSpList(GetNPixelsZ(),GetNPixelsX()));
   AliITSSimuParam* simpar = fDetType->GetSimuParam();
   AliITSsegmentationSPD* seg = (AliITSsegmentationSPD*)GetSegmentationModel(0);
   Double_t bias = simpar->GetSPDBiasVoltage();
//    cout << "Bias Voltage --> " << bias << endl; // dom    
   simpar->SetDistanceOverVoltage(kmictocm*seg->Dy(),bias);
// set kind of coupling ("old" or "new")
   char opt[20];
   simpar->GetSPDCouplingOption(opt);
   char *old = strstr(opt,"old");
   if (old) {
       fCoupling=2;
   } else {
       fCoupling=1;
   } // end if
   SetLorentzDrift(simpar->GetSPDLorentzDrift());
   if (fLorentz) SetTanLorAngle(simpar->GetSPDLorentzHoleWeight());
   //SetStrobeGeneration(kFALSE);
   if (fStrobe) GenerateStrobePhase();
}
//______________________________________________________________________
Bool_t AliITSsimulationSPD::SetTanLorAngle(Double_t WeightHole) {
    // This function set the Tangent of the Lorentz angle. 
    // A weighted average is used for electrons and holes 
    // Input: Double_t WeightHole: wheight for hole: it should be in the range [0,1]
    // output: Bool_t : kTRUE in case of success
    //
    if(!fDetType) {
      AliError("AliITSsimulationSPD::SetTanLorAngle: AliITSDetTypeSim* fDetType not set ");
      return kFALSE;}
    if(WeightHole<0) {
       WeightHole=0.;
       AliWarning("AliITSsimulationSPD::SetTanLorAngle: You have asked for negative Hole weight");
       AliWarning("AliITSsimulationSPD::SetTanLorAngle: I'm going to use only electrons");
    }
    if(WeightHole>1) {
       WeightHole=1.;
       AliWarning("AliITSsimulationSPD::SetTanLorAngle: You have asked for weight > 1");
       AliWarning("AliITSsimulationSPD::SetTanLorAngle: I'm going to use only holes");
    }
    Double_t WeightEle=1.-WeightHole;
    AliITSSimuParam* simpar = fDetType->GetSimuParam();
    AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
    if (!fld) AliFatal("The field is not initialized");
    Double_t bz = fld->SolenoidField();
    fTanLorAng = TMath::Tan(WeightHole*simpar->LorentzAngleHole(bz) +
                             WeightEle*simpar->LorentzAngleElectron(bz));
    return kTRUE;
}
//______________________________________________________________________
AliITSsimulationSPD::~AliITSsimulationSPD(){
   // destructor
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //     none.

   if (fHis) {
       fHis->Delete(); 
       delete fHis;     
   } // end if fHis
}
//______________________________________________________________________
AliITSsimulationSPD::AliITSsimulationSPD(const 
						   AliITSsimulationSPD 
						   &s) : AliITSsimulation(s),
fHis(s.fHis),
fSPDname(s.fSPDname),
fCoupling(s.fCoupling),
fLorentz(s.fLorentz),
fTanLorAng(s.fTanLorAng),
fStrobe(s.fStrobe),
fStrobeLenght(s.fStrobeLenght),
fStrobePhase(s.fStrobePhase){
   //     Copy Constructor
   // Inputs:
   //    AliITSsimulationSPD &s The original class for which
   //                                this class is a copy of
   // Outputs:
   //    none.
   // Return:

}
//______________________________________________________________________
AliITSsimulationSPD&  AliITSsimulationSPD::operator=(const 
                                          AliITSsimulationSPD &s){
   //    Assignment operator
   // Inputs:
   //    AliITSsimulationSPD &s The original class for which
   //                                this class is a copy of
   // Outputs:
   //    none.
   // Return:

   if(&s == this) return *this;
   this->fHis = s.fHis;
   fCoupling  = s.fCoupling;
   fSPDname   = s.fSPDname;
   fLorentz   = s.fLorentz;
   fTanLorAng = s.fTanLorAng;
   fStrobe       = s.fStrobe;
   fStrobeLenght = s.fStrobeLenght;
   fStrobePhase  = s.fStrobePhase;
   return *this;
}
/*
//______________________________________________________________________
AliITSsimulation&  AliITSsimulationSPD::operator=(const 
                                          AliITSsimulation &s){
   //    Assignment operator
   // Inputs:
   //    AliITSsimulationSPD &s The original class for which
   //                                this class is a copy of
   // Outputs:
   //    none.
   // Return:

   if(&s == this) return *this;
   Error("AliITSsimulationSPD","Not allowed to make a = with "
         "AliITSsimulationSPD","Using default creater instead");

   return *this;
}
*/
//______________________________________________________________________
void AliITSsimulationSPD::InitSimulationModule(Int_t module, Int_t event){
   //  This function creates maps to build the list of tracks for each
   //  summable digit. Inputs defined by base class.
   //  Inputs:
   //    Int_t module   // Module number to be simulated
   //    Int_t event    // Event number to be simulated
   //  Outputs:
   //    none
   //  Returns:
   //    none

   AliDebug(1,Form("(module=%d,event=%d)",module,event));
   const Double_t kmictocm = 1.0e-4; // convert microns to cm.
   AliITSSimuParam* simpar = fDetType->GetSimuParam();
   AliITSsegmentationSPD* seg = (AliITSsegmentationSPD*)GetSegmentationModel(0);
   SetModuleNumber(module);
   SetEventNumber(event);
   simpar->SetDistanceOverVoltage(kmictocm*seg->Dy(),simpar->GetSPDBiasVoltage(module)); 
   ClearMap();
}
//_____________________________________________________________________
void AliITSsimulationSPD::SDigitiseModule(AliITSmodule *mod,Int_t,
                                              Int_t event){
   //  This function begins the work of creating S-Digits.  Inputs defined
   //  by base class.
   //  Inputs:
   //    AliITSmodule *mod  //  module
   //    Int_t              //  not used
   //    Int_t event        //  Event number
   //  Outputs:
   //    none
   //  Return:
   //    test              //  test returns kTRUE if the module contained hits
   //                      //  test returns kFALSE if it did not contain hits

   AliDebug(1,Form("(mod=%p, ,event=%d)",mod,event));
   if(!(mod->GetNhits())){
       AliDebug(1,Form("In event %d module %d there are %d hits returning.",
			event, mod->GetIndex(),mod->GetNhits()));
       return;// if module has no hits don't create Sdigits
   } // end if
   SetModuleNumber(mod->GetIndex());
   if (fStrobe) if(event != GetEventNumber()) GenerateStrobePhase(); 
   SetEventNumber(event);
   InitSimulationModule( GetModuleNumber() , event );
   // HitToSDigit(mod);
   HitToSDigitFast(mod);
  if (fDetType->GetSimuParam()->GetSPDAddNoisyFlag())   AddNoisyPixels();
  if (fDetType->GetSimuParam()->GetSPDRemoveDeadFlag()) RemoveDeadPixels();

//    cout << "After Remove in SDigitiseModule !!!!!" << endl; // dom
//    cout << "Module " << mod->GetIndex() << " Event " << event << endl; // dom
   WriteSDigits();
   ClearMap();
}
//______________________________________________________________________
void AliITSsimulationSPD::WriteSDigits(){
   //  This function adds each S-Digit to pList
   //  Inputs:
   //    none.
   //  Outputs:
   //    none.
   //  Return:
   //    none
   Int_t ix, nix, iz, niz;
   static AliITS *aliITS = (AliITS*)gAlice->GetModule("ITS");

   AliDebug(1,Form("Writing SDigits for module %d",GetModuleNumber()));
//    cout << "WriteSDigits for module " << GetModuleNumber() << endl; // dom
   GetMap()->GetMaxMapIndex(niz, nix);
   for(iz=0; iz<niz; iz++)for(ix=0; ix<nix; ix++){
       if(GetMap()->GetSignalOnly(iz,ix)>0.0){
//            cout << " Signal gt 0  iz ix " << iz << ix << " Module " << GetModuleNumber() << endl; // dom
           aliITS->AddSumDigit(*(GetMap()->GetpListItem(iz,ix)));
	    if(AliDebugLevel()>0) {
	      AliDebug(1,Form("%d, %d",iz,ix));
	      cout << *(GetMap()->GetpListItem(iz,ix)) << endl;
           } // end if GetDebug
       } // end if GetMap()->GetSignalOnly(iz,ix)>0.0
   } // end for iz,ix
   return; 
}
//______________________________________________________________________
void AliITSsimulationSPD::FinishSDigitiseModule(){
   //  This function calls SDigitsToDigits which creates Digits from SDigits
   //  Inputs:
   //    none
   //  Outputs:
   //    none
   //  Return
   //    none

   AliDebug(1,"()");
//    cout << "FinishSDigitiseModule for module " << GetModuleNumber() << endl; // dom
   FrompListToDigits(); // Charge To Signal both adds noise and
   ClearMap();
   return;
}
//______________________________________________________________________
void AliITSsimulationSPD::DigitiseModule(AliITSmodule *mod,Int_t,
                                             Int_t event){
   //  This function creates Digits straight from the hits and then adds
   //  electronic noise to the digits before adding them to pList
   //  Each of the input variables is passed along to HitToSDigit
   //  Inputs:
   //    AliITSmodule *mod     module
   //    Int_t                 Dummy.
   //    Int_t                 Dummy
   //  Outputs:
   //     none.
   //  Return:
   //    none.

   if (fStrobe) if(event != GetEventNumber()) GenerateStrobePhase();
   AliDebug(1,Form("(mod=%p,,0)",mod));
   // HitToSDigit(mod);
   InitSimulationModule( mod->GetIndex(), event );
   HitToSDigitFast(mod);
   
  if (fDetType->GetSimuParam()->GetSPDAddNoisyFlag())   AddNoisyPixels();
  if (fDetType->GetSimuParam()->GetSPDRemoveDeadFlag()) RemoveDeadPixels();
//    cout << "After Remove in DigitiseModule in module " << mod->GetIndex() << endl; // dom
   FrompListToDigits();
   ClearMap();
}
//______________________________________________________________________
void AliITSsimulationSPD::HitToSDigit(AliITSmodule *mod){
   // Does the charge distributions using Gaussian diffusion charge charing.
   // Inputs:
   //    AliITSmodule *mod  Pointer to this module
   // Output:
   //    none.
   // Return:
   //    none.
   const Double_t kmictocm = 1.0e-4; // convert microns to cm.
   const Double_t kBunchLenght = 25e-9; // LHC clock
   TObjArray *hits = mod->GetHits();
   Int_t nhits = hits->GetEntriesFast();
   Int_t h,ix,iz,i;
   Int_t idtrack;
   Double_t x0=0.0,x1=0.0,y0=0.0,y1=0.0,z0=0.0,z1=0.0,de=0.0,ld=0.0;
   Double_t x,y,z,t,tp,st,dt=0.2,el,sig,sigx,sigz,fda;
   AliITSsegmentationSPD* seg = (AliITSsegmentationSPD*)GetSegmentationModel(0);
   AliITSSimuParam *simpar = fDetType->GetSimuParam();
   Double_t thick = 0.5*kmictocm*seg->Dy();  // Half Thickness
   simpar->GetSPDSigmaDiffusionAsymmetry(fda);  //

   AliDebug(1,Form("(mod=%p) fCoupling=%d",mod,fCoupling));
   if(nhits<=0) return;
   for(h=0;h<nhits;h++){
     if(AliDebugLevel()>0) {
	AliDebug(1,Form("Hits, %d", h));
	cout << *(mod->GetHit(h)) << endl;
     } // end if GetDebug
     // Check if the hit is inside readout window
     if (fStrobe)
     if ((mod->GetHit(h)->GetTOF() < fStrobePhase) ||
	  (mod->GetHit(h)->GetTOF() > (fStrobePhase+(Double_t)fStrobeLenght*kBunchLenght))) continue;
       if(!mod->LineSegmentL(h,x0,x1,y0,y1,z0,z1,de,idtrack)) continue;
       st = TMath::Sqrt(x1*x1+y1*y1+z1*z1);
       if(st>0.0){
           st = (Double_t)((Int_t)(st/kmictocm)); // number of microns
           if(st<=1.0) st = 1.0;
           dt = 1.0/st;
           for(t=0.0;t<1.0;t+=dt){ // Integrate over t
               tp  = t+0.5*dt;
               x   = x0+x1*tp;
               y   = y0+y1*tp;
               z   = z0+z1*tp;
               if(!(seg->LocalToDet(x,z,ix,iz))) continue; // outside
               //el  = res->GeVToCharge((Double_t)(dt*de));
               el  = dt * de / simpar->GetGeVToCharge();
               if(GetDebug(1)){
                   if(el<=0.0) cout<<"el="<<el<<" dt="<<dt
                                   <<" de="<<de<<endl;
               } // end if GetDebug
               sig = simpar->SigmaDiffusion1D(TMath::Abs(thick + y)); 
               sigx=sig;
               sigz=sig*fda;
               if (fLorentz) ld=(y+thick)*fTanLorAng;
               SpreadChargeAsym(x,z,ix,iz,el,sigx,sigz,ld,idtrack,h);
           } // end for t
       } else { // st == 0.0 deposit it at this point
           x   = x0;
           y   = y0;
           z   = z0;
           if(!(seg->LocalToDet(x,z,ix,iz))) continue; // outside
           //el  = res->GeVToCharge((Double_t)de);
           el  = de / simpar->GetGeVToCharge();
           sig = simpar->SigmaDiffusion1D(TMath::Abs(thick + y));
           sigx=sig;
           sigz=sig*fda;
           if (fLorentz) ld=(y+thick)*fTanLorAng;
           SpreadChargeAsym(x,z,ix,iz,el,sigx,sigz,ld,idtrack,h);
       } // end if st>0.0

   } // Loop over all hits h

       // Coupling
       switch (fCoupling) {
       default:
           break;
       case 1: //case 3:
           for(i=0;i<GetMap()->GetEntries();i++) 
               if(GetMap()->GetpListItem(i)==0) continue;
               else{
                   GetMap()->GetMapIndex(GetMap()->GetpListItem(i)->GetIndex(),iz,ix);
                   SetCoupling(iz,ix);
               } // end for i
           break;
       case 2: // case 4:
           for(i=0;i<GetMap()->GetEntries();i++) 
               if(GetMap()->GetpListItem(i)==0) continue;
               else{
                   GetMap()->GetMapIndex(GetMap()->GetpListItem(i)->GetIndex(),iz,ix);
                   SetCouplingOld(iz,ix);
               } // end for i
           break;
       } // end switch
   if(GetDebug(2))Info("HitToSDigit","Finished fCoupling=%d",fCoupling);
}
//______________________________________________________________________
void AliITSsimulationSPD::HitToSDigitFast(AliITSmodule *mod){
   // Does the charge distributions using Gaussian diffusion charge charing.    // Inputs:
   //    AliITSmodule *mod  Pointer to this module
   // Output:
   //    none.
   // Return:
   //    none.
   const Double_t kmictocm = 1.0e-4; // convert microns to cm.
   const Int_t kn10=10;
   const Double_t kti[kn10]={7.443716945e-3,2.166976971e-1,3.397047841e-1,
                           4.325316833e-1,4.869532643e-1,5.130467358e-1,
                           5.674683167e-1,6.602952159e-1,7.833023029e-1,
                           9.255628306e-1};
   const Double_t kwi[kn10]={1.477621124e-1,1.346333597e-1,1.095431813e-1,
                           7.472567455e-2,3.333567215e-2,3.333567215e-2,
                           7.472567455e-2,1.095431813e-1,1.346333597e-1,
                           1.477621124e-1};
   const Double_t kBunchLenght = 25e-9; // LHC clock
   TObjArray *hits = mod->GetHits();
   Int_t nhits = hits->GetEntriesFast();
   Int_t h,ix,iz,i;
   Int_t idtrack;
   Double_t x0=0.0,x1=0.0,y0=0.0,y1=0.0,z0=0.0,z1=0.0,de=0.0,ld=0.0;
   Double_t x,y,z,t,st,el,sig,sigx,sigz,fda;
   AliITSsegmentationSPD* seg = (AliITSsegmentationSPD*)GetSegmentationModel(0);
   AliITSSimuParam* simpar = fDetType->GetSimuParam();
   Double_t thick = 0.5*kmictocm*seg->Dy();  // Half thickness
   simpar->GetSPDSigmaDiffusionAsymmetry(fda);
//    cout << "Half Thickness " << thick << endl;  // dom
//    cout << "Diffusion asymm " << fda << endl;  // dom

   AliDebug(1,Form("(mod=%p) fCoupling=%d",mod,fCoupling));
   if(nhits<=0) return;
   for(h=0;h<nhits;h++){
     if(AliDebugLevel()>0) {
       AliDebug(1,Form("Hits, %d", h));
       cout << *(mod->GetHit(h)) << endl;
     } // end if GetDebug
     // Check if the hit is inside readout window
     if (fStrobe)
     if ((mod->GetHit(h)->GetTOF() < fStrobePhase) ||
	  (mod->GetHit(h)->GetTOF() > (fStrobePhase+(Double_t)fStrobeLenght*kBunchLenght))) continue;
       if(!mod->LineSegmentL(h,x0,x1,y0,y1,z0,z1,de,idtrack)) continue;
       st = TMath::Sqrt(x1*x1+y1*y1+z1*z1);
       if(st>0.0) for(i=0;i<kn10;i++){ // Integrate over t
           t   = kti[i];
           x   = x0+x1*t;
           y   = y0+y1*t;
           z   = z0+z1*t;
               if(!(seg->LocalToDet(x,z,ix,iz))) continue; // outside
               el  = kwi[i]*de/simpar->GetGeVToCharge();
               if(GetDebug(1)){
                   if(el<=0.0) cout<<"el="<<el<<" kwi["<<i<<"]="<<kwi[i]
                                   <<" de="<<de<<endl;
               } // end if GetDebug
               sig = simpar->SigmaDiffusion1D(TMath::Abs(thick + y));
               sigx=sig;
               sigz=sig*fda;
               if (fLorentz) ld=(y+thick)*fTanLorAng;
               SpreadChargeAsym(x,z,ix,iz,el,sigx,sigz,ld,idtrack,h);
//                cout << "sigx sigz " << sigx << " " << sigz << endl; // dom
           } // end for i // End Integrate over t
       else { // st == 0.0 deposit it at this point
           x   = x0;
           y   = y0;
           z   = z0;
           if(!(seg->LocalToDet(x,z,ix,iz))) continue; // outside
           el  = de / simpar->GetGeVToCharge();
           sig = simpar->SigmaDiffusion1D(TMath::Abs(thick + y));
           sigx=sig;
           sigz=sig*fda;
           if (fLorentz) ld=(y+thick)*fTanLorAng;
           SpreadChargeAsym(x,z,ix,iz,el,sigx,sigz,ld,idtrack,h);
       } // end if st>0.0

   } // Loop over all hits h

       // Coupling
       switch (fCoupling) {
       default:
           break;
       case 1: // case 3:
           for(i=0;i<GetMap()->GetEntries();i++)
               if(GetMap()->GetpListItem(i)==0) continue;
               else{
                   GetMap()->GetMapIndex(GetMap()->GetpListItem(i)->GetIndex(),iz,ix);
                   SetCoupling(iz,ix);
               } // end for i
           break;
       case 2: // case 4:
           for(i=0;i<GetMap()->GetEntries();i++)
               if(GetMap()->GetpListItem(i)==0) continue;
               else{
                   GetMap()->GetMapIndex(GetMap()->GetpListItem(i)->GetIndex(),iz,ix);  
                   SetCouplingOld(iz,ix);
               } // end for i
           break;
       } // end switch
   if(GetDebug(2))Info("HitToSDigit","Finished fCoupling=%d",fCoupling);
}
//______________________________________________________________________
void AliITSsimulationSPD::SpreadCharge(Double_t x0,Double_t z0,
                                           Int_t ix0,Int_t iz0,
					    Double_t el,Double_t sig,Double_t ld,
					    Int_t t,Int_t hi){
   // Spreads the charge over neighboring cells. Assume charge is distributed
   // as charge(x,z) = (el/2*pi*sig*sig)*exp(-arg)
   // arg=((x-x0)*(x-x0)/2*sig*sig)+((z-z0*z-z0)/2*sig*sig)
   // if fLorentz=kTRUE, then x0=x0+ld (Lorentz drift taken into account)
   // Defined this way, the integral over all x and z is el.
   // Inputs:
   //    Double_t x0   x position of point where charge is liberated
   //    Double_t z0   z position of point where charge is liberated
   //    Int_t    ix0  row of cell corresponding to point x0
   //    Int_t    iz0  columb of cell corresponding to point z0
   //    Double_t el   number of electrons liberated in this step
   //    Double_t sig  Sigma difusion for this step (y0 dependent)
   //    Double_t ld   lorentz drift in x for this step (y0 dependent)
   //    Int_t    t    track number
   //    Int_t    ti   hit track index number
   //    Int_t    hi   hit "hit" index number
   // Outputs:
   //     none.
   // Return:
   //     none.
   const Int_t knx = 3,knz = 2;
   const Double_t kRoot2 = 1.414213562; // Sqrt(2).
   const Double_t kmictocm = 1.0e-4; // convert microns to cm.
   Int_t ix,iz,ixs,ixe,izs,ize;
   Float_t x,z;
   Double_t x1,x2,z1,z2,s,sp;
   AliITSsegmentationSPD* seg = (AliITSsegmentationSPD*)GetSegmentationModel(0);


   if(GetDebug(4)) Info("SpreadCharge","(x0=%e,z0=%e,ix0=%d,iz0=%d,el=%e,"
                        "sig=%e,t=%d,i=%d)",x0,z0,ix0,iz0,el,sig,t,hi);
   if(sig<=0.0) { // if sig<=0 No diffusion to simulate.
       GetMap()->AddSignal(iz0,ix0,t,hi,GetModuleNumber(),el);
       if(GetDebug(2)){
           cout << "sig<=0.0=" << sig << endl;
       } // end if GetDebug
       return;
   } // end if
   sp = 1.0/(sig*kRoot2);
   if(GetDebug(2)){
       cout << "sig=" << sig << " sp=" << sp << endl;
   } // end if GetDebug
   ixs = TMath::Max(-knx+ix0,0);
   ixe = TMath::Min(knx+ix0,seg->Npx()-1);
   izs = TMath::Max(-knz+iz0,0);
   ize = TMath::Min(knz+iz0,seg->Npz()-1);
   for(ix=ixs;ix<=ixe;ix++) for(iz=izs;iz<=ize;iz++){
       seg->DetToLocal(ix,iz,x,z); // pixel center
       x1  = x;
       z1  = z;
       x2  = x1 + 0.5*kmictocm*seg->Dpx(ix); // Upper
       x1 -= 0.5*kmictocm*seg->Dpx(ix);  // Lower
       z2  = z1 + 0.5*kmictocm*seg->Dpz(iz); // Upper
       z1 -= 0.5*kmictocm*seg->Dpz(iz);  // Lower
       x1 -= x0+ld; // Distance from where track traveled (taking into account the Lorentz drift)
       x2 -= x0+ld; // Distance from where track traveled (taking into account the Lorentz drift)
       z1 -= z0; // Distance from where track traveled
       z2 -= z0; // Distance from where track traveled
       s   = 0.25; // Correction based on definision of Erfc
       s  *= AliMathBase::ErfcFast(sp*x1) - AliMathBase::ErfcFast(sp*x2);
       if(GetDebug(3)){
           cout <<"el="<<el<<" ix0="<<ix0<<" ix="<<ix<<" x0="<<x<<
               " iz0="<<iz0<<" iz="<<iz<<" z0="<<z<< 
               " sp*x1="<<sp*x1<<" sp*x2="<<sp*x2<<" s="<<s;
       } // end if GetDebug
       s  *= AliMathBase::ErfcFast(sp*z1) - AliMathBase::ErfcFast(sp*z2);
       if(GetDebug(3)){
           cout<<" sp*z1="<<sp*z1<<" sp*z2="<<sp*z2<<" s="<<s<< endl;
       } // end if GetDebug
       GetMap()->AddSignal(iz,ix,t,hi,GetModuleNumber(),s*el);
   } // end for ix, iz
}
//______________________________________________________________________
void AliITSsimulationSPD::SpreadChargeAsym(Double_t x0,Double_t z0,
                                           Int_t ix0,Int_t iz0,
                                           Double_t el,Double_t sigx,Double_t sigz,
                                           Double_t ld,Int_t t,Int_t hi){
   // Spreads the charge over neighboring cells. Assume charge is distributed
   // as charge(x,z) = (el/2*pi*sigx*sigz)*exp(-arg)
   // arg=((x-x0)*(x-x0)/2*sigx*sigx)+((z-z0*z-z0)/2*sigz*sigz)
   // if fLorentz=kTRUE, then x0=x0+ld (Lorentz drift taken into account)
   // Defined this way, the integral over all x and z is el.
   // Inputs:
   //    Double_t x0   x position of point where charge is liberated
   //    Double_t z0   z position of point where charge is liberated
   //    Int_t    ix0  row of cell corresponding to point x0
   //    Int_t    iz0  columb of cell corresponding to point z0
   //    Double_t el   number of electrons liberated in this step
   //    Double_t sigx Sigma difusion along x for this step (y0 dependent)
   //    Double_t sigz Sigma difusion along z for this step (y0 dependent)
   //    Double_t ld   lorentz drift in x for this stip (y0 dependent)
   //    Int_t    t    track number
   //    Int_t    ti   hit track index number
   //    Int_t    hi   hit "hit" index number
   // Outputs:
   //     none.
   // Return:
   //     none.
   const Int_t knx = 3,knz = 2;
   const Double_t kRoot2 = 1.414213562; // Sqrt(2).
   const Double_t kmictocm = 1.0e-4; // convert microns to cm.
   Int_t ix,iz,ixs,ixe,izs,ize;
   Float_t x,z;
   Double_t x1,x2,z1,z2,s,spx,spz;
   AliITSsegmentationSPD* seg = (AliITSsegmentationSPD*)GetSegmentationModel(0);


   if(GetDebug(4)) Info("SpreadChargeAsym","(x0=%e,z0=%e,ix0=%d,iz0=%d,el=%e,"
                        "sigx=%e, sigz=%e, t=%d,i=%d)",x0,z0,ix0,iz0,el,sigx,sigz,t,hi);
   if(sigx<=0.0 || sigz<=0.0) { // if sig<=0 No diffusion to simulate.
       GetMap()->AddSignal(iz0,ix0,t,hi,GetModuleNumber(),el);
       if(GetDebug(2)){
           cout << "sigx<=0.0=" << sigx << endl;
           cout << "sigz<=0.0=" << sigz << endl;
       } // end if GetDebug
       return;
   } // end if
   spx = 1.0/(sigx*kRoot2);     spz = 1.0/(sigz*kRoot2);
   if(GetDebug(2)){
       cout << "sigx=" << sigx << " spx=" << spx << endl;
       cout << "sigz=" << sigz << " spz=" << spz << endl;
   } // end if GetDebug
   ixs = TMath::Max(-knx+ix0,0);
   ixe = TMath::Min(knx+ix0,seg->Npx()-1);
   izs = TMath::Max(-knz+iz0,0);
   ize = TMath::Min(knz+iz0,seg->Npz()-1);
   for(ix=ixs;ix<=ixe;ix++) for(iz=izs;iz<=ize;iz++){
       seg->DetToLocal(ix,iz,x,z); // pixel center
       x1  = x;
       z1  = z;
       x2  = x1 + 0.5*kmictocm*seg->Dpx(ix); // Upper
       x1 -= 0.5*kmictocm*seg->Dpx(ix);  // Lower
       z2  = z1 + 0.5*kmictocm*seg->Dpz(iz); // Upper
       z1 -= 0.5*kmictocm*seg->Dpz(iz);  // Lower
       x1 -= x0+ld; // Distance from where track traveled (taking into account the Lorentz drift)
       x2 -= x0+ld; // Distance from where track traveled (taking into account the Lorentz drift)
       z1 -= z0; // Distance from where track traveled
       z2 -= z0; // Distance from where track traveled
       s   = 0.25; // Correction based on definision of Erfc
       s  *= AliMathBase::ErfcFast(spx*x1) - AliMathBase::ErfcFast(spx*x2);
       if(GetDebug(3)){
           cout <<"el="<<el<<" ix0="<<ix0<<" ix="<<ix<<" x0="<<x<<
               " iz0="<<iz0<<" iz="<<iz<<" z0="<<z<< 
               " spx*x1="<<spx*x1<<" spx*x2="<<spx*x2<<" s="<<s;
       } // end if GetDebug
       s  *= AliMathBase::ErfcFast(spz*z1) - AliMathBase::ErfcFast(spz*z2);
       if(GetDebug(3)){
           cout<<" spz*z1="<<spz*z1<<" spz*z2="<<spz*z2<<" s="<<s<< endl;
       } // end if GetDebug
       GetMap()->AddSignal(iz,ix,t,hi,GetModuleNumber(),s*el);
   } // end for ix, iz
}
//______________________________________________________________________
void AliITSsimulationSPD::RemoveDeadPixels(){
  // Removes dead pixels on each module (ladder)
  // This should be called before going from sdigits to digits (FrompListToDigits)
  Int_t mod = GetModuleNumber();
  AliITSCalibrationSPD* calObj = (AliITSCalibrationSPD*) fDetType->GetCalibrationModel(mod);

  Int_t nrDead = calObj->GetNrBad();
  for (Int_t i=0; i<nrDead; i++) {
    GetMap()->DeleteHit(calObj->GetBadColAt(i), calObj->GetBadRowAt(i));
  }
}
//______________________________________________________________________
void AliITSsimulationSPD::AddNoisyPixels() {
  // Adds noisy pixels on each module (ladder)
  // This should be called before going from sdigits to digits (FrompListToDigits)
  Int_t mod = GetModuleNumber();
  AliITSCalibrationSPD* calObj = (AliITSCalibrationSPD*) fDetType->GetSPDNoisyModel(mod);

  Int_t nrNoisy = calObj->GetNrBad();
  for (Int_t i=0; i<nrNoisy; i++) {
    // adding 10 times the threshold will for sure make this pixel fire...
    GetMap()->AddNoise(calObj->GetBadColAt(i), calObj->GetBadRowAt(i), mod, 10*GetThreshold());
  }
}
//______________________________________________________________________
void AliITSsimulationSPD::FrompListToDigits(){
   // add noise and electronics, perform the zero suppression and add the
   // digit to the list
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //    none.
   static AliITS *aliITS = (AliITS*)gAlice->GetModule("ITS");
   Int_t j,ix,iz;
   Double_t  electronics;
   Double_t sig;
   const Int_t    knmaxtrk=AliITSdigit::GetNTracks();
   static AliITSdigitSPD dig;
   AliITSSimuParam *simpar = fDetType->GetSimuParam();
   if(GetDebug(1)) Info("FrompListToDigits","()");
   for(iz=0; iz<GetNPixelsZ(); iz++) for(ix=0; ix<GetNPixelsX(); ix++){
// NEW (for the moment plugged by hand, in the future possibly read from Data Base)
// here parametrize the efficiency of the pixel along the row for the test columns (1,9,17,25)
//        if(iz==1 || iz == 9 || iz == 17 || iz == 25) {
//        Double_t eff,p1=0.,p2=0.; 
//        Double_t x=ix;
//        switch (iz) {
//          case 1:   p1=0.63460;p2=0.42438E-01;break;  
//          case 9:   p1=0.41090;p2=0.75914E-01;break;
//	  case 17:  p1=0.31883;p2=0.91502E-01;break;
//	  case 25:  p1=0.48828;p2=0.57975E-01;break;
//         } // end switch
//          eff=1.-p1*exp(-p2*x);
//          if (gRandom->Rndm() >= eff) continue;
//        } // end  if 
// END parametrize the efficiency
// 
       electronics = simpar->ApplySPDBaselineAndNoise();
       UpdateMapNoise(ix,iz,electronics);
       //
       // Apply Threshold and write Digits.
       sig = GetMap()->GetSignalOnly(iz,ix);
       FillHistograms(ix,iz,sig+electronics);
       if(GetDebug(3)){
           cout<<sig<<"+"<<electronics<<">threshold("<<ix<<","<<iz
               <<")="<<GetThreshold() <<endl;
       } // end if GetDebug
      // if (sig+electronics <= GetThreshold()) continue;
       if (GetMap()->GetSignal(iz,ix) <= GetThreshold()) continue;
       dig.SetCoord1(iz);
       dig.SetCoord2(ix);
       dig.SetSignal(1);

//        dig.SetSignalSPD((Int_t) GetMap()->GetSignal(iz,ix));
       Double_t aSignal =  GetMap()->GetSignal(iz,ix);
       if (TMath::Abs(aSignal)>2147483647.0) {
         //PH 2147483647 is the max. integer
         //PH This apparently is a problem which needs investigation
         AliWarning(Form("Too big or too small signal value %f",aSignal));
         aSignal = TMath::Sign((Double_t)2147483647,aSignal);
       }
       dig.SetSignalSPD((Int_t)aSignal);

       for(j=0;j<knmaxtrk;j++){
           if (j<GetMap()->GetNEntries()) {
               dig.SetTrack(j,GetMap()->GetTrack(iz,ix,j));
               dig.SetHit(j,GetMap()->GetHit(iz,ix,j));
           }else { // Default values
               dig.SetTrack(j,-3);
               dig.SetHit(j,-1);
           } // end if GetMap()
       } // end for j
       if(GetDebug(3)){
           cout<<iz<<","<<ix<<","<<*(GetMap()->GetpListItem(iz,ix))<<endl;
       } // end if GetDebug
       aliITS->AddSimDigit(0,&dig);
       // simulate fo signal response for this pixel hit:
       fDetType->ProcessSPDDigitForFastOr(fModule, dig.GetCoord1(), dig.GetCoord2());
   } //  for ix/iz
}
//______________________________________________________________________
void AliITSsimulationSPD::CreateHistograms(){
   // create 1D histograms for tests
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //     none.

   if(GetDebug(1)) Info("CreateHistograms","create histograms");

   fHis = new TObjArray(GetNPixelsZ());
   fSPDname="spd_";
   for(Int_t i=0;i<GetNPixelsZ();i++) {
       Char_t pixelz[4];
       snprintf(pixelz,3,"%d",i);
       fSPDname.Append(pixelz);
       fHis->AddAt(new TH1F(fSPDname.Data(),"SPD maps",
                            GetNPixelsX(),0.,(Double_t)GetNPixelsX()),i);
   } // end for i
}
//______________________________________________________________________
void AliITSsimulationSPD::FillHistograms(Int_t ix,Int_t iz,Double_t v){
   // Fill the histogram
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //     none.

   if(!GetHistArray()) return; // Only fill if setup.
   if(GetDebug(2)) Info("FillHistograms","fill histograms");
   GetHistogram(iz)->Fill(ix,v);
}
//______________________________________________________________________
void AliITSsimulationSPD::ResetHistograms(){
   // Reset histograms for this detector
   // Inputs:
   //    none.
   // Outputs:
   //    none.
   // Return:
   //     none.

   if(!GetHistArray()) return; // Only fill if setup.
   if(GetDebug(2)) Info("FillHistograms","fill histograms");
   for ( int i=0;i<GetNPixelsZ();i++ ) {
       if (fHis->At(i))    ((TH1F*)fHis->At(i))->Reset();
   } // end for i
}

//______________________________________________________________________
void AliITSsimulationSPD::SetCoupling(Int_t col, Int_t row) {
   //  Take into account the coupling between adiacent pixels.
   //  The parameters probcol and probrow are the probability of the
   //  signal in one pixel shared in the two adjacent pixels along
   //  the column and row direction, respectively.
   //  Note pList is goten via GetMap() and module is not need any more.
   //  Otherwise it is identical to that coded by Tiziano Virgili (BSN).
   //Begin_Html
   /*
     <img src="picts/ITS/barimodel_3.gif">
     </pre>
     <br clear=left>
     <font size=+2 color=red>
     <a href="mailto:tiziano.virgili@cern.ch"></a>.
     </font>
     <pre>
   */
   //End_Html
   // Inputs:
   //    Int_t col            z cell index
   //    Int_t row            x cell index
   // Outputs:
   //    none.
   // Return:
   //     none.
   Int_t j1,j2,flag=0;
   Double_t pulse1,pulse2;
   Double_t couplR=0.0,couplC=0.0;
   Double_t xr=0.;

   GetCouplings(couplC,couplR);
   if(GetDebug(3)) Info("SetCoupling","(col=%d,row=%d) "
                        "Calling SetCoupling couplC=%e couplR=%e",
                        col,row,couplC,couplR);
   j1 = col;
   j2 = row;
   pulse1 = GetMap()->GetSignalOnly(col,row);
   pulse2 = pulse1;
   for (Int_t isign=-1;isign<=1;isign+=2){// loop in col direction
       do{
           j1 += isign;
           xr = gRandom->Rndm();
           if ((j1<0) || (j1>GetNPixelsZ()-1) || (xr>couplC)){
               j1 = col;
               flag = 1;
           }else{
               UpdateMapNoise(row,j1,pulse1);
               //  flag = 0;
               flag = 1; // only first next!!
           } // end if
       } while(flag == 0);
       // loop in row direction
       do{
           j2 += isign;
           xr = gRandom->Rndm();
           if ((j2<0) || (j2>GetNPixelsX()-1) || (xr>couplR)){
               j2 = row;
               flag = 1;
           }else{
               UpdateMapNoise(j2,col,pulse2);
               //  flag = 0;
               flag = 1; // only first next!!
           } // end if
       } while(flag == 0);
   } // for isign
}
//______________________________________________________________________
void AliITSsimulationSPD::SetCouplingOld(Int_t col, Int_t row) {
   //  Take into account the coupling between adiacent pixels.
   //  The parameters probcol and probrow are the fractions of the
   //  signal in one pixel shared in the two adjacent pixels along
   //  the column and row direction, respectively.
   //Begin_Html
   /*
     <img src="picts/ITS/barimodel_3.gif">
     </pre>
     <br clear=left>
     <font size=+2 color=red>
     <a href="mailto:Rocco.Caliandro@ba.infn.it"></a>.
     </font>
     <pre>
   */
   //End_Html
   // Inputs:
   //    Int_t col            z cell index
   //    Int_t row            x cell index
   //    Int_t module         module number
   // Outputs:
   //    none.
   // Return:
   //     none.
   Int_t j1,j2,flag=0;
   Double_t pulse1,pulse2;
   Double_t couplR=0.0,couplC=0.0;

   GetCouplings(couplC,couplR);

   //  Debugging ...
//    cout << "Threshold --> " << GetThreshold() << endl;  // dom
//    cout << "Couplings --> " << couplC << " " << couplR << endl;  // dom

   if(GetDebug(3)) Info("SetCouplingOld","(col=%d,row=%d) "
                        "Calling SetCoupling couplC=%e couplR=%e",
                        col,row,couplC,couplR);
   for (Int_t isign=-1;isign<=1;isign+=2){// loop in col direction
   pulse1 = GetMap()->GetSignalOnly(col,row);
   pulse2 = pulse1;
   j1 = col;
   j2 = row;
       do{
           j1 += isign;
           pulse1 *= couplC;
           if ((j1<0)||(j1>GetNPixelsZ()-1)||(pulse1<GetThreshold())){
               pulse1 = GetMap()->GetSignalOnly(col,row);
               j1 = col;
               flag = 1;
           }else{
               UpdateMapNoise(row,j1,pulse1);
               // flag = 0;
               flag = 1;  // only first next !!
           } // end if
       } while(flag == 0);
       // loop in row direction
       do{
           j2 += isign;
           pulse2 *= couplR;
           if((j2<0)||(j2>(GetNPixelsX()-1))||(pulse2<GetThreshold())){
               pulse2 = GetMap()->GetSignalOnly(col,row);
               j2 = row;
               flag = 1;
           }else{
               UpdateMapNoise(j2,col,pulse2);
               // flag = 0;
               flag = 1; // only first next!!
           } // end if
       } while(flag == 0);
   } // for isign
}
//______________________________________________________________________
void AliITSsimulationSPD::GenerateStrobePhase()
{
 // Generate randomly the strobe
 // phase w.r.t to the LHC clock
 // Done once per event
   const Double_t kBunchLenght = 25e-9; // LHC clock
   fStrobePhase = ((Double_t)gRandom->Integer(fStrobeLenght))*kBunchLenght-
                  (Double_t)fStrobeLenght*kBunchLenght+
                  kBunchLenght/2;
}

 AliITSsimulationSPD.cxx:1
 AliITSsimulationSPD.cxx:2
 AliITSsimulationSPD.cxx:3
 AliITSsimulationSPD.cxx:4
 AliITSsimulationSPD.cxx:5
 AliITSsimulationSPD.cxx:6
 AliITSsimulationSPD.cxx:7
 AliITSsimulationSPD.cxx:8
 AliITSsimulationSPD.cxx:9
 AliITSsimulationSPD.cxx:10
 AliITSsimulationSPD.cxx:11
 AliITSsimulationSPD.cxx:12
 AliITSsimulationSPD.cxx:13
 AliITSsimulationSPD.cxx:14
 AliITSsimulationSPD.cxx:15
 AliITSsimulationSPD.cxx:16
 AliITSsimulationSPD.cxx:17
 AliITSsimulationSPD.cxx:18
 AliITSsimulationSPD.cxx:19
 AliITSsimulationSPD.cxx:20
 AliITSsimulationSPD.cxx:21
 AliITSsimulationSPD.cxx:22
 AliITSsimulationSPD.cxx:23
 AliITSsimulationSPD.cxx:24
 AliITSsimulationSPD.cxx:25
 AliITSsimulationSPD.cxx:26
 AliITSsimulationSPD.cxx:27
 AliITSsimulationSPD.cxx:28
 AliITSsimulationSPD.cxx:29
 AliITSsimulationSPD.cxx:30
 AliITSsimulationSPD.cxx:31
 AliITSsimulationSPD.cxx:32
 AliITSsimulationSPD.cxx:33
 AliITSsimulationSPD.cxx:34
 AliITSsimulationSPD.cxx:35
 AliITSsimulationSPD.cxx:36
 AliITSsimulationSPD.cxx:37
 AliITSsimulationSPD.cxx:38
 AliITSsimulationSPD.cxx:39
 AliITSsimulationSPD.cxx:40
 AliITSsimulationSPD.cxx:41
 AliITSsimulationSPD.cxx:42
 AliITSsimulationSPD.cxx:43
 AliITSsimulationSPD.cxx:44
 AliITSsimulationSPD.cxx:45
 AliITSsimulationSPD.cxx:46
 AliITSsimulationSPD.cxx:47
 AliITSsimulationSPD.cxx:48
 AliITSsimulationSPD.cxx:49
 AliITSsimulationSPD.cxx:50
 AliITSsimulationSPD.cxx:51
 AliITSsimulationSPD.cxx:52
 AliITSsimulationSPD.cxx:53
 AliITSsimulationSPD.cxx:54
 AliITSsimulationSPD.cxx:55
 AliITSsimulationSPD.cxx:56
 AliITSsimulationSPD.cxx:57
 AliITSsimulationSPD.cxx:58
 AliITSsimulationSPD.cxx:59
 AliITSsimulationSPD.cxx:60
 AliITSsimulationSPD.cxx:61
 AliITSsimulationSPD.cxx:62
 AliITSsimulationSPD.cxx:63
 AliITSsimulationSPD.cxx:64
 AliITSsimulationSPD.cxx:65
 AliITSsimulationSPD.cxx:66
 AliITSsimulationSPD.cxx:67
 AliITSsimulationSPD.cxx:68
 AliITSsimulationSPD.cxx:69
 AliITSsimulationSPD.cxx:70
 AliITSsimulationSPD.cxx:71
 AliITSsimulationSPD.cxx:72
 AliITSsimulationSPD.cxx:73
 AliITSsimulationSPD.cxx:74
 AliITSsimulationSPD.cxx:75
 AliITSsimulationSPD.cxx:76
 AliITSsimulationSPD.cxx:77
 AliITSsimulationSPD.cxx:78
 AliITSsimulationSPD.cxx:79
 AliITSsimulationSPD.cxx:80
 AliITSsimulationSPD.cxx:81
 AliITSsimulationSPD.cxx:82
 AliITSsimulationSPD.cxx:83
 AliITSsimulationSPD.cxx:84
 AliITSsimulationSPD.cxx:85
 AliITSsimulationSPD.cxx:86
 AliITSsimulationSPD.cxx:87
 AliITSsimulationSPD.cxx:88
 AliITSsimulationSPD.cxx:89
 AliITSsimulationSPD.cxx:90
 AliITSsimulationSPD.cxx:91
 AliITSsimulationSPD.cxx:92
 AliITSsimulationSPD.cxx:93
 AliITSsimulationSPD.cxx:94
 AliITSsimulationSPD.cxx:95
 AliITSsimulationSPD.cxx:96
 AliITSsimulationSPD.cxx:97
 AliITSsimulationSPD.cxx:98
 AliITSsimulationSPD.cxx:99
 AliITSsimulationSPD.cxx:100
 AliITSsimulationSPD.cxx:101
 AliITSsimulationSPD.cxx:102
 AliITSsimulationSPD.cxx:103
 AliITSsimulationSPD.cxx:104
 AliITSsimulationSPD.cxx:105
 AliITSsimulationSPD.cxx:106
 AliITSsimulationSPD.cxx:107
 AliITSsimulationSPD.cxx:108
 AliITSsimulationSPD.cxx:109
 AliITSsimulationSPD.cxx:110
 AliITSsimulationSPD.cxx:111
 AliITSsimulationSPD.cxx:112
 AliITSsimulationSPD.cxx:113
 AliITSsimulationSPD.cxx:114
 AliITSsimulationSPD.cxx:115
 AliITSsimulationSPD.cxx:116
 AliITSsimulationSPD.cxx:117
 AliITSsimulationSPD.cxx:118
 AliITSsimulationSPD.cxx:119
 AliITSsimulationSPD.cxx:120
 AliITSsimulationSPD.cxx:121
 AliITSsimulationSPD.cxx:122
 AliITSsimulationSPD.cxx:123
 AliITSsimulationSPD.cxx:124
 AliITSsimulationSPD.cxx:125
 AliITSsimulationSPD.cxx:126
 AliITSsimulationSPD.cxx:127
 AliITSsimulationSPD.cxx:128
 AliITSsimulationSPD.cxx:129
 AliITSsimulationSPD.cxx:130
 AliITSsimulationSPD.cxx:131
 AliITSsimulationSPD.cxx:132
 AliITSsimulationSPD.cxx:133
 AliITSsimulationSPD.cxx:134
 AliITSsimulationSPD.cxx:135
 AliITSsimulationSPD.cxx:136
 AliITSsimulationSPD.cxx:137
 AliITSsimulationSPD.cxx:138
 AliITSsimulationSPD.cxx:139
 AliITSsimulationSPD.cxx:140
 AliITSsimulationSPD.cxx:141
 AliITSsimulationSPD.cxx:142
 AliITSsimulationSPD.cxx:143
 AliITSsimulationSPD.cxx:144
 AliITSsimulationSPD.cxx:145
 AliITSsimulationSPD.cxx:146
 AliITSsimulationSPD.cxx:147
 AliITSsimulationSPD.cxx:148
 AliITSsimulationSPD.cxx:149
 AliITSsimulationSPD.cxx:150
 AliITSsimulationSPD.cxx:151
 AliITSsimulationSPD.cxx:152
 AliITSsimulationSPD.cxx:153
 AliITSsimulationSPD.cxx:154
 AliITSsimulationSPD.cxx:155
 AliITSsimulationSPD.cxx:156
 AliITSsimulationSPD.cxx:157
 AliITSsimulationSPD.cxx:158
 AliITSsimulationSPD.cxx:159
 AliITSsimulationSPD.cxx:160
 AliITSsimulationSPD.cxx:161
 AliITSsimulationSPD.cxx:162
 AliITSsimulationSPD.cxx:163
 AliITSsimulationSPD.cxx:164
 AliITSsimulationSPD.cxx:165
 AliITSsimulationSPD.cxx:166
 AliITSsimulationSPD.cxx:167
 AliITSsimulationSPD.cxx:168
 AliITSsimulationSPD.cxx:169
 AliITSsimulationSPD.cxx:170
 AliITSsimulationSPD.cxx:171
 AliITSsimulationSPD.cxx:172
 AliITSsimulationSPD.cxx:173
 AliITSsimulationSPD.cxx:174
 AliITSsimulationSPD.cxx:175
 AliITSsimulationSPD.cxx:176
 AliITSsimulationSPD.cxx:177
 AliITSsimulationSPD.cxx:178
 AliITSsimulationSPD.cxx:179
 AliITSsimulationSPD.cxx:180
 AliITSsimulationSPD.cxx:181
 AliITSsimulationSPD.cxx:182
 AliITSsimulationSPD.cxx:183
 AliITSsimulationSPD.cxx:184
 AliITSsimulationSPD.cxx:185
 AliITSsimulationSPD.cxx:186
 AliITSsimulationSPD.cxx:187
 AliITSsimulationSPD.cxx:188
 AliITSsimulationSPD.cxx:189
 AliITSsimulationSPD.cxx:190
 AliITSsimulationSPD.cxx:191
 AliITSsimulationSPD.cxx:192
 AliITSsimulationSPD.cxx:193
 AliITSsimulationSPD.cxx:194
 AliITSsimulationSPD.cxx:195
 AliITSsimulationSPD.cxx:196
 AliITSsimulationSPD.cxx:197
 AliITSsimulationSPD.cxx:198
 AliITSsimulationSPD.cxx:199
 AliITSsimulationSPD.cxx:200
 AliITSsimulationSPD.cxx:201
 AliITSsimulationSPD.cxx:202
 AliITSsimulationSPD.cxx:203
 AliITSsimulationSPD.cxx:204
 AliITSsimulationSPD.cxx:205
 AliITSsimulationSPD.cxx:206
 AliITSsimulationSPD.cxx:207
 AliITSsimulationSPD.cxx:208
 AliITSsimulationSPD.cxx:209
 AliITSsimulationSPD.cxx:210
 AliITSsimulationSPD.cxx:211
 AliITSsimulationSPD.cxx:212
 AliITSsimulationSPD.cxx:213
 AliITSsimulationSPD.cxx:214
 AliITSsimulationSPD.cxx:215
 AliITSsimulationSPD.cxx:216
 AliITSsimulationSPD.cxx:217
 AliITSsimulationSPD.cxx:218
 AliITSsimulationSPD.cxx:219
 AliITSsimulationSPD.cxx:220
 AliITSsimulationSPD.cxx:221
 AliITSsimulationSPD.cxx:222
 AliITSsimulationSPD.cxx:223
 AliITSsimulationSPD.cxx:224
 AliITSsimulationSPD.cxx:225
 AliITSsimulationSPD.cxx:226
 AliITSsimulationSPD.cxx:227
 AliITSsimulationSPD.cxx:228
 AliITSsimulationSPD.cxx:229
 AliITSsimulationSPD.cxx:230
 AliITSsimulationSPD.cxx:231
 AliITSsimulationSPD.cxx:232
 AliITSsimulationSPD.cxx:233
 AliITSsimulationSPD.cxx:234
 AliITSsimulationSPD.cxx:235
 AliITSsimulationSPD.cxx:236
 AliITSsimulationSPD.cxx:237
 AliITSsimulationSPD.cxx:238
 AliITSsimulationSPD.cxx:239
 AliITSsimulationSPD.cxx:240
 AliITSsimulationSPD.cxx:241
 AliITSsimulationSPD.cxx:242
 AliITSsimulationSPD.cxx:243
 AliITSsimulationSPD.cxx:244
 AliITSsimulationSPD.cxx:245
 AliITSsimulationSPD.cxx:246
 AliITSsimulationSPD.cxx:247
 AliITSsimulationSPD.cxx:248
 AliITSsimulationSPD.cxx:249
 AliITSsimulationSPD.cxx:250
 AliITSsimulationSPD.cxx:251
 AliITSsimulationSPD.cxx:252
 AliITSsimulationSPD.cxx:253
 AliITSsimulationSPD.cxx:254
 AliITSsimulationSPD.cxx:255
 AliITSsimulationSPD.cxx:256
 AliITSsimulationSPD.cxx:257
 AliITSsimulationSPD.cxx:258
 AliITSsimulationSPD.cxx:259
 AliITSsimulationSPD.cxx:260
 AliITSsimulationSPD.cxx:261
 AliITSsimulationSPD.cxx:262
 AliITSsimulationSPD.cxx:263
 AliITSsimulationSPD.cxx:264
 AliITSsimulationSPD.cxx:265
 AliITSsimulationSPD.cxx:266
 AliITSsimulationSPD.cxx:267
 AliITSsimulationSPD.cxx:268
 AliITSsimulationSPD.cxx:269
 AliITSsimulationSPD.cxx:270
 AliITSsimulationSPD.cxx:271
 AliITSsimulationSPD.cxx:272
 AliITSsimulationSPD.cxx:273
 AliITSsimulationSPD.cxx:274
 AliITSsimulationSPD.cxx:275
 AliITSsimulationSPD.cxx:276
 AliITSsimulationSPD.cxx:277
 AliITSsimulationSPD.cxx:278
 AliITSsimulationSPD.cxx:279
 AliITSsimulationSPD.cxx:280
 AliITSsimulationSPD.cxx:281
 AliITSsimulationSPD.cxx:282
 AliITSsimulationSPD.cxx:283
 AliITSsimulationSPD.cxx:284
 AliITSsimulationSPD.cxx:285
 AliITSsimulationSPD.cxx:286
 AliITSsimulationSPD.cxx:287
 AliITSsimulationSPD.cxx:288
 AliITSsimulationSPD.cxx:289
 AliITSsimulationSPD.cxx:290
 AliITSsimulationSPD.cxx:291
 AliITSsimulationSPD.cxx:292
 AliITSsimulationSPD.cxx:293
 AliITSsimulationSPD.cxx:294
 AliITSsimulationSPD.cxx:295
 AliITSsimulationSPD.cxx:296
 AliITSsimulationSPD.cxx:297
 AliITSsimulationSPD.cxx:298
 AliITSsimulationSPD.cxx:299
 AliITSsimulationSPD.cxx:300
 AliITSsimulationSPD.cxx:301
 AliITSsimulationSPD.cxx:302
 AliITSsimulationSPD.cxx:303
 AliITSsimulationSPD.cxx:304
 AliITSsimulationSPD.cxx:305
 AliITSsimulationSPD.cxx:306
 AliITSsimulationSPD.cxx:307
 AliITSsimulationSPD.cxx:308
 AliITSsimulationSPD.cxx:309
 AliITSsimulationSPD.cxx:310
 AliITSsimulationSPD.cxx:311
 AliITSsimulationSPD.cxx:312
 AliITSsimulationSPD.cxx:313
 AliITSsimulationSPD.cxx:314
 AliITSsimulationSPD.cxx:315
 AliITSsimulationSPD.cxx:316
 AliITSsimulationSPD.cxx:317
 AliITSsimulationSPD.cxx:318
 AliITSsimulationSPD.cxx:319
 AliITSsimulationSPD.cxx:320
 AliITSsimulationSPD.cxx:321
 AliITSsimulationSPD.cxx:322
 AliITSsimulationSPD.cxx:323
 AliITSsimulationSPD.cxx:324
 AliITSsimulationSPD.cxx:325
 AliITSsimulationSPD.cxx:326
 AliITSsimulationSPD.cxx:327
 AliITSsimulationSPD.cxx:328
 AliITSsimulationSPD.cxx:329
 AliITSsimulationSPD.cxx:330
 AliITSsimulationSPD.cxx:331
 AliITSsimulationSPD.cxx:332
 AliITSsimulationSPD.cxx:333
 AliITSsimulationSPD.cxx:334
 AliITSsimulationSPD.cxx:335
 AliITSsimulationSPD.cxx:336
 AliITSsimulationSPD.cxx:337
 AliITSsimulationSPD.cxx:338
 AliITSsimulationSPD.cxx:339
 AliITSsimulationSPD.cxx:340
 AliITSsimulationSPD.cxx:341
 AliITSsimulationSPD.cxx:342
 AliITSsimulationSPD.cxx:343
 AliITSsimulationSPD.cxx:344
 AliITSsimulationSPD.cxx:345
 AliITSsimulationSPD.cxx:346
 AliITSsimulationSPD.cxx:347
 AliITSsimulationSPD.cxx:348
 AliITSsimulationSPD.cxx:349
 AliITSsimulationSPD.cxx:350
 AliITSsimulationSPD.cxx:351
 AliITSsimulationSPD.cxx:352
 AliITSsimulationSPD.cxx:353
 AliITSsimulationSPD.cxx:354
 AliITSsimulationSPD.cxx:355
 AliITSsimulationSPD.cxx:356
 AliITSsimulationSPD.cxx:357
 AliITSsimulationSPD.cxx:358
 AliITSsimulationSPD.cxx:359
 AliITSsimulationSPD.cxx:360
 AliITSsimulationSPD.cxx:361
 AliITSsimulationSPD.cxx:362
 AliITSsimulationSPD.cxx:363
 AliITSsimulationSPD.cxx:364
 AliITSsimulationSPD.cxx:365
 AliITSsimulationSPD.cxx:366
 AliITSsimulationSPD.cxx:367
 AliITSsimulationSPD.cxx:368
 AliITSsimulationSPD.cxx:369
 AliITSsimulationSPD.cxx:370
 AliITSsimulationSPD.cxx:371
 AliITSsimulationSPD.cxx:372
 AliITSsimulationSPD.cxx:373
 AliITSsimulationSPD.cxx:374
 AliITSsimulationSPD.cxx:375
 AliITSsimulationSPD.cxx:376
 AliITSsimulationSPD.cxx:377
 AliITSsimulationSPD.cxx:378
 AliITSsimulationSPD.cxx:379
 AliITSsimulationSPD.cxx:380
 AliITSsimulationSPD.cxx:381
 AliITSsimulationSPD.cxx:382
 AliITSsimulationSPD.cxx:383
 AliITSsimulationSPD.cxx:384
 AliITSsimulationSPD.cxx:385
 AliITSsimulationSPD.cxx:386
 AliITSsimulationSPD.cxx:387
 AliITSsimulationSPD.cxx:388
 AliITSsimulationSPD.cxx:389
 AliITSsimulationSPD.cxx:390
 AliITSsimulationSPD.cxx:391
 AliITSsimulationSPD.cxx:392
 AliITSsimulationSPD.cxx:393
 AliITSsimulationSPD.cxx:394
 AliITSsimulationSPD.cxx:395
 AliITSsimulationSPD.cxx:396
 AliITSsimulationSPD.cxx:397
 AliITSsimulationSPD.cxx:398
 AliITSsimulationSPD.cxx:399
 AliITSsimulationSPD.cxx:400
 AliITSsimulationSPD.cxx:401
 AliITSsimulationSPD.cxx:402
 AliITSsimulationSPD.cxx:403
 AliITSsimulationSPD.cxx:404
 AliITSsimulationSPD.cxx:405
 AliITSsimulationSPD.cxx:406
 AliITSsimulationSPD.cxx:407
 AliITSsimulationSPD.cxx:408
 AliITSsimulationSPD.cxx:409
 AliITSsimulationSPD.cxx:410
 AliITSsimulationSPD.cxx:411
 AliITSsimulationSPD.cxx:412
 AliITSsimulationSPD.cxx:413
 AliITSsimulationSPD.cxx:414
 AliITSsimulationSPD.cxx:415
 AliITSsimulationSPD.cxx:416
 AliITSsimulationSPD.cxx:417
 AliITSsimulationSPD.cxx:418
 AliITSsimulationSPD.cxx:419
 AliITSsimulationSPD.cxx:420
 AliITSsimulationSPD.cxx:421
 AliITSsimulationSPD.cxx:422
 AliITSsimulationSPD.cxx:423
 AliITSsimulationSPD.cxx:424
 AliITSsimulationSPD.cxx:425
 AliITSsimulationSPD.cxx:426
 AliITSsimulationSPD.cxx:427
 AliITSsimulationSPD.cxx:428
 AliITSsimulationSPD.cxx:429
 AliITSsimulationSPD.cxx:430
 AliITSsimulationSPD.cxx:431
 AliITSsimulationSPD.cxx:432
 AliITSsimulationSPD.cxx:433
 AliITSsimulationSPD.cxx:434
 AliITSsimulationSPD.cxx:435
 AliITSsimulationSPD.cxx:436
 AliITSsimulationSPD.cxx:437
 AliITSsimulationSPD.cxx:438
 AliITSsimulationSPD.cxx:439
 AliITSsimulationSPD.cxx:440
 AliITSsimulationSPD.cxx:441
 AliITSsimulationSPD.cxx:442
 AliITSsimulationSPD.cxx:443
 AliITSsimulationSPD.cxx:444
 AliITSsimulationSPD.cxx:445
 AliITSsimulationSPD.cxx:446
 AliITSsimulationSPD.cxx:447
 AliITSsimulationSPD.cxx:448
 AliITSsimulationSPD.cxx:449
 AliITSsimulationSPD.cxx:450
 AliITSsimulationSPD.cxx:451
 AliITSsimulationSPD.cxx:452
 AliITSsimulationSPD.cxx:453
 AliITSsimulationSPD.cxx:454
 AliITSsimulationSPD.cxx:455
 AliITSsimulationSPD.cxx:456
 AliITSsimulationSPD.cxx:457
 AliITSsimulationSPD.cxx:458
 AliITSsimulationSPD.cxx:459
 AliITSsimulationSPD.cxx:460
 AliITSsimulationSPD.cxx:461
 AliITSsimulationSPD.cxx:462
 AliITSsimulationSPD.cxx:463
 AliITSsimulationSPD.cxx:464
 AliITSsimulationSPD.cxx:465
 AliITSsimulationSPD.cxx:466
 AliITSsimulationSPD.cxx:467
 AliITSsimulationSPD.cxx:468
 AliITSsimulationSPD.cxx:469
 AliITSsimulationSPD.cxx:470
 AliITSsimulationSPD.cxx:471
 AliITSsimulationSPD.cxx:472
 AliITSsimulationSPD.cxx:473
 AliITSsimulationSPD.cxx:474
 AliITSsimulationSPD.cxx:475
 AliITSsimulationSPD.cxx:476
 AliITSsimulationSPD.cxx:477
 AliITSsimulationSPD.cxx:478
 AliITSsimulationSPD.cxx:479
 AliITSsimulationSPD.cxx:480
 AliITSsimulationSPD.cxx:481
 AliITSsimulationSPD.cxx:482
 AliITSsimulationSPD.cxx:483
 AliITSsimulationSPD.cxx:484
 AliITSsimulationSPD.cxx:485
 AliITSsimulationSPD.cxx:486
 AliITSsimulationSPD.cxx:487
 AliITSsimulationSPD.cxx:488
 AliITSsimulationSPD.cxx:489
 AliITSsimulationSPD.cxx:490
 AliITSsimulationSPD.cxx:491
 AliITSsimulationSPD.cxx:492
 AliITSsimulationSPD.cxx:493
 AliITSsimulationSPD.cxx:494
 AliITSsimulationSPD.cxx:495
 AliITSsimulationSPD.cxx:496
 AliITSsimulationSPD.cxx:497
 AliITSsimulationSPD.cxx:498
 AliITSsimulationSPD.cxx:499
 AliITSsimulationSPD.cxx:500
 AliITSsimulationSPD.cxx:501
 AliITSsimulationSPD.cxx:502
 AliITSsimulationSPD.cxx:503
 AliITSsimulationSPD.cxx:504
 AliITSsimulationSPD.cxx:505
 AliITSsimulationSPD.cxx:506
 AliITSsimulationSPD.cxx:507
 AliITSsimulationSPD.cxx:508
 AliITSsimulationSPD.cxx:509
 AliITSsimulationSPD.cxx:510
 AliITSsimulationSPD.cxx:511
 AliITSsimulationSPD.cxx:512
 AliITSsimulationSPD.cxx:513
 AliITSsimulationSPD.cxx:514
 AliITSsimulationSPD.cxx:515
 AliITSsimulationSPD.cxx:516
 AliITSsimulationSPD.cxx:517
 AliITSsimulationSPD.cxx:518
 AliITSsimulationSPD.cxx:519
 AliITSsimulationSPD.cxx:520
 AliITSsimulationSPD.cxx:521
 AliITSsimulationSPD.cxx:522
 AliITSsimulationSPD.cxx:523
 AliITSsimulationSPD.cxx:524
 AliITSsimulationSPD.cxx:525
 AliITSsimulationSPD.cxx:526
 AliITSsimulationSPD.cxx:527
 AliITSsimulationSPD.cxx:528
 AliITSsimulationSPD.cxx:529
 AliITSsimulationSPD.cxx:530
 AliITSsimulationSPD.cxx:531
 AliITSsimulationSPD.cxx:532
 AliITSsimulationSPD.cxx:533
 AliITSsimulationSPD.cxx:534
 AliITSsimulationSPD.cxx:535
 AliITSsimulationSPD.cxx:536
 AliITSsimulationSPD.cxx:537
 AliITSsimulationSPD.cxx:538
 AliITSsimulationSPD.cxx:539
 AliITSsimulationSPD.cxx:540
 AliITSsimulationSPD.cxx:541
 AliITSsimulationSPD.cxx:542
 AliITSsimulationSPD.cxx:543
 AliITSsimulationSPD.cxx:544
 AliITSsimulationSPD.cxx:545
 AliITSsimulationSPD.cxx:546
 AliITSsimulationSPD.cxx:547
 AliITSsimulationSPD.cxx:548
 AliITSsimulationSPD.cxx:549
 AliITSsimulationSPD.cxx:550
 AliITSsimulationSPD.cxx:551
 AliITSsimulationSPD.cxx:552
 AliITSsimulationSPD.cxx:553
 AliITSsimulationSPD.cxx:554
 AliITSsimulationSPD.cxx:555
 AliITSsimulationSPD.cxx:556
 AliITSsimulationSPD.cxx:557
 AliITSsimulationSPD.cxx:558
 AliITSsimulationSPD.cxx:559
 AliITSsimulationSPD.cxx:560
 AliITSsimulationSPD.cxx:561
 AliITSsimulationSPD.cxx:562
 AliITSsimulationSPD.cxx:563
 AliITSsimulationSPD.cxx:564
 AliITSsimulationSPD.cxx:565
 AliITSsimulationSPD.cxx:566
 AliITSsimulationSPD.cxx:567
 AliITSsimulationSPD.cxx:568
 AliITSsimulationSPD.cxx:569
 AliITSsimulationSPD.cxx:570
 AliITSsimulationSPD.cxx:571
 AliITSsimulationSPD.cxx:572
 AliITSsimulationSPD.cxx:573
 AliITSsimulationSPD.cxx:574
 AliITSsimulationSPD.cxx:575
 AliITSsimulationSPD.cxx:576
 AliITSsimulationSPD.cxx:577
 AliITSsimulationSPD.cxx:578
 AliITSsimulationSPD.cxx:579
 AliITSsimulationSPD.cxx:580
 AliITSsimulationSPD.cxx:581
 AliITSsimulationSPD.cxx:582
 AliITSsimulationSPD.cxx:583
 AliITSsimulationSPD.cxx:584
 AliITSsimulationSPD.cxx:585
 AliITSsimulationSPD.cxx:586
 AliITSsimulationSPD.cxx:587
 AliITSsimulationSPD.cxx:588
 AliITSsimulationSPD.cxx:589
 AliITSsimulationSPD.cxx:590
 AliITSsimulationSPD.cxx:591
 AliITSsimulationSPD.cxx:592
 AliITSsimulationSPD.cxx:593
 AliITSsimulationSPD.cxx:594
 AliITSsimulationSPD.cxx:595
 AliITSsimulationSPD.cxx:596
 AliITSsimulationSPD.cxx:597
 AliITSsimulationSPD.cxx:598
 AliITSsimulationSPD.cxx:599
 AliITSsimulationSPD.cxx:600
 AliITSsimulationSPD.cxx:601
 AliITSsimulationSPD.cxx:602
 AliITSsimulationSPD.cxx:603
 AliITSsimulationSPD.cxx:604
 AliITSsimulationSPD.cxx:605
 AliITSsimulationSPD.cxx:606
 AliITSsimulationSPD.cxx:607
 AliITSsimulationSPD.cxx:608
 AliITSsimulationSPD.cxx:609
 AliITSsimulationSPD.cxx:610
 AliITSsimulationSPD.cxx:611
 AliITSsimulationSPD.cxx:612
 AliITSsimulationSPD.cxx:613
 AliITSsimulationSPD.cxx:614
 AliITSsimulationSPD.cxx:615
 AliITSsimulationSPD.cxx:616
 AliITSsimulationSPD.cxx:617
 AliITSsimulationSPD.cxx:618
 AliITSsimulationSPD.cxx:619
 AliITSsimulationSPD.cxx:620
 AliITSsimulationSPD.cxx:621
 AliITSsimulationSPD.cxx:622
 AliITSsimulationSPD.cxx:623
 AliITSsimulationSPD.cxx:624
 AliITSsimulationSPD.cxx:625
 AliITSsimulationSPD.cxx:626
 AliITSsimulationSPD.cxx:627
 AliITSsimulationSPD.cxx:628
 AliITSsimulationSPD.cxx:629
 AliITSsimulationSPD.cxx:630
 AliITSsimulationSPD.cxx:631
 AliITSsimulationSPD.cxx:632
 AliITSsimulationSPD.cxx:633
 AliITSsimulationSPD.cxx:634
 AliITSsimulationSPD.cxx:635
 AliITSsimulationSPD.cxx:636
 AliITSsimulationSPD.cxx:637
 AliITSsimulationSPD.cxx:638
 AliITSsimulationSPD.cxx:639
 AliITSsimulationSPD.cxx:640
 AliITSsimulationSPD.cxx:641
 AliITSsimulationSPD.cxx:642
 AliITSsimulationSPD.cxx:643
 AliITSsimulationSPD.cxx:644
 AliITSsimulationSPD.cxx:645
 AliITSsimulationSPD.cxx:646
 AliITSsimulationSPD.cxx:647
 AliITSsimulationSPD.cxx:648
 AliITSsimulationSPD.cxx:649
 AliITSsimulationSPD.cxx:650
 AliITSsimulationSPD.cxx:651
 AliITSsimulationSPD.cxx:652
 AliITSsimulationSPD.cxx:653
 AliITSsimulationSPD.cxx:654
 AliITSsimulationSPD.cxx:655
 AliITSsimulationSPD.cxx:656
 AliITSsimulationSPD.cxx:657
 AliITSsimulationSPD.cxx:658
 AliITSsimulationSPD.cxx:659
 AliITSsimulationSPD.cxx:660
 AliITSsimulationSPD.cxx:661
 AliITSsimulationSPD.cxx:662
 AliITSsimulationSPD.cxx:663
 AliITSsimulationSPD.cxx:664
 AliITSsimulationSPD.cxx:665
 AliITSsimulationSPD.cxx:666
 AliITSsimulationSPD.cxx:667
 AliITSsimulationSPD.cxx:668
 AliITSsimulationSPD.cxx:669
 AliITSsimulationSPD.cxx:670
 AliITSsimulationSPD.cxx:671
 AliITSsimulationSPD.cxx:672
 AliITSsimulationSPD.cxx:673
 AliITSsimulationSPD.cxx:674
 AliITSsimulationSPD.cxx:675
 AliITSsimulationSPD.cxx:676
 AliITSsimulationSPD.cxx:677
 AliITSsimulationSPD.cxx:678
 AliITSsimulationSPD.cxx:679
 AliITSsimulationSPD.cxx:680
 AliITSsimulationSPD.cxx:681
 AliITSsimulationSPD.cxx:682
 AliITSsimulationSPD.cxx:683
 AliITSsimulationSPD.cxx:684
 AliITSsimulationSPD.cxx:685
 AliITSsimulationSPD.cxx:686
 AliITSsimulationSPD.cxx:687
 AliITSsimulationSPD.cxx:688
 AliITSsimulationSPD.cxx:689
 AliITSsimulationSPD.cxx:690
 AliITSsimulationSPD.cxx:691
 AliITSsimulationSPD.cxx:692
 AliITSsimulationSPD.cxx:693
 AliITSsimulationSPD.cxx:694
 AliITSsimulationSPD.cxx:695
 AliITSsimulationSPD.cxx:696
 AliITSsimulationSPD.cxx:697
 AliITSsimulationSPD.cxx:698
 AliITSsimulationSPD.cxx:699
 AliITSsimulationSPD.cxx:700
 AliITSsimulationSPD.cxx:701
 AliITSsimulationSPD.cxx:702
 AliITSsimulationSPD.cxx:703
 AliITSsimulationSPD.cxx:704
 AliITSsimulationSPD.cxx:705
 AliITSsimulationSPD.cxx:706
 AliITSsimulationSPD.cxx:707
 AliITSsimulationSPD.cxx:708
 AliITSsimulationSPD.cxx:709
 AliITSsimulationSPD.cxx:710
 AliITSsimulationSPD.cxx:711
 AliITSsimulationSPD.cxx:712
 AliITSsimulationSPD.cxx:713
 AliITSsimulationSPD.cxx:714
 AliITSsimulationSPD.cxx:715
 AliITSsimulationSPD.cxx:716
 AliITSsimulationSPD.cxx:717
 AliITSsimulationSPD.cxx:718
 AliITSsimulationSPD.cxx:719
 AliITSsimulationSPD.cxx:720
 AliITSsimulationSPD.cxx:721
 AliITSsimulationSPD.cxx:722
 AliITSsimulationSPD.cxx:723
 AliITSsimulationSPD.cxx:724
 AliITSsimulationSPD.cxx:725
 AliITSsimulationSPD.cxx:726
 AliITSsimulationSPD.cxx:727
 AliITSsimulationSPD.cxx:728
 AliITSsimulationSPD.cxx:729
 AliITSsimulationSPD.cxx:730
 AliITSsimulationSPD.cxx:731
 AliITSsimulationSPD.cxx:732
 AliITSsimulationSPD.cxx:733
 AliITSsimulationSPD.cxx:734
 AliITSsimulationSPD.cxx:735
 AliITSsimulationSPD.cxx:736
 AliITSsimulationSPD.cxx:737
 AliITSsimulationSPD.cxx:738
 AliITSsimulationSPD.cxx:739
 AliITSsimulationSPD.cxx:740
 AliITSsimulationSPD.cxx:741
 AliITSsimulationSPD.cxx:742
 AliITSsimulationSPD.cxx:743
 AliITSsimulationSPD.cxx:744
 AliITSsimulationSPD.cxx:745
 AliITSsimulationSPD.cxx:746
 AliITSsimulationSPD.cxx:747
 AliITSsimulationSPD.cxx:748
 AliITSsimulationSPD.cxx:749
 AliITSsimulationSPD.cxx:750
 AliITSsimulationSPD.cxx:751
 AliITSsimulationSPD.cxx:752
 AliITSsimulationSPD.cxx:753
 AliITSsimulationSPD.cxx:754
 AliITSsimulationSPD.cxx:755
 AliITSsimulationSPD.cxx:756
 AliITSsimulationSPD.cxx:757
 AliITSsimulationSPD.cxx:758
 AliITSsimulationSPD.cxx:759
 AliITSsimulationSPD.cxx:760
 AliITSsimulationSPD.cxx:761
 AliITSsimulationSPD.cxx:762
 AliITSsimulationSPD.cxx:763
 AliITSsimulationSPD.cxx:764
 AliITSsimulationSPD.cxx:765
 AliITSsimulationSPD.cxx:766
 AliITSsimulationSPD.cxx:767
 AliITSsimulationSPD.cxx:768
 AliITSsimulationSPD.cxx:769
 AliITSsimulationSPD.cxx:770
 AliITSsimulationSPD.cxx:771
 AliITSsimulationSPD.cxx:772
 AliITSsimulationSPD.cxx:773
 AliITSsimulationSPD.cxx:774
 AliITSsimulationSPD.cxx:775
 AliITSsimulationSPD.cxx:776
 AliITSsimulationSPD.cxx:777
 AliITSsimulationSPD.cxx:778
 AliITSsimulationSPD.cxx:779
 AliITSsimulationSPD.cxx:780
 AliITSsimulationSPD.cxx:781
 AliITSsimulationSPD.cxx:782
 AliITSsimulationSPD.cxx:783
 AliITSsimulationSPD.cxx:784
 AliITSsimulationSPD.cxx:785
 AliITSsimulationSPD.cxx:786
 AliITSsimulationSPD.cxx:787
 AliITSsimulationSPD.cxx:788
 AliITSsimulationSPD.cxx:789
 AliITSsimulationSPD.cxx:790
 AliITSsimulationSPD.cxx:791
 AliITSsimulationSPD.cxx:792
 AliITSsimulationSPD.cxx:793
 AliITSsimulationSPD.cxx:794
 AliITSsimulationSPD.cxx:795
 AliITSsimulationSPD.cxx:796
 AliITSsimulationSPD.cxx:797
 AliITSsimulationSPD.cxx:798
 AliITSsimulationSPD.cxx:799
 AliITSsimulationSPD.cxx:800
 AliITSsimulationSPD.cxx:801
 AliITSsimulationSPD.cxx:802
 AliITSsimulationSPD.cxx:803
 AliITSsimulationSPD.cxx:804
 AliITSsimulationSPD.cxx:805
 AliITSsimulationSPD.cxx:806
 AliITSsimulationSPD.cxx:807
 AliITSsimulationSPD.cxx:808
 AliITSsimulationSPD.cxx:809
 AliITSsimulationSPD.cxx:810
 AliITSsimulationSPD.cxx:811
 AliITSsimulationSPD.cxx:812
 AliITSsimulationSPD.cxx:813
 AliITSsimulationSPD.cxx:814
 AliITSsimulationSPD.cxx:815
 AliITSsimulationSPD.cxx:816
 AliITSsimulationSPD.cxx:817
 AliITSsimulationSPD.cxx:818
 AliITSsimulationSPD.cxx:819
 AliITSsimulationSPD.cxx:820
 AliITSsimulationSPD.cxx:821
 AliITSsimulationSPD.cxx:822
 AliITSsimulationSPD.cxx:823
 AliITSsimulationSPD.cxx:824
 AliITSsimulationSPD.cxx:825
 AliITSsimulationSPD.cxx:826
 AliITSsimulationSPD.cxx:827
 AliITSsimulationSPD.cxx:828
 AliITSsimulationSPD.cxx:829
 AliITSsimulationSPD.cxx:830
 AliITSsimulationSPD.cxx:831
 AliITSsimulationSPD.cxx:832
 AliITSsimulationSPD.cxx:833
 AliITSsimulationSPD.cxx:834
 AliITSsimulationSPD.cxx:835
 AliITSsimulationSPD.cxx:836
 AliITSsimulationSPD.cxx:837
 AliITSsimulationSPD.cxx:838
 AliITSsimulationSPD.cxx:839
 AliITSsimulationSPD.cxx:840
 AliITSsimulationSPD.cxx:841
 AliITSsimulationSPD.cxx:842
 AliITSsimulationSPD.cxx:843
 AliITSsimulationSPD.cxx:844
 AliITSsimulationSPD.cxx:845
 AliITSsimulationSPD.cxx:846
 AliITSsimulationSPD.cxx:847
 AliITSsimulationSPD.cxx:848
 AliITSsimulationSPD.cxx:849
 AliITSsimulationSPD.cxx:850
 AliITSsimulationSPD.cxx:851
 AliITSsimulationSPD.cxx:852
 AliITSsimulationSPD.cxx:853
 AliITSsimulationSPD.cxx:854
 AliITSsimulationSPD.cxx:855
 AliITSsimulationSPD.cxx:856
 AliITSsimulationSPD.cxx:857
 AliITSsimulationSPD.cxx:858
 AliITSsimulationSPD.cxx:859
 AliITSsimulationSPD.cxx:860
 AliITSsimulationSPD.cxx:861
 AliITSsimulationSPD.cxx:862
 AliITSsimulationSPD.cxx:863
 AliITSsimulationSPD.cxx:864
 AliITSsimulationSPD.cxx:865
 AliITSsimulationSPD.cxx:866
 AliITSsimulationSPD.cxx:867
 AliITSsimulationSPD.cxx:868
 AliITSsimulationSPD.cxx:869
 AliITSsimulationSPD.cxx:870
 AliITSsimulationSPD.cxx:871
 AliITSsimulationSPD.cxx:872
 AliITSsimulationSPD.cxx:873
 AliITSsimulationSPD.cxx:874
 AliITSsimulationSPD.cxx:875
 AliITSsimulationSPD.cxx:876
 AliITSsimulationSPD.cxx:877
 AliITSsimulationSPD.cxx:878
 AliITSsimulationSPD.cxx:879
 AliITSsimulationSPD.cxx:880
 AliITSsimulationSPD.cxx:881
 AliITSsimulationSPD.cxx:882
 AliITSsimulationSPD.cxx:883
 AliITSsimulationSPD.cxx:884
 AliITSsimulationSPD.cxx:885
 AliITSsimulationSPD.cxx:886
 AliITSsimulationSPD.cxx:887
 AliITSsimulationSPD.cxx:888
 AliITSsimulationSPD.cxx:889
 AliITSsimulationSPD.cxx:890
 AliITSsimulationSPD.cxx:891
 AliITSsimulationSPD.cxx:892
 AliITSsimulationSPD.cxx:893
 AliITSsimulationSPD.cxx:894
 AliITSsimulationSPD.cxx:895
 AliITSsimulationSPD.cxx:896
 AliITSsimulationSPD.cxx:897
 AliITSsimulationSPD.cxx:898
 AliITSsimulationSPD.cxx:899
 AliITSsimulationSPD.cxx:900
 AliITSsimulationSPD.cxx:901
 AliITSsimulationSPD.cxx:902
 AliITSsimulationSPD.cxx:903
 AliITSsimulationSPD.cxx:904
 AliITSsimulationSPD.cxx:905
 AliITSsimulationSPD.cxx:906
 AliITSsimulationSPD.cxx:907
 AliITSsimulationSPD.cxx:908
 AliITSsimulationSPD.cxx:909
 AliITSsimulationSPD.cxx:910
 AliITSsimulationSPD.cxx:911
 AliITSsimulationSPD.cxx:912
 AliITSsimulationSPD.cxx:913
 AliITSsimulationSPD.cxx:914
 AliITSsimulationSPD.cxx:915
 AliITSsimulationSPD.cxx:916
 AliITSsimulationSPD.cxx:917
 AliITSsimulationSPD.cxx:918
 AliITSsimulationSPD.cxx:919
 AliITSsimulationSPD.cxx:920
 AliITSsimulationSPD.cxx:921
 AliITSsimulationSPD.cxx:922
 AliITSsimulationSPD.cxx:923
 AliITSsimulationSPD.cxx:924
 AliITSsimulationSPD.cxx:925
 AliITSsimulationSPD.cxx:926
 AliITSsimulationSPD.cxx:927
 AliITSsimulationSPD.cxx:928
 AliITSsimulationSPD.cxx:929
 AliITSsimulationSPD.cxx:930
 AliITSsimulationSPD.cxx:931
 AliITSsimulationSPD.cxx:932
 AliITSsimulationSPD.cxx:933
 AliITSsimulationSPD.cxx:934
 AliITSsimulationSPD.cxx:935
 AliITSsimulationSPD.cxx:936
 AliITSsimulationSPD.cxx:937
 AliITSsimulationSPD.cxx:938
 AliITSsimulationSPD.cxx:939
 AliITSsimulationSPD.cxx:940
 AliITSsimulationSPD.cxx:941
 AliITSsimulationSPD.cxx:942
 AliITSsimulationSPD.cxx:943
 AliITSsimulationSPD.cxx:944
 AliITSsimulationSPD.cxx:945
 AliITSsimulationSPD.cxx:946
 AliITSsimulationSPD.cxx:947
 AliITSsimulationSPD.cxx:948
 AliITSsimulationSPD.cxx:949
 AliITSsimulationSPD.cxx:950
 AliITSsimulationSPD.cxx:951
 AliITSsimulationSPD.cxx:952
 AliITSsimulationSPD.cxx:953
 AliITSsimulationSPD.cxx:954
 AliITSsimulationSPD.cxx:955
 AliITSsimulationSPD.cxx:956
 AliITSsimulationSPD.cxx:957
 AliITSsimulationSPD.cxx:958
 AliITSsimulationSPD.cxx:959
 AliITSsimulationSPD.cxx:960
 AliITSsimulationSPD.cxx:961
 AliITSsimulationSPD.cxx:962
 AliITSsimulationSPD.cxx:963
 AliITSsimulationSPD.cxx:964
 AliITSsimulationSPD.cxx:965
 AliITSsimulationSPD.cxx:966
 AliITSsimulationSPD.cxx:967
 AliITSsimulationSPD.cxx:968
 AliITSsimulationSPD.cxx:969
 AliITSsimulationSPD.cxx:970
 AliITSsimulationSPD.cxx:971
 AliITSsimulationSPD.cxx:972
 AliITSsimulationSPD.cxx:973
 AliITSsimulationSPD.cxx:974
 AliITSsimulationSPD.cxx:975
 AliITSsimulationSPD.cxx:976
 AliITSsimulationSPD.cxx:977
 AliITSsimulationSPD.cxx:978
 AliITSsimulationSPD.cxx:979
 AliITSsimulationSPD.cxx:980
 AliITSsimulationSPD.cxx:981
 AliITSsimulationSPD.cxx:982
 AliITSsimulationSPD.cxx:983
 AliITSsimulationSPD.cxx:984
 AliITSsimulationSPD.cxx:985
 AliITSsimulationSPD.cxx:986
 AliITSsimulationSPD.cxx:987
 AliITSsimulationSPD.cxx:988
 AliITSsimulationSPD.cxx:989
 AliITSsimulationSPD.cxx:990
 AliITSsimulationSPD.cxx:991
 AliITSsimulationSPD.cxx:992
 AliITSsimulationSPD.cxx:993
 AliITSsimulationSPD.cxx:994
 AliITSsimulationSPD.cxx:995
 AliITSsimulationSPD.cxx:996
 AliITSsimulationSPD.cxx:997
 AliITSsimulationSPD.cxx:998
 AliITSsimulationSPD.cxx:999
 AliITSsimulationSPD.cxx:1000
 AliITSsimulationSPD.cxx:1001
 AliITSsimulationSPD.cxx:1002
 AliITSsimulationSPD.cxx:1003
 AliITSsimulationSPD.cxx:1004
 AliITSsimulationSPD.cxx:1005
 AliITSsimulationSPD.cxx:1006
 AliITSsimulationSPD.cxx:1007
 AliITSsimulationSPD.cxx:1008
 AliITSsimulationSPD.cxx:1009
 AliITSsimulationSPD.cxx:1010
 AliITSsimulationSPD.cxx:1011
 AliITSsimulationSPD.cxx:1012
 AliITSsimulationSPD.cxx:1013
 AliITSsimulationSPD.cxx:1014
 AliITSsimulationSPD.cxx:1015
 AliITSsimulationSPD.cxx:1016
 AliITSsimulationSPD.cxx:1017
 AliITSsimulationSPD.cxx:1018
 AliITSsimulationSPD.cxx:1019
 AliITSsimulationSPD.cxx:1020
 AliITSsimulationSPD.cxx:1021
 AliITSsimulationSPD.cxx:1022
 AliITSsimulationSPD.cxx:1023
 AliITSsimulationSPD.cxx:1024
 AliITSsimulationSPD.cxx:1025
 AliITSsimulationSPD.cxx:1026
 AliITSsimulationSPD.cxx:1027
 AliITSsimulationSPD.cxx:1028
 AliITSsimulationSPD.cxx:1029
 AliITSsimulationSPD.cxx:1030