X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliMagFCM.cxx;h=903cc454bcaa29b694158b4449c608272ecffc40;hb=9622226e244576c2ed7b1cea39e6d33cbdf80294;hp=56609ff3b95b75d3736fd71033173f8ee109ebfa;hpb=5d8718b8c08f9365868aedf62eb815945720f4da;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliMagFCM.cxx b/STEER/AliMagFCM.cxx index 56609ff3b95..903cc454bca 100644 --- a/STEER/AliMagFCM.cxx +++ b/STEER/AliMagFCM.cxx @@ -20,7 +20,9 @@ // Used in the configuration macros (macros/Config.C, etc.) // Author: //----------------------------------------------------------------------- + #include "TSystem.h" + #include "TVector.h" #include "AliMagFCM.h" @@ -53,9 +55,9 @@ AliMagFCM::AliMagFCM(): } //_______________________________________________________________________ -AliMagFCM::AliMagFCM(const char *name, const char *title, const Int_t integ, - const Float_t factor, const Float_t fmax): - AliMagF(name,title,integ,factor,fmax), +AliMagFCM::AliMagFCM(const char *name, const char *title, Int_t integ, + Float_t factor, Float_t fmax): + AliMagFC(name,title,integ,factor,fmax), fXbeg(0), fYbeg(0), fZbeg(0), @@ -85,7 +87,7 @@ AliMagFCM::AliMagFCM(const char *name, const char *title, const Int_t integ, //_______________________________________________________________________ AliMagFCM::AliMagFCM(const AliMagFCM &magf): - AliMagF(magf), + AliMagFC(magf), fXbeg(0), fYbeg(0), fZbeg(0), @@ -108,7 +110,7 @@ AliMagFCM::AliMagFCM(const AliMagFCM &magf): } //_______________________________________________________________________ -void AliMagFCM::Field(Float_t *x, Float_t *b) +void AliMagFCM::Field(Float_t *x, Float_t *b) const { // // Method to calculate the magnetic field @@ -121,16 +123,24 @@ void AliMagFCM::Field(Float_t *x, Float_t *b) // --- find the position in the grid --- b[0]=b[1]=b[2]=0; - if(-700 0 + // Transfom x -> -x and z -> -z + Float_t xm = - x[0]; + Float_t ym = x[1]; + Float_t zm = - x[2]; + + Bool_t infield=(fZbeg <= zm && zm < fZbeg+fZdel*(fZn-1) + && ( fXbeg <= TMath::Abs(xm) && TMath::Abs(xm) < fXbeg+fXdel*(fXn-1) ) + && ( fYbeg <= TMath::Abs(ym) && TMath::Abs(ym) < fYbeg+fYdel*(fYn-1) )); if(infield) { - xl[0]=TMath::Abs(x[0])-fXbeg; - xl[1]=TMath::Abs(x[1])-fYbeg; - xl[2]=x[2]-fZbeg; + xl[0]=TMath::Abs(xm)-fXbeg; + xl[1]=TMath::Abs(ym)-fYbeg; + xl[2]=zm-fZbeg; // --- start with x @@ -178,62 +188,25 @@ void AliMagFCM::Field(Float_t *x, Float_t *b) //ratx,raty,ratz,b[0],b[1],b[2]); // // ... use the dipole symmetry - if (x[0]*x[1] < 0) b[1]=-b[1]; - if (x[0]<0) b[2]=-b[2]; + if (xm*ym < 0) b[1]=-b[1]; + if (xm<0) b[2]=-b[2]; + b[0] = -b[0]; + b[2] = -b[2]; + } else { printf("Invalid field map for constant mesh %d\n",fMap); } } else { //This is the ZDC part - Float_t rad2=x[0]*x[0]+x[1]*x[1]; - if(x[2]>kCORBEG2 && x[2]kZ1BEG && x[2]kZ2BEG && x[2]kZ3BEG && x[2]kZ4BEG && x[2]kD1BEG && x[2]kD2BEG && x[2]