#include "AliLog.h"
#include "AliRun.h"
#include "AliMagF.h"
+#include "AliMathBase.h"
//#define DEBUG
} else {
fCoupling=1;
} // end if
- //SetLorentzDrift(kTRUE);
- if (fLorentz) SetTanLorAngle();
+ SetLorentzDrift(simpar->GetSPDLorentzDrift());
+ if (fLorentz) SetTanLorAngle(simpar->GetSPDLorentzHoleWeight());
//SetStrobeGeneration(kFALSE);
if (fStrobe) GenerateStrobePhase();
}
}
Double_t WeightEle=1.-WeightHole;
AliITSSimuParam* simpar = fDetType->GetSimuParam();
- Double_t pos[3]={0.,0.,0.};
- Double_t B[3]={0.,0.,0.};
- TGeoGlobalMagField::Instance()->Field(pos,B);
- fTanLorAng = TMath::Tan(WeightHole*simpar->LorentzAngleHole(B[2]) +
- WeightEle*simpar->LorentzAngleElectron(B[2]));
- fTanLorAng*=-1.; // this only for the old geometry
- // comment the upper line for the new geometry
+ AliMagF* fld = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+ if (!fld) AliFatal("The field is not initialized");
+ Double_t bz = fld->SolenoidField();
+ fTanLorAng = TMath::Tan(WeightHole*simpar->LorentzAngleHole(bz) +
+ WeightEle*simpar->LorentzAngleElectron(bz));
return kTRUE;
}
//______________________________________________________________________
z1 -= z0; // Distance from where track traveled
z2 -= z0; // Distance from where track traveled
s = 0.25; // Correction based on definision of Erfc
- s *= TMath::Erfc(sp*x1) - TMath::Erfc(sp*x2);
+ s *= AliMathBase::ErfcFast(sp*x1) - AliMathBase::ErfcFast(sp*x2);
if(GetDebug(3)){
cout <<"el="<<el<<" ix0="<<ix0<<" ix="<<ix<<" x0="<<x<<
" iz0="<<iz0<<" iz="<<iz<<" z0="<<z<<
" sp*x1="<<sp*x1<<" sp*x2="<<sp*x2<<" s="<<s;
} // end if GetDebug
- s *= TMath::Erfc(sp*z1) - TMath::Erfc(sp*z2);
+ s *= AliMathBase::ErfcFast(sp*z1) - AliMathBase::ErfcFast(sp*z2);
if(GetDebug(3)){
cout<<" sp*z1="<<sp*z1<<" sp*z2="<<sp*z2<<" s="<<s<< endl;
} // end if GetDebug
if(GetDebug(4)) Info("SpreadChargeAsym","(x0=%e,z0=%e,ix0=%d,iz0=%d,el=%e,"
- "sig=%e,t=%d,i=%d)",x0,z0,ix0,iz0,el,sigx,sigz,t,hi);
+ "sigx=%e, sigz=%e, t=%d,i=%d)",x0,z0,ix0,iz0,el,sigx,sigz,t,hi);
if(sigx<=0.0 || sigz<=0.0) { // if sig<=0 No diffusion to simulate.
GetMap()->AddSignal(iz0,ix0,t,hi,GetModuleNumber(),el);
if(GetDebug(2)){
z1 -= z0; // Distance from where track traveled
z2 -= z0; // Distance from where track traveled
s = 0.25; // Correction based on definision of Erfc
- s *= TMath::Erfc(spx*x1) - TMath::Erfc(spx*x2);
+ s *= AliMathBase::ErfcFast(spx*x1) - AliMathBase::ErfcFast(spx*x2);
if(GetDebug(3)){
cout <<"el="<<el<<" ix0="<<ix0<<" ix="<<ix<<" x0="<<x<<
" iz0="<<iz0<<" iz="<<iz<<" z0="<<z<<
" spx*x1="<<spx*x1<<" spx*x2="<<spx*x2<<" s="<<s;
} // end if GetDebug
- s *= TMath::Erfc(spz*z1) - TMath::Erfc(spz*z2);
+ s *= AliMathBase::ErfcFast(spz*z1) - AliMathBase::ErfcFast(spz*z2);
if(GetDebug(3)){
cout<<" spz*z1="<<spz*z1<<" spz*z2="<<spz*z2<<" s="<<s<< endl;
} // end if GetDebug
fSPDname="spd_";
for(Int_t i=0;i<GetNPixelsZ();i++) {
Char_t pixelz[4];
- sprintf(pixelz,"%d",i);
+ snprintf(pixelz,3,"%d",i);
fSPDname.Append(pixelz);
fHis->AddAt(new TH1F(fSPDname.Data(),"SPD maps",
GetNPixelsX(),0.,(Double_t)GetNPixelsX()),i);