#include <TGeoGlobalMagField.h>
#include <TH1.h>
#include <TH2.h>
#include <TString.h>
#include "AliITSU.h"
#include "AliITSUDigitPix.h"
#include "AliITSUHit.h"
#include "AliITSUChip.h"
#include "AliITSUSensMap.h"
#include "AliITSUCalibrationPix.h"
#include "AliITSUSegmentationPix.h"
#include "AliITSUSimulationPix.h"
#include "AliLog.h"
#include "AliRun.h"
#include "AliMagF.h"
#include "AliMathBase.h"
#include "AliITSUSimuParam.h"
#include "AliITSUSDigit.h"
#include "AliITSUParamList.h"
using std::cout;
using std::endl;
using namespace TMath;
ClassImp(AliITSUSimulationPix)
AliITSUSimulationPix::AliITSUSimulationPix()
: fTanLorAng(0)
,fGlobalChargeScale(1.0)
,fSpread2DHisto(0)
,fSpreadFun(0)
,fROTimeFun(0)
{
SetUniqueID(AliITSUGeomTGeo::kChipTypePix);
}
AliITSUSimulationPix::AliITSUSimulationPix(AliITSUSimuParam* sim,AliITSUSensMap* map)
:AliITSUSimulation(sim,map)
,fTanLorAng(0)
,fGlobalChargeScale(1.0)
,fSpread2DHisto(0)
,fSpreadFun(0)
,fROTimeFun(0)
{
SetUniqueID(AliITSUGeomTGeo::kChipTypePix);
Init();
}
AliITSUSimulationPix::AliITSUSimulationPix(const AliITSUSimulationPix &s)
:AliITSUSimulation(s)
,fTanLorAng(s.fTanLorAng)
,fGlobalChargeScale(s.fGlobalChargeScale)
,fSpread2DHisto(s.fSpread2DHisto)
,fSpreadFun(s.fSpreadFun)
,fROTimeFun(s.fROTimeFun)
{
}
AliITSUSimulationPix::~AliITSUSimulationPix()
{
}
AliITSUSimulationPix& AliITSUSimulationPix::operator=(const AliITSUSimulationPix &s)
{
if (&s == this) return *this;
AliITSUSimulation::operator=(s);
fSpread2DHisto = s.fSpread2DHisto;
fGlobalChargeScale = s.fGlobalChargeScale;
fSpreadFun = s.fSpreadFun;
fROTimeFun = s.fROTimeFun;
return *this;
}
void AliITSUSimulationPix::Init()
{
if (fSimuParam->GetPixLorentzDrift()) SetTanLorAngle(fSimuParam->GetPixLorentzHoleWeight());
}
Bool_t AliITSUSimulationPix::SetTanLorAngle(Double_t weightHole)
{
if (weightHole<0) {
weightHole=0.;
AliWarning("You have asked for negative Hole weight");
AliWarning("I'm going to use only electrons");
}
if (weightHole>1) {
weightHole=1.;
AliWarning("You have asked for weight > 1");
AliWarning("I'm going to use only holes");
}
Double_t weightEle=1.-weightHole;
AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
if (!fld) AliFatal("The field is not initialized");
Double_t bz = fld->SolenoidField();
fTanLorAng = Tan(weightHole*fSimuParam->LorentzAngleHole(bz) +
weightEle*fSimuParam->LorentzAngleElectron(bz));
return kTRUE;
}
void AliITSUSimulationPix::SDigitiseChip()
{
AliDebug(10,Form("In event %d chip %d there are %d hits", fEvent, fChip->GetIndex(),fChip->GetNHits()));
if (fChip->GetNHits()) {
if(fResponseParam->GetParameter(kDigitalSim) == 0 ) Hits2SDigitsFast();
else Hits2SDigitsFastDigital();
}
if (!fSensMap->GetEntries()) return;
WriteSDigits();
ClearMap();
}
void AliITSUSimulationPix::WriteSDigits()
{
static AliITSU *aliITS = (AliITSU*)gAlice->GetModule("ITS");
int nsd = fSensMap->GetEntries();
for (int i=0;i<nsd;i++) {
AliITSUSDigit* sd = (AliITSUSDigit*)fSensMap->At(i);
if (!sd->GetSumSignal()>0 || fSensMap->IsDisabled(sd)) continue;
aliITS->AddSumDigit(*sd);
}
return;
}
void AliITSUSimulationPix::FinishSDigitiseChip()
{
FrompListToDigits();
ClearMap();
return;
}
void AliITSUSimulationPix::DigitiseChip()
{
if(fResponseParam->GetParameter(kDigitalSim) == 0 ) Hits2SDigitsFast();
else Hits2SDigitsFastDigital();
FinishSDigitiseChip();
}
void AliITSUSimulationPix::Hits2SDigits()
{
Int_t nhits = fChip->GetNHits();
if (!nhits) return;
Int_t h,ix,iz,i;
Int_t idtrack;
Float_t x,y,z;
Double_t tof,x0=0.0,x1=0.0,y0=0.0,y1=0.0,z0=0.0,z1=0.0,de=0.0;
Double_t t,tp,st,dt=0.2,el;
Double_t thick = 0.5*fSeg->Dy();
for (h=0;h<nhits;h++) {
if (!fChip->LineSegmentL(h,x0,x1,y0,y1,z0,z1,de,tof,idtrack)) continue;
st = Sqrt(x1*x1+y1*y1+z1*z1);
if (st>0.0) {
st = (Double_t)((Int_t)(st*1e4));
if (st<=1.0) st = 1.0;
dt = 1.0/st;
double dy = dt*thick;
y = -0.5*dy;
for (t=0.0;t<1.0;t+=dt) {
tp = t+0.5*dt;
x = x0+x1*tp;
y += dy;
z = z0+z1*tp;
if (!(fSeg->LocalToDet(x,z,ix,iz))) continue;
el = fGlobalChargeScale * dt * de / fSimuParam->GetGeVToCharge();
if (fSimuParam->GetPixLorentzDrift()) x += y*fTanLorAng;
SpreadCharge2D(x,z,y,ix,iz,el,tof,idtrack,h);
}
} else {
x = x0;
y = y0 + 0.5*thick;
z = z0;
if (!(fSeg->LocalToDet(x,z,ix,iz))) continue;
el = fGlobalChargeScale * de / fSimuParam->GetGeVToCharge();
if (fSimuParam->GetPixLorentzDrift()) x += y*fTanLorAng;
SpreadCharge2D(x,z,y,ix,iz,el,tof,idtrack,h);
}
}
int nd = fSensMap->GetEntriesUnsorted();
AliITSUSDigit* dg = 0;
switch (fSimuParam->GetPixCouplingOption()) {
case AliITSUSimuParam::kNoCouplingPix :
break;
case AliITSUSimuParam::kNewCouplingPix :
for (i=nd;i--;) {
dg = (AliITSUSDigit*)fSensMap->AtUnsorted(i);
if (fSensMap->IsDisabled(dg)) continue;
SetCoupling(dg);
}
break;
case AliITSUSimuParam::kOldCouplingPix:
for (i=nd;i--;) {
dg = (AliITSUSDigit*)fSensMap->AtUnsorted(i);
if (fSensMap->IsDisabled(dg)) continue;
SetCouplingOld(dg);
}
break;
default:
break;
}
if (GetDebug(2)) AliInfo(Form("Finished fCoupling=%d",fSimuParam->GetPixCouplingOption()));
}
void AliITSUSimulationPix::Hits2SDigitsFast()
{
TObjArray *hits = fChip->GetHits();
Int_t nhits = hits->GetEntriesFast();
if (nhits<=0) return;
Int_t h,ix,iz,i;
Int_t idtrack;
Float_t x,y,z;
Double_t tof,x0=0.0,x1=0.0,y0=0.0,y1=0.0,z0=0.0,z1=0.0;
Double_t step,st,el,de=0.0;
Double_t minDim = Min(fSeg->Dpx(1),fSeg->Dpz(1));
Double_t thick = fSeg->Dy();
for (h=0;h<nhits;h++) {
if (!fChip->LineSegmentL(h,x0,x1,y0,y1,z0,z1,de,tof,idtrack)) continue;
st = Sqrt(x1*x1+y1*y1+z1*z1);
if (st>0.0) {
int np = int(1.5*st/minDim);
np = TMath::Max(1.0*np,fResponseParam->GetParameter(kSpreadFunMinSteps));
AliDebug(10,Form(" Number of charge injection steps is set to %d ",np));
double dstep = 1./np;
double dy = dstep*thick;
y = -0.5*dy;
step = -0.5*dstep;
for (i=0;i<np;i++) {
step += dstep;
x = x0+x1*step;
y += dy;
z = z0+z1*step;
if (!(fSeg->LocalToDet(x,z,ix,iz))) continue;
el = fGlobalChargeScale * dstep * de/fSimuParam->GetGeVToCharge();
if (fSimuParam->GetPixLorentzDrift()) x += y*fTanLorAng;
SpreadCharge2D(x,z,y,ix,iz,el,tof,idtrack,h);
}
}
else {
x = x0;
y = y0+0.5*thick;
z = z0;
if (!(fSeg->LocalToDet(x,z,ix,iz))) continue;
el = fGlobalChargeScale * de / fSimuParam->GetGeVToCharge();
if (fSimuParam->GetPixLorentzDrift()) x += y*fTanLorAng;
SpreadCharge2D(x,z,y,ix,iz,el,tof,idtrack,h);
}
}
int nd = fSensMap->GetEntriesUnsorted();
AliITSUSDigit* dg = 0;
switch (fSimuParam->GetPixCouplingOption()) {
case AliITSUSimuParam::kNoCouplingPix :
break;
case AliITSUSimuParam::kNewCouplingPix :
for (i=nd;i--;) {
dg = (AliITSUSDigit*)fSensMap->AtUnsorted(i);
if (fSensMap->IsDisabled(dg)) continue;
SetCoupling(dg);
}
case AliITSUSimuParam::kOldCouplingPix:
for (i=nd;i--;) {
dg = (AliITSUSDigit*)fSensMap->AtUnsorted(i);
if (fSensMap->IsDisabled(dg)) continue;
SetCouplingOld(dg);
}
break;
default:
break;
}
if (GetDebug(2)) AliInfo(Form("Finished fCoupling=%d",fSimuParam->GetPixCouplingOption()));
}
void AliITSUSimulationPix::SpreadCharge2D(Double_t x0,Double_t z0, Double_t dy, Int_t ix0,Int_t iz0,
Double_t el, Double_t tof, Int_t tID, Int_t hID)
{
Int_t ix,iz,ixs,ixe,izs,ize;
Float_t x,z;
Float_t xdioshift = 0 , zdioshift = 0 ;
Double_t s,dtIn[kNDtSpread];
if (GetDebug(2)) AliInfo(Form("(x0=%e,z0=%e,dy=%e, ix0=%d,iz0=%d,el=%e,tID=%d,hID=%d)",x0,z0,dy,ix0,iz0,el,tID,hID));
Double_t &x1 = dtIn[kCellX1];
Double_t &x2 = dtIn[kCellX2];
Double_t &z1 = dtIn[kCellZ1];
Double_t &z2 = dtIn[kCellZ2];
int nx = GetResponseParam()->GetParameter(kSpreadFunParamNXoffs);
int nz = GetResponseParam()->GetParameter(kSpreadFunParamNZoffs);
dtIn[kCellYDepth] = dy;
ixs = Max(-nx+ix0,0);
ixe = Min( nx+ix0,fSeg->Npx()-1);
izs = Max(-nz+iz0,0);
ize = Min( nz+iz0,fSeg->Npz()-1);
for (ix=ixs;ix<=ixe;ix++)
for (iz=izs;iz<=ize;iz++) {
int cycleRO = (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fROTimeFun)(ix,iz,tof);
if (Abs(cycleRO)>kMaxROCycleAccept) continue;
fSeg->DetToLocal(ix,iz,x,z);
xdioshift = zdioshift = 0;
double dxi = fSeg->Dpx(ix);
double dzi = fSeg->Dpz(iz);
CalcDiodeShiftInPixel(ix,iz,xdioshift,zdioshift);
xdioshift *= dxi;
zdioshift *= dzi;
dxi *= 0.5;
dzi *= 0.5;
x1 = (x + xdioshift) - x0;
z1 = (z + zdioshift) - z0;
x2 = x1 + dxi;
x1 -= dxi;
z2 = z1 + dzi;
z1 -= dzi;
s = el* (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fSpreadFun)(dtIn);
if (s>fSimuParam->GetPixMinElToAdd()) UpdateMapSignal(iz,ix,tID,hID,s,cycleRO);
}
}
Double_t AliITSUSimulationPix::SpreadFunDoubleGauss2D(const Double_t *dtIn)
{
double intg1 = GausInt2D(fResponseParam->GetParameter(kG2SigX0),
dtIn[kCellX1]-fResponseParam->GetParameter(kG2MeanX0),
dtIn[kCellX2]-fResponseParam->GetParameter(kG2MeanX0),
fResponseParam->GetParameter(kG2SigZ0),
dtIn[kCellZ1]-fResponseParam->GetParameter(kG2MeanZ0),
dtIn[kCellZ2]-fResponseParam->GetParameter(kG2MeanZ0));
double intg2 = GausInt2D(fResponseParam->GetParameter(kG2SigX1),
dtIn[kCellX1]-fResponseParam->GetParameter(kG2MeanX1),
dtIn[kCellX2]-fResponseParam->GetParameter(kG2MeanX1),
fResponseParam->GetParameter(kG2SigZ1),
dtIn[kCellZ1]-fResponseParam->GetParameter(kG2MeanZ1),
dtIn[kCellZ2]-fResponseParam->GetParameter(kG2MeanZ1));
double scl = fResponseParam->GetParameter(kG2ScaleG2);
return (intg1+intg2*scl)/(1+scl);
}
Double_t AliITSUSimulationPix::SpreadFrom2DHisto(const Double_t *dtIn)
{
Double_t qpixfrac = 0;
Double_t xintp = 1e4*(dtIn[kCellX1]+dtIn[kCellX2])/2.0;
Double_t zintp = 1e4*(dtIn[kCellZ1]+dtIn[kCellZ2])/2.0;
qpixfrac = fSpread2DHisto->Interpolate(xintp,zintp);
return qpixfrac;
}
Double_t AliITSUSimulationPix::SpreadFunGauss2D(const Double_t *dtIn)
{
return GausInt2D(fResponseParam->GetParameter(kG1SigX),
dtIn[kCellX1]-fResponseParam->GetParameter(kG1MeanX),
dtIn[kCellX2]-fResponseParam->GetParameter(kG1MeanX),
fResponseParam->GetParameter(kG1SigZ),
dtIn[kCellZ1]-fResponseParam->GetParameter(kG1MeanZ),
dtIn[kCellZ2]-fResponseParam->GetParameter(kG1MeanZ));
}
void AliITSUSimulationPix::RemoveDeadPixels()
{
AliITSUCalibrationPix* calObj = (AliITSUCalibrationPix*) GetCalibDead();
if (!calObj) return;
if (calObj->IsBad()) {ClearMap(); return;}
Char_t cyclesSeen[2*kMaxROCycleAccept+1];
int ncycles = 0;
for (int i=(2*kMaxROCycleAccept+1);i--;) if (fCyclesID[i]) cyclesSeen[ncycles++]=i-kMaxROCycleAccept;
int nsingle = calObj->GetNrBadSingle();
UInt_t col,row;
Int_t cycle;
for (int i=nsingle;i--;) {
calObj->GetBadPixelSingle(i,row,col);
for (int icl=ncycles;icl--;) fSensMap->DeleteItem(col,row,cyclesSeen[icl]);
}
int nsd = fSensMap->GetEntriesUnsorted();
for (int isd=nsd;isd--;) {
AliITSUSDigit* sd = (AliITSUSDigit*)fSensMap->AtUnsorted(isd);
if (fSensMap->IsDisabled(sd)) continue;
fSensMap->GetMapIndex(sd->GetUniqueID(),col,row,cycle);
int chip = fSeg->GetChipFromChannel(0,col);
if (calObj->IsChipMarkedBad(chip)) fSensMap->DeleteItem(sd);
}
}
void AliITSUSimulationPix::AddNoisyPixels()
{
AliITSUCalibrationPix* calObj = (AliITSUCalibrationPix*) GetCalibNoisy();
if (!calObj) { AliDebug(10,Form(" No Calib Object for Noise!!! ")); return;}
for (Int_t i=calObj->GetNrBad(); i--;)
{
if ( fResponseParam->GetParameter(kDigitalSim) < 1.0 )
UpdateMapNoise(calObj->GetBadColAt(i), calObj->GetBadRowAt(i),10*fSimuParam->GetPixThreshold(fChip->GetIndex()));
else
UpdateMapNoise(calObj->GetBadColAt(i), calObj->GetBadRowAt(i),kNoisyPixOCDB );
}
}
void AliITSUSimulationPix::FrompListToDigits()
{
int nsd = fSensMap->GetEntriesUnsorted();
Bool_t addNoisy = fSimuParam->GetPixAddNoisyFlag() && (nsd>0 || fSimuParam->GetPixNoiseInAllMod());
if (addNoisy) {
AddNoisyPixels();
AddRandomNoisePixels(0.0);
nsd = fSensMap->GetEntriesUnsorted();
}
if (nsd && fSimuParam->GetPixRemoveDeadFlag()) {
RemoveDeadPixels();
nsd = fSensMap->GetEntries();
}
if (!nsd) return;
UInt_t row,col;
Int_t iCycle,modId = fChip->GetIndex();
Double_t sig;
const Int_t knmaxtrk=AliITSdigit::GetNTracks();
static AliITSU *aliITS = (AliITSU*)gAlice->GetModule("ITS");
static AliITSUDigitPix dig;
for (int i=0;i<nsd;i++) {
AliITSUSDigit* sd = (AliITSUSDigit*)fSensMap->At(i);
if (fSensMap->IsDisabled(sd)) continue;
sig=sd->GetSumSignal();
if ( fResponseParam->GetParameter(kDigitalSim) < 1.0 &&
sig<=fSimuParam->GetPixThreshold(modId)) continue;
if (Abs(sig)>2147483647.0) {
AliWarning(Form("Too big or too small signal value %f",sig));
}
fSensMap->GetMapIndex(sd->GetUniqueID(),col,row,iCycle);
dig.SetCoord1(col);
dig.SetCoord2(row);
dig.SetROCycle(iCycle);
dig.SetSignal((Int_t)sig);
dig.SetSignalPix((Int_t)sig);
int ntr = sd->GetNTracks();
for (int j=0;j<ntr;j++) {
dig.SetTrack(j,sd->GetTrack(j));
dig.SetHit(j,sd->GetHit(j));
}
for (int j=ntr;j<knmaxtrk;j++) {
dig.SetTrack(j,-3);
dig.SetHit(j,-1);
}
aliITS->AddSimDigit(AliITSUGeomTGeo::kChipTypePix, &dig);
}
}
Int_t AliITSUSimulationPix::AddRandomNoisePixels(Double_t tof)
{
int modId = fChip->GetIndex();
int npix = fSeg->GetNPads();
int ncand = gRandom->Poisson( npix*fSimuParam->GetPixFakeRate() );
if (ncand<1) return 0;
double probNoisy,noiseSig,noiseMean,thresh;
UInt_t row,col;
Int_t iCycle;
static TArrayI ordSampleInd(100),ordSample(100);
ncand = GenOrderedSample(npix,ncand,ordSample,ordSampleInd);
int* ordV = ordSample.GetArray();
int* ordI = ordSampleInd.GetArray();
if ( fResponseParam->GetParameter(kDigitalSim) < 1.0 ) {
thresh = fSimuParam->GetPixThreshold(modId);
fSimuParam->GetPixNoise(modId, noiseSig, noiseMean);
probNoisy = AliITSUSimuParam::CalcProbNoiseOverThreshold(noiseMean,noiseSig,thresh);
for (int j=0;j<ncand;j++) {
fSensMap->GetMapIndex((UInt_t)ordV[ordI[j]],col,row,iCycle);
iCycle = (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fROTimeFun)(row,col,tof);
UpdateMapNoise(col,row,AliITSUSimuParam::GenerateNoiseQFunction(probNoisy,noiseMean,noiseSig), iCycle);
}
}
else {
for (int j=0;j<ncand;j++) {
fSensMap->GetMapIndex((UInt_t)ordV[ordI[j]],col,row,iCycle);
iCycle = (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fROTimeFun)(row,col,tof);
UpdateMapNoise(col,row,kNoisyPixRnd, iCycle);
}
}
return ncand;
}
void AliITSUSimulationPix::SetCoupling(AliITSUSDigit* old)
{
UInt_t col,row;
Int_t iCycle;
Double_t pulse1,pulse2;
Double_t couplR=0.0,couplC=0.0;
Double_t xr=0.;
fSensMap->GetMapIndex(old->GetUniqueID(),col,row,iCycle);
int cycle = iCycle;
fSimuParam->GetPixCouplingParam(couplC,couplR);
if (GetDebug(2)) AliInfo(Form("(col=%d,row=%d,couplC=%e couplR=%e",
col,row,couplC,couplR));
pulse2 = pulse1 = old->GetSignal();
if (pulse1<fSimuParam->GetPixMinElToAdd()) return;
for (Int_t isign=-1;isign<=1;isign+=2) {
int j1 = int(col) + isign;
xr = gRandom->Rndm();
if ( !((j1<0) || (j1>fSeg->Npz()-1) || (xr>couplC)) ) UpdateMapSignal(UInt_t(j1),row,old->GetTrack(0),old->GetHit(0),pulse1,cycle);
int j2 = int(row) + isign;
xr = gRandom->Rndm();
if ( !((j2<0) || (j2>fSeg->Npx()-1) || (xr>couplR)) ) UpdateMapSignal(col,UInt_t(j2),old->GetTrack(0),old->GetHit(0),pulse2,cycle);
}
}
void AliITSUSimulationPix::SetCouplingOld(AliITSUSDigit* old)
{
UInt_t col,row;
Int_t cycle;
Int_t modId = fChip->GetIndex();
Double_t pulse1,pulse2;
Double_t couplR=0.0,couplC=0.0;
fSensMap->GetMapIndex(old->GetUniqueID(),col,row,cycle);
fSimuParam->GetPixCouplingParam(couplC,couplR);
if (GetDebug(3)) AliInfo(Form("(col=%d,row=%d,roCycle=%d) couplC=%e couplR=%e",col,row,cycle,couplC,couplR));
if (old->GetSignal()<fSimuParam->GetPixMinElToAdd()) return;
for (Int_t isign=-1;isign<=1;isign+=2) {
pulse2 = pulse1 = old->GetSignal();
int j1 = int(col)+isign;
pulse1 *= couplC;
if ((j1<0)||(j1>fSeg->Npz()-1)||(pulse1<fSimuParam->GetPixThreshold(modId))) pulse1 = old->GetSignal();
else UpdateMapSignal(UInt_t(j1),row,old->GetTrack(0),old->GetHit(0),pulse1,cycle);
int j2 = int(row) + isign;
pulse2 *= couplR;
if ((j2<0)||(j2>(fSeg->Npx()-1))||(pulse2<fSimuParam->GetPixThreshold(modId))) pulse2 = old->GetSignal();
else UpdateMapSignal(col,UInt_t(j2),old->GetTrack(0),old->GetHit(0),pulse2,cycle);
}
}
void AliITSUSimulationPix::SetResponseParam(AliITSUParamList* resp)
{
fResponseParam = resp;
int spreadID = Nint(fResponseParam->GetParameter(AliITSUSimulationPix::kChargeSpreadType));
const char* hname = 0;
fSpread2DHisto = 0;
switch (spreadID) {
case kSpreadFunHisto:
fSpreadFun = &AliITSUSimulationPix::SpreadFrom2DHisto;
hname = fResponseParam->GetParName(AliITSUSimulationPix::kChargeSpreadType);
if (!(fSpread2DHisto=(TH2*)fResponseParam->GetParamObject(hname)))
AliFatal(Form("Did not find 2D histo %s for charge spread parameterization",hname));
break;
case kSpreadFunDoubleGauss2D:
fSpreadFun = &AliITSUSimulationPix::SpreadFunDoubleGauss2D;
break;
case kSpreadFunGauss2D:
fSpreadFun = &AliITSUSimulationPix::SpreadFunGauss2D;
break;
default: AliFatal(Form("Did not find requested spread function id=%d",spreadID));
}
int readoutType = Nint(fResponseParam->GetParameter(kReadOutSchemeType));
switch (readoutType) {
case kReadOutStrobe:
fROTimeFun = &AliITSUSimulationPix::GetReadOutCycle;
break;
case kReadOutRollingShutter:
fROTimeFun = &AliITSUSimulationPix::GetReadOutCycleRollingShutter;
break;
default: AliFatal(Form("Did not find requested readout time type id=%d",readoutType));
}
fReadOutCycleLength = fResponseParam->GetParameter(kReadOutCycleLength);
fSimuParam->SetPixThreshold(fResponseParam->GetParameter(kPixNoiseMPV) *fResponseParam->GetParameter(kPixSNDisrcCut) , fResponseParam->GetParameter(kPixSNDisrcCut),-1);
fSimuParam->SetPixMinElToAdd(fResponseParam->GetParameter(kPixMinElToAdd));
fSimuParam->SetPixNoise( fResponseParam->GetParameter(kPixNoiseMPV), fResponseParam->GetParameter(kPixNoiseSigma), -1);
fSimuParam->SetPixFakeRate( fResponseParam->GetParameter(kPixFakeRate) );
if ( fResponseParam->GetParameter(kPixNoiseIsOn) > 0.01) fSimuParam->SetPixAddNoisyFlag(kTRUE);
else fSimuParam->SetPixAddNoisyFlag(kFALSE);
if(fResponseParam->GetParameter(kPixNoiseInAllMod) > 0.01 ) fSimuParam->SetPixNoiseInAllMod(kTRUE);
else fSimuParam->SetPixNoiseInAllMod(kFALSE);
fGlobalChargeScale = fResponseParam->GetParameter(kSpreadFunGlobalQScale);
AliDebug(10,Form("=============== Setting the response start ============================"));
AliDebug(10,Form("=============== Digital (1) / Analogue (0) simu: %f",fResponseParam->GetParameter(kDigitalSim)));
AliDebug(10,Form("=============== RO type: %d",readoutType));
AliDebug(10,Form("=============== RO cycle lenght: %lf",fReadOutCycleLength));
AliDebug(10,Form("=============== Noise MPV: %lf",fResponseParam->GetParameter(kPixNoiseMPV)));
AliDebug(10,Form("=============== Noise Sigma: %lf",fResponseParam->GetParameter(kPixNoiseSigma)));
AliDebug(10,Form("=============== Fake rate: %lf",fResponseParam->GetParameter(kPixFakeRate)));
AliDebug(10,Form("=============== Noise On/Off: %d",fSimuParam->GetPixAddNoisyFlag()));
AliDebug(10,Form("=============== Noise in all mod on/off: %d",fSimuParam->GetPixNoiseInAllMod()));
AliDebug(10,Form("=============== Global Charge scale: %lf",fGlobalChargeScale));
AliDebug(10,Form("=============== Setting the response done ============================"));
}
Int_t AliITSUSimulationPix::GetReadOutCycleRollingShutter(Int_t row, Int_t col, Double_t hitTime)
{
double tmin = fReadOutCycleOffset + fReadOutCycleLength*(double(row)/fSeg->Npx()-1.);
int cycle = Nint( (hitTime-tmin)/fReadOutCycleLength - 0.5 );
AliDebug(3,Form("Rolling shutter at row%d/col%d: particle time: %e, tmin: %e : tmax %e -> cycle:%d",row,col,hitTime,tmin,
tmin+fReadOutCycleLength,cycle));
return cycle;
}
Int_t AliITSUSimulationPix::GetReadOutCycle(Int_t row, Int_t col, Double_t hitTime)
{
AliDebug(3,Form("Strobe readout: row%d/col%d: particle time: %e, tmin: %e, tmax %e",
row,col,hitTime,fReadOutCycleOffset,fReadOutCycleOffset+fReadOutCycleLength));
hitTime -= fReadOutCycleOffset+0.5*fReadOutCycleLength;
return (hitTime<0 || hitTime>fReadOutCycleLength) ? kMaxROCycleAccept+1 : 0;
}
void AliITSUSimulationPix::CalcDiodeShiftInPixel(Int_t xrow, Int_t zcol, Float_t &x, Float_t &z)
{
((AliITSUSegmentationPix*)fSeg)->GetDiodShift(xrow,zcol,x,z);
}
void AliITSUSimulationPix::Hits2SDigitsFastDigital()
{
TObjArray *hits = fChip->GetHits();
Int_t nhits = hits->GetEntriesFast();
if (nhits<=0) return;
Int_t h,ix,iz;
Int_t idtrack;
Double_t tof,x0=0.0,x1=0.0,y0=0.0,y1=0.0,z0=0.0,z1=0.0;
Double_t el,de=0.0;
for (h=0;h<nhits;h++) {
if (!fChip->LineSegmentL(h,x0,x1,y0,y1,z0,z1,de,tof,idtrack)) continue;
float x = (x0+x1)/2.0;
float z = (z0+z1)/2.0;
if (!(fSeg->LocalToDet(x,z,ix,iz))) continue;
int cycleRO = (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fROTimeFun)(ix,iz,tof);
if (Abs(cycleRO)>kMaxROCycleAccept) continue;
el = de / fSimuParam->GetGeVToCharge();
PlaceDigitalPixels(x,z,el,tof,idtrack,h);
}
}
void AliITSUSimulationPix::PlaceDigitalPixels(Double_t x0hit,Double_t z0hit, Double_t el, Double_t tof, Int_t tID, Int_t hID)
{
Int_t ix,iz,nx,nz;
Float_t x,z;
Float_t distX = 0, distZ = 0;
TRandom3 rnd;
distX = rnd.Uniform(-5.0*1e-4, 5.0*1e-4);
distZ = rnd.Uniform(-5.0*1e-4, 5.0*1e-4);
x = x0hit + distX;
z = z0hit + distZ;
if(!fSeg->LocalToDet(x,z,ix,iz)) return;
const Int_t nCluPixels = 5;
Int_t aPixListX[nCluPixels] = { 0, -1, 0, 1, 0};
Int_t aPixListZ[nCluPixels] = { 1, 0, 0, 0, -1};
Double_t s = el / 1.0 / nCluPixels;
int cycleRO;
for (Int_t ipix = 0 ; ipix < nCluPixels; ipix++)
{
nx = ix + aPixListX[ipix];
nz = iz + aPixListZ[ipix];
cycleRO = (((AliITSUSimulationPix*)this)->*AliITSUSimulationPix::fROTimeFun)(ix,iz,tof);
if ( nx >= 0 && nx <= fSeg -> Npx() && nz >= 0 && nz <= fSeg -> Npz() ) UpdateMapSignal(nz,nx,tID,hID,s,cycleRO);
}
}
AliITSUSimulationPix.cxx:1 AliITSUSimulationPix.cxx:2 AliITSUSimulationPix.cxx:3 AliITSUSimulationPix.cxx:4 AliITSUSimulationPix.cxx:5 AliITSUSimulationPix.cxx:6 AliITSUSimulationPix.cxx:7 AliITSUSimulationPix.cxx:8 AliITSUSimulationPix.cxx:9 AliITSUSimulationPix.cxx:10 AliITSUSimulationPix.cxx:11 AliITSUSimulationPix.cxx:12 AliITSUSimulationPix.cxx:13 AliITSUSimulationPix.cxx:14 AliITSUSimulationPix.cxx:15 AliITSUSimulationPix.cxx:16 AliITSUSimulationPix.cxx:17 AliITSUSimulationPix.cxx:18 AliITSUSimulationPix.cxx:19 AliITSUSimulationPix.cxx:20 AliITSUSimulationPix.cxx:21 AliITSUSimulationPix.cxx:22 AliITSUSimulationPix.cxx:23 AliITSUSimulationPix.cxx:24 AliITSUSimulationPix.cxx:25 AliITSUSimulationPix.cxx:26 AliITSUSimulationPix.cxx:27 AliITSUSimulationPix.cxx:28 AliITSUSimulationPix.cxx:29 AliITSUSimulationPix.cxx:30 AliITSUSimulationPix.cxx:31 AliITSUSimulationPix.cxx:32 AliITSUSimulationPix.cxx:33 AliITSUSimulationPix.cxx:34 AliITSUSimulationPix.cxx:35 AliITSUSimulationPix.cxx:36 AliITSUSimulationPix.cxx:37 AliITSUSimulationPix.cxx:38 AliITSUSimulationPix.cxx:39 AliITSUSimulationPix.cxx:40 AliITSUSimulationPix.cxx:41 AliITSUSimulationPix.cxx:42 AliITSUSimulationPix.cxx:43 AliITSUSimulationPix.cxx:44 AliITSUSimulationPix.cxx:45 AliITSUSimulationPix.cxx:46 AliITSUSimulationPix.cxx:47 AliITSUSimulationPix.cxx:48 AliITSUSimulationPix.cxx:49 AliITSUSimulationPix.cxx:50 AliITSUSimulationPix.cxx:51 AliITSUSimulationPix.cxx:52 AliITSUSimulationPix.cxx:53 AliITSUSimulationPix.cxx:54 AliITSUSimulationPix.cxx:55 AliITSUSimulationPix.cxx:56 AliITSUSimulationPix.cxx:57 AliITSUSimulationPix.cxx:58 AliITSUSimulationPix.cxx:59 AliITSUSimulationPix.cxx:60 AliITSUSimulationPix.cxx:61 AliITSUSimulationPix.cxx:62 AliITSUSimulationPix.cxx:63 AliITSUSimulationPix.cxx:64 AliITSUSimulationPix.cxx:65 AliITSUSimulationPix.cxx:66 AliITSUSimulationPix.cxx:67 AliITSUSimulationPix.cxx:68 AliITSUSimulationPix.cxx:69 AliITSUSimulationPix.cxx:70 AliITSUSimulationPix.cxx:71 AliITSUSimulationPix.cxx:72 AliITSUSimulationPix.cxx:73 AliITSUSimulationPix.cxx:74 AliITSUSimulationPix.cxx:75 AliITSUSimulationPix.cxx:76 AliITSUSimulationPix.cxx:77 AliITSUSimulationPix.cxx:78 AliITSUSimulationPix.cxx:79 AliITSUSimulationPix.cxx:80 AliITSUSimulationPix.cxx:81 AliITSUSimulationPix.cxx:82 AliITSUSimulationPix.cxx:83 AliITSUSimulationPix.cxx:84 AliITSUSimulationPix.cxx:85 AliITSUSimulationPix.cxx:86 AliITSUSimulationPix.cxx:87 AliITSUSimulationPix.cxx:88 AliITSUSimulationPix.cxx:89 AliITSUSimulationPix.cxx:90 AliITSUSimulationPix.cxx:91 AliITSUSimulationPix.cxx:92 AliITSUSimulationPix.cxx:93 AliITSUSimulationPix.cxx:94 AliITSUSimulationPix.cxx:95 AliITSUSimulationPix.cxx:96 AliITSUSimulationPix.cxx:97 AliITSUSimulationPix.cxx:98 AliITSUSimulationPix.cxx:99 AliITSUSimulationPix.cxx:100 AliITSUSimulationPix.cxx:101 AliITSUSimulationPix.cxx:102 AliITSUSimulationPix.cxx:103 AliITSUSimulationPix.cxx:104 AliITSUSimulationPix.cxx:105 AliITSUSimulationPix.cxx:106 AliITSUSimulationPix.cxx:107 AliITSUSimulationPix.cxx:108 AliITSUSimulationPix.cxx:109 AliITSUSimulationPix.cxx:110 AliITSUSimulationPix.cxx:111 AliITSUSimulationPix.cxx:112 AliITSUSimulationPix.cxx:113 AliITSUSimulationPix.cxx:114 AliITSUSimulationPix.cxx:115 AliITSUSimulationPix.cxx:116 AliITSUSimulationPix.cxx:117 AliITSUSimulationPix.cxx:118 AliITSUSimulationPix.cxx:119 AliITSUSimulationPix.cxx:120 AliITSUSimulationPix.cxx:121 AliITSUSimulationPix.cxx:122 AliITSUSimulationPix.cxx:123 AliITSUSimulationPix.cxx:124 AliITSUSimulationPix.cxx:125 AliITSUSimulationPix.cxx:126 AliITSUSimulationPix.cxx:127 AliITSUSimulationPix.cxx:128 AliITSUSimulationPix.cxx:129 AliITSUSimulationPix.cxx:130 AliITSUSimulationPix.cxx:131 AliITSUSimulationPix.cxx:132 AliITSUSimulationPix.cxx:133 AliITSUSimulationPix.cxx:134 AliITSUSimulationPix.cxx:135 AliITSUSimulationPix.cxx:136 AliITSUSimulationPix.cxx:137 AliITSUSimulationPix.cxx:138 AliITSUSimulationPix.cxx:139 AliITSUSimulationPix.cxx:140 AliITSUSimulationPix.cxx:141 AliITSUSimulationPix.cxx:142 AliITSUSimulationPix.cxx:143 AliITSUSimulationPix.cxx:144 AliITSUSimulationPix.cxx:145 AliITSUSimulationPix.cxx:146 AliITSUSimulationPix.cxx:147 AliITSUSimulationPix.cxx:148 AliITSUSimulationPix.cxx:149 AliITSUSimulationPix.cxx:150 AliITSUSimulationPix.cxx:151 AliITSUSimulationPix.cxx:152 AliITSUSimulationPix.cxx:153 AliITSUSimulationPix.cxx:154 AliITSUSimulationPix.cxx:155 AliITSUSimulationPix.cxx:156 AliITSUSimulationPix.cxx:157 AliITSUSimulationPix.cxx:158 AliITSUSimulationPix.cxx:159 AliITSUSimulationPix.cxx:160 AliITSUSimulationPix.cxx:161 AliITSUSimulationPix.cxx:162 AliITSUSimulationPix.cxx:163 AliITSUSimulationPix.cxx:164 AliITSUSimulationPix.cxx:165 AliITSUSimulationPix.cxx:166 AliITSUSimulationPix.cxx:167 AliITSUSimulationPix.cxx:168 AliITSUSimulationPix.cxx:169 AliITSUSimulationPix.cxx:170 AliITSUSimulationPix.cxx:171 AliITSUSimulationPix.cxx:172 AliITSUSimulationPix.cxx:173 AliITSUSimulationPix.cxx:174 AliITSUSimulationPix.cxx:175 AliITSUSimulationPix.cxx:176 AliITSUSimulationPix.cxx:177 AliITSUSimulationPix.cxx:178 AliITSUSimulationPix.cxx:179 AliITSUSimulationPix.cxx:180 AliITSUSimulationPix.cxx:181 AliITSUSimulationPix.cxx:182 AliITSUSimulationPix.cxx:183 AliITSUSimulationPix.cxx:184 AliITSUSimulationPix.cxx:185 AliITSUSimulationPix.cxx:186 AliITSUSimulationPix.cxx:187 AliITSUSimulationPix.cxx:188 AliITSUSimulationPix.cxx:189 AliITSUSimulationPix.cxx:190 AliITSUSimulationPix.cxx:191 AliITSUSimulationPix.cxx:192 AliITSUSimulationPix.cxx:193 AliITSUSimulationPix.cxx:194 AliITSUSimulationPix.cxx:195 AliITSUSimulationPix.cxx:196 AliITSUSimulationPix.cxx:197 AliITSUSimulationPix.cxx:198 AliITSUSimulationPix.cxx:199 AliITSUSimulationPix.cxx:200 AliITSUSimulationPix.cxx:201 AliITSUSimulationPix.cxx:202 AliITSUSimulationPix.cxx:203 AliITSUSimulationPix.cxx:204 AliITSUSimulationPix.cxx:205 AliITSUSimulationPix.cxx:206 AliITSUSimulationPix.cxx:207 AliITSUSimulationPix.cxx:208 AliITSUSimulationPix.cxx:209 AliITSUSimulationPix.cxx:210 AliITSUSimulationPix.cxx:211 AliITSUSimulationPix.cxx:212 AliITSUSimulationPix.cxx:213 AliITSUSimulationPix.cxx:214 AliITSUSimulationPix.cxx:215 AliITSUSimulationPix.cxx:216 AliITSUSimulationPix.cxx:217 AliITSUSimulationPix.cxx:218 AliITSUSimulationPix.cxx:219 AliITSUSimulationPix.cxx:220 AliITSUSimulationPix.cxx:221 AliITSUSimulationPix.cxx:222 AliITSUSimulationPix.cxx:223 AliITSUSimulationPix.cxx:224 AliITSUSimulationPix.cxx:225 AliITSUSimulationPix.cxx:226 AliITSUSimulationPix.cxx:227 AliITSUSimulationPix.cxx:228 AliITSUSimulationPix.cxx:229 AliITSUSimulationPix.cxx:230 AliITSUSimulationPix.cxx:231 AliITSUSimulationPix.cxx:232 AliITSUSimulationPix.cxx:233 AliITSUSimulationPix.cxx:234 AliITSUSimulationPix.cxx:235 AliITSUSimulationPix.cxx:236 AliITSUSimulationPix.cxx:237 AliITSUSimulationPix.cxx:238 AliITSUSimulationPix.cxx:239 AliITSUSimulationPix.cxx:240 AliITSUSimulationPix.cxx:241 AliITSUSimulationPix.cxx:242 AliITSUSimulationPix.cxx:243 AliITSUSimulationPix.cxx:244 AliITSUSimulationPix.cxx:245 AliITSUSimulationPix.cxx:246 AliITSUSimulationPix.cxx:247 AliITSUSimulationPix.cxx:248 AliITSUSimulationPix.cxx:249 AliITSUSimulationPix.cxx:250 AliITSUSimulationPix.cxx:251 AliITSUSimulationPix.cxx:252 AliITSUSimulationPix.cxx:253 AliITSUSimulationPix.cxx:254 AliITSUSimulationPix.cxx:255 AliITSUSimulationPix.cxx:256 AliITSUSimulationPix.cxx:257 AliITSUSimulationPix.cxx:258 AliITSUSimulationPix.cxx:259 AliITSUSimulationPix.cxx:260 AliITSUSimulationPix.cxx:261 AliITSUSimulationPix.cxx:262 AliITSUSimulationPix.cxx:263 AliITSUSimulationPix.cxx:264 AliITSUSimulationPix.cxx:265 AliITSUSimulationPix.cxx:266 AliITSUSimulationPix.cxx:267 AliITSUSimulationPix.cxx:268 AliITSUSimulationPix.cxx:269 AliITSUSimulationPix.cxx:270 AliITSUSimulationPix.cxx:271 AliITSUSimulationPix.cxx:272 AliITSUSimulationPix.cxx:273 AliITSUSimulationPix.cxx:274 AliITSUSimulationPix.cxx:275 AliITSUSimulationPix.cxx:276 AliITSUSimulationPix.cxx:277 AliITSUSimulationPix.cxx:278 AliITSUSimulationPix.cxx:279 AliITSUSimulationPix.cxx:280 AliITSUSimulationPix.cxx:281 AliITSUSimulationPix.cxx:282 AliITSUSimulationPix.cxx:283 AliITSUSimulationPix.cxx:284 AliITSUSimulationPix.cxx:285 AliITSUSimulationPix.cxx:286 AliITSUSimulationPix.cxx:287 AliITSUSimulationPix.cxx:288 AliITSUSimulationPix.cxx:289 AliITSUSimulationPix.cxx:290 AliITSUSimulationPix.cxx:291 AliITSUSimulationPix.cxx:292 AliITSUSimulationPix.cxx:293 AliITSUSimulationPix.cxx:294 AliITSUSimulationPix.cxx:295 AliITSUSimulationPix.cxx:296 AliITSUSimulationPix.cxx:297 AliITSUSimulationPix.cxx:298 AliITSUSimulationPix.cxx:299 AliITSUSimulationPix.cxx:300 AliITSUSimulationPix.cxx:301 AliITSUSimulationPix.cxx:302 AliITSUSimulationPix.cxx:303 AliITSUSimulationPix.cxx:304 AliITSUSimulationPix.cxx:305 AliITSUSimulationPix.cxx:306 AliITSUSimulationPix.cxx:307 AliITSUSimulationPix.cxx:308 AliITSUSimulationPix.cxx:309 AliITSUSimulationPix.cxx:310 AliITSUSimulationPix.cxx:311 AliITSUSimulationPix.cxx:312 AliITSUSimulationPix.cxx:313 AliITSUSimulationPix.cxx:314 AliITSUSimulationPix.cxx:315 AliITSUSimulationPix.cxx:316 AliITSUSimulationPix.cxx:317 AliITSUSimulationPix.cxx:318 AliITSUSimulationPix.cxx:319 AliITSUSimulationPix.cxx:320 AliITSUSimulationPix.cxx:321 AliITSUSimulationPix.cxx:322 AliITSUSimulationPix.cxx:323 AliITSUSimulationPix.cxx:324 AliITSUSimulationPix.cxx:325 AliITSUSimulationPix.cxx:326 AliITSUSimulationPix.cxx:327 AliITSUSimulationPix.cxx:328 AliITSUSimulationPix.cxx:329 AliITSUSimulationPix.cxx:330 AliITSUSimulationPix.cxx:331 AliITSUSimulationPix.cxx:332 AliITSUSimulationPix.cxx:333 AliITSUSimulationPix.cxx:334 AliITSUSimulationPix.cxx:335 AliITSUSimulationPix.cxx:336 AliITSUSimulationPix.cxx:337 AliITSUSimulationPix.cxx:338 AliITSUSimulationPix.cxx:339 AliITSUSimulationPix.cxx:340 AliITSUSimulationPix.cxx:341 AliITSUSimulationPix.cxx:342 AliITSUSimulationPix.cxx:343 AliITSUSimulationPix.cxx:344 AliITSUSimulationPix.cxx:345 AliITSUSimulationPix.cxx:346 AliITSUSimulationPix.cxx:347 AliITSUSimulationPix.cxx:348 AliITSUSimulationPix.cxx:349 AliITSUSimulationPix.cxx:350 AliITSUSimulationPix.cxx:351 AliITSUSimulationPix.cxx:352 AliITSUSimulationPix.cxx:353 AliITSUSimulationPix.cxx:354 AliITSUSimulationPix.cxx:355 AliITSUSimulationPix.cxx:356 AliITSUSimulationPix.cxx:357 AliITSUSimulationPix.cxx:358 AliITSUSimulationPix.cxx:359 AliITSUSimulationPix.cxx:360 AliITSUSimulationPix.cxx:361 AliITSUSimulationPix.cxx:362 AliITSUSimulationPix.cxx:363 AliITSUSimulationPix.cxx:364 AliITSUSimulationPix.cxx:365 AliITSUSimulationPix.cxx:366 AliITSUSimulationPix.cxx:367 AliITSUSimulationPix.cxx:368 AliITSUSimulationPix.cxx:369 AliITSUSimulationPix.cxx:370 AliITSUSimulationPix.cxx:371 AliITSUSimulationPix.cxx:372 AliITSUSimulationPix.cxx:373 AliITSUSimulationPix.cxx:374 AliITSUSimulationPix.cxx:375 AliITSUSimulationPix.cxx:376 AliITSUSimulationPix.cxx:377 AliITSUSimulationPix.cxx:378 AliITSUSimulationPix.cxx:379 AliITSUSimulationPix.cxx:380 AliITSUSimulationPix.cxx:381 AliITSUSimulationPix.cxx:382 AliITSUSimulationPix.cxx:383 AliITSUSimulationPix.cxx:384 AliITSUSimulationPix.cxx:385 AliITSUSimulationPix.cxx:386 AliITSUSimulationPix.cxx:387 AliITSUSimulationPix.cxx:388 AliITSUSimulationPix.cxx:389 AliITSUSimulationPix.cxx:390 AliITSUSimulationPix.cxx:391 AliITSUSimulationPix.cxx:392 AliITSUSimulationPix.cxx:393 AliITSUSimulationPix.cxx:394 AliITSUSimulationPix.cxx:395 AliITSUSimulationPix.cxx:396 AliITSUSimulationPix.cxx:397 AliITSUSimulationPix.cxx:398 AliITSUSimulationPix.cxx:399 AliITSUSimulationPix.cxx:400 AliITSUSimulationPix.cxx:401 AliITSUSimulationPix.cxx:402 AliITSUSimulationPix.cxx:403 AliITSUSimulationPix.cxx:404 AliITSUSimulationPix.cxx:405 AliITSUSimulationPix.cxx:406 AliITSUSimulationPix.cxx:407 AliITSUSimulationPix.cxx:408 AliITSUSimulationPix.cxx:409 AliITSUSimulationPix.cxx:410 AliITSUSimulationPix.cxx:411 AliITSUSimulationPix.cxx:412 AliITSUSimulationPix.cxx:413 AliITSUSimulationPix.cxx:414 AliITSUSimulationPix.cxx:415 AliITSUSimulationPix.cxx:416 AliITSUSimulationPix.cxx:417 AliITSUSimulationPix.cxx:418 AliITSUSimulationPix.cxx:419 AliITSUSimulationPix.cxx:420 AliITSUSimulationPix.cxx:421 AliITSUSimulationPix.cxx:422 AliITSUSimulationPix.cxx:423 AliITSUSimulationPix.cxx:424 AliITSUSimulationPix.cxx:425 AliITSUSimulationPix.cxx:426 AliITSUSimulationPix.cxx:427 AliITSUSimulationPix.cxx:428 AliITSUSimulationPix.cxx:429 AliITSUSimulationPix.cxx:430 AliITSUSimulationPix.cxx:431 AliITSUSimulationPix.cxx:432 AliITSUSimulationPix.cxx:433 AliITSUSimulationPix.cxx:434 AliITSUSimulationPix.cxx:435 AliITSUSimulationPix.cxx:436 AliITSUSimulationPix.cxx:437 AliITSUSimulationPix.cxx:438 AliITSUSimulationPix.cxx:439 AliITSUSimulationPix.cxx:440 AliITSUSimulationPix.cxx:441 AliITSUSimulationPix.cxx:442 AliITSUSimulationPix.cxx:443 AliITSUSimulationPix.cxx:444 AliITSUSimulationPix.cxx:445 AliITSUSimulationPix.cxx:446 AliITSUSimulationPix.cxx:447 AliITSUSimulationPix.cxx:448 AliITSUSimulationPix.cxx:449 AliITSUSimulationPix.cxx:450 AliITSUSimulationPix.cxx:451 AliITSUSimulationPix.cxx:452 AliITSUSimulationPix.cxx:453 AliITSUSimulationPix.cxx:454 AliITSUSimulationPix.cxx:455 AliITSUSimulationPix.cxx:456 AliITSUSimulationPix.cxx:457 AliITSUSimulationPix.cxx:458 AliITSUSimulationPix.cxx:459 AliITSUSimulationPix.cxx:460 AliITSUSimulationPix.cxx:461 AliITSUSimulationPix.cxx:462 AliITSUSimulationPix.cxx:463 AliITSUSimulationPix.cxx:464 AliITSUSimulationPix.cxx:465 AliITSUSimulationPix.cxx:466 AliITSUSimulationPix.cxx:467 AliITSUSimulationPix.cxx:468 AliITSUSimulationPix.cxx:469 AliITSUSimulationPix.cxx:470 AliITSUSimulationPix.cxx:471 AliITSUSimulationPix.cxx:472 AliITSUSimulationPix.cxx:473 AliITSUSimulationPix.cxx:474 AliITSUSimulationPix.cxx:475 AliITSUSimulationPix.cxx:476 AliITSUSimulationPix.cxx:477 AliITSUSimulationPix.cxx:478 AliITSUSimulationPix.cxx:479 AliITSUSimulationPix.cxx:480 AliITSUSimulationPix.cxx:481 AliITSUSimulationPix.cxx:482 AliITSUSimulationPix.cxx:483 AliITSUSimulationPix.cxx:484 AliITSUSimulationPix.cxx:485 AliITSUSimulationPix.cxx:486 AliITSUSimulationPix.cxx:487 AliITSUSimulationPix.cxx:488 AliITSUSimulationPix.cxx:489 AliITSUSimulationPix.cxx:490 AliITSUSimulationPix.cxx:491 AliITSUSimulationPix.cxx:492 AliITSUSimulationPix.cxx:493 AliITSUSimulationPix.cxx:494 AliITSUSimulationPix.cxx:495 AliITSUSimulationPix.cxx:496 AliITSUSimulationPix.cxx:497 AliITSUSimulationPix.cxx:498 AliITSUSimulationPix.cxx:499 AliITSUSimulationPix.cxx:500 AliITSUSimulationPix.cxx:501 AliITSUSimulationPix.cxx:502 AliITSUSimulationPix.cxx:503 AliITSUSimulationPix.cxx:504 AliITSUSimulationPix.cxx:505 AliITSUSimulationPix.cxx:506 AliITSUSimulationPix.cxx:507 AliITSUSimulationPix.cxx:508 AliITSUSimulationPix.cxx:509 AliITSUSimulationPix.cxx:510 AliITSUSimulationPix.cxx:511 AliITSUSimulationPix.cxx:512 AliITSUSimulationPix.cxx:513 AliITSUSimulationPix.cxx:514 AliITSUSimulationPix.cxx:515 AliITSUSimulationPix.cxx:516 AliITSUSimulationPix.cxx:517 AliITSUSimulationPix.cxx:518 AliITSUSimulationPix.cxx:519 AliITSUSimulationPix.cxx:520 AliITSUSimulationPix.cxx:521 AliITSUSimulationPix.cxx:522 AliITSUSimulationPix.cxx:523 AliITSUSimulationPix.cxx:524 AliITSUSimulationPix.cxx:525 AliITSUSimulationPix.cxx:526 AliITSUSimulationPix.cxx:527 AliITSUSimulationPix.cxx:528 AliITSUSimulationPix.cxx:529 AliITSUSimulationPix.cxx:530 AliITSUSimulationPix.cxx:531 AliITSUSimulationPix.cxx:532 AliITSUSimulationPix.cxx:533 AliITSUSimulationPix.cxx:534 AliITSUSimulationPix.cxx:535 AliITSUSimulationPix.cxx:536 AliITSUSimulationPix.cxx:537 AliITSUSimulationPix.cxx:538 AliITSUSimulationPix.cxx:539 AliITSUSimulationPix.cxx:540 AliITSUSimulationPix.cxx:541 AliITSUSimulationPix.cxx:542 AliITSUSimulationPix.cxx:543 AliITSUSimulationPix.cxx:544 AliITSUSimulationPix.cxx:545 AliITSUSimulationPix.cxx:546 AliITSUSimulationPix.cxx:547 AliITSUSimulationPix.cxx:548 AliITSUSimulationPix.cxx:549 AliITSUSimulationPix.cxx:550 AliITSUSimulationPix.cxx:551 AliITSUSimulationPix.cxx:552 AliITSUSimulationPix.cxx:553 AliITSUSimulationPix.cxx:554 AliITSUSimulationPix.cxx:555 AliITSUSimulationPix.cxx:556 AliITSUSimulationPix.cxx:557 AliITSUSimulationPix.cxx:558 AliITSUSimulationPix.cxx:559 AliITSUSimulationPix.cxx:560 AliITSUSimulationPix.cxx:561 AliITSUSimulationPix.cxx:562 AliITSUSimulationPix.cxx:563 AliITSUSimulationPix.cxx:564 AliITSUSimulationPix.cxx:565 AliITSUSimulationPix.cxx:566 AliITSUSimulationPix.cxx:567 AliITSUSimulationPix.cxx:568 AliITSUSimulationPix.cxx:569 AliITSUSimulationPix.cxx:570 AliITSUSimulationPix.cxx:571 AliITSUSimulationPix.cxx:572 AliITSUSimulationPix.cxx:573 AliITSUSimulationPix.cxx:574 AliITSUSimulationPix.cxx:575 AliITSUSimulationPix.cxx:576 AliITSUSimulationPix.cxx:577 AliITSUSimulationPix.cxx:578 AliITSUSimulationPix.cxx:579 AliITSUSimulationPix.cxx:580 AliITSUSimulationPix.cxx:581 AliITSUSimulationPix.cxx:582 AliITSUSimulationPix.cxx:583 AliITSUSimulationPix.cxx:584 AliITSUSimulationPix.cxx:585 AliITSUSimulationPix.cxx:586 AliITSUSimulationPix.cxx:587 AliITSUSimulationPix.cxx:588 AliITSUSimulationPix.cxx:589 AliITSUSimulationPix.cxx:590 AliITSUSimulationPix.cxx:591 AliITSUSimulationPix.cxx:592 AliITSUSimulationPix.cxx:593 AliITSUSimulationPix.cxx:594 AliITSUSimulationPix.cxx:595 AliITSUSimulationPix.cxx:596 AliITSUSimulationPix.cxx:597 AliITSUSimulationPix.cxx:598 AliITSUSimulationPix.cxx:599 AliITSUSimulationPix.cxx:600 AliITSUSimulationPix.cxx:601 AliITSUSimulationPix.cxx:602 AliITSUSimulationPix.cxx:603 AliITSUSimulationPix.cxx:604 AliITSUSimulationPix.cxx:605 AliITSUSimulationPix.cxx:606 AliITSUSimulationPix.cxx:607 AliITSUSimulationPix.cxx:608 AliITSUSimulationPix.cxx:609 AliITSUSimulationPix.cxx:610 AliITSUSimulationPix.cxx:611 AliITSUSimulationPix.cxx:612 AliITSUSimulationPix.cxx:613 AliITSUSimulationPix.cxx:614 AliITSUSimulationPix.cxx:615 AliITSUSimulationPix.cxx:616 AliITSUSimulationPix.cxx:617 AliITSUSimulationPix.cxx:618 AliITSUSimulationPix.cxx:619 AliITSUSimulationPix.cxx:620 AliITSUSimulationPix.cxx:621 AliITSUSimulationPix.cxx:622 AliITSUSimulationPix.cxx:623 AliITSUSimulationPix.cxx:624 AliITSUSimulationPix.cxx:625 AliITSUSimulationPix.cxx:626 AliITSUSimulationPix.cxx:627 AliITSUSimulationPix.cxx:628 AliITSUSimulationPix.cxx:629 AliITSUSimulationPix.cxx:630 AliITSUSimulationPix.cxx:631 AliITSUSimulationPix.cxx:632 AliITSUSimulationPix.cxx:633 AliITSUSimulationPix.cxx:634 AliITSUSimulationPix.cxx:635 AliITSUSimulationPix.cxx:636 AliITSUSimulationPix.cxx:637 AliITSUSimulationPix.cxx:638 AliITSUSimulationPix.cxx:639 AliITSUSimulationPix.cxx:640 AliITSUSimulationPix.cxx:641 AliITSUSimulationPix.cxx:642 AliITSUSimulationPix.cxx:643 AliITSUSimulationPix.cxx:644 AliITSUSimulationPix.cxx:645 AliITSUSimulationPix.cxx:646 AliITSUSimulationPix.cxx:647 AliITSUSimulationPix.cxx:648 AliITSUSimulationPix.cxx:649 AliITSUSimulationPix.cxx:650 AliITSUSimulationPix.cxx:651 AliITSUSimulationPix.cxx:652 AliITSUSimulationPix.cxx:653 AliITSUSimulationPix.cxx:654 AliITSUSimulationPix.cxx:655 AliITSUSimulationPix.cxx:656 AliITSUSimulationPix.cxx:657 AliITSUSimulationPix.cxx:658 AliITSUSimulationPix.cxx:659 AliITSUSimulationPix.cxx:660 AliITSUSimulationPix.cxx:661 AliITSUSimulationPix.cxx:662 AliITSUSimulationPix.cxx:663 AliITSUSimulationPix.cxx:664 AliITSUSimulationPix.cxx:665 AliITSUSimulationPix.cxx:666 AliITSUSimulationPix.cxx:667 AliITSUSimulationPix.cxx:668 AliITSUSimulationPix.cxx:669 AliITSUSimulationPix.cxx:670 AliITSUSimulationPix.cxx:671 AliITSUSimulationPix.cxx:672 AliITSUSimulationPix.cxx:673 AliITSUSimulationPix.cxx:674 AliITSUSimulationPix.cxx:675 AliITSUSimulationPix.cxx:676 AliITSUSimulationPix.cxx:677 AliITSUSimulationPix.cxx:678 AliITSUSimulationPix.cxx:679 AliITSUSimulationPix.cxx:680 AliITSUSimulationPix.cxx:681 AliITSUSimulationPix.cxx:682 AliITSUSimulationPix.cxx:683 AliITSUSimulationPix.cxx:684 AliITSUSimulationPix.cxx:685 AliITSUSimulationPix.cxx:686 AliITSUSimulationPix.cxx:687 AliITSUSimulationPix.cxx:688 AliITSUSimulationPix.cxx:689 AliITSUSimulationPix.cxx:690 AliITSUSimulationPix.cxx:691 AliITSUSimulationPix.cxx:692 AliITSUSimulationPix.cxx:693 AliITSUSimulationPix.cxx:694 AliITSUSimulationPix.cxx:695 AliITSUSimulationPix.cxx:696 AliITSUSimulationPix.cxx:697 AliITSUSimulationPix.cxx:698 AliITSUSimulationPix.cxx:699 AliITSUSimulationPix.cxx:700 AliITSUSimulationPix.cxx:701 AliITSUSimulationPix.cxx:702 AliITSUSimulationPix.cxx:703 AliITSUSimulationPix.cxx:704 AliITSUSimulationPix.cxx:705 AliITSUSimulationPix.cxx:706 AliITSUSimulationPix.cxx:707 AliITSUSimulationPix.cxx:708 AliITSUSimulationPix.cxx:709 AliITSUSimulationPix.cxx:710 AliITSUSimulationPix.cxx:711 AliITSUSimulationPix.cxx:712 AliITSUSimulationPix.cxx:713 AliITSUSimulationPix.cxx:714 AliITSUSimulationPix.cxx:715 AliITSUSimulationPix.cxx:716 AliITSUSimulationPix.cxx:717 AliITSUSimulationPix.cxx:718 AliITSUSimulationPix.cxx:719 AliITSUSimulationPix.cxx:720 AliITSUSimulationPix.cxx:721 AliITSUSimulationPix.cxx:722 AliITSUSimulationPix.cxx:723 AliITSUSimulationPix.cxx:724 AliITSUSimulationPix.cxx:725 AliITSUSimulationPix.cxx:726 AliITSUSimulationPix.cxx:727 AliITSUSimulationPix.cxx:728 AliITSUSimulationPix.cxx:729 AliITSUSimulationPix.cxx:730 AliITSUSimulationPix.cxx:731 AliITSUSimulationPix.cxx:732 AliITSUSimulationPix.cxx:733 AliITSUSimulationPix.cxx:734 AliITSUSimulationPix.cxx:735 AliITSUSimulationPix.cxx:736 AliITSUSimulationPix.cxx:737 AliITSUSimulationPix.cxx:738 AliITSUSimulationPix.cxx:739 AliITSUSimulationPix.cxx:740 AliITSUSimulationPix.cxx:741 AliITSUSimulationPix.cxx:742 AliITSUSimulationPix.cxx:743 AliITSUSimulationPix.cxx:744 AliITSUSimulationPix.cxx:745 AliITSUSimulationPix.cxx:746 AliITSUSimulationPix.cxx:747 AliITSUSimulationPix.cxx:748 AliITSUSimulationPix.cxx:749 AliITSUSimulationPix.cxx:750 AliITSUSimulationPix.cxx:751 AliITSUSimulationPix.cxx:752 AliITSUSimulationPix.cxx:753 AliITSUSimulationPix.cxx:754 AliITSUSimulationPix.cxx:755 AliITSUSimulationPix.cxx:756 AliITSUSimulationPix.cxx:757 AliITSUSimulationPix.cxx:758 AliITSUSimulationPix.cxx:759 AliITSUSimulationPix.cxx:760 AliITSUSimulationPix.cxx:761 AliITSUSimulationPix.cxx:762 AliITSUSimulationPix.cxx:763 AliITSUSimulationPix.cxx:764 AliITSUSimulationPix.cxx:765 AliITSUSimulationPix.cxx:766 AliITSUSimulationPix.cxx:767 AliITSUSimulationPix.cxx:768 AliITSUSimulationPix.cxx:769 AliITSUSimulationPix.cxx:770 AliITSUSimulationPix.cxx:771 AliITSUSimulationPix.cxx:772 AliITSUSimulationPix.cxx:773 AliITSUSimulationPix.cxx:774 AliITSUSimulationPix.cxx:775 AliITSUSimulationPix.cxx:776 AliITSUSimulationPix.cxx:777 AliITSUSimulationPix.cxx:778 AliITSUSimulationPix.cxx:779 AliITSUSimulationPix.cxx:780 AliITSUSimulationPix.cxx:781 AliITSUSimulationPix.cxx:782 AliITSUSimulationPix.cxx:783 AliITSUSimulationPix.cxx:784 AliITSUSimulationPix.cxx:785 AliITSUSimulationPix.cxx:786 AliITSUSimulationPix.cxx:787 AliITSUSimulationPix.cxx:788 AliITSUSimulationPix.cxx:789 AliITSUSimulationPix.cxx:790 AliITSUSimulationPix.cxx:791 AliITSUSimulationPix.cxx:792 AliITSUSimulationPix.cxx:793 AliITSUSimulationPix.cxx:794 AliITSUSimulationPix.cxx:795 AliITSUSimulationPix.cxx:796 AliITSUSimulationPix.cxx:797 AliITSUSimulationPix.cxx:798 AliITSUSimulationPix.cxx:799 AliITSUSimulationPix.cxx:800 AliITSUSimulationPix.cxx:801 AliITSUSimulationPix.cxx:802 AliITSUSimulationPix.cxx:803 AliITSUSimulationPix.cxx:804 AliITSUSimulationPix.cxx:805 AliITSUSimulationPix.cxx:806 AliITSUSimulationPix.cxx:807 AliITSUSimulationPix.cxx:808 AliITSUSimulationPix.cxx:809 AliITSUSimulationPix.cxx:810 AliITSUSimulationPix.cxx:811 AliITSUSimulationPix.cxx:812 AliITSUSimulationPix.cxx:813 AliITSUSimulationPix.cxx:814 AliITSUSimulationPix.cxx:815 AliITSUSimulationPix.cxx:816 AliITSUSimulationPix.cxx:817 AliITSUSimulationPix.cxx:818 AliITSUSimulationPix.cxx:819 AliITSUSimulationPix.cxx:820 AliITSUSimulationPix.cxx:821 AliITSUSimulationPix.cxx:822 AliITSUSimulationPix.cxx:823 AliITSUSimulationPix.cxx:824 AliITSUSimulationPix.cxx:825 AliITSUSimulationPix.cxx:826 AliITSUSimulationPix.cxx:827 AliITSUSimulationPix.cxx:828 AliITSUSimulationPix.cxx:829 AliITSUSimulationPix.cxx:830 AliITSUSimulationPix.cxx:831 AliITSUSimulationPix.cxx:832 AliITSUSimulationPix.cxx:833 AliITSUSimulationPix.cxx:834 AliITSUSimulationPix.cxx:835 AliITSUSimulationPix.cxx:836 AliITSUSimulationPix.cxx:837 AliITSUSimulationPix.cxx:838 AliITSUSimulationPix.cxx:839 AliITSUSimulationPix.cxx:840 AliITSUSimulationPix.cxx:841 AliITSUSimulationPix.cxx:842 AliITSUSimulationPix.cxx:843 AliITSUSimulationPix.cxx:844 AliITSUSimulationPix.cxx:845 AliITSUSimulationPix.cxx:846 AliITSUSimulationPix.cxx:847 AliITSUSimulationPix.cxx:848 AliITSUSimulationPix.cxx:849 AliITSUSimulationPix.cxx:850 AliITSUSimulationPix.cxx:851 AliITSUSimulationPix.cxx:852 AliITSUSimulationPix.cxx:853 AliITSUSimulationPix.cxx:854 AliITSUSimulationPix.cxx:855 AliITSUSimulationPix.cxx:856 AliITSUSimulationPix.cxx:857 AliITSUSimulationPix.cxx:858 AliITSUSimulationPix.cxx:859 AliITSUSimulationPix.cxx:860 AliITSUSimulationPix.cxx:861 AliITSUSimulationPix.cxx:862 AliITSUSimulationPix.cxx:863 AliITSUSimulationPix.cxx:864 AliITSUSimulationPix.cxx:865 AliITSUSimulationPix.cxx:866 AliITSUSimulationPix.cxx:867 AliITSUSimulationPix.cxx:868 AliITSUSimulationPix.cxx:869 AliITSUSimulationPix.cxx:870 AliITSUSimulationPix.cxx:871 AliITSUSimulationPix.cxx:872 AliITSUSimulationPix.cxx:873 AliITSUSimulationPix.cxx:874 AliITSUSimulationPix.cxx:875 AliITSUSimulationPix.cxx:876 AliITSUSimulationPix.cxx:877 AliITSUSimulationPix.cxx:878 AliITSUSimulationPix.cxx:879 AliITSUSimulationPix.cxx:880 AliITSUSimulationPix.cxx:881 AliITSUSimulationPix.cxx:882 AliITSUSimulationPix.cxx:883 AliITSUSimulationPix.cxx:884 AliITSUSimulationPix.cxx:885 AliITSUSimulationPix.cxx:886 AliITSUSimulationPix.cxx:887 AliITSUSimulationPix.cxx:888 AliITSUSimulationPix.cxx:889 AliITSUSimulationPix.cxx:890 AliITSUSimulationPix.cxx:891 AliITSUSimulationPix.cxx:892 AliITSUSimulationPix.cxx:893 AliITSUSimulationPix.cxx:894 AliITSUSimulationPix.cxx:895 AliITSUSimulationPix.cxx:896 AliITSUSimulationPix.cxx:897 AliITSUSimulationPix.cxx:898 AliITSUSimulationPix.cxx:899 AliITSUSimulationPix.cxx:900 AliITSUSimulationPix.cxx:901 AliITSUSimulationPix.cxx:902 AliITSUSimulationPix.cxx:903 AliITSUSimulationPix.cxx:904 AliITSUSimulationPix.cxx:905 AliITSUSimulationPix.cxx:906 AliITSUSimulationPix.cxx:907 AliITSUSimulationPix.cxx:908 AliITSUSimulationPix.cxx:909 AliITSUSimulationPix.cxx:910 AliITSUSimulationPix.cxx:911 AliITSUSimulationPix.cxx:912 AliITSUSimulationPix.cxx:913 AliITSUSimulationPix.cxx:914 AliITSUSimulationPix.cxx:915 AliITSUSimulationPix.cxx:916 AliITSUSimulationPix.cxx:917 AliITSUSimulationPix.cxx:918 AliITSUSimulationPix.cxx:919 AliITSUSimulationPix.cxx:920 AliITSUSimulationPix.cxx:921 AliITSUSimulationPix.cxx:922 AliITSUSimulationPix.cxx:923 AliITSUSimulationPix.cxx:924 AliITSUSimulationPix.cxx:925 AliITSUSimulationPix.cxx:926 AliITSUSimulationPix.cxx:927 AliITSUSimulationPix.cxx:928 AliITSUSimulationPix.cxx:929 AliITSUSimulationPix.cxx:930 AliITSUSimulationPix.cxx:931 AliITSUSimulationPix.cxx:932 AliITSUSimulationPix.cxx:933 AliITSUSimulationPix.cxx:934 AliITSUSimulationPix.cxx:935 AliITSUSimulationPix.cxx:936 AliITSUSimulationPix.cxx:937 AliITSUSimulationPix.cxx:938 AliITSUSimulationPix.cxx:939 AliITSUSimulationPix.cxx:940 AliITSUSimulationPix.cxx:941 AliITSUSimulationPix.cxx:942 AliITSUSimulationPix.cxx:943 AliITSUSimulationPix.cxx:944 AliITSUSimulationPix.cxx:945 AliITSUSimulationPix.cxx:946 AliITSUSimulationPix.cxx:947 AliITSUSimulationPix.cxx:948 AliITSUSimulationPix.cxx:949 AliITSUSimulationPix.cxx:950 AliITSUSimulationPix.cxx:951