]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliMagFC.cxx
Fix fixed-string length bug
[u/mrichter/AliRoot.git] / STEER / AliMagFC.cxx
index 0233b0296865c9c8f21ef2f3f1aa6fb0adcaca31..4a1f2958a54a62c4684d31148da247443c51c978 100644 (file)
@@ -31,7 +31,8 @@ ClassImp(AliMagFC)
 //________________________________________
 AliMagFC::AliMagFC(const char *name, const char *title, Int_t integ, 
                   Float_t factor, Float_t fmax)
-  : AliMagF(name,title,integ,factor,fmax)
+    : AliMagF(name,title,integ,factor,fmax),
+      fCompensator(kFALSE)
 {
   // 
   // Standard constructor
@@ -73,8 +74,17 @@ void AliMagFC::Field(Float_t *x, Float_t *b) const
 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;
@@ -116,4 +126,48 @@ void AliMagFC::ZDCField(Float_t *x, Float_t *b) const
        }
     }
     
+// *************************** LEFT LINE ***********************************************
+    
+    if(x[2] > kCORBEG2l && x[2] < kCOREND2l){
+       if(rad2<kCOR2RA2l){
+           b[0] = kFCORN2l;
+       }
+    }          
+    else if(x[2] > kZ1BEGl && x[2] < kZ1ENDl){  
+       if(rad2<kZ1RA2l){
+       // First quadrupole of inner triplet de-focussing in x-direction
+           b[0] = -kG1l*x[1];
+           b[1] = -kG1l*x[0];
+       }
+    }
+    else if(x[2] > kZ2BEGl && x[2] < kZ2ENDl){  
+       if(rad2<kZ2RA2l){
+           b[0] = kG1l*x[1];
+           b[1] = kG1l*x[0];
+       }
+    }
+    else if(x[2] > kZ3BEGl && x[2] < kZ3ENDl){  
+       if(rad2<kZ3RA2l){
+           b[0] = kG1l*x[1];
+           b[1] = kG1l*x[0];
+       }
+    }
+    else if(x[2] > kZ4BEGl && x[2] < kZ4ENDl){  
+       if(rad2<kZ4RA2l){
+           b[0] = -kG1l*x[1];
+           b[1] = -kG1l*x[0];
+       }
+    }
+    else if(x[2] > kD1BEGl && x[2] < kD1ENDl){ 
+       if(rad2<kD1RA2l){
+           b[1] = kFDIPl;
+       }
+    }
+    else if(x[2] > kD2BEGl && x[2] < kD2ENDl){
+       if(((x[0]-kXCEN1D2l)*(x[0]-kXCEN1D2l)+(x[1]-kYCEN1D2l)*(x[1]-kYCEN1D2l))<kD2RA2l
+          || ((x[0]-kXCEN2D2l)*(x[0]-kXCEN2D2l)+(x[1]-kYCEN2D2l)*(x[1]-kYCEN2D2l))<kD2RA2l){
+           b[1] = -kFDIPl;
+       }
+    }
+    
 }