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 <stdlib.h>
#include <stdio.h>
#include <cstring>

#include <TCanvas.h>
#include <TF1.h>
#include <TH1.h>
#include <TFile.h>
#include <TRandom.h>
#include <TROOT.h>
#include "AliITS.h"
#include "AliITSMapA2.h"
#include "AliITSdigitSPD.h"
#include "AliITSetfSDD.h"
#include "AliITSmodule.h"
#include "AliITShit.h"
#include "AliITSpList.h"
#include "AliITSCalibrationSDD.h"
#include "AliITSresponseSDD.h"
#include "AliITSsimulationSDD.h"
#include "AliLog.h"
#include "AliRun.h"

using std::endl;
using std::cout;
ClassImp(AliITSsimulationSDD)
////////////////////////////////////////////////////////////////////////
// Version: 0                                                         //
// Written by Piergiorgio Cerello                                     //
// November 23 1999                                                   //
//                                                                    //
// AliITSsimulationSDD is the simulation of SDDs.                     //
////////////////////////////////////////////////////////////////////////

//______________________________________________________________________
AliITSsimulationSDD::AliITSsimulationSDD():
AliITSsimulation(),
fITS(0),
fHitMap2(0),
fHitSigMap2(0),
fHitNoiMap2(0),
fElectronics(0),
fInZR(0),
fInZI(0),
fOutZR(0),
fOutZI(0),
fAnodeFire(0),
fHis(0),
fFlag(kFALSE),
fCrosstalkFlag(kFALSE),
fDoFFT(1),
fNofMaps(0),
fMaxNofSamples(0),
fScaleSize(0){
    // Default constructor
    SetPerpendTracksFlag();
    SetCrosstalkFlag();
    SetDoFFT();
}

//______________________________________________________________________
AliITSsimulationSDD::AliITSsimulationSDD(AliITSDetTypeSim* dettyp):
AliITSsimulation(dettyp),
fITS(0),
fHitMap2(0),
fHitSigMap2(0),
fHitNoiMap2(0),
fElectronics(0),
fInZR(0),
fInZI(0),
fOutZR(0),
fOutZI(0),
fAnodeFire(0),
fHis(0),
fFlag(kFALSE),
fCrosstalkFlag(kFALSE),
fDoFFT(1),
fNofMaps(0),
fMaxNofSamples(0),
fScaleSize(0){
    // Default Constructor
  Init();
}
//______________________________________________________________________
void AliITSsimulationSDD::Init(){
    // Standard Constructor

    AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
    fScaleSize = ScaleFourier(seg);
    SetPerpendTracksFlag();
    SetCrosstalkFlag();
    SetDoFFT();

    AliITSSimuParam* simpar = fDetType->GetSimuParam();
    fpList = new AliITSpList( seg->Npz(),
                              fScaleSize*seg->Npx() );
    fHitSigMap2 = new AliITSMapA2(seg,fScaleSize,1);
    fHitNoiMap2 = new AliITSMapA2(seg,fScaleSize,1);
    fHitMap2 = fHitSigMap2;

    fNofMaps = seg->Npz();
    fMaxNofSamples = seg->Npx();
    fAnodeFire = new Bool_t [fNofMaps];
    
    Float_t sddWidth  = seg->Dz();
    Float_t anodePitch = seg->Dpz(0);
    Double_t timeStep  = (Double_t)seg->Dpx(0);

    if(anodePitch*(fNofMaps/2) > sddWidth) {
      AliWarning(Form("Too many anodes %d or too big pitch %f ",
                fNofMaps/2,anodePitch));
    } // end if


    fElectronics = new AliITSetfSDD(timeStep/fScaleSize,
                                    simpar->GetSDDElectronics());


    fITS       = (AliITS*)gAlice->GetModule("ITS");
 
    fInZR  = new Double_t [fScaleSize*fMaxNofSamples];
    fInZI  = new Double_t [fScaleSize*fMaxNofSamples];
    fOutZR = new Double_t [fScaleSize*fMaxNofSamples];
    fOutZI = new Double_t [fScaleSize*fMaxNofSamples];  
}
//______________________________________________________________________
AliITSsimulationSDD::~AliITSsimulationSDD() { 
    // destructor

    //    delete fpList;
    delete fHitSigMap2;
    delete fHitNoiMap2;
    delete fElectronics;

    fITS = 0;

    if (fHis) {
        fHis->Delete(); 
        delete fHis;     
    } // end if fHis
    if(fInZR)  delete [] fInZR;
    if(fInZI)  delete [] fInZI;        
    if(fOutZR) delete [] fOutZR;
    if(fOutZI) delete [] fOutZI;
    if(fAnodeFire) delete [] fAnodeFire;
}
//______________________________________________________________________
void AliITSsimulationSDD::InitSimulationModule( Int_t module, Int_t event ) {
    // create maps to build the lists of tracks for each summable digit
    fModule = module;
    fEvent  = event;
    ClearMaps();
    memset(fAnodeFire,0,sizeof(Bool_t)*fNofMaps);    
}
//______________________________________________________________________
void AliITSsimulationSDD::ClearMaps() {
    // clear maps
    fpList->ClearMap();
    fHitSigMap2->ClearMap();
    fHitNoiMap2->ClearMap();
}
//______________________________________________________________________
void AliITSsimulationSDD::FastFourierTransform(Double_t *real,
                          Double_t *imag,Int_t direction) {
    // Do a Fast Fourier Transform

    Int_t samples = fElectronics->GetSamples();
    Int_t l = (Int_t) ((log((Float_t) samples)/log(2.))+0.5);
    Int_t m1 = samples;
    Int_t m  = samples/2;
    Int_t m2 = samples/m1;
    Int_t i,j,k;
    for(i=1; i<=l; i++) {
        for(j=0; j<samples; j += m1) {
            Int_t p = 0;
            for(k=j; k<= j+m-1; k++) {
                Double_t wsr = fElectronics->GetWeightReal(p);
                Double_t wsi = fElectronics->GetWeightImag(p);
                if(direction == -1) wsi = -wsi;
                Double_t xr = *(real+k+m);
                Double_t xi = *(imag+k+m);
                *(real+k+m) = wsr*(*(real+k)-xr) - wsi*(*(imag+k)-xi);
                *(imag+k+m) = wsr*(*(imag+k)-xi) + wsi*(*(real+k)-xr);
                *(real+k) += xr;
                *(imag+k) += xi;
                p += m2;
            } // end for k
        } // end for j
        m1 = m;
        m /= 2;
        m2 += m2;
    } // end for i
    for(j=0; j<samples; j++) {
        Int_t j1 = j;
        Int_t p = 0;
        Int_t i1;
        for(i1=1; i1<=l; i1++) {
            Int_t j2 = j1;
            j1 /= 2;
            p = p + p + j2 - j1 - j1;
        } // end for i1
        if(p >= j) {
            Double_t xr = *(real+j);
            Double_t xi = *(imag+j);
            *(real+j) = *(real+p);
            *(imag+j) = *(imag+p);
            *(real+p) = xr;
            *(imag+p) = xi;
        } // end if p>=j
    } // end for j
    if(direction == -1) {
        for(i=0; i<samples; i++) {
            *(real+i) /= samples;
            *(imag+i) /= samples;
        } // end for i
    } // end if direction == -1
    return;
}

//______________________________________________________________________
void AliITSsimulationSDD::SDigitiseModule(AliITSmodule *mod,Int_t md,Int_t ev){
    // digitize module using the "slow" detector simulator creating
    // summable digits.

    TObjArray *fHits = mod->GetHits();
    Int_t nhits      = fHits->GetEntriesFast();
    if( !nhits ) return;

    InitSimulationModule( md, ev );
    HitsToAnalogDigits( mod );  // fills fHitMap2 which is = fHitSigmap2
    ChargeToSignal( fModule,kFALSE,kTRUE ); // - Process signal adding gain without adding noise
    fHitMap2 = fHitNoiMap2;   // - Swap to noise map
    ChargeToSignal( fModule,kTRUE,kFALSE );  // - Process only noise
    fHitMap2 = fHitSigMap2;   // - Return to signal map
    WriteSDigits();
    ClearMaps();
}
//______________________________________________________________________
Bool_t AliITSsimulationSDD::AddSDigitsToModule(TClonesArray *pItemArray,
                                               Int_t mask ) {
    // Add Summable digits to module maps.
    AliITSSimuParam* simpar = fDetType->GetSimuParam();
    Int_t    nItems = pItemArray->GetEntries();
    Double_t maxadc = simpar->GetSDDMaxAdc();
    Bool_t sig = kFALSE;
    
    // cout << "Adding "<< nItems <<" SDigits to module " << fModule << endl;
    for( Int_t i=0; i<nItems; i++ ) {
        AliITSpListItem * pItem = (AliITSpListItem *)(pItemArray->At( i ));
        if( pItem->GetModule() != fModule ) {
            Error( "AliITSsimulationSDD","Error reading, SDigits module "
                   "%d != current module %d: exit",
                   pItem->GetModule(), fModule );
            return sig;
        } // end if

        if(pItem->GetSignal()>0.0 ) sig = kTRUE;
        
        fpList->AddItemTo( mask, pItem ); // Add SignalAfterElect + noise
        AliITSpListItem * pItem2 = fpList->GetpListItem( pItem->GetIndex() );
        Double_t sigAE = pItem2->GetSignalAfterElect();
        if( sigAE >= maxadc ) sigAE = maxadc-1; // avoid overflow signal
        Int_t ia;
        Int_t it;
        fpList->GetMapIndex( pItem->GetIndex(), ia, it );
        fHitMap2->SetHit( ia, it, sigAE );
        fAnodeFire[ia] = kTRUE;
    }
    return sig;
}
//______________________________________________________________________
void AliITSsimulationSDD::FinishSDigitiseModule() {
    // digitize module using the "slow" detector simulator from
    // the sum of summable digits.
    FinishDigits() ;
    ClearMaps();
}
//______________________________________________________________________
void AliITSsimulationSDD::DigitiseModule(AliITSmodule *mod,Int_t md,Int_t ev){
    // create maps to build the lists of tracks for each digit

    TObjArray *fHits = mod->GetHits();
    Int_t nhits      = fHits->GetEntriesFast();

    InitSimulationModule( md, ev );
    if( !nhits ) return;
        
    HitsToAnalogDigits( mod );
    ChargeToSignal( fModule,kTRUE,kTRUE );  // process signal + noise

    for( Int_t i=0; i<fNofMaps; i++ ) {
        for( Int_t j=0; j<fMaxNofSamples; j++ ) {
            Int_t jdx = j*fScaleSize;
            Int_t index = fpList->GetHitIndex( i, j );
            AliITSpListItem pItemTmp2( fModule, index, 0. );
            // put the fScaleSize analog digits in only one
            for( Int_t ik=0; ik<fScaleSize; ik++ ) {
                AliITSpListItem *pItemTmp = fpList->GetpListItem( i, jdx+ik );
                if( pItemTmp == 0 ) continue;
                pItemTmp2.Add( pItemTmp );
            }
            fpList->DeleteHit( i, j );
            fpList->AddItemTo( 0, &pItemTmp2 );
        }
    }
    FinishDigits();
    ClearMaps();
}
//______________________________________________________________________
void AliITSsimulationSDD::FinishDigits() {
    // introduce the electronics effects and do zero-suppression if required

    if( fCrosstalkFlag ) ApplyCrosstalk(fModule);

    AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(fModule);
    Bool_t isZeroSupp = res->GetZeroSupp();
    if (isZeroSupp) Compress2D();
    else StoreAllDigits();
}
//______________________________________________________________________
void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
    // create maps to build the lists of tracks for each digit
  AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
  AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(fModule);
  AliITSSimuParam* simpar = fDetType->GetSimuParam();
  TObjArray *hits     = mod->GetHits();
  Int_t      nhits    = hits->GetEntriesFast();

  //    Int_t      arg[6]   = {0,0,0,0,0,0};
  Int_t     nofAnodes  = fNofMaps/2;
  Double_t  sddLength  = seg->Dx();
  Double_t  anodePitch = seg->Dpz(0);
  Double_t  timeStep   = seg->Dpx(0);
  Double_t  driftSpeed ;  // drift velocity (anode dependent)
  Double_t  nanoampToADC       = simpar->GetSDDMaxAdc()/simpar->GetSDDDynamicRange(); //   maxadc/topValue;
  Double_t  cHloss     = simpar->GetSDDChargeLoss();
  Float_t   dfCoeff, s1; 
  simpar->GetSDDDiffCoeff(dfCoeff,s1); // Signal 2d Shape
  Double_t  eVpairs    = simpar->GetGeVToCharge()*1.0E9; // 3.6 eV by def.
  Double_t  nsigma     = simpar->GetNSigmaIntegration(); //
  Int_t     nlookups   = simpar->GetGausNLookUp();       //
  Float_t   jitter     = simpar->GetSDDJitterError(); // 
  Float_t   mapsmear   = simpar->GetSDDCorrMapPrecision(); // 
  Float_t   trigDelay  = simpar->GetSDDTrigDelay(); // compensation for MC time zero
  if(res->IsAMAt20MHz()) trigDelay+=12.5; // compensation for discretization step

  Float_t   timeZero=fDetType->GetResponseSDD()->GetTimeZero(fModule);
  Float_t   adcscale   = fDetType->GetResponseSDD()->GetADCtokeV(fModule);
  adcscale/=simpar->GetSDDkeVtoADC();

  // Piergiorgio's part (apart for few variables which I made float
  // when i thought that can be done
  // Fill detector maps with GEANT hits
  // loop over hits in the module
  
  const Float_t kconv = 1.0e+6;  // GeV->KeV
  Int_t     itrack      = 0;
  Int_t     iWing;       // which detector wing/side.
  Int_t     ii,kk,ka,kt; // loop indexs
  Int_t     ia,it,index; // sub-pixel integration indexies
  Int_t     iAnode;      // anode number.
  Int_t     timeSample;  // time buckett.
  Int_t     anodeWindow; // anode direction charge integration width
  Int_t     timeWindow;  // time direction charge integration width
  Int_t     jamin,jamax; // anode charge integration window
  Int_t     jtmin,jtmax; // time charge integration window
  Int_t     nsplitAn;    // the number of splits in anode and time windows
  Int_t     nsplitTb;    // the number of splits in anode and time windows
  Int_t     nOfSplits;   // number of times track length is split into
  Float_t   nOfSplitsF;  // Floating point version of nOfSplits.
  Float_t   kkF;         // Floating point version of loop index kk.
  Double_t  pathInSDD; // Track length in SDD.
  Double_t  drPath; // average position of track in detector. in microns
  Double_t  drTime; // Drift time
  Double_t  avDrft;  // x position of path length segment in cm.
  Double_t  avAnode; // Anode for path length segment in Anode number (float)
  Double_t  zAnode;  // Floating point anode number.
  Double_t  driftPath; // avDrft in microns.
  Double_t  width;     // width of signal at anodes.
  Double_t  depEnergy; // Energy deposited in this GEANT step.
  Double_t  xL[3],dxL[3]; // local hit coordinates and diff.
  Double_t  sigA; // sigma of signal at anode.
  Double_t  sigT; // sigma in time/drift direction for track segment
  Double_t  aStep,aConst; // sub-pixel size and offset anode
  Double_t  tStep,tConst; // sub-pixel size and offset time
  Double_t  amplitude; // signal amplitude for track segment in nanoAmpere
  Double_t  chargeloss; // charge loss for track segment.
  Double_t  anodeAmplitude; // signal amplitude in anode direction
  Double_t  aExpo;          // exponent of Gaussian anode direction
  Double_t  timeAmplitude;  // signal amplitude in time direction
  Double_t  tExpo;          // exponent of Gaussian time direction
  Double_t  tof;            // Time of flight in ns of this step.    
  
  for(ii=0; ii<nhits; ii++) {
    if(!mod->LineSegmentL(ii,xL[0],dxL[0],xL[1],dxL[1],xL[2],dxL[2],
			  depEnergy,itrack)) continue;
    Float_t xloc=xL[0];
    Float_t zloc=xL[2]+0.5*dxL[2];
    zAnode=seg->GetAnodeFromLocal(xloc,zloc); // anode number in the range 0.-511.
    driftSpeed = res->GetDriftSpeedAtAnode(zAnode);
    driftSpeed+= fDetType->GetResponseSDD()->GetDeltaVDrift(fModule,zAnode>255);

    if(timeStep*fMaxNofSamples < sddLength/driftSpeed) {
      AliWarning("Time Interval > Allowed Time Interval");
    }
    depEnergy  *= kconv;
    if (!depEnergy) {
      AliDebug(1,
	       Form("fTrack = %d hit=%d module=%d This particle has passed without losing energy!",
		    itrack,ii,mod->GetIndex()));
      continue;
      // continue if the particle did not lose energy
      // passing through detector
    } // end if !depEnergy
     
    tof=0.;
    AliITShit* h=(AliITShit*)hits->At(ii);
    if(h){ 
      tof=h->GetTOF()*1E9; 
      AliDebug(1,Form("TOF for hit %d on mod %d (particle %d)=%g",ii,fModule,h->Track(),tof));
    }

    Float_t corrx=0, corrz=0;
    res->GetShiftsForSimulation(xL[2],xL[0],corrz,corrx,seg);
    xL[2]-=corrz;
    xL[0]-=corrx;
    xL[0] += 0.0001*gRandom->Gaus( 0, mapsmear); //
    xL[0] += 0.0001*gRandom->Gaus( 0, jitter ); //

    pathInSDD = TMath::Sqrt(dxL[0]*dxL[0]+dxL[1]*dxL[1]+dxL[2]*dxL[2]);
    
    if (fFlag && pathInSDD) { depEnergy *= (0.03/pathInSDD); }
    drPath = TMath::Abs(10000.*(dxL[0]+2.*xL[0])*0.5);
    drPath = sddLength-drPath;
    if(drPath < 0) {
      AliInfo( // this should be fixed at geometry level
	       Form("negative drift path drPath=%e sddLength=%e dxL[0]=%e xL[0]=%e",
		    drPath,sddLength,dxL[0],xL[0]));
      continue;
    } // end if drPath < 0
    
    // Compute number of segments to brake step path into
    drTime = drPath/driftSpeed;  //   Drift Time
    sigA   = TMath::Sqrt(2.*dfCoeff*drTime+s1*s1);// Sigma along the anodes
    // calcuate the number of time the path length should be split into.
    nOfSplits = (Int_t) (1. + 10000.*pathInSDD/sigA);
    if(fFlag) nOfSplits = 1;
    
    // loop over path segments, init. some variables.
    depEnergy /= nOfSplits;
    nOfSplitsF = (Float_t) nOfSplits;
    Float_t theAverage=0.,theSteps=0.;
    for(kk=0;kk<nOfSplits;kk++) { // loop over path segments
      kkF       = (Float_t) kk + 0.5;
      avDrft    = xL[0]+dxL[0]*kkF/nOfSplitsF;
      avAnode   = xL[2]+dxL[2]*kkF/nOfSplitsF;
      theSteps+=1.;
      theAverage+=avAnode;
      zAnode = seg->GetAnodeFromLocal(avDrft,avAnode);
      //      if(avDrft*xloc<0) AliDebug(1,Form("Swap of side xloc_orig=%f  xloc_now=%f",xloc,avDrft));
      iWing = seg->GetSideFromLocalX(avDrft);
    
      driftSpeed = res->GetDriftSpeedAtAnode(zAnode);	
      driftSpeed+= fDetType->GetResponseSDD()->GetDeltaVDrift(fModule,zAnode>255);
      driftPath = TMath::Abs(10000.*avDrft);
      driftPath = sddLength-driftPath;
      if(driftPath < 0) {
	AliDebug(1, // this should be fixed at geometry level
		 Form("negative drift path driftPath=%e sddLength=%e avDrft=%e dxL[0]=%e xL[0]=%e",
		      driftPath,sddLength,avDrft,dxL[0],xL[0]));
	continue;
      } // end if driftPath < 0
      drTime     = driftPath/driftSpeed; // drift time for segment.
      // Sigma along the anodes for track segment.
      sigA       = TMath::Sqrt(2.*dfCoeff*drTime+s1*s1);
      sigT       = sigA/driftSpeed;

      drTime+=tof; // take into account Time Of Flight from production point
      drTime-=trigDelay;
      drTime+=timeZero;
      timeSample = (Int_t) (fScaleSize*drTime/timeStep + 1.001); // time bin in range 1-256 !!!
      if(zAnode>nofAnodes) zAnode-=nofAnodes;  // to have the anode number between 0. and 256.
      iAnode = (Int_t) (1.001+zAnode); // iAnode in range 1-256 !!!!
      
	// Peak amplitude in nanoAmpere
      amplitude  = fScaleSize*160.*depEnergy/
	(timeStep*eVpairs*2.*acos(-1.));
      chargeloss = 1.-cHloss*driftPath/1000.;
      amplitude *= chargeloss;
      amplitude *= adcscale;
      width  = 2.*nsigma/(nlookups-1);
      // Spread the charge 
      nsplitAn = 4; 
      nsplitTb=4;
      aStep  = anodePitch/(nsplitAn*sigA);
      aConst = zAnode*anodePitch/sigA;
      tStep  = timeStep/(nsplitTb*fScaleSize*sigT);
      tConst = drTime/sigT;
      // Define SDD window corresponding to the hit
      anodeWindow = (Int_t)(nsigma*sigA/anodePitch+1);
      timeWindow  = (Int_t) (fScaleSize*nsigma*sigT/timeStep+1.);
      jamin = (iAnode - anodeWindow - 2)*nsplitAn+1;
      if(jamin <= 0) jamin = 1;
      if(jamin > nofAnodes*nsplitAn){ 
	AliDebug(1,Form("Energy deposition completely outside anode acceptance: anode min=%d",jamin));
	continue;
      }
      jamax = (iAnode + anodeWindow + 2)*nsplitAn;
      if(jamax > nofAnodes*nsplitAn) jamax = nofAnodes*nsplitAn;
      if(jamax <=0){ 
	AliDebug(1,Form("Energy deposition completely outside anode acceptance: anode max=%d",jamax));
	continue;
      }
      jtmin = (Int_t)(timeSample-timeWindow-2)*nsplitTb+1;
      if(jtmin <= 0) jtmin = 1;
      if(jtmin > fScaleSize*fMaxNofSamples*nsplitTb){ 
	AliDebug(1,Form("Energy deposition completely outside time acceptance: time sample min=%d  tof=%f",jtmin,tof));
	continue; 
      }
      jtmax = (Int_t)(timeSample+timeWindow+2)*nsplitTb;
      if(jtmax > fScaleSize*fMaxNofSamples*nsplitTb) jtmax = fScaleSize*fMaxNofSamples*nsplitTb;
      if(jtmax <= 0){
	AliDebug(1,Form("Energy deposition completely outside time acceptance: time sample max=%d  tof=%f",jtmax,tof));
	continue; 
      }

      // Spread the charge in the anode-time window
      for(ka=jamin; ka <=jamax; ka++) {	  
	ia = (ka-1)/nsplitAn + 1;
	if(ia <= 0) ia=1; 
	if(ia > nofAnodes) ia = nofAnodes;
	aExpo     = (aStep*(ka-0.5)-aConst);
	if(TMath::Abs(aExpo) > nsigma)  anodeAmplitude = 0.;
	else {
	  Int_t theBin = (Int_t) ((aExpo+nsigma)/width+0.5);
	  anodeAmplitude = amplitude*simpar->GetGausLookUp(theBin);
	}
	// index starts from 0
	index = iWing*nofAnodes+ia-1;
	if(anodeAmplitude){
	  for(kt=jtmin; kt<=jtmax; kt++) {
	    it = (kt-1)/nsplitTb+1;  // it starts from 1
	    if(it<=0) it=1;
	    if(it>fScaleSize*fMaxNofSamples)
	      it = fScaleSize*fMaxNofSamples;
	    tExpo    = (tStep*(kt-0.5)-tConst);
	    if(TMath::Abs(tExpo) > nsigma) timeAmplitude = 0.;
	    else {
	      Int_t theBin = (Int_t) ((tExpo+nsigma)/width+0.5);
	      timeAmplitude = anodeAmplitude*simpar->GetGausLookUp(theBin)*aStep*tStep;
	    }
	    timeAmplitude *= nanoampToADC;
	    //         ListOfFiredCells(arg,timeAmplitude,alst,padr);
	    Double_t charge = timeAmplitude;
	    charge += fHitMap2->GetSignal(index,it-1);
	    fHitMap2->SetHit(index, it-1, charge);
	    fpList->AddSignal(index,it-1,itrack,ii-1,
			      mod->GetIndex(),timeAmplitude);
	    fAnodeFire[index] = kTRUE;
	  }  // end loop over time in window               
	} // end if anodeAmplitude 
      } // loop over anodes in window
    } // end loop over "sub-hits"
  } // end loop over hits
}

//____________________________________________
void AliITSsimulationSDD::AddDigit( Int_t i, Int_t j, Int_t signalc, Int_t signale) {
  // Adds a Digit.
  Int_t size = AliITSdigit::GetNTracks();

  Int_t digits[3];
  Int_t * tracks = new Int_t[size];
  Int_t * hits = new Int_t[size];
  Float_t phys;
  Float_t * charges = new Float_t[size];

  digits[0] = i;
  digits[1] = j;
  digits[2] = signalc;

  AliITSpListItem *pItem = fpList->GetpListItem( i, j );
  if( pItem == 0 ) {
    phys = 0.0;
    for( Int_t l=0; l<size; l++ ) {
      tracks[l]  = 0;
      hits[l]    = 0;
      charges[l] = 0.0;
    }
  } else {
    Int_t idtrack =  pItem->GetTrack( 0 );
    if( idtrack >= 0 ) phys = pItem->GetSignal();  
    else phys = 0.0;

    for( Int_t l=0; l<size; l++ ) if(l<pItem->GetMaxKept()) {
      tracks[l]  = pItem->GetTrack( l );
      hits[l]    = pItem->GetHit( l );
      charges[l] = pItem->GetSignal( l );
    }else{
      tracks[l]  = -3;
      hits[l]    = -1;
      charges[l] = 0.0;
    }// end for if
  }

  fITS->AddSimDigit( 1, phys, digits, tracks, hits, charges, signale ); 
  delete [] tracks;
  delete [] hits;
  delete [] charges;
}
//______________________________________________________________________
void AliITSsimulationSDD::ChargeToSignal(Int_t mod,Bool_t bAddNoise, Bool_t bAddGain) {
  // add baseline, noise, gain, electronics and ADC saturation effects
  // apply dead channels

  AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(mod);
  Double_t baseline=0; 
  Double_t noise=0; 
  Double_t gain=0; 
  Float_t contrib=0;
  Int_t i,k,kk;
  AliITSSimuParam* simpar = fDetType->GetSimuParam();
  Float_t maxadc = simpar->GetSDDMaxAdc();    
  Int_t nGroup=fScaleSize;
  if(res->IsAMAt20MHz()){
    nGroup=fScaleSize/2;
  }

  for (i=0;i<fNofMaps;i++) {
    if( !fAnodeFire[i] ) continue;
    baseline = res->GetBaseline(i);
    noise = res->GetNoise(i);
    gain = res->GetChannelGain(i)/fDetType->GetAverageGainSDD();
    if(res->IsBad()) gain=0.;
    if( res->IsChipBad(res->GetChip(i)) )gain=0.;
    for(k=0; k<fScaleSize*fMaxNofSamples; k++) {
      fInZR[k]  = fHitMap2->GetSignal(i,k);
      if(bAddGain) fInZR[k]*=gain;
      if( bAddNoise ) {
	contrib   = (baseline + noise*gRandom->Gaus());
	fInZR[k] += contrib;
      }
      fInZI[k]  = 0.;
    } // end for k
    if(!fDoFFT) {      
      for(k=0; k<fMaxNofSamples; k++) {
	Double_t newcont = 0.;
	Double_t maxcont = 0.;
	for(kk=0;kk<fScaleSize;kk++) {
	  newcont = fInZR[fScaleSize*k+kk];
	  if(newcont > maxcont) maxcont = newcont;
	} // end for kk
	newcont = maxcont;
	if (newcont >= maxadc) newcont = maxadc -1;
	if(newcont >= baseline){
	  Warning("","newcont=%f>=baseline=%f",newcont,baseline);
	} // end if
	  // back to analog: ?
	fHitMap2->SetHit(i,k,newcont);
      }  // end for k
    }else{
      FastFourierTransform(&fInZR[0],&fInZI[0],1);
      for(k=0; k<fScaleSize*fMaxNofSamples; k++) {
	Double_t rw = fElectronics->GetTraFunReal(k);
	Double_t iw = fElectronics->GetTraFunImag(k);
	fOutZR[k]   = fInZR[k]*rw - fInZI[k]*iw;
	fOutZI[k]   = fInZR[k]*iw + fInZI[k]*rw;
      } // end for k
      FastFourierTransform(&fOutZR[0],&fOutZI[0],-1);
      for(k=0; k<fMaxNofSamples; k++) {
	Double_t newcont1 = 0.;
	Double_t maxcont1 = 0.;
	for(kk=0;kk<nGroup;kk++) {
	  newcont1 = fOutZR[fScaleSize*k+kk];
	  if(newcont1 > maxcont1) maxcont1 = newcont1;
	} // end for kk
	newcont1 = maxcont1;
	if (newcont1 >= maxadc) newcont1 = maxadc -1;
	fHitMap2->SetHit(i,k,newcont1);
      } // end for k
    }
  } // end for i loop over anodes
  return;
}

//______________________________________________________________________
void AliITSsimulationSDD::ApplyCrosstalk(Int_t mod) {
    // function add the crosstalk effect to signal
    // temporal function, should be checked...!!!
  
    // create and inizialice crosstalk map
    Float_t* ctk = new Float_t[fNofMaps*fMaxNofSamples+1];
    memset( ctk, 0, sizeof(Float_t)*(fNofMaps*fMaxNofSamples+1) );
    AliITSCalibrationSDD* calibr = (AliITSCalibrationSDD*)GetCalibrationModel(mod);
    for( Int_t z=0; z<fNofMaps; z++ ) {
      Double_t baseline = calibr->GetBaseline(z);
        Bool_t on = kFALSE;
        Int_t tstart = 0;
        Int_t tstop = 0;
        Int_t nTsteps = 0;
        
        for( Int_t l=0; l<fMaxNofSamples; l++ ) {
            Float_t fadc = (Float_t)fHitMap2->GetSignal( z, l );
            if( fadc > baseline ) {
                if( on == kFALSE && l<fMaxNofSamples-4 ) {
                    Float_t fadc1 = (Float_t)fHitMap2->GetSignal( z, l+1 );
                    if( fadc1 < fadc ) continue;
                    on = kTRUE;
                    nTsteps = 0;
                    tstart = l;
                }
                nTsteps++;
            }
            else { // end fadc > baseline
                if( on == kTRUE ) {        
                    if( nTsteps > 2 ) {
                        tstop = l;
                        // make smooth derivative
                        Float_t* dev = new Float_t[fMaxNofSamples+1];
                        memset( dev, 0, sizeof(Float_t)*(fMaxNofSamples+1) );
                        for( Int_t i=tstart; i<tstop; i++ ) {   
                            if( i > 2 && i < fMaxNofSamples-2 )
                                dev[i] = -0.2*fHitMap2->GetSignal( z,i-2 ) 
                                    -0.1*fHitMap2->GetSignal( z,i-1 ) 
                                    +0.1*fHitMap2->GetSignal( z,i+1 ) 
                                    +0.2*fHitMap2->GetSignal( z,i+2 );
                        }
                        
                        // add crosstalk contribution to neibourg anodes  
                        for( Int_t i=tstart; i<tstop; i++ ) {
                            Int_t anode = z - 1;
                            Int_t i1 = (Int_t)((i-tstart)*.61+tstart+0.5); // 
                            Float_t ctktmp =  -dev[i1] * 0.25;
                            if( anode > 0 ) {
                                ctk[anode*fMaxNofSamples+i] += ctktmp;
                            }
                            anode = z + 1;
                            if( anode < fNofMaps ) {
                                ctk[anode*fMaxNofSamples+i] += ctktmp;
                            }
                        }
                        delete [] dev;
                        
                    } // if( nTsteps > 2 )
                    on = kFALSE;
                }  // if( on == kTRUE )
            }  // else
        }
    }
    
    for( Int_t a=0; a<fNofMaps; a++ )
        for( Int_t t=0; t<fMaxNofSamples; t++ ) {     
            Float_t signal = fHitMap2->GetSignal(a,t)+ctk[a*fMaxNofSamples+t];
            fHitMap2->SetHit( a, t, signal );
        }

    delete [] ctk;
}

//______________________________________________________________________
Int_t AliITSsimulationSDD::Convert10to8(Int_t signal) const {
    // To the 10 to 8 bit lossive compression.
    // code from Davide C. and Albert W.

    if (signal < 128)  return signal;
    if (signal < 256)  return (128+((signal-128)>>1));
    if (signal < 512)  return (192+((signal-256)>>3));
    if (signal < 1024) return (224+((signal-512)>>4));
    return 0;
}
//______________________________________________________________________
Int_t AliITSsimulationSDD::Convert8to10(Int_t signal) const {
  // Decompression from 8 to 10 bit

  if (signal < 0 || signal > 255) {
    AliWarning(Form("Signal value %d out of range",signal));
    return 0;
  } // end if signal <0 || signal >255

  if (signal < 128) return signal;
  if (signal < 192) {
    if (TMath::Odd(signal)) return (128+((signal-128)<<1));
    else  return (128+((signal-128)<<1)+1);
  } // end if signal < 192
  if (signal < 224) {
    if (TMath::Odd(signal)) return (256+((signal-192)<<3)+3);
    else  return (256+((signal-192)<<3)+4);
  } // end if signal < 224
  if (TMath::Odd(signal)) return (512+((signal-224)<<4)+7);
  return (512+((signal-224)<<4)+8);
}
//______________________________________________________________________
void AliITSsimulationSDD::Compress2D(){
  // 2D zero-suppression algorithm as described in ALICE-INT-1999-28 V10
  AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(fModule);  
  for (Int_t iWing=0; iWing<2; iWing++) {
    Int_t tL=res->GetZSLowThreshold(iWing);
    Int_t tH=res->GetZSHighThreshold(iWing);
    for (Int_t i=0; i<fNofMaps/2; i++) {  
      Int_t ian=i+iWing*fNofMaps/2;
      if( !fAnodeFire[ian] ) continue;
      for (Int_t itb=0; itb<fMaxNofSamples; itb++) {
	Int_t nLow=0, nHigh=0;      
	Float_t cC=fHitMap2->GetSignal(ian,itb);
	if(cC<=tL) continue;
	nLow++; // cC is greater than tL
	if(cC>tH) nHigh++;
	//                     N
	// Get "quintuple":   WCE
	//                     S
	Float_t wW=0.;
	if(itb>0) wW=fHitMap2->GetSignal(ian,itb-1);
	if(wW>tL) nLow++;
	if(wW>tH) nHigh++;
	Float_t eE=0.;
	if(itb<fMaxNofSamples-1) eE=fHitMap2->GetSignal(ian,itb+1);
	if(eE>tL) nLow++;
	if(eE>tH) nHigh++;
	Float_t nN=0.;
	if(i<(fNofMaps/2-1)) nN=fHitMap2->GetSignal(ian+1,itb);
	if(nN>tL) nLow++;
	if(nN>tH) nHigh++;
	Float_t sS=0.;
	if(i>0) sS=fHitMap2->GetSignal(ian-1,itb);
	if(sS>tL) nLow++;
	if(sS>tH) nHigh++;
 	
	if(nLow>=2 && nHigh>=1){
	  Int_t signal=(Int_t)cC;
	  Int_t signalc = Convert10to8(signal);
	  Int_t signale = Convert8to10(signalc);
	  signalc-=tL; // subtract low threshold after 10 to 8 bit compression
	  if(signalc>=4) AddDigit(ian,itb,signalc,signale);  // store C 
	}
      }
    }
  }
}


//______________________________________________________________________
void AliITSsimulationSDD::StoreAllDigits(){
  // store digits for non-zero-suppressed data
  for (Int_t ian=0; ian<fNofMaps; ian++) {
    for (Int_t itb=0; itb<fMaxNofSamples; itb++){
      Int_t signal=(Int_t)(fHitMap2->GetSignal(ian,itb));
      Int_t signalc = Convert10to8(signal);
      Int_t signale = Convert8to10(signalc);
      AddDigit(ian,itb,signalc,signale);  
    } 
  }
} 
//______________________________________________________________________
void AliITSsimulationSDD::CreateHistograms(Int_t scale){
  // Creates histograms of maps for debugging
  Int_t i;
  
  fHis=new TObjArray(fNofMaps);
  for (i=0;i<fNofMaps;i++) {
    TString sddName;
    sddName.Form("sdd_%d",i+1);
    fHis->AddAt(new TH1F(sddName.Data(),"SDD maps",scale*fMaxNofSamples,
			 0.,(Float_t) scale*fMaxNofSamples), i);
  } // end for i
}
//______________________________________________________________________
void AliITSsimulationSDD::FillHistograms(){
    // fill 1D histograms from map

    if (!fHis) return;

    for( Int_t i=0; i<fNofMaps; i++) {
        TH1F *hist =(TH1F *)fHis->UncheckedAt(i);
        Int_t nsamples = hist->GetNbinsX();
        for( Int_t j=0; j<nsamples; j++) {
            Double_t signal=fHitMap2->GetSignal(i,j);
            hist->Fill((Float_t)j,signal);
        } // end for j
    } // end for i
}
//______________________________________________________________________
void AliITSsimulationSDD::ResetHistograms(){
    // Reset histograms for this detector
    Int_t i;

    for (i=0;i<fNofMaps;i++ ) {
        if (fHis->At(i))    ((TH1F*)fHis->At(i))->Reset();
    } // end for i
}
//______________________________________________________________________
TH1F *AliITSsimulationSDD::GetAnode(Int_t wing, Int_t anode) { 
    // Fills a histogram from a give anode.  

    if (!fHis) return 0;

    if(wing <=0 || wing > 2) {
        Warning("GetAnode","Wrong wing number: %d",wing);
        return NULL;
    } // end if wing <=0 || wing >2
    if(anode <=0 || anode > fNofMaps/2) {
        Warning("GetAnode","Wrong anode number: %d",anode);
        return NULL;
    } // end if ampde <=0 || andoe > fNofMaps/2

    Int_t index = (wing-1)*fNofMaps/2 + anode-1;
    return (TH1F*)(fHis->At(index));
}
//______________________________________________________________________
void AliITSsimulationSDD::WriteToFile(TFile *hfile) {
    // Writes the histograms to a file

    if (!fHis) return;

    hfile->cd();
    Int_t i;
    for(i=0; i<fNofMaps; i++)  fHis->At(i)->Write(); //fAdcs[i]->Write();
    return;
}
//______________________________________________________________________
void AliITSsimulationSDD::WriteSDigits(){
    // Fills the Summable digits Tree
    static AliITS *aliITS = (AliITS*)gAlice->GetModule("ITS");

    for( Int_t i=0; i<fNofMaps; i++ ) {
        if( !fAnodeFire[i] ) continue;
	for( Int_t j=0; j<fMaxNofSamples; j++ ) {
            Double_t sig = fHitMap2->GetSignal( i, j );
            if( sig > 0.2 ) {
                Int_t jdx = j*fScaleSize;
                Int_t index = fpList->GetHitIndex( i, j );
                AliITSpListItem pItemTmp2( fModule, index, 0. );
                // put the fScaleSize analog digits in only one
                for( Int_t ik=0; ik<fScaleSize; ik++ ) {
                    AliITSpListItem *pItemTmp = fpList->GetpListItem(i,jdx+ik);
                    if( pItemTmp == 0 ) continue;
                    pItemTmp2.Add( pItemTmp );
                }
                pItemTmp2.AddSignalAfterElect( fModule, index, sig );
                pItemTmp2.AddNoise(fModule,index,fHitNoiMap2->GetSignal(i,j));
                aliITS->AddSumDigit( pItemTmp2 );
            } // end if (sig > 0.2)
        }
    }
    return;
}
//______________________________________________________________________
void AliITSsimulationSDD::PrintStatus() const {
    // Print SDD simulation Parameters

    cout << "**************************************************" << endl;
    cout << "   Silicon Drift Detector Simulation Parameters   " << endl;
    cout << "**************************************************" << endl;
    cout << "Flag for Perpendicular tracks: " << (Int_t) fFlag << endl;
    cout << "Flag to switch off electronics: " << (Int_t) fDoFFT << endl;
    cout << "Number of Anodes used: " << fNofMaps << endl;
    cout << "Number of Time Samples: " << fMaxNofSamples << endl;
    cout << "Scale size factor: " << fScaleSize << endl;
    cout << "**************************************************" << endl;
}

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