diff --git a/.gitignore b/.gitignore index c0d7979bf1..a37c2af267 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ __pycache__/ # ROOT files *.root +# PDF files +*.pdf + # Editors *~ .vimlocal diff --git a/analyzers/dataframe/FCCAnalyses/MCParticle.h b/analyzers/dataframe/FCCAnalyses/MCParticle.h index 913b68e981..b2c6c31b87 100644 --- a/analyzers/dataframe/FCCAnalyses/MCParticle.h +++ b/analyzers/dataframe/FCCAnalyses/MCParticle.h @@ -188,6 +188,9 @@ namespace MCParticle{ /// return the phi of the input MCParticles ROOT::VecOps::RVec get_phi(ROOT::VecOps::RVec in); + /// return the delta r of the input ReconstructedParticles + ROOT::VecOps::RVec get_delta_r(ROOT::VecOps::RVec in); + /// return the energy of the input MCParticles ROOT::VecOps::RVec get_e(ROOT::VecOps::RVec in); diff --git a/analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h b/analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h index dbeb670013..11386e4568 100644 --- a/analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h +++ b/analyzers/dataframe/FCCAnalyses/ReconstructedParticle.h @@ -130,6 +130,21 @@ namespace ReconstructedParticle{ /// return the phi of the input ReconstructedParticles ROOT::VecOps::RVec get_phi(ROOT::VecOps::RVec in); + /// return the delta eta of the input ReconstructedParticles + ROOT::VecOps::RVec get_delta_eta(ROOT::VecOps::RVec in); + + /// return the delta phi of the input ReconstructedParticles + ROOT::VecOps::RVec get_delta_phi(ROOT::VecOps::RVec in); + + /// return the delta r of the input ReconstructedParticles + ROOT::VecOps::RVec get_delta_r(ROOT::VecOps::RVec in); + + /// return the minimum delta r of the input ReconstructedParticles + ROOT::VecOps::RVec get_min_delta_r(ROOT::VecOps::RVec in); + + /// return the energy of the input ReconstructedParticles + ROOT::VecOps::RVec get_reference_point_x(ROOT::VecOps::RVec in); + /// return the energy of the input ReconstructedParticles ROOT::VecOps::RVec get_e(ROOT::VecOps::RVec in); @@ -172,7 +187,7 @@ namespace ReconstructedParticle{ // get sum of vector of floats float get_sum_float(ROOT::VecOps::RVec in); - // get sum of vector of ints + // get sum of vector of ints int get_sum_int(ROOT::VecOps::RVec in); // get avg of vector of floats diff --git a/analyzers/dataframe/src/MCParticle.cc b/analyzers/dataframe/src/MCParticle.cc index 009d0d4c25..1d7756fb85 100644 --- a/analyzers/dataframe/src/MCParticle.cc +++ b/analyzers/dataframe/src/MCParticle.cc @@ -337,6 +337,21 @@ ROOT::VecOps::RVec get_phi(ROOT::VecOps::RVec in return result; } +ROOT::VecOps::RVec get_delta_r(ROOT::VecOps::RVec in) { + ROOT::VecOps::RVec result; + for (int i = 0; i < in.size(); i++) { + TLorentzVector tlv1; + tlv1.SetXYZM(in[i].momentum.x, in[i].momentum.y, in[i].momentum.z, in[i].mass); + for (auto j = i + 1; j < in.size(); j++) { + TLorentzVector tlv2; + tlv2.SetXYZM(in[j].momentum.x, in[j].momentum.y, in[j].momentum.z, in[j].mass); + float delta_r = tlv1.DeltaR(tlv2); + result.push_back(delta_r); + } + } + return result; +} + ROOT::VecOps::RVec get_e(ROOT::VecOps::RVec in) { ROOT::VecOps::RVec result; for (auto & p: in) { diff --git a/analyzers/dataframe/src/ReconstructedParticle.cc b/analyzers/dataframe/src/ReconstructedParticle.cc index b4a07bc2a4..529ada7d16 100644 --- a/analyzers/dataframe/src/ReconstructedParticle.cc +++ b/analyzers/dataframe/src/ReconstructedParticle.cc @@ -340,6 +340,78 @@ ROOT::VecOps::RVec get_phi(ROOT::VecOps::RVec get_delta_eta(ROOT::VecOps::RVec in) { + ROOT::VecOps::RVec result; + for (int i = 0; i < in.size(); i++) { + TLorentzVector tlv1; + tlv1.SetXYZM(in[i].momentum.x, in[i].momentum.y, in[i].momentum.z, in[i].mass); + for (auto j = i + 1; j < in.size(); j++) { + TLorentzVector tlv2; + tlv2.SetXYZM(in[j].momentum.x, in[j].momentum.y, in[j].momentum.z, in[j].mass); + float delta_eta = abs(tlv1.Eta() - tlv2.Eta()); + result.push_back(delta_eta); + } + } + return result; +} + +ROOT::VecOps::RVec get_delta_phi(ROOT::VecOps::RVec in) { + ROOT::VecOps::RVec result; + for (int i = 0; i < in.size(); i++) { + TLorentzVector tlv1; + tlv1.SetXYZM(in[i].momentum.x, in[i].momentum.y, in[i].momentum.z, in[i].mass); + for (auto j = i + 1; j < in.size(); j++) { + TLorentzVector tlv2; + tlv2.SetXYZM(in[j].momentum.x, in[j].momentum.y, in[j].momentum.z, in[j].mass); + float delta_phi = tlv1.DeltaPhi(tlv2); + result.push_back(delta_phi); + } + } + return result; +} + +ROOT::VecOps::RVec get_delta_r(ROOT::VecOps::RVec in) { + ROOT::VecOps::RVec result; + for (int i = 0; i < in.size(); i++) { + TLorentzVector tlv1; + tlv1.SetXYZM(in[i].momentum.x, in[i].momentum.y, in[i].momentum.z, in[i].mass); + for (auto j = i + 1; j < in.size(); j++) { + TLorentzVector tlv2; + tlv2.SetXYZM(in[j].momentum.x, in[j].momentum.y, in[j].momentum.z, in[j].mass); + float delta_r = tlv1.DeltaR(tlv2); + result.push_back(delta_r); + } + } + return result; +} + +ROOT::VecOps::RVec get_min_delta_r(ROOT::VecOps::RVec in) { + ROOT::VecOps::RVec result; + float min_delta_r = 999; + for (int i = 0; i < in.size(); i++) { + TLorentzVector tlv1; + tlv1.SetXYZM(in[i].momentum.x, in[i].momentum.y, in[i].momentum.z, in[i].mass); + for (int j = i + 1; j < in.size(); j++) { + TLorentzVector tlv2; + tlv2.SetXYZM(in[j].momentum.x, in[j].momentum.y, in[j].momentum.z, in[j].mass); + float delta_r = tlv1.DeltaR(tlv2); + if (delta_r < min_delta_r) { + min_delta_r = delta_r; + } + } + } + result.push_back(min_delta_r); + return result; +} + +ROOT::VecOps::RVec get_reference_point_x(ROOT::VecOps::RVec in) { + ROOT::VecOps::RVec result; + for (auto & p: in) { + result.push_back(p.referencePoint.x); + } + return result; +} + ROOT::VecOps::RVec get_e(ROOT::VecOps::RVec in) { ROOT::VecOps::RVec result; for (auto & p: in) { @@ -492,7 +564,7 @@ int getJet_ntags(ROOT::VecOps::RVec in) { return result; } - // get sum of int + // get sum of int int get_sum_int(ROOT::VecOps::RVec in){ int result = std::accumulate(in.begin(), in.end(), 0); //int result = 0; @@ -509,7 +581,7 @@ int getJet_ntags(ROOT::VecOps::RVec in) { // result += in[i]; //} float result = std::accumulate(in.begin(), in.end(), 0.0f) / in.size(); - //result /= in.size(); + //result /= in.size(); return result; } @@ -519,7 +591,7 @@ int getJet_ntags(ROOT::VecOps::RVec in) { //for (int i; i < in.size(); ++i){ // result += in[i]; //} - //result /= in.size(); + //result /= in.size(); int result = std::accumulate(in.begin(), in.end(), 0.0f) / in.size(); return result; } diff --git a/examples/FCCee/bsm/LLPs/ALPs/analysis_final.py b/examples/FCCee/bsm/LLPs/ALPs/analysis_final.py index 8434701e62..56dd6c9aca 100644 --- a/examples/FCCee/bsm/LLPs/ALPs/analysis_final.py +++ b/examples/FCCee/bsm/LLPs/ALPs/analysis_final.py @@ -1,10 +1,10 @@ #Input directory where the files produced at the stage1 level are -inputDir = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_stage1/" +# inputDir = "./output_stage1/" #inputDir = "/eos/user/j/jalimena/FCCeeLLP/" -#inputDir = "output_stage1/" +inputDir = "./stage1_sameMass/" #Output directory where the files produced at the final-selection level are -outputDir = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_finalSel/" +outputDir = "./final_sameMass/" #outputDir = "output_finalSel/" #Integrated luminosity for scaling number of events (required only if setting doScale to true) @@ -20,19 +20,338 @@ #run over the full statistics from stage1 #backgrounds - #'p8_ee_Zee_ecm91':{}, + # 'p8_ee_Zee_ecm91':{}, + # 'wzp6_gaga_ee_60_ecm240':{}, + # 'ee_gaga_1million':{}, + # 'test1':{}, + # 'test2':{}, + # 'test4':{}, + # 'ee_gammagamma':{}, + # 'ee_gaga_test':{}, + # 'ee_aa':{}, + # 'ee_aaa':{}, + # 'ee_aaaa':{}, #signals - 'ALP_Z_aa_1GeV_cYY_0p5':{}, + + # 'ALP_Z_aa_0.01.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.0000019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.000006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0000006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0000019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.000006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0000006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0000019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.000006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.6':{}, + + # 'ee_Z_ALPga_gagaga':{}, + + # 'ALP_Z_aa_1GeV_cYY_0p5':{}, + + # 'ALP_Z_aa_0.1GeV_cYY_0.1':{}, + # 'ALP_Z_aa_0.2GeV_cYY_0.1':{}, + # 'ALP_Z_aa_0.135GeV_cYY_0.1':{}, + # 'ALP_Z_aa_0.3GeV_cYY_0.1':{}, + + # 'ALP_Z_aa_1.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_0.5.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.5.GeV_cYY_1.2':{}, + + 'ALP_Z_aa_1.GeV_cYY_0.6':{}, + 'ALP_Z_aa_1.GeV_cYY_0.8':{}, + 'ALP_Z_aa_1.GeV_cYY_1.0':{}, + 'ALP_Z_aa_1.GeV_cYY_1.2':{}, + 'ALP_Z_aa_1.GeV_cYY_1.4':{}, + + # 'ALP_Z_aa_0.5.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.5.GeV_cYY_1.0':{}, + # # 'ALP_Z_aa_2.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_3.GeV_cYY_1.0':{}, + # # 'ALP_Z_aa_4.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_5.GeV_cYY_1.0':{}, + # # 'ALP_Z_aa_8.GeV_cYY_1.0':{}, + + # 'ALP_Z_aa_0.6.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_0.8.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.2.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.4.GeV_cYY_1.0':{}, + + # 'ALP_Z_aa_3.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_5.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_0.5GeV_cYY_0.5':{}, + # 'ALP_Z_aa_0.7GeV_cYY_0.5':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_7.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_15.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_20.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_25.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_30.GeV_cYY_0.5':{}, } ###Dictionary for prettier names of processes (optional) processLabels = { #backgrounds - #'p8_ee_Zee_ecm91':"Z $\rightarrow$ ee", + # 'p8_ee_Zee_ecm91':"Z $\rightarrow$ ee", + # 'wzp6_gaga_ee_60_ecm240':"YY $\rightarrow$ ee", + # 'ee_gaga_1million':"$\rightarrow$ #gamma#gamma (mine)", + # 'test1':"$\rightarrow$ YY", + # 'test2':"$\rightarrow$ Z $\rightarrow$ ee", + # 'test4':"$\rightarrow$ YYY", + # 'ee_gammagamma':"$\rightarrow$ #gamma#gamma (spring2021)", + # 'ee_gaga_test':"$\rightarrow$ YY", + # 'ee_aa':"$\rightarrow$ #gamma#gamma", + # 'ee_aaa':"$\rightarrow$ #gamma#gamma#gamma", + # 'ee_aaaa':"$\rightarrow$ #gamma#gamma#gamma#gamma", #signals - 'ALP_Z_aa_1GeV_cYY_0p5': "$m_ALP =$ 1 GeV, $c_{YY} = 0.5$", + + # 'ALP_Z_aa_0.01.GeV_cYY_0.00006':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.0006':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.0019':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.006':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.019':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.06':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.19':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_0.01.GeV_cYY_0.6':"$m_ALP =$ 0.01 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.000019':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.00006':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.00019':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.0006':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.0019':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.006':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.019':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.06':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.19':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_0.0316.GeV_cYY_0.6':"$m_ALP =$ 0.0316 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.000019':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.00006':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.00019':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.0006':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.0019':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.006':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.019':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.06':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.19':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_0.1.GeV_cYY_0.6':"$m_ALP =$ 0.1 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.000019':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.00006':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.00019':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.0006':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.0019':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.006':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.019':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.06':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.19':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_0.316.GeV_cYY_0.6':"$m_ALP =$ 0.316 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.000019':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.00006':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.00019':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.0006':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.0019':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.006':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.019':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.06':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.19':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_1.0.GeV_cYY_0.6':"$m_ALP =$ 1.0 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.0000019':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.0000019$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.000006':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.000006$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.000019':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.00006':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.00019':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.0006':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.0019':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.006':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.019':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.06':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.19':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_3.16.GeV_cYY_0.6':"$m_ALP =$ 3.16 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_10.GeV_cYY_0.0000006':"$m_ALP =$ 10 GeV, $c_{YY} = 0.0000006$", + # 'ALP_Z_aa_10.GeV_cYY_0.0000019':"$m_ALP =$ 10 GeV, $c_{YY} = 0.0000019$", + # 'ALP_Z_aa_10.GeV_cYY_0.000006':"$m_ALP =$ 10 GeV, $c_{YY} = 0.000006$", + # 'ALP_Z_aa_10.GeV_cYY_0.000019':"$m_ALP =$ 10 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_10.GeV_cYY_0.00006':"$m_ALP =$ 10 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_10.GeV_cYY_0.00019':"$m_ALP =$ 10 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_10.GeV_cYY_0.0006':"$m_ALP =$ 10 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_10.GeV_cYY_0.0019':"$m_ALP =$ 10 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_10.GeV_cYY_0.006':"$m_ALP =$ 10 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_10.GeV_cYY_0.019':"$m_ALP =$ 10 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_10.GeV_cYY_0.06':"$m_ALP =$ 10 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_10.GeV_cYY_0.19':"$m_ALP =$ 10 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_10.GeV_cYY_0.6':"$m_ALP =$ 10 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.0000006':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.0000006$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.0000019':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.0000019$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.000006':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.000006$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.000019':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.000019$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.00006':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.00006$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.00019':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.00019$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.0006':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.0006$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.0019':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.0019$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.006':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.006$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.019':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.019$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.06':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.06$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.19':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.19$", + # 'ALP_Z_aa_31.6.GeV_cYY_0.6':"$m_ALP =$ 31.6 GeV, $c_{YY} = 0.6$", + + # 'ee_Z_ALPga_gagaga':"$m_ALP =$ 1 GeV, $c_{YY} = 0.5$ (mine)", + + # 'ALP_Z_aa_1GeV_cYY_0p5': "$m_ALP =$ 1 GeV, $c_{YY} = 0.5$", + + # 'ALP_Z_aa_0.1GeV_cYY_0.1': "$m_ALP =$ 0.1 GeV, $c_{YY} = 0.1$", + # 'ALP_Z_aa_0.2GeV_cYY_0.1': "$m_ALP =$ 0.2 GeV, $c_{YY} = 0.1$", + # 'ALP_Z_aa_0.135GeV_cYY_0.1': "$m_ALP =$ 0.135 GeV, $c_{YY} = 0.1$", + # 'ALP_Z_aa_0.3GeV_cYY_0.1': "$m_ALP =$ 0.3 GeV, $c_{YY} = 0.1$", + + # 'ALP_Z_aa_1.GeV_cYY_0.1': "$m_ALP =$ 1 GeV, $c_{YY} = 0.1$", + # 'ALP_Z_aa_1.GeV_cYY_0.3': "$m_ALP =$ 1 GeV, $c_{YY} = 0.3$", + # 'ALP_Z_aa_1.GeV_cYY_0.5': "$m_ALP =$ 1 GeV, $c_{YY} = 0.5$ (spring2021)", + # 'ALP_Z_aa_1.GeV_cYY_0.7': "$m_ALP =$ 1 GeV, $c_{YY} = 0.7$", + # 'ALP_Z_aa_1.GeV_cYY_0.9': "$m_ALP =$ 1 GeV, $c_{YY} = 0.9$", + + # 'ALP_Z_aa_0.5.GeV_cYY_0.6': "$m_ALP =$ 0.5 GeV, $c_{YY} = 0.6$", + # 'ALP_Z_aa_0.5.GeV_cYY_1.2': "$m_ALP =$ 0.5 GeV, $c_{YY} = 1.2$", + + 'ALP_Z_aa_1.GeV_cYY_0.6': "$m_ALP =$ 1 GeV, $c_{YY} = 0.6$", + 'ALP_Z_aa_1.GeV_cYY_0.8': "$m_ALP =$ 1 GeV, $c_{YY} = 0.8$", + 'ALP_Z_aa_1.GeV_cYY_1.0': "$m_ALP =$ 1 GeV, $c_{YY} = 1.0$", + 'ALP_Z_aa_1.GeV_cYY_1.2': "$m_ALP =$ 1 GeV, $c_{YY} = 1.2$", + 'ALP_Z_aa_1.GeV_cYY_1.4': "$m_ALP =$ 1 GeV, $c_{YY} = 1.4$", + + # 'ALP_Z_aa_0.5.GeV_cYY_1.0': "$m_ALP =$ 0.5 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_1.GeV_cYY_1.0': "$m_ALP =$ 1 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_1.5.GeV_cYY_1.0': "$m_ALP =$ 1.5 GeV, $c_{YY} = 1.0$", + # # 'ALP_Z_aa_2.GeV_cYY_1.0': "$m_ALP =$ 2 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_3.GeV_cYY_1.0': "$m_ALP =$ 3 GeV, $c_{YY} = 1.0$", + # # 'ALP_Z_aa_4.GeV_cYY_1.0': "$m_ALP =$ 4 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_5.GeV_cYY_1.0': "$m_ALP =$ 5 GeV, $c_{YY} = 1.0$", + # # 'ALP_Z_aa_8.GeV_cYY_1.0': "$m_ALP =$ 8 GeV, $c_{YY} = 1.0$", + + # 'ALP_Z_aa_0.6.GeV_cYY_1.0': "$m_ALP =$ 0.6 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_0.8.GeV_cYY_1.0': "$m_ALP =$ 0.8 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_1.GeV_cYY_1.0': "$m_ALP =$ 1 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_1.2.GeV_cYY_1.0': "$m_ALP =$ 1.2 GeV, $c_{YY} = 1.0$", + # 'ALP_Z_aa_1.4.GeV_cYY_1.0': "$m_ALP =$ 1.4 GeV, $c_{YY} = 1.0$", + + # 'ALP_Z_aa_3.GeV_cYY_0.1': "$m_ALP =$ 3 GeV, $c_{YY} = 0.1$", + # 'ALP_Z_aa_3.GeV_cYY_0.3': "$m_ALP =$ 3 GeV, $c_{YY} = 0.3$", + # 'ALP_Z_aa_3.GeV_cYY_0.5': "$m_ALP =$ 3 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_3.GeV_cYY_0.7': "$m_ALP =$ 3 GeV, $c_{YY} = 0.7$", + # 'ALP_Z_aa_3.GeV_cYY_0.9': "$m_ALP =$ 3 GeV, $c_{YY} = 0.9$", + + # 'ALP_Z_aa_5.GeV_cYY_0.1': "$m_ALP =$ 5 GeV, $c_{YY} = 0.1$", + # 'ALP_Z_aa_5.GeV_cYY_0.3': "$m_ALP =$ 5 GeV, $c_{YY} = 0.3$", + # 'ALP_Z_aa_5.GeV_cYY_0.5': "$m_ALP =$ 5 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_5.GeV_cYY_0.7': "$m_ALP =$ 5 GeV, $c_{YY} = 0.7$", + # 'ALP_Z_aa_5.GeV_cYY_0.9': "$m_ALP =$ 5 GeV, $c_{YY} = 0.9$", + + # 'ALP_Z_aa_0.5GeV_cYY_0.5': "$m_ALP =$ 0.5 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_0.7GeV_cYY_0.5': "$m_ALP =$ 0.7 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_1.GeV_cYY_0.5': "$m_ALP =$ 1 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_3.GeV_cYY_0.5': "$m_ALP =$ 3 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_5.GeV_cYY_0.5': "$m_ALP =$ 5 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_7.GeV_cYY_0.5': "$m_ALP =$ 7 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_10.GeV_cYY_0.5': "$m_ALP =$ 10 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_15.GeV_cYY_0.5': "$m_ALP =$ 15 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_20.GeV_cYY_0.5': "$m_ALP =$ 20 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_25.GeV_cYY_0.5': "$m_ALP =$ 25 GeV, $c_{YY} = 0.5$", + # 'ALP_Z_aa_30.GeV_cYY_0.5': "$m_ALP =$ 30 GeV, $c_{YY} = 0.5$", } #Link to the dictonary that contains all the cross section information etc... @@ -40,7 +359,166 @@ #Add MySample_p8_ee_ZH_ecm240 as it is not an offical process procDictAdd={ - "ALP_Z_aa_1GeV_cYY_0p5": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "p8_ee_Zee_ecm91": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_gaga_1million": {"numberOfEvents": 1000000, "sumOfWeights": 1000000, "crossSection": 57.319, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "test1": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 57.348, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "test2": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 2087.700, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "test4": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 0.461, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_gammagamma": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 45.454, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_gaga_test": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 4.563, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_aa": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 57.3, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_aaa": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.461, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_aa": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_aaa": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ee_aaaa": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.00111, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_0.01.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.01.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.01.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.01.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.01.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.0316.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.1.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.316.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.0.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.0000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.000006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.16.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.0000006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.0000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.000006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_10.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.0000006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.0000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.000006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.000019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.00006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.00019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.0006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.0019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.006": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.019": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.06": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.19": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_31.6.GeV_cYY_0.6": {"numberOfEvents": 10000, "sumOfWeights": 10000, "crossSection": 1, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ee_Z_ALPga_gagaga": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.6847, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_1GeV_cYY_0p5": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_0.1GeV_cYY_0.1": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.2GeV_cYY_0.1": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.135GeV_cYY_0.1": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.3GeV_cYY_0.1": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_1.GeV_cYY_0.1": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.GeV_cYY_0.3": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.GeV_cYY_0.5": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.GeV_cYY_0.7": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.GeV_cYY_0.9": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_0.5.GeV_cYY_0.6": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.986, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.5.GeV_cYY_1.2": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 3.94, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # for 0.6 below, cross section is actually 0.98597 + "ALP_Z_aa_1.GeV_cYY_0.6": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + "ALP_Z_aa_1.GeV_cYY_0.8": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + "ALP_Z_aa_1.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + "ALP_Z_aa_1.GeV_cYY_1.2": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + "ALP_Z_aa_1.GeV_cYY_1.4": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_0.5.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.5.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # # "ALP_Z_aa_2.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_3.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # # "ALP_Z_aa_4.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_5.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # # "ALP_Z_aa_8.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # "ALP_Z_aa_0.6.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_0.8.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.2.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # "ALP_Z_aa_1.4.GeV_cYY_1.0": {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 0.027, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # 'ALP_Z_aa_3.GeV_cYY_0.1':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_3.GeV_cYY_0.3':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_3.GeV_cYY_0.7':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_3.GeV_cYY_0.9':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # 'ALP_Z_aa_5.GeV_cYY_0.1':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_5.GeV_cYY_0.3':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_5.GeV_cYY_0.7':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_5.GeV_cYY_0.9':{"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + + # 'ALP_Z_aa_0.5GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_0.7GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_1.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_3.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_5.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_7.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_10.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_15.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_20.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_25.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, + # 'ALP_Z_aa_30.GeV_cYY_0.5': {"numberOfEvents": 100000, "sumOfWeights": 100000, "crossSection": 2.744e-05, "kfactor": 1.0, "matchingEfficiency": 1.0}, } #Number of CPUs to use @@ -52,21 +530,41 @@ ###Dictionnay of the list of cuts. The key is the name of the selection that will be added to the output file cutList = { "selNone": "n_RecoTracks > -1", - "sel0": "GenALP_mass.size() > 0", - "sel1": "GenALP_mass.size() > 0 && n_RecoElectrons > 1", + # "sel1": "n_RecoPhotons == 3", + # "sel2": "RecoPhotons_delta_r[0] < 0.5 || RecoPhotons_delta_r[0] > 4.5", + # "sel1+2": "n_RecoPhotons == 3 && (RecoPhotons_delta_r[0] < 0.5 || RecoPhotons_delta_r[0] > 4.5)", + # "sel0": "RecoPhotons_min_delta_r[0] < 0.5 || RecoPhotons_min_delta_r[0] > 3 && RecoPhotons_min_delta_r[0] < 3.3", + # "sel0": "RecoPhotons_min_delta_r[0] < 0.2", + # "sel0": "RecoPhotons_min_delta_r[0] < 0.5 || RecoPhotons_min_delta_r[0] > 3 && RecoPhotons_min_delta_r[0] < 3.3", + # "sel1": "GenALP_mass.size() > 0 && n_RecoElectrons > 1", + # "seltest": "n_RecoPhotons == 3 && (RecoPhoton1_px > 0 && RecoPhoton2_px > 0 || RecoPhoton1_px < 0 && RecoPhoton2_px < 0) && RecoPhotons_min_delta_r[0] < 1.0", + # "seldeltaR": "n_RecoPhotons == 3 && RecoPhotons_min_delta_r[0] < 1.0", + # "selp": "n_RecoPhotons == 3 && RecoPhoton0_p > 44", + # "selall": "n_RecoPhotons == 3 && RecoPhotons_min_delta_r[0] < 1.0 && RecoPhoton0_p > 44", } ###Dictionary for prettier names of cuts (optional) cutLabels = { "selNone": "Before selection", - "sel0": "Good GEN ALP mass", - "sel1": "Good GEN ALP mass and 2 reco electrons", + # "sel1": "Exactly 3 Reconstructed Photons", + # "sel2": "Reco Photons #DeltaR < 0.5 or > 4.5", + # "sel1+2": "Exactly 3 Reconstruced Photons and Reco Photons #DeltaR < 0.5 or > 4.5", + # "sel0": "RecoPhotons_min_delta_r close to 0 and pi", + # "sel0": "Good GEN ALP mass", + # "sel1": "Good GEN ALP mass and 2 reco electrons", + # "seltest": "3 reco photons, second and third photons have the same direction px, and min #DeltaR < 1", + # "seldeltaR": "3 reco photons and reco photons min #DeltaR < 1", + # "selp": "3 reco photons and RecoPhoton0 momentum > 44", + # "selall": "all selections", } ###Dictionary for the ouput variable/hitograms. The key is the name of the variable in the output files. "name" is the name of the variable in the input file, "title" is the x-axis label of the histogram, "bin" the number of bins of the histogram, "xmin" the minimum x-axis value and "xmax" the maximum x-axis value. histoList = { #gen variables "All_n_GenALP": {"name":"All_n_GenALP", "title":"Total number of gen ALPs", "bin":5,"xmin":-0.5 ,"xmax":4.5}, + + "n_FSGenALP": {"name":"n_FSGenALP", "title":"Total number of FS gen ALPs", "bin":5,"xmin":-0.5 ,"xmax":4.5}, + "AllGenALP_mass": {"name":"AllGenALP_mass", "title":"All gen ALP mass [GeV]", "bin":100,"xmin":0 ,"xmax":10}, "AllGenALP_e": {"name":"AllGenALP_e", "title":"All gen ALP energy [GeV]", "bin":100,"xmin":0 ,"xmax":100}, "AllGenALP_p": {"name":"AllGenALP_p", "title":"All gen ALP p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, @@ -77,45 +575,45 @@ "AllGenALP_phi": {"name":"AllGenALP_phi", "title":"All gen ALP #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, "n_FSGenElectron": {"name":"n_FSGenElectron", "title":"Number of final state gen electrons", "bin":5,"xmin":-0.5 ,"xmax":4.5}, - "n_FSGenPositron": {"name":"n_FSGenPositron", "title":"Number of final state gen positrons", "bin":5,"xmin":-0.5 ,"xmax":4.5}, - "n_FSGenNeutrino": {"name":"n_FSGenNeutrino", "title":"Number of final state gen neutrinos", "bin":5,"xmin":-0.5 ,"xmax":4.5}, - "n_FSGenAntiNeutrino": {"name":"n_FSGenAntiNeutrino", "title":"Number of final state gen anti-neutrinos", "bin":5,"xmin":-0.5 ,"xmax":4.5}, + # "n_FSGenPositron": {"name":"n_FSGenPositron", "title":"Number of final state gen positrons", "bin":5,"xmin":-0.5 ,"xmax":4.5}, + # "n_FSGenNeutrino": {"name":"n_FSGenNeutrino", "title":"Number of final state gen neutrinos", "bin":5,"xmin":-0.5 ,"xmax":4.5}, + # "n_FSGenAntiNeutrino": {"name":"n_FSGenAntiNeutrino", "title":"Number of final state gen anti-neutrinos", "bin":5,"xmin":-0.5 ,"xmax":4.5}, "n_FSGenPhoton": {"name":"n_FSGenPhoton", "title":"Number of final state gen photons", "bin":8,"xmin":-0.5 ,"xmax":7.5}, - # "n_FSGenElectron_forFS2GenPhotons": {"name":"n_FSGenElectron_forFS2GenPhotons", "title":"Number of final state gen electrons for events with 2 FS photons", "bin":7,"xmin":-2.5 ,"xmax":4.5}, - # "n_FSGenPositron_forFS2GenPhotons": {"name":"n_FSGenPositron_forFS2GenPhotons", "title":"Number of final state gen positrons for events with 2 FS photons", "bin":7,"xmin":-2.5 ,"xmax":4.5}, - - "FSGenElectron_e": {"name":"FSGenElectron_e", "title":"Final state gen electrons energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenElectron_p": {"name":"FSGenElectron_p", "title":"Final state gen electrons p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenElectron_pt": {"name":"FSGenElectron_pt", "title":"Final state gen electrons p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenElectron_pz": {"name":"FSGenElectron_pz", "title":"Final state gen electrons p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenElectron_eta": {"name":"FSGenElectron_eta", "title":"Final state gen electrons #eta", "bin":60, "xmin":-3,"xmax":3}, - "FSGenElectron_theta": {"name":"FSGenElectron_theta", "title":"Final state gen electrons #theta", "bin":64, "xmin":0,"xmax":3.2}, - "FSGenElectron_phi": {"name":"FSGenElectron_phi", "title":"Final state gen electrons #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - - "FSGenPositron_e": {"name":"FSGenPositron_e", "title":"Final state gen positrons energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenPositron_p": {"name":"FSGenPositron_p", "title":"Final state gen positrons p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenPositron_pt": {"name":"FSGenPositron_pt", "title":"Final state gen positrons p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenPositron_pz": {"name":"FSGenPositron_pz", "title":"Final state gen positrons p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenPositron_eta": {"name":"FSGenPositron_eta", "title":"Final state gen positrons #eta", "bin":60, "xmin":-3,"xmax":3}, - "FSGenPositron_theta": {"name":"FSGenPositron_theta", "title":"Final state gen positrons #theta", "bin":64, "xmin":0,"xmax":3.2}, - "FSGenPositron_phi": {"name":"FSGenPositron_phi", "title":"Final state gen positrons #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - - "FSGenNeutrino_e": {"name":"FSGenNeutrino_e", "title":"Final state gen neutrino energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenNeutrino_p": {"name":"FSGenNeutrino_p", "title":"Final state gen neutrino p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenNeutrino_pt": {"name":"FSGenNeutrino_pt", "title":"Final state gen neutrino p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenNeutrino_pz": {"name":"FSGenNeutrino_pz", "title":"Final state gen neutrino p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenNeutrino_eta": {"name":"FSGenNeutrino_eta", "title":"Final state gen neutrinos #eta", "bin":60, "xmin":-3,"xmax":3}, - "FSGenNeutrino_theta": {"name":"FSGenNeutrino_theta", "title":"Final state gen neutrinos #theta", "bin":64, "xmin":0,"xmax":3.2}, - "FSGenNeutrino_phi": {"name":"FSGenNeutrino_phi", "title":"Final state gen neutrinos #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - - "FSGenAntiNeutrino_e": {"name":"FSGenAntiNeutrino_e", "title":"Final state gen anti-neutrino energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenAntiNeutrino_p": {"name":"FSGenAntiNeutrino_p", "title":"Final state gen anti-neutrino p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenAntiNeutrino_pt": {"name":"FSGenAntiNeutrino_pt", "title":"Final state gen anti-neutrino p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenAntiNeutrino_pz": {"name":"FSGenAntiNeutrino_pz", "title":"Final state gen anti-neutrino p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "FSGenAntiNeutrino_eta": {"name":"FSGenAntiNeutrino_eta", "title":"Final state gen anti-neutrinos #eta", "bin":60, "xmin":-3,"xmax":3}, - "FSGenAntiNeutrino_theta": {"name":"FSGenAntiNeutrino_theta", "title":"Final state gen anti-neutrinos #theta", "bin":64, "xmin":0,"xmax":3.2}, - "FSGenAntiNeutrino_phi": {"name":"FSGenAntiNeutrino_phi", "title":"Final state gen anti-neutrinos #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + # # "n_FSGenElectron_forFS2GenPhotons": {"name":"n_FSGenElectron_forFS2GenPhotons", "title":"Number of final state gen electrons for events with 2 FS photons", "bin":7,"xmin":-2.5 ,"xmax":4.5}, + # # "n_FSGenPositron_forFS2GenPhotons": {"name":"n_FSGenPositron_forFS2GenPhotons", "title":"Number of final state gen positrons for events with 2 FS photons", "bin":7,"xmin":-2.5 ,"xmax":4.5}, + + # "FSGenElectron_e": {"name":"FSGenElectron_e", "title":"Final state gen electrons energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenElectron_p": {"name":"FSGenElectron_p", "title":"Final state gen electrons p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenElectron_pt": {"name":"FSGenElectron_pt", "title":"Final state gen electrons p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenElectron_pz": {"name":"FSGenElectron_pz", "title":"Final state gen electrons p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenElectron_eta": {"name":"FSGenElectron_eta", "title":"Final state gen electrons #eta", "bin":60, "xmin":-3,"xmax":3}, + # "FSGenElectron_theta": {"name":"FSGenElectron_theta", "title":"Final state gen electrons #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "FSGenElectron_phi": {"name":"FSGenElectron_phi", "title":"Final state gen electrons #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + + # "FSGenPositron_e": {"name":"FSGenPositron_e", "title":"Final state gen positrons energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenPositron_p": {"name":"FSGenPositron_p", "title":"Final state gen positrons p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenPositron_pt": {"name":"FSGenPositron_pt", "title":"Final state gen positrons p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenPositron_pz": {"name":"FSGenPositron_pz", "title":"Final state gen positrons p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenPositron_eta": {"name":"FSGenPositron_eta", "title":"Final state gen positrons #eta", "bin":60, "xmin":-3,"xmax":3}, + # "FSGenPositron_theta": {"name":"FSGenPositron_theta", "title":"Final state gen positrons #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "FSGenPositron_phi": {"name":"FSGenPositron_phi", "title":"Final state gen positrons #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + + # "FSGenNeutrino_e": {"name":"FSGenNeutrino_e", "title":"Final state gen neutrino energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenNeutrino_p": {"name":"FSGenNeutrino_p", "title":"Final state gen neutrino p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenNeutrino_pt": {"name":"FSGenNeutrino_pt", "title":"Final state gen neutrino p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenNeutrino_pz": {"name":"FSGenNeutrino_pz", "title":"Final state gen neutrino p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenNeutrino_eta": {"name":"FSGenNeutrino_eta", "title":"Final state gen neutrinos #eta", "bin":60, "xmin":-3,"xmax":3}, + # "FSGenNeutrino_theta": {"name":"FSGenNeutrino_theta", "title":"Final state gen neutrinos #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "FSGenNeutrino_phi": {"name":"FSGenNeutrino_phi", "title":"Final state gen neutrinos #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + + # "FSGenAntiNeutrino_e": {"name":"FSGenAntiNeutrino_e", "title":"Final state gen anti-neutrino energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenAntiNeutrino_p": {"name":"FSGenAntiNeutrino_p", "title":"Final state gen anti-neutrino p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenAntiNeutrino_pt": {"name":"FSGenAntiNeutrino_pt", "title":"Final state gen anti-neutrino p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenAntiNeutrino_pz": {"name":"FSGenAntiNeutrino_pz", "title":"Final state gen anti-neutrino p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "FSGenAntiNeutrino_eta": {"name":"FSGenAntiNeutrino_eta", "title":"Final state gen anti-neutrinos #eta", "bin":60, "xmin":-3,"xmax":3}, + # "FSGenAntiNeutrino_theta": {"name":"FSGenAntiNeutrino_theta", "title":"Final state gen anti-neutrinos #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "FSGenAntiNeutrino_phi": {"name":"FSGenAntiNeutrino_phi", "title":"Final state gen anti-neutrinos #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, "FSGenPhoton_e": {"name":"FSGenPhoton_e", "title":"Final state gen photons energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "FSGenPhoton_p": {"name":"FSGenPhoton_p", "title":"Final state gen photons p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, @@ -125,45 +623,83 @@ "FSGenPhoton_theta": {"name":"FSGenPhoton_theta", "title":"Final state gen photons #theta", "bin":64, "xmin":0,"xmax":3.2}, "FSGenPhoton_phi": {"name":"FSGenPhoton_phi", "title":"Final state gen photons #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - # "FSGenPhoton0_e": {"name":"FSGenPhoton0_e", "title":"Final state gen photon_{0} energy [GeV]", "bin":64, "xmin":-3.2,"xmax":3.2}, - # "FSGenPhoton1_e": {"name":"FSGenPhoton1_e", "title":"Final state gen photon_{1} energy [GeV]", "bin":64, "xmin":-3.2,"xmax":3.2}, - # "FSGenPhoton2_e": {"name":"FSGenPhoton2_e", "title":"Final state gen photon_{2} energy [GeV]", "bin":64, "xmin":-3.2,"xmax":3.2}, - # "FSGenPhoton0_p": {"name":"FSGenPhoton0_p", "title":"Final state gen photon_{0} p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - # "FSGenPhoton1_p": {"name":"FSGenPhoton1_p", "title":"Final state gen photon_{1} p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - # "FSGenPhoton2_p": {"name":"FSGenPhoton2_p", "title":"Final state gen photon_{2} p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - # "FSGenPhoton0_pt": {"name":"FSGenPhoton0_pt", "title":"Final state gen photon_{0} p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - # "FSGenPhoton1_pt": {"name":"FSGenPhoton1_pt", "title":"Final state gen photon_{1} p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - # "FSGenPhoton2_pt": {"name":"FSGenPhoton2_pt", "title":"Final state gen photon_{2} p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + "FSGenPhoton0_e": {"name":"FSGenPhoton0_e", "title":"Final state gen photon_{0} energy [GeV]", "bin":100, "xmin":-3.2,"xmax":50}, + "FSGenPhoton1_e": {"name":"FSGenPhoton1_e", "title":"Final state gen photon_{1} energy [GeV]", "bin":100, "xmin":-3.2,"xmax":50}, + "FSGenPhoton2_e": {"name":"FSGenPhoton2_e", "title":"Final state gen photon_{2} energy [GeV]", "bin":100, "xmin":-3.2,"xmax":50}, + "FSGenPhoton0_p": {"name":"FSGenPhoton0_p", "title":"Final state gen photon_{0} p [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton1_p": {"name":"FSGenPhoton1_p", "title":"Final state gen photon_{1} p [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton2_p": {"name":"FSGenPhoton2_p", "title":"Final state gen photon_{2} p [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton0_pt": {"name":"FSGenPhoton0_pt", "title":"Final state gen photon_{0} p_{T} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton1_pt": {"name":"FSGenPhoton1_pt", "title":"Final state gen photon_{1} p_{T} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton2_pt": {"name":"FSGenPhoton2_pt", "title":"Final state gen photon_{2} p_{T} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton0_px": {"name":"FSGenPhoton0_px", "title":"Final state gen photon_{0} p_{x} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton1_px": {"name":"FSGenPhoton1_px", "title":"Final state gen photon_{1} p_{x} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton2_px": {"name":"FSGenPhoton2_px", "title":"Final state gen photon_{2} p_{x} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton0_py": {"name":"FSGenPhoton0_py", "title":"Final state gen photon_{0} p_{y} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton1_py": {"name":"FSGenPhoton1_py", "title":"Final state gen photon_{1} p_{y} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton2_py": {"name":"FSGenPhoton2_py", "title":"Final state gen photon_{2} p_{y} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton0_pz": {"name":"FSGenPhoton0_pz", "title":"Final state gen photon_{0} p_{z} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton1_pz": {"name":"FSGenPhoton1_pz", "title":"Final state gen photon_{1} p_{z} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + "FSGenPhoton2_pz": {"name":"FSGenPhoton2_pz", "title":"Final state gen photon_{2} p_{z} [GeV]", "bin":100,"xmin":-3.2 ,"xmax":50}, + + "FSGenPhoton1_px_if_FSGenPhoton0_px_greaterthan_0": {"name": "FSGenPhoton1_px_if_FSGenPhoton0_px_greaterthan_0", "title": "FS gen photon_{1} p_{x} if FS gen photon_{0} p_{x} > 0", "bin":100, "xmin":-55, "xmax":50}, + "FSGenPhoton1_px_if_FSGenPhoton2_px_pos": {"name": "FSGenPhoton1_px_if_FSGenPhoton2_px_pos", "title": "FS gen photon_{1} p_{x} if FS gen photon_{2} p_{x} > 0", "bin":100, "xmin":-55, "xmax":50}, + "FSGenPhoton1_pz_if_FSGenPhoton2_pz_pos": {"name": "FSGenPhoton1_pz_if_FSGenPhoton2_pz_pos", "title": "FS gen photon_{1} p_{z} if FS gen photon_{2} p_{z} > 0", "bin":100, "xmin":-55, "xmax":50}, "FSGenPhoton_vertex_x": {"name":"FSGenPhoton_vertex_x", "title":"Final state gen photon production vertex x [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "FSGenPhoton_vertex_y": {"name":"FSGenPhoton_vertex_y", "title":"Final state gen photon production vertex y [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "FSGenPhoton_vertex_z": {"name":"FSGenPhoton_vertex_z", "title":"Final state gen photon production vertex z [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, - "FSGen_lifetime_xy": {"name":"FSGen_lifetime_xy", "title":"Gen ALP (FS eles) #tau_{xy} [s]", "bin":100,"xmin":0 ,"xmax":1E-10}, - "FSGen_lifetime_xyz": {"name":"FSGen_lifetime_xyz", "title":"Gen ALP (FS eles) #tau_{xyz} [s]", "bin":100,"xmin":0 ,"xmax":1E-10}, - "FSGen_Lxy": {"name":"FSGen_Lxy", "title":"Gen ALP (FS eles) L_{xy} [mm]", "bin":100,"xmin":0 ,"xmax":1000}, - "FSGen_Lxyz": {"name":"FSGen_Lxyz", "title":"Gen ALP (FS eles) L_{xyz} [mm]", "bin":100,"xmin":0 ,"xmax":1000}, + # "FSGen_lifetime_xy": {"name":"FSGen_lifetime_xy", "title":"Gen ALP (FS eles) #tau_{xy} [s]", "bin":100,"xmin":0 ,"xmax":1E-10}, + # "FSGen_lifetime_xyz": {"name":"FSGen_lifetime_xyz", "title":"Gen ALP (FS eles) #tau_{xyz} [s]", "bin":100,"xmin":0 ,"xmax":1E-10}, + # "FSGen_Lxy": {"name":"FSGen_Lxy", "title":"Gen ALP (FS eles) L_{xy} [mm]", "bin":100,"xmin":0 ,"xmax":1000}, + # "FSGen_Lxyz": {"name":"FSGen_Lxyz", "title":"Gen ALP (FS eles) L_{xyz} [mm]", "bin":100,"xmin":0 ,"xmax":1000}, - # "FSGen_a0a1_invMass": {"name":"FSGen_a0a1_invMass", "title":"Gen FS photons m_{01} [GeV]", "bin":105,"xmin":-5, "xmax":100}, - # "FSGen_a0a2_invMass": {"name":"FSGen_a0a2_invMass", "title":"Gen FS photons m_{02} [GeV]", "bin":105,"xmin":-5, "xmax":100}, - # "FSGen_a1a2_invMass": {"name":"FSGen_a1a2_invMass", "title":"Gen FS photons m_{12} [GeV]", "bin":105,"xmin":-5, "xmax":100}, - # "FSGen_aaa_invMass": {"name":"FSGen_aaa_invMass", "title":"Gen FS m_{#gamma #gamma #gamma} [GeV]", "bin":105,"xmin":-5, "xmax":100}, + # # "FSGen_a0a1_invMass": {"name":"FSGen_a0a1_invMass", "title":"Gen FS photons m_{01} [GeV]", "bin":105,"xmin":-5, "xmax":100}, + # # "FSGen_a0a2_invMass": {"name":"FSGen_a0a2_invMass", "title":"Gen FS photons m_{02} [GeV]", "bin":105,"xmin":-5, "xmax":100}, + # # "FSGen_a1a2_invMass": {"name":"FSGen_a1a2_invMass", "title":"Gen FS photons m_{12} [GeV]", "bin":105,"xmin":-5, "xmax":100}, + # # "FSGen_aaa_invMass": {"name":"FSGen_aaa_invMass", "title":"Gen FS m_{#gamma #gamma #gamma} [GeV]", "bin":105,"xmin":-5, "xmax":100}, + + "FSGenALP_mass": {"name":"FSGenALP_mass", "title":"FS gen ALP mass [GeV]", "bin":100,"xmin":0 ,"xmax":10}, "GenALP_mass": {"name":"GenALP_mass", "title":"Gen ALP mass [GeV]", "bin":100,"xmin":0 ,"xmax":10}, + "GenALP_e": {"name":"GenALP_e", "title":"Gen ALP energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "GenALP_p": {"name":"GenALP_p", "title":"Gen ALP p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "GenALP_pt": {"name":"GenALP_pt", "title":"Gen ALP p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "GenALP_pz": {"name":"GenALP_pz", "title":"Gen ALP p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "GenALP_eta": {"name":"GenALP_eta", "title":"Gen ALP #eta", "bin":60, "xmin":-3,"xmax":3}, "GenALP_theta": {"name":"GenALP_theta", "title":"Gen ALP #theta", "bin":64, "xmin":0,"xmax":3.2}, "GenALP_phi": {"name":"GenALP_phi", "title":"Gen ALP #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - "GenALP_lifetime_xy": {"name":"GenALP_lifetime_xy", "title":"Gen ALP #tau_{xy} [s]", "bin":100,"xmin":0 ,"xmax":1E-10}, - "GenALP_lifetime_xyz": {"name":"GenALP_lifetime_xyz", "title":"Gen ALP #tau_{xyz} [s]", "bin":100,"xmin":0 ,"xmax":1E-10}, - "GenALP_Lxy": {"name":"GenALP_Lxy", "title":"Gen ALP L_{xy} [mm]", "bin":100,"xmin":0 ,"xmax":1000}, - "GenALP_Lxyz": {"name":"GenALP_Lxyz", "title":"Gen ALP L_{xyz} [mm]", "bin":100,"xmin":0 ,"xmax":1000}, + "GenALP_lifetime_xy": {"name":"GenALP_lifetime_xy", "title":"Gen ALP #tau_{xy} [s]", "bin":100,"xmin":0 ,"xmax":10E-15}, + "GenALP_lifetime_xyz": {"name":"GenALP_lifetime_xyz", "title":"Gen ALP #tau_{xyz} [s]", "bin":100,"xmin":0 ,"xmax":50E-15}, + "GenALP_Lxy": {"name":"GenALP_Lxy", "title":"Gen ALP L_{xy} [mm]", "bin":100,"xmin":0 ,"xmax":10}, + "GenALP_Lxyz": {"name":"GenALP_Lxyz", "title":"Gen ALP L_{xyz} [mm]", "bin":100,"xmin":0 ,"xmax":5E5}, "GenALP_vertex_x": {"name":"GenALP_vertex_x", "title":"Gen ALP production vertex x [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "GenALP_vertex_y": {"name":"GenALP_vertex_y", "title":"Gen ALP production vertex y [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "GenALP_vertex_z": {"name":"GenALP_vertex_z", "title":"Gen ALP production vertex z [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, + "GenALP_px_if_FSGenPhoton0_px_greaterthan_0": {"name": "GenALP_px_if_FSGenPhoton0_px_greaterthan_0", "title": "Gen ALP p_{x} if FS gen photon_{0} p_{x} > 0", "bin":100, "xmin":-55, "xmax":50}, + "FSGenPhoton1_px_if_GenALP_px_neg": {"name": "FSGenPhoton1_px_if_GenALP_px_neg", "title": "FS gen photon_{1} p_{x} if gen ALP p_{x} < 0", "bin":100, "xmin":-55, "xmax":50}, + "FSGenPhoton2_px_if_GenALP_px_neg": {"name": "FSGenPhoton2_px_if_GenALP_px_neg", "title": "FS gen photon_{2} p_{x} if gen ALP p_{x} < 0", "bin":100, "xmin":-55, "xmax":50}, + + # "GenALP_deltaR": {"name":"GenALP_deltaR", "title":"Gen ALP #DeltaR", "bin":60,"xmin":0,"xmax":5}, + "n_GenALP": {"name":"n_GenALP", "title":"Number of gen ALPs", "bin":100,"xmin":-0.5,"xmax":4.5}, + "n_GenALPPhoton1": {"name":"n_GenALPPhoton1", "title":"Number of gen photon_{1}","bin":100,"xmin":-0.5,"xmax":4.5}, + "n_GenALPPhoton2": {"name":"n_GenALPPhoton2", "title":"Number of gen photon_{2}","bin":100,"xmin":-0.5,"xmax":4.5}, + "GenALP_time": {"name":"GenALP_time", "title":"Gen ALP time [s]", "bin":100,"xmin":0,"xmax":5E-24}, + "GenALP_pdg": {"name":"GenALP_pdg", "title":"Gen ALP pdg", "bin":100,"xmin":-10,"xmax":10}, + + # "GenALPPhoton1_time_minus_GenALP_time": {"name":"GenALPPhoton1_time_minus_GenALP_time", "title":"Gen ALP Photon_{1} time - Gen ALP time", "bin":100,"xmin":0,"xmax":1E-7}, + + # "GenALPPhoton1_deltaR": {"name":"GenALPPhoton1_deltaR", "title":"Gen photon_{1} #DeltaR", "bin":60,"xmin":0, "xmax":5}, + # "GenALPPhoton2_deltaR": {"name":"GenALPPhoton2_deltaR", "title":"Gen photon_{2} #DeltaR", "bin":60,"xmin":0, "xmax":5}, + "GenALPPhotons_deltaEta": {"name":"GenALPPhotons_deltaEta", "title":"Gen ALP photons #Delta#eta", "bin":100, "xmin":0, "xmax":8}, + "GenALPPhotons_deltaPhi": {"name":"GenALPPhotons_deltaPhi", "title":"Gen ALP photons #Delta#phi", "bin":100, "xmin":0, "xmax":8}, + "GenALPPhotons_deltaR": {"name":"GenALPPhotons_deltaR", "title":"Gen ALP photons #DeltaR", "bin":100, "xmin":0, "xmax":8}, + + # "GenALPPhotons_deltaR_2": {"name":"GenALPPhotons_deltaR_2", "title":"Gen ALP photons #DeltaR (from ROOT)", "bin":100, "xmin":0, "xmax":8}, + # "FSGenPhotons_delta_r": {"name":"FSGenPhotons_delta_r", "title":"Final state gen photons #DeltaR", "bin":100, "xmin":0, "xmax":20}, + "GenALPPhoton1_e": {"name":"GenALPPhoton1_e", "title":"Gen photon_{1} energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "GenALPPhoton2_e": {"name":"GenALPPhoton2_e", "title":"Gen photon_{2} energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "GenALPPhoton1_p": {"name":"GenALPPhoton1_p", "title":"Gen photon_{1} p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, @@ -179,20 +715,27 @@ "GenALPPhoton1_phi": {"name":"GenALPPhoton1_phi", "title":"Gen photon_{1} #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, "GenALPPhoton2_phi": {"name":"GenALPPhoton2_phi", "title":"Gen photon_{2} #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + "GenALPPhoton1_time": {"name":"GenALPPhoton1_time", "title":"Gen photon_{1} time [s]", "bin":100, "xmin":0, "xmax":0.1E-12}, + "GenALPPhoton2_time": {"name":"GenALPPhoton2_time", "title":"Gen photon_{2} time [s]", "bin":100, "xmin":0, "xmax":250E-14}, + + "GenALP_observed_lifetime_xyz": {"name":"GenALP_observed_lifetime_xyz", "title":"Gen ALP #tau_{xyz, lab}", "bin":100, "xmin":0, "xmax":1E-12}, + "GenALPPhoton1_vertex_x": {"name":"GenALPPhoton1_vertex_x", "title":"Gen photon_{1} production vertex x [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "GenALPPhoton1_vertex_y": {"name":"GenALPPhoton1_vertex_y", "title":"Gen photon_{1} production vertex y [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "GenALPPhoton1_vertex_z": {"name":"GenALPPhoton1_vertex_z", "title":"Gen photon_{1} production vertex z [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "GenALP_aa_invMass": {"name":"GenALP_aa_invMass", "title":"Gen m_{#gamma #gamma} (from ALP) [GeV]", "bin":100,"xmin":0, "xmax":10}, - #reco variables + # #reco variables "n_RecoTracks": {"name":"n_RecoTracks", "title":"Total number of reco tracks", "bin":5,"xmin":-0.5 ,"xmax":4.5}, "n_RecoALPTracks": {"name":"n_RecoALPTracks", "title":"Number of reco ALP tracks", "bin":5,"xmin":-0.5 ,"xmax":4.5}, "RecoALP_DecayVertex_x": {"name":"RecoALPDecayVertex.position.x", "title":"Reco ALP decay vertex x [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "RecoALP_DecayVertex_y": {"name":"RecoALPDecayVertex.position.y", "title":"Reco ALP decay vertex y [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, "RecoALP_DecayVertex_z": {"name":"RecoALPDecayVertex.position.z", "title":"Reco ALP decay vertex z [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, - "RecoALP_DecayVertex_chi2": {"name":"RecoALPDecayVertex.chi2", "title":"Reco ALP decay vertex #chi^{2}", "bin":100,"xmin":0 ,"xmax":3}, - "RecoALP_DecayVertex_probability": {"name":"RecoALPDecayVertex.probability", "title":"Reco ALP decay vertex probability", "bin":100,"xmin":0 ,"xmax":10}, + # "RecoALP_DecayVertex_chi2": {"name":"RecoALPDecayVertex.chi2", "title":"Reco ALP decay vertex #chi^{2}", "bin":100,"xmin":0 ,"xmax":3}, + # "RecoALP_DecayVertex_probability": {"name":"RecoALPDecayVertex.probability", "title":"Reco ALP decay vertex probability", "bin":100,"xmin":0 ,"xmax":10}, + + # "RecoALPL_xyz": {"name":"RecoALPL_xyz", "title":"Reco ALP L_{xyz}", "bin":100,"xmin":-1,"xmax":10}, "RecoALPPhoton1_e": {"name":"RecoALPPhoton1_e", "title":"Reco photon_{1} (from ALP) energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "RecoALPPhoton2_e": {"name":"RecoALPPhoton2_e", "title":"Reco photon_{2} (from ALP) energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, @@ -211,30 +754,40 @@ "RecoALPPhoton1_charge": {"name":"RecoALPPhoton1_charge", "title":"Reco photon_{1} (from ALP) charge", "bin":3, "xmin":-1.5,"xmax":1.5}, "RecoALPPhoton2_charge": {"name":"RecoALPPhoton2_charge", "title":"Reco photon_{2} (from ALP) charge", "bin":3, "xmin":-1.5,"xmax":1.5}, - "RecoALP_aa_invMass": {"name":"RecoALP_aa_invMass", "title":"Reco m_{#gamma #gamma} (from ALP) [GeV]", "bin":100,"xmin":0, "xmax":100}, + "RecoALPPhotons_deltaEta": {"name":"RecoALPPhotons_deltaEta", "title":"Reco ALP photons #Delta#eta", "bin":60, "xmin":-2, "xmax":8}, + "RecoALPPhotons_deltaPhi": {"name":"RecoALPPhotons_deltaPhi", "title":"Reco ALP photons #Delta#phi", "bin":60, "xmin":-2, "xmax":8}, + "RecoALPPhotons_deltaR": {"name":"RecoALPPhotons_deltaR", "title":"Reco ALP photons #DeltaR", "bin":60, "xmin":-3, "xmax":8}, + "RecoALPPhotons_deltaR2": {"name":"RecoALPPhotons_deltaR2", "title":"Reco ALP photons #DeltaR_{2}", "bin":60, "xmin":-3, "xmax":8}, + + "n_RecoALPPhoton1": {"name":"n_RecoALPPhoton1", "title":"Number of reco photon_{1} (from ALP)", "bin":5, "xmin":-0.5, "xmax":4.5}, + "n_RecoALPPhoton2": {"name":"n_RecoALPPhoton2", "title":"Number of reco photon_{2} (from ALP)", "bin":5, "xmin":-0.5, "xmax":4.5}, + # "RecoALPPhoton1_time": {"name":"RecoALPPhoton1_time", "title":"Reco photon_{1} (from ALP) time", "bin":100, "xmin":0, "xmax":2E-24}, + # "RecoALPPhoton2_time": {"name":"RecoALPPhoton2_time", "title":"Reco photon_{2} (from ALP) time", "bin":100, "xmin":0, "xmax":2E-24}, + + # "RecoALP_aa_invMass": {"name":"RecoALP_aa_invMass", "title":"Reco m_{#gamma #gamma} (from ALP) [GeV]", "bin":100,"xmin":0, "xmax":100}, "n_RecoJets": {"name":"n_RecoJets", "title":"Total number of reco jets", "bin":5,"xmin":-0.5 ,"xmax":4.5}, - "n_RecoPhotons": {"name":"n_RecoPhotons", "title":"Total number of reco photons", "bin":5,"xmin":-0.5 ,"xmax":4.5}, + "n_RecoPhotons": {"name":"n_RecoPhotons", "title":"Total number of reco photons", "bin":9,"xmin":-0.5 ,"xmax":8.5}, "n_RecoElectrons": {"name":"n_RecoElectrons", "title":"Total number of reco electrons", "bin":5,"xmin":-0.5 ,"xmax":4.5}, "n_RecoMuons": {"name":"n_RecoMuons", "title":"Total number of reco muons", "bin":5,"xmin":-0.5 ,"xmax":4.5}, - "RecoJet_e": {"name":"RecoJet_e", "title":"Reco jet energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoJet_p": {"name":"RecoJet_p", "title":"Reco jet p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoJet_pt": {"name":"RecoJet_pt", "title":"Reco jet p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoJet_pz": {"name":"RecoJet_pz", "title":"Reco jet p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoJet_eta": {"name":"RecoJet_eta", "title":"Reco jet #eta", "bin":60, "xmin":-3,"xmax":3}, - "RecoJet_theta": {"name":"RecoJet_theta", "title":"Reco jet #theta", "bin":64, "xmin":0,"xmax":3.2}, - "RecoJet_phi": {"name":"RecoJet_phi", "title":"Reco jet #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - "RecoJet_charge": {"name":"RecoJet_charge", "title":"Reco jet charge", "bin":3, "xmin":-1.5,"xmax":1.5}, - - "RecoElectron_e": {"name":"RecoElectron_e", "title":"Reco electron energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoElectron_p": {"name":"RecoElectron_p", "title":"Reco electron p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoElectron_pt": {"name":"RecoElectron_pt", "title":"Reco electron p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoElectron_pz": {"name":"RecoElectron_pz", "title":"Reco electron p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoElectron_eta": {"name":"RecoElectron_eta", "title":"Reco electron #eta", "bin":60, "xmin":-3,"xmax":3}, - "RecoElectron_theta": {"name":"RecoElectron_theta", "title":"Reco electron #theta", "bin":64, "xmin":0,"xmax":3.2}, - "RecoElectron_phi": {"name":"RecoElectron_phi", "title":"Reco electron #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - "RecoElectron_charge": {"name":"RecoElectron_charge", "title":"Reco electron charge", "bin":3, "xmin":-1.5,"xmax":1.5}, + # "RecoJet_e": {"name":"RecoJet_e", "title":"Reco jet energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoJet_p": {"name":"RecoJet_p", "title":"Reco jet p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoJet_pt": {"name":"RecoJet_pt", "title":"Reco jet p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoJet_pz": {"name":"RecoJet_pz", "title":"Reco jet p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoJet_eta": {"name":"RecoJet_eta", "title":"Reco jet #eta", "bin":60, "xmin":-3,"xmax":3}, + # "RecoJet_theta": {"name":"RecoJet_theta", "title":"Reco jet #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "RecoJet_phi": {"name":"RecoJet_phi", "title":"Reco jet #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + # "RecoJet_charge": {"name":"RecoJet_charge", "title":"Reco jet charge", "bin":3, "xmin":-1.5,"xmax":1.5}, + + # "RecoElectron_e": {"name":"RecoElectron_e", "title":"Reco electron energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoElectron_p": {"name":"RecoElectron_p", "title":"Reco electron p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoElectron_pt": {"name":"RecoElectron_pt", "title":"Reco electron p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoElectron_pz": {"name":"RecoElectron_pz", "title":"Reco electron p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoElectron_eta": {"name":"RecoElectron_eta", "title":"Reco electron #eta", "bin":60, "xmin":-3,"xmax":3}, + # "RecoElectron_theta": {"name":"RecoElectron_theta", "title":"Reco electron #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "RecoElectron_phi": {"name":"RecoElectron_phi", "title":"Reco electron #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + # "RecoElectron_charge": {"name":"RecoElectron_charge", "title":"Reco electron charge", "bin":3, "xmin":-1.5,"xmax":1.5}, "RecoPhoton_e": {"name":"RecoPhoton_e", "title":"Reco photon energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, "RecoPhoton_p": {"name":"RecoPhoton_p", "title":"Reco photon p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, @@ -245,43 +798,82 @@ "RecoPhoton_phi": {"name":"RecoPhoton_phi", "title":"Reco photon #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, "RecoPhoton_charge": {"name":"RecoPhoton_charge", "title":"Reco photon charge", "bin":3, "xmin":-1.5,"xmax":1.5}, - "RecoMuon_e": {"name":"RecoMuon_e", "title":"Reco muon energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMuon_p": {"name":"RecoMuon_p", "title":"Reco muon p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMuon_pt": {"name":"RecoMuon_pt", "title":"Reco muon p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMuon_pz": {"name":"RecoMuon_pz", "title":"Reco muon p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMuon_eta": {"name":"RecoMuon_eta", "title":"Reco muon #eta", "bin":60, "xmin":-3,"xmax":3}, - "RecoMuon_theta": {"name":"RecoMuon_theta", "title":"Reco muon #theta", "bin":64, "xmin":0,"xmax":3.2}, - "RecoMuon_phi": {"name":"RecoMuon_phi", "title":"Reco muon #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, - "RecoMuon_charge": {"name":"RecoMuon_charge", "title":"Reco muon charge", "bin":3, "xmin":-1.5,"xmax":1.5}, - - "RecoMissingEnergy_e": {"name":"RecoMissingEnergy_e", "title":"Reco Total Missing Energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMissingEnergy_p": {"name":"RecoMissingEnergy_p", "title":"Reco Total Missing p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMissingEnergy_pt": {"name":"RecoMissingEnergy_pt", "title":"Reco Missing p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMissingEnergy_px": {"name":"RecoMissingEnergy_px", "title":"Reco Missing p_{x} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMissingEnergy_py": {"name":"RecoMissingEnergy_py", "title":"Reco Missing p_{y} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMissingEnergy_pz": {"name":"RecoMissingEnergy_pz", "title":"Reco Missing p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, - "RecoMissingEnergy_eta": {"name":"RecoMissingEnergy_eta", "title":"Reco Missing Energy #eta", "bin":60,"xmin":-3 ,"xmax":3}, - "RecoMissingEnergy_theta": {"name":"RecoMissingEnergy_theta", "title":"Reco Missing Energy #theta", "bin":64,"xmin":0 , "xmax":3.2}, - "RecoMissingEnergy_phi": {"name":"RecoMissingEnergy_phi", "title":"Reco Missing Energy #phi", "bin":64,"xmin":-3.2 ,"xmax":3.2}, - - #gen-reco + # "RecoPhoton_y": {"name":"RecoPhoton_y", "title":"Reco photon rapidity", "bin":100, "xmin":-5, "xmax":5}, + + "RecoPhotons_delta_eta":{"name": "RecoPhotons_delta_eta", "title": "Reco photons #Delta#eta", "bin":100, "xmin":0, "xmax":10}, + "RecoPhotons_delta_phi":{"name": "RecoPhotons_delta_phi", "title": "Reco photons #Delta#phi", "bin":100, "xmin":0, "xmax":10}, + "RecoPhotons_delta_r": {"name": "RecoPhotons_delta_r", "title": "Reco photons #DeltaR", "bin":100, "xmin":0, "xmax":7}, + + "RecoPhotons_min_delta_r": {"name": "RecoPhotons_min_delta_r", "title": "Reco photons minimum #DeltaR", "bin":100, "xmin":0, "xmax": 7}, + + # "RecoPhotons_ALP_delta_r":{"name": "RecoPhotons_ALP_delta_r", "title": "Reco photons #DeltaR (from ALP)", "bin":100, "xmin": 0, "xmax": 0.2}, + # "RecoPhotons_ALP_delta_phi":{"name": "RecoPhotons_ALP_delta_phi", "title": "Reco photons #Delta#phi (from ALP)", "bin":100, "xmin": -4, "xmax": 4}, + # "RecoPhotons_ALP_delta_eta":{"name": "RecoPhotons_ALP_delta_eta", "title": "Reco photons #Delta#eta (from ALP)", "bin":100, "xmin": -4, "xmax": 4}, + + # "RecoPhoton_reference_point_x": {"name": "RecoPhoton_reference_point_x", "title": "Reco photons reference point x", "bin": 100, "xmin": -1, "xmax": 1}, + + "RecoPhoton0_e": {"name":"RecoPhoton0_e", "title":"Reco photon_{0} energy [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton1_e": {"name":"RecoPhoton1_e", "title":"Reco photon_{1} energy [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton2_e": {"name":"RecoPhoton2_e", "title":"Reco photon_{2} energy [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton0_p": {"name":"RecoPhoton0_p", "title":"Reco photon_{0} p [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton1_p": {"name":"RecoPhoton1_p", "title":"Reco photon_{1} p [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton2_p": {"name":"RecoPhoton2_p", "title":"Reco photon_{2} p [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton0_pt": {"name":"RecoPhoton0_pt", "title":"Reco photon_{0} p_{T} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton1_pt": {"name":"RecoPhoton1_pt", "title":"Reco photon_{1} p_{T} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton2_pt": {"name":"RecoPhoton2_pt", "title":"Reco photon_{2} p_{T} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton0_px": {"name":"RecoPhoton0_px", "title":"Reco photon_{0} p_{x} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton1_px": {"name":"RecoPhoton1_px", "title":"Reco photon_{1} p_{x} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton2_px": {"name":"RecoPhoton2_px", "title":"Reco photon_{2} p_{x} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton0_py": {"name":"RecoPhoton0_py", "title":"Reco photon_{0} p_{y} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton1_py": {"name":"RecoPhoton1_py", "title":"Reco photon_{1} p_{y} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton2_py": {"name":"RecoPhoton2_py", "title":"Reco photon_{2} p_{y} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton0_pz": {"name":"RecoPhoton0_pz", "title":"Reco photon_{0} p_{z} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton1_pz": {"name":"RecoPhoton1_pz", "title":"Reco photon_{1} p_{z} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + "RecoPhoton2_pz": {"name":"RecoPhoton2_pz", "title":"Reco photon_{2} p_{z} [GeV]", "bin":100, "xmin":-3.2, "xmax": 50}, + + "RecoPhoton1_px_if_RecoPhoton2_px_pos": {"name": "RecoPhoton1_px_if_RecoPhoton2_px_pos", "title": "Reco photon_{1} p_{x} if reco photon_{2} p_{x} > 0", "bin":100, "xmin":-55, "xmax":50}, + "RecoPhoton1_pz_if_RecoPhoton2_pz_pos": {"name": "RecoPhoton1_pz_if_RecoPhoton2_pz_pos", "title": "Reco photon_{1} p_{z} if reco photon_{2} p_{z} > 0", "bin":100, "xmin":-55, "xmax":50}, + + "RecoALPPhotons_delta_R3": {"name":"RecoALPPhotons_delta_R3", "title":"Reco ALP photons #DeltaR_{3}", "bin":60, "xmin":-3, "xmax":8}, + + # "RecoMuon_e": {"name":"RecoMuon_e", "title":"Reco muon energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMuon_p": {"name":"RecoMuon_p", "title":"Reco muon p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMuon_pt": {"name":"RecoMuon_pt", "title":"Reco muon p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMuon_pz": {"name":"RecoMuon_pz", "title":"Reco muon p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMuon_eta": {"name":"RecoMuon_eta", "title":"Reco muon #eta", "bin":60, "xmin":-3,"xmax":3}, + # "RecoMuon_theta": {"name":"RecoMuon_theta", "title":"Reco muon #theta", "bin":64, "xmin":0,"xmax":3.2}, + # "RecoMuon_phi": {"name":"RecoMuon_phi", "title":"Reco muon #phi", "bin":64, "xmin":-3.2,"xmax":3.2}, + # "RecoMuon_charge": {"name":"RecoMuon_charge", "title":"Reco muon charge", "bin":3, "xmin":-1.5,"xmax":1.5}, + + # "RecoMissingEnergy_e": {"name":"RecoMissingEnergy_e", "title":"Reco Total Missing Energy [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMissingEnergy_p": {"name":"RecoMissingEnergy_p", "title":"Reco Total Missing p [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMissingEnergy_pt": {"name":"RecoMissingEnergy_pt", "title":"Reco Missing p_{T} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMissingEnergy_px": {"name":"RecoMissingEnergy_px", "title":"Reco Missing p_{x} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMissingEnergy_py": {"name":"RecoMissingEnergy_py", "title":"Reco Missing p_{y} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMissingEnergy_pz": {"name":"RecoMissingEnergy_pz", "title":"Reco Missing p_{z} [GeV]", "bin":100,"xmin":0 ,"xmax":50}, + # "RecoMissingEnergy_eta": {"name":"RecoMissingEnergy_eta", "title":"Reco Missing Energy #eta", "bin":60,"xmin":-3 ,"xmax":3}, + # "RecoMissingEnergy_theta": {"name":"RecoMissingEnergy_theta", "title":"Reco Missing Energy #theta", "bin":64,"xmin":0 , "xmax":3.2}, + # "RecoMissingEnergy_phi": {"name":"RecoMissingEnergy_phi", "title":"Reco Missing Energy #phi", "bin":64,"xmin":-3.2 ,"xmax":3.2}, + + # #gen-reco "GenMinusRecoALPPhoton1_e": {"name":"GenMinusRecoALPPhoton1_e", "title":"Gen photon_{1} energy - Reco photon_{1} energy [GeV]","bin":100,"xmin":-5 ,"xmax":5}, "GenMinusRecoALPPhoton2_e": {"name":"GenMinusRecoALPPhoton2_e", "title":"Gen photon_{2} energy - Reco photon_{2} energy [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton1_p": {"name":"GenMinusRecoALPPhoton1_p", "title":"Gen photon_{1} p - Reco photon_{1} p [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton2_p": {"name":"GenMinusRecoALPPhoton2_p", "title":"Gen photon_{2} p - Reco photon_{2} p [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton1_pt": {"name":"GenMinusRecoALPPhoton1_pt", "title":"Gen photon_{1} p_{T} - Reco photon_{1} p_{T} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton2_pt": {"name":"GenMinusRecoALPPhoton2_pt", "title":"Gen photon_{2} p_{T} - Reco photon_{2} p_{T} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton1_pz": {"name":"GenMinusRecoALPPhoton1_pz", "title":"Gen photon_{1} p_{z} - Reco photon_{1} p_{z} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton2_pz": {"name":"GenMinusRecoALPPhoton2_pz", "title":"Gen photon_{2} p_{z} - Reco photon_{2} p_{z} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton1_eta": {"name":"GenMinusRecoALPPhoton1_eta", "title":"Gen photon_{1} #eta - Reco photon_{1} #eta", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton2_eta": {"name":"GenMinusRecoALPPhoton2_eta", "title":"Gen photon_{2} #eta - Reco photon_{2} #eta", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton1_theta":{"name":"GenMinusRecoALPPhoton1_theta","title":"Gen photon_{1} #theta - Reco photon_{1} #theta", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton2_theta":{"name":"GenMinusRecoALPPhoton2_theta","title":"Gen photon_{2} #theta - Reco photon_{2} #theta", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton1_phi": {"name":"GenMinusRecoALPPhoton1_phi", "title":"Gen photon_{1} #phi - Reco photon_{1} #phi", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALPPhoton2_phi": {"name":"GenMinusRecoALPPhoton2_phi", "title":"Gen photon_{2} #phi - Reco photon_{2} #phi", "bin":100,"xmin":-5 ,"xmax":5}, - - "GenMinusRecoALP_DecayVertex_x": {"name":"GenMinusRecoALP_DecayVertex_x", "title":"Gen ALP decay vertex x - Reco ALP decay vertex x [mm]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALP_DecayVertex_y": {"name":"GenMinusRecoALP_DecayVertex_y", "title":"Gen ALP decay vertex y - Reco ALP decay vertex y [mm]", "bin":100,"xmin":-5 ,"xmax":5}, - "GenMinusRecoALP_DecayVertex_z": {"name":"GenMinusRecoALP_DecayVertex_z", "title":"Gen ALP decay vertex z - Reco ALP decay vertex z [mm]", "bin":100,"xmin":-5 ,"xmax":5}, - + # "GenMinusRecoALPPhoton1_p": {"name":"GenMinusRecoALPPhoton1_p", "title":"Gen photon_{1} p - Reco photon_{1} p [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton2_p": {"name":"GenMinusRecoALPPhoton2_p", "title":"Gen photon_{2} p - Reco photon_{2} p [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton1_pt": {"name":"GenMinusRecoALPPhoton1_pt", "title":"Gen photon_{1} p_{T} - Reco photon_{1} p_{T} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton2_pt": {"name":"GenMinusRecoALPPhoton2_pt", "title":"Gen photon_{2} p_{T} - Reco photon_{2} p_{T} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton1_pz": {"name":"GenMinusRecoALPPhoton1_pz", "title":"Gen photon_{1} p_{z} - Reco photon_{1} p_{z} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton2_pz": {"name":"GenMinusRecoALPPhoton2_pz", "title":"Gen photon_{2} p_{z} - Reco photon_{2} p_{z} [GeV]", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton1_eta": {"name":"GenMinusRecoALPPhoton1_eta", "title":"Gen photon_{1} #eta - Reco photon_{1} #eta", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton2_eta": {"name":"GenMinusRecoALPPhoton2_eta", "title":"Gen photon_{2} #eta - Reco photon_{2} #eta", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton1_theta":{"name":"GenMinusRecoALPPhoton1_theta","title":"Gen photon_{1} #theta - Reco photon_{1} #theta", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton2_theta":{"name":"GenMinusRecoALPPhoton2_theta","title":"Gen photon_{2} #theta - Reco photon_{2} #theta", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton1_phi": {"name":"GenMinusRecoALPPhoton1_phi", "title":"Gen photon_{1} #phi - Reco photon_{1} #phi", "bin":100,"xmin":-5 ,"xmax":5}, + # "GenMinusRecoALPPhoton2_phi": {"name":"GenMinusRecoALPPhoton2_phi", "title":"Gen photon_{2} #phi - Reco photon_{2} #phi", "bin":100,"xmin":-5 ,"xmax":5}, + + "GenMinusRecoALP_DecayVertex_x": {"name":"GenMinusRecoALP_DecayVertex_x", "title":"Gen ALP decay vertex x - Reco ALP decay vertex x [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, + "GenMinusRecoALP_DecayVertex_y": {"name":"GenMinusRecoALP_DecayVertex_y", "title":"Gen ALP decay vertex y - Reco ALP decay vertex y [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, + "GenMinusRecoALP_DecayVertex_z": {"name":"GenMinusRecoALP_DecayVertex_z", "title":"Gen ALP decay vertex z - Reco ALP decay vertex z [mm]", "bin":100,"xmin":-1000 ,"xmax":1000}, + + # "CalorimeterHitsTime": {"name":"CalorimeterHitsTime", "title":"Calorimeter hits time", "bin":100,"xmin":0,"xmax":2E-8} } diff --git a/examples/FCCee/bsm/LLPs/ALPs/analysis_plots.py b/examples/FCCee/bsm/LLPs/ALPs/analysis_plots.py index b1545588dd..05020d2427 100644 --- a/examples/FCCee/bsm/LLPs/ALPs/analysis_plots.py +++ b/examples/FCCee/bsm/LLPs/ALPs/analysis_plots.py @@ -5,20 +5,23 @@ ###If scaleSig=0 or scaleBack=0, we don't apply any additional scaling, on top of the normalization to cross section and integrated luminosity, as defined in finalSel.py ###If scaleSig or scaleBack is not defined, plots will be normalized to 1 -#scaleSig = 0. -#scaleBack = 0. +# scaleSig = 1. +# scaleBack = 1. ana_tex = 'e^{+}e^{-} #rightarrow Z #rightarrow #gamma ALP #rightarrow 3#gamma' #ana_tex = '' #delphesVersion = '3.4.2' delphesVersion = '' energy = 91 collider = 'FCC-ee' -inputDir = '/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_finalSel/' +inputDir = './final_samecYY/' #formats = ['png','pdf'] -formats = ['pdf'] -yaxis = ['lin','log'] +# formats = ['pdf'] +formats = ['png'] +# xaxis = ['log'] +yaxis = ['log'] +# yaxis = ['lin','log'] stacksig = ['nostack'] -outdir = 'plots/' +outdir = './plots_samecYY2/' splitLeg = True variables = [ @@ -34,44 +37,44 @@ "AllGenALP_phi", "n_FSGenElectron", - "n_FSGenPositron", - "n_FSGenNeutrino", - "n_FSGenAntiNeutrino", + # "n_FSGenPositron", + # "n_FSGenNeutrino", + # "n_FSGenAntiNeutrino", "n_FSGenPhoton", - # "n_FSGenElectron_forFS2GenPhotons", - # "n_FSGenPositron_forFS2GenPhotons", - - "FSGenElectron_e", - "FSGenElectron_p", - "FSGenElectron_pt", - "FSGenElectron_pz", - "FSGenElectron_eta", - "FSGenElectron_theta", - "FSGenElectron_phi", - - "FSGenPositron_e", - "FSGenPositron_p", - "FSGenPositron_pt", - "FSGenPositron_pz", - "FSGenPositron_eta", - "FSGenPositron_theta", - "FSGenPositron_phi", - - "FSGenNeutrino_e", - "FSGenNeutrino_p", - "FSGenNeutrino_pt", - "FSGenNeutrino_pz", - "FSGenNeutrino_eta", - "FSGenNeutrino_theta", - "FSGenNeutrino_phi", - - "FSGenAntiNeutrino_e", - "FSGenAntiNeutrino_p", - "FSGenAntiNeutrino_pt", - "FSGenAntiNeutrino_pz", - "FSGenAntiNeutrino_eta", - "FSGenAntiNeutrino_theta", - "FSGenAntiNeutrino_phi", + # # "n_FSGenElectron_forFS2GenPhotons", + # # "n_FSGenPositron_forFS2GenPhotons", + + # "FSGenElectron_e", + # "FSGenElectron_p", + # "FSGenElectron_pt", + # "FSGenElectron_pz", + # "FSGenElectron_eta", + # "FSGenElectron_theta", + # "FSGenElectron_phi", + + # "FSGenPositron_e", + # "FSGenPositron_p", + # "FSGenPositron_pt", + # "FSGenPositron_pz", + # "FSGenPositron_eta", + # "FSGenPositron_theta", + # "FSGenPositron_phi", + + # "FSGenNeutrino_e", + # "FSGenNeutrino_p", + # "FSGenNeutrino_pt", + # "FSGenNeutrino_pz", + # "FSGenNeutrino_eta", + # "FSGenNeutrino_theta", + # "FSGenNeutrino_phi", + + # "FSGenAntiNeutrino_e", + # "FSGenAntiNeutrino_p", + # "FSGenAntiNeutrino_pt", + # "FSGenAntiNeutrino_pz", + # "FSGenAntiNeutrino_eta", + # "FSGenAntiNeutrino_theta", + # "FSGenAntiNeutrino_phi", "FSGenPhoton_e", "FSGenPhoton_p", @@ -85,26 +88,41 @@ "FSGenPhoton_vertex_y", "FSGenPhoton_vertex_z", - "FSGen_Lxy", - "FSGen_Lxyz", - "FSGen_lifetime_xy", - "FSGen_lifetime_xyz", - - # "FSGenPhoton0_e", - # "FSGenPhoton1_e", - # "FSGenPhoton2_e", - # "FSGenPhoton0_p", - # "FSGenPhoton1_p", - # "FSGenPhoton2_p", - # "FSGenPhoton0_pt", - # "FSGenPhoton1_pt", - # "FSGenPhoton2_pt", + # "FSGen_Lxy", + # "FSGen_Lxyz", + # "FSGen_lifetime_xy", + # "FSGen_lifetime_xyz", + + "FSGenPhoton0_e", + "FSGenPhoton1_e", + "FSGenPhoton2_e", + "FSGenPhoton0_p", + "FSGenPhoton1_p", + "FSGenPhoton2_p", + "FSGenPhoton0_pt", + "FSGenPhoton1_pt", + "FSGenPhoton2_pt", + "FSGenPhoton0_px", + "FSGenPhoton1_px", + "FSGenPhoton2_px", + "FSGenPhoton0_py", + "FSGenPhoton1_py", + "FSGenPhoton2_py", + "FSGenPhoton0_pz", + "FSGenPhoton1_pz", + "FSGenPhoton2_pz", + + "FSGenPhoton1_px_if_FSGenPhoton0_px_greaterthan_0", + "FSGenPhoton1_px_if_FSGenPhoton2_px_pos", + "FSGenPhoton1_pz_if_FSGenPhoton2_pz_pos", + # "FSGen_a0a1_invMass", # "FSGen_a0a2_invMass", # "FSGen_a1a2_invMass", # "FSGen_aaa_invMass", "GenALP_mass", + "GenALP_e", "GenALP_p", "GenALP_pt", "GenALP_pz", @@ -119,6 +137,13 @@ "GenALP_vertex_y", "GenALP_vertex_z", + "GenALP_px_if_FSGenPhoton0_px_greaterthan_0", + "FSGenPhoton1_px_if_GenALP_px_neg", + "FSGenPhoton2_px_if_GenALP_px_neg", + + "GenALP_time", + # "GenALPPhoton1_time_minus_GenALP_time", + "GenALPPhoton1_e", "GenALPPhoton2_e", "GenALPPhoton1_p", @@ -137,16 +162,30 @@ "GenALPPhoton1_vertex_y", "GenALPPhoton1_vertex_z", - "GenALP_aa_invMass", + # "GenALP_aa_invMass", - #reco variables + # #reco variables "n_RecoTracks", "n_RecoALPTracks", "RecoALP_DecayVertex_x", "RecoALP_DecayVertex_y", "RecoALP_DecayVertex_z", - "RecoALP_DecayVertex_chi2", - "RecoALP_DecayVertex_probability", + # "RecoALP_DecayVertex_chi2", + # "RecoALP_DecayVertex_probability", + + "GenALPPhotons_deltaEta", + "GenALPPhotons_deltaPhi", + "GenALPPhotons_deltaR", + "n_GenALP", + "n_GenALPPhoton1", + "n_GenALPPhoton2", + "GenALPPhoton1_time", + "GenALPPhoton2_time", + + # "GenALPPhotons_deltaR_2", + # "FSGenPhotons_delta_r", + + "GenALP_observed_lifetime_xyz", "RecoALPPhoton1_e", "RecoALPPhoton2_e", @@ -165,28 +204,38 @@ "RecoALPPhoton1_charge", "RecoALPPhoton2_charge", + "RecoALPPhotons_deltaEta", + "RecoALPPhotons_deltaPhi", + "RecoALPPhotons_deltaR", + + "RecoALP_DecayVertex_x", + "RecoALP_DecayVertex_y", + "RecoALP_DecayVertex_z", + + # "RecoALPL_xyz", + "n_RecoJets", "n_RecoPhotons", "n_RecoElectrons", "n_RecoMuons", - "RecoJet_e", - "RecoJet_p", - "RecoJet_pt", - "RecoJet_pz", - "RecoJet_eta", - "RecoJet_theta", - "RecoJet_phi", - "RecoJet_charge", - - "RecoElectron_e", - "RecoElectron_p", - "RecoElectron_pt", - "RecoElectron_pz", - "RecoElectron_eta", - "RecoElectron_theta", - "RecoElectron_phi", - "RecoElectron_charge", + # "RecoJet_e", + # "RecoJet_p", + # "RecoJet_pt", + # "RecoJet_pz", + # "RecoJet_eta", + # "RecoJet_theta", + # "RecoJet_phi", + # "RecoJet_charge", + + # "RecoElectron_e", + # "RecoElectron_p", + # "RecoElectron_pt", + # "RecoElectron_pz", + # "RecoElectron_eta", + # "RecoElectron_theta", + # "RecoElectron_phi", + # "RecoElectron_charge", "RecoPhoton_e", "RecoPhoton_p", @@ -197,50 +246,339 @@ "RecoPhoton_phi", "RecoPhoton_charge", - "RecoMuon_e", - "RecoMuon_p", - "RecoMuon_pt", - "RecoMuon_pz", - "RecoMuon_eta", - "RecoMuon_theta", - "RecoMuon_phi", - "RecoMuon_charge", - - "RecoMissingEnergy_e", - "RecoMissingEnergy_p", - "RecoMissingEnergy_pt", - "RecoMissingEnergy_px", - "RecoMissingEnergy_py", - "RecoMissingEnergy_pz", - "RecoMissingEnergy_eta", - "RecoMissingEnergy_theta", - "RecoMissingEnergy_phi", - + "RecoPhotons_delta_eta", + "RecoPhotons_delta_phi", + "RecoPhotons_delta_r", + + "RecoPhotons_min_delta_r", + + # "RecoPhotons_ALP_delta_r", + # "RecoPhotons_ALP_delta_phi", + # "RecoPhotons_ALP_delta_eta", + + # "RecoPhoton_reference_point_x", + + "RecoPhoton0_e", + "RecoPhoton1_e", + "RecoPhoton2_e", + "RecoPhoton0_p", + "RecoPhoton1_p", + "RecoPhoton2_p", + "RecoPhoton0_pt", + "RecoPhoton1_pt", + "RecoPhoton2_pt", + "RecoPhoton0_px", + "RecoPhoton1_px", + "RecoPhoton2_px", + "RecoPhoton0_py", + "RecoPhoton1_py", + "RecoPhoton2_py", + "RecoPhoton0_pz", + "RecoPhoton1_pz", + "RecoPhoton2_pz", + + "RecoPhoton1_px_if_RecoPhoton2_px_pos", + "RecoPhoton1_pz_if_RecoPhoton2_pz_pos", + + "RecoALPPhotons_delta_R3", + + # "RecoMuon_e", + # "RecoMuon_p", + # "RecoMuon_pt", + # "RecoMuon_pz", + # "RecoMuon_eta", + # "RecoMuon_theta", + # "RecoMuon_phi", + # "RecoMuon_charge", + + # "RecoMissingEnergy_e", + # "RecoMissingEnergy_p", + # "RecoMissingEnergy_pt", + # "RecoMissingEnergy_px", + # "RecoMissingEnergy_py", + # "RecoMissingEnergy_pz", + # "RecoMissingEnergy_eta", + # "RecoMissingEnergy_theta", + # "RecoMissingEnergy_phi", + + "GenMinusRecoALPPhoton1_e", + "GenMinusRecoALPPhoton2_e", + "GenMinusRecoALP_DecayVertex_x", + "GenMinusRecoALP_DecayVertex_y", + "GenMinusRecoALP_DecayVertex_z", + + # "CalorimeterHitsTime", ] - + ###Dictionary with the analysis name as a key, and the list of selections to be plotted for this analysis. The name of the selections should be the same than in the final selection selections = {} -selections['ALP'] = ["selNone"]#,"sel0","sel1"] +selections['ALP'] = [ + "selNone", + # "sel0", + # "sel1", + # "sel2", + # "sel1+2", + # "seltest", + # "seldeltaR", + # "selp", + # "selall", +] extralabel = {} extralabel['selNone'] = "Before selection" +# extralabel['sel1'] = "Exactly 3 Reconstructed Photons" +# extralabel['sel2'] = "Reco Photons #DeltaR < 0.5 or > 4.5" +# extralabel['sel1+2'] = "Exactly 3 Reconstructed Photons and Reco Photons #DeltaR < 0.5 or > 4.5" +# extralabel['sel0'] = "Selection: RecoPhotons_min_delta_r close to 0 and pi" #extralabel['sel0'] = "Selection: At least 1 ALP" #extralabel['sel1'] = "Selection: At least 1 ALP, at least 2 reco electrons" +# extralabel['seltest'] = "3 reco photons and second and third photons have the same direction px" +# extralabel['seldeltaR'] = "3 reco photons and reco photons min #DeltaR < 1" +# extralabel["selp"] = "3 reco photons and RecoPhoton0 momentum > 44" +# extralabel["selall"] = "all selections" colors = {} -colors['ALP_Z_aa_1GeV_cYY_0p5'] = ROOT.kRed -#colors['Zee'] = ROOT.kGray+2 +# colors['ALP_Z_aa_0.316.GeV_cYY_0.00006'] = ROOT.kRed +# colors['ALP_Z_aa_0.316.GeV_cYY_0.0006'] = ROOT.kGreen +# colors['ALP_Z_aa_0.316.GeV_cYY_0.006'] = ROOT.kBlue +# colors['ALP_Z_aa_0.316.GeV_cYY_0.06'] = ROOT.kViolet +# colors['ALP_Z_aa_0.316.GeV_cYY_0.6'] = ROOT.kCyan + +# colors['ALP_Z_aa_1GeV_cYY_0p5'] = ROOT.kRed + +# colors['ALP_Z_aa_0.1GeV_cYY_0.1'] = ROOT.kRed +# colors['ALP_Z_aa_0.2GeV_cYY_0.1'] = ROOT.kGreen +# colors['ALP_Z_aa_0.135GeV_cYY_0.1'] = ROOT.kCyan +# colors['ALP_Z_aa_0.3GeV_cYY_0.1'] = ROOT.kGray + +# colors['ALP_Z_aa_1.GeV_cYY_0.1'] = ROOT.kMagenta +# colors['ALP_Z_aa_1.GeV_cYY_0.3'] = ROOT.kViolet +# colors['ALP_Z_aa_1.GeV_cYY_0.5'] = ROOT.kCyan +# colors['ALP_Z_aa_1.GeV_cYY_0.7'] = ROOT.kAzure +# colors['ALP_Z_aa_1.GeV_cYY_0.9'] = ROOT.kCyan + +# colors['ALP_Z_aa_0.5.GeV_cYY_0.6'] = ROOT.kRed +# colors['ALP_Z_aa_0.5.GeV_cYY_1.2'] = ROOT.kBlue + +# colors['ALP_Z_aa_1.GeV_cYY_0.6'] = ROOT.kRed +# colors['ALP_Z_aa_1.GeV_cYY_0.8'] = ROOT.kGreen +# colors['ALP_Z_aa_1.GeV_cYY_1.0'] = ROOT.kBlue +# colors['ALP_Z_aa_1.GeV_cYY_1.2'] = ROOT.kViolet +# colors['ALP_Z_aa_1.GeV_cYY_1.4'] = ROOT.kCyan + +# colors['ALP_Z_aa_0.5.GeV_cYY_1.0'] = ROOT.kRed +# colors['ALP_Z_aa_1.GeV_cYY_1.0'] = ROOT.kGreen +# colors['ALP_Z_aa_1.5.GeV_cYY_1.0'] = ROOT.kBlue +# colors['ALP_Z_aa_2.GeV_cYY_1.0'] = ROOT.kBlue +# colors['ALP_Z_aa_3.GeV_cYY_1.0'] = ROOT.kViolet +# colors['ALP_Z_aa_4.GeV_cYY_1.0'] = ROOT.kViolet +# colors['ALP_Z_aa_5.GeV_cYY_1.0'] = ROOT.kCyan +# colors['ALP_Z_aa_8.GeV_cYY_1.0'] = ROOT.kCyan + +colors['ALP_Z_aa_0.6.GeV_cYY_1.0'] = ROOT.kOrange +colors['ALP_Z_aa_0.8.GeV_cYY_1.0'] = ROOT.kAzure +colors['ALP_Z_aa_1.GeV_cYY_1.0'] = ROOT.kCyan +colors['ALP_Z_aa_1.2.GeV_cYY_1.0'] = ROOT.kGreen +colors['ALP_Z_aa_1.4.GeV_cYY_1.0'] = ROOT.kMagenta + +# colors['ALP_Z_aa_3.GeV_cYY_0.1'] = ROOT.kRed +# colors['ALP_Z_aa_3.GeV_cYY_0.3'] = ROOT.kBlue +# colors['ALP_Z_aa_3.GeV_cYY_0.5'] = ROOT.kYellow +# colors['ALP_Z_aa_3.GeV_cYY_0.7'] = ROOT.kMagenta +# colors['ALP_Z_aa_3.GeV_cYY_0.9'] = ROOT.kRed + +# colors['ALP_Z_aa_5.GeV_cYY_0.1'] = ROOT.kGray +# colors['ALP_Z_aa_5.GeV_cYY_0.3'] = ROOT.kBlack +# colors['ALP_Z_aa_5.GeV_cYY_0.5'] = ROOT.kViolet +# colors['ALP_Z_aa_5.GeV_cYY_0.7'] = ROOT.kGreen +# colors['ALP_Z_aa_5.GeV_cYY_0.9'] = ROOT.kCyan + +# colors['ALP_Z_aa_0.5GeV_cYY_0.5'] = ROOT.kYellow +# colors['ALP_Z_aa_0.7GeV_cYY_0.5'] = ROOT.kOrange +# colors['ALP_Z_aa_1.GeV_cYY_0.5'] = ROOT.kRed +# colors['ALP_Z_aa_3.GeV_cYY_0.5'] = ROOT.kBlue +# colors['ALP_Z_aa_5.GeV_cYY_0.5'] = ROOT.kGreen +# colors['ALP_Z_aa_7.GeV_cYY_0.5'] = ROOT.kCyan +# colors['ALP_Z_aa_10.GeV_cYY_0.5'] = ROOT.kCyan +# colors['ALP_Z_aa_15.GeV_cYY_0.5'] = ROOT.kAzure +# colors['ALP_Z_aa_20.GeV_cYY_0.5'] = ROOT.kCyan +# colors['ALP_Z_aa_25.GeV_cYY_0.5'] = ROOT.kTeal +# colors['ALP_Z_aa_30.GeV_cYY_0.5'] = ROOT.kGreen + +# colors['ee_Z_ALPga_gagaga'] = ROOT.kRed + +# colors['p8_ee_Zee_ecm91'] = ROOT.kBlue +# colors['ee_gaga_1million'] = ROOT.kBlue +# colors['test1'] = ROOT.kBlue +# colors['test4'] = ROOT.kCyan +# colors['ee_gammagamma'] = ROOT.kGreen +# colors['ee_gaga_test'] = ROOT.kBlue +# colors['ee_aa'] = ROOT.kGreen +# colors['ee_aaa'] = ROOT.kYellow +# colors['ee_aaaa'] = ROOT.kCyan plots = {} plots['ALP'] = {'signal':{ - 'ALP_Z_aa_1GeV_cYY_0p5':['ALP_Z_aa_1GeV_cYY_0p5'], -}, - 'backgrounds':{}, - #'Zee':['p8_ee_Zee_ecm91'], + # 'ALP_Z_aa_0.316.GeV_cYY_0.00006':['ALP_Z_aa_0.316.GeV_cYY_0.00006'], + # 'ALP_Z_aa_0.316.GeV_cYY_0.0006':['ALP_Z_aa_0.316.GeV_cYY_0.0006'], + # 'ALP_Z_aa_0.316.GeV_cYY_0.006':['ALP_Z_aa_0.316.GeV_cYY_0.006'], + # 'ALP_Z_aa_0.316.GeV_cYY_0.06':['ALP_Z_aa_0.316.GeV_cYY_0.06'], + # 'ALP_Z_aa_0.316.GeV_cYY_0.6':['ALP_Z_aa_0.316.GeV_cYY_0.6'], + + # 'ALP_Z_aa_1GeV_cYY_0p5':['ALP_Z_aa_1GeV_cYY_0p5'], + + # 'ALP_Z_aa_0.1GeV_cYY_0.1':['ALP_Z_aa_0.1GeV_cYY_0.1'], + # 'ALP_Z_aa_0.2GeV_cYY_0.1':['ALP_Z_aa_0.2GeV_cYY_0.1'], + # 'ALP_Z_aa_0.135GeV_cYY_0.1':['ALP_Z_aa_0.135GeV_cYY_0.1'], + # 'ALP_Z_aa_0.3GeV_cYY_0.1':['ALP_Z_aa_0.3GeV_cYY_0.1'], + + # 'ALP_Z_aa_1.GeV_cYY_0.1':['ALP_Z_aa_1.GeV_cYY_0.1'], + # 'ALP_Z_aa_1.GeV_cYY_0.3':['ALP_Z_aa_1.GeV_cYY_0.3'], + # 'ALP_Z_aa_1.GeV_cYY_0.5':['ALP_Z_aa_1.GeV_cYY_0.5'], + # 'ALP_Z_aa_1.GeV_cYY_0.7':['ALP_Z_aa_1.GeV_cYY_0.7'], + # 'ALP_Z_aa_1.GeV_cYY_0.9':['ALP_Z_aa_1.GeV_cYY_0.9'], + + # 'ALP_Z_aa_0.5.GeV_cYY_0.6':['ALP_Z_aa_0.5.GeV_cYY_0.6'], + # 'ALP_Z_aa_0.5.GeV_cYY_1.2':['ALP_Z_aa_0.5.GeV_cYY_1.2'], + + # 'ALP_Z_aa_1.GeV_cYY_0.6':['ALP_Z_aa_1.GeV_cYY_0.6'], + # 'ALP_Z_aa_1.GeV_cYY_0.8':['ALP_Z_aa_1.GeV_cYY_0.8'], + # 'ALP_Z_aa_1.GeV_cYY_1.0':['ALP_Z_aa_1.GeV_cYY_1.0'], + # 'ALP_Z_aa_1.GeV_cYY_1.2':['ALP_Z_aa_1.GeV_cYY_1.2'], + # 'ALP_Z_aa_1.GeV_cYY_1.4':['ALP_Z_aa_1.GeV_cYY_1.4'], + + # 'ALP_Z_aa_0.5.GeV_cYY_1.0':['ALP_Z_aa_0.5.GeV_cYY_1.0'], + # 'ALP_Z_aa_1.GeV_cYY_1.0':['ALP_Z_aa_1.GeV_cYY_1.0'], + # 'ALP_Z_aa_1.5.GeV_cYY_1.0':['ALP_Z_aa_1.5.GeV_cYY_1.0'], + # 'ALP_Z_aa_2.GeV_cYY_1.0':['ALP_Z_aa_2.GeV_cYY_1.0'], + # 'ALP_Z_aa_3.GeV_cYY_1.0':['ALP_Z_aa_3.GeV_cYY_1.0'], + # 'ALP_Z_aa_4.GeV_cYY_1.0':['ALP_Z_aa_4.GeV_cYY_1.0'], + # 'ALP_Z_aa_5.GeV_cYY_1.0':['ALP_Z_aa_5.GeV_cYY_1.0'], + # 'ALP_Z_aa_8.GeV_cYY_1.0':['ALP_Z_aa_8.GeV_cYY_1.0'], + + 'ALP_Z_aa_0.6.GeV_cYY_1.0':['ALP_Z_aa_0.6.GeV_cYY_1.0'], + 'ALP_Z_aa_0.8.GeV_cYY_1.0':['ALP_Z_aa_0.8.GeV_cYY_1.0'], + 'ALP_Z_aa_1.GeV_cYY_1.0':['ALP_Z_aa_1.GeV_cYY_1.0'], + 'ALP_Z_aa_1.2.GeV_cYY_1.0':['ALP_Z_aa_1.2.GeV_cYY_1.0'], + 'ALP_Z_aa_1.4.GeV_cYY_1.0':['ALP_Z_aa_1.4.GeV_cYY_1.0'], + + # 'ALP_Z_aa_3.GeV_cYY_0.1':['ALP_Z_aa_3.GeV_cYY_0.1'], + # 'ALP_Z_aa_3.GeV_cYY_0.3':['ALP_Z_aa_3.GeV_cYY_0.3'], + # 'ALP_Z_aa_3.GeV_cYY_0.5':['ALP_Z_aa_3.GeV_cYY_0.5'], + # 'ALP_Z_aa_3.GeV_cYY_0.7':['ALP_Z_aa_3.GeV_cYY_0.7'], + # 'ALP_Z_aa_3.GeV_cYY_0.9':['ALP_Z_aa_3.GeV_cYY_0.9'], + + # 'ALP_Z_aa_5.GeV_cYY_0.1':['ALP_Z_aa_5.GeV_cYY_0.1'], + # 'ALP_Z_aa_5.GeV_cYY_0.3':['ALP_Z_aa_5.GeV_cYY_0.3'], + # 'ALP_Z_aa_5.GeV_cYY_0.5':['ALP_Z_aa_5.GeV_cYY_0.5'], + # 'ALP_Z_aa_5.GeV_cYY_0.7':['ALP_Z_aa_5.GeV_cYY_0.7'], + # 'ALP_Z_aa_5.GeV_cYY_0.9':['ALP_Z_aa_5.GeV_cYY_0.9'], + + # 'ALP_Z_aa_0.5GeV_cYY_0.5':['ALP_Z_aa_0.5GeV_cYY_0.5'], + # 'ALP_Z_aa_0.7GeV_cYY_0.5':['ALP_Z_aa_0.7GeV_cYY_0.5'], + # 'ALP_Z_aa_1.GeV_cYY_0.5':['ALP_Z_aa_1.GeV_cYY_0.5'], + # 'ALP_Z_aa_3.GeV_cYY_0.5':['ALP_Z_aa_3.GeV_cYY_0.5'], + # 'ALP_Z_aa_5.GeV_cYY_0.5':['ALP_Z_aa_5.GeV_cYY_0.5'], + # 'ALP_Z_aa_7.GeV_cYY_0.5':['ALP_Z_aa_7.GeV_cYY_0.5'], + # 'ALP_Z_aa_10.GeV_cYY_0.5':['ALP_Z_aa_10.GeV_cYY_0.5'], + # 'ALP_Z_aa_15.GeV_cYY_0.5':['ALP_Z_aa_15.GeV_cYY_0.5'], + # 'ALP_Z_aa_20.GeV_cYY_0.5':['ALP_Z_aa_20.GeV_cYY_0.5'], + # 'ALP_Z_aa_25.GeV_cYY_0.5':['ALP_Z_aa_25.GeV_cYY_0.5'], + # 'ALP_Z_aa_30.GeV_cYY_0.5':['ALP_Z_aa_30.GeV_cYY_0.5'], + + # 'ee_Z_ALPga_gagaga':['ee_Z_ALPga_gagaga'], + }, + 'backgrounds':{ + # 'p8_ee_Zee_ecm91':['p8_ee_Zee_ecm91'], + # 'ee_gaga_1million':['ee_gaga_1million'], + # 'test1':['test1'], + # 'test4':['test4'], + # 'ee_gammagamma':['ee_gammagamma'], + # 'ee_gaga_test':['ee_gaga_test'], + # 'ee_aa':['ee_aa'], + # 'ee_aaa':['ee_aaa'], + # 'ee_aaaa':['ee_aaaa'], + }, } legend = {} -legend['ALP_Z_aa_1GeV_cYY_0p5'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.5' -#legend['Zee'] = 'e^{+}e^{-} #rightarrow Z #rightarrow ee' +# legend['ALP_Z_aa_0.316.GeV_cYY_0.00006'] = 'm_{ALP} = 0.316 GeV, c_{YY} = 0.00006' +# legend['ALP_Z_aa_0.316.GeV_cYY_0.0006'] = 'm_{ALP} = 0.316 GeV, c_{YY} = 0.0006' +# legend['ALP_Z_aa_0.316.GeV_cYY_0.006'] = 'm_{ALP} = 0.316 GeV, c_{YY} = 0.006' +# legend['ALP_Z_aa_0.316.GeV_cYY_0.06'] = 'm_{ALP} = 0.316 GeV, c_{YY} = 0.06' +# legend['ALP_Z_aa_0.316.GeV_cYY_0.6'] = 'm_{ALP} = 0.316 GeV, c_{YY} = 0.6' + +# legend['ALP_Z_aa_1GeV_cYY_0p5'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.5' + +# legend['ALP_Z_aa_0.1GeV_cYY_0.1'] = 'm_{ALP} = 0.1 GeV, c_{YY} = 0.1' +# legend['ALP_Z_aa_0.2GeV_cYY_0.1'] = 'm_{ALP} = 0.2 GeV, c_{YY} = 0.1' +# legend['ALP_Z_aa_0.135GeV_cYY_0.1'] = 'm_{ALP} = 0.135 GeV, c_{YY} = 0.1' +# legend['ALP_Z_aa_0.3GeV_cYY_0.1'] = 'm_{ALP} = 0.3 GeV, c_{YY} = 0.1' + +# legend['ALP_Z_aa_1.GeV_cYY_0.1'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.1' +# legend['ALP_Z_aa_1.GeV_cYY_0.3'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.3' +# legend['ALP_Z_aa_1.GeV_cYY_0.5'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_1.GeV_cYY_0.7'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.7' +# legend['ALP_Z_aa_1.GeV_cYY_0.9'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.9' + +# legend['ALP_Z_aa_0.5.GeV_cYY_0.6'] = 'm_{ALP} = 0.5 GeV, c_{#gamma#gamma} = 0.6' +# legend['ALP_Z_aa_0.5.GeV_cYY_1.2'] = 'm_{ALP} = 0.5 GeV, c_{#gamma#gamma} = 1.2' + +# legend['ALP_Z_aa_1.GeV_cYY_0.6'] = 'm_{ALP} = 1 GeV, c_{#gamma#gamma} = 0.6' +# legend['ALP_Z_aa_1.GeV_cYY_0.8'] = 'm_{ALP} = 1 GeV, c_{#gamma#gamma} = 0.8' +# legend['ALP_Z_aa_1.GeV_cYY_1.0'] = 'm_{ALP} = 1 GeV, c_{#gamma#gamma} = 1.0' +# legend['ALP_Z_aa_1.GeV_cYY_1.2'] = 'm_{ALP} = 1 GeV, c_{#gamma#gamma} = 1.2' +# legend['ALP_Z_aa_1.GeV_cYY_1.4'] = 'm_{ALP} = 1 GeV, c_{#gamma#gamma} = 1.4' + +# legend['ALP_Z_aa_0.5.GeV_cYY_1.0'] = 'm_{ALP} = 0.5 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_1.GeV_cYY_1.0'] = 'm_{ALP} = 1 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_1.5.GeV_cYY_1.0'] = 'm_{ALP} = 1.5 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_2.GeV_cYY_1.0'] = 'm_{ALP} = 2 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_3.GeV_cYY_1.0'] = 'm_{ALP} = 3 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_4.GeV_cYY_1.0'] = 'm_{ALP} = 4 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_5.GeV_cYY_1.0'] = 'm_{ALP} = 5 GeV, c_{YY} = 1.0' +# legend['ALP_Z_aa_8.GeV_cYY_1.0'] = 'm_{ALP} = 8 GeV, c_{YY} = 1.0' + +legend['ALP_Z_aa_0.6.GeV_cYY_1.0'] = 'm_{ALP} = 0.6 GeV, c_{#gamma#gamma} = 1.0' +legend['ALP_Z_aa_0.8.GeV_cYY_1.0'] = 'm_{ALP} = 0.8 GeV, c_{#gamma#gamma} = 1.0' +legend['ALP_Z_aa_1.GeV_cYY_1.0'] = 'm_{ALP} = 1 GeV, c_{#gamma#gamma} = 1.0' +legend['ALP_Z_aa_1.2.GeV_cYY_1.0'] = 'm_{ALP} = 1.2 GeV, c_{#gamma#gamma} = 1.0' +legend['ALP_Z_aa_1.4.GeV_cYY_1.0'] = 'm_{ALP} = 1.4 GeV, c_{#gamma#gamma} = 1.0' + +# legend['ALP_Z_aa_3.GeV_cYY_0.1'] = 'm_{ALP} = 3 GeV, c_{YY} = 0.1' +# legend['ALP_Z_aa_3.GeV_cYY_0.3'] = 'm_{ALP} = 3 GeV, c_{YY} = 0.3' +# legend['ALP_Z_aa_3.GeV_cYY_0.5'] = 'm_{ALP} = 3 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_3.GeV_cYY_0.7'] = 'm_{ALP} = 3 GeV, c_{YY} = 0.7' +# legend['ALP_Z_aa_3.GeV_cYY_0.9'] = 'm_{ALP} = 3 GeV, c_{YY} = 0.9' + +# legend['ALP_Z_aa_5.GeV_cYY_0.1'] = 'm_{ALP} = 5 GeV, c_{YY} = 0.1' +# legend['ALP_Z_aa_5.GeV_cYY_0.3'] = 'm_{ALP} = 5 GeV, c_{YY} = 0.3' +# legend['ALP_Z_aa_5.GeV_cYY_0.5'] = 'm_{ALP} = 5 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_5.GeV_cYY_0.7'] = 'm_{ALP} = 5 GeV, c_{YY} = 0.7' +# legend['ALP_Z_aa_5.GeV_cYY_0.9'] = 'm_{ALP} = 5 GeV, c_{YY} = 0.9' + +# legend['ALP_Z_aa_0.5GeV_cYY_0.5'] = 'm_{ALP} = 0.5 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_0.7GeV_cYY_0.5'] = 'm_{ALP} = 0.7 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_1.GeV_cYY_0.5'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_3.GeV_cYY_0.5'] = 'm_{ALP} = 3 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_5.GeV_cYY_0.5'] = 'm_{ALP} = 5 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_7.GeV_cYY_0.5'] = 'm_{ALP} = 7 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_10.GeV_cYY_0.5'] = 'm_{ALP} = 10 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_15.GeV_cYY_0.5'] = 'm_{ALP} = 15 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_20.GeV_cYY_0.5'] = 'm_{ALP} = 20 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_25.GeV_cYY_0.5'] = 'm_{ALP} = 25 GeV, c_{YY} = 0.5' +# legend['ALP_Z_aa_30.GeV_cYY_0.5'] = 'm_{ALP} = 30 GeV, c_{YY} = 0.5' + +# legend['ee_Z_ALPga_gagaga'] = 'm_{ALP} = 1 GeV, c_{YY} = 0.5' + +# legend['p8_ee_Zee_ecm91'] = 'e^{+}e^{-} #rightarrow Z #rightarrow ee' +# legend['ee_gaga_1million'] = 'e^{+}e^{-} #rightarrow YY' +# legend['test1'] = 'e^{+}e^{-} #rightarrow YY' +# legend['test4'] = 'e^{+}e^{-} #rightarrow YYY' +# legend['ee_gammagamma'] = 'e^{+}e^{-} #rightarrow YY (spring2021)' +# legend['ee_gaga_test'] = 'e^{+}e^{-} #rightarrow YY' +# legend['ee_aa'] = 'e^{+}e^{-} #rightarrow #gamma#gamma' +# legend['ee_aaa'] = 'e^{+}e^{-} #rightarrow #gamma#gamma#gamma' +# legend['ee_aaaa'] = 'e^{+}e^{-} #rightarrow #gamma#gamma#gamma#gamma' diff --git a/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1.py b/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1.py index 611460383d..bd89620ed7 100644 --- a/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1.py +++ b/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1.py @@ -2,10 +2,44 @@ processList = { #centrally-produced backgrounds - #'p8_ee_Zee_ecm91':{'chunks':100}, + # 'p8_ee_Zee_ecm91':{'chunks':100}, + 'ee_gammagamma':{}, + # 'wzp6_gaga_ee_60_ecm240':{'chunks':100}, #privately-produced signals - 'ALP_Z_aa_1GeV_cYY_0p5':{}, + # 'ALP_Z_aa_1GeV_cYY_0p5':{}, + + # 'testing1':{}, + + # 'ALP_Z_aa_1.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.3':{}, + 'ALP_Z_aa_1.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_3.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_5.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_0.5GeV_cYY_0.5':{}, + # 'ALP_Z_aa_0.7GeV_cYY_0.5':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_7.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_15.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_20.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_25.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_30.GeV_cYY_0.5':{}, #test #'p8_ee_Zee_ecm91':{'fraction':0.000001}, @@ -19,11 +53,15 @@ #Input directory #Comment out when running over centrally produced events #Mandatory when running over privately produced events -inputDir = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_MadgraphPythiaDelphes" - +# inputDir = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_MadgraphPythiaDelphes/" +# inputDir = "./root_files_for_input/" +# inputDir = "/eos/experiment/fcc/ee/generation/DelphesEvents/winter2023/IDEA/wzp6_gaga_ee_60_ecm240/" +# inputDir = "./ALP_sample_creation/" +inputDir = "/eos/experiment/fcc/ee/analyses_storage/BSM/LLPs/ALPs_3photons/ALP_sample_creation/" #Optional: output directory, default is local dir -outputDir = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_stage1/" +outputDir = "./stage1_mine_vs_spring2021/" +# outputDir = "./stage1_FSGenALP/" #outputDir = "/eos/user/j/jalimena/FCCeeLLP/" #outputDir = "output_stage1/" @@ -51,25 +89,26 @@ def analysers(df): df2 = (df #Access the various objects and their properties with the following syntax: .Define("", "") - #This will create a column in the RDataFrame named and filled with the return value of the for the given collection/object - #Accessor functions are the functions found in the C++ analyzers code that return a certain variable, e.g. ::get_n(object) returns the number + #This will create a column in the RDataFrame named and filled with the return value of the for the given collection/object + #Accessor functions are the functions found in the C++ analyzers code that return a certain variable, e.g. ::get_n(object) returns the number #of these objects in the event and ::get_pt(object) returns the pt of the object. Here you can pick between two namespaces to access either - #reconstructed (namespace = ReconstructedParticle) or MC-level objects (namespace = MCParticle). + #reconstructed (namespace = ReconstructedParticle) or MC-level objects (namespace = MCParticle). #For the name of the object, in principle the names of the EDM4HEP collections are used - photons, muons and electrons are an exception, see below #OVERVIEW: Accessing different objects and counting them - + # Following code is written specifically for the ALP study #################################################################################################### .Alias("Particle1", "Particle#1.index") .Alias("MCRecoAssociations0", "MCRecoAssociations#0.index") .Alias("MCRecoAssociations1", "MCRecoAssociations#1.index") - + ##### Added branch for MCParticle; finding PID of the MC particle for ALP .Define("GenALP_PID", "MCParticle::sel_pdgID(9000005, false)(Particle)") .Define("GenALP_decay", "MCParticle::get_list_of_particles_from_decay(0, GenALP_PID, Particle1)") .Define("All_n_GenALP", "MCParticle::get_n(GenALP_PID)") + .Define("AllGenALP_mass", "MCParticle::get_mass(GenALP_PID)") #finding the generator mass of the ALP through separate ALP branch .Define("AllGenALP_e", "MCParticle::get_e(GenALP_PID)") .Define("AllGenALP_p", "MCParticle::get_p(GenALP_PID)") @@ -173,24 +212,24 @@ def analysers(df): # Separating the three first final state photons # Returns -2 if the number of final state photons != 2, and therefore will be shown as -2 in the plots - # .Define("FSGenPhoton0_e", "return FSGenPhoton_e.at(0)") - # .Define("FSGenPhoton1_e", "if (n_FSGenPhoton > 2) {return FSGenPhoton_e.at(1);} else {return (-2.0f); }") - # .Define("FSGenPhoton2_e", "if (n_FSGenPhoton > 3) {return FSGenPhoton_e.at(2);} else {return (-2.0f); }") - # .Define("FSGenPhoton0_p", "return FSGenPhoton_p.at(0)") - # .Define("FSGenPhoton1_p", "if (n_FSGenPhoton > 2) {return FSGenPhoton_p.at(1);} else {return (-2.0f); }") - # .Define("FSGenPhoton2_p", "if (n_FSGenPhoton > 2) {return FSGenPhoton_p.at(2);} else {return (-2.0f); }") - # .Define("FSGenPhoton0_pt", "return FSGenPhoton_pt.at(0)") - # .Define("FSGenPhoton1_pt", "if (n_FSGenPhoton > 2) {return FSGenPhoton_pt.at(1);} else {return (-2.0f); }") - # .Define("FSGenPhoton2_pt", "if (n_FSGenPhoton > 3) {return FSGenPhoton_pt.at(2);} else {return (-2.0f); }") - # .Define("FSGenPhoton0_px", "return FSGenPhoton_px.at(0)") - # .Define("FSGenPhoton1_px", "if (n_FSGenPhoton > 2) {return FSGenPhoton_px.at(1);} else {return (-2.0f); }") - # .Define("FSGenPhoton2_px", "if (n_FSGenPhoton > 3) {return FSGenPhoton_px.at(2);} else {return (-2.0f); }") - # .Define("FSGenPhoton0_py", "return FSGenPhoton_py.at(0)") - # .Define("FSGenPhoton1_py", "if (n_FSGenPhoton > 2) {return FSGenPhoton_py.at(1);} else {return (-2.0f); }") - # .Define("FSGenPhoton2_py", "if (n_FSGenPhoton > 3) {return FSGenPhoton_py.at(2);} else {return (-2.0f); }") - # .Define("FSGenPhoton0_pz", "return FSGenPhoton_pz.at(0)") - # .Define("FSGenPhoton1_pz", "if (n_FSGenPhoton > 2) {return FSGenPhoton_pz.at(1);} else {return (-2.0f); }") - # .Define("FSGenPhoton2_pz", "if (n_FSGenPhoton > 3) {return FSGenPhoton_pz.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_e", "return FSGenPhoton_e.at(0)") + .Define("FSGenPhoton1_e", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_e.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_e", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_e.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_p", "return FSGenPhoton_p.at(0)") + .Define("FSGenPhoton1_p", "if (n_FSGenPhoton > 2) {return FSGenPhoton_p.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_p", "if (n_FSGenPhoton > 2) {return FSGenPhoton_p.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_pt", "return FSGenPhoton_pt.at(0)") + .Define("FSGenPhoton1_pt", "if (n_FSGenPhoton > 2) {return FSGenPhoton_pt.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_pt", "if (n_FSGenPhoton > 3) {return FSGenPhoton_pt.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_px", "return FSGenPhoton_px.at(0)") + .Define("FSGenPhoton1_px", "if (n_FSGenPhoton > 2) {return FSGenPhoton_px.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_px", "if (n_FSGenPhoton > 3) {return FSGenPhoton_px.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_py", "return FSGenPhoton_py.at(0)") + .Define("FSGenPhoton1_py", "if (n_FSGenPhoton > 2) {return FSGenPhoton_py.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_py", "if (n_FSGenPhoton > 3) {return FSGenPhoton_py.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_pz", "return FSGenPhoton_pz.at(0)") + .Define("FSGenPhoton1_pz", "if (n_FSGenPhoton > 2) {return FSGenPhoton_pz.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_pz", "if (n_FSGenPhoton > 3) {return FSGenPhoton_pz.at(2);} else {return (-2.0f); }") # aa invariant mass - for all three combinations of the three first FS photons # returns -2 for events with only 1 number of photons @@ -223,12 +262,30 @@ def analysers(df): # Defining a vector containing the ALP and its daughters in order written # Name of vector is ALP_indices .Define("GenALP_indices", "MCParticle::get_indices(9000005, {22, 22}, true, false, false, true)(Particle, Particle1)") - + # Defining the individual particles from the vector .Define("GenALP", "myUtils::selMC_leg(0)(GenALP_indices, Particle)") .Define("GenALPPhoton1", "myUtils::selMC_leg(1)(GenALP_indices, Particle)") .Define("GenALPPhoton2", "myUtils::selMC_leg(2)(GenALP_indices, Particle)") + # Defining final state ALPs to get rid of duplicates + .Define("FSGenALP", "MCParticle::sel_genStatus(1)(GenALP_PID)") + + .Define("n_FSGenALP", "MCParticle::get_n( FSGenALP )") + + # Kinematics of final state ALP (attempt Merlin) + .Define("FSGenALP_mass", "MCParticle::get_mass( FSGenALP )") + .Define("FSGenALP_e", "MCParticle::get_e( FSGenALP )") + .Define("FSGenALP_p", "MCParticle::get_p( FSGenALP )") + .Define("FSGenALP_pt", "MCParticle::get_pt( FSGenALP )") + .Define("FSGenALP_px", "MCParticle::get_px( FSGenALP )") + .Define("FSGenALP_py", "MCParticle::get_py( FSGenALP )") + .Define("FSGenALP_pz", "MCParticle::get_pz( FSGenALP )") + .Define("FSGenALP_eta", "MCParticle::get_eta( FSGenALP )") + .Define("FSGenALP_theta", "MCParticle::get_theta( FSGenALP )") + .Define("FSGenALP_phi", "MCParticle::get_phi( FSGenALP )") + .Define("FSGenALP_genStatus", "MCParticle::get_genStatus( FSGenALP )") + # Kinematics of the mother particle ALP .Define("GenALP_mass", "MCParticle::get_mass( GenALP )") .Define("GenALP_e", "MCParticle::get_e( GenALP )") @@ -242,7 +299,17 @@ def analysers(df): .Define("GenALP_phi", "MCParticle::get_phi( GenALP )") .Define("GenALP_genStatus", "MCParticle::get_genStatus( GenALP )") + .Define("n_GenALP", "MCParticle::get_n( GenALP )") + .Define("GenALP_time", "MCParticle::get_time( GenALP )") + .Define("GenALP_pdg", "MCParticle::get_pdg( GenALP )") + .Define("GenALP_endPoint_x", "MCParticle::get_endPoint_x") + + # .Define("GenALP_deltaR", "return sqrt(GenALP_eta*GenALP_eta + GenALP_phi*GenALP_phi)") + # Finding the kinematics of each of these daughters + .Define("n_GenALPPhoton1", "MCParticle::get_n( GenALPPhoton1 )") + .Define("n_GenALPPhoton2", "MCParticle::get_n( GenALPPhoton2 )") + .Define("GenALPPhoton1_e", "MCParticle::get_e( GenALPPhoton1 )") .Define("GenALPPhoton2_e", "MCParticle::get_e( GenALPPhoton2 )") .Define("GenALPPhoton1_p", "MCParticle::get_p( GenALPPhoton1 )") @@ -264,23 +331,41 @@ def analysers(df): .Define("GenALPPhoton1_genStatus", "MCParticle::get_genStatus( GenALPPhoton1 )") .Define("GenALPPhoton2_genStatus", "MCParticle::get_genStatus( GenALPPhoton2 )") + .Define("GenALPPhotons_deltaEta", "return abs(GenALPPhoton1_eta - GenALPPhoton2_eta)") + .Define("GenALPPhotons_deltaPhi", "return abs(GenALPPhoton1_phi - GenALPPhoton2_phi)") + .Define("GenALPPhotons_deltaR", "return sqrt(GenALPPhotons_deltaEta*GenALPPhotons_deltaEta + GenALPPhotons_deltaPhi*GenALPPhotons_deltaPhi)") + + # .Define("GenALPPhotons_deltaR_2", "MCParticle::get_ALP_delta_r(GenALPPhoton1, GenALPPhoton2)") + .Define("FSGenPhotons_delta_r", "MCParticle::get_delta_r(FSGenPhoton)") + + .Define("GenALPPhoton1_time", "MCParticle::get_time( GenALPPhoton1 )") + .Define("GenALPPhoton2_time", "MCParticle::get_time( GenALPPhoton2 )") + + # .Define("GenALPPhoton1_deltaR", "return sqrt(GenALPPhoton1_eta*GenALPPhoton1_eta + GenALPPhoton1_phi*GenALPPhoton1_phi)") + # .Define("GenALPPhoton2_deltaR", "return sqrt(GenALPPhoton2_eta*GenALPPhoton2_eta + GenALPPhoton2_phi*GenALPPhoton2_phi)") + + # Finding the production vertex of the daughters (checking GenALPPhoton1 here) .Define("GenALPPhoton1_vertex_x", "MCParticle::get_vertex_x( GenALPPhoton1 )") .Define("GenALPPhoton1_vertex_y", "MCParticle::get_vertex_y( GenALPPhoton1 )") .Define("GenALPPhoton1_vertex_z", "MCParticle::get_vertex_z( GenALPPhoton1 )") # Finding the Lxy of the ALP - # Definition: Lxy = math.sqrt( (branchGenPtcl.At(daut1).X)**2 + (branchGenPtcl.At(daut1).Y)**2 ) + # Definition: Lxy = math.sqrt( (branchGenPtcl.At(daut1).X)**2 + (branchGenPtcl.At(daut1).Y)**2 ) .Define("GenALP_Lxy", "return sqrt(GenALPPhoton1_vertex_x*GenALPPhoton1_vertex_x + GenALPPhoton1_vertex_y*GenALPPhoton1_vertex_y)") # Finding the Lxyz of the ALP .Define("GenALP_Lxyz", "return sqrt(GenALPPhoton1_vertex_x*GenALPPhoton1_vertex_x + GenALPPhoton1_vertex_y*GenALPPhoton1_vertex_y + GenALPPhoton1_vertex_z*GenALPPhoton1_vertex_z)") - + # Calculating the lifetime of the ALP # Definition: t = Lxy * branchGenPtcl.At(i).Mass / (branchGenPtcl.At(i).PT * 1000 * 3E8) .Define("GenALP_lifetime_xy", "return ( GenALP_Lxy * GenALP_mass / (GenALP_pt * 3E8 * 1000))" ) .Define("GenALP_lifetime_xyz", "return ( GenALP_Lxyz * GenALP_mass / (GenALP_p * 3E8 * 1000))" ) - - # Finding the production vertex of the ALP which should be at (0,0,0) + + .Define("GenALP_observed_lifetime_xyz", "return ((GenALP_p / GenALP_mass) * GenALP_lifetime_xyz)") + + .Define("GenALPPhoton1_time_minus_GenALP_time", "return (GenALPPhoton1_time - GenALP_time)") + + # Finding the production vertex of the ALP which should be at (0,0,0) .Define("GenALP_vertex_x", "MCParticle::get_vertex_x(GenALP_PID)") .Define("GenALP_vertex_y", "MCParticle::get_vertex_y(GenALP_PID)") .Define("GenALP_vertex_z", "MCParticle::get_vertex_z(GenALP_PID)") @@ -315,12 +400,12 @@ def analysers(df): # from which we extract the edm4hep::VertexData object, which contains the vertex position in mm .Define("RecoALPDecayVertex", "VertexingUtils::get_VertexData( RecoALPDecayVertexObject )") - + # We may want to look at the reco'ed ALPs legs: in the RecoALPParticles vector, # the first particle (vector[0]) is the e-, etc : .Define("RecoALPPhoton1", "myUtils::selRP_leg(0)( RecoALPParticles )") .Define("RecoALPPhoton2", "myUtils::selRP_leg(1)( RecoALPParticles )") - + # reconstruced electron, positron values .Define("RecoALPPhoton1_e", "ReconstructedParticle::get_e( RecoALPPhoton1 )") .Define("RecoALPPhoton2_e", "ReconstructedParticle::get_e( RecoALPPhoton2 )") @@ -342,6 +427,15 @@ def analysers(df): .Define("RecoALPPhoton2_phi", "ReconstructedParticle::get_phi( RecoALPPhoton2 )") .Define("RecoALPPhoton1_charge", "ReconstructedParticle::get_charge( RecoALPPhoton1 )") .Define("RecoALPPhoton2_charge", "ReconstructedParticle::get_charge( RecoALPPhoton2 )") + + .Define("RecoALPPhotons_deltaEta", "return abs(RecoALPPhoton1_eta - RecoALPPhoton2_eta)") + .Define("RecoALPPhotons_deltaPhi", "return abs(RecoALPPhoton1_phi - RecoALPPhoton2_phi)") + .Define("RecoALPPhotons_deltaR", "return sqrt(RecoALPPhotons_deltaEta*RecoALPPhotons_deltaEta + RecoALPPhotons_deltaPhi*RecoALPPhotons_deltaPhi)") + + .Define("n_RecoALPPhoton1", "ReconstructedParticle::get_n( RecoALPPhoton1 )") + .Define("n_RecoALPPhoton2", "ReconstructedParticle::get_n( RecoALPPhoton2 )") + # .Define("RecoALPPhoton1_time", "ReconstructedParticle::get_time( RecoALPPhoton1 )") + # .Define("RecoALPPhoton2_time", "ReconstructedParticle::get_time( RecoALPPhoton2 )") # add dxy, dz, dxyz, and uncertainties # aa invariant mass @@ -374,8 +468,8 @@ def analysers(df): .Define("GenMinusRecoALP_DecayVertex_x", "GenALPPhoton1_vertex_x-RecoALPDecayVertex.position.x") .Define("GenMinusRecoALP_DecayVertex_y", "GenALPPhoton1_vertex_y-RecoALPDecayVertex.position.y") .Define("GenMinusRecoALP_DecayVertex_z", "GenALPPhoton1_vertex_z-RecoALPDecayVertex.position.z") - - + + #################################################################################################### # From here the general study begins @@ -383,7 +477,7 @@ def analysers(df): .Define("n_RecoJets", "ReconstructedParticle::get_n(Jet)") #count how many jets are in the event in total #PHOTONS - .Alias("Photon0", "Photon#0.index") + .Alias("Photon0", "Photon#0.index") .Define("RecoPhotons", "ReconstructedParticle::get(Photon0, ReconstructedParticles)") .Define("n_RecoPhotons", "ReconstructedParticle::get_n(RecoPhotons)") #count how many photons are in the event in total @@ -442,6 +536,17 @@ def analysers(df): .Define("RecoPhoton_phi", "ReconstructedParticle::get_phi(RecoPhotons)") #polar angle in the transverse plane phi .Define("RecoPhoton_charge", "ReconstructedParticle::get_charge(RecoPhotons)") + .Define("RecoPhotons_delta_eta", "ReconstructedParticle::get_delta_eta(RecoPhotons)") + .Define("RecoPhotons_delta_phi", "ReconstructedParticle::get_delta_phi(RecoPhotons)") + .Define("RecoPhotons_delta_r", "ReconstructedParticle::get_delta_r(RecoPhotons)") + + # .Define("RecoPhotons_ALP_delta_r", "ReconstructedParticle::get_ALP_delta_r(RecoALPPhoton1, RecoALPPhoton2)") + # .Define("RecoPhotons_ALP_delta_phi", "ReconstructedParticle::get_ALP_delta_phi(RecoALPPhoton1, RecoALPPhoton2)") + # .Define("RecoPhotons_ALP_delta_eta", "ReconstructedParticle::get_ALP_delta_eta(RecoALPPhoton1, RecoALPPhoton2)") + + .Define("RecoPhoton_y", "ReconstructedParticle::get_y(RecoPhotons)") + # .Define("RecoPhoton_time", "ReconstructedParticle::get_time(RecoPhotons)") + .Define("RecoMuon_e", "ReconstructedParticle::get_e(RecoMuons)") .Define("RecoMuon_p", "ReconstructedParticle::get_p(RecoMuons)") .Define("RecoMuon_pt", "ReconstructedParticle::get_pt(RecoMuons)") @@ -484,54 +589,54 @@ def output(): "AllGenALP_phi", "AllGenALP_genStatus", "n_FSGenElectron", - "FSGenElectron_e", - "FSGenElectron_p", - "FSGenElectron_pt", - "FSGenElectron_px", - "FSGenElectron_py", - "FSGenElectron_pz", - "FSGenElectron_eta", - "FSGenElectron_theta", - "FSGenElectron_phi", + # "FSGenElectron_e", + # "FSGenElectron_p", + # "FSGenElectron_pt", + # "FSGenElectron_px", + # "FSGenElectron_py", + # "FSGenElectron_pz", + # "FSGenElectron_eta", + # "FSGenElectron_theta", + # "FSGenElectron_phi", "FSGenPhoton_vertex_x", "FSGenPhoton_vertex_y", "FSGenPhoton_vertex_z", - # "n_FSGenElectron_forFS2GenPhotons", - # "n_FSGenPositron_forFS2GenPhotons", - "FSGen_Lxy", - "FSGen_Lxyz", - "FSGen_lifetime_xy", - "FSGen_lifetime_xyz", - "n_FSGenPositron", - "FSGenPositron_e", - "FSGenPositron_p", - "FSGenPositron_pt", - "FSGenPositron_px", - "FSGenPositron_py", - "FSGenPositron_pz", - "FSGenPositron_eta", - "FSGenPositron_theta", - "FSGenPositron_phi", - "n_FSGenNeutrino", - "FSGenNeutrino_e", - "FSGenNeutrino_p", - "FSGenNeutrino_pt", - "FSGenNeutrino_px", - "FSGenNeutrino_py", - "FSGenNeutrino_pz", - "FSGenNeutrino_eta", - "FSGenNeutrino_theta", - "FSGenNeutrino_phi", - "n_FSGenAntiNeutrino", - "FSGenAntiNeutrino_e", - "FSGenAntiNeutrino_p", - "FSGenAntiNeutrino_pt", - "FSGenAntiNeutrino_px", - "FSGenAntiNeutrino_py", - "FSGenAntiNeutrino_pz", - "FSGenAntiNeutrino_eta", - "FSGenAntiNeutrino_theta", - "FSGenAntiNeutrino_phi", + # # "n_FSGenElectron_forFS2GenPhotons", + # # "n_FSGenPositron_forFS2GenPhotons", + # "FSGen_Lxy", + # "FSGen_Lxyz", + # "FSGen_lifetime_xy", + # "FSGen_lifetime_xyz", + # "n_FSGenPositron", + # "FSGenPositron_e", + # "FSGenPositron_p", + # "FSGenPositron_pt", + # "FSGenPositron_px", + # "FSGenPositron_py", + # "FSGenPositron_pz", + # "FSGenPositron_eta", + # "FSGenPositron_theta", + # "FSGenPositron_phi", + # "n_FSGenNeutrino", + # "FSGenNeutrino_e", + # "FSGenNeutrino_p", + # "FSGenNeutrino_pt", + # "FSGenNeutrino_px", + # "FSGenNeutrino_py", + # "FSGenNeutrino_pz", + # "FSGenNeutrino_eta", + # "FSGenNeutrino_theta", + # "FSGenNeutrino_phi", + # "n_FSGenAntiNeutrino", + # "FSGenAntiNeutrino_e", + # "FSGenAntiNeutrino_p", + # "FSGenAntiNeutrino_pt", + # "FSGenAntiNeutrino_px", + # "FSGenAntiNeutrino_py", + # "FSGenAntiNeutrino_pz", + # "FSGenAntiNeutrino_eta", + # "FSGenAntiNeutrino_theta", + # "FSGenAntiNeutrino_phi", "n_FSGenPhoton", "FSGenPhoton_e", "FSGenPhoton_p", @@ -542,15 +647,25 @@ def output(): "FSGenPhoton_eta", "FSGenPhoton_theta", "FSGenPhoton_phi", - # "FSGenPhoton0_e", - # "FSGenPhoton1_e", - # "FSGenPhoton2_e", - # "FSGenPhoton0_p", - # "FSGenPhoton1_p", - # "FSGenPhoton2_p", - # "FSGenPhoton0_pt", - # "FSGenPhoton1_pt", - # "FSGenPhoton2_pt", + "FSGenPhoton0_e", + "FSGenPhoton1_e", + "FSGenPhoton2_e", + "FSGenPhoton0_p", + "FSGenPhoton1_p", + "FSGenPhoton2_p", + "FSGenPhoton0_pt", + "FSGenPhoton1_pt", + "FSGenPhoton2_pt", + "FSGenPhoton0_px", + "FSGenPhoton1_px", + "FSGenPhoton2_px", + "FSGenPhoton0_py", + "FSGenPhoton1_py", + "FSGenPhoton2_py", + "FSGenPhoton0_pz", + "FSGenPhoton1_pz", + "FSGenPhoton2_pz", + # "FSGen_a0a1_invMass", # "FSGen_a0a2_invMass", # "FSGen_a1a2_invMass", @@ -560,6 +675,7 @@ def output(): "GenALP_vertex_z", "GenALP_aa_invMass", "GenALP_mass", + "GenALP_e", "GenALP_p", "GenALP_pt", "GenALP_pz", @@ -567,6 +683,42 @@ def output(): "GenALP_theta", "GenALP_phi", "GenALP_genStatus", + + # "GenALP_deltaR", + "GenALPPhotons_deltaEta", + "GenALPPhotons_deltaPhi", + "GenALPPhotons_deltaR", + + # "GenALPPhotons_deltaR_2", + "FSGenPhotons_delta_r", + + "GenALPPhoton1_time", + "GenALPPhoton2_time", + + "GenALP_observed_lifetime_xyz", + + "GenALPPhoton1_time_minus_GenALP_time", + + "n_GenALP", + "GenALP_time", + "GenALP_pdg", + # "GenALP_endPoint_x", + + "n_FSGenALP", + "FSGenALP_mass", + "FSGenALP_p", + "FSGenALP_pt", + "FSGenALP_pz", + "FSGenALP_eta", + "FSGenALP_theta", + "FSGenALP_phi", + "FSGenALP_genStatus", + + "n_GenALPPhoton1", + "n_GenALPPhoton2", + # "GenALPPhoton1_deltaR", + # "GenALPPhoton2_deltaR", + "GenALPPhoton1_e", "GenALPPhoton2_e", "GenALPPhoton1_p", @@ -624,25 +776,34 @@ def output(): "RecoALPPhoton2_phi", "RecoALPPhoton1_charge", "RecoALPPhoton2_charge", - "RecoALP_aa_invMass", + + "n_RecoALPPhoton1", + "n_RecoALPPhoton2", + # "RecoALPPhoton1_time", + # "RecoALPPhoton2_time", + "RecoALPPhotons_deltaEta", + "RecoALPPhotons_deltaPhi", + "RecoALPPhotons_deltaR", + + # "RecoALP_aa_invMass", "GenMinusRecoALPPhoton1_e", "GenMinusRecoALPPhoton2_e", - "GenMinusRecoALPPhoton1_p", - "GenMinusRecoALPPhoton2_p", - "GenMinusRecoALPPhoton1_pt", - "GenMinusRecoALPPhoton2_pt", - "GenMinusRecoALPPhoton1_px", - "GenMinusRecoALPPhoton2_px", - "GenMinusRecoALPPhoton1_py", - "GenMinusRecoALPPhoton2_py", - "GenMinusRecoALPPhoton1_pz", - "GenMinusRecoALPPhoton2_pz", - "GenMinusRecoALPPhoton1_eta", - "GenMinusRecoALPPhoton2_eta", - "GenMinusRecoALPPhoton1_theta", - "GenMinusRecoALPPhoton2_theta", - "GenMinusRecoALPPhoton1_phi", - "GenMinusRecoALPPhoton2_phi", + # "GenMinusRecoALPPhoton1_p", + # "GenMinusRecoALPPhoton2_p", + # "GenMinusRecoALPPhoton1_pt", + # "GenMinusRecoALPPhoton2_pt", + # "GenMinusRecoALPPhoton1_px", + # "GenMinusRecoALPPhoton2_px", + # "GenMinusRecoALPPhoton1_py", + # "GenMinusRecoALPPhoton2_py", + # "GenMinusRecoALPPhoton1_pz", + # "GenMinusRecoALPPhoton2_pz", + # "GenMinusRecoALPPhoton1_eta", + # "GenMinusRecoALPPhoton2_eta", + # "GenMinusRecoALPPhoton1_theta", + # "GenMinusRecoALPPhoton2_theta", + # "GenMinusRecoALPPhoton1_phi", + # "GenMinusRecoALPPhoton2_phi", "GenMinusRecoALP_DecayVertex_x", "GenMinusRecoALP_DecayVertex_y", "GenMinusRecoALP_DecayVertex_z", @@ -650,16 +811,16 @@ def output(): "n_RecoPhotons", "n_RecoElectrons", "n_RecoMuons", - "RecoJet_e", - "RecoJet_p", - "RecoJet_pt", - "RecoJet_px", - "RecoJet_py", - "RecoJet_pz", - "RecoJet_eta", - "RecoJet_theta", - "RecoJet_phi", - "RecoJet_charge", + # "RecoJet_e", + # "RecoJet_p", + # "RecoJet_pt", + # "RecoJet_px", + # "RecoJet_py", + # "RecoJet_pz", + # "RecoJet_eta", + # "RecoJet_theta", + # "RecoJet_phi", + # "RecoJet_charge", "RecoPhoton_e", "RecoPhoton_p", "RecoPhoton_pt", @@ -670,26 +831,37 @@ def output(): "RecoPhoton_theta", "RecoPhoton_phi", "RecoPhoton_charge", - "RecoElectron_e", - "RecoElectron_p", - "RecoElectron_pt", - "RecoElectron_px", - "RecoElectron_py", - "RecoElectron_pz", - "RecoElectron_eta", - "RecoElectron_theta", - "RecoElectron_phi", - "RecoElectron_charge", - "RecoMuon_e", - "RecoMuon_p", - "RecoMuon_pt", - "RecoMuon_px", - "RecoMuon_py", - "RecoMuon_pz", - "RecoMuon_eta", - "RecoMuon_theta", - "RecoMuon_phi", - "RecoMuon_charge", + + "RecoPhotons_delta_eta", + "RecoPhotons_delta_phi", + "RecoPhotons_delta_r", + + # "RecoPhotons_ALP_delta_r", + # "RecoPhotons_ALP_delta_phi", + # "RecoPhotons_ALP_delta_eta", + + "RecoPhoton_y", + # "RecoPhoton_time", + # "RecoElectron_e", + # "RecoElectron_p", + # "RecoElectron_pt", + # "RecoElectron_px", + # "RecoElectron_py", + # "RecoElectron_pz", + # "RecoElectron_eta", + # "RecoElectron_theta", + # "RecoElectron_phi", + # "RecoElectron_charge", + # "RecoMuon_e", + # "RecoMuon_p", + # "RecoMuon_pt", + # "RecoMuon_px", + # "RecoMuon_py", + # "RecoMuon_pz", + # "RecoMuon_eta", + # "RecoMuon_theta", + # "RecoMuon_phi", + # "RecoMuon_charge", "RecoMissingEnergy_e", "RecoMissingEnergy_p", "RecoMissingEnergy_pt", diff --git a/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1_new.py b/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1_new.py new file mode 100644 index 0000000000..7aaee19310 --- /dev/null +++ b/examples/FCCee/bsm/LLPs/ALPs/analysis_stage1_new.py @@ -0,0 +1,1087 @@ +#Mandatory: List of processes +processList = { + + #centrally-produced backgrounds + # 'p8_ee_Zee_ecm91':{'chunks':100}, + # 'wzp6_gaga_ee_60_ecm240':{'chunks':100}, + # 'ee_gaga_1million':{}, + # 'test1':{}, + # 'test2':{}, + # 'test3':{}, + # 'test4':{}, + # 'ee_gaga_test':{}, + # 'ee_aa':{}, + # 'ee_aaa':{}, + # 'ee_aaaa':{}, + + #privately-produced signals + + # 'ALP_Z_aa_0.01.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.01.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.0316.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.1.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_0.316.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_1.0.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.0000019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.000006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_3.16.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0000006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0000019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.000006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0000006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0000019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.000006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.000019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.00006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.00019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.0019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.006':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.019':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.06':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.19':{}, + # 'ALP_Z_aa_31.6.GeV_cYY_0.6':{}, + + # 'ee_Z_ALPga_gagaga':{}, + + # 'ALP_Z_aa_1GeV_cYY_0p5':{}, + + # 'ALP_Z_aa_0.1GeV_cYY_0.1':{}, + # 'ALP_Z_aa_0.2GeV_cYY_0.1':{}, + # 'ALP_Z_aa_0.135GeV_cYY_0.1':{}, + # 'ALP_Z_aa_0.3GeV_cYY_0.1':{}, + + # 'ALP_Z_aa_1.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_0.5.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_0.5.GeV_cYY_1.2':{}, + + # 'ALP_Z_aa_1.GeV_cYY_0.6':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.8':{}, + 'ALP_Z_aa_1.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.GeV_cYY_1.2':{}, + # 'ALP_Z_aa_1.GeV_cYY_1.4':{}, + + # 'ALP_Z_aa_0.5.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.5.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_2.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_2.1.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_3.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_4.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_5.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_8.GeV_cYY_1.0':{}, + + # 'ALP_Z_aa_0.6.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_0.8.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.2.GeV_cYY_1.0':{}, + # 'ALP_Z_aa_1.4.GeV_cYY_1.0':{}, + + # 'ALP_Z_aa_2.GeV_cYY_1.0_take3':{}, + + # 'ALP_Z_aa_3.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_5.GeV_cYY_0.1':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.3':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.7':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.9':{}, + + # 'ALP_Z_aa_0.5GeV_cYY_0.5':{}, + # 'ALP_Z_aa_0.7GeV_cYY_0.5':{}, + # 'ALP_Z_aa_1.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_3.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_5.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_7.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_10.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_15.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_20.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_25.GeV_cYY_0.5':{}, + # 'ALP_Z_aa_30.GeV_cYY_0.5':{}, + + #test + #'p8_ee_Zee_ecm91':{'fraction':0.000001}, +} + +#Production tag. This points to the yaml files for getting sample statistics +#Mandatory when running over EDM4Hep centrally produced events +#Comment out when running over privately produced events +#prodTag = "FCCee/winter2023/IDEA/" + +#Input directory +#Comment out when running over centrally produced events +#Mandatory when running over privately produced events +# inputDir = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_MadgraphPythiaDelphes/" +# inputDir = "./root_files_for_input/" +# inputDir = "./" +# inputDir = "/eos/experiment/fcc/ee/generation/DelphesEvents/winter2023/IDEA/wzp6_gaga_ee_60_ecm240/" +inputDir = "/eos/experiment/fcc/ee/analyses_storage/BSM/LLPs/ALPs_3photons/ALP_sample_creation/" + +#Optional: output directory, default is local dir +# outputDir = "./stage1_ee_gaga_1million/" +outputDir = "./stage1_sensitivity/" +# outputDir = "./stage1_FSGenALP/" +#outputDir = "/eos/user/j/jalimena/FCCeeLLP/" +#outputDir = "output_stage1/" + +#outputDirEos = "/eos/experiment/fcc/ee/analyses/case-studies/bsm/LLPs/ALPs_3photons/winter2023/output_stage1/" +#outputDirEos = "/eos/user/j/jalimena/FCCeeLLP/" +#eosType = "eosuser" + +#Optional: ncpus, default is 4 +nCPUS = 4 + +#Optional running on HTCondor, default is False +runBatch = False +#runBatch = True + +#Optional batch queue name when running on HTCondor, default is workday +batchQueue = "longlunch" + +#Optional computing account when running on HTCondor, default is group_u_FCC.local_gen +compGroup = "group_u_FCC.local_gen" + +#Mandatory: RDFanalysis class where the use defines the operations on the TTree +class RDFanalysis(): + def analysers(df): + + df2 = (df + + #Access the various objects and their properties with the following syntax: .Define("", "") + #This will create a column in the RDataFrame named and filled with the return value of the for the given collection/object + #Accessor functions are the functions found in the C++ analyzers code that return a certain variable, e.g. ::get_n(object) returns the number + #of these objects in the event and ::get_pt(object) returns the pt of the object. Here you can pick between two namespaces to access either + #reconstructed (namespace = ReconstructedParticle) or MC-level objects (namespace = MCParticle). + #For the name of the object, in principle the names of the EDM4HEP collections are used - photons, muons and electrons are an exception, see below + + #OVERVIEW: Accessing different objects and counting them + + # Following code is written specifically for the ALP study + #################################################################################################### + .Alias("Particle1", "_Particle_daughters.index") + .Alias("MCRecoAssociations0", "_MCRecoAssociations_rec.index") + .Alias("MCRecoAssociations1", "_MCRecoAssociations_sim.index") + + ##### Added branch for MCParticle; finding PID of the MC particle for ALP + .Define("GenALP_PID", "MCParticle::sel_pdgID(9000005, false)(Particle)") + .Define("GenALP_decay", "MCParticle::get_list_of_particles_from_decay(0, GenALP_PID, Particle1)") + + .Define("All_n_GenALP", "MCParticle::get_n(GenALP_PID)") + + .Define("AllGenALP_mass", "MCParticle::get_mass(GenALP_PID)") #finding the generator mass of the ALP through separate ALP branch + .Define("AllGenALP_e", "MCParticle::get_e(GenALP_PID)") + .Define("AllGenALP_p", "MCParticle::get_p(GenALP_PID)") + .Define("AllGenALP_pt", "MCParticle::get_pt(GenALP_PID)") #finding the pt of the ALP thorugh separate ALP branch + .Define("AllGenALP_px", "MCParticle::get_px(GenALP_PID)") + .Define("AllGenALP_py", "MCParticle::get_py(GenALP_PID)") + .Define("AllGenALP_pz", "MCParticle::get_pz(GenALP_PID)") + .Define("AllGenALP_eta", "MCParticle::get_eta(GenALP_PID)") + .Define("AllGenALP_theta", "MCParticle::get_theta(GenALP_PID)") + .Define("AllGenALP_phi", "MCParticle::get_phi(GenALP_PID)") + .Define("AllGenALP_genStatus", "MCParticle::get_genStatus(GenALP_PID)") + + #all final state gen electrons + .Define("GenElectron_PID", "MCParticle::sel_pdgID(11, false)(Particle)") #get MCParticle electrons, but not their charge conjugates + .Define("FSGenElectron", "MCParticle::sel_genStatus(1)(GenElectron_PID)") #gen status==1 means final state particle (FS) + .Define("n_FSGenElectron", "MCParticle::get_n(FSGenElectron)") + .Define("FSGenElectron_e", "MCParticle::get_e(FSGenElectron)") + .Define("FSGenElectron_p", "MCParticle::get_p(FSGenElectron)") + .Define("FSGenElectron_pt", "MCParticle::get_pt(FSGenElectron)") + .Define("FSGenElectron_px", "MCParticle::get_px(FSGenElectron)") + .Define("FSGenElectron_py", "MCParticle::get_py(FSGenElectron)") + .Define("FSGenElectron_pz", "MCParticle::get_pz(FSGenElectron)") + .Define("FSGenElectron_eta", "MCParticle::get_eta(FSGenElectron)") + .Define("FSGenElectron_theta", "MCParticle::get_theta(FSGenElectron)") + .Define("FSGenElectron_phi", "MCParticle::get_phi(FSGenElectron)") + + #all final state gen positrons + .Define("GenPositron_PID", "MCParticle::sel_pdgID(-11, false)(Particle)") + .Define("FSGenPositron", "MCParticle::sel_genStatus(1)(GenPositron_PID)") #gen status==1 means final state particle (FS) + .Define("n_FSGenPositron", "MCParticle::get_n(FSGenPositron)") + .Define("FSGenPositron_e", "MCParticle::get_e(FSGenPositron)") + .Define("FSGenPositron_p", "MCParticle::get_p(FSGenPositron)") + .Define("FSGenPositron_pt", "MCParticle::get_pt(FSGenPositron)") + .Define("FSGenPositron_px", "MCParticle::get_px(FSGenPositron)") + .Define("FSGenPositron_py", "MCParticle::get_py(FSGenPositron)") + .Define("FSGenPositron_pz", "MCParticle::get_pz(FSGenPositron)") + .Define("FSGenPositron_eta", "MCParticle::get_eta(FSGenPositron)") + .Define("FSGenPositron_theta", "MCParticle::get_theta(FSGenPositron)") + .Define("FSGenPositron_phi", "MCParticle::get_phi(FSGenPositron)") + + #all final state gen neutrinos + .Define("GenNeutrino_PID", "MCParticle::sel_pdgID(12, false)(Particle)") + .Define("FSGenNeutrino", "MCParticle::sel_genStatus(1)(GenNeutrino_PID)") #gen status==1 means final state particle (FS) + .Define("n_FSGenNeutrino", "MCParticle::get_n(FSGenNeutrino)") + .Define("FSGenNeutrino_e", "MCParticle::get_e(FSGenNeutrino)") + .Define("FSGenNeutrino_p", "MCParticle::get_p(FSGenNeutrino)") + .Define("FSGenNeutrino_pt", "MCParticle::get_pt(FSGenNeutrino)") + .Define("FSGenNeutrino_px", "MCParticle::get_px(FSGenNeutrino)") + .Define("FSGenNeutrino_py", "MCParticle::get_py(FSGenNeutrino)") + .Define("FSGenNeutrino_pz", "MCParticle::get_pz(FSGenNeutrino)") + .Define("FSGenNeutrino_eta", "MCParticle::get_eta(FSGenNeutrino)") + .Define("FSGenNeutrino_theta", "MCParticle::get_theta(FSGenNeutrino)") + .Define("FSGenNeutrino_phi", "MCParticle::get_phi(FSGenNeutrino)") + + #all final state gen anti-neutrinos + .Define("GenAntiNeutrino_PID", "MCParticle::sel_pdgID(-12, false)(Particle)") + .Define("FSGenAntiNeutrino", "MCParticle::sel_genStatus(1)(GenAntiNeutrino_PID)") #gen status==1 means final state particle (FS) + .Define("n_FSGenAntiNeutrino", "MCParticle::get_n(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_e", "MCParticle::get_e(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_p", "MCParticle::get_p(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_pt", "MCParticle::get_pt(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_px", "MCParticle::get_px(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_py", "MCParticle::get_py(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_pz", "MCParticle::get_pz(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_eta", "MCParticle::get_eta(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_theta", "MCParticle::get_theta(FSGenAntiNeutrino)") + .Define("FSGenAntiNeutrino_phi", "MCParticle::get_phi(FSGenAntiNeutrino)") + + #all final state gen photons + .Define("GenPhoton_PID", "MCParticle::sel_pdgID(22, false)(Particle)") + .Define("FSGenPhoton", "MCParticle::sel_genStatus(1)(GenPhoton_PID)") #gen status==1 means final state particle (FS) + .Define("n_FSGenPhoton", "MCParticle::get_n(FSGenPhoton)") + .Define("FSGenPhoton_e", "MCParticle::get_e(FSGenPhoton)") + .Define("FSGenPhoton_p", "MCParticle::get_p(FSGenPhoton)") + .Define("FSGenPhoton_pt", "MCParticle::get_pt(FSGenPhoton)") + .Define("FSGenPhoton_px", "MCParticle::get_px(FSGenPhoton)") + .Define("FSGenPhoton_py", "MCParticle::get_py(FSGenPhoton)") + .Define("FSGenPhoton_pz", "MCParticle::get_pz(FSGenPhoton)") + .Define("FSGenPhoton_eta", "MCParticle::get_eta(FSGenPhoton)") + .Define("FSGenPhoton_theta", "MCParticle::get_theta(FSGenPhoton)") + .Define("FSGenPhoton_phi", "MCParticle::get_phi(FSGenPhoton)") + + # Number of final state electrons and positrons when the number of final state photons is only 2 + # Returns -2 if the number of final state photons != 2, and therefore will be shown as -2 in the plots + # .Define("n_FSGenElectron_forFS2GenPhotons", "if (n_FSGenPhoton == 2) {return (n_FSGenElectron); } else {return (-2); }") + # .Define("n_FSGenPositron_forFS2GenPhotons", "if (n_FSGenPhoton == 2) {return (n_FSGenPositron); } else {return (-2); }") + + .Define("FSGenPhoton_vertex_x", "MCParticle::get_vertex_x( FSGenPhoton )") + .Define("FSGenPhoton_vertex_y", "MCParticle::get_vertex_y( FSGenPhoton )") + .Define("FSGenPhoton_vertex_z", "MCParticle::get_vertex_z( FSGenPhoton )") + + # Finding the Lxy of the ALP + # Definition: Lxy = math.sqrt( (branchGenPtcl.At(daut1).X)**2 + (branchGenPtcl.At(daut1).Y)**2 ) + .Define("FSGen_Lxy", "return sqrt(FSGenPhoton_vertex_x*FSGenPhoton_vertex_x + FSGenPhoton_vertex_y*FSGenPhoton_vertex_y)") + .Define("FSGen_Lxyz", "return sqrt(FSGenPhoton_vertex_x*FSGenPhoton_vertex_x + FSGenPhoton_vertex_y*FSGenPhoton_vertex_y + FSGenPhoton_vertex_z*FSGenPhoton_vertex_z)") + + # Calculating the lifetime of the ALP + # Definition: t = Lxy * branchGenPtcl.At(i).Mass / (branchGenPtcl.At(i).PT * 1000 * 3E8) + .Define("FSGen_lifetime_xy", "return ( FSGen_Lxy.at(0) * AllGenALP_mass / (AllGenALP_pt * 3E8 * 1000))" ) + .Define("FSGen_lifetime_xyz", "return ( FSGen_Lxy.at(0) * AllGenALP_mass / (AllGenALP_p * 3E8 * 1000))" ) + + # Separating the three first final state photons + # Returns -2 if the number of final state photons != 2, and therefore will be shown as -2 in the plots + .Define("FSGenPhoton0_e", "return FSGenPhoton_e.at(0)") + .Define("FSGenPhoton1_e", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_e.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_e", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_e.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_p", "return FSGenPhoton_p.at(0)") + .Define("FSGenPhoton1_p", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_p.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_p", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_p.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_pt", "return FSGenPhoton_pt.at(0)") + .Define("FSGenPhoton1_pt", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_pt.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_pt", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_pt.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_px", "return FSGenPhoton_px.at(0)") + .Define("FSGenPhoton1_px", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_px.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_px", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_px.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_py", "return FSGenPhoton_py.at(0)") + .Define("FSGenPhoton1_py", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_py.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_py", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_py.at(2);} else {return (-2.0f); }") + .Define("FSGenPhoton0_pz", "return FSGenPhoton_pz.at(0)") + .Define("FSGenPhoton1_pz", "if (n_FSGenPhoton >= 2) {return FSGenPhoton_pz.at(1);} else {return (-2.0f); }") + .Define("FSGenPhoton2_pz", "if (n_FSGenPhoton >= 3) {return FSGenPhoton_pz.at(2);} else {return (-2.0f); }") + + .Define("FSGenPhoton1_px_if_FSGenPhoton0_px_greaterthan_0", "if (FSGenPhoton0_px > 0) {return FSGenPhoton1_px;} else {return -50.0f;}") + .Define("FSGenPhoton1_px_if_FSGenPhoton2_px_pos", "if (FSGenPhoton2_px > 0) {return FSGenPhoton1_px;} else {return -50.0f;}") + .Define("FSGenPhoton1_pz_if_FSGenPhoton2_pz_pos", "if (FSGenPhoton2_pz > 0) {return FSGenPhoton1_pz;} else {return -50.0f;}") + + # aa invariant mass - for all three combinations of the three first FS photons + # returns -2 for events with only 1 number of photons + # .Define("FSGen_a0a1_energy", "return (FSGenPhoton0_e + FSGenPhoton1_e)") + # .Define("FSGen_a0a1_px", "return (FSGenPhoton0_px + FSGenPhoton1_px)") + # .Define("FSGen_a0a1_py", "return (FSGenPhoton0_py + FSGenPhoton1_py)") + # .Define("FSGen_a0a1_pz", "return (FSGenPhoton0_pz + FSGenPhoton1_pz)") + # .Define("FSGen_a0a1_invMass", "if (n_FSGenPhoton > 1) { return sqrt(FSGen_a0a1_energy*FSGen_a0a1_energy - FSGen_a0a1_px*FSGen_a0a1_px - FSGen_a0a1_py*FSGen_a0a1_py - FSGen_a0a1_pz*FSGen_a0a1_pz ); } else {return -2.0f;}") + + # .Define("FSGen_a0a2_energy", "return (FSGenPhoton0_e + FSGenPhoton2_e)") + # .Define("FSGen_a0a2_px", "return (FSGenPhoton0_px + FSGenPhoton2_px)") + # .Define("FSGen_a0a2_py", "return (FSGenPhoton0_py + FSGenPhoton2_py)") + # .Define("FSGen_a0a2_pz", "return (FSGenPhoton0_pz + FSGenPhoton2_pz)") + # .Define("FSGen_a0a2_invMass", "if (n_FSGenPhoton > 1) { return sqrt(FSGen_a0a2_energy*FSGen_a0a2_energy - FSGen_a0a2_px*FSGen_a0a2_px - FSGen_a0a2_py*FSGen_a0a2_py - FSGen_a0a2_pz*FSGen_a0a2_pz ); } else {return -2.0f;}") + + # .Define("FSGen_a1a2_energy", "return (FSGenPhoton1_e + FSGenPhoton2_e)") + # .Define("FSGen_a1a2_px", "return (FSGenPhoton1_px + FSGenPhoton2_px)") + # .Define("FSGen_a1a2_py", "return (FSGenPhoton1_py + FSGenPhoton2_py)") + # .Define("FSGen_a1a2_pz", "return (FSGenPhoton1_pz + FSGenPhoton2_pz)") + # .Define("FSGen_a1a2_invMass", "if (n_FSGenPhoton > 1) { return sqrt(FSGen_a1a2_energy*FSGen_a1a2_energy - FSGen_a1a2_px*FSGen_a1a2_px - FSGen_a1a2_py*FSGen_a1a2_py - FSGen_a1a2_pz*FSGen_a1a2_pz ); } else {return -2.0f;}") + + # aaa invariant mass + # Returns -2 for events with only 1 or 2 number of photons + # .Define("FSGen_aaa_energy", "return (FSGenPhoton0_e + FSGenPhoton1_e + FSGenPhoton2_e)") + # .Define("FSGen_aaa_px", "return (FSGenPhoton0_px + FSGenPhoton1_px + FSGenPhoton2_px)") + # .Define("FSGen_aaa_py", "return (FSGenPhoton0_py + FSGenPhoton1_py + FSGenPhoton2_py)") + # .Define("FSGen_aaa_pz", "return (FSGenPhoton0_pz + FSGenPhoton1_pz + FSGenPhoton2_pz)") + # .Define("FSGen_aaa_invMass", "if (n_FSGenPhoton > 2) { return sqrt(FSGen_aaa_energy*FSGen_aaa_energy - FSGen_aaa_px*FSGen_aaa_px - FSGen_aaa_py*FSGen_aaa_py - FSGen_aaa_pz*FSGen_aaa_pz ); } else {return -2.0f;}") + + # Defining a vector containing the ALP and its daughters in order written + # Name of vector is ALP_indices + .Define("GenALP_indices", "MCParticle::get_indices(9000005, {22, 22}, true, false, false, true)(Particle, Particle1)") + + # Defining the individual particles from the vector + .Define("GenALP", "myUtils::selMC_leg(0)(GenALP_indices, Particle)") + .Define("GenALPPhoton1", "myUtils::selMC_leg(1)(GenALP_indices, Particle)") + .Define("GenALPPhoton2", "myUtils::selMC_leg(2)(GenALP_indices, Particle)") + + # Defining final state ALPs to get rid of duplicates + .Define("FSGenALP", "MCParticle::sel_genStatus(1)(GenALP_PID)") + + .Define("n_FSGenALP", "MCParticle::get_n( FSGenALP )") + + # Kinematics of final state ALP (attempt Merlin) + .Define("FSGenALP_mass", "MCParticle::get_mass( FSGenALP )") + .Define("FSGenALP_e", "MCParticle::get_e( FSGenALP )") + .Define("FSGenALP_p", "MCParticle::get_p( FSGenALP )") + .Define("FSGenALP_pt", "MCParticle::get_pt( FSGenALP )") + .Define("FSGenALP_px", "MCParticle::get_px( FSGenALP )") + .Define("FSGenALP_py", "MCParticle::get_py( FSGenALP )") + .Define("FSGenALP_pz", "MCParticle::get_pz( FSGenALP )") + .Define("FSGenALP_eta", "MCParticle::get_eta( FSGenALP )") + .Define("FSGenALP_theta", "MCParticle::get_theta( FSGenALP )") + .Define("FSGenALP_phi", "MCParticle::get_phi( FSGenALP )") + .Define("FSGenALP_genStatus", "MCParticle::get_genStatus( FSGenALP )") + + # Kinematics of the mother particle ALP + .Define("GenALP_mass", "MCParticle::get_mass( GenALP )") + .Define("GenALP_e", "MCParticle::get_e( GenALP )") + .Define("GenALP_p", "MCParticle::get_p( GenALP )") + .Define("GenALP_pt", "MCParticle::get_pt( GenALP )") + .Define("GenALP_px", "MCParticle::get_px( GenALP )") + .Define("GenALP_py", "MCParticle::get_py( GenALP )") + .Define("GenALP_pz", "MCParticle::get_pz( GenALP )") + .Define("GenALP_eta", "MCParticle::get_eta( GenALP )") + .Define("GenALP_theta", "MCParticle::get_theta( GenALP )") + .Define("GenALP_phi", "MCParticle::get_phi( GenALP )") + .Define("GenALP_genStatus", "MCParticle::get_genStatus( GenALP )") + + .Define("GenALP_px_if_FSGenPhoton0_px_greaterthan_0", "if (FSGenPhoton0_px > 0) {return GenALP_px[0];} else {return -50.0f;}") + .Define("FSGenPhoton1_px_if_GenALP_px_neg", "if (GenALP_px[0] < 0) {return FSGenPhoton1_px;} else {return -50.0f;}") + .Define("FSGenPhoton2_px_if_GenALP_px_neg", "if (GenALP_px[0] < 0) {return FSGenPhoton2_px;} else {return -50.0f;}") + + .Define("n_GenALP", "MCParticle::get_n( GenALP )") + .Define("GenALP_time", "MCParticle::get_time( GenALP )") + .Define("GenALP_pdg", "MCParticle::get_pdg( GenALP )") + .Define("GenALP_endPoint_x", "MCParticle::get_endPoint_x") + + # .Define("GenALP_deltaR", "return sqrt(GenALP_eta*GenALP_eta + GenALP_phi*GenALP_phi)") + + # Finding the kinematics of each of these daughters + .Define("n_GenALPPhoton1", "MCParticle::get_n( GenALPPhoton1 )") + .Define("n_GenALPPhoton2", "MCParticle::get_n( GenALPPhoton2 )") + + .Define("GenALPPhoton1_e", "MCParticle::get_e( GenALPPhoton1 )") + .Define("GenALPPhoton2_e", "MCParticle::get_e( GenALPPhoton2 )") + .Define("GenALPPhoton1_p", "MCParticle::get_p( GenALPPhoton1 )") + .Define("GenALPPhoton2_p", "MCParticle::get_p( GenALPPhoton2 )") + .Define("GenALPPhoton1_pt", "MCParticle::get_pt( GenALPPhoton1 )") + .Define("GenALPPhoton2_pt", "MCParticle::get_pt( GenALPPhoton2 )") + .Define("GenALPPhoton1_px", "MCParticle::get_px( GenALPPhoton1 )") + .Define("GenALPPhoton2_px", "MCParticle::get_px( GenALPPhoton2 )") + .Define("GenALPPhoton1_py", "MCParticle::get_py( GenALPPhoton1 )") + .Define("GenALPPhoton2_py", "MCParticle::get_py( GenALPPhoton2 )") + .Define("GenALPPhoton1_pz", "MCParticle::get_pz( GenALPPhoton1 )") + .Define("GenALPPhoton2_pz", "MCParticle::get_pz( GenALPPhoton2 )") + .Define("GenALPPhoton1_eta", "MCParticle::get_eta( GenALPPhoton1 )") + .Define("GenALPPhoton2_eta", "MCParticle::get_eta( GenALPPhoton2 )") + .Define("GenALPPhoton1_theta", "MCParticle::get_theta( GenALPPhoton1 )") + .Define("GenALPPhoton2_theta", "MCParticle::get_theta( GenALPPhoton2 )") + .Define("GenALPPhoton1_phi", "MCParticle::get_phi( GenALPPhoton1 )") + .Define("GenALPPhoton2_phi", "MCParticle::get_phi( GenALPPhoton2 )") + .Define("GenALPPhoton1_genStatus", "MCParticle::get_genStatus( GenALPPhoton1 )") + .Define("GenALPPhoton2_genStatus", "MCParticle::get_genStatus( GenALPPhoton2 )") + + .Define("GenALPPhotons_deltaEta", "return abs(GenALPPhoton1_eta - GenALPPhoton2_eta)") + .Define("GenALPPhotons_deltaPhi", "return abs(GenALPPhoton1_phi - GenALPPhoton2_phi)") + .Define("GenALPPhotons_deltaR", "return sqrt(GenALPPhotons_deltaEta*GenALPPhotons_deltaEta + GenALPPhotons_deltaPhi*GenALPPhotons_deltaPhi)") + + # .Define("GenALPPhotons_deltaR_2", "MCParticle::get_ALP_delta_r(GenALPPhoton1, GenALPPhoton2)") + .Define("FSGenPhotons_delta_r", "MCParticle::get_delta_r(FSGenPhoton)") + + .Define("GenALPPhoton1_time", "MCParticle::get_time( GenALPPhoton1 )") + .Define("GenALPPhoton2_time", "MCParticle::get_time( GenALPPhoton2 )") + + # .Define("GenALPPhoton1_deltaR", "return sqrt(GenALPPhoton1_eta*GenALPPhoton1_eta + GenALPPhoton1_phi*GenALPPhoton1_phi)") + # .Define("GenALPPhoton2_deltaR", "return sqrt(GenALPPhoton2_eta*GenALPPhoton2_eta + GenALPPhoton2_phi*GenALPPhoton2_phi)") + + + # Finding the production vertex of the daughters (checking GenALPPhoton1 here) + .Define("GenALPPhoton1_vertex_x", "MCParticle::get_vertex_x( GenALPPhoton1 )") + .Define("GenALPPhoton1_vertex_y", "MCParticle::get_vertex_y( GenALPPhoton1 )") + .Define("GenALPPhoton1_vertex_z", "MCParticle::get_vertex_z( GenALPPhoton1 )") + + # Finding the Lxy of the ALP + # Definition: Lxy = math.sqrt( (branchGenPtcl.At(daut1).X)**2 + (branchGenPtcl.At(daut1).Y)**2 ) + .Define("GenALP_Lxy", "return sqrt(GenALPPhoton1_vertex_x*GenALPPhoton1_vertex_x + GenALPPhoton1_vertex_y*GenALPPhoton1_vertex_y)") + # Finding the Lxyz of the ALP + .Define("GenALP_Lxyz", "return sqrt(GenALPPhoton1_vertex_x*GenALPPhoton1_vertex_x + GenALPPhoton1_vertex_y*GenALPPhoton1_vertex_y + GenALPPhoton1_vertex_z*GenALPPhoton1_vertex_z)") + + # Calculating the lifetime of the ALP + # Definition: t = Lxy * branchGenPtcl.At(i).Mass / (branchGenPtcl.At(i).PT * 1000 * 3E8) + .Define("GenALP_lifetime_xy", "return ( GenALP_Lxy * GenALP_mass / (GenALP_pt * 3E8 * 1000))" ) + .Define("GenALP_lifetime_xyz", "return ( GenALP_Lxyz * GenALP_mass / (GenALP_p * 3E8 * 1000))" ) + + .Define("GenALP_observed_lifetime_xyz", "return ((GenALP_p / GenALP_mass) * GenALP_lifetime_xyz)") + + .Define("GenALPPhoton1_time_minus_GenALP_time", "return (GenALPPhoton1_time - GenALP_time)") + + # Finding the production vertex of the ALP which should be at (0,0,0) + .Define("GenALP_vertex_x", "MCParticle::get_vertex_x(GenALP_PID)") + .Define("GenALP_vertex_y", "MCParticle::get_vertex_y(GenALP_PID)") + .Define("GenALP_vertex_z", "MCParticle::get_vertex_z(GenALP_PID)") + + # aa invariant mass + .Define("GenALP_aa_energy", "return (GenALPPhoton1_e + GenALPPhoton2_e)") + .Define("GenALP_aa_px", "return (GenALPPhoton1_px + GenALPPhoton2_px)") + .Define("GenALP_aa_py", "return (GenALPPhoton1_py + GenALPPhoton2_py)") + .Define("GenALP_aa_pz", "return (GenALPPhoton1_pz + GenALPPhoton2_pz)") + .Define("GenALP_aa_invMass", "return sqrt(GenALP_aa_energy*GenALP_aa_energy - GenALP_aa_px*GenALP_aa_px - GenALP_aa_py*GenALP_aa_py - GenALP_aa_pz*GenALP_aa_pz )") + + # Vertexing studies + # Finding the vertex of the mother particle ALP using decicated Bs method + #.Define("GenALPMCDecayVertex", "BsMCDecayVertex( GenALP_indices, Particle )") + + # MC event primary vertex + .Define("MC_PrimaryVertex", "MCParticle::get_EventPrimaryVertex(21)( Particle )" ) + .Define("n_RecoTracks","ReconstructedParticle2Track::getTK_n(_EFlowTrack_trackStates)") + + # Reconstructed particles + # Returns the RecoParticles associated with the ALP decay products + .Define("RecoALPParticles", "ReconstructedParticle2MC::selRP_matched_to_list( GenALP_indices, MCRecoAssociations0,MCRecoAssociations1,ReconstructedParticles,Particle)") + # Reconstructing the tracks from the ALP + .Define("RecoALPTracks", "ReconstructedParticle2Track::getRP2TRK( RecoALPParticles, _EFlowTrack_trackStates)") + + # Number of tracks in this RecoALPTracks collection ( = the #tracks used to reconstruct the ALP reco decay vertex) + .Define("n_RecoALPTracks", "ReconstructedParticle2Track::getTK_n( RecoALPTracks )") + + # Now we reconstruct the ALP reco decay vertex using the reco'ed tracks + # First the full object, of type Vertexing::FCCAnalysesVertex + .Define("RecoALPDecayVertexObject", "VertexFitterSimple::VertexFitter_Tk( 2, RecoALPTracks)" ) + + # from which we extract the edm4hep::VertexData object, which contains the vertex position in mm + .Define("RecoALPDecayVertex", "VertexingUtils::get_VertexData( RecoALPDecayVertexObject )") + + .Define("RecoALPL_xyz", "return sqrt(RecoALPDecayVertex.position.x*RecoALPDecayVertex.position.x + RecoALPDecayVertex.position.y*RecoALPDecayVertex.position.y + RecoALPDecayVertex.position.z*RecoALPDecayVertex.position.z)") + + # We may want to look at the reco'ed ALPs legs: in the RecoALPParticles vector, + # the first particle (vector[0]) is the e-, etc : + .Define("RecoALPPhoton1", "myUtils::selRP_leg(0)( RecoALPParticles )") + .Define("RecoALPPhoton2", "myUtils::selRP_leg(1)( RecoALPParticles )") + + # reconstruced electron, positron values + .Define("RecoALPPhoton1_e", "ReconstructedParticle::get_e( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_e", "ReconstructedParticle::get_e( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_p", "ReconstructedParticle::get_p( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_p", "ReconstructedParticle::get_p( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_pt", "ReconstructedParticle::get_pt( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_pt", "ReconstructedParticle::get_pt( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_px", "ReconstructedParticle::get_px( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_px", "ReconstructedParticle::get_px( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_py", "ReconstructedParticle::get_py( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_py", "ReconstructedParticle::get_py( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_pz", "ReconstructedParticle::get_pz( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_pz", "ReconstructedParticle::get_pz( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_eta", "ReconstructedParticle::get_eta( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_eta", "ReconstructedParticle::get_eta( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_theta", "ReconstructedParticle::get_theta( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_theta", "ReconstructedParticle::get_theta( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_phi", "ReconstructedParticle::get_phi( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_phi", "ReconstructedParticle::get_phi( RecoALPPhoton2 )") + .Define("RecoALPPhoton1_charge", "ReconstructedParticle::get_charge( RecoALPPhoton1 )") + .Define("RecoALPPhoton2_charge", "ReconstructedParticle::get_charge( RecoALPPhoton2 )") + + .Define("RecoALPPhotons_deltaEta", "return abs(RecoALPPhoton1_eta - RecoALPPhoton2_eta)") + .Define("RecoALPPhotons_deltaPhi", "return RecoALPPhoton1_phi - RecoALPPhoton2_phi") + .Define("RecoALPPhotons_deltaR", "return sqrt(RecoALPPhotons_deltaEta*RecoALPPhotons_deltaEta + RecoALPPhotons_deltaPhi*RecoALPPhotons_deltaPhi)") + .Define("RecoALPPhotons_deltaR2", "ReconstructedParticle::get_delta_r(RecoALPPhoton1)") + + .Define("n_RecoALPPhoton1", "ReconstructedParticle::get_n( RecoALPPhoton1 )") + .Define("n_RecoALPPhoton2", "ReconstructedParticle::get_n( RecoALPPhoton2 )") + # .Define("RecoALPPhoton1_time", "ReconstructedParticle::get_time( RecoALPPhoton1 )") + # .Define("RecoALPPhoton2_time", "ReconstructedParticle::get_time( RecoALPPhoton2 )") + # add dxy, dz, dxyz, and uncertainties + + # aa invariant mass + .Define("RecoALP_aa_energy", "return (RecoALPPhoton1_e + RecoALPPhoton2_e)") + .Define("RecoALP_aa_px", "return (RecoALPPhoton1_px + RecoALPPhoton2_px)") + .Define("RecoALP_aa_py", "return (RecoALPPhoton1_py + RecoALPPhoton2_py)") + .Define("RecoALP_aa_pz", "return (RecoALPPhoton1_pz + RecoALPPhoton2_pz)") + .Define("RecoALP_aa_invMass", "return sqrt(RecoALP_aa_energy*RecoALP_aa_energy - RecoALP_aa_px*RecoALP_aa_px - RecoALP_aa_py*RecoALP_aa_py - RecoALP_aa_pz*RecoALP_aa_pz )") + + #gen-reco + .Define("GenMinusRecoALPPhoton1_e", "GenALPPhoton1_e-RecoALPPhoton1_e") + .Define("GenMinusRecoALPPhoton2_e", "GenALPPhoton2_e-RecoALPPhoton2_e") + .Define("GenMinusRecoALPPhoton1_p", "GenALPPhoton1_p-RecoALPPhoton1_p") + .Define("GenMinusRecoALPPhoton2_p", "GenALPPhoton2_p-RecoALPPhoton2_p") + .Define("GenMinusRecoALPPhoton1_pt", "GenALPPhoton1_pt-RecoALPPhoton1_pt") + .Define("GenMinusRecoALPPhoton2_pt", "GenALPPhoton2_pt-RecoALPPhoton2_pt") + .Define("GenMinusRecoALPPhoton1_px", "GenALPPhoton1_px-RecoALPPhoton1_px") + .Define("GenMinusRecoALPPhoton2_px", "GenALPPhoton2_px-RecoALPPhoton2_px") + .Define("GenMinusRecoALPPhoton1_py", "GenALPPhoton1_py-RecoALPPhoton1_py") + .Define("GenMinusRecoALPPhoton2_py", "GenALPPhoton2_py-RecoALPPhoton2_py") + .Define("GenMinusRecoALPPhoton1_pz", "GenALPPhoton1_pz-RecoALPPhoton1_pz") + .Define("GenMinusRecoALPPhoton2_pz", "GenALPPhoton2_pz-RecoALPPhoton2_pz") + .Define("GenMinusRecoALPPhoton1_eta", "GenALPPhoton1_eta-RecoALPPhoton1_eta") + .Define("GenMinusRecoALPPhoton2_eta", "GenALPPhoton2_eta-RecoALPPhoton2_eta") + .Define("GenMinusRecoALPPhoton1_theta", "GenALPPhoton1_theta-RecoALPPhoton1_theta") + .Define("GenMinusRecoALPPhoton2_theta", "GenALPPhoton2_theta-RecoALPPhoton2_theta") + .Define("GenMinusRecoALPPhoton1_phi", "GenALPPhoton1_phi-RecoALPPhoton1_phi") + .Define("GenMinusRecoALPPhoton2_phi", "GenALPPhoton2_phi-RecoALPPhoton2_phi") + + .Define("GenMinusRecoALP_DecayVertex_x", "GenALPPhoton1_vertex_x-RecoALPDecayVertex.position.x") + .Define("GenMinusRecoALP_DecayVertex_y", "GenALPPhoton1_vertex_y-RecoALPDecayVertex.position.y") + .Define("GenMinusRecoALP_DecayVertex_z", "GenALPPhoton1_vertex_z-RecoALPDecayVertex.position.z") + + + #################################################################################################### + # From here the general study begins + + #JETS + .Define("n_RecoJets", "ReconstructedParticle::get_n(Jet)") #count how many jets are in the event in total + + #PHOTONS + .Alias("Photon0", "Photon_objIdx.index") + .Define("RecoPhotons", "ReconstructedParticle::get(Photon0, ReconstructedParticles)") + .Define("n_RecoPhotons", "ReconstructedParticle::get_n(RecoPhotons)") #count how many photons are in the event in total + + #ELECTRONS AND MUONS + #TODO: ADD EXPLANATION OF THE EXTRA STEPS + .Alias("Electron0", "Electron_objIdx.index") + .Define("RecoElectrons", "ReconstructedParticle::get(Electron0, ReconstructedParticles)") + .Define("n_RecoElectrons", "ReconstructedParticle::get_n(RecoElectrons)") #count how many electrons are in the event in total + + .Alias("Muon0", "Muon_objIdx.index") + .Define("RecoMuons", "ReconstructedParticle::get(Muon0, ReconstructedParticles)") + .Define("n_RecoMuons", "ReconstructedParticle::get_n(RecoMuons)") #count how many muons are in the event in total + + #OBJECT SELECTION: Consider only those objects that have pt > certain threshold + #.Define("selected_jets", "ReconstructedParticle::sel_pt(0.)(Jet)") #select only jets with a pt > 50 GeV + #.Define("selected_electrons", "ReconstructedParticle::sel_pt(0.)(electrons)") #select only electrons with a pt > 20 GeV + #.Define("selected_photons", "ReconstructedParticle::sel_pt(0.)(photons)") #select only photons with a pt > 20 GeV + #.Define("selected_muons", "ReconstructedParticle::sel_pt(0.)(muons)") + + #.Define("n_selJets", "ReconstructedParticle::get_n(selected_jets)") + #.Define("n_selElectrons", "ReconstructedParticle::get_n(selected_electrons)") + #.Define("n_selPhotons", "ReconstructedParticle::get_n(selected_photons)") + #.Define("n_selMuons", "ReconstructedParticle::get_n(selected_muons)") + + #SIMPLE VARIABLES: Access the basic kinematic variables of the (selected) jets, works analogously for electrons, muons + .Define("RecoJet_e", "ReconstructedParticle::get_e(Jet)") + .Define("RecoJet_p", "ReconstructedParticle::get_p(Jet)") #momentum p + .Define("RecoJet_pt", "ReconstructedParticle::get_pt(Jet)") #transverse momentum pt + .Define("RecoJet_px", "ReconstructedParticle::get_px(Jet)") + .Define("RecoJet_py", "ReconstructedParticle::get_py(Jet)") + .Define("RecoJet_pz", "ReconstructedParticle::get_pz(Jet)") + .Define("RecoJet_eta", "ReconstructedParticle::get_eta(Jet)") #pseudorapidity eta + .Define("RecoJet_theta", "ReconstructedParticle::get_theta(Jet)") + .Define("RecoJet_phi", "ReconstructedParticle::get_phi(Jet)") #polar angle in the transverse plane phi + .Define("RecoJet_charge", "ReconstructedParticle::get_charge(Jet)") + + .Define("RecoElectron_e", "ReconstructedParticle::get_e(RecoElectrons)") + .Define("RecoElectron_p", "ReconstructedParticle::get_p(RecoElectrons)") + .Define("RecoElectron_pt", "ReconstructedParticle::get_pt(RecoElectrons)") + .Define("RecoElectron_px", "ReconstructedParticle::get_px(RecoElectrons)") + .Define("RecoElectron_py", "ReconstructedParticle::get_py(RecoElectrons)") + .Define("RecoElectron_pz", "ReconstructedParticle::get_pz(RecoElectrons)") + .Define("RecoElectron_eta", "ReconstructedParticle::get_eta(RecoElectrons)") #pseudorapidity eta + .Define("RecoElectron_theta", "ReconstructedParticle::get_theta(RecoElectrons)") + .Define("RecoElectron_phi", "ReconstructedParticle::get_phi(RecoElectrons)") #polar angle in the transverse plane phi + .Define("RecoElectron_charge", "ReconstructedParticle::get_charge(RecoElectrons)") + + .Define("RecoPhoton_e", "ReconstructedParticle::get_e(RecoPhotons)") + .Define("RecoPhoton_p", "ReconstructedParticle::get_p(RecoPhotons)") + .Define("RecoPhoton_pt", "ReconstructedParticle::get_pt(RecoPhotons)") + .Define("RecoPhoton_px", "ReconstructedParticle::get_px(RecoPhotons)") + .Define("RecoPhoton_py", "ReconstructedParticle::get_py(RecoPhotons)") + .Define("RecoPhoton_pz", "ReconstructedParticle::get_pz(RecoPhotons)") + .Define("RecoPhoton_eta", "ReconstructedParticle::get_eta(RecoPhotons)") #pseudorapidity eta + .Define("RecoPhoton_theta", "ReconstructedParticle::get_theta(RecoPhotons)") + .Define("RecoPhoton_phi", "ReconstructedParticle::get_phi(RecoPhotons)") #polar angle in the transverse plane phi + .Define("RecoPhoton_charge", "ReconstructedParticle::get_charge(RecoPhotons)") + + .Define("RecoPhotons_delta_eta", "ReconstructedParticle::get_delta_eta(RecoPhotons)") + .Define("RecoPhotons_delta_phi", "ReconstructedParticle::get_delta_phi(RecoPhotons)") + .Define("RecoPhotons_delta_r", "ReconstructedParticle::get_delta_r(RecoPhotons)") + + .Define("RecoPhotons_min_delta_r", "ReconstructedParticle::get_min_delta_r(RecoPhotons)") + + # .Define("RecoPhotons_ALP_delta_r", "ReconstructedParticle::get_ALP_delta_r(RecoALPPhoton1, RecoALPPhoton2)") + # .Define("RecoPhotons_ALP_delta_phi", "ReconstructedParticle::get_ALP_delta_phi(RecoALPPhoton1, RecoALPPhoton2)") + # .Define("RecoPhotons_ALP_delta_eta", "ReconstructedParticle::get_ALP_delta_eta(RecoALPPhoton1, RecoALPPhoton2)") + + .Define("RecoPhoton_y", "ReconstructedParticle::get_y(RecoPhotons)") + # .Define("RecoPhoton_time", "ReconstructedParticle::get_time(RecoPhotons)") + + .Define("RecoPhoton_reference_point_x", "ReconstructedParticle::get_reference_point_x(RecoPhotons)") + + .Define("RecoPhoton0_e", "if (n_RecoPhotons ==3) {return RecoPhoton_e.at(0);} else {return (-2.0f); }") + .Define("RecoPhoton1_e", "if (n_RecoPhotons ==3) {return RecoPhoton_e.at(1);} else {return (-2.0f); }") + .Define("RecoPhoton2_e", "if (n_RecoPhotons ==3) {return RecoPhoton_e.at(2);} else {return (-2.0f); }") + .Define("RecoPhoton0_p", "if (n_RecoPhotons ==3) {return RecoPhoton_p.at(0);} else {return (-2.0f); }") + .Define("RecoPhoton1_p", "if (n_RecoPhotons ==3) {return RecoPhoton_p.at(1);} else {return (-2.0f); }") + .Define("RecoPhoton2_p", "if (n_RecoPhotons ==3) {return RecoPhoton_p.at(2);} else {return (-2.0f); }") + .Define("RecoPhoton0_pt", "if (n_RecoPhotons ==3) {return RecoPhoton_pt.at(0);} else {return (-2.0f); }") + .Define("RecoPhoton1_pt", "if (n_RecoPhotons ==3) {return RecoPhoton_pt.at(1);} else {return (-2.0f); }") + .Define("RecoPhoton2_pt", "if (n_RecoPhotons ==3) {return RecoPhoton_pt.at(2);} else {return (-2.0f); }") + .Define("RecoPhoton0_px", "if (n_RecoPhotons ==3) {return RecoPhoton_px.at(0);} else {return (-2.0f); }") + .Define("RecoPhoton1_px", "if (n_RecoPhotons ==3) {return RecoPhoton_px.at(1);} else {return (-2.0f); }") + .Define("RecoPhoton2_px", "if (n_RecoPhotons ==3) {return RecoPhoton_px.at(2);} else {return (-2.0f); }") + .Define("RecoPhoton0_py", "if (n_RecoPhotons ==3) {return RecoPhoton_py.at(0);} else {return (-2.0f); }") + .Define("RecoPhoton1_py", "if (n_RecoPhotons ==3) {return RecoPhoton_py.at(1);} else {return (-2.0f); }") + .Define("RecoPhoton2_py", "if (n_RecoPhotons ==3) {return RecoPhoton_py.at(2);} else {return (-2.0f); }") + .Define("RecoPhoton0_pz", "if (n_RecoPhotons ==3) {return RecoPhoton_pz.at(0);} else {return (-2.0f); }") + .Define("RecoPhoton1_pz", "if (n_RecoPhotons ==3) {return RecoPhoton_pz.at(1);} else {return (-2.0f); }") + .Define("RecoPhoton2_pz", "if (n_RecoPhotons ==3) {return RecoPhoton_pz.at(2);} else {return (-2.0f); }") + + .Define("RecoPhoton1_px_if_RecoPhoton2_px_pos", "if (RecoPhoton2_px > 0) {return RecoPhoton1_px;} else {return -50.0f;}") + .Define("RecoPhoton1_pz_if_RecoPhoton2_pz_pos", "if (RecoPhoton2_pz > 0) {return RecoPhoton1_pz;} else {return -50.0f;}") + + .Define("RecoALPPhotons_delta_R3", "if (n_RecoPhotons == 3) {return RecoPhotons_delta_r.at(2);} else {return (-2.0f); }") + + .Define("RecoMuon_e", "ReconstructedParticle::get_e(RecoMuons)") + .Define("RecoMuon_p", "ReconstructedParticle::get_p(RecoMuons)") + .Define("RecoMuon_pt", "ReconstructedParticle::get_pt(RecoMuons)") + .Define("RecoMuon_px", "ReconstructedParticle::get_px(RecoMuons)") + .Define("RecoMuon_py", "ReconstructedParticle::get_py(RecoMuons)") + .Define("RecoMuon_pz", "ReconstructedParticle::get_pz(RecoMuons)") + .Define("RecoMuon_eta", "ReconstructedParticle::get_eta(RecoMuons)") #pseudorapidity eta + .Define("RecoMuon_theta", "ReconstructedParticle::get_theta(RecoMuons)") + .Define("RecoMuon_phi", "ReconstructedParticle::get_phi(RecoMuons)") #polar angle in the transverse plane phi + .Define("RecoMuon_charge", "ReconstructedParticle::get_charge(RecoMuons)") + + #EVENTWIDE VARIABLES: Access quantities that exist only once per event, such as the missing energy (despite the name, the MissingET collection contains the total missing energy) + # .Define("RecoMissingEnergy_e", "ReconstructedParticle::get_e(MissingET)") + # .Define("RecoMissingEnergy_p", "ReconstructedParticle::get_p(MissingET)") + # .Define("RecoMissingEnergy_pt", "ReconstructedParticle::get_pt(MissingET)") + # .Define("RecoMissingEnergy_px", "ReconstructedParticle::get_px(MissingET)") + # .Define("RecoMissingEnergy_py", "ReconstructedParticle::get_py(MissingET)") + # .Define("RecoMissingEnergy_pz", "ReconstructedParticle::get_pz(MissingET)") + # .Define("RecoMissingEnergy_eta", "ReconstructedParticle::get_eta(MissingET)") + # .Define("RecoMissingEnergy_theta", "ReconstructedParticle::get_theta(MissingET)") + # .Define("RecoMissingEnergy_phi", "ReconstructedParticle::get_phi(MissingET)") + + # .Define("CalorimeterHitsTime", "CalorimeterHits.time") + ) + return df2 + + def output(): + branchList = [ + # "CalorimeterHitsTime", + ######## Monte-Carlo particles ####### + "All_n_GenALP", + "AllGenALP_mass", + "AllGenALP_e", + "AllGenALP_p", + "AllGenALP_pt", + "AllGenALP_px", + "AllGenALP_py", + "AllGenALP_pz", + "AllGenALP_eta", + "AllGenALP_theta", + "AllGenALP_phi", + "AllGenALP_genStatus", + "n_FSGenElectron", + # "FSGenElectron_e", + # "FSGenElectron_p", + # "FSGenElectron_pt", + # "FSGenElectron_px", + # "FSGenElectron_py", + # "FSGenElectron_pz", + # "FSGenElectron_eta", + # "FSGenElectron_theta", + # "FSGenElectron_phi", + "FSGenPhoton_vertex_x", + "FSGenPhoton_vertex_y", + "FSGenPhoton_vertex_z", + # # "n_FSGenElectron_forFS2GenPhotons", + # # "n_FSGenPositron_forFS2GenPhotons", + # "FSGen_Lxy", + # "FSGen_Lxyz", + # "FSGen_lifetime_xy", + # "FSGen_lifetime_xyz", + # "n_FSGenPositron", + # "FSGenPositron_e", + # "FSGenPositron_p", + # "FSGenPositron_pt", + # "FSGenPositron_px", + # "FSGenPositron_py", + # "FSGenPositron_pz", + # "FSGenPositron_eta", + # "FSGenPositron_theta", + # "FSGenPositron_phi", + # "n_FSGenNeutrino", + # "FSGenNeutrino_e", + # "FSGenNeutrino_p", + # "FSGenNeutrino_pt", + # "FSGenNeutrino_px", + # "FSGenNeutrino_py", + # "FSGenNeutrino_pz", + # "FSGenNeutrino_eta", + # "FSGenNeutrino_theta", + # "FSGenNeutrino_phi", + # "n_FSGenAntiNeutrino", + # "FSGenAntiNeutrino_e", + # "FSGenAntiNeutrino_p", + # "FSGenAntiNeutrino_pt", + # "FSGenAntiNeutrino_px", + # "FSGenAntiNeutrino_py", + # "FSGenAntiNeutrino_pz", + # "FSGenAntiNeutrino_eta", + # "FSGenAntiNeutrino_theta", + # "FSGenAntiNeutrino_phi", + "n_FSGenPhoton", + "FSGenPhoton_e", + "FSGenPhoton_p", + "FSGenPhoton_pt", + "FSGenPhoton_px", + "FSGenPhoton_py", + "FSGenPhoton_pz", + "FSGenPhoton_eta", + "FSGenPhoton_theta", + "FSGenPhoton_phi", + "FSGenPhoton0_e", + "FSGenPhoton1_e", + "FSGenPhoton2_e", + "FSGenPhoton0_p", + "FSGenPhoton1_p", + "FSGenPhoton2_p", + "FSGenPhoton0_pt", + "FSGenPhoton1_pt", + "FSGenPhoton2_pt", + "FSGenPhoton0_px", + "FSGenPhoton1_px", + "FSGenPhoton2_px", + "FSGenPhoton0_py", + "FSGenPhoton1_py", + "FSGenPhoton2_py", + "FSGenPhoton0_pz", + "FSGenPhoton1_pz", + "FSGenPhoton2_pz", + + "FSGenPhoton1_px_if_FSGenPhoton0_px_greaterthan_0", + "FSGenPhoton1_px_if_FSGenPhoton2_px_pos", + "FSGenPhoton1_pz_if_FSGenPhoton2_pz_pos", + + # "FSGen_a0a1_invMass", + # "FSGen_a0a2_invMass", + # "FSGen_a1a2_invMass", + # "FSGen_aaa_invMass", + "GenALP_vertex_x", + "GenALP_vertex_y", + "GenALP_vertex_z", + "GenALP_aa_invMass", + "GenALP_mass", + "GenALP_e", + "GenALP_p", + "GenALP_pt", + "GenALP_pz", + "GenALP_eta", + "GenALP_theta", + "GenALP_phi", + "GenALP_genStatus", + + "GenALP_px_if_FSGenPhoton0_px_greaterthan_0", + "FSGenPhoton1_px_if_GenALP_px_neg", + "FSGenPhoton2_px_if_GenALP_px_neg", + + # "GenALP_deltaR", + "GenALPPhotons_deltaEta", + "GenALPPhotons_deltaPhi", + "GenALPPhotons_deltaR", + + # "GenALPPhotons_deltaR_2", + "FSGenPhotons_delta_r", + + "GenALPPhoton1_time", + "GenALPPhoton2_time", + + "GenALP_observed_lifetime_xyz", + + "GenALPPhoton1_time_minus_GenALP_time", + + "n_GenALP", + "GenALP_time", + "GenALP_pdg", + # "GenALP_endPoint_x", + + "n_FSGenALP", + "FSGenALP_mass", + "FSGenALP_p", + "FSGenALP_pt", + "FSGenALP_pz", + "FSGenALP_eta", + "FSGenALP_theta", + "FSGenALP_phi", + "FSGenALP_genStatus", + + "n_GenALPPhoton1", + "n_GenALPPhoton2", + # "GenALPPhoton1_deltaR", + # "GenALPPhoton2_deltaR", + + "GenALPPhoton1_e", + "GenALPPhoton2_e", + "GenALPPhoton1_p", + "GenALPPhoton2_p", + "GenALPPhoton1_pt", + "GenALPPhoton2_pt", + "GenALPPhoton1_px", + "GenALPPhoton2_px", + "GenALPPhoton1_py", + "GenALPPhoton2_py", + "GenALPPhoton1_pz", + "GenALPPhoton2_pz", + "GenALPPhoton1_eta", + "GenALPPhoton2_eta", + "GenALPPhoton1_theta", + "GenALPPhoton2_theta", + "GenALPPhoton1_phi", + "GenALPPhoton2_phi", + "GenALPPhoton1_genStatus", + "GenALPPhoton2_genStatus", + #"GenALP_decay", + "GenALPPhoton1_vertex_x", + "GenALPPhoton1_vertex_y", + "GenALPPhoton1_vertex_z", + "GenALP_Lxy", + "GenALP_Lxyz", + "GenALP_lifetime_xy", + "GenALP_lifetime_xyz", + #"GenALPMCDecayVertex", + "MC_PrimaryVertex", + "n_RecoTracks", + ######## Reconstructed particles ####### + "RecoALPParticles", + "RecoALPTracks", + "n_RecoALPTracks", + "RecoALPDecayVertexObject", + "RecoALPDecayVertex", + + "RecoALPL_xyz", + + "RecoALPPhoton1_e", + "RecoALPPhoton2_e", + "RecoALPPhoton1_p", + "RecoALPPhoton2_p", + "RecoALPPhoton1_pt", + "RecoALPPhoton2_pt", + "RecoALPPhoton1_px", + "RecoALPPhoton2_px", + "RecoALPPhoton1_py", + "RecoALPPhoton2_py", + "RecoALPPhoton1_pz", + "RecoALPPhoton2_pz", + "RecoALPPhoton1_eta", + "RecoALPPhoton2_eta", + "RecoALPPhoton1_theta", + "RecoALPPhoton2_theta", + "RecoALPPhoton1_phi", + "RecoALPPhoton2_phi", + "RecoALPPhoton1_charge", + "RecoALPPhoton2_charge", + + "n_RecoALPPhoton1", + "n_RecoALPPhoton2", + # "RecoALPPhoton1_time", + # "RecoALPPhoton2_time", + "RecoALPPhotons_deltaEta", + "RecoALPPhotons_deltaPhi", + "RecoALPPhotons_deltaR", + "RecoALPPhotons_deltaR2", + + # "RecoALP_aa_invMass", + "GenMinusRecoALPPhoton1_e", + "GenMinusRecoALPPhoton2_e", + # "GenMinusRecoALPPhoton1_p", + # "GenMinusRecoALPPhoton2_p", + # "GenMinusRecoALPPhoton1_pt", + # "GenMinusRecoALPPhoton2_pt", + # "GenMinusRecoALPPhoton1_px", + # "GenMinusRecoALPPhoton2_px", + # "GenMinusRecoALPPhoton1_py", + # "GenMinusRecoALPPhoton2_py", + # "GenMinusRecoALPPhoton1_pz", + # "GenMinusRecoALPPhoton2_pz", + # "GenMinusRecoALPPhoton1_eta", + # "GenMinusRecoALPPhoton2_eta", + # "GenMinusRecoALPPhoton1_theta", + # "GenMinusRecoALPPhoton2_theta", + # "GenMinusRecoALPPhoton1_phi", + # "GenMinusRecoALPPhoton2_phi", + "GenMinusRecoALP_DecayVertex_x", + "GenMinusRecoALP_DecayVertex_y", + "GenMinusRecoALP_DecayVertex_z", + "n_RecoJets", + "n_RecoPhotons", + "n_RecoElectrons", + "n_RecoMuons", + # "RecoJet_e", + # "RecoJet_p", + # "RecoJet_pt", + # "RecoJet_px", + # "RecoJet_py", + # "RecoJet_pz", + # "RecoJet_eta", + # "RecoJet_theta", + # "RecoJet_phi", + # "RecoJet_charge", + "RecoPhoton_e", + "RecoPhoton_p", + "RecoPhoton_pt", + "RecoPhoton_px", + "RecoPhoton_py", + "RecoPhoton_pz", + "RecoPhoton_eta", + "RecoPhoton_theta", + "RecoPhoton_phi", + "RecoPhoton_charge", + + "RecoPhotons_delta_eta", + "RecoPhotons_delta_phi", + "RecoPhotons_delta_r", + + "RecoPhotons_min_delta_r", + + # "RecoPhotons_ALP_delta_r", + # "RecoPhotons_ALP_delta_phi", + # "RecoPhotons_ALP_delta_eta", + + "RecoPhoton_y", + # "RecoPhoton_time", + + "RecoPhoton_reference_point_x", + + "RecoPhoton0_e", + "RecoPhoton1_e", + "RecoPhoton2_e", + "RecoPhoton0_p", + "RecoPhoton1_p", + "RecoPhoton2_p", + "RecoPhoton0_pt", + "RecoPhoton1_pt", + "RecoPhoton2_pt", + "RecoPhoton0_px", + "RecoPhoton1_px", + "RecoPhoton2_px", + "RecoPhoton0_py", + "RecoPhoton1_py", + "RecoPhoton2_py", + "RecoPhoton0_pz", + "RecoPhoton1_pz", + "RecoPhoton2_pz", + + "RecoPhoton1_px_if_RecoPhoton2_px_pos", + "RecoPhoton1_pz_if_RecoPhoton2_pz_pos", + + "RecoALPPhotons_delta_R3", + + # "RecoElectron_e", + # "RecoElectron_p", + # "RecoElectron_pt", + # "RecoElectron_px", + # "RecoElectron_py", + # "RecoElectron_pz", + # "RecoElectron_eta", + # "RecoElectron_theta", + # "RecoElectron_phi", + # "RecoElectron_charge", + # "RecoMuon_e", + # "RecoMuon_p", + # "RecoMuon_pt", + # "RecoMuon_px", + # "RecoMuon_py", + # "RecoMuon_pz", + # "RecoMuon_eta", + # "RecoMuon_theta", + # "RecoMuon_phi", + # "RecoMuon_charge", + # "RecoMissingEnergy_e", + # "RecoMissingEnergy_p", + # "RecoMissingEnergy_pt", + # "RecoMissingEnergy_px", + # "RecoMissingEnergy_py", + # "RecoMissingEnergy_pz", + # "RecoMissingEnergy_eta", + # "RecoMissingEnergy_theta", + # "RecoMissingEnergy_phi", + ] + + return branchList diff --git a/examples/FCCee/bsm/LLPs/ALPs/plots_flavor.py b/examples/FCCee/bsm/LLPs/ALPs/plots_flavor.py new file mode 100644 index 0000000000..3002a597a4 --- /dev/null +++ b/examples/FCCee/bsm/LLPs/ALPs/plots_flavor.py @@ -0,0 +1,68 @@ +import ROOT + +# global parameters +intLumi = 1 +intLumiLabel = "L = 5 ab^{-1}" +ana_tex = "e^{+}e^{-} #rightarrow ZH #rightarrow #mu^{+}#mu^{-} b b" +delphesVersion = "3.4.2" +energy = 240.0 +collider = "FCC-ee" +formats = ["png", "pdf"] + +outdir = './outputs/' +inputDir = './output_finalSel/' + +plotStatUnc = True + +colors = {} +colors["ZH"] = ROOT.kRed +colors["ZZ"] = ROOT.kGreen + 2 + +procs = {} +procs["signal"] = {"ZH": ["ALP_Z_aa_1GeV_cYY_0p5_sel0_histo"]} +procs["backgrounds"] = {"ZZ": ["ALP_Z_aa_1GeV_cYY_0p5_selNone_histo"]} + +legend = {} +legend["ZH"] = "ZH" +legend["ZZ"] = "ZZ" + +hists = {} + +hists["zmumu_recoil_m"] = { + "output": "zmumu_recoil_m", + "logy": False, + "stack": True, + "rebin": 100, + "xmin": 120, + "xmax": 140, + "ymin": 0, + "ymax": 2000, + "xtitle": "Recoil (GeV)", + "ytitle": "Events / 100 MeV", +} + +hists["jj_m"] = { + "output": "jj_m", + "logy": False, + "stack": True, + "rebin": 2, + "xmin": 50, + "xmax": 150, + "ymin": 0, + "ymax": 4000, + "xtitle": "m_{jj} (GeV)", + "ytitle": "Events / 2 GeV", +} + +hists["scoresum_B"] = { + "output": "scoresum_B", + "logy": True, + "stack": True, + "rebin": 1, + "xmin": 0, + "xmax": 2.0, + "ymin": 1, + "ymax": 100000, + "xtitle": "p_{1}(B) + p_{2}(B)", + "ytitle": "Events", +} diff --git a/examples/FCCee/bsm/LLPs/ALPs/sensitivity_analysis/plot_sensitivity.py b/examples/FCCee/bsm/LLPs/ALPs/sensitivity_analysis/plot_sensitivity.py new file mode 100644 index 0000000000..281ba0df0a --- /dev/null +++ b/examples/FCCee/bsm/LLPs/ALPs/sensitivity_analysis/plot_sensitivity.py @@ -0,0 +1,808 @@ +import ROOT +import numpy as np +import array +import os +import pandas as pd +import matplotlib.pyplot as plt + +class Plotting: + def __init__(self,ana_text,energy,intLumi,output_dir): + self.ana_tex = ana_tex + self.s_tex = "#bf{#it{"+"#sqrt{{s}} = {:.1f} GeV".format(energy)+"}}" + self.lumi_tex = "#bf{#it{" +"L = {:.0f} ab^{{-1}}".format(intLumi) + "}}" + self.col_tex = "FCC-ee Simulation (Delphes)" + + if not os.path.exists(output_dir): + os.mkdir(output_dir) + self.output_dir = output_dir + + ### Figure ### + def drawFigure(self,mN,Ve,Z,func_text,out_name,histo_name="histo",zrange=[],plot_pred=False): + + #Set bins for the plots + logBins = 14 + stopBin = 3.38 + # startBin = 0.0000107 + startBin = 0.000000338 + logWidth = [] + for i in range(0,logBins): + logWidth.append(ROOT.Math.pow(10,ROOT.TMath.Log10(startBin)+((ROOT.TMath.Log10(stopBin)-ROOT.TMath.Log10(startBin))/logBins)*i)) + logArray = array.array('d',logWidth) + print(logArray) + + # linBins = 10 + # linBins0 = 10 + # linWidth = [0,5,10,20,30,40,50,60,70,80] + # linWidth0 = np.linspace(0,90,linBins0) + # linArray = array.array('d', linWidth) + # linArray0 = array.array('d', linWidth0) + + logBinMass = 8 + stopBinMass = 178 + startBinMass = 0.0178 + logWidthMass = [] + for i in range(0,logBinMass): + logWidthMass.append(ROOT.Math.pow(10,ROOT.TMath.Log10(startBinMass)+((ROOT.TMath.Log10(stopBinMass)-ROOT.TMath.Log10(startBinMass))/logBinMass)*i)) + logMassArray = array.array('d',logWidthMass) + print(logMassArray) + + c = ROOT.TCanvas("c_"+histo_name,"canvas title") + c.cd() + ROOT.gPad.SetLogx(1) + ROOT.gPad.SetLogy(1) + ROOT.gPad.SetLogz(1) + ROOT.gPad.SetRightMargin(0.2) + ROOT.gStyle.SetOptStat(0) + + # A base histogram to correctly set the bins + # h0 = ROOT.TH2F("h0",r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins0-1, linArray0, logBins-1, logArray) + # h0.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + # h0.Draw() + + h = ROOT.TH2F(histo_name,r";m_{a} [GeV];c_{\gamma\gamma}", logBinMass-1, logMassArray, logBins-1, logArray) + h.GetZaxis().SetTitle(func_text) + h.GetZaxis().SetTitleOffset(1.5) + h.GetXaxis().SetTitleOffset(1.4) + h.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + for m,v,z in zip(mN,Ve,Z): + h.Fill(m,v,z) + if zrange: + h.SetMinimum(zrange[0]) + h.SetMaximum(zrange[1]) + h.Draw("same COLZ") + # h.GetXaxis().SetRangeUser(0,31.6) + + ## Print text in figure + Text = ROOT.TLatex() + Text.SetNDC() + Text.SetTextAlign(31) + Text.SetTextSize(0.04) + Text.SetTextAlign(12) + Text.DrawLatex(0.090, 0.92, self.col_tex) + Text.SetNDC(ROOT.kTRUE) + Text.SetTextSize(0.04) + # Text.DrawLatex(0.62, 0.83, func_text) + Text.DrawLatex(0.48, 0.83, self.s_tex) + Text.DrawLatex(0.48, 0.78, self.lumi_tex) + Text.DrawLatex(0.48, 0.73, self.ana_tex) + + # c.Modified() + # c.Update() + + if (plot_pred): + x4,y4,x1,y1 = self.get_pred() + # X = np.power(10,x) + # Y = np.power(10,y) + X4 = array.array('d',x4) + Y4 = array.array('d',y4) + X1 = array.array('d',x1) + Y1 = array.array('d',y1) + + c.cd() + gr4 = ROOT.TGraph(len(X4),X4,Y4) + gr4.SetLineColor(2) + gr4.SetLineWidth(2) + gr4.Draw("same L") + gr4.GetXaxis().SetRangeUser(0,90) + + gr1 = ROOT.TGraph(len(X1),X1,Y1) + gr1.SetLineColor(1) + gr1.SetLineWidth(2) + gr1.Draw("same L") + gr1.GetXaxis().SetRangeUser(0,90) + + c.Modified() + c.Update() + + leg = ROOT.TLegend(0.56,0.13,0.73,0.17) + leg.SetFillColor(0) + leg.SetFillStyle(0) + leg.SetLineColor(0) + leg.SetShadowColor(10) + leg.SetTextSize(0.035) + leg.SetTextFont(42) + leg.AddEntry(gr1, "Theoretical prediction") + leg.AddEntry(gr4, "Theoretical prediction") + leg.Draw() + + leg = ROOT.TLegend(0.14,0.23,0.34,0.37) + leg.SetFillColor(0) + leg.SetFillStyle(0) + leg.SetLineColor(1) + leg.SetShadowColor(0) + leg.SetTextSize(0.035) + leg.SetTextFont(42) + + c.Modified() + c.Update() + + x = array.array('d') + x.append(0.01) + # # 3 signal event contour + # if S: + # hS = ROOT.TH2F("hS",r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins-1, linArray, logBins-1, logArray) + # hS.GetZaxis().SetTitle(func_text) + # hS.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + # for m,v,s in zip(mN,Ve,S): + # hS.Fill(m,v**2,s) + # x[0] = 3 + # hS.SetContour(1,x) + # hS.SetLineColor(3) + # hS.SetLineWidth(2) + # hS.Draw("cont3 C") + # leg.AddEntry(hS,"3 signal event") + # Text.SetTextColor(3) + # Text.DrawLatex(0.67,0.41,"#bf{3 signal event}") + + x[0] = 0.0001 + h1 = h.Clone() + h1.SetContour(1,x) + h1.SetLineWidth(3) + h1.SetLineColor(5) + # Text.SetTextColor(2) + # Text.DrawLatex(0.3,0.6,"#bf{s = 0.01}") + h1.DrawCopy("cont3 C same") + leg.AddEntry(h1,"s = 0.0001","l") + + x[0] = 0.01 + h2 = h.Clone() + h2.SetContour(1,x) + h2.SetLineWidth(3) + h2.SetLineColor(3) + # Text.SetTextColor(2) + # Text.DrawLatex(0.3,0.6,"#bf{s = 0.01}") + h2.DrawCopy("cont3 C same") + leg.AddEntry(h2,"s = 0.01","l") + + h22 = h.Clone() + x[0] = 0.05 + h22.SetContour(1,x) + h22.SetLineWidth(3) + h22.SetLineColor(4) + # Text.SetTextColor(3) + # Text.DrawLatex(0.3,0.7,"#bf{s = 0.05}") + h22.DrawCopy("cont3 C same") + leg.AddEntry(h22,"s = 0.05","l") + + leg.Draw() + c.Modified() + c.Update() + + c.SaveAs(os.path.join(self.output_dir, out_name)) + + def drawFigureWithNumbers(self,mN,Ve,Z,func_text,out_name,histo_name="histo",zrange=[]): + + #Set bins for the plots + logBins = 15 + stopBin = 1e-5 + startBin = 1e-12 + logWidth = [] + for i in range(0,logBins): + logWidth.append(ROOT.Math.pow(10,ROOT.TMath.Log10(startBin)+((ROOT.TMath.Log10(stopBin)-ROOT.TMath.Log10(startBin))/logBins)*i)) + logArray = array.array('d',logWidth) + + linBins = 10 + linBins0 = 10 + linWidth = [0,5,10,20,30,40,50,60,70,80] + linWidth0 = np.linspace(0,90,linBins0) + linArray = array.array('d', linWidth) + linArray0 = array.array('d', linWidth0) + + c = ROOT.TCanvas("c_"+histo_name,"canvas title") + c.cd() + # ROOT.gPad.SetLogx(1) + ROOT.gPad.SetLogy(1) + ROOT.gPad.SetLogz(1) + ROOT.gPad.SetRightMargin(0.15) + ROOT.gStyle.SetOptStat(0) + + # A base histogram to correctly set the bins + h0 = ROOT.TH2F("h0",r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins0-1, linArray0, logBins-1, logArray) + h0.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + h0.Draw() + + h = ROOT.TH2F(histo_name,r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins-1, linArray, logBins-1, logArray) + h.GetZaxis().SetTitle(func_text) + h.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + for m,v,z in zip(mN,Ve,Z): + h.Fill(m,v**2,z) + h.Draw("same COLZ text") + h.GetXaxis().SetRangeUser(0,90) + + ## Print text in figure + Text = ROOT.TLatex() + Text.SetNDC() + Text.SetTextAlign(31) + Text.SetTextSize(0.04) + Text.SetTextAlign(12) + Text.DrawLatex(0.090, 0.92, self.col_tex) + Text.SetNDC(ROOT.kTRUE) + Text.SetTextSize(0.04) + # Text.DrawLatex(0.62, 0.83, func_text) + Text.DrawLatex(0.56, 0.83, self.s_tex) + Text.DrawLatex(0.56, 0.78, self.lumi_tex) + Text.DrawLatex(0.56, 0.73, self.ana_tex) + + c.Modified() + c.Update() + + c.SaveAs(os.path.join(self.output_dir, out_name)) + + def drawFigureWithLimit(self,mN,Ve,Z,func_text,out_name,S=[],histo_name="histo",zrange=[],plot_pred=False): + + #Set bins for the plots + logBins = 15 + stopBin = 1e-5 + startBin = 1e-12 + logWidth = [] + for i in range(0,logBins): + logWidth.append(ROOT.Math.pow(10,ROOT.TMath.Log10(startBin)+((ROOT.TMath.Log10(stopBin)-ROOT.TMath.Log10(startBin))/logBins)*i)) + logArray = array.array('d',logWidth) + + linBins = 11 + linBins0 = 10 + linWidth = [0,5,10,20,30,40,50,60,70,80,90] + linWidth0 = np.linspace(0,90,linBins0) + linArray = array.array('d', linWidth) + linArray0 = array.array('d', linWidth0) + + c = ROOT.TCanvas("c_"+histo_name,"canvas title") + c.cd() + # ROOT.gPad.SetLogx(1) + ROOT.gPad.SetLogy(1) + ROOT.gPad.SetLogz(1) + ROOT.gPad.SetRightMargin(0.15) + ROOT.gStyle.SetOptStat(0) + + # A base histogram to correctly set the bins + h0 = ROOT.TH2F("h0",r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins0-1, linArray0, logBins-1, logArray) + h0.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + h0.Draw() + + h = ROOT.TH2F(histo_name,r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins-1, linArray, logBins-1, logArray) + h.GetZaxis().SetTitle(func_text) + h.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + for m,v,z in zip(mN,Ve,Z): + h.Fill(m,v**2,z) + # h.Draw("same COLZ text") + # h.DrawCopy("same COLZ") + h.GetXaxis().SetRangeUser(0,90) + + ## Print text in figure + Text = ROOT.TLatex() + Text.SetNDC() + Text.SetTextAlign(31) + Text.SetTextSize(0.04) + Text.SetTextAlign(12) + Text.DrawLatex(0.090, 0.92, self.col_tex) + Text.SetNDC(ROOT.kTRUE) + Text.SetTextSize(0.04) + # Text.DrawLatex(0.62, 0.83, func_text) + # Text.DrawLatex(0.56, 0.83, self.s_tex) + # Text.DrawLatex(0.56, 0.78, self.lumi_tex) + # Text.DrawLatex(0.56, 0.73, self.ana_tex) + + leg = ROOT.TLegend(0.28,0.73,0.63,0.87) + leg.SetFillColor(0) + leg.SetFillStyle(0) + leg.SetLineColor(0) + leg.SetShadowColor(10) + leg.SetTextSize(0.035) + leg.SetTextFont(42) + + c.Modified() + c.Update() + + if (plot_pred): + x4,y4,x1,y1 = self.get_pred() + # X = np.power(10,x) + # Y = np.power(10,y) + X4 = array.array('d',x4) + Y4 = array.array('d',y4) + X1 = array.array('d',x1) + Y1 = array.array('d',y1) + + c.cd() + gr4 = ROOT.TGraph(len(X4),X4,Y4) + gr4.SetLineColor(3) + gr4.SetLineWidth(3) + gr4.Draw("same L") + gr4.GetXaxis().SetRangeUser(0,90) + + gr1 = ROOT.TGraph(len(X1),X1,Y1) + gr1.SetLineColor(3) + gr1.SetLineWidth(3) + gr1.SetLineStyle(7) + gr1.Draw("same L") + gr1.GetXaxis().SetRangeUser(0,90) + + c.Modified() + c.Update() + + leg.AddEntry(gr1, "Prediction","l") + leg.AddEntry(gr4, "Prediction","l") + # leg.Draw() + # Text.SetTextColor(2) + # Text.SetTextSize(0.04) + # Text.DrawLatex(0.67,0.32,"#bf{Prediction}") + + x = array.array('d') + x.append(0.01) + # # 3 signal event contour + # if S: + # hS = ROOT.TH2F("hS",r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins-1, linArray, logBins-1, logArray) + # hS.GetZaxis().SetTitle(func_text) + # hS.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + # for m,v,s in zip(mN,Ve,S): + # hS.Fill(m,v**2,s) + # x[0] = 3 + # hS.SetContour(1,x) + # hS.SetLineColor(3) + # hS.SetLineWidth(2) + # hS.Draw("cont3 C") + # leg.AddEntry(hS,"3 signal event") + # Text.SetTextColor(3) + # Text.DrawLatex(0.67,0.41,"#bf{3 signal event}") + + x[0] = 0.01 + h.SetContour(1,x) + h.SetLineWidth(3) + h.SetLineColor(5) + # Text.SetTextColor(2) + # Text.DrawLatex(0.3,0.6,"#bf{s = 0.01}") + # h.DrawCopy("cont3 C same") + leg.AddEntry(h,"s = 0.01","l") + h22 = h.Clone() + x[0] = 0.05 + h22.SetContour(1,x) + h.SetLineWidth(3) + h22.SetLineColor(4) + # Text.SetTextColor(3) + # Text.DrawLatex(0.3,0.7,"#bf{s = 0.05}") + # h22.DrawCopy("cont3 C same") + leg.AddEntry(h22,"s = 0.05","l") + + leg.Draw() + c.Modified() + c.Update() + + c.SaveAs(os.path.join(self.output_dir, out_name)) + + def drawFigureWithLimitZoom(self,mN,Ve,Z,func_text,out_name,S=[],histo_name="histo",zrange=[],plot_pred=False): + + #Set bins for the plots + logBins = 10 + stopBin = 2.9e-7 + startBin = 2e-12 + logWidth = [] + for i in range(0,logBins): + logWidth.append(ROOT.Math.pow(10,ROOT.TMath.Log10(startBin)+((ROOT.TMath.Log10(stopBin)-ROOT.TMath.Log10(startBin))/logBins)*i)) + logArray = array.array('d',logWidth) + + linBins = 9 + linBins0 = 10 + linWidth = [5,10,20,30,40,50,60,70,80] + linWidth0 = np.linspace(0,80,linBins0) + linArray = array.array('d', linWidth) + linArray0 = array.array('d', linWidth0) + + c = ROOT.TCanvas("c_"+histo_name,"canvas title",360,250) + c.cd() + # ROOT.gPad.SetLogx(1) + ROOT.gPad.SetLogy(1) + ROOT.gPad.SetLogz(1) + ROOT.gPad.SetRightMargin(0.3) + ROOT.gStyle.SetOptStat(0) + + # A base histogram to correctly set the bins + # h0 = ROOT.TH2F("h0",r";m_{N};\left|V_{eN}\right|^{2}", linBins0-1, linArray0, logBins-1, logArray) + # h0.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + # h0.Draw() + + h = ROOT.TH2F(histo_name,r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins-1, linArray, logBins-1, logArray) + h.GetZaxis().SetTitle(func_text) + h.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + for m,v,z in zip(mN,Ve,Z): + h.Fill(m,v**2,z) + h.DrawCopy("COLZ") + h.GetXaxis().SetRangeUser(0,90) + + ## Print text in figure + Text = ROOT.TLatex() + Text.SetNDC() + Text.SetTextAlign(31) + Text.SetTextSize(0.04) + Text.SetTextAlign(12) + Text.DrawLatex(0.090, 0.92, self.col_tex) + Text.SetNDC(ROOT.kTRUE) + Text.SetTextSize(0.04) + # Text.DrawLatex(0.62, 0.83, func_text) + # Text.DrawLatex(0.47, 0.86, self.s_tex) + # Text.DrawLatex(0.47, 0.81, self.lumi_tex) + # Text.DrawLatex(0.47, 0.76, self.ana_tex) + + x = array.array('d') + x.append(0.01) + + # 3 signal event contour + if S: + hS = ROOT.TH2F("hS",r";m_{N} [GeV];\left|V_{eN}\right|^{2}", linBins-1, linArray, logBins-1, logArray) + hS.GetZaxis().SetTitle(func_text) + hS.GetZaxis().SetRangeUser(zrange[0],zrange[1]) + for m,v,s in zip(mN,Ve,S): + hS.Fill(m,v**2,s) + x[0] = 1 + hS.SetContour(1,x) + hS.SetLineColor(2) + hS.SetLineWidth(2) + hS.Draw("cont3 same") + Text.SetTextColor(3) + # Text.DrawLatex(0.67,0.41,"#bf{3 signal event}") + + x[0] = 0.01 + h.SetContour(1,x) + h.SetLineWidth(2) + h.SetLineColor(5) + Text.SetTextColor(5) + # Text.DrawLatex(0.3,0.6,"#bf{s = 0.01}") + h.DrawCopy("cont3 same") + x[0] = 0.05 + h.SetContour(1,x) + h.SetLineColor(4) + Text.SetTextColor(4) + # Text.DrawLatex(0.3,0.7,"#bf{s = 0.05}") + h.DrawCopy("cont3 same") + x[0] = 0.5 + h.SetContour(1,x) + h.SetLineColor(4) + # Text.SetTextColor(4) + # Text.DrawLatex(0.3,0.6,"#bf{s = 0.5}") + h.DrawCopy("cont3 same") + + if (plot_pred): + x4,y4,x1,y1 = self.get_pred() + # X = np.power(10,x) + # Y = np.power(10,y) + X4 = array.array('d',x4) + Y4 = array.array('d',y4) + X1 = array.array('d',x1) + Y1 = array.array('d',y1) + + c.cd() + gr4 = ROOT.TGraph(len(X4),X4,Y4) + gr4.SetLineColor(3) + gr4.SetLineWidth(2) + gr4.Draw("same L") + gr4.GetXaxis().SetRangeUser(0,90) + + gr1 = ROOT.TGraph(len(X1),X1,Y1) + gr1.SetLineColor(3) + gr1.SetLineWidth(2) + gr1.SetLineStyle(7) + gr1.Draw("same L") + gr1.GetXaxis().SetRangeUser(0,90) + + c.Modified() + c.Update() + + # leg = ROOT.TLegend(0.56,0.13,0.73,0.17) + # leg.SetFillColor(0) + # leg.SetFillStyle(0) + # leg.SetLineColor(0) + # leg.SetShadowColor(10) + # leg.SetTextSize(0.035) + # leg.SetTextFont(42) + # leg.AddEntry(gr, "Theoretical prediction") + # leg.Draw() + Text.SetTextColor(2) + Text.SetTextSize(0.04) + # Text.DrawLatex(0.67,0.32,"#bf{Prediction}") + + c.Modified() + c.Update() + + c.SaveAs(os.path.join(self.output_dir, out_name)) + + + ### returns S/sqrt(S+B) ### + def func1(self,S,B): + ret = [] + for s in S: + if s == 0: + ret.append(0) + # print(0) + else: + ret.append(s/ROOT.Math.sqrt(s+B)) + # print(s/ROOT.Math.sqrt(s+B)) + return ret + + ### returns S/sqrt(S+B+DeltaB) ### + def func2(self,S,B,DeltaB): + ret = [] + for s in S: + if s == 0: + ret.append(0) + # print(0) + else: + ret.append(s/ROOT.Math.sqrt(s+B+DeltaB)) + # print(s/ROOT.Math.sqrt(s+B+DeltaB)) + return ret + + ### returns S/sqrt(B+DeltaB) ### + def func3(self,S,B,DeltaB): + ret = [] + for s in S: + ret.append(s/ROOT.Math.sqrt(B+DeltaB)) + return ret + + ### returns decay length approximation ### + def func_L(self,mN,Ve): + ret = [] + for m,v in zip(mN,Ve): + ret.append(25*((1e-6/v)**2)*(np.power((100/m),5))) + return ret + + + ## Print tabular with all values ### + def saveTab(self,mN,Ve,S,Z,name1,Z2,name2): + f = open("sensitivityTabular.txt","w") + print('\n\n\n\\begin{table}[H] \n \\centering \n \\begin{tabular}{|c|c|c|c|c|} \hline \n $m_N$ & $|V_{eN}|^2$ & S & $',name1,'$ & $',name2,'$ \\\\ \\hline',file=f) + for m,v,s,z,z2 in zip(mN,Ve,S,Z,Z2): + print(f' {m} & {v**2:.2e} & {s:.3f} & {z:.3f} & {z2:.2e}\\\\', file=f) + print(' \\hline \n \\end{tabular} \n \\caption{Caption} \n \\label{tab:my_label} \n\\end{table}', file=f) + f.close() + + def get_pred(self): + # X: log(mN/GeV) + # pred_data = pd.read_csv("/afs/cern.ch/user/l/lrygaard/public/FCC_ee_data.csv",header=None, sep=",", names = ["X", "Y"]) + pred_data4 = pd.read_csv("HNLe-FCC-ee-IDEA-4-events.csv",header=None, sep='\t', names = ["X", "Y"]) + pred_data1 = pd.read_csv("HNLe-FCC-ee-IDEA-1-event.csv",header=None, sep='\t', names = ["X", "Y"]) + x4, y4, x1, y1 = [], [], [], [] + for i in range(len(pred_data4.index)): + x4.append(pred_data4.iloc[i]['X']) + y4.append(pred_data4.iloc[i]['Y']) + + for i in range(len(pred_data1.index)): + x1.append(pred_data1.iloc[i]['X']) + y1.append(pred_data1.iloc[i]['Y']) + + return x4,y4,x1,y1 + + +if __name__=="__main__": + + ana_tex = 'e^{+}e^{-} #rightarrow Z #rightarrow #gamma ALP #rightarrow 3#gamma' + collider = 'FCC-ee' + energy = 91 + intLumi = 150 + + output_dir = "plots_sensitivity/" + plotting = Plotting(ana_tex,energy,intLumi,output_dir) + + ### Values ### + # B = 0 + # DeltaB = 3.88e+07 + 7.55e+07 + 6.83e+07 + 1.92e+07 + 2.79e+07 + + # Background # + # Ztautau + Zee + Zbb + Zcc + Zuds + # B = 6.64e+04 + 0 + 1.72e+03 + 0 + 0 + B = 0.00e+00 + 7.16e+06 + 1.39e+03 + DeltaB = 3.84e+04 + 3.94e+06 + 1.72e+03 + 1.23e+03 + 2.79e+03 + + B_d0cut = 7.47e+06 + 0 + 1.72e+03 + 0 + 0 + print("DeltaB: ", DeltaB) + + # Signal # + # mN = [5, 5, 5, 5, 5, 5, 5, 5, 5, + # 10, 10, 10, 10, 10, 10, 10, 10, 10, + # 20, 20, 20, 20, 20, 20, 20, 20, 20, + # 30, 30, 30, 30, 30, 30, 30, 30, 30, + # 40, 40, 40, 40, 40, 40, 40, 40, 40, + # 50, 50, 50, 50, 50, 50, 50, 50, 50, + # 60, 60, 60, 60, 60, 60, 60, 60, 60, + # 70, 70, 70, 70, 70, 70, 70, 70, 70] + mN = [0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, 0.0316, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, 0.316, + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, 3.16, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6, 31.6] + # Ve = [2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6, + # 2e-4, 1e-4, 5e-5, 3e-5, 2e-5, 1e-5, 6e-6, 3e-6, 2e-6] + Ve = [0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6, + 0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6, + 0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6, + 0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6, + 0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6, + 0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6, + 0.0000006, 0.0000019, 0.000006, 0.000019, 0.00006, 0.00019, 0.0006, 0.0019, 0.006, 0.019, 0.06, 0.19, 0.6] + + # S = [2.19e+01, 2.36e+00, 1.04e-01, 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, + # 8.92e+02, 1.84e+02, 1.87e+01, 2.09e+00, 4.51e-01, 3.71e-02, 3.37e-03, 2.17e-04, 5.07e-05, + # 6.56e+02, 2.71e+02, 8.15e+01, 3.12e+01, 1.38e+01, 2.39e+00, 3.31e-01, 2.33e-02, 4.83e-03, + # 3.38e+01, 8.66e+01, 5.20e+01, 2.50e+01, 1.24e+01, 3.39e+00, 1.24e+00, 1.91e-01, 4.87e-02, + # 3.43e-02, 3.44e+00, 1.37e+01, 1.21e+01, 7.75e+00, 2.63e+00, 1.04e+00, 2.68e-01, 1.12e-01, + # 1.00e-06, 1.00e-06, 5.36e-01, 2.20e+00, 2.67e+00, 1.56e+00, 7.29e-01, 2.12e-01, 8.93e-02, + # 1.00e-06, 1.00e-06, 1.00e-06, 2.00e-02, 2.30e-01, 5.02e-01, 3.52e-01, 1.32e-01, 6.43e-02, + # 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, 4.75e-04, 5.80e-01, 7.03e-02, 5.23e-02, 3.12e-02] + # S = [0.00e+00, 5.45e-08, 9.27e+00, 6.90e+03, + # 3.07e-03, 4.61e+00, 4.26e+00, 1.08e+04, + # 3.30e-02, 3.30e+00, 3.12e+02, 9.03e+03] + +# Keeping the bottom left corner weirdness: + # S = [2.22e-02, 2.19e-01, 2.05e+00, 2.06e+01, 2.17e+02, 0.00e+00, 0.00e+00, 1.46e+00, 1.34e+04, 9.17e+05, + # 5.95e-02, 5.94e-01, 5.95e+00, 0.00e+00, 0.00e+00, 1.46e-04, 2.08e+02, 2.48e+04, 2.01e+06, 5.39e+07, + # 1.15e-01, 1.15e+00, 0.00e+00, 2.96e-02, 4.15e+00, 5.59e+02, 4.61e+04, 1.09e+06, 1.15e+07, 1.15e+08, + # 0.00e+00, 8.87e-04, 6.38e-02, 8.21e+00, 6.35e+02, 1.23e+04, 1.24e+05, 1.23e+06, 1.24e+07, 1.23e+08, + # 8.72e-04, 9.63e-02, 6.60e+00, 1.21e+02, 1.20e+03, 1.20e+04, 1.21e+05, 1.20e+06, 1.21e+07, 1.20e+08, + # 5.94e-02, 9.45e-01, 8.92e+00, 8.82e+01, 8.86e+02, 8.85e+03, 8.87e+04, 8.84e+05, 8.83e+06, 8.82e+07, + # 3.58e-03, 3.57e-02, 3.54e-01, 3.54e+00, 3.54e+01, 3.60e+02, 3.52e+03, 3.52e+04, 3.58e+05, 3.53e+06] + +# Removing the bottom left corner weirdness: + S = [0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 1.46e+00, 1.34e+04, 9.17e+05, + 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 1.46e-04, 2.08e+02, 2.48e+04, 2.01e+06, 5.39e+07, + 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 2.96e-02, 4.15e+00, 5.59e+02, 4.61e+04, 1.09e+06, 1.15e+07, 1.15e+08, + 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 8.87e-04, 6.38e-02, 8.21e+00, 6.35e+02, 1.23e+04, 1.24e+05, 1.23e+06, 1.24e+07, 1.23e+08, + 0.00e+00, 0.00e+00, 5.90e-06, 8.72e-04, 9.63e-02, 6.60e+00, 1.21e+02, 1.20e+03, 1.20e+04, 1.21e+05, 1.20e+06, 1.21e+07, 1.20e+08, + 8.56e-08, 1.10e-05, 8.89e-04, 5.94e-02, 9.45e-01, 8.92e+00, 8.82e+01, 8.86e+02, 8.85e+03, 8.87e+04, 8.84e+05, 8.83e+06, 8.82e+07, + 1.81e-07, 1.15e-05, 3.00e-04, 3.58e-03, 3.57e-02, 3.54e-01, 3.54e+00, 3.54e+01, 3.60e+02, 3.52e+03, 3.52e+04, 3.58e+05, 3.53e+06] + + S_d0cut = [2.19e+01, 2.36e+00, 1.04e-01, 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, + 8.92e+02, 1.84e+02, 1.87e+01, 2.09e+00, 4.51e-01, 3.71e-02, 3.37e-03, 2.17e-04, 5.07e-05, + 3.48e+00, 2.30e+02, 3.71e+01, 2.10e+01, 1.13e+01, 3.28e+00, 1.22e+00, 1.89e-01, 4.84e-02, + 3.38e+01, 8.66e+01, 5.20e+01, 2.50e+01, 1.24e+01, 3.39e+00, 1.24e+00, 1.91e-01, 4.87e-02, + 3.43e-02, 3.44e+00, 1.37e+01, 1.21e+01, 7.75e+00, 2.63e+00, 1.04e+00, 2.68e-01, 1.12e-01, + 1.00e-06, 1.00e-06, 5.36e-01, 2.20e+00, 2.67e+00, 1.56e+00, 7.29e-01, 2.12e-01, 8.93e-02, + 1.00e-06, 1.00e-06, 1.00e-06, 2.00e-02, 2.30e-01, 5.02e-01, 3.52e-01, 1.32e-01, 6.43e-02, + 1.00e-06, 1.00e-06, 1.00e-06, 1.00e-06, 4.75e-04, 5.80e-01, 7.03e-02, 5.23e-02, 3.12e-02] + + #No selection + S0 = [2.97e+03, 7.43e+02, 1.86e+02, 6.69e+01, 2.97e+01, 7.43e+00, 2.68e+00, 6.69e-01, 2.97e-01, + 2.53e+03, 6.33e+02, 1.58e+02, 5.70e+01, 2.53e+01, 6.33e+00, 2.28e+00, 5.70e-01, 2.53e-01, + 2.26e+03, 5.65e+02, 1.41e+02, 5.08e+01, 2.26e+01, 5.65e+00, 2.03e+00, 5.08e-01, 2.26e-01, + 2.00e+03, 5.01e+02, 1.25e+02, 4.51e+01, 2.00e+01, 5.01e+00, 1.80e+00, 4.51e-01, 2.00e-01, + 1.71e+03, 4.29e+02, 1.07e+02, 3.86e+01, 1.71e+01, 4.29e+00, 1.54e+00, 3.86e-01, 1.71e-01, + 1.37e+03, 3.42e+02, 8.55e+01, 3.08e+01, 1.37e+01, 3.42e+00, 1.23e+00, 3.08e-01, 1.37e-01, + 9.86e+02, 2.46e+02, 6.16e+01, 2.22e+01, 9.86e+00, 2.46e+00, 8.87e-01, 2.22e-01, 9.86e-02, + 5.94e+02, 1.48e+02, 3.71e+01, 1.34e+01, 5.94e+00, 1.48e+00, 5.35e-01, 1.34e-01, 5.94e-02] + + # 2 reco e + S1 = [2.42e+01, 2.51e+00, 1.04e-01, 2.67e-03, 1.19e-03, 7.94e-01, 2.82e-01, 7.31e-02, 3.24e-02, + 9.91e+02, 1.98e+02, 2.00e+01, 2.22e+00, 4.86e-01, 3.85e-02, 3.78e-03, 2.39e-04, 5.07e-05, + 1.54e+03, 3.85e+02, 9.63e+01, 3.47e+01, 1.51e+01, 2.58e+00, 3.57e-01, 2.50e-02, 5.23e-03, + 1.54e+03, 3.85e+02, 9.63e+01, 3.47e+01, 1.54e+01, 3.85e+00, 1.38e+00, 2.10e-01, 5.34e-02, + 1.36e+03, 3.39e+02, 8.49e+01, 3.07e+01, 1.36e+01, 3.39e+00, 1.22e+00, 3.00e-01, 1.24e-01, + 1.10e+03, 2.74e+02, 6.87e+01, 2.47e+01, 1.10e+01, 2.75e+00, 9.90e-01, 2.47e-01, 9.92e-02, + 7.88e+02, 1.97e+02, 4.92e+01, 1.78e+01, 7.88e+00, 1.97e+00, 7.11e-01, 1.77e-01, 7.14e-02, + 4.75e+02, 1.19e+02, 2.97e+01, 1.07e+01, 4.75e+00, 1.19e+00, 4.28e-01, 1.07e-01, 4.75e-02] + + # vetoes + S2 = [2.42e+01, 2.51e+00, 1.04e-01, 2.67e-03, 1.19e-03, 7.88e-01, 2.80e-01, 7.25e-02, 3.21e-02, + 9.81e+02, 1.97e+02, 1.98e+01, 2.20e+00, 4.81e-01, 3.80e-02, 3.78e-03, 2.39e-04, 5.07e-05, + 1.51e+03, 3.78e+02, 9.46e+01, 3.42e+01, 1.48e+01, 2.53e+00, 3.50e-01, 2.47e-02, 5.12e-03, + 1.50e+03, 3.77e+02, 9.42e+01, 3.39e+01, 1.50e+01, 3.76e+00, 1.34e+00, 2.03e-01, 5.18e-02, + 1.32e+03, 3.30e+02, 8.25e+01, 2.98e+01, 1.32e+01, 3.30e+00, 1.19e+00, 2.91e-01, 1.20e-01, + 1.06e+03, 2.66e+02, 6.64e+01, 2.39e+01, 1.06e+01, 2.67e+00, 9.57e-01, 2.39e-01, 9.57e-02, + 7.59e+02, 1.90e+02, 4.74e+01, 1.71e+01, 7.59e+00, 1.90e+00, 6.85e-01, 1.71e-01, 6.89e-02, + 4.56e+02, 1.14e+02, 2.84e+01, 1.02e+01, 4.56e+00, 1.14e+00, 4.11e-01, 1.02e-01, 4.55e-02] + + # missing energy gt 10 GeV + S3 = [2.23e+01, 2.39e+00, 1.04e-01, 1.34e-03, 5.94e-04, 7.25e-01, 2.59e-01, 6.74e-02, 2.95e-02, + 9.36e+02, 1.88e+02, 1.90e+01, 2.12e+00, 4.56e-01, 3.78e-02, 3.47e-03, 2.39e-04, 5.07e-05, + 1.44e+03, 3.61e+02, 9.02e+01, 3.26e+01, 1.41e+01, 2.41e+00, 3.35e-01, 2.35e-02, 4.89e-03, + 1.42e+03, 3.56e+02, 8.89e+01, 3.20e+01, 1.42e+01, 3.54e+00, 1.27e+00, 1.92e-01, 4.90e-02, + 1.25e+03, 3.12e+02, 7.80e+01, 2.81e+01, 1.25e+01, 3.12e+00, 1.12e+00, 2.75e-01, 1.13e-01, + 1.02e+03, 2.55e+02, 6.39e+01, 2.30e+01, 1.02e+01, 2.56e+00, 9.21e-01, 2.30e-01, 9.06e-02, + 7.40e+02, 1.85e+02, 4.62e+01, 1.67e+01, 7.40e+00, 1.85e+00, 6.68e-01, 1.67e-01, 6.52e-02, + 4.49e+02, 1.12e+02, 2.81e+01, 1.01e+01, 4.49e+00, 1.12e+00, 4.05e-01, 1.01e-01, 4.49e-02] + + # d0 gt 0.5 mm + S4 = [2.19e+01, 2.36e+00, 1.04e-01, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, + 8.92e+02, 1.84e+02, 1.87e+01, 2.09e+00, 4.51e-01, 3.71e-02, 3.37e-03, 2.17e-04, 5.07e-05, + 6.56e+02, 2.71e+02, 8.15e+01, 3.12e+01, 1.38e+01, 2.39e+00, 3.31e-01, 2.33e-02, 4.83e-03, + 3.38e+01, 8.66e+01, 5.20e+01, 2.50e+01, 1.24e+01, 3.39e+00, 1.24e+00, 1.91e-01, 4.87e-02, + 3.43e-02, 3.44e+00, 1.37e+01, 1.21e+01, 7.75e+00, 2.63e+00, 1.04e+00, 2.68e-01, 1.12e-01, + 0.00e+00, 0.00e+00, 5.36e-01, 2.20e+00, 2.67e+00, 1.56e+00, 7.29e-01, 2.12e-01, 8.93e-02, + 0.00e+00, 0.00e+00, 0.00e+00, 2.00e-02, 2.30e-01, 5.02e-01, 3.52e-01, 1.32e-01, 6.43e-02, + 0.00e+00, 0.00e+00, 0.00e+00, 0.00e+00, 4.75e-04, 5.80e-01, 7.03e-02, 5.23e-02, 3.12e-02] + + #Predictions + # pred_Ve = [5e-9,5e-10,8e-11,2.5e-11,1.5e-11,2e-11,3e-11,1e-10,6e-10,3e-9,2e-8,4e-7] + # pred_Ve_array = array.array('d',pred_Ve) + # pred_m = [1,10,20,30,40,50,60,60,50,40,30,20] + # pred_m2 = [m+5 for m in pred_m] + # pred_m_array = array.array('d',pred_m) + + # pred_mm = [0,5,5,15,15,25,25,35,35,45,45,55,55,65,65,55,55,45,45,35,35,25,25,15] + # pred_Vee = [5e-9,5e-9,5e-10,5e-10,8e-11,8e-11,2.5e-11,2.5e-11,1.5e-11,1.5e-11,2e-11,2e-11,3e-11,3e-11,1e-10,1e-10,6e-10,6e-10,3e-9,3e-9,2e-8,2e-8,4e-7,4e-7,4e-7] + # pred_mm_array = array.array('d',pred_mm) + # pred_Vee_array = array.array('d',pred_Vee) + + ## Figure + func_text1 = "s = #frac{n_{S}}{#sqrt{n_{S}+n_{B}}}" + out_name = "figureMerlin2.png" + plotting.drawFigure(mN,Ve,plotting.func1(S,B),func_text1,out_name,"histo1",zrange=[1e-10,1e+5],plot_pred=False) + + # out_name = "figure0lim.pdf" + # plotting.drawFigureWithLimit(mN,Ve,plotting.func1(S4,B),func_text1,out_name,histo_name="histo11",zrange=[1e-11,10],plot_pred=False) + + ## Figure + # func_text2 = "s = #frac{S}{#sqrt{S+B+#Delta B}}" + # out_name = "figure1.pdf" + # plotting.drawFigure(mN,Ve,plotting.func2(S,B,DeltaB),func_text2,out_name,"histo2",zrange=[1e-11,10],plot_pred=True) + + # out_name = "figure1limzoom.pdf" + # plotting.drawFigureWithLimitZoom(mN,Ve,plotting.func2(S4,B,DeltaB),func_text2,out_name,histo_name="histo21",zrange=[1e-8,10],plot_pred=True) + # # plotting.drawFigureWithLimitZoom(mN,Ve,plotting.func2(S4,B,DeltaB),func_text2,out_name,histo_name="histo21",zrange=[1e-8,10],plot_pred=True) + + # out_name = "figure1lim.pdf" + # plotting.drawFigureWithLimit(mN,Ve,plotting.func2(S4,B,DeltaB),func_text2,out_name,S1,histo_name="histo22",zrange=[1e-8,10],plot_pred=True) + + # out_name = "figure1num.pdf" + # plotting.drawFigureWithNumbers(mN,Ve,plotting.func2(S4,B,DeltaB),func_text2,out_name,"histo23",zrange=[1e-8,10]) + + + ## Figure + # func_text3 = "s = #frac{S}{#sqrt{B+#Delta B}}" + # out_name = "figureMerlin.pdf" + # plotting.drawFigure(mN,Ve,plotting.func3(S,B,DeltaB),func_text1,out_name,"histo3",zrange=[1e-10,0.1]) + + ## Figure Signal no cuts + # func_text4 = "S" + # out_name = "signal_nocut.pdf" + # plotting.drawFigureWithNumbers(mN,Ve,S0,func_text4,out_name,"histo4",zrange=[1e-5,1e4]) + + ## Figure Signal Exactly 2 reco e + # out_name = "signal_2RecoE.pdf" + # plotting.drawFigureWithNumbers(mN,Ve,S1,func_text4,out_name,"histo5",zrange=[1e-5,1e4]) + + ## Figure Signal Vetoes + # out_name = "signal_vetoes.pdf" + # plotting.drawFigureWithNumbers(mN,Ve,S2,func_text4,out_name,"histo6",zrange=[1e-5,1e4]) + + ## Figure Signal MissingEnergyGt10 + # out_name = "signal_MissingEnergyGt10.pdf" + # plotting.drawFigureWithNumbers(mN,Ve,S3,func_text4,out_name,"histo7",zrange=[1e-5,1e4]) + + ## Figure Signal absD0Gt0p5 + # out_name = "signal_absD0Gt0p5.pdf" + # plotting.drawFigureWithNumbers(mN,Ve,S4,func_text4,out_name,"histo8",zrange=[1e-5,1e4]) + + # out_name = "signal_absD0Gt0p5_lim.pdf" + # plotting.drawFigureWithLimit(mN,Ve,S4,func_text4,out_name,S,histo_name="histo81",zrange=[1e-5,1e4],plot_pred=False) + + # Figure decay length + # out_name = "signal_L.pdf" + # func_text8 = "L [mm]" + # plotting.drawFigureWithLimit(mN,Ve,plotting.func_L(mN,Ve),func_text4,out_name,S,histo_name="histo9",zrange=[1e-5,1e4],plot_pred=False) + + + ## Table + # plotting.saveTab(mN,Ve,S,plotting.func1(S,B),func_text1,plotting.func2(S,B,DeltaB),func_text2)