//________________________________________
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
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;
}
}
+// *************************** 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;
+ }
+ }
+
}