homogenous magnetic field defined by radial coordinates [message #14508] |
Mon, 18 March 2013 17:35 |
Raphael Cervantes
Messages: 34 Registered: September 2012 Location: Stony Brook University
|
continuous participant |
From: *dyn.optonline.net
|
|
Hi guys,
I would like to create a magnetic field produced by a solenoid. Ive looked into cbmroot, and I the only thing I found was CbmFieldConst.cxx. However, that just creates a boxed magnetic field defined by a minimum x, minimum y, minimum z, maximum x, maximum y, maximum z. I would rather create a constant magnetic field defined by a minimum z, maximum z, minimum r, maximum r. Can anyone help me get started on this??
Thank you,
Raphael
|
|
|
Re: homogenous magnetic field defined by radial coordinates [message #14519 is a reply to message #14508] |
Tue, 19 March 2013 19:55 |
Mohammad Al-Turany
Messages: 518 Registered: April 2004 Location: GSI, Germany
|
first-grade participant |
From: *dip.t-dialin.net
|
|
Hi,
The only constrain we have is to implement the virtual methods of the FairField class. The simulation engines call the method:
void GetFieldValue(const Double_t point[3], Double_t* bField);
Which you have to implement in your subclass. Now how you calculate the field is up to you. if you look to PANDA there is different maps for the different regions (Solenoid, Dipole and the region between them).
https://subversion.gsi.de/trac/fairroot/browser/pandaroot/trunk/field
Another example is the Hades implementation:
https://subversion.gsi.de/trac/fairroot/browser/hadesroot/hadsim/HadesField.cxx
The class HadesField is forwarding the field value request to another class that make the calculation from the symmetry and the field map that is saved in cylindrical coordinates.
In other words Geant3/4 will call the method "GetFieldValue" above and you are free to calculate it as you like and fill the result in the bField[3].
cheers,
Mohammad
|
|
|