#include <stdlib.h>
+#include "AliLog.h"
#include "AliMagFC.h"
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
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) 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;
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){