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