+void plotField(Int_t iField = 0)
+{
+//
+// iField = 0 2 kG solenoid
+// 1 4 kG solenoid
+// 2 5 kG solenoid
+//
+// load necessary libraries
+ gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libminicern");
+ gSystem->Load("$(ROOTSYS)/lib/libPhysics");
+ gSystem->Load("$(ROOTSYS)/lib/libEG");
+ gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libSTEER");
+
+//
+//
+// create field map
+
+ AliMagFMaps* field = new AliMagFMaps(
+ "Maps","Maps",
+ 2, 1., 10., iField);
+
+// field-SetL3ConstField(1);
+
+//
+// get parameters
+ Float_t xMin, xMax, yMin, yMax, zMin, zMax;
+ Float_t dX, dY, dZ;
+ xMin = -350.;
+ xMax = 350.;
+ dX = (field->FieldMap(0))->DelX();
+ yMin = -350.;
+ yMax = 350.;
+ dY = (field->FieldMap(0))->DelY();
+ zMin = 250.;
+ zMax = 1450.;
+ dZ = (field->FieldMap(0))->DelZ();
+ Int_t nx = (xMax-xMin)/dX;
+ Int_t ny = (yMax-yMin)/dY;
+ Int_t nz = (zMax-zMin)/dZ;
+
+
+//
+// create histogram
+ TH2F* hMap = new TH2F("hMap", "Field Map y-z",
+ nz, zMin, zMax, ny, yMin, yMax);
+ TH2F* hMap1 = new TH2F("hMap1", "Field Map y-z",
+ nz, zMin, zMax, ny, yMin, yMax);
+ TH1F* hZ = new TH1F("hZ", "Field along Z",
+ nz, zMin, zMax);
+
+ TH2F* hVec = new TH2F("hVec", "Field Map y-z",
+ nz, zMin, zMax, ny, yMin, yMax);
+
+ TH2F* hCir = new TH2F("hCir", "Field Map y-z",
+ nz, zMin, zMax, ny, yMin, yMax);
+ Float_t bMax = 0.;
+ for (Int_t i = 0; i < nz; i++) {
+ for (Int_t j = 0; j < ny; j++) {
+ Float_t x[3];
+ Float_t b[3];
+
+ x[2] = zMin + i * dZ;
+ x[1] = yMin + j * dY;
+ x[0] = 0.;
+ field->Field(x, b);
+ Float_t bb = TMath::Sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]);
+ if (bb > bMax) bMax = bb;
+ hMap->Fill(x[2], x[1], bb);
+ }
+ }
+
+ for (Int_t i = 0; i < nz; i++) {
+ for (Int_t j = 0; j < ny; j++) {
+ x[2] = zMin + i * dZ;
+ x[1] = yMin + j * dY;
+ x[0] = 0.;
+ field->Field(x, b);
+ Float_t bb = TMath::Sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]);
+ Float_t db = (bMax-bb)/bMax*100.;
+
+ hMap1->Fill(x[2], x[1], db);
+ }
+ }
+
+ for (Int_t i = 0; i < nz; i++) {
+ x[2] = zMin + i * dZ +dZ/2.;
+ x[1] = 0.;
+ x[0] = 0.;
+ field->Field(x, b);
+ Float_t bb = TMath::Sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]);
+ hZ->Fill(x[2], bb);
+ }
+
+ TCanvas *c1 = new TCanvas("c1","Canvas 1",400,10,600,700);
+ hMap->Draw();
+ TCanvas *c2 = new TCanvas("c2","Canvas 2",400,10,600,700);
+ hZ->Draw();
+ TCanvas *c3 = new TCanvas("c3","Canvas 3",400,10,600,700);
+ hVec->Draw();
+
+ Float_t scale1 = 0.9*TMath::Sqrt(dZ*dZ+dY*dY)/bMax/2.;
+ Float_t scale2 = 0.005/bMax;
+ TArrow* arrow;
+
+
+ for (Int_t i = 0; i < nz; i++) {
+ for (Int_t j = 0; j < nx; j++) {
+ x[2] = zMin + i * dZ + dZ/2.;
+ x[0] = xMin + j * dX + dX/2.;
+ x[1] = 0.;
+ field->Field(x, b);
+ Float_t bb = TMath::Sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]);
+ b[2] *= scale1;
+ b[0] *= scale1;
+ Float_t width = 0.005+scale2*b[1];
+ arrow = new TArrow(x[2], x[0], x[2]+b[2], x[0]+b[0], width,"|>");
+ arrow->SetFillColor(1);
+ arrow->SetFillStyle(1001);
+ arrow->Draw();
+ c3->Modified();
+ c3->cd();
+ }
+ }
+
+ TCanvas *c4 = new TCanvas("c4","Canvas 4",400,10,600,700);
+ hCir->Draw();
+ for (Int_t i = 0; i < nz; i++) {
+ for (Int_t j = 0; j < ny; j++) {
+ x[2] = zMin + i * dZ + dZ/2.;
+ x[1] = yMin + j * dY + dY/2.;
+ x[0] = 0.;
+ field->Field(x, b);
+ Float_t bb = TMath::Sqrt(b[0]*b[0]+b[1]*b[1]+b[2]*b[2]);
+ TEllipse *ellipse;
+ ellipse= new TEllipse(x[2], x[1], b[1]*scale1/4., b[1]*scale1/4.,0,360,0);
+ ellipse->Draw();
+ c4->Modified();
+ c4->cd();
+ }
+ }
+}
+
+
+