├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── NMSAlphaNData
├── CMakeLists.txt
├── include
│ ├── NMSANSpectrum.hh
│ ├── NMSANYield.hh
│ ├── NMSANcsdata.hh
│ └── NMSStoppingPower.hh
└── src
│ ├── NMSANSpectrum.cc
│ ├── NMSANYield.cc
│ ├── NMSANcsdata.cc
│ └── NMSStoppingPower.cc
├── NMSMaterialDecay
├── CMakeLists.txt
├── LICENSE
├── README.md
├── include
│ ├── NMSANSource.hh
│ ├── NMSAlphaNReaction.hh
│ ├── NMSAlphaNSet.hh
│ ├── NMSAlphaSingleIsoDecaySource.hh
│ ├── NMSMaterialDecaySettings.hh
│ ├── NMSMaterialDecaySource.hh
│ ├── NMSMaterialDecaySourceMessenger.hh
│ ├── NMSMultipleDecaySource.hh
│ ├── NMSNewSingleDecaySource.hh
│ ├── NMSPosDistribution.hh
│ ├── NMSPrimaryUserInformation.hh
│ ├── NMSSFSingleIsoDecaySource.hh
│ └── fissionEventData.hh
└── src
│ ├── NMSANSource.cc
│ ├── NMSAlphaNSet.cc
│ ├── NMSAlphaSingleIsoDecaySource.cc
│ ├── NMSMaterialDecaySettings.cc
│ ├── NMSMaterialDecaySource.cc
│ ├── NMSMaterialDecaySourceMessenger.cc
│ ├── NMSMultipleDecaySource.cc
│ ├── NMSNewSingleDecaySource.cc
│ ├── NMSPosDistribution.cc
│ ├── NMSPrimaryUserInformation.cc
│ ├── NMSSFSingleIsoDecaySource.cc
│ └── fissionEventData.cc
├── NMSPulsetrainAnalysis
├── CMakeLists.txt
├── example
│ ├── cf252_example_pulsetrain_list
│ └── nmspa_example.cc
├── include
│ ├── NMSDetectedEvent.hh
│ ├── NMSDetectedEventSet.hh
│ ├── NMSMultiplicityMeasurementSetting.hh
│ ├── NMSMultiplicityResult.hh
│ ├── NMSPulsetrainManager.hh
│ └── NMSSimpleEvent.hh
└── src
│ ├── LLResultsAllEventsBackward.cc
│ ├── LLResultsAllEventsForward.cc
│ ├── LLResultsAllEventsForwardF.cc
│ ├── LLResultsSingleEventBackward.cc
│ ├── LLResultsSingleEventForward.cc
│ ├── NMSDetectedEvent.cc
│ ├── NMSDetectedEventSet.cc
│ ├── NMSMultiplicityResult.cc
│ ├── NMSPulsetrainManager.cc
│ ├── ResultsAllEvents.cc
│ ├── ResultsAllEventsForward.cc
│ ├── ResultsAllTimeSteps.cc
│ └── ResultsFastForward.cc
├── README.md
├── cmd.mac
├── fission
├── CMakeLists.txt
├── changes
├── include
│ ├── Fission.h
│ ├── Fission.hh
│ ├── Fission.inc
│ └── fissionEvent.h
└── src
│ ├── COPYRIGHT.TXT
│ ├── COPYRIGHT_FORTRAN.TXT
│ ├── COPYRIGHT_FREYA.TXT
│ ├── Fission.cc
│ ├── Makefile_copyright
│ ├── Readme
│ ├── Recipe_mcnpx.txt
│ ├── SmpFreya.cc
│ ├── SmpGEng.cc
│ ├── SmpIsoDir.cc
│ ├── SmpNEngCf252.cc
│ ├── SmpNPEnergyCons.cc
│ ├── SmpNVel.cc
│ ├── SmpNuDistDataPu239.cc
│ ├── SmpNuDistDataPu239_241.cc
│ ├── SmpNuDistDataPu239_241_MC.cc
│ ├── SmpNuDistDataU232_234_236_238.cc
│ ├── SmpNuDistDataU232_234_236_238_MC.cc
│ ├── SmpNuDistDataU233_235.cc
│ ├── SmpNuDistDataU233_235_MC.cc
│ ├── SmpNuDistDataU235.cc
│ ├── SmpNuDistDataU238.cc
│ ├── SmpNugDist.cc
│ ├── SmpPVel.cc
│ ├── SmpSpNuDistData.cc
│ ├── SmpSpNubarData.cc
│ ├── SmpSpNugDistData.cc
│ ├── SmpSpWatt.cc
│ ├── SmpTerrell.cc
│ ├── SmpWatt.cc
│ ├── allocateMem.cc
│ ├── copyright.cmake
│ ├── erf.cc
│ ├── fissionEvent.cc
│ ├── fissionerr.cc
│ ├── getNSepEng.cc
│ ├── getNubarg.cc
│ ├── getTotEngN.cc
│ ├── getTotEngNEnergyCons.cc
│ ├── getTotEngNEnergyConsAllActinides.cc
│ ├── getTotEngP.cc
│ ├── getTotEngPEnergyCons.cc
│ ├── getTotEngPEnergyConsAllActinides.cc
│ ├── msFREYA_data.F90
│ ├── msFREYA_error.F90
│ ├── msFREYA_event.F90
│ ├── msFREYA_interfaces.F90
│ ├── msFREYA_setup.F90
│ ├── normsinv.cc
│ └── rngc.cc
├── gdml
├── detector
│ ├── AWCC.gdml
│ └── PSMC.gdml
├── samples
│ ├── ep1-c1.gdml
│ ├── ep1-c2.gdml
│ ├── ep1-c3b.gdml
│ ├── ep1-c3s.gdml
│ ├── ep1-c4b.gdml
│ ├── ep1-c4s.gdml
│ ├── ep3-2.gdml
│ ├── ep3-c1.gdml
│ ├── ep3-c3.gdml
│ ├── ep3-c4.gdml
│ ├── ep3-c5.gdml
│ ├── ep3-c6.gdml
│ ├── pm1.gdml
│ ├── pm2.gdml
│ ├── pm3.gdml
│ ├── puo2-10.gdml
│ ├── puo2-20.gdml
│ ├── puo2-21.gdml
│ ├── puo2-22.gdml
│ └── puo2-23.gdml
└── schema
│ ├── gdml.xsd
│ ├── gdml_core.xsd
│ ├── gdml_define.xsd
│ ├── gdml_extensions.xsd
│ ├── gdml_materials.xsd
│ ├── gdml_parameterised.xsd
│ ├── gdml_replicas.xsd
│ └── gdml_solids.xsd
├── include
├── NMSAnalysisManager.hh
├── NMSAnalysisManagerMessenger.hh
├── NMSDetectorConstruction.hh
├── NMSEventAction.hh
├── NMSHadronElasticPhysicsHP_Thermal.hh
├── NMSPrimaryGeneratorAction.hh
├── NMSPrimaryGeneratorActionGPS.hh
├── NMSRunAction.hh
├── NMSRunManager.hh
├── NMSRunManagerMessenger.hh
├── NMSSteppingAction.hh
├── NMSTrackingAction.hh
└── NMS_QGSP_BIC_HP_Thermal.hh
├── macros
├── ep1-c1-1000_0_0.mac
├── ep1-c1-100_0_0.mac
├── ep1-c1-10_0_0.mac
├── ep1-c2-1000_0_0.mac
├── ep1-c2-100_0_0.mac
├── ep1-c2-10_0_0.mac
├── ep1-c3b_0_0.mac
├── ep1-c3s_0_0.mac
├── ep1-c4b_0_0.mac
├── ep1-c4s_0_0.mac
├── ep3-c3_0_0.mac
├── ep3-c4_0_0.mac
├── ep3-c5_0_0.mac
├── ep3-c6_0_0.mac
├── pm1_0_0.mac
├── pm2_0_0.mac
├── pm3_0_0.mac
├── puo2-10_0_0.mac
├── puo2-20_0_0.mac
├── puo2-21_0_0.mac
├── puo2-22_0_0.mac
└── puo2-23_0_0.mac
├── nms.cc
├── src
├── NMSAnalysisManager.cc
├── NMSAnalysisManagerMessenger.cc
├── NMSDetectorConstruction.cc
├── NMSEventAction.cc
├── NMSHadronElasticPhysicsHP_Thermal.cc
├── NMSPrimaryGeneratorAction.cc
├── NMSPrimaryGeneratorActionGPS.cc
├── NMSRunAction.cc
├── NMSRunManager.cc
├── NMSRunManagerMessenger.cc
├── NMSSteppingAction.cc
├── NMSTrackingAction.cc
└── NMS_QGSP_BIC_HP_Thermal.cc
├── tools
├── JENDL-conversion
│ ├── 451-lines.patch
│ ├── README.org
│ ├── convert.py
│ ├── download.sh
│ ├── endfgeant4converter.py
│ ├── endftogeant4.py
│ ├── geantdata.py
│ ├── headline.patch
│ ├── newmf.py
│ ├── patch.sh
│ └── rename-ZAID.py
└── ziegler_low_e_table
└── vis.mac
/.gitignore:
--------------------------------------------------------------------------------
1 | *~
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
2 | project(nms)
3 |
4 |
5 | message(STATUS "Building NMS (main cmake folder)")
6 | message(STATUS "Source folder: ${CMAKE_SOURCE_DIR}")
7 |
8 | # FISSION (in source tree)
9 | add_subdirectory(fission)
10 | include_directories(${PROJECT_SOURCE_DIR}/fission/include)
11 |
12 | # NMS libraries in project tree
13 | add_subdirectory(NMSAlphaNData)
14 | include_directories(${PROJECT_SOURCE_DIR}/NMSAlphaNData/include)
15 | add_subdirectory(NMSMaterialDecay)
16 | include_directories(${PROJECT_SOURCE_DIR}/NMSMaterialDecay/include)
17 | add_subdirectory(NMSPulsetrainAnalysis)
18 | include_directories(${PROJECT_SOURCE_DIR}/NMSPulsetrainAnalysis/include)
19 |
20 |
21 | # GEANT
22 | find_package(Geant4 REQUIRED vis_all)
23 | include(${Geant4_USE_FILE})
24 | include_directories(${PROJECT_SOURCE_DIR}/include)
25 |
26 | # SOURCES AND HEADERS of PROJECT
27 | file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
28 | file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
29 |
30 | # EXECUTABLE
31 | add_executable(nms nms.cc ${sources} ${headers})
32 |
33 | ###### LINK TO LIBRARIES
34 |
35 | #----- Geant
36 | target_link_libraries(nms ${Geant4_LIBRARIES})
37 |
38 | #----- NMSAlphaNData
39 | target_link_libraries(nms NMSAlphaNData)
40 |
41 | #----- NMSMaterialDecay
42 | target_link_libraries(nms NMSMaterialDecay)
43 |
44 | #----- NMSPulsetrainAnalysis
45 | target_link_libraries(nms NMSPulsetrainAnalysis)
46 |
47 | #----- FISSION Lib from LLNL (FIXME: add cmake for compilation of sources later)
48 | target_link_libraries(nms Fission)
49 |
50 |
51 | # There was a good reason for linking NMSMaterialDecay before Fission!
52 |
53 | file(GLOB ALL_MAC *.mac)
54 |
55 |
56 | foreach(_macfile ${ALL_MAC})
57 | message(STATUS "Copy .mac script '${_macfile}'")
58 | configure_file(${_macfile} ${PROJECT_BINARY_DIR} COPYONLY)
59 | endforeach()
60 |
61 | # copy GDML files, schema files and examples
62 | file(COPY ${PROJECT_SOURCE_DIR}/gdml DESTINATION ${PROJECT_BINARY_DIR})
63 | file(COPY ${PROJECT_SOURCE_DIR}/macros DESTINATION ${PROJECT_BINARY_DIR})
64 | file(COPY ${PROJECT_SOURCE_DIR}/examples DESTINATION ${PROJECT_BINARY_DIR})
65 |
--------------------------------------------------------------------------------
/NMSAlphaNData/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #NMSAlphaNData Library
2 |
3 | message(STATUS "Building NMSAlphaNData")
4 | message(STATUS "Source folder: ${CMAKE_SOURCE_DIR}")
5 |
6 | cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
7 | project(NMSAlphaNData)
8 |
9 | find_package(Geant4)
10 | include(${Geant4_USE_FILE})
11 | include_directories(${PROJECT_SOURCE_DIR}/include)
12 |
13 | # GEANT
14 | find_package(Geant4 REQUIRED vis_all)
15 | include(${Geant4_USE_FILE})
16 | include_directories(${PROJECT_SOURCE_DIR}/include)
17 |
18 | # SOURCES AND HEADERS of PROJECT
19 | file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
20 | file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
21 |
22 | add_library(NMSAlphaNData ${sources} ${headers})
23 | target_link_libraries(NMSAlphaNData ${Geant4_LIBRARIES})
24 |
25 | # add_executable (test_AlphaNData test_AlphaNData.cc)
26 | # target_link_libraries (test_AlphaNData NMSAlphaNData)
27 | # target_link_libraries (test_AlphaNData ${Geant4_LIBRARIES})
28 |
29 | # add_executable (test_AlphaNSpectrum test_AlphaNSpectrum.cc)
30 | # target_link_libraries (test_AlphaNSpectrum NMSAlphaNData)
31 | # target_link_libraries (test_AlphaNSpectrum ${Geant4_LIBRARIES})
32 |
33 | # add_executable (test_stoppingpower test_stoppingpower.cc)
34 | # target_link_libraries (test_stoppingpower NMSAlphaNData)
35 | # target_link_libraries (test_stoppingpower ${Geant4_LIBRARIES})
36 |
37 | install (FILES ${headers} DESTINATION include)
38 | install (TARGETS NMSAlphaNData DESTINATION lib)
39 | # install (TARGETS test_AlphaNData DESTINATION bin )
40 |
41 |
--------------------------------------------------------------------------------
/NMSAlphaNData/include/NMSANSpectrum.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSANSPECTRUM_H
24 | #define NMSANSPECTRUM_H 1
25 |
26 | #include "G4Material.hh"
27 | #include "G4LPhysicsFreeVector.hh"
28 |
29 | #include "NMSStoppingPower.hh"
30 | #include "NMSANcsdata.hh"
31 |
32 | struct spectrumdata {
33 | G4double intensity;
34 | G4double energy;
35 | G4LPhysicsFreeVector * spectrum;
36 | };
37 |
38 | class NMSANSpectrum {
39 | public:
40 | NMSANSpectrum();
41 | ~NMSANSpectrum();
42 |
43 | void SetUseMT91(G4bool mt91b = true) { mt91 = mt91b; };
44 | G4bool GetUseMT91() { return mt91; };
45 |
46 | G4LPhysicsFreeVector * fromSource(G4Material * mat);
47 | G4LPhysicsFreeVector * fromEnergy(G4double E, G4Material * mat);
48 | G4LPhysicsFreeVector * fromEnergy(G4double E, G4Material * mat, const G4Isotope * iso);
49 | G4LPhysicsFreeVector * fromEnergy(G4double E, G4Material * mat, const G4Isotope * iso, G4int lidx);
50 |
51 | void clear();
52 |
53 | private:
54 | G4int verboseLevel;
55 |
56 | G4int neutronbins;
57 | G4double neutronEmin;
58 | G4double neutronEmax;
59 | G4double ngridbinwidth;
60 |
61 | G4bool mt91;
62 |
63 | std::vector spectrumvector;
64 | NMSStoppingPower * stoppingData;
65 | NMSANcsdata * csData;
66 | };
67 |
68 | #endif /* NMSANSPECTRUM_H */
69 |
70 |
--------------------------------------------------------------------------------
/NMSAlphaNData/include/NMSANYield.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSANYield_h
24 | #define NMSANYield_h 1
25 |
26 | #include "G4Material.hh"
27 | #include "G4Element.hh"
28 | #include "G4Isotope.hh"
29 | #include "G4LPhysicsFreeVector.hh"
30 | #include "G4SystemOfUnits.hh"
31 |
32 | #include "G4IonTable.hh"
33 | #include "G4RadioactiveDecay.hh"
34 | #include "G4AlphaDecayChannel.hh"
35 | #include "G4AlphaDecay.hh"
36 | #include "G4DecayProducts.hh"
37 |
38 | #include "NMSANcsdata.hh"
39 |
40 | #include "NMSStoppingPower.hh"
41 |
42 | struct yielddata {
43 | G4double activity;
44 | G4double energy;
45 | G4double yieldfore;
46 | G4double yield;
47 | };
48 |
49 | class NMSANYield
50 | {
51 | public:
52 | NMSANYield();
53 | virtual ~NMSANYield();
54 |
55 | G4double fromSource(G4Material * mat);
56 | G4double alphaActivityFromSource(G4Material * mat);
57 | G4double fromEnergy(G4double E, G4Material * mat);
58 |
59 | void initialize(); // store cs data in vector, use method from NMSAlphaLE
60 |
61 | void SetVerboseLevel(G4int i) { verboseLevel = i; }
62 | G4int GetVerboseLevel() { return verboseLevel; }
63 |
64 | public:
65 | static const G4int csno;
66 | static const G4int csarray[17][2];
67 | static const G4String nameString[100];
68 |
69 | // Yield Table
70 | // G4PhysicsVector
71 | private:
72 | G4int verboseLevel;
73 | std::vector csIsoVector;
74 | std::vector yieldvector;
75 |
76 | NMSANcsdata * csData;
77 | NMSStoppingPower * stoppingData;
78 | };
79 |
80 |
81 | #endif /* NMSANYield_h */
82 |
--------------------------------------------------------------------------------
/NMSAlphaNData/include/NMSANcsdata.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSANCSDATA_H
24 | #define NMSANCSDATA_H
25 |
26 | #include "G4LPhysicsFreeVector.hh"
27 |
28 | struct inelasticdata {
29 | G4int mt;
30 | G4double Qex;
31 | G4LPhysicsFreeVector * cs;
32 | };
33 |
34 | class NMSANcsdata {
35 | public:
36 | static NMSANcsdata* Instance();
37 |
38 | NMSANcsdata();
39 | ~NMSANcsdata();
40 |
41 | void Init();
42 |
43 | void SetVerboseLevel(G4int i) { verboseLevel = i; }
44 | G4int GetVerboseLevel() { return verboseLevel; }
45 |
46 | G4int no() {return csno; }
47 | G4bool has(G4int Z, G4int A);
48 | G4int index(G4int Z, G4int A);
49 | G4LPhysicsFreeVector * getcsVector(G4int idx);
50 |
51 | G4int inelasticNo(G4int idx);
52 | G4LPhysicsFreeVector * getInelasticCsVector(G4int idx, G4int ridx);
53 | G4int getInelasticCsMT(G4int idx, G4int ridx);
54 | G4double getInelasticCsQex(G4int idx, G4int ridx);
55 |
56 | public:
57 | static const G4int csno;
58 | static const G4int csarray[17][2];
59 | static const G4String nameString[100];
60 |
61 | private:
62 | G4int verboseLevel;
63 | std::vector csIsoVector;
64 | std::vector< std::vector< inelasticdata > > inelasticCsVector;
65 |
66 | };
67 |
68 | #endif /* NMSANCSDATA_H */
69 |
--------------------------------------------------------------------------------
/NMSAlphaNData/include/NMSStoppingPower.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSStoppingPower_h
24 | #define NMSStoppingPower_h 1
25 |
26 | #include "G4Material.hh"
27 | #include "G4ASTARStopping.hh"
28 | #include "G4EmCalculator.hh"
29 | #include "G4Alpha.hh"
30 | #include "G4SystemOfUnits.hh"
31 | #include "G4LossTableManager.hh"
32 |
33 | enum StoppingDataSource { STOPPINGPOWER_DS_G4EMCALCULATOR,
34 | STOPPINGPOWER_DS_ZIEGLER_T3,
35 | STOPPINGPOWER_DS_ASTAR,
36 | STOPPINGPOWER_DS_ASTARZIEGLER
37 | };
38 |
39 |
40 | class NMSStoppingPower
41 | {
42 | public:
43 | NMSStoppingPower();
44 | virtual ~NMSStoppingPower();
45 | void initialize();
46 |
47 | G4double getDEDX(G4double E, G4int Z);
48 | G4double getDEDX(G4double E, G4Material * mat);
49 | G4double getDEDXfromZieglerT3(G4double E, G4Material* mat);
50 | G4double getDEDXfromEMCal(G4double E, G4Material* mat);
51 | G4double getDEDXfromASTAR(G4double E, G4Material* mat);
52 |
53 | G4bool ASTARapplicable(G4double E, G4Material* mat);
54 |
55 | void setDataSource(StoppingDataSource newds);
56 | StoppingDataSource getDataSource() { return ds; }
57 |
58 | private:
59 | G4bool initialized;
60 | StoppingDataSource ds;
61 | G4ParticleDefinition * alpha;
62 | G4ASTARStopping * astar;
63 | G4EmCalculator emcal;
64 | G4String emprocessname;
65 |
66 | G4double zieglerdata[92][5];
67 | };
68 |
69 |
70 |
71 | #endif /* NMSStoppingPower_h */
72 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | #NMSMaterialDecay Library
2 |
3 | message(STATUS "Building NMSMaterialDecay")
4 | message(STATUS "Source folder: ${CMAKE_SOURCE_DIR}")
5 |
6 | cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
7 | project(NMSMaterialDecay)
8 |
9 | include_directories(/geant/fission)
10 |
11 | find_package(Geant4)
12 | include(${Geant4_USE_FILE})
13 | include_directories(${PROJECT_SOURCE_DIR}/include)
14 | include_directories(${PROJECT_SOURCE_DIR}/../NMSAlphaNData/include)
15 |
16 | file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
17 | file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
18 |
19 | add_library(NMSMaterialDecay ${sources} ${headers})
20 | target_link_libraries(NMSMaterialDecay NMSAlphaNData)
21 |
22 | install (FILES ${headers} DESTINATION include)
23 | install (TARGETS NMSMaterialDecay DESTINATION lib)
24 |
25 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/README.md:
--------------------------------------------------------------------------------
1 | ### NMSMaterialDecay
2 |
3 | The NMSMaterialDecay library provides a particle source that can be placed in any Geant4 application. It can creates starting α particles or electrons according to either alpha- and beta-decays, as well as neutrons or gammas from spontaneous fission of given isotopes. The isotopes are taken from a source material.
4 |
5 | The library forms a part of the application NMS (Neutron Multiplicity Simulation)
6 |
7 | #### Requirements
8 |
9 | - CMake
10 | - Geant4, version >= 9.6
11 | - Fission, from the Physics Simulation Package (http://nuclear.llnl.gov/simulation/main.html)
12 |
13 | #### Build
14 | 1. Extract / clone repository in a directory ("A").
15 | 2. Create a new directory ("B") and go to B.
16 | 3. Edit CMakeLists.txt to reflect your location of fission
17 | 4. Execute `cmake`
18 | 5. Execute `make` / `make install`
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSANSource.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSANSource_h
24 | #define NMSANSource_h 1
25 |
26 | #include "G4DataVector.hh"
27 | #include "Randomize.hh"
28 |
29 | #include "G4IonTable.hh"
30 | #include "G4RadioactiveDecay.hh"
31 | #include "G4VDecayChannel.hh"
32 | #include "G4DecayProducts.hh"
33 | #include "G4AlphaDecayChannel.hh"
34 |
35 | #include "G4LPhysicsFreeVector.hh"
36 |
37 | #include "G4SystemOfUnits.hh"
38 | #include "G4PhysicalConstants.hh"
39 |
40 | #include "G4SPSPosDistribution.hh"
41 | #include "G4SPSAngDistribution.hh"
42 |
43 | #include "G4SingleParticleSource.hh"
44 |
45 | #include "NMSPrimaryUserInformation.hh"
46 | #include "NMSNewSingleDecaySource.hh"
47 | #include "NMSMaterialDecaySettings.hh"
48 |
49 | static G4int NMSANCalcNeutronBins = 1000;
50 |
51 | class NMSANSource : public NMSNewSingleDecaySource
52 | {
53 | public:
54 | NMSANSource();
55 | ~NMSANSource();
56 |
57 | void GeneratePrimaryVertex(G4Event* anEvent);
58 |
59 | G4double SampleEnergy();
60 | G4ThreeVector SamplePosition();
61 | G4ThreeVector SampleDirection();
62 |
63 | G4double GetEnergyFromSampleIndex();
64 | G4ThreeVector GetDirectionFromSampleIndex();
65 |
66 | void Init();
67 | void WriteANSpectrum(G4String filename);
68 |
69 | G4bool neutronSource() {
70 | return true;
71 | }
72 | G4double neutronPerEvent() { return 1.0; }
73 |
74 | private:
75 | G4int lastSampleIndex;
76 |
77 | NMSMaterialDecaySettings * nmsmdsSettings;
78 |
79 | G4LPhysicsFreeVector * nspectrum;
80 | };
81 |
82 | #endif /* NMSANSource_h */
83 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSAlphaNReaction.hh:
--------------------------------------------------------------------------------
1 | /* Copyright (C) 2014, Moritz Kütt
2 | *
3 | * This file is part of NMSMaterialDecay.
4 | *
5 | * NMSMaterialDecay is free software: you can redistribute it and/or modify
6 | * it under the terms of the GNU General Public License as published by
7 | * the Free Software Foundation, either version 3 of the License, or
8 | * (at your option) any later version.
9 | *
10 | * NMSMaterialDecay is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with NMSMaterialDecay. If not, see .
17 | *
18 | */
19 | /*
20 | * ONMS - Open Neutron Multiplicity Simulation
21 | *
22 | *
23 | * Copyright (C) 2013-2016 Moritz Kütt
24 | *
25 | * This program is free software: you can redistribute it and/or modify
26 | * it under the terms of the GNU General Public License as published by
27 | * the Free Software Foundation, either version 3 of the License, or
28 | * (at your option) any later version.
29 | *
30 | * This program is distributed in the hope that it will be useful,
31 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
32 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 | * GNU General Public License for more details.
34 | *
35 | * You should have received a copy of the GNU General Public License
36 | * along with this program. If not, see .
37 | *
38 | * Contact: moritz@nuclearfreesoftware.org
39 | */
40 |
41 |
42 | #ifndef NMSAlphaNReaction_h
43 | #define NMSAlphaNReaction_h 1
44 |
45 | #include "G4ThreeVector.hh"
46 |
47 | struct NMSAlphaNReaction {
48 | G4ThreeVector position;
49 | G4ThreeVector alphaDirection;
50 | G4double energy;
51 | G4double time;
52 | };
53 |
54 | #endif
55 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSAlphaNSet.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSAlphaNSet_h
24 | #define NMSAlphaNSet_h 1
25 |
26 | #include
27 | #include
28 | #include
29 | #include
30 |
31 | #include "G4SystemOfUnits.hh"
32 |
33 | #include "NMSAlphaNReaction.hh"
34 |
35 | class NMSAlphaNSet : public std::vector {
36 | public:
37 | NMSAlphaNSet();
38 | virtual ~NMSAlphaNSet();
39 |
40 | void saveToFile(G4String filename);
41 | void loadFromFile(G4String filename);
42 |
43 | private:
44 | inline bool file_exists(G4String filename) {
45 | struct stat buffer;
46 | return (stat (filename.c_str(), &buffer) == 0);
47 | }
48 |
49 | };
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSAlphaSingleIsoDecaySource.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSAlphaSingleIsoDecaySource_h
24 | #define NMSAlphaSingleIsoDecaySource_h 1
25 |
26 | #include "G4DataVector.hh"
27 | #include "Randomize.hh"
28 |
29 | #include "G4IonTable.hh"
30 | #include "G4RadioactiveDecay.hh"
31 | #include "G4VDecayChannel.hh"
32 | #include "G4DecayProducts.hh"
33 | #include "G4AlphaDecayChannel.hh"
34 |
35 | #include "G4SystemOfUnits.hh"
36 | #include "G4PhysicalConstants.hh"
37 |
38 | #include "G4SPSPosDistribution.hh"
39 | #include "G4SPSAngDistribution.hh"
40 |
41 | #include "G4SingleParticleSource.hh"
42 |
43 | #include "NMSPrimaryUserInformation.hh"
44 | #include "NMSNewSingleDecaySource.hh"
45 |
46 | class NMSAlphaSingleIsoDecaySource : public NMSNewSingleDecaySource
47 | {
48 | public:
49 | NMSAlphaSingleIsoDecaySource();
50 | ~NMSAlphaSingleIsoDecaySource();
51 |
52 | void GeneratePrimaryVertex(G4Event* anEvent);
53 |
54 | void Init();
55 |
56 | void setIsotope(G4int iso);
57 |
58 | private:
59 | G4int DecayIsotope;
60 |
61 | std::vector energyList;
62 | std::vector branchingList;
63 |
64 | };
65 |
66 | #endif /* NMSAlphaSingleIsoDecaySource_h */
67 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSMaterialDecaySourceMessenger.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSMaterialDecaySourceMessenger_h
24 | #define NMSMaterialDecaySourceMessenger_h 1
25 |
26 | #include "G4UIcmdWithAString.hh"
27 | #include "G4UIcmdWithADoubleAndUnit.hh"
28 | #include "G4UIcmdWith3Vector.hh"
29 | #include "G4UIcmdWith3VectorAndUnit.hh"
30 | #include "G4UIcmdWithAnInteger.hh"
31 | #include "G4UIcmdWithADouble.hh"
32 | #include "G4UIcmdWithABool.hh"
33 | #include "G4UIcmdWithoutParameter.hh"
34 | #include "G4UImessenger.hh"
35 |
36 | #include "NMSMaterialDecaySource.hh"
37 | #include "NMSMaterialDecaySettings.hh"
38 |
39 | class G4UIcmdWithADoubleAndUnit;
40 |
41 | class NMSMaterialDecaySource;
42 |
43 | class NMSMaterialDecaySourceMessenger : public G4UImessenger {
44 | public:
45 | NMSMaterialDecaySourceMessenger(NMSMaterialDecaySource* );
46 | ~NMSMaterialDecaySourceMessenger();
47 |
48 | void SetNewValue(G4UIcommand* cmd, G4String newval);
49 |
50 | private:
51 | NMSMaterialDecaySource* nmsmds;
52 | NMSMaterialDecaySettings* nmsmdsSettings;
53 |
54 | G4UIdirectory* sourceDir;
55 | G4UIdirectory* sourcePosDistDir;
56 | G4UIdirectory* sourceANDir;
57 |
58 | G4UIcmdWithAnInteger * VerboseCmd;
59 |
60 | G4UIcmdWithAString* MaterialCmd;
61 | G4UIcmdWithAString* SourceFromVolumeCmd;
62 | G4UIcommand* Cf252Cmd;
63 | G4UIcmdWithADoubleAndUnit* ActiveVolumeCmd;
64 | G4UIcmdWithADoubleAndUnit* ActivityCmd;
65 | G4UIcmdWithABool* ActivityFixedCmd;
66 |
67 | G4UIcmdWithABool* SFnCmd;
68 | G4UIcmdWithABool* SFgCmd;
69 | G4UIcmdWithABool* BetaCmd;
70 | G4UIcmdWithABool* AlphaCmd;
71 | G4UIcmdWithABool* AlphaNCmd;
72 |
73 | G4UIcmdWithAString* ANWriteYieldFileCmd;
74 | G4UIcmdWithAnInteger* ANSampleDirectionCmd;
75 | G4UIcmdWithAnInteger* ANSampleEnergyCmd;
76 | G4UIcmdWithAnInteger* ANSamplePositionCmd;
77 | G4UIcmdWithADoubleAndUnit* ANEnergyCmd;
78 | G4UIcmdWithAString* ANFileCmd;
79 | G4UIcmdWithAString* ANEnergyFileCmd;
80 | G4UIcmdWithAString* ANWriteEnergyFileCmd;
81 | G4UIcmdWithABool* ANSpectrumCalcMT91;
82 | G4UIcmdWithAnInteger* ANActivityCalcCmd;
83 | G4UIcmdWithADouble* ANActivityCmd;
84 |
85 | G4UIcmdWithAString* posTypeCmd;
86 | G4UIcmdWithAString* posShapeCmd;
87 | G4UIcmdWithAString* posConfineVolumeCmd;
88 | G4UIcmdWithADoubleAndUnit* posRadiusCmd;
89 | G4UIcmdWithADoubleAndUnit* posRadius0Cmd;
90 | G4UIcmdWithADoubleAndUnit* posHalfXCmd;
91 | G4UIcmdWithADoubleAndUnit* posHalfYCmd;
92 | G4UIcmdWithADoubleAndUnit* posHalfZCmd;
93 | G4UIcmdWith3VectorAndUnit* posCentreCoordsCmd;
94 |
95 | G4UIcmdWithoutParameter* dumpSourceStatusCmd;
96 | };
97 |
98 | #endif /* NMSMaterialDecaySourceMessenger_h */
99 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSPrimaryUserInformation.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 |
24 | #ifndef NMSPrimaryUserInformation_h
25 | #define NMSPrimaryUserInformation_h 1
26 |
27 | #include "G4VUserPrimaryParticleInformation.hh"
28 |
29 | enum NMSOrigin { ORIGIN_ALPHA_N, ORIGIN_SF, ORIGIN_ALPHA };
30 |
31 | class NMSPrimaryUserInformation : public G4VUserPrimaryParticleInformation {
32 | public:
33 | NMSPrimaryUserInformation();
34 | ~NMSPrimaryUserInformation();
35 |
36 | void Print() const;
37 |
38 | NMSOrigin GetOrigin();
39 | void SetOrigin(NMSOrigin newor);
40 |
41 | private:
42 | NMSOrigin ori;
43 |
44 | };
45 |
46 | #endif /* NMSPrimaryUserInformation_h */
47 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/NMSSFSingleIsoDecaySource.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSSFSingleIsoDecaySource_h
24 | #define NMSSFSingleIsoDecaySource_h 1
25 |
26 | #include "G4DataVector.hh"
27 | #include "Randomize.hh"
28 |
29 | #include "G4IonTable.hh"
30 | #include "G4RadioactiveDecay.hh"
31 | #include "G4VDecayChannel.hh"
32 | #include "G4DecayProducts.hh"
33 | #include "G4AlphaDecayChannel.hh"
34 |
35 | #include "G4SystemOfUnits.hh"
36 | #include "G4PhysicalConstants.hh"
37 |
38 | #include "G4SPSPosDistribution.hh"
39 | #include "G4SPSAngDistribution.hh"
40 |
41 | #include "G4SingleParticleSource.hh"
42 |
43 | #include "NMSPrimaryUserInformation.hh"
44 | #include "NMSNewSingleDecaySource.hh"
45 |
46 | class NMSSFSingleIsoDecaySource : public NMSNewSingleDecaySource
47 | {
48 | public:
49 | NMSSFSingleIsoDecaySource();
50 | ~NMSSFSingleIsoDecaySource();
51 | static double UniformRand();
52 |
53 | void SetCf252n(G4int, G4int);
54 |
55 | void GeneratePrimaryVertex(G4Event* anEvent);
56 |
57 | void Init();
58 |
59 | void setIsotope(G4int iso);
60 | void setDecayType(G4int type);
61 |
62 | void setIsoSourceType(G4int iso);
63 |
64 | G4bool neutronSource() {
65 | return true;
66 | }
67 | G4double neutronPerEvent();
68 |
69 | private:
70 | G4int DecayIsotope;
71 | G4int DecayType;
72 |
73 | G4int cf252ndist;
74 | G4int cf252neng;
75 |
76 | G4double list;
77 | };
78 |
79 | #endif /* NMSSFSingleIsoDecaySource_h */
80 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/include/fissionEventData.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef FISSIONEVENTDATA_H
24 | #define FISSIONEVENTDATA_H 1
25 |
26 | #define SP_FISSION_ISOTOPES 16
27 | #define SP_FISSION_N 11
28 | #define SP_FISSION_NUBAR_ISOTOPES 18
29 |
30 | class fissionEventData
31 | {
32 | public:
33 | fissionEventData();
34 | virtual ~fissionEventData();
35 |
36 | static int sfDataIndex(int isotope, int Cf252option = 0);
37 | static double fissionEventNu(int isotope, int n, int Cf252option = 0);
38 | static double getSfNubar(int isotope, int Cf252option = 0);
39 |
40 | private:
41 | static double sfnu[SP_FISSION_ISOTOPES][SP_FISSION_N];
42 |
43 | static int spzaid[SP_FISSION_NUBAR_ISOTOPES];
44 | static double spnubar[SP_FISSION_NUBAR_ISOTOPES];
45 | };
46 |
47 |
48 | #endif /* FISSIONEVENTDATA_H */
49 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/src/NMSAlphaNSet.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 |
24 | #include "NMSAlphaNSet.hh"
25 |
26 | NMSAlphaNSet::NMSAlphaNSet() : std::vector() {
27 |
28 | }
29 |
30 | NMSAlphaNSet::~NMSAlphaNSet() {
31 |
32 | }
33 |
34 | void NMSAlphaNSet::saveToFile(G4String filename) {
35 | std::ofstream outfile;
36 | outfile.open(filename.c_str());
37 | for(int i = 0; i < this->size(); i++) {
38 | // add two threevectors position and alphaDirection
39 | outfile << std::setprecision(15)
40 | << this->std::vector::operator[](i).position.x() << ","
41 | << this->std::vector::operator[](i).position.y() << ","
42 | << this->std::vector::operator[](i).position.z() << ","
43 | << this->std::vector::operator[](i).alphaDirection.x() << ","
44 | << this->std::vector::operator[](i).alphaDirection.y() << ","
45 | << this->std::vector::operator[](i).alphaDirection.z() << ","
46 | << this->std::vector::operator[](i).energy << ","
47 | << this->std::vector::operator[](i).time << std::endl;
48 | }
49 | outfile.close();
50 |
51 | }
52 |
53 | void NMSAlphaNSet::loadFromFile(G4String filename) {
54 | std::ifstream input;
55 | G4String test;
56 | G4String fieldstr;
57 | G4double value;
58 | NMSAlphaNReaction tempreaction;
59 |
60 | if(file_exists(filename)) {
61 | this->clear();
62 |
63 | input.open(filename.c_str());
64 | while ( input.good() ) {
65 | getline(input, test);
66 | // input >> test;
67 | if(test.length() > 0) {
68 | std::istringstream iss( test );
69 | getline(iss, fieldstr, ',');
70 | std::istringstream( fieldstr ) >> value;
71 | tempreaction.position.setX(value * cm);
72 | getline(iss, fieldstr, ',');
73 | std::istringstream( fieldstr ) >> value;
74 | tempreaction.position.setY(value * cm);
75 | getline(iss, fieldstr, ',');
76 | std::istringstream( fieldstr ) >> value;
77 | tempreaction.position.setZ(value * cm);
78 | getline(iss, fieldstr, ',');
79 | std::istringstream( fieldstr ) >> value;
80 | tempreaction.alphaDirection.setX(value);
81 | getline(iss, fieldstr, ',');
82 | std::istringstream( fieldstr ) >> value;
83 | tempreaction.alphaDirection.setY(value);
84 | getline(iss, fieldstr, ',');
85 | std::istringstream( fieldstr ) >> value;
86 | tempreaction.alphaDirection.setZ(value);
87 | getline(iss, fieldstr, ',');
88 | std::istringstream( fieldstr ) >> value;
89 | tempreaction.energy = value * MeV;
90 | getline(iss, fieldstr, ',');
91 | std::istringstream( fieldstr ) >> value;
92 | tempreaction.time = value * microsecond;
93 | push_back(tempreaction);
94 | }
95 | }
96 | input.close();
97 | }
98 | else {
99 | G4cout << "ERROR: could not find file " << filename << G4endl;
100 | }
101 |
102 |
103 | }
104 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/src/NMSNewSingleDecaySource.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 |
24 |
25 | #include "NMSNewSingleDecaySource.hh"
26 |
27 | NMSNewSingleDecaySource::NMSNewSingleDecaySource() : G4SingleParticleSource() {
28 | sourcetype = "Undefined";
29 | verboseLevel = 0;
30 | initialized = false;
31 | }
32 |
33 |
34 | NMSNewSingleDecaySource::NMSNewSingleDecaySource(G4String st) : G4SingleParticleSource(){
35 | sourcetype = st;
36 | verboseLevel = 0;
37 | initialized = false;
38 | }
39 |
40 | NMSNewSingleDecaySource::~NMSNewSingleDecaySource() {
41 |
42 | }
43 |
44 | void NMSNewSingleDecaySource::SetVerboseLevel(G4int vl) {
45 | verboseLevel = vl;
46 | }
47 |
48 | G4PrimaryVertex * NMSNewSingleDecaySource::getNewGeneralVertex() {
49 | G4ThreeVector sourcePosition = GetPosDist()->GenerateOne();
50 |
51 | if(verboseLevel >= 2) {
52 | G4cout << "New Source Event" << G4endl;
53 | G4cout << "Time: " << GetParticleTime() / second << G4endl;
54 | G4cout << "Position: " << sourcePosition / cm << G4endl;
55 | G4cout << "Position Distribution Type: " << GetPosDist()->GetPosDisType() << G4endl;
56 | }
57 |
58 | return new G4PrimaryVertex(sourcePosition, GetParticleTime());
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/NMSMaterialDecay/src/NMSPrimaryUserInformation.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 |
24 | #include "NMSPrimaryUserInformation.hh"
25 |
26 | NMSPrimaryUserInformation::NMSPrimaryUserInformation() : G4VUserPrimaryParticleInformation() {
27 |
28 | }
29 |
30 | NMSPrimaryUserInformation::~NMSPrimaryUserInformation() {
31 |
32 | }
33 |
34 | void NMSPrimaryUserInformation::Print() const {
35 |
36 | }
37 |
38 | NMSOrigin NMSPrimaryUserInformation::GetOrigin() {
39 | return ori;
40 | }
41 |
42 | void NMSPrimaryUserInformation::SetOrigin(NMSOrigin newor) {
43 | ori = newor;
44 | }
45 |
46 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
2 | project(NMSPulsetrainAnalysis)
3 |
4 | find_package( PkgConfig REQUIRED)
5 | pkg_check_modules( gsl REQUIRED gsl )
6 |
7 | include_directories(${PROJECT_SOURCE_DIR}/include)
8 |
9 | file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
10 | file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
11 |
12 | add_library(NMSPulsetrainAnalysis ${sources} ${headers})
13 | target_link_libraries( NMSPulsetrainAnalysis ${gsl_LIBRARIES} )
14 |
15 | add_executable (nmspa_example example/nmspa_example.cc)
16 | target_link_libraries (nmspa_example NMSPulsetrainAnalysis)
17 |
18 | install (FILES ${headers} DESTINATION include)
19 | install (TARGETS NMSPulsetrainAnalysis DESTINATION lib)
20 | install (TARGETS nmspa_example DESTINATION example )
21 | install (FILES example/cf252_example_pulsetrain_list DESTINATION example)
22 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/include/NMSDetectedEvent.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | /** \brief Class for single pulse train events
24 | *
25 | */
26 |
27 | #ifndef NMSDetectedEvent_h
28 | #define NMSDetectedEvent_h 1
29 |
30 | #include
31 |
32 | class NMSDetectedEvent {
33 | public:
34 | NMSDetectedEvent(double et = 0, double lt = 0, int eid = 0, std::string einfo = "");
35 |
36 | inline double getStarttime() {
37 | return eventtime - lifetime;
38 | }
39 |
40 | inline bool operator < (const NMSDetectedEvent& e) const {
41 | return (eventtime < e.eventtime);
42 | }
43 |
44 | public:
45 | double eventtime;
46 | double lifetime;
47 | int eventid;
48 | // std::string info;
49 | };
50 |
51 | #endif
52 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/include/NMSDetectedEventSet.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSDetectedEventSet_h
24 | #define NMSDetectedEventSet_h 1
25 |
26 | #include
27 | #include "NMSDetectedEvent.hh"
28 |
29 | class NMSDetectedEventSet : public std::vector {
30 | public:
31 | NMSDetectedEventSet();
32 | virtual ~NMSDetectedEventSet();
33 |
34 | // retrieve and store
35 |
36 | };
37 |
38 | #endif /* NMSDetectedEventSet_h */
39 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/include/NMSMultiplicityMeasurementSetting.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSMultiplicityMeasurementSetting_h
24 | #define NMSMultiplicityMeasurementSetting_h 1
25 |
26 | enum GatefractionMethod {
27 | GM_FROM_DIEAWAY,
28 | GM_FROM_LONGGATE,
29 | GM_FROM_EVENTNO,
30 | GM_FIXED
31 | };
32 |
33 | enum DieawayMethod {
34 | DAM_FIXED,
35 | DAM_AVERAGELIFETIME
36 | };
37 |
38 | struct NMSMultiplicityMeasurementSetting {
39 | double predelay;
40 | double gate;
41 | double adelay;
42 |
43 | int registerLength;
44 | double registerPeriod;
45 | int quantizeRegisterBuffer;
46 | bool quantizeRegister;
47 |
48 | double derandomizePeriod;
49 | int derandomizeBuffer;
50 | bool derandomize;
51 |
52 | double efficiency;
53 | DieawayMethod dm;
54 | double dieaway;
55 | double infinitegate;
56 | GatefractionMethod gm;
57 | double doublegatefraction;
58 | double triplegatefraction;
59 |
60 | double predeadtime;
61 | bool predeadtimeUpdating;
62 | double postdeadtime;
63 | bool postdeadtimeUpdating;
64 |
65 | int multiplicityLength;
66 |
67 | double measurementLength;
68 | };
69 |
70 | #endif /* NMSMultiplicityMeasurementSetting_h */
71 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/include/NMSSimpleEvent.hh:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #ifndef NMSSIMPLEEVENT_H
24 | #define NMSSIMPLEEVENT_H 1
25 |
26 | struct NMSSimpleEvent {
27 | unsigned long long eventtime;
28 | unsigned long long lifetime;
29 | int eventid;
30 |
31 | bool operator < (const NMSSimpleEvent& e) const {
32 | return (eventtime < e.eventtime);
33 | }
34 | };
35 |
36 | #endif /* NMSSIMPLEEVENT_H */
37 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/src/LLResultsAllEventsBackward.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #include "NMSMultiplicityResult.hh"
24 | #include "NMSPulsetrainManager.hh"
25 |
26 | #include
27 | #include
28 |
29 | // Comments starting with ### give hints on intended conditionals, replaced in code by floating point equivalents
30 |
31 | NMSMultiplicityResult NMSPulsetrainManager::LLResultsAllEventsBackward() {
32 |
33 | NMSMultiplicityResult mr(mms.multiplicityLength);
34 | mr.SetSettings(mms);
35 |
36 | unsigned long long lastevent = 0;
37 | unsigned long long pd = llround(mms.predelay * 1000000);
38 | unsigned long long ad = llround(mms.adelay * 1000000);
39 | unsigned long long gate = llround(mms.gate * 1000000);
40 |
41 | // Timing of process
42 | double start;
43 | double stop;
44 | start = clock();
45 |
46 | // No events => return empty result
47 | if( eventsprocessed.size() == 0) {
48 | return mr;
49 | }
50 |
51 | // Verbose output
52 | int verbositySteps = eventsprocessed.size() / 50;
53 | if(verbositySteps == 0) {
54 | verbositySteps = 1;
55 | }
56 |
57 | if(verboseLevel >= 1) {
58 | std::cout << "Calculating";
59 | std::cout.flush();
60 | }
61 |
62 | // Loop / count variables
63 | int j = 0;
64 | int shiftcount = 0;
65 |
66 | // Main Loop
67 | for(int i = 0; i < eventsprocessed.size(); i++) {
68 | if(i % verbositySteps == 0) {
69 | if(verboseLevel >= 1) {
70 | std::cout << ".";
71 | std::cout.flush();
72 | }
73 | }
74 |
75 | // jump over predelay events
76 | // trigger
77 | // |gate |pd |
78 | // |---------------------------------|xxxxx|
79 | j = i - 1;
80 | while(j >= 0
81 | && eventsprocessed[i].eventtime - pd < eventsprocessed[j].eventtime ) {
82 | j--;
83 | }
84 |
85 | // count events in gate
86 | // trigger
87 | // |gate |pd |
88 | // |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|-----|
89 | shiftcount = 0;
90 | while(j >= 0
91 | && eventsprocessed[i].eventtime - (pd + gate) < eventsprocessed[j].eventtime ) {
92 | j--;
93 | shiftcount++;
94 | }
95 | mr.addRA(shiftcount, 1);
96 |
97 | j = i - 1;
98 | while(j >= 0
99 | && eventsprocessed[i].eventtime - ad < eventsprocessed[j].eventtime) {
100 | j--;
101 | }
102 |
103 | shiftcount = 0;
104 | while(j >= 0
105 | && eventsprocessed[i].eventtime - (ad + gate) < eventsprocessed[j].eventtime) {
106 | j--;
107 | shiftcount++;
108 | }
109 | mr.addA(shiftcount, 1);
110 | }
111 |
112 | if(verboseLevel >= 1) {
113 | std::cout << std::endl;
114 | }
115 |
116 | mr.setLastEvent(eventsprocessed.back().eventtime / 1000000.0);
117 |
118 | stop = clock();
119 | if(verboseLevel >= 1) {
120 | std::cout << "WALL: Calculation took " << ( stop - start ) / CLOCKS_PER_SEC << " second" << std::endl;
121 | }
122 |
123 | return mr;
124 | }
125 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/src/LLResultsAllEventsForwardF.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #include "NMSMultiplicityResult.hh"
24 | #include "NMSPulsetrainManager.hh"
25 |
26 | #include
27 |
28 | NMSMultiplicityResult NMSPulsetrainManager::LLResultsAllEventsForwardF() {
29 |
30 | NMSMultiplicityResult mr(mms.multiplicityLength);
31 | mr.SetSettings(mms);
32 |
33 | unsigned long long lastevent = 0;
34 | unsigned long long pd = llround(mms.predelay * 1000000);
35 | unsigned long long ad = llround(mms.adelay * 1000000);
36 | unsigned long long gate = llround(mms.gate * 1000000);
37 |
38 | // Timing of process
39 | double start;
40 | double stop;
41 | start = clock();
42 |
43 | // No Events => return empty result
44 | if( eventsprocessed.size() == 0) {
45 | return mr;
46 | }
47 |
48 | // Verbose output
49 | int verbositySteps = eventsprocessed.size() / 50;
50 | if(verbositySteps == 0) {
51 | verbositySteps = 1;
52 | }
53 | if(verboseLevel >= 1) {
54 | std::cout << "Calculating";
55 | std::cout.flush();
56 | }
57 |
58 | // Loop / count variables
59 | int j = 0;
60 | int shiftcount = 0;
61 |
62 | // Main loop
63 | for(int i = 0; i < eventsprocessed.size(); i++) {
64 | //for(int i = 0; i < 3000; i++) {
65 | if(i % verbositySteps == 0) {
66 | if(verboseLevel >= 1) {
67 | std::cout << ".";
68 | std::cout.flush();
69 | }
70 | }
71 |
72 | // jump over predelay events
73 | shiftcount = 0;
74 | j = i + 1;
75 | while(j < eventsprocessed.size()
76 | && eventsprocessed[i].eventtime + pd > eventsprocessed[j].eventtime ) {
77 | j++;
78 | }
79 |
80 | // count events in gate
81 | while(j < eventsprocessed.size()
82 | && eventsprocessed[i].eventtime + pd + gate >= eventsprocessed[j].eventtime) {
83 | j++;
84 | // std::cout << eventsprocessed[j].eventtime << " ";
85 | shiftcount++;
86 | }
87 | // std::cout << std::endl;
88 | mr.addRA(shiftcount, 1);
89 |
90 | // jump over long delay events
91 | shiftcount = 0;
92 | j = i + 1;
93 | while(j < eventsprocessed.size()
94 | && eventsprocessed[i].eventtime + ad > eventsprocessed[j].eventtime) {
95 | j++;
96 | }
97 |
98 | // count events in gate
99 | while(j < eventsprocessed.size()
100 | && eventsprocessed[i].eventtime + ad + gate >= eventsprocessed[j].eventtime) {
101 | j++;
102 | shiftcount++;
103 | }
104 | mr.addA(shiftcount, 1);
105 | }
106 |
107 | if(verboseLevel >= 1) {
108 | std::cout << std::endl;
109 | }
110 |
111 | mr.setLastEvent(eventsprocessed.back().eventtime);
112 |
113 | stop = clock();
114 | if(verboseLevel >= 1) {
115 | std::cout << "WALL: Calculation took " << ( stop - start ) / CLOCKS_PER_SEC << " second" << std::endl;
116 | }
117 |
118 | return mr;
119 | }
120 |
--------------------------------------------------------------------------------
/NMSPulsetrainAnalysis/src/LLResultsSingleEventBackward.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * ONMS - Open Neutron Multiplicity Simulation
3 | *
4 | *
5 | * Copyright (C) 2013-2016 Moritz Kütt
6 | *
7 | * This program is free software: you can redistribute it and/or modify
8 | * it under the terms of the GNU General Public License as published by
9 | * the Free Software Foundation, either version 3 of the License, or
10 | * (at your option) any later version.
11 | *
12 | * This program is distributed in the hope that it will be useful,
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 | * GNU General Public License for more details.
16 | *
17 | * You should have received a copy of the GNU General Public License
18 | * along with this program. If not, see .
19 | *
20 | * Contact: moritz@nuclearfreesoftware.org
21 | */
22 |
23 | #include "NMSMultiplicityResult.hh"
24 | #include "NMSPulsetrainManager.hh"
25 |
26 | #include
27 | #include