41 ClassImp(TGeoGlobalMagField);
43 TGeoGlobalMagField *TGeoGlobalMagField::fgInstance = NULL;
48 TGeoGlobalMagField::TGeoGlobalMagField()
53 TVirtualMagField *field = fgInstance->GetField();
55 Fatal(
"TGeoGlobalMagField",
"A global field manager already existing and containing a field. \
56 \n If you want a new global field please set it via: \
57 \n TGeoGlobalMagField::Instance()->SetField(myField).");
59 Warning(
"TGeoGlobalMagField",
"A global field manager already existing. Please access via: \
60 \n TGeoGlobalMagField::Instance().");
63 gROOT->GetListOfGeometries()->Add(
this);
70 TGeoGlobalMagField::~TGeoGlobalMagField()
72 gROOT->GetListOfGeometries()->Remove(
this);
74 TVirtualMagField *field = fField;
84 void TGeoGlobalMagField::SetField(TVirtualMagField *field)
86 if (field==fField)
return;
90 Error(
"SetField",
"Global field is already set to <%s> and locked", fField->GetName());
94 Info(
"SetField",
"Previous magnetic field <%s> will be deleted", fField->GetName());
95 TVirtualMagField *oldfield = fField;
100 if (fField) Info(
"SetField",
"Global magnetic field set to <%s>", fField->GetName());
106 TGeoGlobalMagField *TGeoGlobalMagField::GetInstance()
114 TGeoGlobalMagField *TGeoGlobalMagField::Instance()
116 if (fgInstance)
return fgInstance;
117 return new TGeoGlobalMagField();
123 void TGeoGlobalMagField::Lock()
126 Warning(
"Lock",
"Cannot lock global magnetic field since this was not set yet");
130 Info(
"Lock",
"Global magnetic field <%s> is now locked", fField->GetName());