ROOT logo
void plotField(Int_t iField = 0)
{
//
//  
//  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

     AliMagF* field = new AliMagF("Maps","Maps", 1., 1., AliMagF::k5kG);

//     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();
	 }
     }
}



 plotField.C:1
 plotField.C:2
 plotField.C:3
 plotField.C:4
 plotField.C:5
 plotField.C:6
 plotField.C:7
 plotField.C:8
 plotField.C:9
 plotField.C:10
 plotField.C:11
 plotField.C:12
 plotField.C:13
 plotField.C:14
 plotField.C:15
 plotField.C:16
 plotField.C:17
 plotField.C:18
 plotField.C:19
 plotField.C:20
 plotField.C:21
 plotField.C:22
 plotField.C:23
 plotField.C:24
 plotField.C:25
 plotField.C:26
 plotField.C:27
 plotField.C:28
 plotField.C:29
 plotField.C:30
 plotField.C:31
 plotField.C:32
 plotField.C:33
 plotField.C:34
 plotField.C:35
 plotField.C:36
 plotField.C:37
 plotField.C:38
 plotField.C:39
 plotField.C:40
 plotField.C:41
 plotField.C:42
 plotField.C:43
 plotField.C:44
 plotField.C:45
 plotField.C:46
 plotField.C:47
 plotField.C:48
 plotField.C:49
 plotField.C:50
 plotField.C:51
 plotField.C:52
 plotField.C:53
 plotField.C:54
 plotField.C:55
 plotField.C:56
 plotField.C:57
 plotField.C:58
 plotField.C:59
 plotField.C:60
 plotField.C:61
 plotField.C:62
 plotField.C:63
 plotField.C:64
 plotField.C:65
 plotField.C:66
 plotField.C:67
 plotField.C:68
 plotField.C:69
 plotField.C:70
 plotField.C:71
 plotField.C:72
 plotField.C:73
 plotField.C:74
 plotField.C:75
 plotField.C:76
 plotField.C:77
 plotField.C:78
 plotField.C:79
 plotField.C:80
 plotField.C:81
 plotField.C:82
 plotField.C:83
 plotField.C:84
 plotField.C:85
 plotField.C:86
 plotField.C:87
 plotField.C:88
 plotField.C:89
 plotField.C:90
 plotField.C:91
 plotField.C:92
 plotField.C:93
 plotField.C:94
 plotField.C:95
 plotField.C:96
 plotField.C:97
 plotField.C:98
 plotField.C:99
 plotField.C:100
 plotField.C:101
 plotField.C:102
 plotField.C:103
 plotField.C:104
 plotField.C:105
 plotField.C:106
 plotField.C:107
 plotField.C:108
 plotField.C:109
 plotField.C:110
 plotField.C:111
 plotField.C:112
 plotField.C:113
 plotField.C:114
 plotField.C:115
 plotField.C:116
 plotField.C:117
 plotField.C:118
 plotField.C:119
 plotField.C:120
 plotField.C:121
 plotField.C:122
 plotField.C:123
 plotField.C:124
 plotField.C:125
 plotField.C:126
 plotField.C:127
 plotField.C:128
 plotField.C:129
 plotField.C:130
 plotField.C:131
 plotField.C:132
 plotField.C:133
 plotField.C:134
 plotField.C:135
 plotField.C:136
 plotField.C:137
 plotField.C:138
 plotField.C:139
 plotField.C:140