Generator for underground muon propagation. More...
#include <cmath>
#include <cstdlib>
#include <exception>
#include <fstream>
#include <iostream>
#include <memory>
#include <sstream>
#include <string>
#include "art/Framework/Core/EDProducer.h"
#include "art/Framework/Core/ModuleMacros.h"
#include "art/Framework/Principal/Event.h"
#include "art/Framework/Principal/Run.h"
#include "art/Framework/Services/Registry/ServiceHandle.h"
#include "art_root_io/TFileService.h"
#include "cetlib_except/exception.h"
#include "fhiclcpp/ParameterSet.h"
#include "messagefacility/MessageLogger/MessageLogger.h"
#include "nurandom/RandomUtils/NuRandomService.h"
#include "nusimdata/SimulationBase/MCParticle.h"
#include "nusimdata/SimulationBase/MCTruth.h"
#include "larcore/Geometry/Geometry.h"
#include "larcoreobj/SummaryData/RunData.h"
#include "TDatabasePDG.h"
#include "TTree.h"
#include "CLHEP/Random/RandFlat.h"
#include "CLHEP/Random/RandGaussQ.h"
Go to the source code of this file.
Classes | |
class | evgen::MUSUN |
module to produce single or multiple specified particles in the detector More... | |
Namespaces | |
simb | |
Framework includes. | |
evgen | |
Event Generation using GENIE, cosmics or single particles. | |
Variables | |
createEngine | evgen::fChargeRatio {pset.get<double>("ChargeRatio")} |
createEngine | evgen::fInputFile1 {pset.get<std::string>("InputFile1")} |
createEngine | evgen::fInputFile2 {pset.get<std::string>("InputFile2")} |
createEngine | evgen::fInputFile3 {pset.get<std::string>("InputFile3")} |
createEngine | evgen::fCavernAngle {pset.get<double>("CavernAngle")} |
createEngine | evgen::fRockDensity {pset.get<double>("RockDensity")} |
createEngine | evgen::fPhimin {pset.get<double>("Phimin")} |
createEngine | evgen::fPhimax {pset.get<double>("Phimax")} |
createEngine | evgen::figflag {pset.get<int>("igflag")} |
createEngine | evgen::fXmin {pset.get<double>("Xmin")} |
createEngine | evgen::fYmin {pset.get<double>("Ymin")} |
createEngine | evgen::fZmin {pset.get<double>("Zmin")} |
createEngine | evgen::fXmax {pset.get<double>("Xmax")} |
createEngine | evgen::fYmax {pset.get<double>("Ymax")} |
createEngine | evgen::fZmax {pset.get<double>("Zmax")} |
Generator for underground muon propagation.
Module designed to propagate muons underground
For a description of how to use the module see DUNE DocDB It is highly recommended that you read it before use.....
Original MUSUN code was written by Vitaly A. Kudryavtsev (University of Sheffield). Conversion from Fortran to C was done by Kareem Kazkaz (LLNL) with help from David Woodward (Sheffield) Default slant depths and surface profile work done Martin Richardson (Sheffield) Notable contributions to surface map profiling also made by Chao Zhang (USD) and Jeff de Jong (Oxford) Interfaced with LArSoft by Karl Warburton (University of Sheffield) with necessary changes. ---------—START OF NECCESSARY CHANGES------------— Changing variables to fcl parameters Restructuring to fit LArSoft design Co-ordinate transformation... y -> x, x -> z, z -> y ????SHOULD BE x -> -z AS PER VITALY???? Restore cavern angle convention to Vitaly's definition. ---------—END OF NECCESSARY CHANGES--------------—
Further Notes - Taken from Kareem Kazkaz;
This C++ code is a port of the musun-surf.f and test-musun-surf.f code written by Vitaly Kudryavtsev of the University of Sheffield. It generates muons with energy, position, and direction specific to the Davis cavern at the Sanford Underground Research Facility in Lead, South Dakota.
This C++ code was ported by Kareem Kazkaz, karee, (925) 422-7208 m@ll nl.go v
Here are the notes from Vitaly:
c The code samples single atmospheric muons at the SURF c underground laboratory (Davis' cavern) c (taking into account the slant depth distribution) c in the energy range E1-E2, zenith angle range theta1-theta2 (0-90 degrees) c and azimuthal angle range phi1-phi2 (0-360 degrees). c At present only the following ranges of parameters are supported: c E1 = 1 GeV, E2 = 10^6 GeV, theta1 = 0, theta2 = 90 deg, phi1 = 0, phi2 = 360 deg. c c Program uses muon energy spectra at various depths and zenith c angles obtained with MUSIC code for muon propagation and Gaisser's c formula for muon spectrum at sea level c (T.K.Gaisser, Cosmic Rays and Particle Physics, Cambridge c University Press, 1990) modified for large zenith angles and c prompt muon flux with normalisation and spectral index c that fit LVD data: gamma = 2.77, A = 0.14. c Density of rock is assumed to be 2.70 g/cm^3 but can be changed c during initialisation (previous step, ask the author). c c Muon flux through a sphere (Chao's coordinates) = 6.33x10^(-9) cm^(-2) s^(-1) (gamma=2.77) - old c Muon flux through a sphere (Martin's coordinates) = 6.16x10^(-9) cm^(-2) s^(-1) (gamma=2.77) - new c Muon flux through the cuboid (30x22x24 m^3) = 0.0588 s^(-1) (gamma=2.77) c c Note: the muon spectrum at sea level does not take into account c the change of the primary spectrum slope at and above the knee c region (3*10^15-10^16 eV). c c Program uses the tables of muon energy spectra at various c zenith and azimuthal angles at SURF c calculated with the muon propagation code MUSIC and the c angular distribution of muon intensities at SURF (4850 ft level). c c Coordinate system for the muon intensities c is determined by the mountain profile provided c by Chao Zhang (USD, South Dakota): x-axis is pointing to the East. c Muons are sampled on a surface of a rectangular parallelepiped, c the planes of which are parallel to the walls of the cavern. c The long side of the cavern is pointing at 6.6 deg from the North c to the East (or 90 - 6.6 deg from the East to the North). c Muon coordinates and direction cosines are then given in the c coordinate system related to the cavern with x-axis c pointing along the long side of the cavern at 6.6 deg from the c North to the East. c The angle phi is measured from the positive x-axis towards c positive y-axis (0-360 deg). c Z-axis is pointing upwards.
Further notes taken from Vitaly's original code, as written for LBNE (note the differing definition for theta, which is used here, theta is measured from East to South, not North to East. c c The code samples single atmospheric muons at the LBNE c underground site (taking into account the slant depth c distribution calculated by Martin Richardson, Sheffield) c in the energy range E1-E2, zenith angle range theta1-theta2 (0-90 degrees) c and azimuthal angle range phi1-phi2 (0-360 degrees). c At present only the following ranges of parameters are supported: c E1 = 1 GeV, E2 = 10^6 GeV, theta1 = 0, theta2 = 90 deg, phi1 = 0, phi2 = 360 deg. c c The LBNE far detector site has coordinates: c Latitude = 44° 20' 45.21" N c Longitude = 103° 45' 16.13" W c Elevation = 355.8 ft (108.4 m) c from e-mail from Virgil Bocean on 30 May 2013 c confirmed by Tracy Lundin on 16 December 2013 c c For slant depth distribution and muon intensities the azimuthal c angle phi is calculated from East to North. c The long side of the cavern is assumed to be pointing to the c beam (Fermilab) at an angle of 7 deg to the South from the c East. c Muon direction cosines are given in the coordinate system c related to the cavern with positive x-axis pointing to the beam c so direction cosine wrt x-axis is -1 if a muon is coming in the c same direction (wrt to x-axis) as the neutrino beam. c c c Program uses muon energy spectra at various depths and zenith c angles obtained with MUSIC code for muon propagation and Gaisser's c formula for muon spectrum at sea level c (T.K.Gaisser, Cosmic Rays and Particle Physics, Cambridge c University Press, 1990) modified for large zenith angles and c prompt muon flux with parameters from the best fit to the LVD data. c c Muon flux through a sphere = 6.65x10^(-9) cm^(-2) s^(-1) (gamma=2.77) - old c Muon flux through a sphere = 6.65x10^(-9) cm^(-2) s^(-1) (gamma=2.77) - new c Muon flux through the cuboid (100x40x50 m^3) = 0.3074 s^(-1) (gamma=2.77) c c Note: the muon spectrum at sea level does not take into account c the change of the primary spectrum slope at and above the knee c region (3*10^15-10^16 eV). c c Program uses the tables of muon energy spectra at various c zenith and azimuthal angles at DUSEL c calculated with the muon propagation code MUSIC and the c angular distribution of muon intensities at 4850 ft level c (location of the LBNE far detector). c c Coordinate system is determined by the mountain profile provided c by Jeff de Jong (Cambridge) and Chao Zhang (USD, South Dakota). c This is done to allow the simulation of muons on a surface of c a rectangular parallelepiped, the planes of which are parallel c to the walls of the laboratory halls. c The angle phi in the slant depth distribution file is measured c from the positive x-axis towards positive y-axis. c Z-axis is pointing upwards. c Note that I use here the azimuthal angle range from 0 to 360 deg. c
Definition in file MUSUN_module.cc.