+
+void AliMagFC::ZDCField(Float_t *x, Float_t *b) const
+{
+//This is the ZDC part
+ Float_t rad2=x[0]*x[0]+x[1]*x[1];
+
+ if(x[2] < kCORBEG2 && x[2] > kCOREND2){
+ if(rad2<kCOR2RA2){
+ b[0] = - kFCORN2;
+ }
+ }
+ else if(x[2] < kZ1BEG && x[2] > kZ1END){
+ if(rad2<kZ1RA2){
+ b[0] = kG1*x[1];
+ b[1] = kG1*x[0];
+ }
+ }
+ else if(x[2] < kZ2BEG && x[2] > kZ2END){
+ if(rad2<kZ2RA2){
+ b[0] = -kG1*x[1];
+ b[1] = -kG1*x[0];
+ }
+ }
+ else if(x[2] < kZ3BEG && x[2] > kZ3END){
+ if(rad2<kZ3RA2){
+ b[0] = -kG1*x[1];
+ b[1] = -kG1*x[0];
+ }
+ }
+ else if(x[2] < kZ4BEG && x[2] > kZ4END){
+ if(rad2<kZ4RA2){
+ b[0] = kG1*x[1];
+ b[1] = kG1*x[0];
+ }
+ }
+ else if(x[2] < kD1BEG && x[2] > kD1END){
+ if(rad2<kD1RA2){
+ b[1] = -kFDIP;
+ }
+ }
+ else if(x[2] < kD2BEG && x[2] > kD2END){
+ if(((x[0]-kXCEN1D2)*(x[0]-kXCEN1D2)+(x[1]-kYCEN1D2)*(x[1]-kYCEN1D2))<kD2RA2
+ || ((x[0]-kXCEN2D2)*(x[0]-kXCEN2D2)+(x[1]-kYCEN2D2)*(x[1]-kYCEN2D2))<kD2RA2){
+ b[1] = kFDIP;
+ }
+ }
+
+}