FairShip
Loading...
Searching...
No Matches
ShipBellField Class Reference

#include <ShipBellField.h>

Inheritance diagram for ShipBellField:
Collaboration diagram for ShipBellField:

Public Member Functions

 ShipBellField ()
 
 ShipBellField (const char *name, Double_t Bpeak, Double_t Zmiddle, Int_t fOrient=1, Double_t Btube=500.)
 
 ShipBellField (ShipFieldPar *fieldPar)
 
virtual ~ShipBellField ()
 
virtual Double_t GetBx (Double_t x, Double_t y, Double_t z)
 
virtual Double_t GetBy (Double_t x, Double_t y, Double_t z)
 
virtual Double_t GetBz (Double_t x, Double_t y, Double_t z)
 
void IncludeTarget (Double_t xy, Double_t z, Double_t l)
 
virtual void Print ()
 

Private Member Functions

 ClassDef (ShipBellField, 2)
 

Private Attributes

Double_t fPeak
 
Double_t fMiddle
 
Double_t fBtube
 
Int_t fOrient
 
Bool_t fInclTarget
 
Double_t targetXY
 
Double_t targetZ0
 
Double_t targetL
 

Detailed Description

Definition at line 26 of file ShipBellField.h.

Constructor & Destructor Documentation

◆ ShipBellField() [1/3]

ShipBellField::ShipBellField ( )

Default constructor

Definition at line 29 of file ShipBellField.cxx.

30 : FairField(), fPeak(0.), fMiddle(0.), fBtube(0.) {
31 fType = 1;
32 fInclTarget = kFALSE;
33}
Bool_t fInclTarget
Definition: ShipBellField.h:64
Double_t fPeak
Definition: ShipBellField.h:60
Double_t fMiddle
Definition: ShipBellField.h:61
Double_t fBtube
Definition: ShipBellField.h:62

◆ ShipBellField() [2/3]

ShipBellField::ShipBellField ( const char *  name,
Double_t  Bpeak,
Double_t  Zmiddle,
Int_t  fOrient = 1,
Double_t  Btube = 500. 
)
explicit

Standard constructor

Parameters
nameObject name
Bpeakpeak field..
Zmiddlemiddle of the magnet (global coordinates)
Btubelargest radius of the tube ellips (inside)

Definition at line 37 of file ShipBellField.cxx.

39 : FairField(name), fPeak(Peak), fMiddle(Middle), fBtube(Btube) {
40 fType = 1;
41 fInclTarget = kFALSE;
42 fOrient = orientation;
43 fBtube = Btube;
44}

◆ ShipBellField() [3/3]

ShipBellField::ShipBellField ( ShipFieldPar fieldPar)
explicit

Constructor from ShipFieldPar

Definition at line 48 of file ShipBellField.cxx.

49 : FairField(), fPeak(0.), fMiddle(0.), fBtube(0.), fInclTarget(kFALSE) {
50 if (!fieldPar) {
51 cerr << "-W- ShipBellField::ShipBellField: empty parameter container!"
52 << endl;
53 fType = 0;
54 } else {
55 fPeak = fieldPar->GetPeak();
56 fMiddle = fieldPar->GetMiddle();
57 fBtube = fieldPar->GetBtube();
58 fType = fieldPar->GetType();
59 }
60}
Double_t GetMiddle() const
Definition: ShipFieldPar.h:52
Double_t GetPeak() const
Definition: ShipFieldPar.h:51
Int_t GetType() const
Definition: ShipFieldPar.h:36
Double_t GetBtube() const
Definition: ShipFieldPar.h:53

◆ ~ShipBellField()

ShipBellField::~ShipBellField ( )
virtual

Destructor

Definition at line 64 of file ShipBellField.cxx.

64{}

Member Function Documentation

◆ ClassDef()

ShipBellField::ClassDef ( ShipBellField  ,
 
)
private

◆ GetBx()

Double_t ShipBellField::GetBx ( Double_t  x,
Double_t  y,
Double_t  z 
)
virtual

Get components of field at a given point

Parameters
x,y,zPoint coordinates [cm]

Definition at line 75 of file ShipBellField.cxx.

75 {
76 if (fOrient == 1) {
77 return 0.;
78 } else {
79 Double_t zlocal = fabs(z - fMiddle) / 100.; // zlocal: convert cm->m
80 // old Bell field from Wilfried Flegel
81 // Double_t bx= fPeak/(1.+pow(fabs(zlocal)/2.1,6.));
82 // new field based on simulation of Davide Tommasini (22/1/2015)
83
84 Double_t bx = 0.;
85 // field in box 20 cm larger than inner tube.
86 if ((fabs(x) < 2.7 * m) && (fabs(y) < fBtube + 0.2 * m)) {
87 if (zlocal < 3.8) {
88 bx = 0.14361 * exp(-0.5 * pow((zlocal - 0.45479E-01) / 2.5046, 2.));
89 } else if (zlocal < 11.9) {
90 bx = 0.19532 - 0.61512E-01 * zlocal + 0.68447E-02 * pow(zlocal, 2.) -
91 0.25672E-03 * pow(zlocal, 3.);
92 }
93 bx = ((fPeak / tesla) / 0.14361) * bx * tesla;
94 }
95 // cout << "Bell GetBX " << x << ", " << y << ", " << z << ", Bx= " << bx <<
96 // endl;
97 return bx;
98 }
99}
Double_t tesla

◆ GetBy()

Double_t ShipBellField::GetBy ( Double_t  x,
Double_t  y,
Double_t  z 
)
virtual

Definition at line 104 of file ShipBellField.cxx.

104 {
105 Double_t by = 0.;
106 if (fInclTarget && z < targetZ0 + targetL && z > targetZ0) {
107 // check if in target area
108 if (fabs(x) < targetXY && fabs(y) < targetXY) {
109 by = 1 * tesla;
110 }
111 if (fabs(x) > 2 * targetXY && fabs(x) < 3 * targetXY &&
112 fabs(y) < targetXY) {
113 by = -1 * tesla;
114 }
115 } else if (fOrient == 1) {
116 Double_t zlocal = (z - fMiddle) / 100.;
117 by = fPeak / (1. + pow(fabs(zlocal) / 2.1, 6.));
118 // cout << "Bell GetBY " << z << ", By= " << by << endl;
119 }
120 return by;
121}
Double_t targetZ0
Definition: ShipBellField.h:66
Double_t targetXY
Definition: ShipBellField.h:65

◆ GetBz()

Double_t ShipBellField::GetBz ( Double_t  x,
Double_t  y,
Double_t  z 
)
virtual

Definition at line 125 of file ShipBellField.cxx.

125{ return 0.; }

◆ IncludeTarget()

void ShipBellField::IncludeTarget ( Double_t  xy,
Double_t  z,
Double_t  l 
)

Definition at line 68 of file ShipBellField.cxx.

68 {
69 fInclTarget = kTRUE;
70 targetXY = xy;
71 targetZ0 = z;
72 targetL = l;
73}
Double_t targetL
Definition: ShipBellField.h:67

◆ Print()

void ShipBellField::Print ( )
virtual

Screen output

Definition at line 129 of file ShipBellField.cxx.

129 {
130 cout << "======================================================" << endl;
131 cout << "---- " << fTitle << " : " << fName << endl;
132 cout << "----" << endl;
133 cout << "---- Field type : constant" << endl;
134 cout << "----" << endl;
135 cout << "---- Field regions : " << endl;
136 cout.precision(4);
137 cout << "======================================================" << endl;
138}

Member Data Documentation

◆ fBtube

Double_t ShipBellField::fBtube
private

Definition at line 62 of file ShipBellField.h.

◆ fInclTarget

Bool_t ShipBellField::fInclTarget
private

Definition at line 64 of file ShipBellField.h.

◆ fMiddle

Double_t ShipBellField::fMiddle
private

Definition at line 61 of file ShipBellField.h.

◆ fOrient

Int_t ShipBellField::fOrient
private

Definition at line 63 of file ShipBellField.h.

◆ fPeak

Double_t ShipBellField::fPeak
private

Field parameters

Definition at line 60 of file ShipBellField.h.

◆ targetL

Double_t ShipBellField::targetL
private

Definition at line 67 of file ShipBellField.h.

◆ targetXY

Double_t ShipBellField::targetXY
private

Definition at line 65 of file ShipBellField.h.

◆ targetZ0

Double_t ShipBellField::targetZ0
private

Definition at line 66 of file ShipBellField.h.


The documentation for this class was generated from the following files: