If one simply comment out the instantiation - or declaration - (and "addManager") of the MuPairProduction process, for mu+ and/or mu-, in the example N02, then one gets a core dump because the energy loss table are lost. Modified segment of : ExN02PhysicsList.cc : } else if( particleName == "mu+" || particleName == "mu-" ) { //muon // Construct processes for muon+ G4VProcess* aMultipleScattering = new G4MultipleScattering(); G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung(); // G4VProcess* aPairProduction = new G4MuPairProduction(); G4VProcess* anIonisation = new G4MuIonisation(); // add processes pmanager->AddProcess(anIonisation); pmanager->AddProcess(aMultipleScattering); pmanager->AddProcess(aBremsstrahlung); // pmanager->AddProcess(aPairProduction); // set ordering for AlongStepDoIt pmanager->SetProcessOrdering(aMultipleScattering, idxAlongStep, 1); pmanager->SetProcessOrdering(anIonisation, idxAlongStep, 2); // set ordering for PostStepDoIt pmanager->SetProcessOrdering(aMultipleScattering, idxPostStep, 1); pmanager->SetProcessOrdering(anIonisation, idxPostStep, 2); pmanager->SetProcessOrdering(aBremsstrahlung, idxPostStep, 3); // pmanager->SetProcessOrdering(aPairProduction, idxPostStep, 4); when shooting muons of ~130 MeV gives: ********************************************************************************************************* * G4Track Information: Particle = mu+, Track ID = 1, Parent ID = 0 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process 0 -2.5 cm 0 fm 0 fm 131 MeV 0 eV 0 fm 0 fmTargetPV initStep Program received signal SIGSEGV, Segmentation fault. G4RWTPtrOrderedVector<G4PhysicsVector>::operator() (this=0x0, i=1) at /local/data01/lebrun/geant4/geant4.2.0/source/global/STLInterface/g4rw/tpordvec.icc:47 47 if(rwsize<=i && i<std_pvector::size()) (gdb) quit (gdb) where #0 G4RWTPtrOrderedVector<G4PhysicsVector>::operator() (this=0x0, i=1) at /local/data01/lebrun/geant4/geant4.2.0/source/global/STLInterface/g4rw/tpordvec.icc:47 #1 0x80ac0b0 in G4VMuEnergyLoss::GetConstraints (this=0x84c5790, aParticle=0x8443108, aMaterial=0x84935b8) at src/G4VMuEnergyLoss.cc:352 #2 0x80ac69e in G4VMuEnergyLoss::GetContinuousStepLimit (this=0x84c5790, track=@0x8443938, currentMinimumStep=6.4237754657120725) at include/G4VMuEnergyLoss.icc:35 #3 0x812561a in G4VContinuousDiscreteProcess::AlongStepGetPhysicalInteractionLength () at /local/data01/lebrun/geant4/geant4.2.0/source/geometry/management/include/G4LogicalVolume.hh:205 #4 0x807f8c2 in G4SteppingManager::Stepping () at src/ExN02TrackerHit.cc:19 #5 0x8077842 in G4TrackingManager::ProcessOneTrack () at src/ExN02TrackerHit.cc:19 #6 0x8065d44 in G4EventManager::ProcessOneEvent () at src/ExN02TrackerHit.cc:19 #7 0x805264b in G4RunManager::DoEventLoop () at src/ExN02TrackerHit.cc:19 #8 0x805214e in G4RunManager::BeamOn () at src/ExN02TrackerHit.cc:19 #9 0x805b6ab in G4RunMessenger::SetNewValue () at src/ExN02TrackerHit.cc:19 ..... I found this feature running an other example of mine, so it is not peculiar to ExN02. I also think this is a feature of 4.2.0, I was able to run without muon induced pair production in 4.1.1. Paul.
This problem appeared only, because commenting out the muon pair production process you have decreased the number of processes which give contribution to the continuous energy loss , but you did not reset the corresponding data member in the energy loss process. By default the number of processes is 3 , they are the ionisation,bremsstrahlung and pair production. You can leave out one or more processes, but in this case you have to set the data member NbOfProcesses to the correct value using the SetNbOfProcesses(G4int) function. Add the line anIonisation->SetNbOfProcesses(2) ; to your physicslist , please. best regards Laszlo