MagField

Revision as of 14:08, 15 Nov 2006
WikiSysop (Talk | contribs)

← Go to previous diff
Revision as of 14:46, 15 Nov 2006
WikiSysop (Talk | contribs)

Go to next diff →
Line 1: Line 1:
==Как заставить G4 делать в случае наличия поля то, что надо, а не то, что ему захочется== ==Как заставить G4 делать в случае наличия поля то, что надо, а не то, что ему захочется==
 +
 +[http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/Detector/electroMagneticField.html Здесь] вообще ничего не понятно! Можете попробовать разобраться сами, но я предупредил.
 +
 +Иерархия объектов, отвечающих за транспорт в поле, такая: [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4TransportationManager.hh&FileDir=geometry/navigation/include G4TransportationManager] содержит в себе [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4FieldManager.hh&FileDir=geometry/magneticfield/include G4FieldManager], который отвечает за поле для всех объемов. Кроме того каждый [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4LogicalVolume.hh&FileDir=geometry/management/include G4LogicalVolume] может иметь свой собственный G4FieldManager. А может и не иметь. Если все же имеет, то все дочерние объемы наследуют это поле, если не оговорено обратное (посредством собственного G4FieldManager).
 +
 +Каждый G4FieldManager содержит в себе [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4Field.hh&FileDir=geometry/magneticfield/include G4Field], который имеет виртуальный метод GetFieldValue(const double Point[4], double *fieldVal). Point -- это 4-вектор (x, y, z, t), таким образом поле может зависеть от времени. fieldVal это массив из шести компонент. Первые три это Bx, By, Bz -- напряженности магнитного поля, дальше Ex, Ey, Ez -- электрическое поле. Все в глобальных координатах и внутренних единицах G4. То есть, например, можно написать Bx == 100*gauss.
 +
 +Кроме того G4FieldManager имеет объект [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4ChordFinder.hh&FileDir=geometry/magneticfield/include G4ChordFinder], который занимается рассчетом траектории. Всю работу за G4ChordFinder на самом деле выполняет его член G4MagInt_Driver (IntegrationDriver), вызывает свои члены [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4MagIntegratorStepper.hh&FileDir=geometry/magneticfield/include G4MagIntegratorStepper] и [http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4EquationOfMotion.hh&FileDir=geometry/magneticfield/include G4EquationOfMotion]. Первый является решалкой ОДУ, второй необходимо менять крайне редко.
 +
 +Параметры, которые влияют на трекинг в поле:
 +
 + DeltaChord
 + DeltaIntersection
 + EpsMaxStep
 + EpsMinStep
 + MinimalStep
 + LargestAcceptableStep

Revision as of 14:46, 15 Nov 2006

Как заставить G4 делать в случае наличия поля то, что надо, а не то, что ему захочется

Здесь (http://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/Detector/electroMagneticField.html) вообще ничего не понятно! Можете попробовать разобраться сами, но я предупредил.

Иерархия объектов, отвечающих за транспорт в поле, такая: G4TransportationManager (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4TransportationManager.hh&FileDir=geometry/navigation/include) содержит в себе G4FieldManager (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4FieldManager.hh&FileDir=geometry/magneticfield/include), который отвечает за поле для всех объемов. Кроме того каждый G4LogicalVolume (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4LogicalVolume.hh&FileDir=geometry/management/include) может иметь свой собственный G4FieldManager. А может и не иметь. Если все же имеет, то все дочерние объемы наследуют это поле, если не оговорено обратное (посредством собственного G4FieldManager).

Каждый G4FieldManager содержит в себе G4Field (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4Field.hh&FileDir=geometry/magneticfield/include), который имеет виртуальный метод GetFieldValue(const double Point[4], double *fieldVal). Point -- это 4-вектор (x, y, z, t), таким образом поле может зависеть от времени. fieldVal это массив из шести компонент. Первые три это Bx, By, Bz -- напряженности магнитного поля, дальше Ex, Ey, Ez -- электрическое поле. Все в глобальных координатах и внутренних единицах G4. То есть, например, можно написать Bx == 100*gauss.

Кроме того G4FieldManager имеет объект G4ChordFinder (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4ChordFinder.hh&FileDir=geometry/magneticfield/include), который занимается рассчетом траектории. Всю работу за G4ChordFinder на самом деле выполняет его член G4MagInt_Driver (IntegrationDriver), вызывает свои члены G4MagIntegratorStepper (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4MagIntegratorStepper.hh&FileDir=geometry/magneticfield/include) и G4EquationOfMotion (http://pcitapiww.cern.ch/asdcgi/geant4/SRM/G4GenDoc.exe.pl?flag=2&FileName=G4EquationOfMotion.hh&FileDir=geometry/magneticfield/include). Первый является решалкой ОДУ, второй необходимо менять крайне редко.

Параметры, которые влияют на трекинг в поле:

DeltaChord
DeltaIntersection
EpsMaxStep
EpsMinStep
MinimalStep
LargestAcceptableStep
Edit page