1
0
Fork 0
mirror of https://github.com/gwm17/Mask.git synced 2024-11-22 10:18:50 -05:00
Multi-step kinematics simulation and detector efficiency calculation
Go to file
2021-09-15 09:29:38 -04:00
bin aaaaaand the rootmap thingy 2020-12-09 17:11:51 -05:00
etc Major overhaul. Fixed bugs in decay angular distribution, now classed. Added ANASEN geometry. Minor bugfixes throughout. Added center of mass switch for main reaction (better randomization where ejectile is not fixed in theta). 2021-08-23 10:00:36 -04:00
include Singleton'd a random number generator class to avoid chaining a generator manually. Fixed singleton pattern for MassLookup. 2021-09-06 17:06:02 -04:00
objs Removed compiled and linked objects 2020-12-09 17:10:39 -05:00
src Fixed bug in energy loss, now correctly calculates effective charge for heavy ions. 2021-09-15 09:29:38 -04:00
.gitignore Added premake to generate makefiles to improve compatibility. Separated detector source code into a subdirectory. 2021-08-25 12:05:04 -04:00
input.txt Singleton'd a random number generator class to avoid chaining a generator manually. Fixed singleton pattern for MassLookup. 2021-09-06 17:06:02 -04:00
premake5.lua Major update. Now uses a homeade file type MaskFile to save data. Separated kinematics simulation (Mask), plotting (RootPlot/python), and detector efficiency (DetectEff). Mask itself no longer depends on ROOT, only RootPlot does. 2021-09-03 17:03:41 -04:00
README.md Updated README with premake info 2021-08-26 13:23:25 -04:00

MASK: Monte cArlo Simulation of Kinematics

MASK is a Monte Carlo simulation of reaction kinematics intended for use with the Super-Enge Split-pole Spectrograph (SESPS) at Florida State University. MASK is capable of simulating multi-step reaction-decay sequences, however in a purely kinematic sense, as it currently has no quantum mechanical input (this is planned to be added in the next version). It is also capable of testing detector efficiency; this version contains the methods necessary to simulate the efficiency of a reaction into the Silicion Array for Branching Ratio Detectors (SABRE) as well as ANASEN.

Building MASK

Dowload the repository from github. The code is to be built using Premake5, an open source and free project building software. To build on Linux and MacOSX run premake5 gmake2 to generate the makefiles. Then execute make to build the program. To build on Windows run premake5 vs20xx where xx should be replaced with your version of Visual Studio, and then build as a normal Visual Studio project. For more documentation see the Premake wiki. NOTE: For Windows, ROOT is linked using the global envrionment variable ROOTSYS. If you do not have ROOTSYS set, Premake will not be able to properly link and include all of the ROOT libraries.

Running MASK

By default MASK is capable of simulating reactions of up to three steps. Here is a brief outline of each type:

  1. A reaction of type 0 is a pure decay. It is assumed isotropic by default; any other case will require the modification of the code.
  2. A reaction of type 1 is a pure reaction. It can incorporate all of the input file sampling parameters.
  3. A reaction of type 2 is a reaction followed by a subsequent decay of the residual nucleus. Again, all sampling is allowed.
  4. A reaction of type 3 is a reaction followed by a subsequent decay of the residual, followed by a decay of one of the products. Again, all sampling is allowed

For decays, a specific angular distribution can be given as input as a text file with values of coefficiencts of a Legendre polynomial series. Examples can be found in the ./etc directory, including an isotropic case. It is assumed that the decays in the center-of-mass frame are isotropic in phi (i.e. m=0). Decay1 corresponds to the first decay, if there are multiple steps, Decay2 to the second. If there are no decays, these parameters are not used (or if only one decay, Decay2_AngularMomentum is not used). The input file requires that the user include target information, which will be used to calculate energy loss for all of the reactants and reaction products. The target can contain layers, and each layer can be composed of a compound of elements with a given stoichiometry. If the user wishes to not include energy loss in the kinematics, simply give all target layers a thickness of 0. Note that more layers and more thickness = more time spent calculating energy loss. These energy loss methods are only applicable for solid targets, and should not be applied to gas or liquid targets. Energy loss calculations have a stated uncertainty of approximately five percent.

The default MASK program includes a calculation of SABRE efficiency, whose methods are contained in the SabreEfficiency and SabreDetector classes. This can be disabled by modifying the main.cpp file appropriately. It also has the classes for calculating ANASEN efficiency. More detector classes can be added following the format outlined by these two examples.

In the input file the user also has the option to select to save the ROOT tree of the simulated data and the default plots. The options are yes or no. Yes saves them, no doesn't.

To run MASK simply do the following from the MASK directory:

./bin/mask input.txt

Input.txt can be replaced by any text file with the correct format.

Requirements

MASK requires that ROOT is installed for data writting and visualization, as well as for random number generation. Testing has been done only on ROOT 6. Mileage on all other ROOT versions will vary.

Currently supports MacOSX and Linux. Windows is in a beta stage.