#include "AliMUONTrackExtrap.h"
#include "AliMUONTrackParam.h"
#include "AliMUONConstants.h"
#include "AliMUONReconstructor.h"
#include "AliMagF.h"
#include "AliExternalTrackParam.h"
#include <TGeoGlobalMagField.h>
#include <TGeoManager.h>
#include <TMath.h>
#include <TDatabasePDG.h>
#include <Riostream.h>
using std::endl;
using std::cout;
ClassImp(AliMUONTrackExtrap)
const Double_t AliMUONTrackExtrap::fgkSimpleBPosition = 0.5 * (AliMUONConstants::CoilZ() + AliMUONConstants::YokeZ());
const Double_t AliMUONTrackExtrap::fgkSimpleBLength = 0.5 * (AliMUONConstants::CoilL() + AliMUONConstants::YokeL());
Double_t AliMUONTrackExtrap::fgSimpleBValue = 0.;
Bool_t AliMUONTrackExtrap::fgFieldON = kFALSE;
const Bool_t AliMUONTrackExtrap::fgkUseHelix = kFALSE;
const Int_t AliMUONTrackExtrap::fgkMaxStepNumber = 5000;
const Double_t AliMUONTrackExtrap::fgkHelixStepLength = 6.;
const Double_t AliMUONTrackExtrap::fgkRungeKuttaMaxResidue = 0.002;
void AliMUONTrackExtrap::SetField()
{
const Double_t x[3] = {50.,50.,fgkSimpleBPosition};
Double_t b[3] = {0.,0.,0.};
TGeoGlobalMagField::Instance()->Field(x,b);
fgSimpleBValue = b[0];
fgFieldON = (TMath::Abs(fgSimpleBValue) > 1.e-10) ? kTRUE : kFALSE;
}
Double_t AliMUONTrackExtrap::GetImpactParamFromBendingMomentum(Double_t bendingMomentum)
{
if (bendingMomentum == 0.) return 1.e10;
const Double_t kCorrectionFactor = 1.1;
return kCorrectionFactor * (-0.0003 * fgSimpleBValue * fgkSimpleBLength * fgkSimpleBPosition / bendingMomentum);
}
Double_t
AliMUONTrackExtrap::GetBendingMomentumFromImpactParam(Double_t impactParam)
{
if (impactParam == 0.) return 1.e10;
const Double_t kCorrectionFactor = 1.1;
if (fgFieldON)
{
return kCorrectionFactor * (-0.0003 * fgSimpleBValue * fgkSimpleBLength * fgkSimpleBPosition / impactParam);
}
else
{
return AliMUONConstants::GetMostProbBendingMomentum();
}
}
void AliMUONTrackExtrap::LinearExtrapToZ(AliMUONTrackParam* trackParam, Double_t zEnd)
{
if (trackParam->GetZ() == zEnd) return;
Double_t dZ = zEnd - trackParam->GetZ();
trackParam->SetNonBendingCoor(trackParam->GetNonBendingCoor() + trackParam->GetNonBendingSlope() * dZ);
trackParam->SetBendingCoor(trackParam->GetBendingCoor() + trackParam->GetBendingSlope() * dZ);
trackParam->SetZ(zEnd);
}
void AliMUONTrackExtrap::LinearExtrapToZCov(AliMUONTrackParam* trackParam, Double_t zEnd, Bool_t updatePropagator)
{
if (trackParam->GetZ() == zEnd) return;
if (!trackParam->CovariancesExist()) {
cout<<"W-AliMUONTrackExtrap::LinearExtrapToZCov: Covariance matrix does not exist"<<endl;
LinearExtrapToZ(trackParam,zEnd);
return;
}
Double_t dZ = zEnd - trackParam->GetZ();
trackParam->SetNonBendingCoor(trackParam->GetNonBendingCoor() + trackParam->GetNonBendingSlope() * dZ);
trackParam->SetBendingCoor(trackParam->GetBendingCoor() + trackParam->GetBendingSlope() * dZ);
trackParam->SetZ(zEnd);
TMatrixD jacob(5,5);
jacob.UnitMatrix();
jacob(0,1) = dZ;
jacob(2,3) = dZ;
TMatrixD tmp(trackParam->GetCovariances(),TMatrixD::kMultTranspose,jacob);
TMatrixD tmp2(jacob,TMatrixD::kMult,tmp);
trackParam->SetCovariances(tmp2);
if (updatePropagator) trackParam->UpdatePropagator(jacob);
}
Bool_t AliMUONTrackExtrap::ExtrapToZ(AliMUONTrackParam* trackParam, Double_t zEnd)
{
if (!fgFieldON) {
AliMUONTrackExtrap::LinearExtrapToZ(trackParam,zEnd);
return kTRUE;
}
else if (fgkUseHelix) return AliMUONTrackExtrap::ExtrapToZHelix(trackParam,zEnd);
else return AliMUONTrackExtrap::ExtrapToZRungekutta(trackParam,zEnd);
}
Bool_t AliMUONTrackExtrap::ExtrapToZHelix(AliMUONTrackParam* trackParam, Double_t zEnd)
{
if (trackParam->GetZ() == zEnd) return kTRUE;
Double_t forwardBackward;
if (zEnd < trackParam->GetZ()) forwardBackward = 1.0;
else forwardBackward = -1.0;
Double_t v3[7], v3New[7];
Int_t i3, stepNumber;
ConvertTrackParamForExtrap(trackParam, forwardBackward, v3);
Double_t chargeExtrap = forwardBackward * TMath::Sign(Double_t(1.0), trackParam->GetInverseBendingMomentum());
stepNumber = 0;
while (((-forwardBackward * (v3[2] - zEnd)) <= 0.0) && (stepNumber < fgkMaxStepNumber)) {
stepNumber++;
ExtrapOneStepHelix(chargeExtrap, fgkHelixStepLength, v3, v3New);
if ((-forwardBackward * (v3New[2] - zEnd)) > 0.0) break;
for (i3 = 0; i3 < 7; i3++) {v3[i3] = v3New[i3];}
}
Double_t dZ12 = v3New[2] - v3[2];
if (TMath::Abs(dZ12) > 0) {
Double_t dZ1i = zEnd - v3[2];
Double_t dZi2 = v3New[2] - zEnd;
Double_t xPrime = (v3New[0] - v3[0]) / dZ12;
Double_t xSecond = ((v3New[3] / v3New[5]) - (v3[3] / v3[5])) / dZ12;
Double_t yPrime = (v3New[1] - v3[1]) / dZ12;
Double_t ySecond = ((v3New[4] / v3New[5]) - (v3[4] / v3[5])) / dZ12;
v3[0] = v3[0] + xPrime * dZ1i - 0.5 * xSecond * dZ1i * dZi2;
v3[1] = v3[1] + yPrime * dZ1i - 0.5 * ySecond * dZ1i * dZi2;
v3[2] = zEnd;
Double_t xPrimeI = xPrime - 0.5 * xSecond * (dZi2 - dZ1i);
Double_t yPrimeI = yPrime - 0.5 * ySecond * (dZi2 - dZ1i);
v3[5] = 1.0 / TMath::Sqrt(1.0 + xPrimeI * xPrimeI + yPrimeI * yPrimeI);
v3[3] = xPrimeI * v3[5];
v3[4] = yPrimeI * v3[5];
} else {
cout<<"W-AliMUONTrackExtrap::ExtrapToZHelix: Extrap. to Z not reached, Z = "<<zEnd<<endl;
}
RecoverTrackParam(v3, chargeExtrap * forwardBackward, trackParam);
return kTRUE;
}
Bool_t AliMUONTrackExtrap::ExtrapToZRungekutta(AliMUONTrackParam* trackParam, Double_t zEnd)
{
if (trackParam->GetZ() == zEnd) return kTRUE;
Double_t forwardBackward;
if (zEnd < trackParam->GetZ()) forwardBackward = 1.0;
else forwardBackward = -1.0;
Double_t chargeExtrap = forwardBackward * TMath::Sign(Double_t(1.0), trackParam->GetInverseBendingMomentum());
Double_t v3[7], v3New[7];
Double_t dZ, step;
Int_t stepNumber = 0;
Double_t residue = zEnd - trackParam->GetZ();
Bool_t uturn = kFALSE;
Bool_t trackingFailed = kFALSE;
Bool_t tooManyStep = kFALSE;
while (TMath::Abs(residue) > fgkRungeKuttaMaxResidue && stepNumber <= fgkMaxStepNumber) {
dZ = zEnd - trackParam->GetZ();
step = dZ * TMath::Sqrt(1.0 + trackParam->GetBendingSlope()*trackParam->GetBendingSlope() +
trackParam->GetNonBendingSlope()*trackParam->GetNonBendingSlope());
ConvertTrackParamForExtrap(trackParam, forwardBackward, v3);
do {
if (stepNumber > fgkMaxStepNumber) {
cout<<"W-AliMUONTrackExtrap::ExtrapToZRungekutta: Too many trials: "<<stepNumber<<endl;
tooManyStep = kTRUE;
break;
}
stepNumber ++;
step = TMath::Abs(step);
if (!AliMUONTrackExtrap::ExtrapOneStepRungekutta(chargeExtrap,step,v3,v3New)) {
trackingFailed = kTRUE;
break;
}
residue = zEnd - v3New[2];
step *= dZ/(v3New[2]-trackParam->GetZ());
} while (residue*dZ < 0 && TMath::Abs(residue) > fgkRungeKuttaMaxResidue);
if (trackingFailed) break;
else if (v3New[5]*v3[5] < 0) {
cout<<"W-AliMUONTrackExtrap::ExtrapToZRungekutta: The track turned around"<<endl;
uturn = kTRUE;
break;
} else RecoverTrackParam(v3New, chargeExtrap * forwardBackward, trackParam);
}
if (trackingFailed || uturn) {
dZ = zEnd - v3[2];
Double_t bendingSlope = TMath::Sign(1.e4,-fgSimpleBValue*trackParam->GetInverseBendingMomentum()) / dZ;
Double_t pZ = TMath::Abs(1. / trackParam->GetInverseBendingMomentum()) / TMath::Sqrt(1.0 + bendingSlope * bendingSlope);
Double_t nonBendingSlope = TMath::Sign(TMath::Abs(v3[3]) * v3[6] / pZ, trackParam->GetNonBendingSlope());
trackParam->SetNonBendingCoor(trackParam->GetNonBendingCoor() + dZ * nonBendingSlope);
trackParam->SetNonBendingSlope(nonBendingSlope);
trackParam->SetBendingCoor(trackParam->GetBendingCoor() + dZ * bendingSlope);
trackParam->SetBendingSlope(bendingSlope);
trackParam->SetZ(zEnd);
return kFALSE;
} else {
trackParam->SetNonBendingCoor(trackParam->GetNonBendingCoor() + residue * trackParam->GetNonBendingSlope());
trackParam->SetBendingCoor(trackParam->GetBendingCoor() + residue * trackParam->GetBendingSlope());
trackParam->SetZ(zEnd);
return !tooManyStep;
}
}
void AliMUONTrackExtrap::ConvertTrackParamForExtrap(AliMUONTrackParam* trackParam, Double_t forwardBackward, Double_t *v3)
{
v3[0] = trackParam->GetNonBendingCoor();
v3[1] = trackParam->GetBendingCoor();
v3[2] = trackParam->GetZ();
Double_t pYZ = TMath::Abs(1.0 / trackParam->GetInverseBendingMomentum());
Double_t pZ = pYZ / TMath::Sqrt(1.0 + trackParam->GetBendingSlope() * trackParam->GetBendingSlope());
v3[6] = TMath::Sqrt(pYZ * pYZ + pZ * pZ * trackParam->GetNonBendingSlope() * trackParam->GetNonBendingSlope());
v3[5] = -forwardBackward * pZ / v3[6];
v3[3] = trackParam->GetNonBendingSlope() * v3[5];
v3[4] = trackParam->GetBendingSlope() * v3[5];
}
void AliMUONTrackExtrap::RecoverTrackParam(Double_t *v3, Double_t charge, AliMUONTrackParam* trackParam)
{
trackParam->SetNonBendingCoor(v3[0]);
trackParam->SetBendingCoor(v3[1]);
trackParam->SetZ(v3[2]);
Double_t pYZ = v3[6] * TMath::Sqrt((1.-v3[3])*(1.+v3[3]));
trackParam->SetInverseBendingMomentum(charge/pYZ);
trackParam->SetBendingSlope(v3[4]/v3[5]);
trackParam->SetNonBendingSlope(v3[3]/v3[5]);
}
Bool_t AliMUONTrackExtrap::ExtrapToZCov(AliMUONTrackParam* trackParam, Double_t zEnd, Bool_t updatePropagator)
{
if (trackParam->GetZ() == zEnd) return kTRUE;
if (!fgFieldON) {
AliMUONTrackExtrap::LinearExtrapToZCov(trackParam,zEnd,updatePropagator);
return kTRUE;
}
if (!trackParam->CovariancesExist()) {
cout<<"W-AliMUONTrackExtrap::ExtrapToZCov: Covariance matrix does not exist"<<endl;
return ExtrapToZ(trackParam,zEnd);
}
AliMUONTrackParam trackParamSave(*trackParam);
TMatrixD paramSave(trackParamSave.GetParameters());
Double_t zBegin = trackParamSave.GetZ();
const TMatrixD& kParamCov = trackParam->GetCovariances();
if (!ExtrapToZ(trackParam,zEnd)) return kFALSE;
const TMatrixD& extrapParam = trackParam->GetParameters();
Bool_t extrapStatus = kTRUE;
TMatrixD jacob(5,5);
jacob.Zero();
TMatrixD dParam(5,1);
Double_t direction[5] = {-1.,-1.,1.,1.,-1.};
for (Int_t i=0; i<5; i++) {
if (kParamCov(i,i) <= 0.) continue;
for (Int_t j=0; j<5; j++) {
if (j==i) {
dParam(j,0) = TMath::Sqrt(kParamCov(i,i));
dParam(j,0) *= TMath::Sign(1.,direction[j]*paramSave(j,0));
} else dParam(j,0) = 0.;
}
trackParamSave.SetParameters(paramSave);
trackParamSave.AddParameters(dParam);
trackParamSave.SetZ(zBegin);
if (!ExtrapToZ(&trackParamSave,zEnd)) {
cout<<"W-AliMUONTrackExtrap::ExtrapToZCov: Bad covariance matrix"<<endl;
extrapStatus = kFALSE;
}
TMatrixD jacobji(trackParamSave.GetParameters(),TMatrixD::kMinus,extrapParam);
jacobji *= 1. / dParam(i,0);
jacob.SetSub(0,i,jacobji);
}
TMatrixD tmp(kParamCov,TMatrixD::kMultTranspose,jacob);
TMatrixD tmp2(jacob,TMatrixD::kMult,tmp);
trackParam->SetCovariances(tmp2);
if (updatePropagator) trackParam->UpdatePropagator(jacob);
return extrapStatus;
}
void AliMUONTrackExtrap::AddMCSEffectInAbsorber(AliMUONTrackParam* param, Double_t signedPathLength, Double_t f0, Double_t f1, Double_t f2)
{
Double_t bendingSlope = param->GetBendingSlope();
Double_t nonBendingSlope = param->GetNonBendingSlope();
Double_t inverseBendingMomentum = param->GetInverseBendingMomentum();
Double_t alpha2 = 0.0136 * 0.0136 * inverseBendingMomentum * inverseBendingMomentum * (1.0 + bendingSlope * bendingSlope) /
(1.0 + bendingSlope *bendingSlope + nonBendingSlope * nonBendingSlope);
Double_t pathLength = TMath::Abs(signedPathLength);
Double_t varCoor = alpha2 * (pathLength * pathLength * f0 - 2. * pathLength * f1 + f2);
Double_t covCorrSlope = TMath::Sign(1.,signedPathLength) * alpha2 * (pathLength * f0 - f1);
Double_t varSlop = alpha2 * f0;
TMatrixD newParamCov(param->GetCovariances());
newParamCov(0,0) += varCoor; newParamCov(0,1) += covCorrSlope;
newParamCov(1,0) += covCorrSlope; newParamCov(1,1) += varSlop;
newParamCov(2,2) += varCoor; newParamCov(2,3) += covCorrSlope;
newParamCov(3,2) += covCorrSlope; newParamCov(3,3) += varSlop;
if (fgFieldON) {
Double_t dqPxydSlopeX = inverseBendingMomentum * nonBendingSlope / (1. + nonBendingSlope*nonBendingSlope + bendingSlope*bendingSlope);
Double_t dqPxydSlopeY = - inverseBendingMomentum * nonBendingSlope*nonBendingSlope * bendingSlope /
(1. + bendingSlope*bendingSlope) / (1. + nonBendingSlope*nonBendingSlope + bendingSlope*bendingSlope);
newParamCov(4,0) += dqPxydSlopeX * covCorrSlope; newParamCov(0,4) += dqPxydSlopeX * covCorrSlope;
newParamCov(4,1) += dqPxydSlopeX * varSlop; newParamCov(1,4) += dqPxydSlopeX * varSlop;
newParamCov(4,2) += dqPxydSlopeY * covCorrSlope; newParamCov(2,4) += dqPxydSlopeY * covCorrSlope;
newParamCov(4,3) += dqPxydSlopeY * varSlop; newParamCov(3,4) += dqPxydSlopeY * varSlop;
newParamCov(4,4) += (dqPxydSlopeX*dqPxydSlopeX + dqPxydSlopeY*dqPxydSlopeY) * varSlop;
}
param->SetCovariances(newParamCov);
}
void AliMUONTrackExtrap::CorrectMCSEffectInAbsorber(AliMUONTrackParam* param,
Double_t xVtx, Double_t yVtx, Double_t zVtx,
Double_t errXVtx, Double_t errYVtx,
Double_t absZBeg, Double_t pathLength, Double_t f0, Double_t f1, Double_t f2)
{
Double_t zB = (f1>0.) ? absZBeg - f2/f1 : 0.;
AddMCSEffectInAbsorber(param, -pathLength, f0, f1, f2);
ExtrapToZCov(param,zVtx);
LinearExtrapToZCov(param,zB);
TMatrixD newParam(5,1);
newParam(0,0) = xVtx;
newParam(1,0) = (param->GetNonBendingCoor() - xVtx) / (zB - zVtx);
newParam(2,0) = yVtx;
newParam(3,0) = (param->GetBendingCoor() - yVtx) / (zB - zVtx);
newParam(4,0) = param->GetCharge() / param->P() *
TMath::Sqrt(1.0 + newParam(1,0)*newParam(1,0) + newParam(3,0)*newParam(3,0)) /
TMath::Sqrt(1.0 + newParam(3,0)*newParam(3,0));
TMatrixD paramCovP(param->GetCovariances());
Cov2CovP(param->GetParameters(),paramCovP);
TMatrixD paramCovVtx(5,5);
paramCovVtx.Zero();
paramCovVtx(0,0) = errXVtx * errXVtx;
paramCovVtx(1,1) = paramCovP(0,0);
paramCovVtx(2,2) = errYVtx * errYVtx;
paramCovVtx(3,3) = paramCovP(2,2);
paramCovVtx(4,4) = paramCovP(4,4);
paramCovVtx(1,3) = paramCovP(0,2);
paramCovVtx(3,1) = paramCovP(2,0);
paramCovVtx(1,4) = paramCovP(0,4);
paramCovVtx(4,1) = paramCovP(4,0);
paramCovVtx(3,4) = paramCovP(2,4);
paramCovVtx(4,3) = paramCovP(4,2);
TMatrixD jacob(5,5);
jacob.UnitMatrix();
jacob(1,0) = - 1. / (zB - zVtx);
jacob(1,1) = 1. / (zB - zVtx);
jacob(3,2) = - 1. / (zB - zVtx);
jacob(3,3) = 1. / (zB - zVtx);
TMatrixD tmp(paramCovVtx,TMatrixD::kMultTranspose,jacob);
TMatrixD newParamCov(jacob,TMatrixD::kMult,tmp);
CovP2Cov(newParam,newParamCov);
param->SetParameters(newParam);
param->SetZ(zVtx);
param->SetCovariances(newParamCov);
}
void AliMUONTrackExtrap::CorrectELossEffectInAbsorber(AliMUONTrackParam* param, Double_t eLoss, Double_t sigmaELoss2)
{
TMatrixD newParamCov(param->GetCovariances());
Cov2CovP(param->GetParameters(),newParamCov);
Double_t muMass = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
Double_t p = param->P();
Double_t e = TMath::Sqrt(p*p + muMass*muMass);
Double_t eCorr = e + eLoss;
Double_t pCorr = TMath::Sqrt(eCorr*eCorr - muMass*muMass);
Double_t nonBendingSlope = param->GetNonBendingSlope();
Double_t bendingSlope = param->GetBendingSlope();
param->SetInverseBendingMomentum(param->GetCharge() / pCorr *
TMath::Sqrt(1.0 + nonBendingSlope*nonBendingSlope + bendingSlope*bendingSlope) /
TMath::Sqrt(1.0 + bendingSlope*bendingSlope));
newParamCov(4,4) += eCorr * eCorr / pCorr / pCorr * sigmaELoss2;
CovP2Cov(param->GetParameters(),newParamCov);
param->SetCovariances(newParamCov);
}
Bool_t AliMUONTrackExtrap::GetAbsorberCorrectionParam(Double_t trackXYZIn[3], Double_t trackXYZOut[3], Double_t pTotal,
Double_t &pathLength, Double_t &f0, Double_t &f1, Double_t &f2,
Double_t &meanRho, Double_t &totalELoss, Double_t &sigmaELoss2)
{
pathLength = 0.;
f0 = 0.;
f1 = 0.;
f2 = 0.;
meanRho = 0.;
totalELoss = 0.;
sigmaELoss2 = 0.;
if (!gGeoManager) {
cout<<"E-AliMUONTrackExtrap::GetAbsorberCorrectionParam: no TGeo"<<endl;
return kFALSE;
}
pathLength = TMath::Sqrt((trackXYZOut[0] - trackXYZIn[0])*(trackXYZOut[0] - trackXYZIn[0])+
(trackXYZOut[1] - trackXYZIn[1])*(trackXYZOut[1] - trackXYZIn[1])+
(trackXYZOut[2] - trackXYZIn[2])*(trackXYZOut[2] - trackXYZIn[2]));
if (pathLength < TGeoShape::Tolerance()) return kFALSE;
Double_t b[3];
b[0] = (trackXYZOut[0] - trackXYZIn[0]) / pathLength;
b[1] = (trackXYZOut[1] - trackXYZIn[1]) / pathLength;
b[2] = (trackXYZOut[2] - trackXYZIn[2]) / pathLength;
TGeoNode *currentnode = gGeoManager->InitTrack(trackXYZIn, b);
if (!currentnode) {
cout<<"E-AliMUONTrackExtrap::GetAbsorberCorrectionParam: start point out of geometry"<<endl;
return kFALSE;
}
Double_t rho = 0.;
Double_t x0 = 0.;
Double_t atomicA = 0.;
Double_t atomicZ = 0.;
Double_t atomicZoverA = 0.;
Double_t localPathLength = 0;
Double_t remainingPathLength = pathLength;
Double_t sigmaELoss = 0.;
Double_t zB = trackXYZIn[2];
Double_t zE, dzB, dzE;
do {
TGeoMaterial *material = currentnode->GetVolume()->GetMedium()->GetMaterial();
rho = material->GetDensity();
x0 = material->GetRadLen();
atomicA = material->GetA();
atomicZ = material->GetZ();
if(material->IsMixture()){
TGeoMixture * mixture = (TGeoMixture*)material;
atomicZoverA = 0.;
Double_t sum = 0.;
for (Int_t iel=0;iel<mixture->GetNelements();iel++){
sum += mixture->GetWmixt()[iel];
atomicZoverA += mixture->GetZmixt()[iel]*mixture->GetWmixt()[iel]/mixture->GetAmixt()[iel];
}
atomicZoverA/=sum;
}
else atomicZoverA = atomicZ/atomicA;
gGeoManager->FindNextBoundary(remainingPathLength);
localPathLength = gGeoManager->GetStep() + 1.e-6;
if (localPathLength >= remainingPathLength) localPathLength = remainingPathLength;
else {
currentnode = gGeoManager->Step();
if (!currentnode) {
cout<<"E-AliMUONTrackExtrap::GetAbsorberCorrectionParam: navigation failed"<<endl;
f0 = f1 = f2 = meanRho = totalELoss = sigmaELoss2 = 0.;
return kFALSE;
}
if (!gGeoManager->IsEntering()) {
gGeoManager->SetStep(0.001);
currentnode = gGeoManager->Step();
if (!gGeoManager->IsEntering() || !currentnode) {
cout<<"E-AliMUONTrackExtrap::GetAbsorberCorrectionParam: navigation failed"<<endl;
f0 = f1 = f2 = meanRho = totalELoss = sigmaELoss2 = 0.;
return kFALSE;
}
localPathLength += 0.001;
}
}
zE = b[2] * localPathLength + zB;
dzB = zB - trackXYZIn[2];
dzE = zE - trackXYZIn[2];
f0 += localPathLength / x0;
f1 += (dzE*dzE - dzB*dzB) / b[2] / b[2] / x0 / 2.;
f2 += (dzE*dzE*dzE - dzB*dzB*dzB) / b[2] / b[2] / b[2] / x0 / 3.;
meanRho += localPathLength * rho;
totalELoss += BetheBloch(pTotal, localPathLength, rho, atomicZ, atomicZoverA);
sigmaELoss += EnergyLossFluctuation(pTotal, localPathLength, rho, atomicZoverA);
zB = zE;
remainingPathLength -= localPathLength;
} while (remainingPathLength > TGeoShape::Tolerance());
meanRho /= pathLength;
sigmaELoss2 = sigmaELoss*sigmaELoss;
return kTRUE;
}
Double_t AliMUONTrackExtrap::GetMCSAngle2(const AliMUONTrackParam& param, Double_t dZ, Double_t x0)
{
Double_t bendingSlope = param.GetBendingSlope();
Double_t nonBendingSlope = param.GetNonBendingSlope();
Double_t inverseTotalMomentum2 = param.GetInverseBendingMomentum() * param.GetInverseBendingMomentum() *
(1.0 + bendingSlope * bendingSlope) /
(1.0 + bendingSlope *bendingSlope + nonBendingSlope * nonBendingSlope);
Double_t pathLength = TMath::Abs(dZ) * TMath::Sqrt(1.0 + bendingSlope*bendingSlope + nonBendingSlope*nonBendingSlope);
Double_t velo = 1.;
Double_t theta02 = 0.0136 / velo * (1 + 0.038 * TMath::Log(pathLength/x0));
return theta02 * theta02 * inverseTotalMomentum2 * pathLength / x0;
}
void AliMUONTrackExtrap::AddMCSEffect(AliMUONTrackParam *param, Double_t dZ, Double_t x0)
{
Double_t bendingSlope = param->GetBendingSlope();
Double_t nonBendingSlope = param->GetNonBendingSlope();
Double_t inverseBendingMomentum = param->GetInverseBendingMomentum();
Double_t inverseTotalMomentum2 = inverseBendingMomentum * inverseBendingMomentum *
(1.0 + bendingSlope * bendingSlope) /
(1.0 + bendingSlope *bendingSlope + nonBendingSlope * nonBendingSlope);
Double_t signedPathLength = dZ * TMath::Sqrt(1.0 + bendingSlope*bendingSlope + nonBendingSlope*nonBendingSlope);
Double_t pathLengthOverX0 = (x0 > 0.) ? TMath::Abs(signedPathLength) / x0 : TMath::Abs(signedPathLength);
Double_t velo = 1.;
Double_t theta02 = 0.0136 / velo * (1 + 0.038 * TMath::Log(pathLengthOverX0));
theta02 *= theta02 * inverseTotalMomentum2 * pathLengthOverX0;
Double_t varCoor = (x0 > 0.) ? signedPathLength * signedPathLength * theta02 / 3. : 0.;
Double_t varSlop = theta02;
Double_t covCorrSlope = (x0 > 0.) ? signedPathLength * theta02 / 2. : 0.;
TMatrixD newParamCov(param->GetCovariances());
newParamCov(0,0) += varCoor; newParamCov(0,1) += covCorrSlope;
newParamCov(1,0) += covCorrSlope; newParamCov(1,1) += varSlop;
newParamCov(2,2) += varCoor; newParamCov(2,3) += covCorrSlope;
newParamCov(3,2) += covCorrSlope; newParamCov(3,3) += varSlop;
if (fgFieldON) {
Double_t dqPxydSlopeX = inverseBendingMomentum * nonBendingSlope / (1. + nonBendingSlope*nonBendingSlope + bendingSlope*bendingSlope);
Double_t dqPxydSlopeY = - inverseBendingMomentum * nonBendingSlope*nonBendingSlope * bendingSlope /
(1. + bendingSlope*bendingSlope) / (1. + nonBendingSlope*nonBendingSlope + bendingSlope*bendingSlope);
newParamCov(4,0) += dqPxydSlopeX * covCorrSlope; newParamCov(0,4) += dqPxydSlopeX * covCorrSlope;
newParamCov(4,1) += dqPxydSlopeX * varSlop; newParamCov(1,4) += dqPxydSlopeX * varSlop;
newParamCov(4,2) += dqPxydSlopeY * covCorrSlope; newParamCov(2,4) += dqPxydSlopeY * covCorrSlope;
newParamCov(4,3) += dqPxydSlopeY * varSlop; newParamCov(3,4) += dqPxydSlopeY * varSlop;
newParamCov(4,4) += (dqPxydSlopeX*dqPxydSlopeX + dqPxydSlopeY*dqPxydSlopeY) * varSlop;
}
param->SetCovariances(newParamCov);
}
void AliMUONTrackExtrap::ExtrapToVertex(AliMUONTrackParam* trackParam,
Double_t xVtx, Double_t yVtx, Double_t zVtx,
Double_t errXVtx, Double_t errYVtx,
Bool_t correctForMCS, Bool_t correctForEnergyLoss)
{
if (trackParam->GetZ() == zVtx) return;
if (trackParam->GetZ() > zVtx) {
cout<<"E-AliMUONTrackExtrap::ExtrapToVertex: Starting Z ("<<trackParam->GetZ()
<<") upstream the vertex (zVtx = "<<zVtx<<")"<<endl;
return;
}
if (zVtx < AliMUONConstants::AbsZBeg() && zVtx > AliMUONConstants::AbsZEnd()) {
cout<<"W-AliMUONTrackExtrap::ExtrapToVertex: Ending Z ("<<zVtx
<<") inside the front absorber ("<<AliMUONConstants::AbsZBeg()<<","<<AliMUONConstants::AbsZEnd()<<")"<<endl;
} else if (zVtx < AliMUONConstants::AbsZEnd() ) {
cout<<"W-AliMUONTrackExtrap::ExtrapToVertex: Ending Z ("<<zVtx
<<") downstream the front absorber (zAbsorberEnd = "<<AliMUONConstants::AbsZEnd()<<")"<<endl;
if (trackParam->CovariancesExist()) ExtrapToZCov(trackParam,zVtx);
else ExtrapToZ(trackParam,zVtx);
return;
}
if (trackParam->GetZ() > AliMUONConstants::AbsZBeg()) {
cout<<"W-AliMUONTrackExtrap::ExtrapToVertex: Starting Z ("<<trackParam->GetZ()
<<") upstream the front absorber (zAbsorberBegin = "<<AliMUONConstants::AbsZBeg()<<")"<<endl;
if (trackParam->CovariancesExist()) ExtrapToZCov(trackParam,zVtx);
else ExtrapToZ(trackParam,zVtx);
return;
} else if (trackParam->GetZ() > AliMUONConstants::AbsZEnd()) {
cout<<"W-AliMUONTrackExtrap::ExtrapToVertex: Starting Z ("<<trackParam->GetZ()
<<") inside the front absorber ("<<AliMUONConstants::AbsZBeg()<<","<<AliMUONConstants::AbsZEnd()<<")"<<endl;
} else {
if (trackParam->CovariancesExist()) ExtrapToZCov(trackParam,AliMUONConstants::AbsZEnd());
else ExtrapToZ(trackParam,AliMUONConstants::AbsZEnd());
}
Double_t trackXYZOut[3];
trackXYZOut[0] = trackParam->GetNonBendingCoor();
trackXYZOut[1] = trackParam->GetBendingCoor();
trackXYZOut[2] = trackParam->GetZ();
Double_t trackXYZIn[3];
if (correctForMCS) {
trackXYZIn[2] = TMath::Min(zVtx, AliMUONConstants::AbsZBeg());
trackXYZIn[0] = trackXYZOut[0] + (xVtx - trackXYZOut[0]) / (zVtx - trackXYZOut[2]) * (trackXYZIn[2] - trackXYZOut[2]);
trackXYZIn[1] = trackXYZOut[1] + (yVtx - trackXYZOut[1]) / (zVtx - trackXYZOut[2]) * (trackXYZIn[2] - trackXYZOut[2]);
} else {
AliMUONTrackParam trackParamIn(*trackParam);
ExtrapToZ(&trackParamIn, TMath::Min(zVtx, AliMUONConstants::AbsZBeg()));
trackXYZIn[0] = trackParamIn.GetNonBendingCoor();
trackXYZIn[1] = trackParamIn.GetBendingCoor();
trackXYZIn[2] = trackParamIn.GetZ();
}
Double_t pTot = trackParam->P();
Double_t pathLength, f0, f1, f2, meanRho, totalELoss, sigmaELoss2;
if (!GetAbsorberCorrectionParam(trackXYZIn,trackXYZOut,pTot,pathLength,f0,f1,f2,meanRho,totalELoss,sigmaELoss2)) {
cout<<"E-AliMUONTrackExtrap::ExtrapToVertex: Unable to take into account the absorber effects"<<endl;
if (trackParam->CovariancesExist()) ExtrapToZCov(trackParam,zVtx);
else ExtrapToZ(trackParam,zVtx);
return;
}
if (correctForMCS) {
if (correctForEnergyLoss) {
CorrectELossEffectInAbsorber(trackParam, 0.5*totalELoss, 0.5*sigmaELoss2);
CorrectMCSEffectInAbsorber(trackParam, xVtx, yVtx, zVtx, errXVtx, errYVtx,
trackXYZIn[2], pathLength, f0, f1, f2);
CorrectELossEffectInAbsorber(trackParam, 0.5*totalELoss, 0.5*sigmaELoss2);
} else {
CorrectMCSEffectInAbsorber(trackParam, xVtx, yVtx, zVtx, errXVtx, errYVtx,
trackXYZIn[2], pathLength, f0, f1, f2);
}
} else {
if (correctForEnergyLoss) {
CorrectELossEffectInAbsorber(trackParam, 0.5*totalELoss, 0.5*sigmaELoss2);
AddMCSEffectInAbsorber(trackParam, -pathLength, f0, f1, f2);
ExtrapToZCov(trackParam, trackXYZIn[2]);
CorrectELossEffectInAbsorber(trackParam, 0.5*totalELoss, 0.5*sigmaELoss2);
ExtrapToZCov(trackParam, zVtx);
} else {
AddMCSEffectInAbsorber(trackParam, -pathLength, f0, f1, f2);
ExtrapToZCov(trackParam, zVtx);
}
}
}
void AliMUONTrackExtrap::ExtrapToVertex(AliMUONTrackParam* trackParam,
Double_t xVtx, Double_t yVtx, Double_t zVtx,
Double_t errXVtx, Double_t errYVtx)
{
ExtrapToVertex(trackParam, xVtx, yVtx, zVtx, errXVtx, errYVtx, kTRUE, kTRUE);
}
void AliMUONTrackExtrap::ExtrapToVertexWithoutELoss(AliMUONTrackParam* trackParam,
Double_t xVtx, Double_t yVtx, Double_t zVtx,
Double_t errXVtx, Double_t errYVtx)
{
ExtrapToVertex(trackParam, xVtx, yVtx, zVtx, errXVtx, errYVtx, kTRUE, kFALSE);
}
void AliMUONTrackExtrap::ExtrapToVertexWithoutBranson(AliMUONTrackParam* trackParam, Double_t zVtx)
{
ExtrapToVertex(trackParam, 0., 0., zVtx, 0., 0., kFALSE, kTRUE);
}
void AliMUONTrackExtrap::ExtrapToVertexUncorrected(AliMUONTrackParam* trackParam, Double_t zVtx)
{
ExtrapToVertex(trackParam, 0., 0., zVtx, 0., 0., kFALSE, kFALSE);
}
Double_t AliMUONTrackExtrap::TotalMomentumEnergyLoss(AliMUONTrackParam* trackParam, Double_t xVtx, Double_t yVtx, Double_t zVtx)
{
if (trackParam->GetZ() == zVtx) return 0.;
if (!gGeoManager) {
cout<<"E-AliMUONTrackExtrap::TotalMomentumEnergyLoss: no TGeo"<<endl;
return 0.;
}
Double_t trackXYZOut[3];
trackXYZOut[0] = trackParam->GetNonBendingCoor();
trackXYZOut[1] = trackParam->GetBendingCoor();
trackXYZOut[2] = trackParam->GetZ();
Double_t trackXYZIn[3];
trackXYZIn[0] = xVtx;
trackXYZIn[1] = yVtx;
trackXYZIn[2] = zVtx;
Double_t pTot = trackParam->P();
Double_t pathLength, f0, f1, f2, meanRho, totalELoss, sigmaELoss2;
GetAbsorberCorrectionParam(trackXYZIn,trackXYZOut,pTot,pathLength,f0,f1,f2,meanRho,totalELoss,sigmaELoss2);
Double_t muMass = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
Double_t e = TMath::Sqrt(pTot*pTot + muMass*muMass);
Double_t eCorr = e + totalELoss;
Double_t pTotCorr = TMath::Sqrt(eCorr*eCorr - muMass*muMass);
return pTotCorr - pTot;
}
Double_t AliMUONTrackExtrap::BetheBloch(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZ, Double_t atomicZoverA)
{
Double_t muMass = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
Double_t i;
if (atomicZ < 13) i = (12. * atomicZ + 7.) * 1.e-9;
else i = (9.76 * atomicZ + 58.8 * TMath::Power(atomicZ,-0.19)) * 1.e-9;
return pathLength * rho * AliExternalTrackParam::BetheBlochGeant(pTotal/muMass, rho, 0.20, 3.00, i, atomicZoverA);
}
Double_t AliMUONTrackExtrap::EnergyLossFluctuation(Double_t pTotal, Double_t pathLength, Double_t rho, Double_t atomicZoverA)
{
Double_t muMass = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();
Double_t k = 0.307075e-3;
Double_t p2=pTotal*pTotal;
Double_t beta2=p2/(p2 + muMass*muMass);
Double_t fwhm = 2. * k * rho * pathLength * atomicZoverA / beta2;
Double_t sigma = fwhm / TMath::Sqrt(8.*log(2.));
return sigma;
}
void AliMUONTrackExtrap::Cov2CovP(const TMatrixD ¶m, TMatrixD &cov)
{
Double_t qPTot = TMath::Sqrt(1. + param(1,0)*param(1,0) + param(3,0)*param(3,0)) /
TMath::Sqrt(1. + param(3,0)*param(3,0)) / param(4,0);
TMatrixD jacob(5,5);
jacob.UnitMatrix();
jacob(4,1) = qPTot * param(1,0) / (1. + param(1,0)*param(1,0) + param(3,0)*param(3,0));
jacob(4,3) = - qPTot * param(1,0) * param(1,0) * param(3,0) /
(1. + param(3,0)*param(3,0)) / (1. + param(1,0)*param(1,0) + param(3,0)*param(3,0));
jacob(4,4) = - qPTot / param(4,0);
TMatrixD tmp(cov,TMatrixD::kMultTranspose,jacob);
cov.Mult(jacob,tmp);
}
void AliMUONTrackExtrap::CovP2Cov(const TMatrixD ¶m, TMatrixD &covP)
{
Double_t qPTot = TMath::Sqrt(1. + param(1,0)*param(1,0) + param(3,0)*param(3,0)) /
TMath::Sqrt(1. + param(3,0)*param(3,0)) / param(4,0);
TMatrixD jacob(5,5);
jacob.UnitMatrix();
jacob(4,1) = param(4,0) * param(1,0) / (1. + param(1,0)*param(1,0) + param(3,0)*param(3,0));
jacob(4,3) = - param(4,0) * param(1,0) * param(1,0) * param(3,0) /
(1. + param(3,0)*param(3,0)) / (1. + param(1,0)*param(1,0) + param(3,0)*param(3,0));
jacob(4,4) = - param(4,0) / qPTot;
TMatrixD tmp(covP,TMatrixD::kMultTranspose,jacob);
covP.Mult(jacob,tmp);
}
void AliMUONTrackExtrap::ExtrapOneStepHelix(Double_t charge, Double_t step, const Double_t *vect, Double_t *vout)
{
Double_t xyz[3], h[4], hxp[3];
Double_t h2xy, hp, rho, tet;
Double_t sint, sintt, tsint, cos1t;
Double_t f1, f2, f3, f4, f5, f6;
const Int_t kix = 0;
const Int_t kiy = 1;
const Int_t kiz = 2;
const Int_t kipx = 3;
const Int_t kipy = 4;
const Int_t kipz = 5;
const Int_t kipp = 6;
const Double_t kec = 2.9979251e-4;
vout[kipp] = vect[kipp];
if (TMath::Abs(charge) < 0.00001) {
for (Int_t i = 0; i < 3; i++) {
vout[i] = vect[i] + step * vect[i+3];
vout[i+3] = vect[i+3];
}
return;
}
xyz[0] = vect[kix] + 0.5 * step * vect[kipx];
xyz[1] = vect[kiy] + 0.5 * step * vect[kipy];
xyz[2] = vect[kiz] + 0.5 * step * vect[kipz];
TGeoGlobalMagField::Instance()->Field(xyz,h);
h2xy = h[0]*h[0] + h[1]*h[1];
h[3] = h[2]*h[2]+ h2xy;
if (h[3] < 1.e-12) {
for (Int_t i = 0; i < 3; i++) {
vout[i] = vect[i] + step * vect[i+3];
vout[i+3] = vect[i+3];
}
return;
}
if (h2xy < 1.e-12*h[3]) {
ExtrapOneStepHelix3(charge*h[2], step, vect, vout);
return;
}
h[3] = TMath::Sqrt(h[3]);
h[0] /= h[3];
h[1] /= h[3];
h[2] /= h[3];
h[3] *= kec;
hxp[0] = h[1]*vect[kipz] - h[2]*vect[kipy];
hxp[1] = h[2]*vect[kipx] - h[0]*vect[kipz];
hxp[2] = h[0]*vect[kipy] - h[1]*vect[kipx];
hp = h[0]*vect[kipx] + h[1]*vect[kipy] + h[2]*vect[kipz];
rho = -charge*h[3]/vect[kipp];
tet = rho * step;
if (TMath::Abs(tet) > 0.15) {
sint = TMath::Sin(tet);
sintt = (sint/tet);
tsint = (tet-sint)/tet;
cos1t = 2.*(TMath::Sin(0.5*tet))*(TMath::Sin(0.5*tet))/tet;
} else {
tsint = tet*tet/36.;
sintt = (1. - tsint);
sint = tet*sintt;
cos1t = 0.5*tet;
}
f1 = step * sintt;
f2 = step * cos1t;
f3 = step * tsint * hp;
f4 = -tet*cos1t;
f5 = sint;
f6 = tet * cos1t * hp;
vout[kix] = vect[kix] + f1*vect[kipx] + f2*hxp[0] + f3*h[0];
vout[kiy] = vect[kiy] + f1*vect[kipy] + f2*hxp[1] + f3*h[1];
vout[kiz] = vect[kiz] + f1*vect[kipz] + f2*hxp[2] + f3*h[2];
vout[kipx] = vect[kipx] + f4*vect[kipx] + f5*hxp[0] + f6*h[0];
vout[kipy] = vect[kipy] + f4*vect[kipy] + f5*hxp[1] + f6*h[1];
vout[kipz] = vect[kipz] + f4*vect[kipz] + f5*hxp[2] + f6*h[2];
return;
}
void AliMUONTrackExtrap::ExtrapOneStepHelix3(Double_t field, Double_t step, const Double_t *vect, Double_t *vout)
{
Double_t hxp[3];
Double_t h4, hp, rho, tet;
Double_t sint, sintt, tsint, cos1t;
Double_t f1, f2, f3, f4, f5, f6;
const Int_t kix = 0;
const Int_t kiy = 1;
const Int_t kiz = 2;
const Int_t kipx = 3;
const Int_t kipy = 4;
const Int_t kipz = 5;
const Int_t kipp = 6;
const Double_t kec = 2.9979251e-4;
vout[kipp] = vect[kipp];
h4 = field * kec;
hxp[0] = - vect[kipy];
hxp[1] = + vect[kipx];
hp = vect[kipz];
rho = -h4/vect[kipp];
tet = rho * step;
if (TMath::Abs(tet) > 0.15) {
sint = TMath::Sin(tet);
sintt = (sint/tet);
tsint = (tet-sint)/tet;
cos1t = 2.* TMath::Sin(0.5*tet) * TMath::Sin(0.5*tet)/tet;
} else {
tsint = tet*tet/36.;
sintt = (1. - tsint);
sint = tet*sintt;
cos1t = 0.5*tet;
}
f1 = step * sintt;
f2 = step * cos1t;
f3 = step * tsint * hp;
f4 = -tet*cos1t;
f5 = sint;
f6 = tet * cos1t * hp;
vout[kix] = vect[kix] + f1*vect[kipx] + f2*hxp[0];
vout[kiy] = vect[kiy] + f1*vect[kipy] + f2*hxp[1];
vout[kiz] = vect[kiz] + f1*vect[kipz] + f3;
vout[kipx] = vect[kipx] + f4*vect[kipx] + f5*hxp[0];
vout[kipy] = vect[kipy] + f4*vect[kipy] + f5*hxp[1];
vout[kipz] = vect[kipz] + f4*vect[kipz] + f6;
return;
}
Bool_t AliMUONTrackExtrap::ExtrapOneStepRungekutta(Double_t charge, Double_t step, const Double_t* vect, Double_t* vout)
{
Double_t h2, h4, f[4];
Double_t xyzt[3] = {FLT_MAX, FLT_MAX, FLT_MAX};
Double_t a, b, c, ph,ph2;
Double_t secxs[4],secys[4],seczs[4],hxp[3];
Double_t g1, g2, g3, g4, g5, g6, ang2, dxt, dyt, dzt;
Double_t est, at, bt, ct, cba;
Double_t f1, f2, f3, f4, rho, tet, hnorm, hp, rho1, sint, cost;
Double_t x;
Double_t y;
Double_t z;
Double_t xt;
Double_t yt;
Double_t zt;
Double_t maxit = 1992;
Double_t maxcut = 11;
const Double_t kdlt = 1e-4;
const Double_t kdlt32 = kdlt/32.;
const Double_t kthird = 1./3.;
const Double_t khalf = 0.5;
const Double_t kec = 2.9979251e-4;
const Double_t kpisqua = 9.86960440109;
const Int_t kix = 0;
const Int_t kiy = 1;
const Int_t kiz = 2;
const Int_t kipx = 3;
const Int_t kipy = 4;
const Int_t kipz = 5;
Int_t iter = 0;
Int_t ncut = 0;
for(Int_t j = 0; j < 7; j++)
vout[j] = vect[j];
Double_t pinv = kec * charge / vect[6];
Double_t tl = 0.;
Double_t h = step;
Double_t rest;
do {
rest = step - tl;
if (TMath::Abs(h) > TMath::Abs(rest)) h = rest;
TGeoGlobalMagField::Instance()->Field(vout,f);
x = vout[0];
y = vout[1];
z = vout[2];
a = vout[3];
b = vout[4];
c = vout[5];
h2 = khalf * h;
h4 = khalf * h2;
ph = pinv * h;
ph2 = khalf * ph;
secxs[0] = (b * f[2] - c * f[1]) * ph2;
secys[0] = (c * f[0] - a * f[2]) * ph2;
seczs[0] = (a * f[1] - b * f[0]) * ph2;
ang2 = (secxs[0]*secxs[0] + secys[0]*secys[0] + seczs[0]*seczs[0]);
if (ang2 > kpisqua) break;
dxt = h2 * a + h4 * secxs[0];
dyt = h2 * b + h4 * secys[0];
dzt = h2 * c + h4 * seczs[0];
xt = x + dxt;
yt = y + dyt;
zt = z + dzt;
est = TMath::Abs(dxt) + TMath::Abs(dyt) + TMath::Abs(dzt);
if (est > h) {
if (ncut++ > maxcut) break;
h *= khalf;
continue;
}
xyzt[0] = xt;
xyzt[1] = yt;
xyzt[2] = zt;
TGeoGlobalMagField::Instance()->Field(xyzt,f);
at = a + secxs[0];
bt = b + secys[0];
ct = c + seczs[0];
secxs[1] = (bt * f[2] - ct * f[1]) * ph2;
secys[1] = (ct * f[0] - at * f[2]) * ph2;
seczs[1] = (at * f[1] - bt * f[0]) * ph2;
at = a + secxs[1];
bt = b + secys[1];
ct = c + seczs[1];
secxs[2] = (bt * f[2] - ct * f[1]) * ph2;
secys[2] = (ct * f[0] - at * f[2]) * ph2;
seczs[2] = (at * f[1] - bt * f[0]) * ph2;
dxt = h * (a + secxs[2]);
dyt = h * (b + secys[2]);
dzt = h * (c + seczs[2]);
xt = x + dxt;
yt = y + dyt;
zt = z + dzt;
at = a + 2.*secxs[2];
bt = b + 2.*secys[2];
ct = c + 2.*seczs[2];
est = TMath::Abs(dxt)+TMath::Abs(dyt)+TMath::Abs(dzt);
if (est > 2.*TMath::Abs(h)) {
if (ncut++ > maxcut) break;
h *= khalf;
continue;
}
xyzt[0] = xt;
xyzt[1] = yt;
xyzt[2] = zt;
TGeoGlobalMagField::Instance()->Field(xyzt,f);
z = z + (c + (seczs[0] + seczs[1] + seczs[2]) * kthird) * h;
y = y + (b + (secys[0] + secys[1] + secys[2]) * kthird) * h;
x = x + (a + (secxs[0] + secxs[1] + secxs[2]) * kthird) * h;
secxs[3] = (bt*f[2] - ct*f[1])* ph2;
secys[3] = (ct*f[0] - at*f[2])* ph2;
seczs[3] = (at*f[1] - bt*f[0])* ph2;
a = a+(secxs[0]+secxs[3]+2. * (secxs[1]+secxs[2])) * kthird;
b = b+(secys[0]+secys[3]+2. * (secys[1]+secys[2])) * kthird;
c = c+(seczs[0]+seczs[3]+2. * (seczs[1]+seczs[2])) * kthird;
est = TMath::Abs(secxs[0]+secxs[3] - (secxs[1]+secxs[2]))
+ TMath::Abs(secys[0]+secys[3] - (secys[1]+secys[2]))
+ TMath::Abs(seczs[0]+seczs[3] - (seczs[1]+seczs[2]));
if (est > kdlt && TMath::Abs(h) > 1.e-4) {
if (ncut++ > maxcut) break;
h *= khalf;
continue;
}
ncut = 0;
if (iter++ > maxit) break;
tl += h;
if (est < kdlt32)
h *= 2.;
cba = 1./ TMath::Sqrt(a*a + b*b + c*c);
vout[0] = x;
vout[1] = y;
vout[2] = z;
vout[3] = cba*a;
vout[4] = cba*b;
vout[5] = cba*c;
rest = step - tl;
if (step < 0.) rest = -rest;
if (rest < 1.e-5*TMath::Abs(step)) return kTRUE;
} while(1);
cout<<"W-AliMUONTrackExtrap::ExtrapOneStepRungekutta: Ruge-Kutta failed: switch to helix"<<endl;
f1 = f[0];
f2 = f[1];
f3 = f[2];
f4 = TMath::Sqrt(f1*f1+f2*f2+f3*f3);
if (f4 < 1.e-10) {
cout<<"E-AliMUONTrackExtrap::ExtrapOneStepRungekutta: magnetic field at (";
cout<<xyzt[0]<<", "<<xyzt[1]<<", "<<xyzt[2]<<") = "<<f4<<": giving up"<<endl;
return kFALSE;
}
rho = -f4*pinv;
tet = rho * step;
hnorm = 1./f4;
f1 = f1*hnorm;
f2 = f2*hnorm;
f3 = f3*hnorm;
hxp[0] = f2*vect[kipz] - f3*vect[kipy];
hxp[1] = f3*vect[kipx] - f1*vect[kipz];
hxp[2] = f1*vect[kipy] - f2*vect[kipx];
hp = f1*vect[kipx] + f2*vect[kipy] + f3*vect[kipz];
rho1 = 1./rho;
sint = TMath::Sin(tet);
cost = 2.*TMath::Sin(khalf*tet)*TMath::Sin(khalf*tet);
g1 = sint*rho1;
g2 = cost*rho1;
g3 = (tet-sint) * hp*rho1;
g4 = -cost;
g5 = sint;
g6 = cost * hp;
vout[kix] = vect[kix] + g1*vect[kipx] + g2*hxp[0] + g3*f1;
vout[kiy] = vect[kiy] + g1*vect[kipy] + g2*hxp[1] + g3*f2;
vout[kiz] = vect[kiz] + g1*vect[kipz] + g2*hxp[2] + g3*f3;
vout[kipx] = vect[kipx] + g4*vect[kipx] + g5*hxp[0] + g6*f1;
vout[kipy] = vect[kipy] + g4*vect[kipy] + g5*hxp[1] + g6*f2;
vout[kipz] = vect[kipz] + g4*vect[kipz] + g5*hxp[2] + g6*f3;
return kTRUE;
}
AliMUONTrackExtrap.cxx:10 AliMUONTrackExtrap.cxx:11 AliMUONTrackExtrap.cxx:12 AliMUONTrackExtrap.cxx:13 AliMUONTrackExtrap.cxx:14 AliMUONTrackExtrap.cxx:15 AliMUONTrackExtrap.cxx:16 AliMUONTrackExtrap.cxx:17 AliMUONTrackExtrap.cxx:18 AliMUONTrackExtrap.cxx:19 AliMUONTrackExtrap.cxx:20 AliMUONTrackExtrap.cxx:21 AliMUONTrackExtrap.cxx:22 AliMUONTrackExtrap.cxx:23 AliMUONTrackExtrap.cxx:24 AliMUONTrackExtrap.cxx:25 AliMUONTrackExtrap.cxx:26 AliMUONTrackExtrap.cxx:27 AliMUONTrackExtrap.cxx:28 AliMUONTrackExtrap.cxx:29 AliMUONTrackExtrap.cxx:30 AliMUONTrackExtrap.cxx:31 AliMUONTrackExtrap.cxx:32 AliMUONTrackExtrap.cxx:33 AliMUONTrackExtrap.cxx:34 AliMUONTrackExtrap.cxx:35 AliMUONTrackExtrap.cxx:36 AliMUONTrackExtrap.cxx:37 AliMUONTrackExtrap.cxx:38 AliMUONTrackExtrap.cxx:39 AliMUONTrackExtrap.cxx:40 AliMUONTrackExtrap.cxx:41 AliMUONTrackExtrap.cxx:42 AliMUONTrackExtrap.cxx:43 AliMUONTrackExtrap.cxx:44 AliMUONTrackExtrap.cxx:45 AliMUONTrackExtrap.cxx:46 AliMUONTrackExtrap.cxx:47 AliMUONTrackExtrap.cxx:48 AliMUONTrackExtrap.cxx:49 AliMUONTrackExtrap.cxx:50 AliMUONTrackExtrap.cxx:51 AliMUONTrackExtrap.cxx:52 AliMUONTrackExtrap.cxx:53 AliMUONTrackExtrap.cxx:54 AliMUONTrackExtrap.cxx:55 AliMUONTrackExtrap.cxx:56 AliMUONTrackExtrap.cxx:57 AliMUONTrackExtrap.cxx:58 AliMUONTrackExtrap.cxx:59 AliMUONTrackExtrap.cxx:60 AliMUONTrackExtrap.cxx:61 AliMUONTrackExtrap.cxx:62 AliMUONTrackExtrap.cxx:63 AliMUONTrackExtrap.cxx:64 AliMUONTrackExtrap.cxx:65 AliMUONTrackExtrap.cxx:66 AliMUONTrackExtrap.cxx:67 AliMUONTrackExtrap.cxx:68 AliMUONTrackExtrap.cxx:69 AliMUONTrackExtrap.cxx:70 AliMUONTrackExtrap.cxx:71 AliMUONTrackExtrap.cxx:72 AliMUONTrackExtrap.cxx:73 AliMUONTrackExtrap.cxx:74 AliMUONTrackExtrap.cxx:75 AliMUONTrackExtrap.cxx:76 AliMUONTrackExtrap.cxx:77 AliMUONTrackExtrap.cxx:78 AliMUONTrackExtrap.cxx:79 AliMUONTrackExtrap.cxx:80 AliMUONTrackExtrap.cxx:81 AliMUONTrackExtrap.cxx:82 AliMUONTrackExtrap.cxx:83 AliMUONTrackExtrap.cxx:84 AliMUONTrackExtrap.cxx:85 AliMUONTrackExtrap.cxx:86 AliMUONTrackExtrap.cxx:87 AliMUONTrackExtrap.cxx:88 AliMUONTrackExtrap.cxx:89 AliMUONTrackExtrap.cxx:90 AliMUONTrackExtrap.cxx:91 AliMUONTrackExtrap.cxx:92 AliMUONTrackExtrap.cxx:93 AliMUONTrackExtrap.cxx:94 AliMUONTrackExtrap.cxx:95 AliMUONTrackExtrap.cxx:96 AliMUONTrackExtrap.cxx:97 AliMUONTrackExtrap.cxx:98 AliMUONTrackExtrap.cxx:99 AliMUONTrackExtrap.cxx:100 AliMUONTrackExtrap.cxx:101 AliMUONTrackExtrap.cxx:102 AliMUONTrackExtrap.cxx:103 AliMUONTrackExtrap.cxx:104 AliMUONTrackExtrap.cxx:105 AliMUONTrackExtrap.cxx:106 AliMUONTrackExtrap.cxx:107 AliMUONTrackExtrap.cxx:108 AliMUONTrackExtrap.cxx:109 AliMUONTrackExtrap.cxx:110 AliMUONTrackExtrap.cxx:111 AliMUONTrackExtrap.cxx:112 AliMUONTrackExtrap.cxx:113 AliMUONTrackExtrap.cxx:114 AliMUONTrackExtrap.cxx:115 AliMUONTrackExtrap.cxx:116 AliMUONTrackExtrap.cxx:117 AliMUONTrackExtrap.cxx:118 AliMUONTrackExtrap.cxx:119 AliMUONTrackExtrap.cxx:120 AliMUONTrackExtrap.cxx:121 AliMUONTrackExtrap.cxx:122 AliMUONTrackExtrap.cxx:123 AliMUONTrackExtrap.cxx:124 AliMUONTrackExtrap.cxx:125 AliMUONTrackExtrap.cxx:126 AliMUONTrackExtrap.cxx:127 AliMUONTrackExtrap.cxx:128 AliMUONTrackExtrap.cxx:129 AliMUONTrackExtrap.cxx:130 AliMUONTrackExtrap.cxx:131 AliMUONTrackExtrap.cxx:132 AliMUONTrackExtrap.cxx:133 AliMUONTrackExtrap.cxx:134 AliMUONTrackExtrap.cxx:135 AliMUONTrackExtrap.cxx:136 AliMUONTrackExtrap.cxx:137 AliMUONTrackExtrap.cxx:138 AliMUONTrackExtrap.cxx:139 AliMUONTrackExtrap.cxx:140 AliMUONTrackExtrap.cxx:141 AliMUONTrackExtrap.cxx:142 AliMUONTrackExtrap.cxx:143 AliMUONTrackExtrap.cxx:144 AliMUONTrackExtrap.cxx:145 AliMUONTrackExtrap.cxx:146 AliMUONTrackExtrap.cxx:147 AliMUONTrackExtrap.cxx:148 AliMUONTrackExtrap.cxx:149 AliMUONTrackExtrap.cxx:150 AliMUONTrackExtrap.cxx:151 AliMUONTrackExtrap.cxx:152 AliMUONTrackExtrap.cxx:153 AliMUONTrackExtrap.cxx:154 AliMUONTrackExtrap.cxx:155 AliMUONTrackExtrap.cxx:156 AliMUONTrackExtrap.cxx:157 AliMUONTrackExtrap.cxx:158 AliMUONTrackExtrap.cxx:159 AliMUONTrackExtrap.cxx:160 AliMUONTrackExtrap.cxx:161 AliMUONTrackExtrap.cxx:162 AliMUONTrackExtrap.cxx:163 AliMUONTrackExtrap.cxx:164 AliMUONTrackExtrap.cxx:165 AliMUONTrackExtrap.cxx:166 AliMUONTrackExtrap.cxx:167 AliMUONTrackExtrap.cxx:168 AliMUONTrackExtrap.cxx:169 AliMUONTrackExtrap.cxx:170 AliMUONTrackExtrap.cxx:171 AliMUONTrackExtrap.cxx:172 AliMUONTrackExtrap.cxx:173 AliMUONTrackExtrap.cxx:174 AliMUONTrackExtrap.cxx:175 AliMUONTrackExtrap.cxx:176 AliMUONTrackExtrap.cxx:177 AliMUONTrackExtrap.cxx:178 AliMUONTrackExtrap.cxx:179 AliMUONTrackExtrap.cxx:180 AliMUONTrackExtrap.cxx:181 AliMUONTrackExtrap.cxx:182 AliMUONTrackExtrap.cxx:183 AliMUONTrackExtrap.cxx:184 AliMUONTrackExtrap.cxx:185 AliMUONTrackExtrap.cxx:186 AliMUONTrackExtrap.cxx:187 AliMUONTrackExtrap.cxx:188 AliMUONTrackExtrap.cxx:189 AliMUONTrackExtrap.cxx:190 AliMUONTrackExtrap.cxx:191 AliMUONTrackExtrap.cxx:192 AliMUONTrackExtrap.cxx:193 AliMUONTrackExtrap.cxx:194 AliMUONTrackExtrap.cxx:195 AliMUONTrackExtrap.cxx:196 AliMUONTrackExtrap.cxx:197 AliMUONTrackExtrap.cxx:198 AliMUONTrackExtrap.cxx:199 AliMUONTrackExtrap.cxx:200 AliMUONTrackExtrap.cxx:201 AliMUONTrackExtrap.cxx:202 AliMUONTrackExtrap.cxx:203 AliMUONTrackExtrap.cxx:204 AliMUONTrackExtrap.cxx:205 AliMUONTrackExtrap.cxx:206 AliMUONTrackExtrap.cxx:207 AliMUONTrackExtrap.cxx:208 AliMUONTrackExtrap.cxx:209 AliMUONTrackExtrap.cxx:210 AliMUONTrackExtrap.cxx:211 AliMUONTrackExtrap.cxx:212 AliMUONTrackExtrap.cxx:213 AliMUONTrackExtrap.cxx:214 AliMUONTrackExtrap.cxx:215 AliMUONTrackExtrap.cxx:216 AliMUONTrackExtrap.cxx:217 AliMUONTrackExtrap.cxx:218 AliMUONTrackExtrap.cxx:219 AliMUONTrackExtrap.cxx:220 AliMUONTrackExtrap.cxx:221 AliMUONTrackExtrap.cxx:222 AliMUONTrackExtrap.cxx:223 AliMUONTrackExtrap.cxx:224 AliMUONTrackExtrap.cxx:225 AliMUONTrackExtrap.cxx:226 AliMUONTrackExtrap.cxx:227 AliMUONTrackExtrap.cxx:228 AliMUONTrackExtrap.cxx:229 AliMUONTrackExtrap.cxx:230 AliMUONTrackExtrap.cxx:231 AliMUONTrackExtrap.cxx:232 AliMUONTrackExtrap.cxx:233 AliMUONTrackExtrap.cxx:234 AliMUONTrackExtrap.cxx:235 AliMUONTrackExtrap.cxx:236 AliMUONTrackExtrap.cxx:237 AliMUONTrackExtrap.cxx:238 AliMUONTrackExtrap.cxx:239 AliMUONTrackExtrap.cxx:240 AliMUONTrackExtrap.cxx:241 AliMUONTrackExtrap.cxx:242 AliMUONTrackExtrap.cxx:243 AliMUONTrackExtrap.cxx:244 AliMUONTrackExtrap.cxx:245 AliMUONTrackExtrap.cxx:246 AliMUONTrackExtrap.cxx:247 AliMUONTrackExtrap.cxx:248 AliMUONTrackExtrap.cxx:249 AliMUONTrackExtrap.cxx:250 AliMUONTrackExtrap.cxx:251 AliMUONTrackExtrap.cxx:252 AliMUONTrackExtrap.cxx:253 AliMUONTrackExtrap.cxx:254 AliMUONTrackExtrap.cxx:255 AliMUONTrackExtrap.cxx:256 AliMUONTrackExtrap.cxx:257 AliMUONTrackExtrap.cxx:258 AliMUONTrackExtrap.cxx:259 AliMUONTrackExtrap.cxx:260 AliMUONTrackExtrap.cxx:261 AliMUONTrackExtrap.cxx:262 AliMUONTrackExtrap.cxx:263 AliMUONTrackExtrap.cxx:264 AliMUONTrackExtrap.cxx:265 AliMUONTrackExtrap.cxx:266 AliMUONTrackExtrap.cxx:267 AliMUONTrackExtrap.cxx:268 AliMUONTrackExtrap.cxx:269 AliMUONTrackExtrap.cxx:270 AliMUONTrackExtrap.cxx:271 AliMUONTrackExtrap.cxx:272 AliMUONTrackExtrap.cxx:273 AliMUONTrackExtrap.cxx:274 AliMUONTrackExtrap.cxx:275 AliMUONTrackExtrap.cxx:276 AliMUONTrackExtrap.cxx:277 AliMUONTrackExtrap.cxx:278 AliMUONTrackExtrap.cxx:279 AliMUONTrackExtrap.cxx:280 AliMUONTrackExtrap.cxx:281 AliMUONTrackExtrap.cxx:282 AliMUONTrackExtrap.cxx:283 AliMUONTrackExtrap.cxx:284 AliMUONTrackExtrap.cxx:285 AliMUONTrackExtrap.cxx:286 AliMUONTrackExtrap.cxx:287 AliMUONTrackExtrap.cxx:288 AliMUONTrackExtrap.cxx:289 AliMUONTrackExtrap.cxx:290 AliMUONTrackExtrap.cxx:291 AliMUONTrackExtrap.cxx:292 AliMUONTrackExtrap.cxx:293 AliMUONTrackExtrap.cxx:294 AliMUONTrackExtrap.cxx:295 AliMUONTrackExtrap.cxx:296 AliMUONTrackExtrap.cxx:297 AliMUONTrackExtrap.cxx:298 AliMUONTrackExtrap.cxx:299 AliMUONTrackExtrap.cxx:300 AliMUONTrackExtrap.cxx:301 AliMUONTrackExtrap.cxx:302 AliMUONTrackExtrap.cxx:303 AliMUONTrackExtrap.cxx:304 AliMUONTrackExtrap.cxx:305 AliMUONTrackExtrap.cxx:306 AliMUONTrackExtrap.cxx:307 AliMUONTrackExtrap.cxx:308 AliMUONTrackExtrap.cxx:309 AliMUONTrackExtrap.cxx:310 AliMUONTrackExtrap.cxx:311 AliMUONTrackExtrap.cxx:312 AliMUONTrackExtrap.cxx:313 AliMUONTrackExtrap.cxx:314 AliMUONTrackExtrap.cxx:315 AliMUONTrackExtrap.cxx:316 AliMUONTrackExtrap.cxx:317 AliMUONTrackExtrap.cxx:318 AliMUONTrackExtrap.cxx:319 AliMUONTrackExtrap.cxx:320 AliMUONTrackExtrap.cxx:321 AliMUONTrackExtrap.cxx:322 AliMUONTrackExtrap.cxx:323 AliMUONTrackExtrap.cxx:324 AliMUONTrackExtrap.cxx:325 AliMUONTrackExtrap.cxx:326 AliMUONTrackExtrap.cxx:327 AliMUONTrackExtrap.cxx:328 AliMUONTrackExtrap.cxx:329 AliMUONTrackExtrap.cxx:330 AliMUONTrackExtrap.cxx:331 AliMUONTrackExtrap.cxx:332 AliMUONTrackExtrap.cxx:333 AliMUONTrackExtrap.cxx:334 AliMUONTrackExtrap.cxx:335 AliMUONTrackExtrap.cxx:336 AliMUONTrackExtrap.cxx:337 AliMUONTrackExtrap.cxx:338 AliMUONTrackExtrap.cxx:339 AliMUONTrackExtrap.cxx:340 AliMUONTrackExtrap.cxx:341 AliMUONTrackExtrap.cxx:342 AliMUONTrackExtrap.cxx:343 AliMUONTrackExtrap.cxx:344 AliMUONTrackExtrap.cxx:345 AliMUONTrackExtrap.cxx:346 AliMUONTrackExtrap.cxx:347 AliMUONTrackExtrap.cxx:348 AliMUONTrackExtrap.cxx:349 AliMUONTrackExtrap.cxx:350 AliMUONTrackExtrap.cxx:351 AliMUONTrackExtrap.cxx:352 AliMUONTrackExtrap.cxx:353 AliMUONTrackExtrap.cxx:354 AliMUONTrackExtrap.cxx:355 AliMUONTrackExtrap.cxx:356 AliMUONTrackExtrap.cxx:357 AliMUONTrackExtrap.cxx:358 AliMUONTrackExtrap.cxx:359 AliMUONTrackExtrap.cxx:360 AliMUONTrackExtrap.cxx:361 AliMUONTrackExtrap.cxx:362 AliMUONTrackExtrap.cxx:363 AliMUONTrackExtrap.cxx:364 AliMUONTrackExtrap.cxx:365 AliMUONTrackExtrap.cxx:366 AliMUONTrackExtrap.cxx:367 AliMUONTrackExtrap.cxx:368 AliMUONTrackExtrap.cxx:369 AliMUONTrackExtrap.cxx:370 AliMUONTrackExtrap.cxx:371 AliMUONTrackExtrap.cxx:372 AliMUONTrackExtrap.cxx:373 AliMUONTrackExtrap.cxx:374 AliMUONTrackExtrap.cxx:375 AliMUONTrackExtrap.cxx:376 AliMUONTrackExtrap.cxx:377 AliMUONTrackExtrap.cxx:378 AliMUONTrackExtrap.cxx:379 AliMUONTrackExtrap.cxx:380 AliMUONTrackExtrap.cxx:381 AliMUONTrackExtrap.cxx:382 AliMUONTrackExtrap.cxx:383 AliMUONTrackExtrap.cxx:384 AliMUONTrackExtrap.cxx:385 AliMUONTrackExtrap.cxx:386 AliMUONTrackExtrap.cxx:387 AliMUONTrackExtrap.cxx:388 AliMUONTrackExtrap.cxx:389 AliMUONTrackExtrap.cxx:390 AliMUONTrackExtrap.cxx:391 AliMUONTrackExtrap.cxx:392 AliMUONTrackExtrap.cxx:393 AliMUONTrackExtrap.cxx:394 AliMUONTrackExtrap.cxx:395 AliMUONTrackExtrap.cxx:396 AliMUONTrackExtrap.cxx:397 AliMUONTrackExtrap.cxx:398 AliMUONTrackExtrap.cxx:399 AliMUONTrackExtrap.cxx:400 AliMUONTrackExtrap.cxx:401 AliMUONTrackExtrap.cxx:402 AliMUONTrackExtrap.cxx:403 AliMUONTrackExtrap.cxx:404 AliMUONTrackExtrap.cxx:405 AliMUONTrackExtrap.cxx:406 AliMUONTrackExtrap.cxx:407 AliMUONTrackExtrap.cxx:408 AliMUONTrackExtrap.cxx:409 AliMUONTrackExtrap.cxx:410 AliMUONTrackExtrap.cxx:411 AliMUONTrackExtrap.cxx:412 AliMUONTrackExtrap.cxx:413 AliMUONTrackExtrap.cxx:414 AliMUONTrackExtrap.cxx:415 AliMUONTrackExtrap.cxx:416 AliMUONTrackExtrap.cxx:417 AliMUONTrackExtrap.cxx:418 AliMUONTrackExtrap.cxx:419 AliMUONTrackExtrap.cxx:420 AliMUONTrackExtrap.cxx:421 AliMUONTrackExtrap.cxx:422 AliMUONTrackExtrap.cxx:423 AliMUONTrackExtrap.cxx:424 AliMUONTrackExtrap.cxx:425 AliMUONTrackExtrap.cxx:426 AliMUONTrackExtrap.cxx:427 AliMUONTrackExtrap.cxx:428 AliMUONTrackExtrap.cxx:429 AliMUONTrackExtrap.cxx:430 AliMUONTrackExtrap.cxx:431 AliMUONTrackExtrap.cxx:432 AliMUONTrackExtrap.cxx:433 AliMUONTrackExtrap.cxx:434 AliMUONTrackExtrap.cxx:435 AliMUONTrackExtrap.cxx:436 AliMUONTrackExtrap.cxx:437 AliMUONTrackExtrap.cxx:438 AliMUONTrackExtrap.cxx:439 AliMUONTrackExtrap.cxx:440 AliMUONTrackExtrap.cxx:441 AliMUONTrackExtrap.cxx:442 AliMUONTrackExtrap.cxx:443 AliMUONTrackExtrap.cxx:444 AliMUONTrackExtrap.cxx:445 AliMUONTrackExtrap.cxx:446 AliMUONTrackExtrap.cxx:447 AliMUONTrackExtrap.cxx:448 AliMUONTrackExtrap.cxx:449 AliMUONTrackExtrap.cxx:450 AliMUONTrackExtrap.cxx:451 AliMUONTrackExtrap.cxx:452 AliMUONTrackExtrap.cxx:453 AliMUONTrackExtrap.cxx:454 AliMUONTrackExtrap.cxx:455 AliMUONTrackExtrap.cxx:456 AliMUONTrackExtrap.cxx:457 AliMUONTrackExtrap.cxx:458 AliMUONTrackExtrap.cxx:459 AliMUONTrackExtrap.cxx:460 AliMUONTrackExtrap.cxx:461 AliMUONTrackExtrap.cxx:462 AliMUONTrackExtrap.cxx:463 AliMUONTrackExtrap.cxx:464 AliMUONTrackExtrap.cxx:465 AliMUONTrackExtrap.cxx:466 AliMUONTrackExtrap.cxx:467 AliMUONTrackExtrap.cxx:468 AliMUONTrackExtrap.cxx:469 AliMUONTrackExtrap.cxx:470 AliMUONTrackExtrap.cxx:471 AliMUONTrackExtrap.cxx:472 AliMUONTrackExtrap.cxx:473 AliMUONTrackExtrap.cxx:474 AliMUONTrackExtrap.cxx:475 AliMUONTrackExtrap.cxx:476 AliMUONTrackExtrap.cxx:477 AliMUONTrackExtrap.cxx:478 AliMUONTrackExtrap.cxx:479 AliMUONTrackExtrap.cxx:480 AliMUONTrackExtrap.cxx:481 AliMUONTrackExtrap.cxx:482 AliMUONTrackExtrap.cxx:483 AliMUONTrackExtrap.cxx:484 AliMUONTrackExtrap.cxx:485 AliMUONTrackExtrap.cxx:486 AliMUONTrackExtrap.cxx:487 AliMUONTrackExtrap.cxx:488 AliMUONTrackExtrap.cxx:489 AliMUONTrackExtrap.cxx:490 AliMUONTrackExtrap.cxx:491 AliMUONTrackExtrap.cxx:492 AliMUONTrackExtrap.cxx:493 AliMUONTrackExtrap.cxx:494 AliMUONTrackExtrap.cxx:495 AliMUONTrackExtrap.cxx:496 AliMUONTrackExtrap.cxx:497 AliMUONTrackExtrap.cxx:498 AliMUONTrackExtrap.cxx:499 AliMUONTrackExtrap.cxx:500 AliMUONTrackExtrap.cxx:501 AliMUONTrackExtrap.cxx:502 AliMUONTrackExtrap.cxx:503 AliMUONTrackExtrap.cxx:504 AliMUONTrackExtrap.cxx:505 AliMUONTrackExtrap.cxx:506 AliMUONTrackExtrap.cxx:507 AliMUONTrackExtrap.cxx:508 AliMUONTrackExtrap.cxx:509 AliMUONTrackExtrap.cxx:510 AliMUONTrackExtrap.cxx:511 AliMUONTrackExtrap.cxx:512 AliMUONTrackExtrap.cxx:513 AliMUONTrackExtrap.cxx:514 AliMUONTrackExtrap.cxx:515 AliMUONTrackExtrap.cxx:516 AliMUONTrackExtrap.cxx:517 AliMUONTrackExtrap.cxx:518 AliMUONTrackExtrap.cxx:519 AliMUONTrackExtrap.cxx:520 AliMUONTrackExtrap.cxx:521 AliMUONTrackExtrap.cxx:522 AliMUONTrackExtrap.cxx:523 AliMUONTrackExtrap.cxx:524 AliMUONTrackExtrap.cxx:525 AliMUONTrackExtrap.cxx:526 AliMUONTrackExtrap.cxx:527 AliMUONTrackExtrap.cxx:528 AliMUONTrackExtrap.cxx:529 AliMUONTrackExtrap.cxx:530 AliMUONTrackExtrap.cxx:531 AliMUONTrackExtrap.cxx:532 AliMUONTrackExtrap.cxx:533 AliMUONTrackExtrap.cxx:534 AliMUONTrackExtrap.cxx:535 AliMUONTrackExtrap.cxx:536 AliMUONTrackExtrap.cxx:537 AliMUONTrackExtrap.cxx:538 AliMUONTrackExtrap.cxx:539 AliMUONTrackExtrap.cxx:540 AliMUONTrackExtrap.cxx:541 AliMUONTrackExtrap.cxx:542 AliMUONTrackExtrap.cxx:543 AliMUONTrackExtrap.cxx:544 AliMUONTrackExtrap.cxx:545 AliMUONTrackExtrap.cxx:546 AliMUONTrackExtrap.cxx:547 AliMUONTrackExtrap.cxx:548 AliMUONTrackExtrap.cxx:549 AliMUONTrackExtrap.cxx:550 AliMUONTrackExtrap.cxx:551 AliMUONTrackExtrap.cxx:552 AliMUONTrackExtrap.cxx:553 AliMUONTrackExtrap.cxx:554 AliMUONTrackExtrap.cxx:555 AliMUONTrackExtrap.cxx:556 AliMUONTrackExtrap.cxx:557 AliMUONTrackExtrap.cxx:558 AliMUONTrackExtrap.cxx:559 AliMUONTrackExtrap.cxx:560 AliMUONTrackExtrap.cxx:561 AliMUONTrackExtrap.cxx:562 AliMUONTrackExtrap.cxx:563 AliMUONTrackExtrap.cxx:564 AliMUONTrackExtrap.cxx:565 AliMUONTrackExtrap.cxx:566 AliMUONTrackExtrap.cxx:567 AliMUONTrackExtrap.cxx:568 AliMUONTrackExtrap.cxx:569 AliMUONTrackExtrap.cxx:570 AliMUONTrackExtrap.cxx:571 AliMUONTrackExtrap.cxx:572 AliMUONTrackExtrap.cxx:573 AliMUONTrackExtrap.cxx:574 AliMUONTrackExtrap.cxx:575 AliMUONTrackExtrap.cxx:576 AliMUONTrackExtrap.cxx:577 AliMUONTrackExtrap.cxx:578 AliMUONTrackExtrap.cxx:579 AliMUONTrackExtrap.cxx:580 AliMUONTrackExtrap.cxx:581 AliMUONTrackExtrap.cxx:582 AliMUONTrackExtrap.cxx:583 AliMUONTrackExtrap.cxx:584 AliMUONTrackExtrap.cxx:585 AliMUONTrackExtrap.cxx:586 AliMUONTrackExtrap.cxx:587 AliMUONTrackExtrap.cxx:588 AliMUONTrackExtrap.cxx:589 AliMUONTrackExtrap.cxx:590 AliMUONTrackExtrap.cxx:591 AliMUONTrackExtrap.cxx:592 AliMUONTrackExtrap.cxx:593 AliMUONTrackExtrap.cxx:594 AliMUONTrackExtrap.cxx:595 AliMUONTrackExtrap.cxx:596 AliMUONTrackExtrap.cxx:597 AliMUONTrackExtrap.cxx:598 AliMUONTrackExtrap.cxx:599 AliMUONTrackExtrap.cxx:600 AliMUONTrackExtrap.cxx:601 AliMUONTrackExtrap.cxx:602 AliMUONTrackExtrap.cxx:603 AliMUONTrackExtrap.cxx:604 AliMUONTrackExtrap.cxx:605 AliMUONTrackExtrap.cxx:606 AliMUONTrackExtrap.cxx:607 AliMUONTrackExtrap.cxx:608 AliMUONTrackExtrap.cxx:609 AliMUONTrackExtrap.cxx:610 AliMUONTrackExtrap.cxx:611 AliMUONTrackExtrap.cxx:612 AliMUONTrackExtrap.cxx:613 AliMUONTrackExtrap.cxx:614 AliMUONTrackExtrap.cxx:615 AliMUONTrackExtrap.cxx:616 AliMUONTrackExtrap.cxx:617 AliMUONTrackExtrap.cxx:618 AliMUONTrackExtrap.cxx:619 AliMUONTrackExtrap.cxx:620 AliMUONTrackExtrap.cxx:621 AliMUONTrackExtrap.cxx:622 AliMUONTrackExtrap.cxx:623 AliMUONTrackExtrap.cxx:624 AliMUONTrackExtrap.cxx:625 AliMUONTrackExtrap.cxx:626 AliMUONTrackExtrap.cxx:627 AliMUONTrackExtrap.cxx:628 AliMUONTrackExtrap.cxx:629 AliMUONTrackExtrap.cxx:630 AliMUONTrackExtrap.cxx:631 AliMUONTrackExtrap.cxx:632 AliMUONTrackExtrap.cxx:633 AliMUONTrackExtrap.cxx:634 AliMUONTrackExtrap.cxx:635 AliMUONTrackExtrap.cxx:636 AliMUONTrackExtrap.cxx:637 AliMUONTrackExtrap.cxx:638 AliMUONTrackExtrap.cxx:639 AliMUONTrackExtrap.cxx:640 AliMUONTrackExtrap.cxx:641 AliMUONTrackExtrap.cxx:642 AliMUONTrackExtrap.cxx:643 AliMUONTrackExtrap.cxx:644 AliMUONTrackExtrap.cxx:645 AliMUONTrackExtrap.cxx:646 AliMUONTrackExtrap.cxx:647 AliMUONTrackExtrap.cxx:648 AliMUONTrackExtrap.cxx:649 AliMUONTrackExtrap.cxx:650 AliMUONTrackExtrap.cxx:651 AliMUONTrackExtrap.cxx:652 AliMUONTrackExtrap.cxx:653 AliMUONTrackExtrap.cxx:654 AliMUONTrackExtrap.cxx:655 AliMUONTrackExtrap.cxx:656 AliMUONTrackExtrap.cxx:657 AliMUONTrackExtrap.cxx:658 AliMUONTrackExtrap.cxx:659 AliMUONTrackExtrap.cxx:660 AliMUONTrackExtrap.cxx:661 AliMUONTrackExtrap.cxx:662 AliMUONTrackExtrap.cxx:663 AliMUONTrackExtrap.cxx:664 AliMUONTrackExtrap.cxx:665 AliMUONTrackExtrap.cxx:666 AliMUONTrackExtrap.cxx:667 AliMUONTrackExtrap.cxx:668 AliMUONTrackExtrap.cxx:669 AliMUONTrackExtrap.cxx:670 AliMUONTrackExtrap.cxx:671 AliMUONTrackExtrap.cxx:672 AliMUONTrackExtrap.cxx:673 AliMUONTrackExtrap.cxx:674 AliMUONTrackExtrap.cxx:675 AliMUONTrackExtrap.cxx:676 AliMUONTrackExtrap.cxx:677 AliMUONTrackExtrap.cxx:678 AliMUONTrackExtrap.cxx:679 AliMUONTrackExtrap.cxx:680 AliMUONTrackExtrap.cxx:681 AliMUONTrackExtrap.cxx:682 AliMUONTrackExtrap.cxx:683 AliMUONTrackExtrap.cxx:684 AliMUONTrackExtrap.cxx:685 AliMUONTrackExtrap.cxx:686 AliMUONTrackExtrap.cxx:687 AliMUONTrackExtrap.cxx:688 AliMUONTrackExtrap.cxx:689 AliMUONTrackExtrap.cxx:690 AliMUONTrackExtrap.cxx:691 AliMUONTrackExtrap.cxx:692 AliMUONTrackExtrap.cxx:693 AliMUONTrackExtrap.cxx:694 AliMUONTrackExtrap.cxx:695 AliMUONTrackExtrap.cxx:696 AliMUONTrackExtrap.cxx:697 AliMUONTrackExtrap.cxx:698 AliMUONTrackExtrap.cxx:699 AliMUONTrackExtrap.cxx:700 AliMUONTrackExtrap.cxx:701 AliMUONTrackExtrap.cxx:702 AliMUONTrackExtrap.cxx:703 AliMUONTrackExtrap.cxx:704 AliMUONTrackExtrap.cxx:705 AliMUONTrackExtrap.cxx:706 AliMUONTrackExtrap.cxx:707 AliMUONTrackExtrap.cxx:708 AliMUONTrackExtrap.cxx:709 AliMUONTrackExtrap.cxx:710 AliMUONTrackExtrap.cxx:711 AliMUONTrackExtrap.cxx:712 AliMUONTrackExtrap.cxx:713 AliMUONTrackExtrap.cxx:714 AliMUONTrackExtrap.cxx:715 AliMUONTrackExtrap.cxx:716 AliMUONTrackExtrap.cxx:717 AliMUONTrackExtrap.cxx:718 AliMUONTrackExtrap.cxx:719 AliMUONTrackExtrap.cxx:720 AliMUONTrackExtrap.cxx:721 AliMUONTrackExtrap.cxx:722 AliMUONTrackExtrap.cxx:723 AliMUONTrackExtrap.cxx:724 AliMUONTrackExtrap.cxx:725 AliMUONTrackExtrap.cxx:726 AliMUONTrackExtrap.cxx:727 AliMUONTrackExtrap.cxx:728 AliMUONTrackExtrap.cxx:729 AliMUONTrackExtrap.cxx:730 AliMUONTrackExtrap.cxx:731 AliMUONTrackExtrap.cxx:732 AliMUONTrackExtrap.cxx:733 AliMUONTrackExtrap.cxx:734 AliMUONTrackExtrap.cxx:735 AliMUONTrackExtrap.cxx:736 AliMUONTrackExtrap.cxx:737 AliMUONTrackExtrap.cxx:738 AliMUONTrackExtrap.cxx:739 AliMUONTrackExtrap.cxx:740 AliMUONTrackExtrap.cxx:741 AliMUONTrackExtrap.cxx:742 AliMUONTrackExtrap.cxx:743 AliMUONTrackExtrap.cxx:744 AliMUONTrackExtrap.cxx:745 AliMUONTrackExtrap.cxx:746 AliMUONTrackExtrap.cxx:747 AliMUONTrackExtrap.cxx:748 AliMUONTrackExtrap.cxx:749 AliMUONTrackExtrap.cxx:750 AliMUONTrackExtrap.cxx:751 AliMUONTrackExtrap.cxx:752 AliMUONTrackExtrap.cxx:753 AliMUONTrackExtrap.cxx:754 AliMUONTrackExtrap.cxx:755 AliMUONTrackExtrap.cxx:756 AliMUONTrackExtrap.cxx:757 AliMUONTrackExtrap.cxx:758 AliMUONTrackExtrap.cxx:759 AliMUONTrackExtrap.cxx:760 AliMUONTrackExtrap.cxx:761 AliMUONTrackExtrap.cxx:762 AliMUONTrackExtrap.cxx:763 AliMUONTrackExtrap.cxx:764 AliMUONTrackExtrap.cxx:765 AliMUONTrackExtrap.cxx:766 AliMUONTrackExtrap.cxx:767 AliMUONTrackExtrap.cxx:768 AliMUONTrackExtrap.cxx:769 AliMUONTrackExtrap.cxx:770 AliMUONTrackExtrap.cxx:771 AliMUONTrackExtrap.cxx:772 AliMUONTrackExtrap.cxx:773 AliMUONTrackExtrap.cxx:774 AliMUONTrackExtrap.cxx:775 AliMUONTrackExtrap.cxx:776 AliMUONTrackExtrap.cxx:777 AliMUONTrackExtrap.cxx:778 AliMUONTrackExtrap.cxx:779 AliMUONTrackExtrap.cxx:780 AliMUONTrackExtrap.cxx:781 AliMUONTrackExtrap.cxx:782 AliMUONTrackExtrap.cxx:783 AliMUONTrackExtrap.cxx:784 AliMUONTrackExtrap.cxx:785 AliMUONTrackExtrap.cxx:786 AliMUONTrackExtrap.cxx:787 AliMUONTrackExtrap.cxx:788 AliMUONTrackExtrap.cxx:789 AliMUONTrackExtrap.cxx:790 AliMUONTrackExtrap.cxx:791 AliMUONTrackExtrap.cxx:792 AliMUONTrackExtrap.cxx:793 AliMUONTrackExtrap.cxx:794 AliMUONTrackExtrap.cxx:795 AliMUONTrackExtrap.cxx:796 AliMUONTrackExtrap.cxx:797 AliMUONTrackExtrap.cxx:798 AliMUONTrackExtrap.cxx:799 AliMUONTrackExtrap.cxx:800 AliMUONTrackExtrap.cxx:801 AliMUONTrackExtrap.cxx:802 AliMUONTrackExtrap.cxx:803 AliMUONTrackExtrap.cxx:804 AliMUONTrackExtrap.cxx:805 AliMUONTrackExtrap.cxx:806 AliMUONTrackExtrap.cxx:807 AliMUONTrackExtrap.cxx:808 AliMUONTrackExtrap.cxx:809 AliMUONTrackExtrap.cxx:810 AliMUONTrackExtrap.cxx:811 AliMUONTrackExtrap.cxx:812 AliMUONTrackExtrap.cxx:813 AliMUONTrackExtrap.cxx:814 AliMUONTrackExtrap.cxx:815 AliMUONTrackExtrap.cxx:816 AliMUONTrackExtrap.cxx:817 AliMUONTrackExtrap.cxx:818 AliMUONTrackExtrap.cxx:819 AliMUONTrackExtrap.cxx:820 AliMUONTrackExtrap.cxx:821 AliMUONTrackExtrap.cxx:822 AliMUONTrackExtrap.cxx:823 AliMUONTrackExtrap.cxx:824 AliMUONTrackExtrap.cxx:825 AliMUONTrackExtrap.cxx:826 AliMUONTrackExtrap.cxx:827 AliMUONTrackExtrap.cxx:828 AliMUONTrackExtrap.cxx:829 AliMUONTrackExtrap.cxx:830 AliMUONTrackExtrap.cxx:831 AliMUONTrackExtrap.cxx:832 AliMUONTrackExtrap.cxx:833 AliMUONTrackExtrap.cxx:834 AliMUONTrackExtrap.cxx:835 AliMUONTrackExtrap.cxx:836 AliMUONTrackExtrap.cxx:837 AliMUONTrackExtrap.cxx:838 AliMUONTrackExtrap.cxx:839 AliMUONTrackExtrap.cxx:840 AliMUONTrackExtrap.cxx:841 AliMUONTrackExtrap.cxx:842 AliMUONTrackExtrap.cxx:843 AliMUONTrackExtrap.cxx:844 AliMUONTrackExtrap.cxx:845 AliMUONTrackExtrap.cxx:846 AliMUONTrackExtrap.cxx:847 AliMUONTrackExtrap.cxx:848 AliMUONTrackExtrap.cxx:849 AliMUONTrackExtrap.cxx:850 AliMUONTrackExtrap.cxx:851 AliMUONTrackExtrap.cxx:852 AliMUONTrackExtrap.cxx:853 AliMUONTrackExtrap.cxx:854 AliMUONTrackExtrap.cxx:855 AliMUONTrackExtrap.cxx:856 AliMUONTrackExtrap.cxx:857 AliMUONTrackExtrap.cxx:858 AliMUONTrackExtrap.cxx:859 AliMUONTrackExtrap.cxx:860 AliMUONTrackExtrap.cxx:861 AliMUONTrackExtrap.cxx:862 AliMUONTrackExtrap.cxx:863 AliMUONTrackExtrap.cxx:864 AliMUONTrackExtrap.cxx:865 AliMUONTrackExtrap.cxx:866 AliMUONTrackExtrap.cxx:867 AliMUONTrackExtrap.cxx:868 AliMUONTrackExtrap.cxx:869 AliMUONTrackExtrap.cxx:870 AliMUONTrackExtrap.cxx:871 AliMUONTrackExtrap.cxx:872 AliMUONTrackExtrap.cxx:873 AliMUONTrackExtrap.cxx:874 AliMUONTrackExtrap.cxx:875 AliMUONTrackExtrap.cxx:876 AliMUONTrackExtrap.cxx:877 AliMUONTrackExtrap.cxx:878 AliMUONTrackExtrap.cxx:879 AliMUONTrackExtrap.cxx:880 AliMUONTrackExtrap.cxx:881 AliMUONTrackExtrap.cxx:882 AliMUONTrackExtrap.cxx:883 AliMUONTrackExtrap.cxx:884 AliMUONTrackExtrap.cxx:885 AliMUONTrackExtrap.cxx:886 AliMUONTrackExtrap.cxx:887 AliMUONTrackExtrap.cxx:888 AliMUONTrackExtrap.cxx:889 AliMUONTrackExtrap.cxx:890 AliMUONTrackExtrap.cxx:891 AliMUONTrackExtrap.cxx:892 AliMUONTrackExtrap.cxx:893 AliMUONTrackExtrap.cxx:894 AliMUONTrackExtrap.cxx:895 AliMUONTrackExtrap.cxx:896 AliMUONTrackExtrap.cxx:897 AliMUONTrackExtrap.cxx:898 AliMUONTrackExtrap.cxx:899 AliMUONTrackExtrap.cxx:900 AliMUONTrackExtrap.cxx:901 AliMUONTrackExtrap.cxx:902 AliMUONTrackExtrap.cxx:903 AliMUONTrackExtrap.cxx:904 AliMUONTrackExtrap.cxx:905 AliMUONTrackExtrap.cxx:906 AliMUONTrackExtrap.cxx:907 AliMUONTrackExtrap.cxx:908 AliMUONTrackExtrap.cxx:909 AliMUONTrackExtrap.cxx:910 AliMUONTrackExtrap.cxx:911 AliMUONTrackExtrap.cxx:912 AliMUONTrackExtrap.cxx:913 AliMUONTrackExtrap.cxx:914 AliMUONTrackExtrap.cxx:915 AliMUONTrackExtrap.cxx:916 AliMUONTrackExtrap.cxx:917 AliMUONTrackExtrap.cxx:918 AliMUONTrackExtrap.cxx:919 AliMUONTrackExtrap.cxx:920 AliMUONTrackExtrap.cxx:921 AliMUONTrackExtrap.cxx:922 AliMUONTrackExtrap.cxx:923 AliMUONTrackExtrap.cxx:924 AliMUONTrackExtrap.cxx:925 AliMUONTrackExtrap.cxx:926 AliMUONTrackExtrap.cxx:927 AliMUONTrackExtrap.cxx:928 AliMUONTrackExtrap.cxx:929 AliMUONTrackExtrap.cxx:930 AliMUONTrackExtrap.cxx:931 AliMUONTrackExtrap.cxx:932 AliMUONTrackExtrap.cxx:933 AliMUONTrackExtrap.cxx:934 AliMUONTrackExtrap.cxx:935 AliMUONTrackExtrap.cxx:936 AliMUONTrackExtrap.cxx:937 AliMUONTrackExtrap.cxx:938 AliMUONTrackExtrap.cxx:939 AliMUONTrackExtrap.cxx:940 AliMUONTrackExtrap.cxx:941 AliMUONTrackExtrap.cxx:942 AliMUONTrackExtrap.cxx:943 AliMUONTrackExtrap.cxx:944 AliMUONTrackExtrap.cxx:945 AliMUONTrackExtrap.cxx:946 AliMUONTrackExtrap.cxx:947 AliMUONTrackExtrap.cxx:948 AliMUONTrackExtrap.cxx:949 AliMUONTrackExtrap.cxx:950 AliMUONTrackExtrap.cxx:951 AliMUONTrackExtrap.cxx:952 AliMUONTrackExtrap.cxx:953 AliMUONTrackExtrap.cxx:954 AliMUONTrackExtrap.cxx:955 AliMUONTrackExtrap.cxx:956 AliMUONTrackExtrap.cxx:957 AliMUONTrackExtrap.cxx:958 AliMUONTrackExtrap.cxx:959 AliMUONTrackExtrap.cxx:960 AliMUONTrackExtrap.cxx:961 AliMUONTrackExtrap.cxx:962 AliMUONTrackExtrap.cxx:963 AliMUONTrackExtrap.cxx:964 AliMUONTrackExtrap.cxx:965 AliMUONTrackExtrap.cxx:966 AliMUONTrackExtrap.cxx:967 AliMUONTrackExtrap.cxx:968 AliMUONTrackExtrap.cxx:969 AliMUONTrackExtrap.cxx:970 AliMUONTrackExtrap.cxx:971 AliMUONTrackExtrap.cxx:972 AliMUONTrackExtrap.cxx:973 AliMUONTrackExtrap.cxx:974 AliMUONTrackExtrap.cxx:975 AliMUONTrackExtrap.cxx:976 AliMUONTrackExtrap.cxx:977 AliMUONTrackExtrap.cxx:978 AliMUONTrackExtrap.cxx:979 AliMUONTrackExtrap.cxx:980 AliMUONTrackExtrap.cxx:981 AliMUONTrackExtrap.cxx:982 AliMUONTrackExtrap.cxx:983 AliMUONTrackExtrap.cxx:984 AliMUONTrackExtrap.cxx:985 AliMUONTrackExtrap.cxx:986 AliMUONTrackExtrap.cxx:987 AliMUONTrackExtrap.cxx:988 AliMUONTrackExtrap.cxx:989 AliMUONTrackExtrap.cxx:990 AliMUONTrackExtrap.cxx:991 AliMUONTrackExtrap.cxx:992 AliMUONTrackExtrap.cxx:993 AliMUONTrackExtrap.cxx:994 AliMUONTrackExtrap.cxx:995 AliMUONTrackExtrap.cxx:996 AliMUONTrackExtrap.cxx:997 AliMUONTrackExtrap.cxx:998 AliMUONTrackExtrap.cxx:999 AliMUONTrackExtrap.cxx:1000 AliMUONTrackExtrap.cxx:1001 AliMUONTrackExtrap.cxx:1002 AliMUONTrackExtrap.cxx:1003 AliMUONTrackExtrap.cxx:1004 AliMUONTrackExtrap.cxx:1005 AliMUONTrackExtrap.cxx:1006 AliMUONTrackExtrap.cxx:1007 AliMUONTrackExtrap.cxx:1008 AliMUONTrackExtrap.cxx:1009 AliMUONTrackExtrap.cxx:1010 AliMUONTrackExtrap.cxx:1011 AliMUONTrackExtrap.cxx:1012 AliMUONTrackExtrap.cxx:1013 AliMUONTrackExtrap.cxx:1014 AliMUONTrackExtrap.cxx:1015 AliMUONTrackExtrap.cxx:1016 AliMUONTrackExtrap.cxx:1017 AliMUONTrackExtrap.cxx:1018 AliMUONTrackExtrap.cxx:1019 AliMUONTrackExtrap.cxx:1020 AliMUONTrackExtrap.cxx:1021 AliMUONTrackExtrap.cxx:1022 AliMUONTrackExtrap.cxx:1023 AliMUONTrackExtrap.cxx:1024 AliMUONTrackExtrap.cxx:1025 AliMUONTrackExtrap.cxx:1026 AliMUONTrackExtrap.cxx:1027 AliMUONTrackExtrap.cxx:1028 AliMUONTrackExtrap.cxx:1029 AliMUONTrackExtrap.cxx:1030 AliMUONTrackExtrap.cxx:1031 AliMUONTrackExtrap.cxx:1032 AliMUONTrackExtrap.cxx:1033 AliMUONTrackExtrap.cxx:1034 AliMUONTrackExtrap.cxx:1035 AliMUONTrackExtrap.cxx:1036 AliMUONTrackExtrap.cxx:1037 AliMUONTrackExtrap.cxx:1038 AliMUONTrackExtrap.cxx:1039 AliMUONTrackExtrap.cxx:1040 AliMUONTrackExtrap.cxx:1041 AliMUONTrackExtrap.cxx:1042 AliMUONTrackExtrap.cxx:1043 AliMUONTrackExtrap.cxx:1044 AliMUONTrackExtrap.cxx:1045 AliMUONTrackExtrap.cxx:1046 AliMUONTrackExtrap.cxx:1047 AliMUONTrackExtrap.cxx:1048 AliMUONTrackExtrap.cxx:1049 AliMUONTrackExtrap.cxx:1050 AliMUONTrackExtrap.cxx:1051 AliMUONTrackExtrap.cxx:1052 AliMUONTrackExtrap.cxx:1053 AliMUONTrackExtrap.cxx:1054 AliMUONTrackExtrap.cxx:1055 AliMUONTrackExtrap.cxx:1056 AliMUONTrackExtrap.cxx:1057 AliMUONTrackExtrap.cxx:1058 AliMUONTrackExtrap.cxx:1059 AliMUONTrackExtrap.cxx:1060 AliMUONTrackExtrap.cxx:1061 AliMUONTrackExtrap.cxx:1062 AliMUONTrackExtrap.cxx:1063 AliMUONTrackExtrap.cxx:1064 AliMUONTrackExtrap.cxx:1065 AliMUONTrackExtrap.cxx:1066 AliMUONTrackExtrap.cxx:1067 AliMUONTrackExtrap.cxx:1068 AliMUONTrackExtrap.cxx:1069 AliMUONTrackExtrap.cxx:1070 AliMUONTrackExtrap.cxx:1071 AliMUONTrackExtrap.cxx:1072 AliMUONTrackExtrap.cxx:1073 AliMUONTrackExtrap.cxx:1074 AliMUONTrackExtrap.cxx:1075 AliMUONTrackExtrap.cxx:1076 AliMUONTrackExtrap.cxx:1077 AliMUONTrackExtrap.cxx:1078 AliMUONTrackExtrap.cxx:1079 AliMUONTrackExtrap.cxx:1080 AliMUONTrackExtrap.cxx:1081 AliMUONTrackExtrap.cxx:1082 AliMUONTrackExtrap.cxx:1083 AliMUONTrackExtrap.cxx:1084 AliMUONTrackExtrap.cxx:1085 AliMUONTrackExtrap.cxx:1086 AliMUONTrackExtrap.cxx:1087 AliMUONTrackExtrap.cxx:1088 AliMUONTrackExtrap.cxx:1089 AliMUONTrackExtrap.cxx:1090 AliMUONTrackExtrap.cxx:1091 AliMUONTrackExtrap.cxx:1092 AliMUONTrackExtrap.cxx:1093 AliMUONTrackExtrap.cxx:1094 AliMUONTrackExtrap.cxx:1095 AliMUONTrackExtrap.cxx:1096 AliMUONTrackExtrap.cxx:1097 AliMUONTrackExtrap.cxx:1098 AliMUONTrackExtrap.cxx:1099 AliMUONTrackExtrap.cxx:1100 AliMUONTrackExtrap.cxx:1101 AliMUONTrackExtrap.cxx:1102 AliMUONTrackExtrap.cxx:1103 AliMUONTrackExtrap.cxx:1104 AliMUONTrackExtrap.cxx:1105 AliMUONTrackExtrap.cxx:1106 AliMUONTrackExtrap.cxx:1107 AliMUONTrackExtrap.cxx:1108 AliMUONTrackExtrap.cxx:1109 AliMUONTrackExtrap.cxx:1110 AliMUONTrackExtrap.cxx:1111 AliMUONTrackExtrap.cxx:1112 AliMUONTrackExtrap.cxx:1113 AliMUONTrackExtrap.cxx:1114 AliMUONTrackExtrap.cxx:1115 AliMUONTrackExtrap.cxx:1116 AliMUONTrackExtrap.cxx:1117 AliMUONTrackExtrap.cxx:1118 AliMUONTrackExtrap.cxx:1119 AliMUONTrackExtrap.cxx:1120 AliMUONTrackExtrap.cxx:1121 AliMUONTrackExtrap.cxx:1122 AliMUONTrackExtrap.cxx:1123 AliMUONTrackExtrap.cxx:1124 AliMUONTrackExtrap.cxx:1125 AliMUONTrackExtrap.cxx:1126 AliMUONTrackExtrap.cxx:1127 AliMUONTrackExtrap.cxx:1128 AliMUONTrackExtrap.cxx:1129 AliMUONTrackExtrap.cxx:1130 AliMUONTrackExtrap.cxx:1131 AliMUONTrackExtrap.cxx:1132 AliMUONTrackExtrap.cxx:1133 AliMUONTrackExtrap.cxx:1134 AliMUONTrackExtrap.cxx:1135 AliMUONTrackExtrap.cxx:1136 AliMUONTrackExtrap.cxx:1137 AliMUONTrackExtrap.cxx:1138 AliMUONTrackExtrap.cxx:1139 AliMUONTrackExtrap.cxx:1140 AliMUONTrackExtrap.cxx:1141 AliMUONTrackExtrap.cxx:1142 AliMUONTrackExtrap.cxx:1143 AliMUONTrackExtrap.cxx:1144 AliMUONTrackExtrap.cxx:1145 AliMUONTrackExtrap.cxx:1146 AliMUONTrackExtrap.cxx:1147 AliMUONTrackExtrap.cxx:1148 AliMUONTrackExtrap.cxx:1149 AliMUONTrackExtrap.cxx:1150 AliMUONTrackExtrap.cxx:1151 AliMUONTrackExtrap.cxx:1152 AliMUONTrackExtrap.cxx:1153 AliMUONTrackExtrap.cxx:1154 AliMUONTrackExtrap.cxx:1155 AliMUONTrackExtrap.cxx:1156 AliMUONTrackExtrap.cxx:1157 AliMUONTrackExtrap.cxx:1158 AliMUONTrackExtrap.cxx:1159 AliMUONTrackExtrap.cxx:1160 AliMUONTrackExtrap.cxx:1161 AliMUONTrackExtrap.cxx:1162 AliMUONTrackExtrap.cxx:1163 AliMUONTrackExtrap.cxx:1164 AliMUONTrackExtrap.cxx:1165 AliMUONTrackExtrap.cxx:1166 AliMUONTrackExtrap.cxx:1167 AliMUONTrackExtrap.cxx:1168 AliMUONTrackExtrap.cxx:1169 AliMUONTrackExtrap.cxx:1170 AliMUONTrackExtrap.cxx:1171 AliMUONTrackExtrap.cxx:1172 AliMUONTrackExtrap.cxx:1173 AliMUONTrackExtrap.cxx:1174 AliMUONTrackExtrap.cxx:1175 AliMUONTrackExtrap.cxx:1176 AliMUONTrackExtrap.cxx:1177 AliMUONTrackExtrap.cxx:1178 AliMUONTrackExtrap.cxx:1179 AliMUONTrackExtrap.cxx:1180 AliMUONTrackExtrap.cxx:1181 AliMUONTrackExtrap.cxx:1182 AliMUONTrackExtrap.cxx:1183 AliMUONTrackExtrap.cxx:1184 AliMUONTrackExtrap.cxx:1185 AliMUONTrackExtrap.cxx:1186 AliMUONTrackExtrap.cxx:1187 AliMUONTrackExtrap.cxx:1188 AliMUONTrackExtrap.cxx:1189 AliMUONTrackExtrap.cxx:1190 AliMUONTrackExtrap.cxx:1191 AliMUONTrackExtrap.cxx:1192 AliMUONTrackExtrap.cxx:1193 AliMUONTrackExtrap.cxx:1194 AliMUONTrackExtrap.cxx:1195 AliMUONTrackExtrap.cxx:1196 AliMUONTrackExtrap.cxx:1197 AliMUONTrackExtrap.cxx:1198 AliMUONTrackExtrap.cxx:1199 AliMUONTrackExtrap.cxx:1200 AliMUONTrackExtrap.cxx:1201 AliMUONTrackExtrap.cxx:1202 AliMUONTrackExtrap.cxx:1203 AliMUONTrackExtrap.cxx:1204 AliMUONTrackExtrap.cxx:1205 AliMUONTrackExtrap.cxx:1206 AliMUONTrackExtrap.cxx:1207 AliMUONTrackExtrap.cxx:1208 AliMUONTrackExtrap.cxx:1209 AliMUONTrackExtrap.cxx:1210 AliMUONTrackExtrap.cxx:1211 AliMUONTrackExtrap.cxx:1212 AliMUONTrackExtrap.cxx:1213 AliMUONTrackExtrap.cxx:1214 AliMUONTrackExtrap.cxx:1215 AliMUONTrackExtrap.cxx:1216 AliMUONTrackExtrap.cxx:1217 AliMUONTrackExtrap.cxx:1218 AliMUONTrackExtrap.cxx:1219 AliMUONTrackExtrap.cxx:1220 AliMUONTrackExtrap.cxx:1221 AliMUONTrackExtrap.cxx:1222 AliMUONTrackExtrap.cxx:1223 AliMUONTrackExtrap.cxx:1224 AliMUONTrackExtrap.cxx:1225 AliMUONTrackExtrap.cxx:1226 AliMUONTrackExtrap.cxx:1227 AliMUONTrackExtrap.cxx:1228 AliMUONTrackExtrap.cxx:1229 AliMUONTrackExtrap.cxx:1230 AliMUONTrackExtrap.cxx:1231 AliMUONTrackExtrap.cxx:1232 AliMUONTrackExtrap.cxx:1233 AliMUONTrackExtrap.cxx:1234 AliMUONTrackExtrap.cxx:1235 AliMUONTrackExtrap.cxx:1236 AliMUONTrackExtrap.cxx:1237 AliMUONTrackExtrap.cxx:1238 AliMUONTrackExtrap.cxx:1239 AliMUONTrackExtrap.cxx:1240 AliMUONTrackExtrap.cxx:1241 AliMUONTrackExtrap.cxx:1242 AliMUONTrackExtrap.cxx:1243 AliMUONTrackExtrap.cxx:1244 AliMUONTrackExtrap.cxx:1245 AliMUONTrackExtrap.cxx:1246 AliMUONTrackExtrap.cxx:1247 AliMUONTrackExtrap.cxx:1248 AliMUONTrackExtrap.cxx:1249 AliMUONTrackExtrap.cxx:1250 AliMUONTrackExtrap.cxx:1251 AliMUONTrackExtrap.cxx:1252 AliMUONTrackExtrap.cxx:1253 AliMUONTrackExtrap.cxx:1254 AliMUONTrackExtrap.cxx:1255 AliMUONTrackExtrap.cxx:1256 AliMUONTrackExtrap.cxx:1257 AliMUONTrackExtrap.cxx:1258 AliMUONTrackExtrap.cxx:1259 AliMUONTrackExtrap.cxx:1260 AliMUONTrackExtrap.cxx:1261 AliMUONTrackExtrap.cxx:1262 AliMUONTrackExtrap.cxx:1263 AliMUONTrackExtrap.cxx:1264 AliMUONTrackExtrap.cxx:1265 AliMUONTrackExtrap.cxx:1266 AliMUONTrackExtrap.cxx:1267 AliMUONTrackExtrap.cxx:1268 AliMUONTrackExtrap.cxx:1269 AliMUONTrackExtrap.cxx:1270 AliMUONTrackExtrap.cxx:1271 AliMUONTrackExtrap.cxx:1272 AliMUONTrackExtrap.cxx:1273 AliMUONTrackExtrap.cxx:1274 AliMUONTrackExtrap.cxx:1275 AliMUONTrackExtrap.cxx:1276 AliMUONTrackExtrap.cxx:1277 AliMUONTrackExtrap.cxx:1278 AliMUONTrackExtrap.cxx:1279 AliMUONTrackExtrap.cxx:1280 AliMUONTrackExtrap.cxx:1281 AliMUONTrackExtrap.cxx:1282 AliMUONTrackExtrap.cxx:1283 AliMUONTrackExtrap.cxx:1284 AliMUONTrackExtrap.cxx:1285 AliMUONTrackExtrap.cxx:1286 AliMUONTrackExtrap.cxx:1287 AliMUONTrackExtrap.cxx:1288 AliMUONTrackExtrap.cxx:1289 AliMUONTrackExtrap.cxx:1290 AliMUONTrackExtrap.cxx:1291 AliMUONTrackExtrap.cxx:1292 AliMUONTrackExtrap.cxx:1293 AliMUONTrackExtrap.cxx:1294 AliMUONTrackExtrap.cxx:1295 AliMUONTrackExtrap.cxx:1296 AliMUONTrackExtrap.cxx:1297 AliMUONTrackExtrap.cxx:1298 AliMUONTrackExtrap.cxx:1299 AliMUONTrackExtrap.cxx:1300 AliMUONTrackExtrap.cxx:1301 AliMUONTrackExtrap.cxx:1302 AliMUONTrackExtrap.cxx:1303 AliMUONTrackExtrap.cxx:1304 AliMUONTrackExtrap.cxx:1305 AliMUONTrackExtrap.cxx:1306 AliMUONTrackExtrap.cxx:1307 AliMUONTrackExtrap.cxx:1308 AliMUONTrackExtrap.cxx:1309 AliMUONTrackExtrap.cxx:1310 AliMUONTrackExtrap.cxx:1311 AliMUONTrackExtrap.cxx:1312 AliMUONTrackExtrap.cxx:1313 AliMUONTrackExtrap.cxx:1314 AliMUONTrackExtrap.cxx:1315 AliMUONTrackExtrap.cxx:1316 AliMUONTrackExtrap.cxx:1317 AliMUONTrackExtrap.cxx:1318 AliMUONTrackExtrap.cxx:1319 AliMUONTrackExtrap.cxx:1320 AliMUONTrackExtrap.cxx:1321 AliMUONTrackExtrap.cxx:1322 AliMUONTrackExtrap.cxx:1323 AliMUONTrackExtrap.cxx:1324 AliMUONTrackExtrap.cxx:1325 AliMUONTrackExtrap.cxx:1326 AliMUONTrackExtrap.cxx:1327 AliMUONTrackExtrap.cxx:1328 AliMUONTrackExtrap.cxx:1329 AliMUONTrackExtrap.cxx:1330 AliMUONTrackExtrap.cxx:1331 AliMUONTrackExtrap.cxx:1332 AliMUONTrackExtrap.cxx:1333 AliMUONTrackExtrap.cxx:1334 AliMUONTrackExtrap.cxx:1335 AliMUONTrackExtrap.cxx:1336 AliMUONTrackExtrap.cxx:1337 AliMUONTrackExtrap.cxx:1338 AliMUONTrackExtrap.cxx:1339 AliMUONTrackExtrap.cxx:1340 AliMUONTrackExtrap.cxx:1341 AliMUONTrackExtrap.cxx:1342 AliMUONTrackExtrap.cxx:1343 AliMUONTrackExtrap.cxx:1344 AliMUONTrackExtrap.cxx:1345 AliMUONTrackExtrap.cxx:1346 AliMUONTrackExtrap.cxx:1347 AliMUONTrackExtrap.cxx:1348 AliMUONTrackExtrap.cxx:1349 AliMUONTrackExtrap.cxx:1350 AliMUONTrackExtrap.cxx:1351 AliMUONTrackExtrap.cxx:1352 AliMUONTrackExtrap.cxx:1353 AliMUONTrackExtrap.cxx:1354 AliMUONTrackExtrap.cxx:1355 AliMUONTrackExtrap.cxx:1356 AliMUONTrackExtrap.cxx:1357 AliMUONTrackExtrap.cxx:1358 AliMUONTrackExtrap.cxx:1359 AliMUONTrackExtrap.cxx:1360 AliMUONTrackExtrap.cxx:1361 AliMUONTrackExtrap.cxx:1362 AliMUONTrackExtrap.cxx:1363 AliMUONTrackExtrap.cxx:1364 AliMUONTrackExtrap.cxx:1365 AliMUONTrackExtrap.cxx:1366 AliMUONTrackExtrap.cxx:1367 AliMUONTrackExtrap.cxx:1368 AliMUONTrackExtrap.cxx:1369 AliMUONTrackExtrap.cxx:1370 AliMUONTrackExtrap.cxx:1371 AliMUONTrackExtrap.cxx:1372 AliMUONTrackExtrap.cxx:1373 AliMUONTrackExtrap.cxx:1374 AliMUONTrackExtrap.cxx:1375 AliMUONTrackExtrap.cxx:1376 AliMUONTrackExtrap.cxx:1377 AliMUONTrackExtrap.cxx:1378 AliMUONTrackExtrap.cxx:1379 AliMUONTrackExtrap.cxx:1380 AliMUONTrackExtrap.cxx:1381 AliMUONTrackExtrap.cxx:1382 AliMUONTrackExtrap.cxx:1383 AliMUONTrackExtrap.cxx:1384 AliMUONTrackExtrap.cxx:1385 AliMUONTrackExtrap.cxx:1386 AliMUONTrackExtrap.cxx:1387 AliMUONTrackExtrap.cxx:1388 AliMUONTrackExtrap.cxx:1389 AliMUONTrackExtrap.cxx:1390 AliMUONTrackExtrap.cxx:1391 AliMUONTrackExtrap.cxx:1392 AliMUONTrackExtrap.cxx:1393 AliMUONTrackExtrap.cxx:1394 AliMUONTrackExtrap.cxx:1395 AliMUONTrackExtrap.cxx:1396 AliMUONTrackExtrap.cxx:1397 AliMUONTrackExtrap.cxx:1398 AliMUONTrackExtrap.cxx:1399 AliMUONTrackExtrap.cxx:1400 AliMUONTrackExtrap.cxx:1401 AliMUONTrackExtrap.cxx:1402 AliMUONTrackExtrap.cxx:1403 AliMUONTrackExtrap.cxx:1404 AliMUONTrackExtrap.cxx:1405 AliMUONTrackExtrap.cxx:1406 AliMUONTrackExtrap.cxx:1407 AliMUONTrackExtrap.cxx:1408 AliMUONTrackExtrap.cxx:1409 AliMUONTrackExtrap.cxx:1410 AliMUONTrackExtrap.cxx:1411 AliMUONTrackExtrap.cxx:1412 AliMUONTrackExtrap.cxx:1413 AliMUONTrackExtrap.cxx:1414 AliMUONTrackExtrap.cxx:1415 AliMUONTrackExtrap.cxx:1416 AliMUONTrackExtrap.cxx:1417 AliMUONTrackExtrap.cxx:1418 AliMUONTrackExtrap.cxx:1419 AliMUONTrackExtrap.cxx:1420 AliMUONTrackExtrap.cxx:1421 AliMUONTrackExtrap.cxx:1422 AliMUONTrackExtrap.cxx:1423 AliMUONTrackExtrap.cxx:1424 AliMUONTrackExtrap.cxx:1425 AliMUONTrackExtrap.cxx:1426 AliMUONTrackExtrap.cxx:1427 AliMUONTrackExtrap.cxx:1428 AliMUONTrackExtrap.cxx:1429 AliMUONTrackExtrap.cxx:1430 AliMUONTrackExtrap.cxx:1431 AliMUONTrackExtrap.cxx:1432 AliMUONTrackExtrap.cxx:1433 AliMUONTrackExtrap.cxx:1434 AliMUONTrackExtrap.cxx:1435 AliMUONTrackExtrap.cxx:1436 AliMUONTrackExtrap.cxx:1437 AliMUONTrackExtrap.cxx:1438 AliMUONTrackExtrap.cxx:1439 AliMUONTrackExtrap.cxx:1440 AliMUONTrackExtrap.cxx:1441 AliMUONTrackExtrap.cxx:1442 AliMUONTrackExtrap.cxx:1443 AliMUONTrackExtrap.cxx:1444 AliMUONTrackExtrap.cxx:1445 AliMUONTrackExtrap.cxx:1446 AliMUONTrackExtrap.cxx:1447 AliMUONTrackExtrap.cxx:1448 AliMUONTrackExtrap.cxx:1449 AliMUONTrackExtrap.cxx:1450 AliMUONTrackExtrap.cxx:1451 AliMUONTrackExtrap.cxx:1452 AliMUONTrackExtrap.cxx:1453 AliMUONTrackExtrap.cxx:1454 AliMUONTrackExtrap.cxx:1455 AliMUONTrackExtrap.cxx:1456 AliMUONTrackExtrap.cxx:1457 AliMUONTrackExtrap.cxx:1458 AliMUONTrackExtrap.cxx:1459 AliMUONTrackExtrap.cxx:1460 AliMUONTrackExtrap.cxx:1461 AliMUONTrackExtrap.cxx:1462 AliMUONTrackExtrap.cxx:1463 AliMUONTrackExtrap.cxx:1464 AliMUONTrackExtrap.cxx:1465 AliMUONTrackExtrap.cxx:1466 AliMUONTrackExtrap.cxx:1467 AliMUONTrackExtrap.cxx:1468 AliMUONTrackExtrap.cxx:1469 AliMUONTrackExtrap.cxx:1470 AliMUONTrackExtrap.cxx:1471 AliMUONTrackExtrap.cxx:1472 AliMUONTrackExtrap.cxx:1473 AliMUONTrackExtrap.cxx:1474 AliMUONTrackExtrap.cxx:1475 AliMUONTrackExtrap.cxx:1476 AliMUONTrackExtrap.cxx:1477 AliMUONTrackExtrap.cxx:1478 AliMUONTrackExtrap.cxx:1479 AliMUONTrackExtrap.cxx:1480