1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
19 Revision 1.4 2000/03/28 12:40:24 fca
20 Introduce factor for magnetic field
23 Revision 1.3 1999/09/29 09:24:29 fca
24 Introduction of the Copyright and cvs Log
35 //ZDC part -------------------------------------------------------------------
37 static const Float_t G1=20.03;
38 static const Float_t FDIP=-37.34;
39 static const Float_t FDIMU=6.;
40 static const Float_t FCORN=11.72;
42 // ZBEG Beginning of the inner triplet
43 // D1BEG Beginning of separator dipole 1
44 // D2BEG Beginning of separator dipole 2
45 // CORBEG Corrector dipole beginning (because of dimuon arm)
47 static const Float_t CORBEG=1920,COREND=CORBEG+190, CORRA2=4.5*4.5;
49 static const Float_t ZBEG=2300;
50 static const Float_t Z1BEG=ZBEG+ 0,Z1END=Z1BEG+630,Z1RA2=3.5*3.5;
51 static const Float_t Z2BEG=ZBEG+ 880,Z2END=Z2BEG+550,Z2RA2=3.5*3.5;
52 static const Float_t Z3BEG=ZBEG+1530,Z3END=Z3BEG+550,Z3RA2=3.5*3.5;
53 static const Float_t Z4BEG=ZBEG+2430,Z4END=Z4BEG+630,Z4RA2=3.5*3.5;
54 static const Float_t D1BEG=5843.5 ,D1END=D1BEG+945,D1RA2=4.5*4.5;
55 static const Float_t D2BEG=12113.2 ,D2END=D2BEG+945,D2RA2=4.5*.5;
57 //ZDC part -------------------------------------------------------------------
61 //________________________________________
62 AliMagF::AliMagF(const char *name, const char *title, const Int_t integ, const Int_t map,
63 const Float_t factor, const Float_t fmax)
73 //________________________________________
74 void AliMagF::Field(Float_t*, Float_t *b)
76 printf("Undefined MagF Field called, returning 0\n");
82 //________________________________________
83 AliMagFC::AliMagFC(const char *name, const char *title, const Int_t integ, const Int_t map,
84 const Float_t factor, const Float_t fmax)
85 : AliMagF(name,title,integ,map,factor,fmax)
87 printf("Constant Field %s created: map= %d, factor= %f\n",fName.Data(),map,factor);
91 //________________________________________
92 void AliMagFC::Field(Float_t *x, Float_t *b)
96 if(TMath::Abs(x[2])<700 && x[0]*x[0]+(x[1]+30)*(x[1]+30) < 560*560) {
99 if ( 725 <= x[2] && x[2] <= 1225 ) {
100 Float_t dz = TMath::Abs(975-x[2])*0.01;
101 b[0]=(1-0.1*dz*dz)*7;
104 //This is the ZDC part
105 Float_t rad2=x[0]*x[0]+x[1]*x[1];
109 // Separator Dipole D2
110 if(x[2]<D2END) b[1]=FDIP;
111 } else if(x[2]>D1BEG) {
113 // Separator Dipole D1
114 if(x[2]<D1END) b[1]=-FDIP;
118 // First quadrupole of inner triplet de-focussing in x-direction
127 } else if(x[2]>Z3BEG) {
134 } else if(x[2]>Z2BEG) {
141 } else if(x[2]>Z1BEG) {
148 } else if(x[2]>CORBEG) {
150 // Corrector dipole (because of dimuon arm)
164 printf("Invalid field map for constant field %d\n",fMap);
171 //________________________________________
172 AliMagFCM::AliMagFCM(const char *name, const char *title, const Int_t integ, const Int_t map,
173 const Float_t factor, const Float_t fmax)
174 : AliMagF(name,title,integ,map,factor,fmax)
177 printf("Constant Mesh Field %s created: map= %d, factor= %f, file= %s\n",fName.Data(),map,factor,fTitle.Data());
180 //________________________________________
181 void AliMagFCM::Field(Float_t *x, Float_t *b)
183 Double_t ratx, raty, ratz, hix, hiy, hiz, ratx1, raty1, ratz1,
184 bhyhz, bhylz, blyhz, blylz, bhz, blz, xl[3];
185 const Double_t one=1;
188 // --- find the position in the grid ---
191 if(-700<x[2] && x[2]<fZbeg && x[0]*x[0]+(x[1]+30)*(x[1]+30) < 560*560) {
194 Bool_t infield=(fZbeg<=x[2] && x[2]<fZbeg+fZdel*(fZn-1)
195 && ( fXbeg <= TMath::Abs(x[0]) && TMath::Abs(x[0]) < fXbeg+fXdel*(fXn-1) )
196 && ( fYbeg <= TMath::Abs(x[1]) && TMath::Abs(x[1]) < fYbeg+fYdel*(fYn-1) ));
198 xl[0]=TMath::Abs(x[0])-fXbeg;
199 xl[1]=TMath::Abs(x[1])-fYbeg;
217 // ... simple interpolation
221 bhyhz = Bx(ix ,iy+1,iz+1)*ratx1+Bx(ix+1,iy+1,iz+1)*ratx;
222 bhylz = Bx(ix ,iy+1,iz )*ratx1+Bx(ix+1,iy+1,iz )*ratx;
223 blyhz = Bx(ix ,iy ,iz+1)*ratx1+Bx(ix+1,iy ,iz+1)*ratx;
224 blylz = Bx(ix ,iy ,iz )*ratx1+Bx(ix+1,iy ,iz )*ratx;
225 bhz = blyhz *raty1+bhyhz *raty;
226 blz = blylz *raty1+bhylz *raty;
227 b[0] = blz *ratz1+bhz *ratz;
229 bhyhz = By(ix ,iy+1,iz+1)*ratx1+By(ix+1,iy+1,iz+1)*ratx;
230 bhylz = By(ix ,iy+1,iz )*ratx1+By(ix+1,iy+1,iz )*ratx;
231 blyhz = By(ix ,iy ,iz+1)*ratx1+By(ix+1,iy ,iz+1)*ratx;
232 blylz = By(ix ,iy ,iz )*ratx1+By(ix+1,iy ,iz )*ratx;
233 bhz = blyhz *raty1+bhyhz *raty;
234 blz = blylz *raty1+bhylz *raty;
235 b[1] = blz *ratz1+bhz *ratz;
237 bhyhz = Bz(ix ,iy+1,iz+1)*ratx1+Bz(ix+1,iy+1,iz+1)*ratx;
238 bhylz = Bz(ix ,iy+1,iz )*ratx1+Bz(ix+1,iy+1,iz )*ratx;
239 blyhz = Bz(ix ,iy ,iz+1)*ratx1+Bz(ix+1,iy ,iz+1)*ratx;
240 blylz = Bz(ix ,iy ,iz )*ratx1+Bz(ix+1,iy ,iz )*ratx;
241 bhz = blyhz *raty1+bhyhz *raty;
242 blz = blylz *raty1+bhylz *raty;
243 b[2] = blz *ratz1+bhz *ratz;
244 //printf("ratx,raty,ratz,b[0],b[1],b[2] %f %f %f %f %f %f\n",
245 //ratx,raty,ratz,b[0],b[1],b[2]);
247 // ... use the dipole symmetry
248 if (x[0]*x[1] < 0) b[1]=-b[1];
249 if (x[0]<0) b[2]=-b[2];
251 printf("Invalid field map for constant mesh %d\n",fMap);
254 //This is the ZDC part
255 Float_t rad2=x[0]*x[0]+x[1]*x[1];
259 // Separator Dipole D2
260 if(x[2]<D2END) b[1]=FDIP;
261 } else if(x[2]>D1BEG) {
263 // Separator Dipole D1
264 if(x[2]<D1END) b[1]=-FDIP;
268 // First quadrupole of inner triplet de-focussing in x-direction
277 } else if(x[2]>Z3BEG) {
284 } else if(x[2]>Z2BEG) {
291 } else if(x[2]>Z1BEG) {
298 } else if(x[2]>CORBEG) {
300 // Corrector dipole (because of dimuon arm)
315 //________________________________________
316 void AliMagFCM::ReadField()
319 Int_t ix, iy, iz, ipx, ipy, ipz;
322 printf("Reading Magnetic Field %s from file %s\n",fName.Data(),fTitle.Data());
323 fname = gSystem->ExpandPathName(fTitle.Data());
324 magfile=fopen(fname,"r");
327 fscanf(magfile,"%d %d %d %f %f %f %f %f %f",
328 &fXn, &fYn, &fZn, &fXdel, &fYdel, &fZdel, &fXbeg, &fYbeg, &fZbeg);
329 printf("fXn %d, fYn %d, fZn %d, fXdel %f, fYdel %f, fZdel %f, fXbeg %f, fYbeg %f, fZbeg %f\n",
330 fXn, fYn, fZn, fXdel, fYdel, fZdel, fXbeg, fYbeg, fZbeg);
334 fB = new TVector(3*fXn*fYn*fZn);
335 for (iz=0; iz<fZn; iz++) {
337 for (iy=0; iy<fYn; iy++) {
339 for (ix=0; ix<fXn; ix++) {
341 fscanf(magfile,"%f %f %f",&bz,&by,&bx);
349 printf("File %s not found !\n",fTitle.Data());
353 // -------------------------------------------------------
357 //________________________________________
358 AliMagFDM::AliMagFDM(const char *name, const char *title, const Int_t integ,
359 const Int_t map, const Float_t factor, const Float_t fmax)
360 : AliMagF(name,title,integ,map,factor,fmax)
365 printf("Field Map for Muon Arm from IP till muon filter %s created: map= %d, factor= %f, file=%s\n",fName.Data(),map,factor,fTitle.Data());
369 //________________________________________
371 void AliMagFDM::Field(Float_t *xfi, Float_t *b)
373 static const Double_t eps=0.1E-06;
374 static const Double_t pi2=.6283185E+01;
375 static const Double_t one=1;
376 static const Double_t fdYaxi = 0.3;
378 static const Int_t kiip=33;
379 static const Int_t miip=0;
380 static const Int_t liip=0;
382 static const Int_t kiic=0;
383 static const Int_t miic=0;
384 static const Int_t liic=0;
386 static const Double_t fdZbg=502.92; // Start of Map using in z
387 static const Double_t fdZL3=600; // Beginning of L3 door in z
398 Double_t Zp1, Zp2,Xp1,Xp2,Yp1,Yp2;
399 Double_t Zz1, Zz2,Yy1,Yy2,X2,X1;
401 // --- start the map fiel from z = 502.92 cm ---
407 // printf("x[0] %f,x[1] %f,x[2] %f\n",x[0],x[1],x[2]);
409 Double_t rr=TMath::Sqrt(x[0]*x[0]+x[1]*x[1]);
413 if ( (-700<x[2] && x[2]<=fdZbg &&
414 (x[0]*x[0]+(x[1]+30)*(x[1]+30))< 560*560)
415 || (fdZbg<x[2] && x[2]<=fdZL3 && rr>=Rpmax*100) )
421 xL3[1]=(x[1]+30)/100;
424 Double_t xminn=xL3[2]*fdAx1+fdCx1;
425 Double_t xmaxx=xL3[2]*fdAx2+fdCx2;
426 Double_t Zcmin,Zcmax,Ycmin,Ycmax;
433 if ((fdZbg/100<xL3[2] && xL3[2]<Zcmin && r0<Rpmax) || ((Zcmin<=xL3[2] && xL3[2] <= Zcmax ) && (Ycmin<=xL3[1] && xL3[1]<= Ycmax) && (xminn <= xL3[0] && xL3[0] <= xmaxx)))
437 if (xL3[2]<Zcmin && r0<Rpmax)
439 //--------------------- Polar part ----------------------
444 Double_t alp1,alp2,alp3;
445 Double_t zpz,rp,fip,cphi;
453 FZ(&zpz, fdZp ,&fdZpdl,&kpi,&kp0,&Zp1 ,&Zp2,&fdZpl) ;
457 ph0=TMath::ACos(cphi);
458 if (xL3[0]< 0) {ph0=pi2 - ph0;}
461 FZ(&fip,fdPhi,&fdPhid ,&mpi,&mp0, &Xp1,&Xp2,&fdPhin);
472 bint[0]=(Zp1*fdBpx[kp0][0][0] + Zp2*fdBpx[kp0+1][0][0])*10;
473 bint[1]=(Zp1*fdBpy[kp0][0][0] + Zp2*fdBpy[kp0+1][0][0])*10;
474 bint[2]=(Zp1*fdBpz[kp0][0][0] + Zp2*fdBpz[kp0+1][0][0])*10;
478 alp2= fdB[0][0][mp0]*yyp + fdB[0][1][mp0]*xL3[0];
479 alp3= fdB[1][0][mp0]*yyp + fdB[1][1][mp0]*xL3[0];
480 alp1= one - alp2 - alp3;
482 for (jb=0; jb<3 ; jb++)
485 FRfuncBi(&Kvar,&Zp1,&Zp2,&alp1,&alp2,&alp3, &kp0,&mp0, &bbj);
493 FZ(&rp,fdR ,&fdRdel,&lpi,&lp0,&Yp1,&Yp2,&fdRn);
495 for (jb=0; jb<3 ; jb++)
498 FGfuncBi(&Zp1,&Zp2,&Yp1,&Yp2,&Xp1,&Xp2,&Kvar,&kp0,&lp0,&mp0,&bbj);
508 // fprintf(fitest,"------------- Freg2 run -------------\n");
513 //-------------- Cartensian part ------------------
517 Double_t xx1, xx2,dx, xxx ,xXl;
524 xx1 = fdAx1*xL3[2] + fdCx1;
525 xx2 = fdAx2*xL3[2] + fdCx2;
528 FZ(&zzc, fdZc ,&fdZdel, &kci,&k0, &Zz1, &Zz2, &fdZl);
531 FZ(&yyc, fdY , &fdYdel,&lci, &l0, &Yy1, &Yy2,&fdYl);
539 if(xL3[0]<(xx1+m0*dx) || xL3[0] >(xx1+(m0+1)*dx))
542 printf(" m0 %d, m0+1 %d\n",m0,m0+1);
545 X2=(xL3[0]-( xx1+m0*dx))/dx;
548 for (jb=3; jb<6; jb++)
551 FGfuncBi(&Zz1,&Zz2,&Yy1,&Yy2,&X1,&X2,&Kvar,&k0, &l0, &m0, &bbj);
552 bint[jb-3] = bbj*10 ;
559 // fprintf(fitest,"------------ Freg1 run -----------------\n");
563 printf("Unknown map of Dipole region %d\n",fMap);
568 //This is the ZDC part
569 Float_t rad2=x[0]*x[0]+x[1]*x[1];
573 // Separator Dipole D2
574 if(x[2]<D2END) b[1]=FDIP;
575 } else if(x[2]>D1BEG) {
577 // Separator Dipole D1
578 if(x[2]<D1END) b[1]=-FDIP;
582 // First quadrupole of inner triplet de-focussing in x-direction
591 } else if(x[2]>Z3BEG) {
598 } else if(x[2]>Z2BEG) {
605 } else if(x[2]>Z1BEG) {
612 } else if(x[2]>CORBEG) {
614 // Corrector dipole (because of dimuon arm)
630 //_________________________________________
632 void AliMagFDM::FZ(Double_t *u, Float_t *Ar, Float_t *du,Int_t *ki,Int_t *kf,Double_t *a1,Double_t *a2 ,Int_t *nu)
635 static const Double_t one=1;
638 Double_t ddu,delu,ar;
653 for(l=ikj; l<nk; l++)
659 *a2=(temp-Ar[l])/(Ar[l+1]-Ar[l]);
666 /*-------------FRfuncBi----------------*/
668 void AliMagFDM::FRfuncBi(Int_t *kai,Double_t *za1, Double_t *za2, Double_t *al1, Double_t *al2, Double_t *al3, Int_t *ka, Int_t *ma, Double_t *ba)
671 Double_t fa11,fa12,fa13;
672 Double_t fa21,fa22,fa23;
676 Double_t zaa1,zaa2,alf1,alf2,alf3;
688 fa11 = fdBpx[kaa][0][0];
689 fa12 = fdBpx[kaa][0][maa];
690 fa13 = fdBpx[kaa][0][maa+1];
691 fa21 = fdBpx[kaa+1][0][0];
692 fa22 = fdBpx[kaa+1][0][maa];
693 fa23 = fdBpx[kaa+1][0][maa+1];
696 fa11 = fdBpy[kaa][0][0];
697 fa12 = fdBpy[kaa][0][maa];
698 fa13 = fdBpy[kaa][0][maa+1];
699 fa21 = fdBpy[kaa+1][0][0];
700 fa22 = fdBpy[kaa+1][0][maa];
701 fa23 = fdBpy[kaa+1][0][maa+1];
704 fa11 = fdBpz[kaa][0][0];
705 fa12 = fdBpz[kaa][0][maa];
706 fa13 = fdBpz[kaa][0][maa+1];
707 fa21 = fdBpz[kaa+1][0][0];
708 fa22 = fdBpz[kaa+1][0][maa];
709 fa23 = fdBpz[kaa+1][0][maa+1];
711 faY1=alf1*fa11+alf2*fa12+alf3*fa13;
712 faY2=alf1*fa21+alf2*fa22+alf3*fa23;
713 bba = zaa1*faY1+zaa2*faY2;
719 /*----------- FGfuncBi------------*/
721 void AliMagFDM::FGfuncBi(Double_t *zz1,Double_t *zz2, Double_t *yy1,Double_t *yy2, Double_t *xx1,Double_t *xx2, Int_t *kvr, Int_t *kk, Int_t *ll, Int_t *mm, Double_t *bb)
724 Double_t fy1, fy2, ffy;
725 Double_t gy1,gy2,ggy;
726 Double_t z1,z2,y1,y2,x1,x2;
731 Double_t bf11,bf12,bf21,bf22;
732 Double_t bg11,bg12,bg21,bg22;
746 /*-----------------Polar part ------------------*/
750 bf12=fdBpx[k+1][l][m];
751 bf21=fdBpx[k+1][l+1][m];
752 bf22=fdBpx[k][l+1][m];
754 bg11=fdBpx[k][l][m+1];
755 bg12=fdBpx[k+1][l][m+1];
756 bg21=fdBpx[k+1][l+1][m+1];
757 bg22=fdBpx[k][l+1][m+1];
761 bf12=fdBpy[k+1][l][m];
762 bf21=fdBpy[k+1][l+1][m];
763 bf22=fdBpy[k][l+1][m];
765 bg11=fdBpy[k][l][m+1];
766 bg12=fdBpy[k+1][l][m+1];
767 bg21=fdBpy[k+1][l+1][m+1];
768 bg22=fdBpy[k][l+1][m+1];
773 bf12=fdBpz[k+1][l][m];
774 bf21=fdBpz[k+1][l+1][m];
775 bf22=fdBpz[k][l+1][m];
777 bg11=fdBpz[k][l][m+1];
778 bg12=fdBpz[k+1][l][m+1];
779 bg21=fdBpz[k+1][l+1][m+1];
780 bg22=fdBpz[k][l+1][m+1];
782 /*-----------------Cartensian part ---------------*/
786 bf12=fdBcx[k+1][l][m];
787 bf21=fdBcx[k+1][l+1][m];
788 bf22=fdBcx[k][l+1][m];
790 bg11=fdBcx[k][l][m+1];
791 bg12=fdBcx[k+1][l][m+1];
792 bg21=fdBcx[k+1][l+1][m+1];
793 bg22=fdBcx[k][l+1][m+1];
798 bf12=fdBcy[k+1][l][m];
799 bf21=fdBcy[k+1][l+1][m];
800 bf22=fdBcy[k][l+1][m];
802 bg11=fdBcy[k][l][m+1];
803 bg12=fdBcy[k+1][l][m+1];
804 bg21=fdBcy[k+1][l+1][m+1];
805 bg22=fdBcy[k][l+1][m+1];
809 bf12=fdBcz[k+1][l][m];
810 bf21=fdBcz[k+1][l+1][m];
811 bf22=fdBcz[k][l+1][m];
813 bg11=fdBcz[k][l][m+1];
814 bg12=fdBcz[k+1][l][m+1];
815 bg21=fdBcz[k+1][l+1][m+1];
816 bg22=fdBcz[k][l+1][m+1];
822 fy2=z2*bf21+z1* bf22;
826 gy1 = z1*bg11+z2*bg12;
827 gy2 = z2*bg21+z1*bg22;
828 ggy= y1*gy1 + y2*gy2;
835 //____________________________________________
837 void AliMagFDM::ReadField()
842 Float_t zzp, rr,phii;
843 Float_t zz, yy, bx,by,bz,bb;
846 printf("Reading Magnetic Field %s from file %s\n",fName.Data(),fTitle.Data());
847 fname = gSystem->ExpandPathName(fTitle.Data());
848 magfile=fopen(fname,"r");
851 printf("Cartensian part\n");
857 fscanf(magfile,"%d %d %d ",&fdYl, &fdXl, &fdZl);
859 printf("fdYl %d, fdXl %d, fdZl %d\n",fdYl, fdXl, fdZl);
861 for (ik=0; ik<fdZl; ik++)
864 fscanf(magfile, " %e ", &zz);
869 for (ik=0; ik<fdYl; ik++)
871 fscanf(magfile, " %e ", &yy);
875 for (ik=0; ik<81; ik++)
877 printf("fdZc %e,fdY %e\n", fdZc[ik],fdY[ik]);
880 fscanf(magfile," %e %e %e %e %e %e %e %e %e %e %e ", &fdYdel,&fdXdel,&fdZdel,&fdZmax,&fdZmin,&fdYmax,&fdYmin,&fdAx1,&fdCx1,&fdAx2,&fdCx2);
882 printf("fdYdel %e, fdXdel %e, fdZdel %e\n",fdYdel,fdXdel,fdZdel);
883 printf("fdZmax %e, fdZmin %e, fdYmax %e,fdYmin %e\n",fdZmax,fdZmin,fdYmax,fdYmin);
884 printf("fdAx1 %e, fdCx1 %e, fdAx2 %e, fdCx %e\n",fdAx1,fdCx1,fdAx2,fdCx2);
886 for (il=0; il<44; il++) {
887 for (im=0; im<81; im++) {
888 for (ik=0; ik<81; ik++) {
890 fscanf(magfile, " %e ", &by);
891 fdBcy[ik][im][il]=by;
896 for (il=0; il<44; il++) {
897 for (im=0; im<81; im++) {
898 for (ik=0; ik<81; ik++) {
900 fscanf(magfile, " %e ", &bx);
901 fdBcx[ik][im][il]=bx;
906 for (il=0; il<44; il++) {
907 for (im=0; im<81; im++) {
908 for (ik=0; ik<81; ik++) {
910 fscanf(magfile, " %e ", &bz);
911 fdBcz[ik][im][il]=bz;
915 //---------------------- Polar part ---------------------------------
917 printf("Polar part\n");
918 fscanf(magfile,"%d %d %d ", &fdZpl, &fdRn, &fdPhin);
919 printf("fdZpl %d, fdRn %d, fdPhin %d\n",fdZpl,fdRn,fdPhin);
921 printf(" fdZp array\n");
923 for (ik=0; ik<51; ik++)
925 fscanf(magfile, " %e ", &zzp);
927 printf(" %e\n",fdZp[ik]);
930 printf(" fdR array\n");
932 for (ik=0; ik<10; ik++)
934 fscanf(magfile, " %e ", &rr);
936 printf(" %e\n",fdR[ik]);
939 // printf("fdPhi array\n");
941 for (il=0; il<33; il++)
943 fscanf(magfile, " %e ", &phii);
945 // printf(" %e\n",fdPhi[il]);
948 fscanf(magfile," %e %e %e %e %e %e %e ",&fdZpdl,&fdPhid,&fdRdel,&fdZpmx,&fdZpmn,&fdRmax, &fdRmin);
950 printf("fdZpdl %e, fdPhid %e, fdRdel %e, fdZpmx %e, fdZpmn %e,fdRmax %e,fdRmin %e \n", fdZpdl,fdPhid, fdRdel,fdZpmx, fdZpmn,fdRmax, fdRmin);
953 for (il=0; il<33; il++) {
954 for (im=0; im<10; im++) {
955 for (ik=0; ik<51; ik++) {
956 fscanf(magfile, " %e ", &by);
957 fdBpy[ik][im][il]=by;
962 for (il=0; il<33; il++) {
963 for (im=0; im<10; im++) {
964 for (ik=0; ik<51; ik++) {
965 fscanf(magfile, " %e ", &bx);
966 fdBpx[ik][im][il]=bx;
972 for (il=0; il<33; il++) {
973 for (im=0; im<10; im++) {
974 for (ik=0; ik<51; ik++) {
975 fscanf(magfile, " %e ", &bz);
976 fdBpz[ik][im][il]=bz;
982 for (il=0; il<32; il++) {
983 for (im=0; im<2; im++) {
984 for (ik=0; ik<2; ik++) {
985 fscanf(magfile, " %e ", &bb);
992 printf("File %s not found !\n",fTitle.Data());
996 //________________________________