+ // SIDE C **************************************************
+ if(x[2]<0.){
+ if(TMath::Abs(x[2]+kBComp2CZ)<kBComp2hDZ && rad2 < kBComp2SqR){
+ b[0] = fCCorrField*fFactorDip;
+ }
+ else if(TMath::Abs(x[2]+kTripQ1CZ)<kTripQ1hDZ && rad2 < kTripQ1SqR){
+ b[0] = fQuadGradient*x[1];
+ b[1] = fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]+kTripQ2CZ)<kTripQ2hDZ && rad2 < kTripQ2SqR){
+ b[0] = -fQuadGradient*x[1];
+ b[1] = -fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]+kTripQ3CZ)<kTripQ3hDZ && rad2 < kTripQ3SqR){
+ b[0] = -fQuadGradient*x[1];
+ b[1] = -fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]+kTripQ4CZ)<kTripQ4hDZ && rad2 < kTripQ4SqR){
+ b[0] = fQuadGradient*x[1];
+ b[1] = fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]+kDip1CZ)<kDip1hDZ && rad2 < kDip1SqRC){
+ b[1] = fDipoleField;
+ }
+ else if(TMath::Abs(x[2]+kDip2CZ)<kDip2hDZ && rad2 < kDip2SqRC) {
+ double dxabs = TMath::Abs(x[0])-kDip2DXC;
+ if ( (dxabs*dxabs + x[1]*x[1])<kDip2SqRC) {
+ b[1] = -fDipoleField;
+ }
+ }
+ }
+ //
+ // SIDE A **************************************************
+ else{
+ if(TMath::Abs(x[2]-kBComp1CZ)<kBComp1hDZ && rad2 < kBComp1SqR) {
+ // Compensator magnet at z = 1075 m
+ b[0] = fACorr1Field*fFactorDip;
+ }
+ //
+ if(TMath::Abs(x[2]-kBComp2CZ)<kBComp2hDZ && rad2 < kBComp2SqR){
+ b[0] = fACorr2Field*fFactorDip;
+ }
+ else if(TMath::Abs(x[2]-kTripQ1CZ)<kTripQ1hDZ && rad2 < kTripQ1SqR){
+ b[0] = -fQuadGradient*x[1];
+ b[1] = -fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]-kTripQ2CZ)<kTripQ2hDZ && rad2 < kTripQ2SqR){
+ b[0] = fQuadGradient*x[1];
+ b[1] = fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]-kTripQ3CZ)<kTripQ3hDZ && rad2 < kTripQ3SqR){
+ b[0] = fQuadGradient*x[1];
+ b[1] = fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]-kTripQ4CZ)<kTripQ4hDZ && rad2 < kTripQ4SqR){
+ b[0] = -fQuadGradient*x[1];
+ b[1] = -fQuadGradient*x[0];
+ }
+ else if(TMath::Abs(x[2]-kDip1CZ)<kDip1hDZ && rad2 < kDip1SqRA){
+ b[1] = -fDipoleField;
+ }
+ else if(TMath::Abs(x[2]-kDip2CZ)<kDip2hDZ && rad2 < kDip2SqRA) {
+ double dxabs = TMath::Abs(x[0])-kDip2DXA;
+ if ( (dxabs*dxabs + x[1]*x[1])<kDip2SqRA) {
+ b[1] = fDipoleField;
+ }
+ }
+ }
+ //
+}
+
+//_______________________________________________________________________
+void AliMagF::GetTPCInt(const Double_t *xyz, Double_t *b) const
+{
+ // Method to calculate the integral of magnetic integral from xyz to nearest cathode plane
+ b[0]=b[1]=b[2]=0.0;
+ if (fMeasuredMap) {
+ fMeasuredMap->GetTPCInt(xyz,b);
+ for (int i=3;i--;) b[i] *= fFactorSol;
+ }
+}
+
+//_______________________________________________________________________
+void AliMagF::GetTPCIntCyl(const Double_t *rphiz, Double_t *b) const
+{
+ // Method to calculate the integral of magnetic integral from point to nearest cathode plane
+ // in cylindrical coordiates ( -pi<phi<pi convention )
+ b[0]=b[1]=b[2]=0.0;
+ if (fMeasuredMap) {
+ fMeasuredMap->GetTPCIntCyl(rphiz,b);
+ for (int i=3;i--;) b[i] *= fFactorSol;
+ }