Developing #130
Работа с локальными магнитными полями
Status: | Закрыта | Start date: | 01/25/2018 | |
---|---|---|---|---|
Priority: | Высокий | Due date: | ||
Assignee: | Mikhail Kozlov | % Done: | 100% | |
Category: | Base | |||
Target version: | v-1.0 |
Description
Я посмотрел то, как реализовано создание магнитных полей в CbmRoot и FairRoot. Там магнитное поле в итоге посылается в TVirtualMC->SetMagField(); и потом используется в G4VMC в TGeant4 из TG4GeoManager->ConstructGlobalMagField();. то есть карта поля всегда в глобальной ск.
Так как у нас магнит совсем не в нуле, а сдвинут и повернут, хочется иметь возможность привязывать магнитное поле к локальной СК магнита.
У рут объемов есть такой метод: TGeoVolume::SetField(TObject*) и поля заданные в объемах геометрии потом собираются в TG4GeometryManager::ConstructLocalMagFields().
Я вижу два подхода:
1) Сделать в нашем ERRunSim интерфейс типа: run->SetField(fieldMap,volName);.Эту функциональность можно будет потом отправить в FairRoot.
2) Хранить магнитное поле вместе с геометрией магнита в root файле. В макросе создания геометрии будет вызван TGeoVolume::SetField(TObject*) для нужного объема, там же будет чтение карты поля нашими классами.
У второго подхода сразу вижу недостаток. При импорте из gdml нужно будет немного править скрипт имени Егора на подсовывание в момент конвертации магнитного поля.
Необходимо: реализовать возможнось использования локальных магнитных полей в er
History
#1 Updated by Vitaliy Schetinin almost 7 years ago
Из письма от Радека:
We usually have “static” magnets, that are not moved… From what I know, there is no framework way to do it. It is rather experiment specific. I would write the Field Class such that you can provide a rotation matrix to properly calculate the parameters inside it.
Мне предложение Радека по написанию клсса глобального магнитного поля с возможностью задавать ему матрицу поворота не нравится. Сделаем так, что наш фреймворк бедт поддерживать локальные магнитные поля. Допишу эту функциоанльность в наш ERRunSim.
#2 Updated by Sergey Belogurov almost 7 years ago
Надо добавить кнопку like :)
#3 Updated by Vitaliy Schetinin almost 7 years ago
#4 Updated by Vitaliy Schetinin almost 7 years ago
- % Done changed from 0 to 100
Закончил имплементацию локальных магнитных полей. Добавил для примера простую геометрию магнита.
Теперь надо делать так:
ERRunSim* run = new ERRunSim(); //TODO Выпилить отсюда ERTarget. Завести класс для пассивных объемов(чтобы было не важно что это) FairModule* magnet = new ERTarget("Magnet",1,kTRUE); magnet->SetGeometryFileName("magnet.geo.root"); run->AddModule(magnet); ERFieldConst* magField = new ERFieldConst(); magField->SetField(-50.,0.,0.);//values are in kG, 1T = 10kG magField->SetFieldRegion(-200000,200000.,-200000.,200000.,0., 100.); // in cm run->SetField(magField,"magnet");
где "magnet" - название volume к системе координат которого относится поле. И опаньки:
#5 Updated by Vitaliy Schetinin over 6 years ago
- Assignee changed from Vitaliy Schetinin to Mikhail Kozlov
В итоге выяснилось, что vmc не работает. Реализовано Мишей в ERFieldMap. Требует документирования.
#6 Updated by Vitaliy Schetinin over 6 years ago
- Target version changed from v-0.4 to v-1.0
#7 Updated by Vitaliy Schetinin over 6 years ago
- Status changed from Открыта to Закрыта