]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMagFC.cxx
Updated GRP preprocessor (to be validated with Panos)
[u/mrichter/AliRoot.git] / STEER / AliMagFC.cxx
index 4f665ede5e0321b60409f68b6216979357445adf..26d5693b40c259c437f7528dce507ec88e3f7720 100644 (file)
 
 #include <stdlib.h>
 
+#include "AliLog.h"
 #include "AliMagFC.h"
 
 ClassImp(AliMagFC)
 
 //________________________________________
-AliMagFC::AliMagFC(const char *name, const char *title, const Int_t integ, 
-                  const Float_t factor, const Float_t fmax)
-  : AliMagF(name,title,integ,factor,fmax)
+AliMagFC::AliMagFC(const char *name, const char *title, Int_t integ, 
+                  Float_t factor, Float_t fmax)
+    : AliMagF(name,title,integ,factor,fmax),
+      fCompensator(kFALSE)
 {
   // 
   // Standard constructor
@@ -40,7 +42,7 @@ AliMagFC::AliMagFC(const char *name, const char *title, const Int_t integ,
 }
 
 //________________________________________
-void AliMagFC::Field(Float_t *x, Float_t *b)
+void AliMagFC::Field(Float_t *x, Float_t *b) const
 {
   //
   // Method to return the field in a point
@@ -64,17 +66,25 @@ void AliMagFC::Field(Float_t *x, Float_t *b)
        b[2]*=fFactor;
     }
   } else {
-      printf("Invalid field map for constant field %d\n",fMap);
-      exit(1);
+      AliFatal(Form("Invalid field map for constant field %d",fMap));
   }
 }
 
 
-void AliMagFC::ZDCField(Float_t *x, Float_t *b)
+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];
+    Float_t rad2 = x[0] * x[0] + x[1] * x[1];
 
+    if (fCompensator && (x[2] > 919. && x[2] < 1231.) && rad2 < 16.) {
+      // Compensator magnet at z = 1075 m 
+       b[0] = 10.9;
+       b[1] = 0.;
+       b[2] = 0.;
+       return;
+    }
+    
+    
     if(x[2] < kCORBEG2 && x[2] > kCOREND2){
        if(rad2<kCOR2RA2){
            b[0] = - kFCORN2;
@@ -83,25 +93,25 @@ void AliMagFC::ZDCField(Float_t *x, Float_t *b)
     else if(x[2] < kZ1BEG && x[2] > kZ1END){  
        if(rad2<kZ1RA2){
            b[0] =  kG1*x[1];
-           b[1] = -kG1*x[0];
+           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];
+           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];
+           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];
+           b[1] =  kG1*x[0];
        }
     }
     else if(x[2] < kD1BEG && x[2] > kD1END){