From 3180f2aded1000754e87ea3e77484302032c3fa8 Mon Sep 17 00:00:00 2001 From: Daniel Barrow Date: Tue, 12 Nov 2024 05:56:54 -0600 Subject: [PATCH 1/9] Pull core which has access to OscProb engine in NuOscillator --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b8b8d6..faec621 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,7 +116,7 @@ find_package(MaCh3) if(NOT MaCh3_FOUND) CPMFindPackage( NAME MaCh3 - GIT_TAG "v1.2.0_alpha" + GIT_TAG "feature/dbarrow257/OscProb" GITHUB_REPOSITORY mach3-software/MaCh3 ) else() From d86d000fa8cf12db9c7aab4e07d6ef7d42cdc5bb Mon Sep 17 00:00:00 2001 From: Daniel Barrow Date: Tue, 12 Nov 2024 05:57:59 -0600 Subject: [PATCH 2/9] Update setup script to pull more recent ROOT install --- setup_dune_env.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup_dune_env.sh b/setup_dune_env.sh index 0f423d8..b52ed0e 100755 --- a/setup_dune_env.sh +++ b/setup_dune_env.sh @@ -1,6 +1,6 @@ source /cvmfs/larsoft.opensciencegrid.org/spack-packages/setup-env.sh -spack load root@6.28.06 -spack load cmake +spack load root@6.28.12 spack load gcc@12.2.0 + export CXX=`which g++` # this might be specific for Fermilab? export CC=`which gcc` # this might be specific for Fermilab? From c676ddd7714adf528cea30ce6fa9eadc3d608f80 Mon Sep 17 00:00:00 2001 From: Daniel Barrow Date: Wed, 20 Nov 2024 09:57:30 -0600 Subject: [PATCH 3/9] Use an older branch of MaCh3 core whilst I debug the interface between DUNE MaCh3 and the new core code --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index faec621..cdacee3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,7 +116,7 @@ find_package(MaCh3) if(NOT MaCh3_FOUND) CPMFindPackage( NAME MaCh3 - GIT_TAG "feature/dbarrow257/OscProb" + GIT_TAG "48a9500" GITHUB_REPOSITORY mach3-software/MaCh3 ) else() From 7dca871d388269540fcc7691333880f62c4c1b14 Mon Sep 17 00:00:00 2001 From: "camille.sironneau" Date: Fri, 7 Feb 2025 06:54:02 -0600 Subject: [PATCH 4/9] Add apps to automatize and make 2d parameter variations --- configs/Variations_Atmospherics.yaml | 120 ++++++++++++++++++++++++++ src/CMakeLists.txt | 3 + src/SigmaVariation2D.cpp | 111 ++++++++++++++++++++++++ src/Variations.cpp | 124 +++++++++++++++++++++++++++ src/Variations2D.cpp | 124 +++++++++++++++++++++++++++ 5 files changed, 482 insertions(+) create mode 100644 configs/Variations_Atmospherics.yaml create mode 100644 src/SigmaVariation2D.cpp create mode 100644 src/Variations.cpp create mode 100644 src/Variations2D.cpp diff --git a/configs/Variations_Atmospherics.yaml b/configs/Variations_Atmospherics.yaml new file mode 100644 index 0000000..cc729de --- /dev/null +++ b/configs/Variations_Atmospherics.yaml @@ -0,0 +1,120 @@ +General: + OutputFile: "parameter_study_sterile/test_2d_var/test_var_sterile_all param_thetav1_AllMC_trueE_trueCos.root" + + DUNESamples: ["configs/Samples/AtmSample_AllMC.yaml"] + + #Nu-FIT + #OscillationParameters: [0.310, 0.582, 0.224, 7.39E-5, 2.5254E-3, -2.498, 25] + + #Nu-FIT 5.2 w. SK atm + #OscillationParameters: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233] + OscillationParameters: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] + #OscillationParameters: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, -0.5, 0.2, 0.4, 0.3, 0.5, 0.25, 0., 0., 0., 0.2, 0.4, 0.4] + + #T2K-like best-fit + #OscillationParameters: [0.307, 0.528, 0.0218, 7.53e-5, 2.509e-3, -1.601, 25] + + Variations: + - Parameter: + Name: sin2th_14 + #OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] + VarValues: [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5] + + - Parameter: + Name: sin2th_24 + #OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] + VarValues: [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5] + + - Parameter: + Name: sin2th_34 + #OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] + VarValues: [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5] + + - Parameter: + Name: delm2_14 + OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.] + VarValues: [0., 0.00001, 0.0001, 0.001, 0.01, 0.1, 1.] + + - Parameter: + Name: delta_14 + OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.] + VarValues: [-2.35619449019, -1.57079632679, -0.78539816339, 0., 0.78539816339, 1.57079632679, 2.35619449019, 3.14159265] + + - Parameter: + Name: delta_24 + OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.] + VarValues: [-2.35619449019, -1.57079632679, -0.78539816339, 0., 0.78539816339, 1.57079632679, 2.35619449019, 3.14159265] + + Systematics: + XsecCovFile: ["configs/CovObjs/xsec_covariance_DUNE_systs_2022a_FD_v3.yaml"] + XsecCovName: "xsec_cov" + XsecStepScale: 0.1 + XsecAtGen: false + OscCovFile: ["configs/CovObjs/OscProb_test.yaml"] + OscCovName: "osc_cov" + + Fitter: + FitTestLikelihood: false + + MCMC: + NSteps: 2000 + AutoSave: 10000 + + Output: + FileName: "TestEventRates.root" + OUTPUTNAME: "TestLLH.root" + + ProcessMCMC: No + Seed: 0 + Debug: No + +"Projections": [ + { + "Name": "RecoNuEnergy", + "VarString": "RecoNeutrinoEnergy", + "VarBins": [0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.4], + "KinematicCuts": [ + { + "Range": [0.1,0.8], + "Name": "TrueNuEnergy", + "VarString": "TrueNeutrinoEnergy" + }, + { + "Range": [0.4,1.0], + "Name": "TrueCosZ", + "VarString": "TrueCosineZ" + } + ], + "CategoryCuts": [ + { + "Name": "OscillationChannel_Single", + "VarString": "OscChannel", + "Breakdown": [[0.0], [1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0], [8.0], [9.0], [10.0], [11.0]], + "Names": ["nue_x_nue","nue_x_numu","nue_x_nutau","numu_x_nue","numu_x_numu","numu_x_nutau","nuebar_x_nuebar","nuebar_x_numubar","nuebar_x_nutaubar","numubar_x_nuebar","numubar_x_numubar","numubar_x_nutaubar"], + }, + { + "Name": "OscillationChannel_Group", + "VarString": "OscChannel", + "Breakdown": [[0.0, 1.0, 2.0, 3.0, 4.0, 5.0], [6.0, 7.0, 8.0, 9.0, 10.0, 11.0]], + "Names": ["Nu","Nubar"], + }, + { + "Name": "Mode_Single", + "VarString": "Mode", + "Breakdown": [[0.0] , [1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0], [8.0], [9.0], [10.0], [11.0], [12.0], [13.0], [14.0], [15.0], [16.0], [17.0], [18.0], [19.0], [20.0], [21.0], [22.0], [23.0], [24.0], [25.0], [26.0]], + }, + { + "Name": "Mode_Group", + "VarString": "Mode", + "Breakdown": [ [0.0], [2.0], [3.0], [9.0], [15.0], [16.0], [1.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 11.0, 12.0, 13.0], [14.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0]], + "Names": ["CCQE", "CCDIS", "CCRES", "CCMEC", "NCDIS", "NCRES", "CCOth", "NCOth"], + } + ], + }, + + { + "Name": "TrueNuEnergy", + "VarString": "TrueNeutrinoEnergy", + "VarBins": [0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0,3.5,4.0,4.5,5.0,6.0,7.0,8.0,9.0,10.0], + } +] diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6590947..7cdfb47 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,6 +6,9 @@ foreach(app Projections SigmaVariation LikelihoodScan + SigmaVariation2D + Variations + Variations2D ) add_executable(${app} ${app}.cpp) diff --git a/src/SigmaVariation2D.cpp b/src/SigmaVariation2D.cpp new file mode 100644 index 0000000..4b659f6 --- /dev/null +++ b/src/SigmaVariation2D.cpp @@ -0,0 +1,111 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mcmc/mcmc.h" +#include "samplePDFDUNE/MaCh3DUNEFactory.h" +#include "samplePDFDUNE/StructsDUNE.h" + +int main(int argc, char * argv[]) { + if(argc == 1){ + MACH3LOG_ERROR("Usage: bin/EventRatesDUNEBeam config.cfg"); + return 1; + } + manager* FitManager = new manager(argv[1]); + + //############################################################################################################################### + + //DB Sigma variations in units of each parameters Sigma + std::vector sigmaVariations = {-3, -1, 0, 1, 3}; + + //############################################################################################################################### + //Create samplePDFFD objects + + covarianceXsec* xsec = nullptr; + covarianceOsc* osc = nullptr; + + std::vector DUNEPdfs; + MakeMaCh3DuneInstance(FitManager, DUNEPdfs, xsec, osc); + + //############################################################################################################################### + //Perform reweight and print total integral + + MACH3LOG_INFO("======================================================="); + for(samplePDFFDBase* Sample: DUNEPdfs){ + Sample->reweight(); + MACH3LOG_INFO("Event rate for {} : {:<5.2f}", Sample->GetName(), Sample->get2DHist()->Integral()); + } + + //############################################################################################################################### + //DB Can't use the core sigma variations as it's entirely set up around the concept of multiple selections per samplePDF object + // Thats not the case in the FD code, which has one selection per samplePDF object + // Consequently have to write out own code + + std::vector CovObjs; + CovObjs.emplace_back(xsec); + CovObjs.emplace_back(osc); + + MACH3LOG_INFO("======================================================="); + + std::string OutputFileName = FitManager->raw()["General"]["OutputFile"].as(); + TFile* File = TFile::Open(OutputFileName.c_str(),"RECREATE"); + + for (covarianceBase* CovObj: CovObjs) { + MACH3LOG_INFO("Starting Variations for covarianceBase Object: {}",CovObj->getName()); + + int nPars = CovObj->getNpars(); + for (int iPar=0;iParGetParName(iPar); + double VarInit = CovObj->getParInit(iPar); + double VarSigma = CovObj->getDiagonalError(iPar); + + MACH3LOG_INFO("\tParameter : {:<30} - Variations around value : {:<10.7f} , in units of 1 Sigma : {:<10.7f}",ParName,VarInit,VarSigma); + + File->cd(); + File->mkdir(ParName.c_str()); + File->cd(ParName.c_str()); + + for (size_t iSigVar=0;iSigVarGetLowerBound(iPar)) VarVal = CovObj->GetLowerBound(iPar); + if (VarVal > CovObj->GetUpperBound(iPar)) VarVal = CovObj->GetUpperBound(iPar); + + MACH3LOG_INFO("\t\tVariation {:<5.3f} - Parameter Value : {:<10.7f}",sigmaVariations[iSigVar],VarVal); + CovObj->setParProp(iPar,VarVal); + + for (size_t iSample=0;iSampleGetName(); + + File->cd(ParName.c_str()); + if (iSigVar == 0) { + File->mkdir((ParName+"/"+SampleName).c_str()); + } + File->cd((ParName+"/"+SampleName).c_str()); + + DUNEPdfs[iSample]->reweight(); + TH2* Hist = DUNEPdfs[iSample]->get2DHist(); + MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); + + Hist->Write(Form("Variation_%i",(int)iSigVar)); + } + } + + CovObj->setParProp(iPar,VarInit); + } + + MACH3LOG_INFO("======================================================="); + } + + File->Close(); + +} diff --git a/src/Variations.cpp b/src/Variations.cpp new file mode 100644 index 0000000..043eb19 --- /dev/null +++ b/src/Variations.cpp @@ -0,0 +1,124 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mcmc/mcmc.h" +#include "samplePDFDUNE/MaCh3DUNEFactory.h" +#include "samplePDFDUNE/StructsDUNE.h" + +int main(int argc, char * argv[]) { + if(argc == 1){ + MACH3LOG_ERROR("Usage: bin/EventRatesDUNEBeam config.cfg"); + return 1; + } + manager* FitManager = new manager(argv[1]); + + + //############################################################################################################################### + //Create samplePDFFD objects + + covarianceXsec* xsec = nullptr; + covarianceOsc* osc = nullptr; + + std::vector DUNEPdfs; + MakeMaCh3DuneInstance(FitManager, DUNEPdfs, xsec, osc); + + std::vector oscpars = FitManager->raw()["General"]["OscillationParameters"].as>(); + + //############################################################################################################################### + //Perform reweight and print total integral + + MACH3LOG_INFO("======================================================="); + for(samplePDFFDBase* Sample: DUNEPdfs){ + Sample->reweight(); + MACH3LOG_INFO("Event rate for {} : {:<5.2f}", Sample->GetName(), Sample->get1DHist()->Integral()); + } + + //############################################################################################################################### + //DB Can't use the core sigma variations as it's entirely set up around the concept of multiple selections per samplePDF object + // Thats not the case in the FD code, which has one selection per samplePDF object + // Consequently have to write out own code + + std::vector CovObjs; + CovObjs.emplace_back(xsec); + CovObjs.emplace_back(osc); + + MACH3LOG_INFO("======================================================="); + + std::string OutputFileName = FitManager->raw()["General"]["OutputFile"].as(); + TFile* File = TFile::Open(OutputFileName.c_str(),"RECREATE"); + + + for (covarianceBase* CovObj: CovObjs) { + MACH3LOG_INFO("Starting Variations for covarianceBase Object: {}",CovObj->getName()); + + int nPars = CovObj->getNpars(); + + for (int iPar=0;iParGetParName(iPar); + + for (auto const ¶m : FitManager->raw()["General"]["Variations"]) { + + std::string VarName = (param["Parameter"]["Name"].as()); + + if(ParName == VarName) { + + MACH3LOG_INFO("\tParameter : {:<30}",ParName); + + if(!param["Parameter"]["OscParDefault"]){ //if specific default values not specified for the parameter then use global default ones + CovObj->setParameters(oscpars); + } + else { + CovObj->setParameters((param["Parameter"]["OscParDefault"].as>())); + } + + std::vector valVariations = (param["Parameter"]["VarValues"].as>()); + + File->cd(); + File->mkdir(ParName.c_str()); + File->cd(ParName.c_str()); + + for (size_t iSigVar=0;iSigVarsetParProp(iPar,VarVal); + + for (size_t iSample=0;iSampleGetName(); + + File->cd(ParName.c_str()); + if (iSigVar == 0) { + File->mkdir((ParName+"/"+SampleName).c_str()); + } + File->cd((ParName+"/"+SampleName).c_str()); + + DUNEPdfs[iSample]->reweight(); + TH1* Hist = DUNEPdfs[iSample]->get1DHist(); + MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); + + Hist->Write(Form("Variation_%.2e",VarVal)); + } + } + + } + } + } + + MACH3LOG_INFO("======================================================="); + } + + + File->Close(); + +} diff --git a/src/Variations2D.cpp b/src/Variations2D.cpp new file mode 100644 index 0000000..2d10cba --- /dev/null +++ b/src/Variations2D.cpp @@ -0,0 +1,124 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mcmc/mcmc.h" +#include "samplePDFDUNE/MaCh3DUNEFactory.h" +#include "samplePDFDUNE/StructsDUNE.h" + +int main(int argc, char * argv[]) { + if(argc == 1){ + MACH3LOG_ERROR("Usage: bin/EventRatesDUNEBeam config.cfg"); + return 1; + } + manager* FitManager = new manager(argv[1]); + + + //############################################################################################################################### + //Create samplePDFFD objects + + covarianceXsec* xsec = nullptr; + covarianceOsc* osc = nullptr; + + std::vector DUNEPdfs; + MakeMaCh3DuneInstance(FitManager, DUNEPdfs, xsec, osc); + + std::vector oscpars = FitManager->raw()["General"]["OscillationParameters"].as>(); + + //############################################################################################################################### + //Perform reweight and print total integral + + MACH3LOG_INFO("======================================================="); + for(samplePDFFDBase* Sample: DUNEPdfs){ + Sample->reweight(); + MACH3LOG_INFO("Event rate for {} : {:<5.2f}", Sample->GetName(), Sample->get2DHist()->Integral()); + } + + //############################################################################################################################### + //DB Can't use the core sigma variations as it's entirely set up around the concept of multiple selections per samplePDF object + // Thats not the case in the FD code, which has one selection per samplePDF object + // Consequently have to write out own code + + std::vector CovObjs; + CovObjs.emplace_back(xsec); + CovObjs.emplace_back(osc); + + MACH3LOG_INFO("======================================================="); + + std::string OutputFileName = FitManager->raw()["General"]["OutputFile"].as(); + TFile* File = TFile::Open(OutputFileName.c_str(),"RECREATE"); + + + for (covarianceBase* CovObj: CovObjs) { + MACH3LOG_INFO("Starting Variations for covarianceBase Object: {}",CovObj->getName()); + + int nPars = CovObj->getNpars(); + + for (int iPar=0;iParGetParName(iPar); + + for (auto const ¶m : FitManager->raw()["General"]["Variations"]) { + + std::string VarName = (param["Parameter"]["Name"].as()); + + if(ParName == VarName) { + + MACH3LOG_INFO("\tParameter : {:<30}",ParName); + + if(!param["Parameter"]["OscParDefault"]){ //if specific default values not specified for the parameter then use global default ones + CovObj->setParameters(oscpars); + } + else { + CovObj->setParameters((param["Parameter"]["OscParDefault"].as>())); + } + + std::vector valVariations = (param["Parameter"]["VarValues"].as>()); + + File->cd(); + File->mkdir(ParName.c_str()); + File->cd(ParName.c_str()); + + for (size_t iSigVar=0;iSigVarsetParProp(iPar,VarVal); + + for (size_t iSample=0;iSampleGetName(); + + File->cd(ParName.c_str()); + if (iSigVar == 0) { + File->mkdir((ParName+"/"+SampleName).c_str()); + } + File->cd((ParName+"/"+SampleName).c_str()); + + DUNEPdfs[iSample]->reweight(); + TH2* Hist = DUNEPdfs[iSample]->get2DHist(); + MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); + + Hist->Write(Form("Variation_%.2e",VarVal)); + } + } + + } + } + } + + MACH3LOG_INFO("======================================================="); + } + + + File->Close(); + +} From aa479ac1be89de7b1b82d99ef691de52dd93a1d9 Mon Sep 17 00:00:00 2001 From: "camille.sironneau" Date: Mon, 10 Feb 2025 10:28:37 -0600 Subject: [PATCH 5/9] Remove non efficient doubling apps and fuse 1D et 2D variations in same app --- .../ExampleAtmosphericBinning.root | Bin 12719 -> 0 bytes src/CMakeLists.txt | 2 - src/SigmaVariation2D.cpp | 111 ---------------- src/Variations.cpp | 6 +- src/Variations2D.cpp | 124 ------------------ 5 files changed, 5 insertions(+), 238 deletions(-) delete mode 100644 inputs/Atmospherics/ExampleAtmosphericBinning.root delete mode 100644 src/SigmaVariation2D.cpp delete mode 100644 src/Variations2D.cpp diff --git a/inputs/Atmospherics/ExampleAtmosphericBinning.root b/inputs/Atmospherics/ExampleAtmosphericBinning.root deleted file mode 100644 index f15c313db1f578d6ceb1651dc46b4ca264785be6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12719 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 ImL#D60f1~qpa1{> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7cdfb47..ad23225 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,9 +6,7 @@ foreach(app Projections SigmaVariation LikelihoodScan - SigmaVariation2D Variations - Variations2D ) add_executable(${app} ${app}.cpp) diff --git a/src/SigmaVariation2D.cpp b/src/SigmaVariation2D.cpp deleted file mode 100644 index 4b659f6..0000000 --- a/src/SigmaVariation2D.cpp +++ /dev/null @@ -1,111 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mcmc/mcmc.h" -#include "samplePDFDUNE/MaCh3DUNEFactory.h" -#include "samplePDFDUNE/StructsDUNE.h" - -int main(int argc, char * argv[]) { - if(argc == 1){ - MACH3LOG_ERROR("Usage: bin/EventRatesDUNEBeam config.cfg"); - return 1; - } - manager* FitManager = new manager(argv[1]); - - //############################################################################################################################### - - //DB Sigma variations in units of each parameters Sigma - std::vector sigmaVariations = {-3, -1, 0, 1, 3}; - - //############################################################################################################################### - //Create samplePDFFD objects - - covarianceXsec* xsec = nullptr; - covarianceOsc* osc = nullptr; - - std::vector DUNEPdfs; - MakeMaCh3DuneInstance(FitManager, DUNEPdfs, xsec, osc); - - //############################################################################################################################### - //Perform reweight and print total integral - - MACH3LOG_INFO("======================================================="); - for(samplePDFFDBase* Sample: DUNEPdfs){ - Sample->reweight(); - MACH3LOG_INFO("Event rate for {} : {:<5.2f}", Sample->GetName(), Sample->get2DHist()->Integral()); - } - - //############################################################################################################################### - //DB Can't use the core sigma variations as it's entirely set up around the concept of multiple selections per samplePDF object - // Thats not the case in the FD code, which has one selection per samplePDF object - // Consequently have to write out own code - - std::vector CovObjs; - CovObjs.emplace_back(xsec); - CovObjs.emplace_back(osc); - - MACH3LOG_INFO("======================================================="); - - std::string OutputFileName = FitManager->raw()["General"]["OutputFile"].as(); - TFile* File = TFile::Open(OutputFileName.c_str(),"RECREATE"); - - for (covarianceBase* CovObj: CovObjs) { - MACH3LOG_INFO("Starting Variations for covarianceBase Object: {}",CovObj->getName()); - - int nPars = CovObj->getNpars(); - for (int iPar=0;iParGetParName(iPar); - double VarInit = CovObj->getParInit(iPar); - double VarSigma = CovObj->getDiagonalError(iPar); - - MACH3LOG_INFO("\tParameter : {:<30} - Variations around value : {:<10.7f} , in units of 1 Sigma : {:<10.7f}",ParName,VarInit,VarSigma); - - File->cd(); - File->mkdir(ParName.c_str()); - File->cd(ParName.c_str()); - - for (size_t iSigVar=0;iSigVarGetLowerBound(iPar)) VarVal = CovObj->GetLowerBound(iPar); - if (VarVal > CovObj->GetUpperBound(iPar)) VarVal = CovObj->GetUpperBound(iPar); - - MACH3LOG_INFO("\t\tVariation {:<5.3f} - Parameter Value : {:<10.7f}",sigmaVariations[iSigVar],VarVal); - CovObj->setParProp(iPar,VarVal); - - for (size_t iSample=0;iSampleGetName(); - - File->cd(ParName.c_str()); - if (iSigVar == 0) { - File->mkdir((ParName+"/"+SampleName).c_str()); - } - File->cd((ParName+"/"+SampleName).c_str()); - - DUNEPdfs[iSample]->reweight(); - TH2* Hist = DUNEPdfs[iSample]->get2DHist(); - MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); - - Hist->Write(Form("Variation_%i",(int)iSigVar)); - } - } - - CovObj->setParProp(iPar,VarInit); - } - - MACH3LOG_INFO("======================================================="); - } - - File->Close(); - -} diff --git a/src/Variations.cpp b/src/Variations.cpp index 043eb19..039b1a8 100644 --- a/src/Variations.cpp +++ b/src/Variations.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -104,7 +105,10 @@ int main(int argc, char * argv[]) { File->cd((ParName+"/"+SampleName).c_str()); DUNEPdfs[iSample]->reweight(); - TH1* Hist = DUNEPdfs[iSample]->get1DHist(); + if(Sample->GetNDim() == 1) + TH1* Hist = DUNEPdfs[iSample]->get1DHist(); + else if(Sample->GetNDim() == 2) + TH2* Hist = DUNEPdfs[iSample]->get2DHist(); MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); Hist->Write(Form("Variation_%.2e",VarVal)); diff --git a/src/Variations2D.cpp b/src/Variations2D.cpp deleted file mode 100644 index 2d10cba..0000000 --- a/src/Variations2D.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mcmc/mcmc.h" -#include "samplePDFDUNE/MaCh3DUNEFactory.h" -#include "samplePDFDUNE/StructsDUNE.h" - -int main(int argc, char * argv[]) { - if(argc == 1){ - MACH3LOG_ERROR("Usage: bin/EventRatesDUNEBeam config.cfg"); - return 1; - } - manager* FitManager = new manager(argv[1]); - - - //############################################################################################################################### - //Create samplePDFFD objects - - covarianceXsec* xsec = nullptr; - covarianceOsc* osc = nullptr; - - std::vector DUNEPdfs; - MakeMaCh3DuneInstance(FitManager, DUNEPdfs, xsec, osc); - - std::vector oscpars = FitManager->raw()["General"]["OscillationParameters"].as>(); - - //############################################################################################################################### - //Perform reweight and print total integral - - MACH3LOG_INFO("======================================================="); - for(samplePDFFDBase* Sample: DUNEPdfs){ - Sample->reweight(); - MACH3LOG_INFO("Event rate for {} : {:<5.2f}", Sample->GetName(), Sample->get2DHist()->Integral()); - } - - //############################################################################################################################### - //DB Can't use the core sigma variations as it's entirely set up around the concept of multiple selections per samplePDF object - // Thats not the case in the FD code, which has one selection per samplePDF object - // Consequently have to write out own code - - std::vector CovObjs; - CovObjs.emplace_back(xsec); - CovObjs.emplace_back(osc); - - MACH3LOG_INFO("======================================================="); - - std::string OutputFileName = FitManager->raw()["General"]["OutputFile"].as(); - TFile* File = TFile::Open(OutputFileName.c_str(),"RECREATE"); - - - for (covarianceBase* CovObj: CovObjs) { - MACH3LOG_INFO("Starting Variations for covarianceBase Object: {}",CovObj->getName()); - - int nPars = CovObj->getNpars(); - - for (int iPar=0;iParGetParName(iPar); - - for (auto const ¶m : FitManager->raw()["General"]["Variations"]) { - - std::string VarName = (param["Parameter"]["Name"].as()); - - if(ParName == VarName) { - - MACH3LOG_INFO("\tParameter : {:<30}",ParName); - - if(!param["Parameter"]["OscParDefault"]){ //if specific default values not specified for the parameter then use global default ones - CovObj->setParameters(oscpars); - } - else { - CovObj->setParameters((param["Parameter"]["OscParDefault"].as>())); - } - - std::vector valVariations = (param["Parameter"]["VarValues"].as>()); - - File->cd(); - File->mkdir(ParName.c_str()); - File->cd(ParName.c_str()); - - for (size_t iSigVar=0;iSigVarsetParProp(iPar,VarVal); - - for (size_t iSample=0;iSampleGetName(); - - File->cd(ParName.c_str()); - if (iSigVar == 0) { - File->mkdir((ParName+"/"+SampleName).c_str()); - } - File->cd((ParName+"/"+SampleName).c_str()); - - DUNEPdfs[iSample]->reweight(); - TH2* Hist = DUNEPdfs[iSample]->get2DHist(); - MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); - - Hist->Write(Form("Variation_%.2e",VarVal)); - } - } - - } - } - } - - MACH3LOG_INFO("======================================================="); - } - - - File->Close(); - -} From da9a0668b4f6edc50feaba6cf9c598bcfcb3b51e Mon Sep 17 00:00:00 2001 From: "camille.sironneau" Date: Mon, 10 Feb 2025 10:43:13 -0600 Subject: [PATCH 6/9] Oopsie, forgot about that file --- src/Variations.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Variations.cpp b/src/Variations.cpp index 039b1a8..75aac8c 100644 --- a/src/Variations.cpp +++ b/src/Variations.cpp @@ -105,10 +105,12 @@ int main(int argc, char * argv[]) { File->cd((ParName+"/"+SampleName).c_str()); DUNEPdfs[iSample]->reweight(); - if(Sample->GetNDim() == 1) - TH1* Hist = DUNEPdfs[iSample]->get1DHist(); - else if(Sample->GetNDim() == 2) - TH2* Hist = DUNEPdfs[iSample]->get2DHist(); + TH1* Hist; + if(DUNEPdfs[iSample]->GetNDim() == 1) + Hist = DUNEPdfs[iSample]->get1DHist(); + else if(DUNEPdfs[iSample]->GetNDim() == 2) + Hist = DUNEPdfs[iSample]->get2DHist(); + MACH3LOG_INFO("\t\t\tSample : {:<30} - Integral : {:<10}",SampleName,Hist->Integral()); Hist->Write(Form("Variation_%.2e",VarVal)); From 28140813c20d7c3d3f77f723905a31b06956e489 Mon Sep 17 00:00:00 2001 From: "camille.sironneau" Date: Mon, 10 Feb 2025 11:46:04 -0600 Subject: [PATCH 7/9] For some reason this wasn't tracked anymore --- .../Atmospherics/ExampleAtmosphericBinning.root | Bin 0 -> 12719 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 inputs/Atmospherics/ExampleAtmosphericBinning.root diff --git a/inputs/Atmospherics/ExampleAtmosphericBinning.root b/inputs/Atmospherics/ExampleAtmosphericBinning.root new file mode 100644 index 0000000000000000000000000000000000000000..f15c313db1f578d6ceb1651dc46b4ca264785be6 GIT binary patch literal 12719 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 ImL#D60f1~qpa1{> literal 0 HcmV?d00001 From 31376f47436015c52a924ec7eca7982088446d22 Mon Sep 17 00:00:00 2001 From: "camille.sironneau" Date: Tue, 11 Feb 2025 04:28:24 -0600 Subject: [PATCH 8/9] Fixed TH2D casting to be TH1D instead --- src/LikelihoodScan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/LikelihoodScan.cpp b/src/LikelihoodScan.cpp index d38516b..94ef3d5 100644 --- a/src/LikelihoodScan.cpp +++ b/src/LikelihoodScan.cpp @@ -45,7 +45,7 @@ int main(int argc, char * argv[]) { MACH3LOG_INFO("Event rate for {} : {:<5.2f}", Sample->GetName(), Sample->get1DHist()->Integral()); if (Sample->GetNDim() == 1) - Sample->addData((TH2D*)DUNEHists.back()); + Sample->addData((TH1D*)DUNEHists.back()); else if (Sample->GetNDim() == 2) Sample->addData((TH2D*)DUNEHists.back()); } From aea6dfb9405ae9e803a6c22ea314bf34bf7a5a73 Mon Sep 17 00:00:00 2001 From: "camille.sironneau" Date: Wed, 12 Feb 2025 06:35:48 -0600 Subject: [PATCH 9/9] Modifications to yaml structure for Variations app --- configs/Variations_Atmospherics.yaml | 74 +++++++++++++++------------- src/Variations.cpp | 19 +++++-- 2 files changed, 55 insertions(+), 38 deletions(-) diff --git a/configs/Variations_Atmospherics.yaml b/configs/Variations_Atmospherics.yaml index cc729de..d954768 100644 --- a/configs/Variations_Atmospherics.yaml +++ b/configs/Variations_Atmospherics.yaml @@ -1,7 +1,7 @@ General: - OutputFile: "parameter_study_sterile/test_2d_var/test_var_sterile_all param_thetav1_AllMC_trueE_trueCos.root" + OutputFile: "parameter_study_sterile/test_2d_var/test_var_sterile_all_param_thetav1_dm41_1e-3_nue_numu_selec_recoE_recoCos.root" - DUNESamples: ["configs/Samples/AtmSample_AllMC.yaml"] + DUNESamples: ["configs/Samples/AtmSample_nueselec.yaml", "configs/Samples/AtmSample_numuselec.yaml"] #Nu-FIT #OscillationParameters: [0.310, 0.582, 0.224, 7.39E-5, 2.5254E-3, -2.498, 25] @@ -13,37 +13,6 @@ General: #T2K-like best-fit #OscillationParameters: [0.307, 0.528, 0.0218, 7.53e-5, 2.509e-3, -1.601, 25] - - Variations: - - Parameter: - Name: sin2th_14 - #OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] - VarValues: [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5] - - - Parameter: - Name: sin2th_24 - #OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] - VarValues: [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5] - - - Parameter: - Name: sin2th_34 - #OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.] - VarValues: [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5] - - - Parameter: - Name: delm2_14 - OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.] - VarValues: [0., 0.00001, 0.0001, 0.001, 0.01, 0.1, 1.] - - - Parameter: - Name: delta_14 - OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.] - VarValues: [-2.35619449019, -1.57079632679, -0.78539816339, 0., 0.78539816339, 1.57079632679, 2.35619449019, 3.14159265] - - - Parameter: - Name: delta_24 - OscParDefault: [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.] - VarValues: [-2.35619449019, -1.57079632679, -0.78539816339, 0., 0.78539816339, 1.57079632679, 2.35619449019, 3.14159265] Systematics: XsecCovFile: ["configs/CovObjs/xsec_covariance_DUNE_systs_2022a_FD_v3.yaml"] @@ -68,6 +37,45 @@ General: Seed: 0 Debug: No +"Variations": [ + { + "Name": "sin2th_14", + #"OscParDefault": [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.], + "VarValues": [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5], + }, + + { + "Name": "sin2th_24", + #"OscParDefault": [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.], + "VarValues": [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5], + }, + + { + "Name": "sin2th_34", + #"OscParDefault": [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0., 0., 0., 0.001, 0., 0.], + "VarValues": [0., 0.001, 0.005, 0.01, 0.05, 0.1, 0.5], + }, + + { + "Name": "delm2_14", + "OscParDefault": [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.], + "VarValues": [0., 0.00001, 0.0001, 0.001, 0.01, 0.1, 1.], + }, + + { + "Name": "delta_14", + "OscParDefault": [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.], + "VarValues": [-2.35619449019, -1.57079632679, -0.78539816339, 0., 0.78539816339, 1.57079632679, 2.35619449019, 3.14159265], + }, + + { + "Name": "delta_24", + "OscParDefault": [0.303, 0.451, 0.02225, 7.41E-5, 2.45E-3, -2.233, 0.03, 0.06, 0.05, 0.001, 0., 0.], + "VarValues": [-2.35619449019, -1.57079632679, -0.78539816339, 0., 0.78539816339, 1.57079632679, 2.35619449019, 3.14159265], + } + +] + "Projections": [ { "Name": "RecoNuEnergy", diff --git a/src/Variations.cpp b/src/Variations.cpp index 75aac8c..7f2c7be 100644 --- a/src/Variations.cpp +++ b/src/Variations.cpp @@ -17,6 +17,15 @@ #include "samplePDFDUNE/MaCh3DUNEFactory.h" #include "samplePDFDUNE/StructsDUNE.h" +//CS YAML "Variations" node expects to be given each parameter to vary with : +// - "Name": name of the parameter as written in the CovObjs YAML file +// - "OscParDefault" array: values that oscillation parameters should be given as a default for this specific parameter variation +// ex : put sterile mixing angles to non zero values to test variations of sterile cp phases +// If "OscParDefault" not given, will use the "OscillationParameters" values specified in "General" node +// - "VarValues" array: values we want the parameter to take + +//TODO: Consider merging with SigmaVariations app at some point + int main(int argc, char * argv[]) { if(argc == 1){ MACH3LOG_ERROR("Usage: bin/EventRatesDUNEBeam config.cfg"); @@ -68,22 +77,22 @@ int main(int argc, char * argv[]) { for (int iPar=0;iParGetParName(iPar); - for (auto const ¶m : FitManager->raw()["General"]["Variations"]) { + for (auto const ¶m : FitManager->raw()["Variations"]) { - std::string VarName = (param["Parameter"]["Name"].as()); + std::string VarName = (param["Name"].as()); if(ParName == VarName) { MACH3LOG_INFO("\tParameter : {:<30}",ParName); - if(!param["Parameter"]["OscParDefault"]){ //if specific default values not specified for the parameter then use global default ones + if(!param["OscParDefault"]){ //if specific default values not specified for the parameter then use global default ones CovObj->setParameters(oscpars); } else { - CovObj->setParameters((param["Parameter"]["OscParDefault"].as>())); + CovObj->setParameters((param["OscParDefault"].as>())); } - std::vector valVariations = (param["Parameter"]["VarValues"].as>()); + std::vector valVariations = (param["VarValues"].as>()); File->cd(); File->mkdir(ParName.c_str());