@@ -66,8 +66,6 @@ remollGlobalField::remollGlobalField()
66
66
// Create generic messenger
67
67
fMessenger = new G4GenericMessenger (this ," /remoll/" ," Remoll properties" );
68
68
fMessenger ->DeclareMethod (" addfield" ,&remollGlobalField::AddNewField," Add magnetic field" );
69
- fMessenger ->DeclareMethod (" scalefield" ,&remollGlobalField::SetFieldScaleByString," Scale magnetic field" );
70
- fMessenger ->DeclareMethod (" magcurrent" ,&remollGlobalField::SetMagnetCurrentByString," Scale magnetic field by current" );
71
69
72
70
// Create global field messenger
73
71
fGlobalFieldMessenger = new G4GenericMessenger (this ," /remoll/field/" ," Remoll global field properties" );
@@ -80,6 +78,9 @@ remollGlobalField::remollGlobalField()
80
78
fGlobalFieldMessenger ->DeclareProperty (" deltachord" ,fDeltaChord ," Set delta chord for the chord finder" );
81
79
fGlobalFieldMessenger ->DeclareProperty (" deltaonestep" ,fDeltaOneStep ," Set delta one step for the field manager" );
82
80
fGlobalFieldMessenger ->DeclareProperty (" deltaintersection" ,fMinStep ," Set delta intersection for the field manager" );
81
+ fGlobalFieldMessenger ->DeclareMethod (" zoffset" ,&remollGlobalField::SetZOffset," Set magnetic field z offset" );
82
+ fGlobalFieldMessenger ->DeclareMethod (" scale" ,&remollGlobalField::SetFieldScale," Scale magnetic field by factor" );
83
+ fGlobalFieldMessenger ->DeclareMethod (" current" ,&remollGlobalField::SetMagnetCurrent," Scale magnetic field by current" );
83
84
fGlobalFieldMessenger ->DeclareMethod (" value" ,&remollGlobalField::PrintFieldValue," Print the field value at a given point (in m)" );
84
85
}
85
86
@@ -271,16 +272,16 @@ void remollGlobalField::GetFieldValue(const G4double p[], G4double *resB) const
271
272
}
272
273
}
273
274
274
- void remollGlobalField::SetFieldScaleByString ( G4String& name_scale )
275
+ void remollGlobalField::SetZOffset ( const G4String& name, G4double offset )
275
276
{
276
- std::istringstream iss (name_scale );
277
-
278
- G4String name, scalestr ;
279
- iss >> name ;
280
- iss >> scalestr;
281
-
282
- G4double scaleval = atof (scalestr) ;
283
- SetFieldScale (name, scaleval);
277
+ remollMagneticField *field = GetFieldByName (name );
278
+ if (field) {
279
+ G4AutoLock lock (&remollGlobalFieldMutex) ;
280
+ field-> SetZoffset (offset) ;
281
+ } else {
282
+ G4cerr << " WARNING " << __FILE__ << " line " << __LINE__
283
+ << " : field " << name << " offset failed " << G4endl ;
284
+ }
284
285
}
285
286
286
287
void remollGlobalField::SetFieldScale (const G4String& name, G4double scale)
@@ -295,31 +296,12 @@ void remollGlobalField::SetFieldScale(const G4String& name, G4double scale)
295
296
}
296
297
}
297
298
298
- void remollGlobalField::SetMagnetCurrentByString (G4String& name_scale)
299
- {
300
- std::istringstream iss (name_scale);
301
-
302
- G4String name, scalestr, scaleunit;
303
- iss >> name;
304
- iss >> scalestr;
305
- iss >> scaleunit;
306
-
307
- if (scaleunit != " A" ) {
308
- // FIXME: less snark and more functionality?
309
- G4cerr << __FILE__ << " line " << __LINE__ << " :\n\t Graaaah - just put the current for " << name << " in amps..." << G4endl;
310
- exit (1 );
311
- }
312
-
313
- G4double scaleval = atof (scalestr);
314
- SetMagnetCurrent (name, scaleval);
315
- }
316
-
317
- void remollGlobalField::SetMagnetCurrent (const G4String& name, G4double scale)
299
+ void remollGlobalField::SetMagnetCurrent (const G4String& name, G4double current)
318
300
{
319
301
remollMagneticField *field = GetFieldByName (name);
320
302
if (field) {
321
303
G4AutoLock lock (&remollGlobalFieldMutex);
322
- field->SetMagnetCurrent (scale );
304
+ field->SetMagnetCurrent (current );
323
305
} else {
324
306
G4cerr << " WARNING " << __FILE__ << " line " << __LINE__
325
307
<< " : field " << name << " scaling failed" << G4endl;
0 commit comments