diff --git a/CMakeLists.txt b/CMakeLists.txt index a76b261..4c7b021 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,254 +1,256 @@ # Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret ################################################################################ # This file is part of NUISANCE. # # NUISANCE is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # NUISANCE is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with NUISANCE. If not, see . ################################################################################ cmake_minimum_required (VERSION 2.8 FATAL_ERROR) #Use the compilers found in the path find_program(CMAKE_C_COMPILER NAMES $ENV{CC} gcc PATHS ENV PATH NO_DEFAULT_PATH) find_program(CMAKE_CXX_COMPILER NAMES $ENV{CXX} g++ PATHS ENV PATH NO_DEFAULT_PATH) project(NUISANCE) include(ExternalProject) enable_language(Fortran) set (NUISANCE_VERSION_MAJOR 2) set (NUISANCE_VERSION_MINOR 7) set (NUISANCE_VERSION_REVISION 0) set (NUISANCE_VERSION_STRING "v${NUISANCE_VERSION_MAJOR}r${NUISANCE_VERSION_MINOR}") if(${NUISANCE_VERSION_REVISION} STRGREATER "0") set (NUISANCE_VERSION_STRING "${NUISANCE_VERSION_STRING}p${NUISANCE_VERSION_REVISION}") endif() #Set this to TRUE to enable build debugging messages set(BUILD_DEBUG_MSGS TRUE) include(${CMAKE_SOURCE_DIR}/cmake/cmessage.cmake) include(${CMAKE_SOURCE_DIR}/cmake/cacheVariables.cmake) cmessage(STATUS "CMAKE_INSTALL_PREFIX: \"${CMAKE_INSTALL_PREFIX}\"") cmessage(STATUS "CMAKE_BUILD_TYPE: \"${CMAKE_BUILD_TYPE}\"") ################################################################################ # Check Dependencies ################################################################################ ################################## ROOT ###################################### include(${CMAKE_SOURCE_DIR}/cmake/ROOTSetup.cmake) ################################# HEPMC ###################################### include(${CMAKE_SOURCE_DIR}/cmake/HepMC.cmake) ############################### HepMCNuEvt ################################### include(${CMAKE_SOURCE_DIR}/cmake/HepMCNuEvtSetup.cmake) ############################ Reweight Engines ################################ include(${CMAKE_SOURCE_DIR}/cmake/ReweightEnginesSetup.cmake) ############################ Other Generators ################################ include(${CMAKE_SOURCE_DIR}/cmake/GiBUUSetup.cmake) if(USE_NUANCE) LIST(APPEND EXTRA_CXX_FLAGS -D__NUANCE_ENABLED__) endif() ################################# Pythia6/8 #################################### include(${CMAKE_SOURCE_DIR}/cmake/pythia6Setup.cmake) include(${CMAKE_SOURCE_DIR}/cmake/pythia8Setup.cmake) ################################# gperftools ################################### include(${CMAKE_SOURCE_DIR}/cmake/gperfSetup.cmake) if(NOT NOTEST) enable_testing() endif() SET(GENERATOR_SUPPORT) foreach(gen NEUT;NuWro;GENIE;GiBUU;NUANCE) if(USE_${gen}) SET(GENERATOR_SUPPORT "${GENERATOR_SUPPORT}${gen} ") endif() endforeach(gen) cmessage(STATUS "Generator Input Support: ${GENERATOR_SUPPORT}") set(MINCODE Routines FCN) set(CORE MCStudies FitBase Config Logger InputHandler Splines Utils Statistical #Devel Smearceptance ) LIST(APPEND ALLEXPERIMENTS ANL ArgoNeuT BEBC BNL Electron FNAL GGM K2K MINERvA MicroBooNE MiniBooNE SciBooNE T2K) foreach(exp ${ALLEXPERIMENTS}) if(NOT NO_${exp}) LIST(APPEND EXPERIMENTS_TO_BUILD ${exp}) else() LIST(REVERSE EXTRA_CXX_FLAGS) LIST(APPEND EXTRA_CXX_FLAGS -D__NO_${exp}__) LIST(REVERSE EXTRA_CXX_FLAGS) endif() endforeach() ################################## COMPILER #################################### include(${CMAKE_SOURCE_DIR}/cmake/c++CompilerSetup.cmake) ################################### doxygen ################################### include(${CMAKE_SOURCE_DIR}/cmake/docsSetup.cmake) ################################################################################ set(MINIMUM_INCLUDE_DIRECTORIES) LIST(APPEND MINIMUM_INCLUDE_DIRECTORIES ${RWENGINE_INCLUDE_DIRECTORIES} ${CMAKE_SOURCE_DIR}/src/FitBase ${CMAKE_SOURCE_DIR}/src/Reweight ${CMAKE_SOURCE_DIR}/src/InputHandler ${CMAKE_SOURCE_DIR}/src/Config ${CMAKE_SOURCE_DIR}/src/Logger ${CMAKE_SOURCE_DIR}/src/Statistical ${CMAKE_SOURCE_DIR}/src/Splines ${CMAKE_SOURCE_DIR}/src/Utils) #Not yet capable of just building without the rwdirs. #if(USE_REWEIGHT) LIST(APPEND MINIMUM_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src/Reweight) LIST(APPEND CORE Reweight) #endif() cmessage(DEBUG "Base include directories: ${MINIMUM_INCLUDE_DIRECTORIES}") set(EXP_INCLUDE_DIRECTORIES) foreach(edir ${EXPERIMENTS_TO_BUILD}) LIST(APPEND EXP_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src/${edir}) endforeach() cmessage(DEBUG "Included experiments: ${EXP_INCLUDE_DIRECTORIES}") foreach(mdir ${MINCODE}) cmessage (DEBUG "Configuring directory: src/${mdir}") add_subdirectory(src/${mdir}) endforeach() foreach(edir ${EXPERIMENTS_TO_BUILD}) cmessage (DEBUG "Configuring directory: src/${edir}") add_subdirectory(src/${edir}) endforeach() foreach(cdir ${CORE}) cmessage (DEBUG "Configuring directory: src/${cdir}") add_subdirectory(src/${cdir}) endforeach() cmessage(DEBUG "Module targets: ${MODULETargets}") LIST(APPEND MODULETargets -Wl,--end-group) LIST(REVERSE MODULETargets) LIST(APPEND MODULETargets -Wl,--start-group) LIST(REVERSE MODULETargets) add_subdirectory(app) add_subdirectory(src/Tests) configure_file(cmake/setup.sh.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/setup.sh" @ONLY) install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/setup.sh" DESTINATION ${CMAKE_INSTALL_PREFIX}) configure_file(cmake/MakeBinaryBlob.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/MakeBinaryBlob" @ONLY) install(PROGRAMS "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/MakeBinaryBlob" DESTINATION bin) if(USE_DYNSAMPLES) SET(ALL_INCLUDES ${MINIMUM_INCLUDE_DIRECTORIES}) LIST(APPEND ALL_INCLUDES ${CMAKE_SOURCE_DIR}/src/Smearceptance) LIST(APPEND ALL_INCLUDES ${EXP_INCLUDE_DIRECTORIES}) string(REPLACE ";" " -I" ALL_INCLUDES_STR "${ALL_INCLUDES}") string(REPLACE "${CMAKE_SOURCE_DIR}/src" "${CMAKE_INSTALL_PREFIX}/include" ALL_INCLUDES_STR "${ALL_INCLUDES_STR}") cmessage(DEBUG ${CMAKE_DEPENDLIB_FLAGS}) string(REPLACE "-levent " "" CMAKE_DEPENDLIB_FLAGS_NEW ${CMAKE_DEPENDLIB_FLAGS}) set(CMAKE_DEPENDLIB_FLAGS ${CMAKE_DEPENDLIB_FLAGS_NEW}) cmessage(DEBUG ${CMAKE_DEPENDLIB_FLAGS}) string(REPLACE ";" " -l" ALL_MODULETARGETS_STR "${MODULETargets}") string(REPLACE "-l-" "-" ALL_MODULETARGETS_STR "${ALL_MODULETARGETS_STR}") configure_file(cmake/BuildDynamicSample.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/BuildDynamicSample" @ONLY) install(PROGRAMS "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/BuildDynamicSample" DESTINATION bin) configure_file(cmake/BuildDynamicSmearcepter.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/BuildDynamicSmearcepter" @ONLY) install(PROGRAMS "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/BuildDynamicSmearcepter" DESTINATION bin) endif() install(PROGRAMS "${PROJECT_SOURCE_DIR}/scripts/nuiscardgen" DESTINATION bin) install(PROGRAMS "${PROJECT_SOURCE_DIR}/scripts/nuissamples" DESTINATION bin) +add_subdirectory(event_gen) + install(DIRECTORY ${PROJECT_SOURCE_DIR}/data DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${PROJECT_SOURCE_DIR}/event_gen DESTINATION ${CMAKE_INSTALL_PREFIX}) install(DIRECTORY ${PROJECT_SOURCE_DIR}/parameters DESTINATION ${CMAKE_INSTALL_PREFIX}) diff --git a/app/PrepareNEUT.cxx b/app/PrepareNEUT.cxx index faefc6b..0516e76 100644 --- a/app/PrepareNEUT.cxx +++ b/app/PrepareNEUT.cxx @@ -1,419 +1,416 @@ #include "FitLogger.h" #include "PlotUtils.h" #include "StatUtils.h" #include "TFile.h" #include "TH1D.h" #include "TTree.h" #include #include // If you don't have NEUT enabled, you shouldn't compile this... #include "neutpart.h" #include "neutvect.h" std::string fInputFiles = ""; std::string fOutputFile = ""; std::string fFluxFile = ""; bool fFluxInGeV = false; bool fIsMonoEFlux = false; double fMonoEEnergy = 0xdeadbeef; void PrintOptions(); void ParseOptions(int argc, char *argv[]); void AddMonoRateHistogram(std::string inputList, double MonoE, std::string output); void CreateRateHistogram(std::string inputList, std::string flux, std::string output); //******************************* int main(int argc, char *argv[]) { //******************************* SETVERBOSITY(FitPar::Config().GetParI("VERBOSITY")); SETERRVERBOSITY(FitPar::Config().GetParI("ERROR")); ParseOptions(argc, argv); NUIS_LOG(FIT, "Running PrepareNEUT"); if (fIsMonoEFlux) { AddMonoRateHistogram(fInputFiles, fMonoEEnergy, fOutputFile); } else { CreateRateHistogram(fInputFiles, fFluxFile, fOutputFile); } }; void AddMonoRateHistogram(std::string inputList, double MonoE, std::string output) { // Need to allow for more than one file... will do soon TChain *tn = new TChain("neuttree"); std::vector inputs = GeneralUtils::ParseToStr(inputList, ","); for (std::vector::iterator it = inputs.begin(); it != inputs.end(); ++it) { NUIS_LOG(FIT, "Adding " << *it << " to the output"); tn->AddFile((*it).c_str()); } if (inputs.size() > 1 && output.empty()) { NUIS_ABORT("You must provide a new output file name if you want to have " "more than 1 input file!"); } int nevts = tn->GetEntries(); if (!nevts) { NUIS_ABORT("Either the input file is not from NEUT, or it's empty..."); } //for mono-e all events have the same totcrs. nevts = 1; NeutVect *fNeutVect = NULL; tn->SetBranchAddress("vectorbranch", &fNeutVect); TH1D *fluxHist = new TH1D("flux", "flux", 1000, 0, fFluxInGeV ? 10 : 10000); fluxHist->Fill(MonoE); fluxHist->Scale(1, "width"); // Make Event Hist TH1D *xsecHist = (TH1D *)fluxHist->Clone(); xsecHist->Reset(); // Make a total cross section hist for shits and giggles TH1D *entryHist = (TH1D *)xsecHist->Clone(); double MeanE = 0; for (int i = 0; i < nevts; ++i) { tn->GetEntry(i); NeutPart *part = fNeutVect->PartInfo(0); double E = part->fP.E(); double xsec = fNeutVect->Totcrs; // Unit conversion if (fFluxInGeV) E *= 1E-3; xsecHist->Fill(E, xsec); entryHist->Fill(E); MeanE += E; - if (i % (nevts / 20) == 0) { - NUIS_LOG(FIT, "Processed " << i << "/" << nevts << " NEUT events."); - } } MeanE /= double(nevts); NUIS_LOG(FIT, "Processed all events"); xsecHist->Divide(entryHist); // This will be the evtrt histogram TH1D *evtHist = (TH1D *)xsecHist->Clone(); evtHist->Multiply(fluxHist); // Check whether the overflow is empty. If not, advise that either the wrong // flux histogram or units were used... // If the events were generated with a limited range of the flux histogram, // this may be benign if (evtHist->Integral(0, -1) != evtHist->Integral() || evtHist->Integral(0, -1) == 0) { NUIS_ERR(WRN, "The input file(" << evtHist->Integral(0, -1) << ") and flux histogram provided do not match... "); NUIS_ERR(WRN, "Are the units correct (MeanE = " << MeanE << ", FluxHistoUpperLim: " << fluxHist->GetXaxis()->GetBinUpEdge(1000) << ")? Did you provide the correct flux file?"); NUIS_ERR(WRN, "Use output with caution..."); } // Pick where the output should go TFile *outFile = NULL; if (!output.empty()) { NUIS_LOG(FIT, "Saving histograms in " << output); outFile = new TFile(output.c_str(), "RECREATE"); } else { NUIS_LOG(FIT, "Saving histograms in " << inputs[0]); outFile = new TFile(inputs[0].c_str(), "UPDATE"); } outFile->cd(); std::string xsec_name = "xsec_PrepareNeut"; std::string flux_name = "flux_PrepareNeut"; std::string rate_name = "evtrt_PrepareNeut"; if (output.empty()) { // Check whether we should overwrite existing histograms std::string input_xsec = PlotUtils::GetObjectWithName(outFile, "xsec"); std::string input_flux = PlotUtils::GetObjectWithName(outFile, "flux"); std::string input_rate = PlotUtils::GetObjectWithName(outFile, "evtrt"); if (!input_xsec.empty()) { NUIS_LOG(FIT, "Updating histogram: " << input_xsec); xsec_name = input_xsec; } if (!input_flux.empty()) { NUIS_LOG(FIT, "Updating histogram: " << input_flux); flux_name = input_flux; } if (!input_rate.empty()) { NUIS_LOG(FIT, "Updating histogram: " << input_rate); rate_name = input_rate; } } else { NUIS_LOG(FIT, "Cloning neuttree into output file."); StopTalking(); TTree *newtree = (TTree *)tn->CloneTree(-1, "fast"); StartTalking(); newtree->Write(); } xsecHist->Write(xsec_name.c_str(), TObject::kOverwrite); fluxHist->Write(flux_name.c_str(), TObject::kOverwrite); evtHist->Write(rate_name.c_str(), TObject::kOverwrite); outFile->Close(); } //******************************* void CreateRateHistogram(std::string inputList, std::string flux, std::string output) { //******************************* // Need to allow for more than one file... will do soon TChain *tn = new TChain("neuttree"); std::vector inputs = GeneralUtils::ParseToStr(inputList, ","); for (std::vector::iterator it = inputs.begin(); it != inputs.end(); ++it) { NUIS_LOG(FIT, "Adding " << *it << " to the output"); tn->AddFile((*it).c_str()); } if (inputs.size() > 1 && output.empty()) { NUIS_ABORT("You must provide a new output file name if you want to have " "more than 1 input file!"); } int nevts = tn->GetEntries(); if (!nevts) { NUIS_ABORT("Either the input file is not from NEUT, or it's empty..."); } NeutVect *fNeutVect = NULL; tn->SetBranchAddress("vectorbranch", &fNeutVect); // Get Flux Hist std::vector fluxvect = GeneralUtils::ParseToStr(flux, ","); TH1D *fluxHist = NULL; if (fluxvect.size() > 1) { TFile *fluxfile = new TFile(fluxvect[0].c_str(), "READ"); fluxHist = (TH1D *)fluxfile->Get(fluxvect[1].c_str()); fluxHist->SetDirectory(0); } else { NUIS_ABORT("NO FLUX SPECIFIED"); } // Decide what type of flux was given if (fFluxInGeV) { NUIS_LOG(FIT, "Assuming flux histogram is in GeV"); } else { NUIS_LOG(FIT, "Assuming flux histogram is in MeV"); } // Make Event Hist TH1D *xsecHist = (TH1D *)fluxHist->Clone(); xsecHist->Reset(); // Make a total cross section hist for shits and giggles TH1D *entryHist = (TH1D *)xsecHist->Clone(); for (int i = 0; i < nevts; ++i) { tn->GetEntry(i); NeutPart *part = fNeutVect->PartInfo(0); double E = part->fP.E(); double xsec = fNeutVect->Totcrs; // Unit conversion if (fFluxInGeV) E *= 1E-3; xsecHist->Fill(E, xsec); entryHist->Fill(E); if (i % (nevts / 20) == 0) { NUIS_LOG(FIT, "Processed " << i << "/" << nevts << " NEUT events." << "(Enu = " << E << ", xsec = " << xsec << ") "); } } NUIS_LOG(FIT, "Processed all events"); xsecHist->Divide(entryHist); // This will be the evtrt histogram TH1D *evtHist = NULL; // If the integral of xsecHist is 0 the input file used a really old version // of NEUT without Totcrs if (!xsecHist->Integral(0, -1)) { NUIS_ERR(WRN, "Old NEUT input file: events will not be correctly normalized"); evtHist = (TH1D *)entryHist->Clone(); if (evtHist->Integral() != 0) evtHist->Scale(fluxHist->Integral() / float(evtHist->Integral())); } else { evtHist = (TH1D *)xsecHist->Clone(); evtHist->Multiply(fluxHist); } // Check whether the overflow is empty. If not, advise that either the wrong // flux histogram or units were used... // If the events were generated with a limited range of the flux histogram, // this may be benign if (evtHist->Integral(0, -1) != evtHist->Integral() || evtHist->Integral(0, -1) == 0) { NUIS_ERR(WRN, "The input file(" << evtHist->Integral(0, -1) << ") and flux histogram provided do not match... "); NUIS_ERR(WRN, "Are the units correct? Did you provide the correct flux file?"); NUIS_ERR(WRN, "Use output with caution..."); } // Pick where the output should go TFile *outFile = NULL; if (!output.empty()) { NUIS_LOG(FIT, "Saving histograms in " << output); outFile = new TFile(output.c_str(), "RECREATE"); } else { NUIS_LOG(FIT, "Saving histograms in " << inputs[0]); outFile = new TFile(inputs[0].c_str(), "UPDATE"); } outFile->cd(); std::string xsec_name = "xsec_PrepareNeut"; std::string flux_name = "flux_PrepareNeut"; std::string rate_name = "evtrt_PrepareNeut"; if (output.empty()) { // Check whether we should overwrite existing histograms std::string input_xsec = PlotUtils::GetObjectWithName(outFile, "xsec"); std::string input_flux = PlotUtils::GetObjectWithName(outFile, "flux"); std::string input_rate = PlotUtils::GetObjectWithName(outFile, "evtrt"); if (!input_xsec.empty()) { NUIS_LOG(FIT, "Updating histogram: " << input_xsec); xsec_name = input_xsec; } if (!input_flux.empty()) { NUIS_LOG(FIT, "Updating histogram: " << input_flux); flux_name = input_flux; } if (!input_rate.empty()) { NUIS_LOG(FIT, "Updating histogram: " << input_rate); rate_name = input_rate; } } else { NUIS_LOG(FIT, "Cloning neuttree into output file."); StopTalking(); TTree *newtree = (TTree *)tn->CloneTree(-1, "fast"); StartTalking(); newtree->Write(); } xsecHist->Write(xsec_name.c_str(), TObject::kOverwrite); fluxHist->Write(flux_name.c_str(), TObject::kOverwrite); evtHist->Write(rate_name.c_str(), TObject::kOverwrite); outFile->Close(); return; } void PrintOptions() { std::cout << "PrepareNEUT NUISANCE app. " << std::endl << "Produces or recalculates evtrt and flux histograms necessary " "for NUISANCE normalization." << std::endl; std::cout << "PrepareNEUT: " << std::endl; std::cout << " [-h,-help,--h,--help]" << std::endl; std::cout << " -i inputfile1.root,inputfile2.root,inputfile3.root,..." << std::endl; std::cout << " Takes any number of files, but assumes all are " "produced with a single flux" << std::endl; std::cout << " -f flux_root_file.root,flux_hist_name" << std::endl; std::cout << " Path to root file containing the flux histogram used " "when generating the NEUT files" << std::endl; std::cout << " [-o outputfile.root] " << std::endl; std::cout << " If an output file is not given, the input file will be used" << std::endl; std::cout << " If more than one input file is given, an output file " "must be given" << std::endl; std::cout << " [-G]" << std::endl; std::cout << " Flux is assumed to be in MeV. This switch indicates " "the input flux is in GeV" << std::endl; std::cout << " [-m E_nu]" << std::endl; std::cout << " Used to add dummy flux and evt rate histograms to " "mono-energetic vectors. Adheres to the -G flag." << std::endl; } void ParseOptions(int argc, char *argv[]) { bool flagopt = false; // If No Arguments print commands for (int i = 1; i < argc; ++i) { if (!std::strcmp(argv[i], "-h")) { flagopt = true; break; } else if (!std::strcmp(argv[i], "-G")) { fFluxInGeV = true; continue; } if (i + 1 != argc) { // Cardfile if (!std::strcmp(argv[i], "-h")) { flagopt = true; break; } else if (!std::strcmp(argv[i], "-i")) { fInputFiles = argv[i + 1]; ++i; } else if (!std::strcmp(argv[i], "-o")) { fOutputFile = argv[i + 1]; ++i; } else if (!std::strcmp(argv[i], "-f")) { fFluxFile = argv[i + 1]; ++i; } else if (!std::strcmp(argv[i], "-m")) { fIsMonoEFlux = true; fMonoEEnergy = GeneralUtils::StrToDbl(argv[i + 1]); ++i; } else { NUIS_ERR(FTL, "ERROR: unknown command line option given! - '" << argv[i] << " " << argv[i + 1] << "'"); PrintOptions(); break; } } } if (fInputFiles == "" && !flagopt) { NUIS_ERR(FTL, "No input file(s) specified!"); flagopt = true; } if (fFluxFile == "" && (!flagopt) && (!fIsMonoEFlux)) { NUIS_ERR(FTL, "No flux input specified!"); flagopt = true; } if (argc < 1 || flagopt) { PrintOptions(); exit(-1); } return; } diff --git a/data/flux/input-flux.root b/data/flux/input-flux.root deleted file mode 100644 index 0143be9..0000000 Binary files a/data/flux/input-flux.root and /dev/null differ diff --git a/event_gen/CMakeLists.txt b/event_gen/CMakeLists.txt new file mode 100644 index 0000000..05b3bb7 --- /dev/null +++ b/event_gen/CMakeLists.txt @@ -0,0 +1,7 @@ +install(PROGRAMS + ${CMAKE_CURRENT_SOURCE_DIR}/nuis_genev_neut + ${CMAKE_CURRENT_SOURCE_DIR}/nuis_genev_genie + ${CMAKE_CURRENT_SOURCE_DIR}/nuis_get_flux_descriptor + ${CMAKE_CURRENT_SOURCE_DIR}/nuis_get_NEUT_target_descriptor + ${CMAKE_CURRENT_SOURCE_DIR}/nuis_get_GENIE_target_descriptor + DESTINATION bin) \ No newline at end of file diff --git a/event_gen/genie/MiniBooNE/thrownuCH2.sh b/event_gen/genie/MiniBooNE/thrownuCH2.sh deleted file mode 100755 index fe9c0fb..0000000 --- a/event_gen/genie/MiniBooNE/thrownuCH2.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -if [ -z $1 ]; then - echo "Please pass a number of events to generate." - exit 1 -fi - -if [ -z $GENIE_XSEC_FILE ] || [ ! -e $GENIE_XSEC_FILE ]; then - echo "Cannot find GENIE xsec file @ \$ENV{GENIE_XSEC_FILE}." - exit 1 -fi - -NEVS=$1 - -BEAMMODE="FHC" -NU_PDG=14 -FLUX_FILE=${NUISANCE}/data/flux/MiniBooNE_numu_flux.root -FLUX_HIST=numu_mb -if [ ! -z $2 ] && [ "${2}" == "RHC" ]; then - echo "Running with " - NU_PDG=-14 - FLUX_FILE=${NUISANCE}/data/flux/MiniBooNE_numubar_flux.root - FLUX_HIST=numub_mb - BEAMMODE="RHC" -fi - -RUNNUM=${RANDOM} - -if [ -e gntp.${RUNNUM}.ghep.root ]; then - echo "Already have file: gntp.${RUNNUM}.ghep.root, not overwriting." - exit 1 -fi - -if [ -e MiniBooNE.CH2.${BEAMMODE}.prep.root ]; then - echo "Already have file: MiniBooNE.CH2.${BEAMMODE}.prep.root, not overwriting." - exit 1 -fi - -CH2TARGET="1000060120[0.85714286],1000010010[0.14285714]" - -gevgen \ - -p ${NU_PDG} -t ${CH2TARGET} \ - -r ${RUNNUM} -e 0.1,10 \ - -f ${FLUX_FILE},${FLUX_HIST} \ - -n ${NEVS} --seed ${RUNNUM} \ - --cross-sections ${GENIE_XSEC_FILE} \ - --event-generator-list Default+MEC \ - --message-thresholds Messenger_whisper.xml - -if [ -e gntp.${RUNNUM}.ghep.root ]; then - rm -f input-flux.root - rm -f genie-mcjob-${RUNNUM}.status - - mv gntp.${RUNNUM}.ghep.root MiniBooNE.CH2.${BEAMMODE}.prep.root - PrepareGENIE -i MiniBooNE.CH2.${BEAMMODE}.prep.root \ - -f ${FLUX_FILE},${FLUX_HIST} \ - -t ${CHTARGET} -else - echo "Failed to produce expected output file: gntp.${RUNNUM}.ghep.root" - exit 1 -fi diff --git a/event_gen/genie/SciBooNE/thrownuCH.sh b/event_gen/genie/SciBooNE/thrownuCH.sh deleted file mode 100755 index b5572a8..0000000 --- a/event_gen/genie/SciBooNE/thrownuCH.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -if [ -z $1 ]; then - echo "Please pass a number of events to generate." - exit 1 -fi - -if [ -z $GENIE_XSEC_FILE ] || [ ! -e $GENIE_XSEC_FILE ]; then - echo "Cannot find GENIE xsec file @ \$ENV{GENIE_XSEC_FILE}." - exit 1 -fi - -NEVS=$1 - -BEAMMODE="FHC" -NU_PDG=14 -FLUX_FILE=${NUISANCE}/data/flux/sciboone_fhc.root -FLUX_HIST=flux_numu -if [ ! -z $2 ] && [ "${2}" == "RHC" ]; then - echo "Do not have SciBooNE RHC Flux." - exit 1 -fi - -RUNNUM=${RANDOM} - -if [ -e gntp.${RUNNUM}.ghep.root ]; then - echo "Already have file: gntp.${RUNNUM}.ghep.root, not overwriting." - exit 1 -fi - -if [ -e SciBooNE.CH.${BEAMMODE}.prep.root ]; then - echo "Already have file: SciBooNE.CH.${BEAMMODE}.prep.root, not overwriting." - exit 1 -fi - -CHTARGET="1000060120[.923076],1000010010[.076924]" - -gevgen \ - -p ${NU_PDG} -t ${CHTARGET} \ - -r ${RUNNUM} -e 0.1,10 \ - -f ${FLUX_FILE},${FLUX_HIST} \ - -n ${NEVS} --seed ${RUNNUM} \ - --cross-sections ${GENIE_XSEC_FILE} \ - --event-generator-list Default+MEC \ - --message-thresholds Messenger_whisper.xml - -if [ -e gntp.${RUNNUM}.ghep.root ]; then - rm -f input-flux.root - rm -f genie-mcjob-${RUNNUM}.status - - mv gntp.${RUNNUM}.ghep.root SciBooNE.CH.${BEAMMODE}.prep.root - PrepareGENIE -i SciBooNE.CH.${BEAMMODE}.prep.root \ - -f ${FLUX_FILE},${FLUX_HIST} \ - -t ${CHTARGET} -else - echo "Failed to produce expected output file: gntp.${RUNNUM}.ghep.root" - exit 1 -fi diff --git a/event_gen/nuis_genev_genie b/event_gen/nuis_genev_genie new file mode 100644 index 0000000..5650369 --- /dev/null +++ b/event_gen/nuis_genev_genie @@ -0,0 +1,177 @@ +#!/bin/bash + +set -e + +if [ -z ${NUISANCE} ]; then + echo "[ERROR]: We need to be in a NUISANCE environment (\$NUISANCE should be set)." + exit 1 +fi + +PROBE="14" +FLUX="" +TARG="" +NEVENTS="" +OUPNAME="" + +while [[ ${#} -gt 0 ]]; do + + key="$1" + case $key in + + -p|--probe) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + PROBE="$2" + echo "[OPT]: Using Probe PDG: ${PROBE}" + shift # past argument + ;; + + -t|--target) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + TARG="$2" + echo "[OPT]: Using target declaration: ${TARG}" + shift # past argument + ;; + + -f|--flux) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + FLUX="$2" + echo "[OPT]: Using flux declaration: ${FLUX}" + shift # past argument + ;; + + -n|--nevents) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + NEVENTS="$2" + echo "[OPT]: Throwing ${NEVENTS} events." + shift # past argument + ;; + + -o|--output-file) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + OUPNAME="$2" + echo "[OPT]: Writing to file: ${OUPNAME}" + shift # past argument + ;; + + -?|--help) + # unknown option + echo "Arguments:" + echo -e "\tRequired:" + echo -e "\t -t|--target : e.g. \"CH\"" + echo -e "\t -f|--flux : hint: use nuis_get_flux_descriptor for a simple interface." + echo -e "\t -n|--nevents <#num events>" + echo -e "\tOptional:" + echo -e "\t -p|--probe : defaults to 14" + echo -e "\t -o|--output-file : defaults to GENIE.....ghep.root" + echo -e "" + echo -e "\t -?|--help" + exit 0 + ;; + + + *) + # unknown option + echo "Unknown option $1" + exit 1 + ;; + esac + shift +done + + +if [ -z ${FLUX} ]; then + echo "Please pass a flux declaration with the -f flag." + exit 2 +fi + +if [ -z ${NEVENTS} ]; then + echo "Please pass a number of events to generate with the -n flag." + exit 2 +fi + +OLDIFS=${IFS} +IFS="," +set -- ${FLUX} +IFS=${OLDIFS} + +FLUX_FILE=${1} +FLUX_HIST=${2} + +if [ -z {$FLUX_FILE} ] || [ -z {$FLUX_HIST} ]; then + echo -e "Please pass a flux declaration with the -f flag in the form \"-f file.root,histo_name\"" + exit 2 +fi + +FLUX_FILE_NAME=${FLUX_FILE##*/} +cp ${FLUX_FILE} ./ + +SEED=${RANDOM} + +if [ -z ${OUPNAME} ]; then + OUPNAME=${GEN}.nu${PROBE}.${SEED}.${FLUX_HIST}.${FLUX_FILE_NAME%%.root}.root +fi + +if [ -e ${OUPNAME} ]; then + echo "Already have file: ${OUPNAME}, not overwriting." + exit 1 +fi + +TARG=$(nuis_get_GENIE_target_descriptor ${TARG}) + +if [ -z ${GENIE_XSEC_FILE} ]; then + echo "Environment not set up correctly, GENIE_XSEC_FILE is empty" + exit 1 +fi +if [ -z ${GENIE_XSEC_TUNE} ]; then + echo "Environment not set up correctly, GENIE_XSEC_TUNE is empty" + exit 1 +fi + +gevgen \ + -p ${PROBE} -t ${TARG} \ + -r ${SEED} -e 0.1,10 \ + -f ${FLUX_FILE},${FLUX_HIST} \ + -n ${NEVENTS} --seed ${SEED} \ + --cross-sections ${GENIE_XSEC_FILE} \ + --tune ${GENIE_XSEC_TUNE} \ + --event-generator-list Default \ + --message-thresholds Messenger_whisper.xml + +if [ -e gntp.${SEED}.ghep.root ]; then + rm -f input-flux.root + rm -f genie-mcjob-${SEED}.status + + mv gntp.${SEED}.ghep.root ${OUPNAME} + PrepareGENIE -i ${OUPNAME} \ + -f ${FLUX_FILE},${FLUX_HIST} \ + -t ${TARG} +else + echo "Failed to produce expected output file: gntp.${SEED}.ghep.root" + exit 1 +fi + diff --git a/event_gen/nuis_genev_neut b/event_gen/nuis_genev_neut new file mode 100755 index 0000000..697a181 --- /dev/null +++ b/event_gen/nuis_genev_neut @@ -0,0 +1,359 @@ +#!/bin/bash + +set -e + +if [ -z ${NUISANCE} ]; then + echo "[ERROR]: We need to be in a NUISANCE environment (\$NUISANCE should be set)." + exit 1 +fi + + +PROBE="14" +FLUX_DESCRIPTOR="" +TARG="" +NEVENTS="" +OUPNAME="" +MDLQE="" +MAQE="" +FSIOFF="no" +NUCEFFOFF="no" +QEONLY="no" +RESONLY="no" + +while [[ ${#} -gt 0 ]]; do + + key="$1" + case $key in + + -p|--probe) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + PROBE="$2" + echo "[OPT]: Using Probe PDG: ${PROBE}" + shift # past argument + ;; + + -t|--target) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + TARG="$2" + echo "[OPT]: Using target declaration: ${TARG}" + shift # past argument + ;; + + -f|--flux) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + FLUX_DESCRIPTOR="$2" + echo "[OPT]: Using flux declaration: ${FLUX_DESCRIPTOR}" + shift # past argument + ;; + + -n|--nevents) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + NEVENTS="$2" + echo "[OPT]: Throwing ${NEVENTS} events." + shift # past argument + ;; + + -o|--output-file) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + OUPNAME="$2" + echo "[OPT]: Writing to file: ${OUPNAME}" + shift # past argument + ;; + + --MDLQE) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + MDLQE="$2" + echo "[OPT]: Writing to file: ${MDLQE}" + shift # past argument + ;; + + --QE-only) + + echo "[OPT]: Only generating true QE events." + QEONLY="yes" + ;; + + --RES-only) + + echo "[OPT]: Only generating true RES 1pi events." + RESONLY="yes" + ;; + + --no-FSI) + + echo "[OPT]: Disabling hadronic FSI." + FSIOFF="yes" + ;; + + --no-nuc-eff) + + echo "[OPT]: Disabling nuclear effects." + NUCEFFOFF="yes" + ;; + + -?|--help) + # unknown option + echo "Arguments:" + echo -e "\tRequired:" + echo -e "\t -t|--target : e.g. \"CH\"" + echo -e "\t -f|--flux : hint: use nuis_get_flux_descriptor for a simple interface." + echo -e "\t -n|--nevents <#num events>" + echo -e "\tOptional:" + echo -e "\t -p|--probe : defaults to 14" + echo -e "\t -o|--output-file : defaults to NEUT.....neutvect.root" + echo -e "\tModel options:" + echo -e "\t --MDLQE : If unspecified left up to NEUT default" + echo -e "\t --MAQE : If unspecified left up to NEUT default" + echo -e "\t --QE-only : Only generate QE events." + echo -e "\t --RES-only : Only generate RES 1pi events." + echo -e "\t --no-FSI : disable hadronic FSI" + echo -e "\t --no-nuc-eff : try to disable all nuclear effects" + echo -e "" + echo -e "\t -?|--help" + exit 0 + ;; + + + *) + # unknown option + echo "Unknown option $1" + exit 1 + ;; + esac + shift +done + + +if [ -z ${FLUX_DESCRIPTOR} ]; then + echo "Please pass a flux declaration with the -f flag." + exit 2 +fi + +if [ -z ${NEVENTS} ]; then + echo "Please pass a number of events to generate with the -n flag." + exit 2 +fi + +OLDIFS=${IFS} +IFS="," +set -- ${FLUX_DESCRIPTOR} +IFS=${OLDIFS} + +FLUX_FILE=${1} +FLUX_HIST=${2} + +if [ -z {$FLUX_FILE} ] || [ -z {$FLUX_HIST} ]; then + echo -e "Please pass a flux declaration with the -f flag in the form \"-f file.root,histo_name\"" + exit 2 +fi + +FLUX_FILE_NAME=${FLUX_FILE##*/} +cp ${FLUX_FILE} ./ + +if [ -z ${NEVENTS} ] ; then + echo "Please pass an integer number of events to run with the -n flag." + exit 3 +fi + +SEED=${RANDOM} + +if [ -z ${OUPNAME} ]; then + OUPNAME=neutvect.${PROBE}.${FLUX_HIST}.${FLUX_FILE_NAME%%.root}.${SEED}.root +fi + +if [ -e ${OUPNAME} ]; then + echo "Already have file: ${OUPNAME}, not overwriting." + exit 1 +fi + +TARG_DESCRIPTOR=$(nuis_get_NEUT_target_descriptor ${TARG}) + +OLDIFS=${IFS} +IFS=":" +set -- ${TARG_DESCRIPTOR} +IFS=${OLDIFS} + +TARG_N=${1} +TARG_Z=${2} +TARG_H=${3} +TARG_A=${4} + + +CARDNAME=neutvect.${PROBE}.${FLUX_HIST}.${FLUX_FILE_NAME%%.root}.${SEED}.card + +echo "EVCT-NEVT ${NEVENTS}" > ${CARDNAME} + +echo "EVCT-IDPT ${PROBE}" >> ${CARDNAME} + +echo "EVCT-MPOS 1" >> ${CARDNAME} +echo "EVCT-POS 0. 0. 0." >> ${CARDNAME} + +echo "EVCT-MDIR 1" >> ${CARDNAME} +echo "EVCT-DIR 0. 0. 1." >> ${CARDNAME} + +echo "EVCT-MPV 3" >> ${CARDNAME} +echo -e "EVCT-FILENM '${FLUX_FILE_NAME}'" >> ${CARDNAME} +echo -e "EVCT-HISTNM '${FLUX_HIST}'" >> ${CARDNAME} +echo "EVCT-INMEV 0" >> ${CARDNAME} + +echo "NEUT-NUMBNDN ${TARG_N}" >> ${CARDNAME} +echo "NEUT-NUMBNDP ${TARG_Z}" >> ${CARDNAME} +echo "NEUT-NUMFREP ${TARG_H}" >> ${CARDNAME} +echo "NEUT-NUMATOM ${TARG_A}" >> ${CARDNAME} + +if [ "${QEONLY}" == "yes" ] && [ "${RESONLY}" == "yes" ]; then + echo "[ERROR]: Both --QE-only and --RES-only passed. Please pass one or neither." + exit 1 +fi + + +if [ "${TARG}" = "H" ] || [ "${TARG}" = "D" ] || [ "${NUCEFFOFF}" = "yes" ]; then + MDLQE="02" + # nu nub + # 1: CC Q.E. CC Q.E.( Free ) + # 2-4: CC 1pi CC 1pi + # 5: CC DIS 1320 CC DIS 1.3 < W < 2.0 + # 6-9: NC 1pi NC 1pi + # 10: NC DIS 1320 NC DIS 1.3 < W < 2.0 + # 11: NC els CC Q.E.( Bound ) + # 12: NC els NC els + # 13: NC els NC els + # 14: coherent NC els + # 15: coherent coherent + # 16: CC eta coherent + # 17 NC eta CC eta + # 18: NC eta NC eta + # 19: CC K NC eta + # 20 NC K CC K + # 21: NC K NC K + # 22: N/A NC K + # 23: CC DIS CC DIS (W > 2.0) + # 24: NC DIS NC DIS (W > 2.0) + # 25: CC 1 gamma CC 1 gamma + # 26,27: NC 1 gamma NC 1 gamma + # 28 CC 2p2h CC 2p2h + # 29 CC Difract. CC Difract + # 30 NC Difract. NC Difract + # + # + # CRS : Multiplied factor to cross section on each mode. ( neu ) + # CSRB : Multiplied factor to cross section on each mode. ( neu-bar ) + + echo "NEUT-MODE -1" >> ${CARDNAME} + + if [ "${QEONLY}" == "yes" ]; then + # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 + echo "NEUT-CRS 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + echo "NEUT-CRSB 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + elif [ "${RESONLY}" == "yes" ];then + # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 + echo "NEUT-CRS 0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + echo "NEUT-CRSB 0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + else + # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 + echo "NEUT-CRS 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1." >> ${CARDNAME} + echo "NEUT-CRSB 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1." >> ${CARDNAME} + fi +else + if [ "${QEONLY}" == "yes" ]; then + echo "NEUT-MODE -1" >> ${CARDNAME} + # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 + echo "NEUT-CRS 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + echo "NEUT-CRSB 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + elif [ "${RESONLY}" == "yes" ];then + echo "NEUT-MODE -1" >> ${CARDNAME} + # 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 + echo "NEUT-CRS 0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + echo "NEUT-CRSB 0. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0." >> ${CARDNAME} + fi +fi + +echo "NEUT-MDL2P2H 1" >> ${CARDNAME} + +if [ ! -z "${MDLQE}" ]; then + echo "NEUT-MDLQE ${MDLQE}" >> ${CARDNAME} +fi +if [ ! -z "${MAQE}" ]; then + echo "NEUT-MAQE ${MAQE}" >> ${CARDNAME} +fi + +#disable nuclear effects if running on H/D +if [ "${TARG}" = "H" ] || [ "${TARG}" = "D" ] || [ "${NUCEFFOFF}" = "yes" ]; then + echo "NEUT-PFSURF 0.000001" >> ${CARDNAME} + echo "NEUT-PFMAX 0.000001" >> ${CARDNAME} + echo "NEUT-VNUINI 0.000001" >> ${CARDNAME} + echo "NEUT-VNUFIN 0.000001" >> ${CARDNAME} + + echo "NEUT-FERM 1" >> ${CARDNAME} + echo "NEUT-PAUL 1" >> ${CARDNAME} + echo "NEUT-NEFF 1" >> ${CARDNAME} + echo "NEUT-IFORMLEN 0" >> ${CARDNAME} + echo "NEUT-IPILESSDCY 0" >> ${CARDNAME} + + echo "NEUT-ABSPIEMIT 0" >> ${CARDNAME} +fi + +if [ "${TARG}" = "H" ] || [ "${TARG}" = "D" ] || [ "${FSIOFF}" = "yes" ]; then + echo "NUCRES-RESCAT 0" >> ${CARDNAME} + + echo "NEUT-FEFQE 0." >> ${CARDNAME} + echo "NEUT-FEFQEH 0." >> ${CARDNAME} + echo "NEUT-FEFINEL 0." >> ${CARDNAME} + echo "NEUT-FEFABS 0." >> ${CARDNAME} + echo "NEUT-FEFCOH 0." >> ${CARDNAME} + echo "NEUT-FEFCX 0." >> ${CARDNAME} + echo "NEUT-FEFCXH 0." >> ${CARDNAME} + echo "NEUT-FEFQEHF 0." >> ${CARDNAME} + echo "NEUT-FEFCXHF 0." >> ${CARDNAME} + echo "NEUT-FEFCOHF 0." >> ${CARDNAME} + echo "NEUT-FEFCOUL 0." >> ${CARDNAME} + echo "NEUT-FEFALL 0." >> ${CARDNAME} +fi + +echo "NEUT-RAND 1" >> ${CARDNAME} + + +echo "Running neutroot2 ${CARDNAME} ${OUPNAME} for ${NEVS} events." +neutroot2 ${CARDNAME} ${OUPNAME%%.root}.gen.root + +if [ -e ${OUPNAME%%.root}.gen.root ]; then + rm -f fort.77 + + mv ${OUPNAME%%.root}.gen.root ${OUPNAME} + + PrepareNEUT -i ${OUPNAME} \ + -f ${FLUX_FILE},${FLUX_HIST} -G +else + echo "Failed to produce expected output file: ${OUPNAME}" + exit 1 +fi \ No newline at end of file diff --git a/event_gen/nuis_get_GENIE_target_descriptor b/event_gen/nuis_get_GENIE_target_descriptor new file mode 100755 index 0000000..dc00d02 --- /dev/null +++ b/event_gen/nuis_get_GENIE_target_descriptor @@ -0,0 +1,32 @@ +#!/bin/bash + +TARG=${1} + +if [ -z "${TARG}" ]; then + echo "[ERROR]: Please pass target materical descriptor, e.g. CH" + exit 1 +fi + +if [ "${TARG}" = "H" ]; then + echo "1000010010[1]" +elif [ "${TARG}" = "D" ]; then + echo "1000010020[1]" +elif [ "${TARG}" = "C" ]; then + echo "1000060120[1]" +elif [ "${TARG}" = "CH" ]; then + echo "1000060120[.923076],1000010010[.076924]" +elif [ "${TARG}" = "CH2" ]; then + echo "1000060120[.8571],1000010010[.14285]" +elif [ "${TARG}" = "O" ]; then + echo "1000060120[1]" +elif [ "${TARG}" = "H2O" ]; then + echo "1000080160[.888888],1000010010[.111112]" +elif [ "${TARG}" = "Ar" ]; then + echo "1000180400[1]" +elif [ "${TARG}" = "Fe" ]; then + echo "1000260560[1]" +elif [ "${TARG}" = "Pb" ]; then + echo "1000822080[1]" +else + echo "[ERROR]: Invalid target material: \"${TARG}\" for NEUT." +fi \ No newline at end of file diff --git a/event_gen/nuis_get_NEUT_target_descriptor b/event_gen/nuis_get_NEUT_target_descriptor new file mode 100755 index 0000000..11eb833 --- /dev/null +++ b/event_gen/nuis_get_NEUT_target_descriptor @@ -0,0 +1,69 @@ +#!/bin/bash + +TARG=${1} + +if [ -z "${TARG}" ]; then + echo "[ERROR]: Please pass target materical descriptor, e.g. CH" + exit 1 +fi + +TARG_N="" +TARG_Z="" +TARG_H="" +TARG_A="" + +if [ "${TARG}" = "H" ]; then + TARG_N="0" + TARG_Z="1" + TARG_H="0" + TARG_A="1" +elif [ "${TARG}" = "D" ]; then + TARG_N="1" + TARG_Z="1" + TARG_H="0" + TARG_A="2" +elif [ "${TARG}" = "C" ]; then + TARG_N="6" + TARG_Z="6" + TARG_H="0" + TARG_A="12" +elif [ "${TARG}" = "CH" ]; then + TARG_N="6" + TARG_Z="6" + TARG_H="1" + TARG_A="12" +elif [ "${TARG}" = "CH2" ]; then + TARG_N="6" + TARG_Z="6" + TARG_H="2" + TARG_A="12" +elif [ "${TARG}" = "O" ]; then + TARG_N="8" + TARG_Z="8" + TARG_H="0" + TARG_A="16" +elif [ "${TARG}" = "H2O" ]; then + TARG_N="8" + TARG_Z="8" + TARG_H="2" + TARG_A="16" +elif [ "${TARG}" = "Ar" ]; then + TARG_N="22" + TARG_Z="18" + TARG_H="0" + TARG_A="40" +elif [ "${TARG}" = "Fe" ]; then + TARG_N="30" + TARG_Z="26" + TARG_H="0" + TARG_A="56" +elif [ "${TARG}" = "Pb" ]; then + TARG_N="126" + TARG_Z="82" + TARG_H="0" + TARG_A="208" +else + echo "[ERROR]: Invalid target material: \"${TARG}\" for NEUT." +fi + +echo "${TARG_N}:${TARG_Z}:${TARG_H}:${TARG_A}" \ No newline at end of file diff --git a/event_gen/nuis_get_flux_descriptor b/event_gen/nuis_get_flux_descriptor new file mode 100755 index 0000000..75f4d87 --- /dev/null +++ b/event_gen/nuis_get_flux_descriptor @@ -0,0 +1,303 @@ +#!/bin/bash + +if [ -z ${NUISANCE} ]; then + echo "[ERROR]: We need to be in a NUISANCE environment (\$NUISANCE should be set)." + exit 1 +fi + +EXPERIMENT="" +PROBE="14" +BEAMMODE="nu" + + +while [[ ${#} -gt 0 ]]; do + + key="$1" + case $key in + + -e|--experiment) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + EXPERIMENT="$2" + shift # past argument + ;; + + -p|--probe) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + PROBE="$2" + shift # past argument + ;; + + -m|--beam-mode) + + if [[ ${#} -lt 2 ]]; then + echo "[ERROR]: ${1} expected a value." + exit 1 + fi + + BEAMMODE="$2" + shift # past argument + ;; + + -AE|--all-experiments) + + echo -e "Experimental Fluxes Available:" + echo -e " ANL_77 (ANL)" + echo -e " ArgoNeut" + echo -e " BEBC" + echo -e " BNL_81" + echo -e " BNL_86" + echo -e " BNL_02 (BNL)" + echo -e " FNAL_82" + echo -e " FNAL_93 (FNAL)" + echo -e " GGM" + echo -e " K2K" + echo -e " MicroBooNE" + echo -e " MINERvA_LE (MINERvA)" + echo -e " MINERvA_ME" + echo -e " MiniBooNE" + echo -e " NOvA_ND" + echo -e " SciBooNE" + echo -e " T2K_ND" + exit 0 + ;; + + -?|--help) + # unknown option + echo "Arguments:" + echo -e "\tRequired:" + echo -e "\t -e|--experiment " + echo -e "\tOptional:" + echo -e "\t -p|--probe : defaults to 14" + echo -e "\t -m|--beam-mode : defaults to nu" + echo -e "\t -AE|--all-experiments : List all experiments" + echo -e "\t -?|--help" + exit 0 + ;; + + + *) + # unknown option + echo "Unknown option $1" + exit 1 + ;; + esac + shift +done + +if [ -z "${EXPERIMENT}" ]; then + echo "[ERROR]: No experiment requested, please pass experiment name with -e CLI option." + exit 1 +fi + +if [ "${PROBE}" != "14" ] && [ "${PROBE}" != "-14" ] && [ "${PROBE}" != "12" ] \ + && [ "${PROBE}" != "-12" ]; then + echo "[ERROR]: Invalid probe pdg requested, please use one of 14 (numu), -14, 12 (nue), or -12." + exit 1 +fi + +case $EXPERIMENT in + ANL) + # Bash 4 fallthrough + ;& + ANL_77) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/ANL_1977_2horn_rescan.root,numu_flux" + exit 0 + fi + ;; + ArgoNeut) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/ArgoNeut_numu_flux.root,numu" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/ArgoNeut_numub_flux.root,numub" + exit 0 + fi + ;; + BEBC) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/BEBC_Wachsmuth_numu_table.root,numu_flux" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/BEBC_Wachsmuth_numubar_table.root,numu_flux" + exit 0 + fi + ;; + BNL_81) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/BNL_CCQE_1981_rescan-ALTERNATIVE.root,numu_flux" + exit 0 + fi + ;; + BNL_86) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/BNL_1986_flux-ALTERNATIVE.root,numu_flux" + exit 0 + fi + ;; + BNL) + # Bash 4 fallthrough + ;& + BNL_02) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/BNL_NuInt02_rescan.root,numu_flux" + exit 0 + fi + ;; + FNAL_82) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/FNAL_CCinc_1982_nu_MCadj.root,numu_flux" + exit 0 + fi + ;; + FNAL) + # Bash 4 fallthrough + ;& + FNAL_93) + if [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/FNAL_coh_1993_anu.root,numu_flux" + exit 0 + fi + ;; + GGM) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/GGM_nu_flux_1979_rescan.root,numu_flux" + exit 0 + fi + ;; + K2K) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/K2K_flux.root,numu_flux" + exit 0 + fi + ;; + MicroBooNE) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/MicroBooNE_CCInc2019_numode_numu_flux.root,flux_numu" + exit 0 + fi + ;; + MINERvA) + ;& + MINERvA_LE) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,numu_fhc" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,numubar_fhc" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,nue_fhc" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,nuebar_fhc" + exit 0 + elif [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,numu_rhc" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,numubar_rhc" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,nue_rhc" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/minerva_le_flux.root,nuebar_rhc" + exit 0 + fi + ;; + MINERvA_ME) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/MINERvA_ME_Flux_No_Constraint.root,reweightedflux_rebinned_CV_WithStatErr" + exit 0 + fi + ;; + MiniBooNE) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numu_flux.root,numu_mb" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numu_flux.root,numub_mb" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numu_flux.root,nue_mb" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numu_flux.root,nueb_mb" + exit 0 + elif [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numubar_flux.root,numu_mb" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numubar_flux.root,numub_mb" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numubar_flux.root,nue_mb" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/MiniBooNE_numubar_flux.root,nueb_mb" + exit 0 + fi + ;; + NOvA_ND) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/FHC_Flux_NOvA_ND_2017.root,flux_numu" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/FHC_Flux_NOvA_ND_2017.root,flux_numubar" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/FHC_Flux_NOvA_ND_2017.root,flux_nue" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/FHC_Flux_NOvA_ND_2017.root,flux_nuebar" + exit 0 + fi + ;; + SciBooNE) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/sciboone_fhc.root,flux_numu" + exit 0 + fi + ;; + T2K_ND) + if [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_plus250kA.root,enu_nd280_numu" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_plus250kA.root,enu_nd280_numub" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_plus250kA.root,enu_nd280_nue" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nu" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_plus250kA.root,enu_nd280_nueb" + exit 0 + elif [ "${PROBE}" == "14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_minus250kA.root,enu_nd280_numu" + exit 0 + elif [ "${PROBE}" == "-14" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_minus250kA.root,enu_nd280_numub" + exit 0 + elif [ "${PROBE}" == "12" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_minus250kA.root,enu_nd280_nue" + exit 0 + elif [ "${PROBE}" == "-12" ] && [ "${BEAMMODE}" == "nubar" ]; then + echo "${NUISANCE}/data/flux/t2kflux_2016_minus250kA.root,enu_nd280_nueb" + exit 0 + fi + ;; +esac + +echo "[ERROR]: Could not find flux for Experiment: \"${EXPERIMENT}\", in Mode: \"${BEAMMODE}\" for neutrino species pdg: \"${PROBE}\"." +exit 1 \ No newline at end of file diff --git a/event_gen/nuwro/ArgoNeuT/ArgoNeut_nu.params b/event_gen/nuwro/ArgoNeuT/ArgoNeut_nu.params deleted file mode 100644 index 78a8857..0000000 --- a/event_gen/nuwro/ArgoNeuT/ArgoNeut_nu.params +++ /dev/null @@ -1,132 +0,0 @@ -random_seed = 0 -number_of_events = 250000 -number_of_test_events = 1000000 -save_test_events = 0 -OutputEvtHistogram = 1 -user_events = 0 -user_params = -beam_type = 0 -beam_energy = 0 50E3 8.0E3 4.2E4 6.9E4 6.9E4 2.8E4 8.9E3 4.7E3 3.3E3 2.4E3 1.9E3 1.6E3 1.2E3 1.1E3 8.3E2 6.8E2 5.6E2 4.8E2 3.7E2 3.1E2 2.6E2 0.3E2 0.3E2 0.3E2 0.3E2 0.3E2 12.2 12.2 12.2 12.2 12.2 5.8 5.8 5.8 5.8 5.8 2.8 2.8 2.8 2.8 2.8 1.5 1.5 1.5 1.5 1.5 0.88 0.88 0.88 0.88 0.88 -beam_particle = 14 -beam_direction = 0 0 1 -beam_content = -beam_folder = flux -beam_file = 1 -beam_file_first = 1 -beam_file_limit = 0 -beam_weighted = 0 -beam_offset = 0 0 0 -beam_placement = 0 -beam_test_only = 0 -target_type = 0 -nucleus_p = 18 -nucleus_n = 22 -nucleus_E_b = 34 -nucleus_kf = 220 -target_content = -geo_file = target/ND280_v9r7p5.root -geo_name = ND280Geometry_v9r7p5 -geo_volume = -geo_o = 0 0 0 -geo_d = 2000 2000 5000 -nucleus_target = 2 -nucleus_model = 1 -nucleus_LFGkfScale = 1 -dyn_qel_cc = 1 -dyn_qel_nc = 1 -dyn_res_cc = 1 -dyn_res_nc = 1 -dyn_dis_cc = 1 -dyn_dis_nc = 1 -dyn_coh_cc = 1 -dyn_coh_nc = 1 -dyn_mec_cc = 0 -dyn_mec_nc = 0 -qel_kinematics = 0 -qel_vector_ff_set = 2 -bba07_AEp1 = 1 -bba07_AEp2 = 0.9927 -bba07_AEp3 = 0.9898 -bba07_AEp4 = 0.9975 -bba07_AEp5 = 0.9812 -bba07_AEp6 = 0.934 -bba07_AEp7 = 1 -bba07_AMp1 = 1 -bba07_AMp2 = 1.0011 -bba07_AMp3 = 0.9992 -bba07_AMp4 = 0.9974 -bba07_AMp5 = 1.001 -bba07_AMp6 = 1.0003 -bba07_AMp7 = 1 -bba07_AEn1 = 1 -bba07_AEn2 = 1.011 -bba07_AEn3 = 1.1392 -bba07_AEn4 = 1.0203 -bba07_AEn5 = 1.1093 -bba07_AEn6 = 1.5429 -bba07_AEn7 = 0.9706 -bba07_AMn1 = 1 -bba07_AMn2 = 0.9958 -bba07_AMn3 = 0.9877 -bba07_AMn4 = 1.0193 -bba07_AMn5 = 1.035 -bba07_AMn6 = 0.9164 -bba07_AMn7 = 0.73 -bba07_AAx1 = 1 -bba07_AAx2 = 0.9958 -bba07_AAx3 = 0.9877 -bba07_AAx4 = 1.0193 -bba07_AAx5 = 1.035 -bba07_AAx6 = 0.9164 -bba07_AAx7 = 0.73 -qel_axial_ff_set = 1 -qel_rpa = 0 -qel_strange = 1 -qel_strangeEM = 0 -delta_s = -0.15 -qel_cc_vector_mass = 1000 -qel_cc_axial_mass = 1200 -qel_nc_axial_mass = 1350 -qel_s_axial_mass = 1200 -qel_axial_2comp_gamma = 0.15 -qel_axial_2comp_alpha = 2 -qel_axial_3comp_theta = 0.15 -qel_axial_3comp_beta = 2 -flux_correction = 0 -sf_method = 0 -sf_pb = 0 -cc_smoothing = 0 -delta_FF_set = 1 -pion_axial_mass = 0.94 -pion_C5A = 1.19 -SPPBkgScale = 0 -delta_angular = 0 -spp_precision = 500 -res_dis_cut = 1600 -bkgrscaling = 0 -coh_mass_correction = 1 -coh_new = 1 -coh_kind = 2 -mec_kind = 1 -mec_ratio_pp = 0.9 -mec_ratio_ppp = 0.8 -mec_central_motion = 100 -mec_back_to_back_smearing = 0.15 -mec_pb_trials = 25 -MEC_pauli_blocking = 1 -MEC_cm_direction = 0 -kaskada_on = 1 -kaskada_w = 7 -kaskada_redo = 0 -kaskada_writeall = 0 -kaskada_newangle = 0 -formation_zone = fz -tau = 8 -formation_length = 1 -first_step = 1 -step = 0.2 -xsec = 1 -pauli_blocking = 1 -mixed_order = 1 -rmin = 1 -rmax = 1 diff --git a/event_gen/nuwro/ND280/ND280_CH_FHC.params b/event_gen/nuwro/ND280/ND280_CH_FHC.params deleted file mode 100644 index 22b3124..0000000 --- a/event_gen/nuwro/ND280/ND280_CH_FHC.params +++ /dev/null @@ -1,136 +0,0 @@ -random_seed = 0 -number_of_events = 50000 -number_of_test_events = 1000000 -save_test_events = 0 -OutputEvtHistogram = 1 -user_events = 0 -user_params = -beam_type = 1 -beam_energy =1000 -beam_particle = 14 -beam_direction = 0 0 1 -beam_content = 14 92.8% 50 9450 38571.4 82467.5 134286 208016 291786 389464 496786 601825 747946 945238 1.09036e+06 1.13119e+06 1.07349e+06 915000 676786 455000 293571 194048 141464 110714 91904.8 78285.7 68015.9 60918.4 53954.1 48452.4 43035.7 39365.1 35754 33992.3 32251.3 30510.2 28769.1 27028.1 25287 24085.1 22989.6 21894.1 20798.6 19703 18607.5 17512 16416.5 15321 14266.5 13917.1 13567.6 13218.1 12868.7 12519.2 12169.7 11820.3 11470.8 11121.4 10771.9 10507.9 10260.8 10013.6 9766.52 9519.39 9272.26 9025.14 8778.01 8530.88 8308.78 8206.78 8104.78 8002.77 7900.77 7798.77 7696.77 7594.77 7492.77 7390.76 7288.76 7196.35 7105.94 7015.53 6925.12 6834.71 6744.3 6653.89 6563.47 6473.06 6382.65 6245.64 6098.92 5952.2 5805.48 5658.75 5512.03 5365.31 5218.59 5071.87 4925.15 4787.18 4651.05 4514.91 4378.77 4242.63 4106.49 3970.35 3834.22 3698.08 3561.94 3425.8 3289.66 3153.53 3017.39 2881.25 2767.77 2704.64 2641.51 2578.38 2515.25 2452.12 2389 2325.87 2262.74 2199.61 2136.48 2073.35 2010.22 1947.09 1883.97 1820.84 1757.71 1694.58 1631.45 1568.32 1524.02 1489.62 1455.22 1420.82 1386.42 1352.02 1317.63 1283.23 1248.83 1214.43 1180.03 1145.63 1111.24 1076.84 1042.44 1008.04 973.643 939.245 904.847 870.448 847.568 830.749 813.93 797.111 780.292 763.473 746.654 729.835 713.016 696.197 679.377 662.558 645.739 628.92 612.101 595.282 578.463 561.644 544.825 528.006 514.286 502.196 490.106 478.017 465.927 453.837 441.748 429.658 417.568 405.478 393.389 381.299 369.209 357.12 345.03 332.94 320.85 308.761 296.671 -beam_content += -14 5.9% 50 9450 30264.9 34305.2 34028.6 30703.8 26975.1 27044.5 27369.6 27746.9 28126.5 27779.2 27413.1 26882.3 26331.1 24512 22578 20644.1 18710.1 17191.8 15675.9 14695.9 13768.4 12933.3 12098.2 11433.4 10770.2 9830.67 8891.1 8107.64 7336.35 6880.7 6439.43 6213.76 5990.46 5520.28 5050.11 4809.09 4587.31 4365.54 4143.76 3868.78 3592.18 3381.59 3171.36 2938.91 2705.28 2495.05 2284.81 2307.97 2341.74 2375.5 2270.61 2164.19 2057.77 1951.34 1840.22 1728.04 1615.85 1503.66 1491 1494.39 1497.78 1482.94 1388.2 1293.45 1198.71 1138.77 1134.57 1130.36 1126.16 1108.57 1048.01 987.446 926.886 869.666 845.929 822.193 798.457 774.72 749.48 724.151 698.822 673.492 648.163 622.833 597.859 583.501 569.143 554.785 540.427 526.068 511.71 497.352 482.994 468.636 454.31 443.006 431.702 420.398 409.093 397.789 386.485 375.181 363.877 352.572 341.268 329.964 318.66 307.355 296.051 285.453 278.819 272.185 265.551 258.917 252.283 245.648 239.014 232.38 225.746 219.112 212.478 205.844 199.21 192.575 185.941 179.307 172.673 166.039 159.405 152.771 147.274 143.367 139.46 135.554 131.647 127.741 123.834 119.928 116.021 112.114 108.208 104.301 100.395 96.4881 92.5816 88.675 84.7684 80.8618 76.9553 73.0487 70.0752 68.666 67.2567 65.8475 64.4382 63.029 61.6197 60.2105 58.8012 57.392 55.9827 54.5735 53.1642 51.755 50.3457 48.9365 47.5272 46.118 44.7087 43.2995 42.5277 42.0615 41.5953 41.129 40.6628 40.1966 39.7303 39.2641 38.7979 38.3316 37.8654 37.3991 36.9329 36.4667 36.0004 35.5342 35.068 34.6017 34.1355 -beam_content += 12 1.1% 50 9450 682.68 1614.26 2547.81 3539.18 4497.06 4879.09 5261.12 5389.59 5493.08 5447.68 5400.58 5199.56 4992.35 4603.48 4214.62 3951.77 3690.69 3362.89 3035.08 2856.57 2678.66 2405.14 2135.59 1982.91 1833.19 1734.37 1635.54 1523.59 1411.2 1357.52 1304.49 1222.73 1139.13 1093.73 1048.33 1030.99 1015.27 983.975 952.147 928.287 904.697 897.463 890.229 866.417 841.434 820.08 798.725 782.205 766.49 750.775 731.959 712.76 693.561 674.362 651.394 627.623 603.851 580.08 558.781 537.857 516.933 496.01 477.714 460.207 442.699 425.192 409.079 393.749 378.419 363.089 352.524 342.774 333.024 323.273 310.985 297.728 284.472 271.215 259.332 251.523 243.713 235.904 228.094 220.285 212.476 204.683 197.583 190.483 183.383 176.282 169.182 162.082 154.982 147.882 140.782 135.001 131.267 127.533 123.799 120.065 116.331 112.597 108.863 105.129 101.396 97.6616 93.9277 90.1938 86.4599 82.7259 79.3897 77.2714 75.1531 73.0348 70.9164 68.7981 66.6798 64.5615 62.4431 60.3248 58.2065 56.0882 53.9698 51.8515 49.7332 47.6149 45.4965 43.3782 41.2599 39.1416 37.3594 36.4119 35.4644 34.5169 33.5694 32.6219 31.6744 30.7269 29.7794 28.8319 27.8844 26.9369 25.9894 25.042 24.0945 23.147 22.1995 21.252 20.3045 19.357 18.4095 17.8893 17.38 16.8706 16.3612 15.8519 15.3425 14.8332 14.3238 13.8145 13.3051 12.7958 12.2864 11.7771 11.2677 10.7583 10.249 9.73964 9.23028 8.72093 8.34094 8.18991 8.03887 7.88783 7.73679 7.58575 7.43471 7.28368 7.13264 6.9816 6.83056 6.67952 6.52848 6.37745 6.22641 6.07537 5.92433 5.77329 5.62226 -beam_content += -12 0.2% 50 9450 69.169 148.438 227.629 291.149 353.265 382.617 411.969 463.842 510.51 499.004 487.645 486.89 486.136 481.116 475.782 511.634 539.866 479.616 419.964 403.28 387.281 387.244 385.393 358.873 333.381 317.574 302.12 312.118 322.116 311.572 299.771 291.411 283.23 276.741 270.206 260.333 250.926 252.401 252.375 231.908 213.194 211.007 208.89 211.879 214.122 198.952 184.749 183.703 182.657 181.116 175.558 169.999 164.44 159.004 155.67 152.336 149.002 145.669 142.772 139.884 136.996 134.108 130.574 126.825 123.076 119.326 113.526 107.593 101.661 95.7284 94.1626 93.803 93.4434 93.0838 90.1456 87.1387 84.1318 81.1249 78.5051 76.3185 74.1319 71.9453 69.7588 67.5722 65.3856 63.899 62.4974 61.0958 59.6942 58.2926 56.891 55.4894 54.0878 52.6862 51.2846 49.8847 48.4864 47.0881 45.6899 44.2916 42.8933 41.4951 40.0968 38.6985 37.3003 35.902 34.5037 33.1055 31.7072 30.3089 29.547 28.8139 28.0808 27.3477 26.6146 25.8816 25.1485 24.4154 23.6823 22.9492 22.2161 21.483 20.7499 20.0168 19.2837 18.5506 17.8175 17.0844 16.3513 15.6873 15.2732 14.8591 14.445 14.031 13.6169 13.2028 12.7887 12.3747 11.9606 11.5465 11.1324 10.7184 10.3043 9.89021 9.47614 9.06206 8.64799 8.23391 7.81984 7.40576 7.17193 6.98789 6.80385 6.61981 6.43577 6.25173 6.06769 5.88365 5.69961 5.51557 5.33153 5.14749 4.96345 4.77941 4.59537 4.41133 4.22728 4.04324 3.8592 3.68106 3.63326 3.58546 3.53767 3.48987 3.44207 3.39427 3.34647 3.29868 3.25088 3.20308 3.15528 3.10748 3.05968 3.01189 2.96409 2.91629 2.86849 2.82069 2.77289 -beam_folder = flux -beam_file = 1 -beam_file_first = 1 -beam_file_limit = 0 -beam_weighted = 0 -beam_offset = 0 0 0 -beam_placement = 0 -beam_test_only = 0 -target_type = 1 -nucleus_p = 6 -nucleus_n = 6 -nucleus_E_b = 34 -nucleus_kf = 220 -target_content = 1 0 1x 0 0 0 -target_content += 6 6 1x 27 220 2 -geo_file = target/ND280_v9r7p5.root -geo_name = ND280Geometry_v9r7p5 -geo_volume = -geo_o = 0 0 0 -geo_d = 2000 2000 5000 -nucleus_target = 2 -nucleus_model = 1 -nucleus_LFGkfScale = 1 -dyn_qel_cc = 1 -dyn_qel_nc = 0 -dyn_res_cc = 1 -dyn_res_nc = 0 -dyn_dis_cc = 1 -dyn_dis_nc = 0 -dyn_coh_cc = 0 -dyn_coh_nc = 0 -dyn_mec_cc = 1 -dyn_mec_nc = 0 -qel_kinematics = 0 -qel_vector_ff_set = 2 -bba07_AEp1 = 1 -bba07_AEp2 = 0.9927 -bba07_AEp3 = 0.9898 -bba07_AEp4 = 0.9975 -bba07_AEp5 = 0.9812 -bba07_AEp6 = 0.934 -bba07_AEp7 = 1 -bba07_AMp1 = 1 -bba07_AMp2 = 1.0011 -bba07_AMp3 = 0.9992 -bba07_AMp4 = 0.9974 -bba07_AMp5 = 1.001 -bba07_AMp6 = 1.0003 -bba07_AMp7 = 1 -bba07_AEn1 = 1 -bba07_AEn2 = 1.011 -bba07_AEn3 = 1.1392 -bba07_AEn4 = 1.0203 -bba07_AEn5 = 1.1093 -bba07_AEn6 = 1.5429 -bba07_AEn7 = 0.9706 -bba07_AMn1 = 1 -bba07_AMn2 = 0.9958 -bba07_AMn3 = 0.9877 -bba07_AMn4 = 1.0193 -bba07_AMn5 = 1.035 -bba07_AMn6 = 0.9164 -bba07_AMn7 = 0.73 -bba07_AAx1 = 1 -bba07_AAx2 = 0.9958 -bba07_AAx3 = 0.9877 -bba07_AAx4 = 1.0193 -bba07_AAx5 = 1.035 -bba07_AAx6 = 0.9164 -bba07_AAx7 = 0.73 -qel_axial_ff_set = 1 -qel_rpa = 0 -qel_strange = 1 -qel_strangeEM = 0 -delta_s = -0.15 -qel_cc_vector_mass = 1000 -qel_cc_axial_mass = 1200 -qel_nc_axial_mass = 1350 -qel_s_axial_mass = 1200 -qel_axial_2comp_gamma = 0.15 -qel_axial_2comp_alpha = 2 -qel_axial_3comp_theta = 0.15 -qel_axial_3comp_beta = 2 -flux_correction = 0 -sf_method = 0 -sf_pb = 0 -cc_smoothing = 0 -delta_FF_set = 1 -pion_axial_mass = 0.94 -pion_C5A = 1.19 -SPPBkgScale = 0 -delta_angular = 0 -spp_precision = 500 -res_dis_cut = 1600 -bkgrscaling = 0 -coh_mass_correction = 1 -coh_new = 1 -coh_kind = 2 -mec_kind = 3 -mec_ratio_pp = 0.6 -mec_ratio_ppp = 0.8 -mec_central_motion = 0 -mec_back_to_back_smearing = 0 -mec_pb_trials = 25 -MEC_pauli_blocking = 1 -MEC_cm_direction = 0 -kaskada_on = 1 -kaskada_w = 7 -kaskada_redo = 0 -kaskada_writeall = 0 -kaskada_newangle = 0 -formation_zone = fz -tau = 8 -formation_length = 1 -first_step = 1 -step = 0.2 -xsec = 1 -pauli_blocking = 1 -mixed_order = 1 -rmin = 1 -rmax = 1