25 G4UImanager *ui = G4UImanager::GetUIpointer();
26 ui->ApplyCommand(
"/run/setCutForAGivenParticle proton 0 mm");
28 G4ScoringManager* ScM = G4ScoringManager::GetScoringManagerIfExist();
32 ui->ApplyCommand(
"/score/create/cylinderMesh cylMesh_1");
34 ui->ApplyCommand(
"/score/mesh/cylinderSize 12. 24. m");
37 ui->ApplyCommand(
"/score/mesh/nBin 120 480 1");
39 ui->ApplyCommand(
"/score/quantity/energyDeposit eDep");
41 ui->ApplyCommand(
"/score/quantity/cellFlux CF_photon");
42 ui->ApplyCommand(
"/score/filter/particle photonFilter gamma");
45 ui->ApplyCommand(
"/score/quantity/cellFlux CF_neutron");
46 ui->ApplyCommand(
"/score/filter/particle neutronFilter neutron");
48 ui->ApplyCommand(
"/score/quantity/cellFlux CF_HEneutron");
49 ui->ApplyCommand(
"/score/filter/particleWithKineticEnergy HEneutronFilter 20 7000000 MeV neutron");
51 ui->ApplyCommand(
"/score/quantity/doseDeposit dose");
53 ui->ApplyCommand(
"/score/close");
54 ui->ApplyCommand(
"/score/list");
56 G4int nPar = ScM->GetNumberOfMesh();
58 if(nPar<1) {
return; }
60 G4ParticleTable::G4PTblDicIterator* particleIterator
61 = G4ParticleTable::GetParticleTable()->GetIterator();
63 for(G4int iw=0;iw<nPar;iw++) {
64 G4VScoringMesh* mesh = ScM->GetMesh(iw);
65 G4VPhysicalVolume* pWorld
66 = G4TransportationManager::GetTransportationManager()
67 ->IsWorldExisting(ScM->GetWorldName(iw));
69 pWorld = G4TransportationManager::GetTransportationManager()
70 ->GetParallelWorld(ScM->GetWorldName(iw));
71 pWorld->SetName(ScM->GetWorldName(iw));
73 G4ParallelWorldScoringProcess* theParallelWorldScoringProcess
74 =
new G4ParallelWorldScoringProcess(ScM->GetWorldName(iw));
75 theParallelWorldScoringProcess->SetParallelWorld(ScM->GetWorldName(iw));
77 particleIterator->reset();
78 while( (*particleIterator)() ) {
79 G4ParticleDefinition*
particle = particleIterator->value();
80 G4ProcessManager* pmanager =
particle->GetProcessManager();
82 pmanager->AddProcess(theParallelWorldScoringProcess);
83 pmanager->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxAtRest);
84 pmanager->SetProcessOrderingToSecond(theParallelWorldScoringProcess, idxAlongStep);
85 pmanager->SetProcessOrderingToLast(theParallelWorldScoringProcess, idxPostStep);
90 mesh->Construct(pWorld);