Segmentation Fault when creating local magnetic field!


I have been trying to modify exampleB1 to include a localised magnetic field, but I have run into a segmentation fault error which I don’t understand. The code compiles with no errors, but when I run it I get this segmentation fault.

I have copied sections of the code from example f03 and pasted them into the ConstructSDandField function in the B1DetectorConstrunction class.

The logical volume containing the field is a cylinder. Here is a snippet from the ConstructSDandField function:

void B1DetectorConstruction::ConstructSDandField()
  G4UniformMagField* fLocalMagneticField = new G4UniformMagField(G4ThreeVector(3.3*tesla,
                                                            0.0, // 0.5*tesla,

  G4Mag_UsualEqRhs* fLocalEquation = new G4Mag_UsualEqRhs(fLocalMagneticField);

  G4double fMinStep     = 0.25*um ; // minimal step of 1 mm is default

  G4FieldManager* fLocalFieldManager = new G4FieldManager();

  G4cout<<"F03FieldSetup::UpdateField> The minimal step is equal to "
        << fMinStep/mm <<" mm"<<G4endl;
  G4cout<<"                            Stepper Type chosen = " //<< fStepperType
        << G4endl;

  // 2. Create the steppers ( Note: this also deletes the previous ones. )

  G4MagIntegratorStepper* fLocalStepper= nullptr;
  fLocalStepper = new G4ClassicalRK4( fLocalEquation );
  G4cout<<"G4ClassicalRK4 (default) is called"<<G4endl;

  // 3. Create the chord finder(s)
  G4ChordFinder* fLocalChordFinder = new G4ChordFinder(fLocalMagneticField,


  // 4. Ensure that the field is updated (in Field manager & equation)

  G4bool allLocal = true;

//Logical volume containing the field
                                  allLocal );

  G4cout<< "End of COnstructSDandField"<<G4endl;

This is my output

Any feedback on what might be causing this segmentation fault error would be greatly appreciated.

Thank you very much!