diff --git a/ecal/options/crystal_calorimeter_reco.py b/ecal/options/crystal_calorimeter_reco.py
index fa85b808b7f964c69c4b4d0122cf10fdc648224d..f42d78f91eea8d4fae998a060d5bc8b9d3f3bf2e 100644
--- a/ecal/options/crystal_calorimeter_reco.py
+++ b/ecal/options/crystal_calorimeter_reco.py
@@ -59,7 +59,7 @@ emcalreco = CrystalEndcapsReco("ecal_reco",
 emcalcluster = IslandCluster("emcal_cluster", 
         inputHitCollection="RecoEcalHits", 
         outputClusterCollection="EcalClusters",
-        minClusterCenterEdep=0.00001*units.MeV, 
+        minClusterCenterEdep=50.0*units.MeV, 
         groupRange=2.0)
 
 clusterreco = RecoCoG("cluster_reco", 
diff --git a/ecal/scripts/emcal_electrons.cxx b/ecal/scripts/emcal_electrons.cxx
index 675556c28a6c0bbebc903a1aef87f2a1b4c0cefb..8229652199e7ae6f404aae2d7ba988533da8aad4 100644
--- a/ecal/scripts/emcal_electrons.cxx
+++ b/ecal/scripts/emcal_electrons.cxx
@@ -31,8 +31,8 @@ void emcal_electrons(int n_events = 1e6, double e_start = 0.0, double e_end = 30
   // Constraining the solid angle, but larger than that subtended by the detector
   // https://indico.bnl.gov/event/7449/contributions/35966/attachments/27177/41430/EIC-DWG-Calo-03192020.pdf
   // See a figure on slide 26
-  double cos_theta_min = std::cos(M_PI * (155.0 / 180.0));
-  double cos_theta_max = std::cos(M_PI);
+  double cos_theta_min = std::cos(M_PI * (160.0 / 180.0));
+  double cos_theta_max = std::cos(M_PI * (175.0 / 180.0));
 
   for (events_parsed = 0; events_parsed < n_events; events_parsed++) {
     // FourVector(px,py,pz,e,pdgid,status)
diff --git a/ecal/scripts/emcal_electrons_analysis.cxx b/ecal/scripts/emcal_electrons_analysis.cxx
index 9698b3286b9d64cd2c1c89ef101f6cfe1dd90ed8..f680b81ddd487d2b2e040081586f2e79a088795d 100644
--- a/ecal/scripts/emcal_electrons_analysis.cxx
+++ b/ecal/scripts/emcal_electrons_analysis.cxx
@@ -23,7 +23,7 @@
 using ROOT::RDataFrame;
 using namespace ROOT::VecOps;
 
-void emcal_electrons_analysis(const char* input_fname = "rec_electron_10kEvt.root")
+void emcal_electrons_analysis(const char* input_fname = "rec_emcal_uniform_electrons.root")
 {
   // Setting for graphs
   gROOT->SetStyle("Plain");
@@ -34,6 +34,7 @@ void emcal_electrons_analysis(const char* input_fname = "rec_electron_10kEvt.roo
   gStyle->SetPadGridX(1);
   gStyle->SetPadGridY(1);
   gStyle->SetPadLeftMargin(0.14);
+  gStyle->SetPadRightMargin(0.14);
 
   ROOT::EnableImplicitMT();
   ROOT::RDataFrame d0("events", input_fname);
@@ -150,6 +151,38 @@ void emcal_electrons_analysis(const char* input_fname = "rec_electron_10kEvt.roo
   auto d2 = d1.Filter("ncluster==1");
   auto hClusterE1       = d2.Histo1D({"hClusterE1", "One Cluster Energy; Cluster Energy [GeV]; Events", 100, -0.5, 30.5}, "clusterE");
   auto hEres            = d2.Histo1D({"hEres",      "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_lmom       = d2.Filter([=](std::vector<dd4pod::Geant4ParticleData> const& input) {
+                                        auto Pthr = TMath::Sqrt(input[2].psx*input[2].psx + input[2].psy*input[2].psy + input[2].psz*input[2].psz + input[2].mass*input[2].mass);
+                                        if (Pthr <= 15.0)
+                                                return true;
+                                        return false;}, {"mcparticles2"})
+                            .Histo1D({"hEres_lmom", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_hmom       = d2.Filter([=](std::vector<dd4pod::Geant4ParticleData> const& input) {
+                                        auto Pthr = TMath::Sqrt(input[2].psx*input[2].psx + input[2].psy*input[2].psy + input[2].psz*input[2].psz + input[2].mass*input[2].mass);
+                                        if (Pthr > 15.0)
+                                                return true;
+                                        return false;}, {"mcparticles2"})
+                            .Histo1D({"hEres_hmom", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_leta       = d2.Filter([=](const std::vector<eic::ClusterData>& evt) {
+                                        for(const auto& i: evt) {
+		  				auto r   = TMath::Sqrt(i.position.x*i.position.x + i.position.y*i.position.y + i.position.z*i.position.z);
+						auto th  = TMath::ACos(i.position.z/r)*TMath::RadToDeg();
+						auto eta = -1.0 * TMath::Log(TMath::Tan((th*TMath::DegToRad())/2.0));
+						if (eta <= -2.25)
+                                                	return true;
+					}
+                                        return false;}, {"EcalClusters"})
+                            .Histo1D({"hEres_leta", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_heta       = d2.Filter([=](const std::vector<eic::ClusterData>& evt) {
+					for(const auto& i: evt) {
+                                                auto r   = TMath::Sqrt(i.position.x*i.position.x + i.position.y*i.position.y + i.position.z*i.position.z);
+                                                auto th  = TMath::ACos(i.position.z/r)*TMath::RadToDeg();
+                                                auto eta = -1.0 * TMath::Log(TMath::Tan((th*TMath::DegToRad())/2.0));
+                                                if (eta > -2.25)
+                                                        return true;
+                                        }
+                                        return false;}, {"EcalClusters"})
+                            .Histo1D({"hEres_heta", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
   auto hPratio          = d2.Histo1D({"hPratio",    "Momentum ratio; p_{rec}/p_{thr}; Events",          100, 0.0, 1.0},   "p_ratio");
   auto hPthr_accepted   = d2.Filter([=] (const std::vector<float>& Prec, const std::vector<float>& Pthr) {
   					for (const auto& P1 : Pthr) {
@@ -162,6 +195,9 @@ void emcal_electrons_analysis(const char* input_fname = "rec_electron_10kEvt.roo
   					}
   			           return false;}, {"p_rec","p_thr"})
 	  		    .Histo1D({"hPthr_accepted", "Thrown momentum for reconstructed particle; p_{thr} [GeV]; Events", 100, -0.5, 30.5}, "p_thr");
+  // 2D histograms
+  auto hPrec_Pthr       = d2.Histo2D({"hPrec_Pthr", "p_{rec} vs p_{thr}; p_{rec}[GeV]; p_{thr[GeV]}",     100, -0.5, 30.5, 100, -0.5, 30.5}, "p_rec", "p_thr");
+  auto hEres_Ethr       = d2.Histo2D({"hEres_Ethr", "Energy Resolution vs Ethr; #DeltaE/E; E_{thr}[GeV]", 100, -1.0, 1.0, 100, -0.5, 30.5},  "E_res", "E_thr");
 
   // Cut on Radial Distance
   auto d3 = d2.Filter([=] (const std::vector<eic::ClusterData>& evt) {
@@ -174,9 +210,45 @@ void emcal_electrons_analysis(const char* input_fname = "rec_electron_10kEvt.roo
 					}
 		  		   return false;}, {"EcalClusters"});
   auto hEres_cut      = d3.Histo1D({"hEres_cut",  "Energy Resolution; #DeltaE/E; Events",      100, -1.0, 1.0},    "E_res");
+  auto hEres_cut_lmom = d3.Filter([=](std::vector<dd4pod::Geant4ParticleData> const& input) {
+                                        auto Pthr = TMath::Sqrt(input[2].psx*input[2].psx + input[2].psy*input[2].psy + input[2].psz*input[2].psz + input[2].mass*input[2].mass);
+                                        if (Pthr <= 15.0)
+                                                return true;
+                                        return false;}, {"mcparticles2"})
+                            .Histo1D({"hEres_cut_lmom", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_cut_hmom = d3.Filter([=](std::vector<dd4pod::Geant4ParticleData> const& input) {
+                                        auto Pthr = TMath::Sqrt(input[2].psx*input[2].psx + input[2].psy*input[2].psy + input[2].psz*input[2].psz + input[2].mass*input[2].mass);
+                                        if (Pthr > 15.0)
+                                                return true;
+                                        return false;}, {"mcparticles2"})
+                            .Histo1D({"hEres_cut_hmom", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_cut_leta = d3.Filter([=](const std::vector<eic::ClusterData>& evt) {
+                                        for(const auto& i: evt) {
+                                                auto r   = TMath::Sqrt(i.position.x*i.position.x + i.position.y*i.position.y + i.position.z*i.position.z);
+                                                auto th  = TMath::ACos(i.position.z/r)*TMath::RadToDeg();
+                                                auto eta = -1.0 * TMath::Log(TMath::Tan((th*TMath::DegToRad())/2.0));
+                                                if (eta <= -2.25)
+                                                        return true;
+                                        }
+                                        return false;}, {"EcalClusters"})
+                            .Histo1D({"hEres_cut_leta", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
+  auto hEres_cut_heta = d3.Filter([=](const std::vector<eic::ClusterData>& evt) {
+                                        for(const auto& i: evt) {
+                                                auto r   = TMath::Sqrt(i.position.x*i.position.x + i.position.y*i.position.y + i.position.z*i.position.z);
+                                                auto th  = TMath::ACos(i.position.z/r)*TMath::RadToDeg();
+                                                auto eta = -1.0 * TMath::Log(TMath::Tan((th*TMath::DegToRad())/2.0));
+                                                if (eta > -2.25)
+                                                        return true;
+                                        }
+                                        return false;}, {"EcalClusters"})
+                            .Histo1D({"hEres_cut_heta", "Energy Resolution; #DeltaE/E; Events",             100, -1.0, 1.0},  "E_res");
   auto hTheta_cut     = d3.Histo1D({"hTheta_cut", "Scattering Angle; #theta [degree]; Events", 100, 130.0, 180.0}, "theta");
   auto hEta_cut       = d3.Histo1D({"hEta_cut",   "Pseudo-rapidity; #eta; Events",             100, -5.0, 0.0},    "eta");
 
+  // 2D histograms
+  auto hPrec_Pthr_cut = d3.Histo2D({"hPrec_Pthr_cut", "p_{rec} vs p_{thr}; p_{rec}[GeV]; p_{thr[GeV]}",     100, -0.5, 30.5, 100, -0.5, 30.5}, "p_rec", "p_thr");
+  auto hEres_Ethr_cut = d3.Histo2D({"hEres_Ethr_cut", "Energy Resolution vs Ethr; #DeltaE/E; E_{thr}[GeV]", 100, -1.0, 1.0, 100, -0.5, 30.5},  "E_res", "E_thr");
+
   // Event Counts
   auto nevents_thrown    = d1.Count();
   auto nevents_cluster1  = d2.Count();
@@ -312,4 +384,109 @@ void emcal_electrons_analysis(const char* input_fname = "rec_electron_10kEvt.roo
   hEta_cut->DrawClone();
   c15->SaveAs("results/emcal_electrons_eta_cut.png");
   c15->SaveAs("results/emcal_electrons_eta_cut.pdf");
+
+  TCanvas *c16 = new TCanvas("c16", "c16", 500, 500);
+  hEres_lmom->GetYaxis()->SetTitleOffset(1.4);
+  hEres_lmom->SetLineWidth(2);
+  hEres_lmom->SetLineColor(kBlue);
+  hEres_lmom->Fit("gaus");
+  hEres_lmom->DrawClone();
+  c16->SaveAs("results/emcal_electrons_Eres_lmom.png");
+  c16->SaveAs("results/emcal_electrons_Eres_lmom.pdf");
+
+  TCanvas *c17 = new TCanvas("c17", "c17", 500, 500);
+  hEres_hmom->GetYaxis()->SetTitleOffset(1.4);
+  hEres_hmom->SetLineWidth(2);
+  hEres_hmom->SetLineColor(kBlue);
+  hEres_hmom->Fit("gaus");
+  hEres_hmom->DrawClone();
+  c17->SaveAs("results/emcal_electrons_Eres_hmom.png");
+  c17->SaveAs("results/emcal_electrons_Eres_hmom.pdf");
+
+  TCanvas *c18 = new TCanvas("c18", "c18", 500, 500);
+  hEres_cut_lmom->GetYaxis()->SetTitleOffset(1.4);
+  hEres_cut_lmom->SetLineWidth(2);
+  hEres_cut_lmom->SetLineColor(kBlue);
+  hEres_cut_lmom->Fit("gaus");
+  hEres_cut_lmom->DrawClone();
+  c18->SaveAs("results/emcal_electrons_Eres_cut_lmom.png");
+  c18->SaveAs("results/emcal_electrons_Eres_cut_lmom.pdf");
+
+  TCanvas *c19 = new TCanvas("c19", "c19", 500, 500);
+  hEres_cut_hmom->GetYaxis()->SetTitleOffset(1.4);
+  hEres_cut_hmom->SetLineWidth(2);
+  hEres_cut_hmom->SetLineColor(kBlue);
+  hEres_cut_hmom->Fit("gaus");
+  hEres_cut_hmom->DrawClone();
+  c19->SaveAs("results/emcal_electrons_Eres_cut_hmom.png");
+  c19->SaveAs("results/emcal_electrons_Eres_cut_hmom.pdf");
+
+  TCanvas *c20 = new TCanvas("c20", "c20", 500, 500);
+  hPrec_Pthr->GetYaxis()->SetTitleOffset(1.4);
+  hPrec_Pthr->SetLineWidth(2);
+  hPrec_Pthr->SetLineColor(kBlue);
+  hPrec_Pthr->DrawClone("colz");
+  c20->SaveAs("results/emcal_electrons_Prec_Pthr.png");
+  c20->SaveAs("results/emcal_electrons_Prec_Pthr.pdf");
+
+  TCanvas *c21 = new TCanvas("c21", "c21", 500, 500);
+  hEres_Ethr->GetYaxis()->SetTitleOffset(1.4);
+  hEres_Ethr->SetLineWidth(2);
+  hEres_Ethr->SetLineColor(kBlue);
+  hEres_Ethr->DrawClone("colz");
+  c21->SaveAs("results/emcal_electrons_Eres_Ethr.png");
+  c21->SaveAs("results/emcal_electrons_Eres_Ethr.pdf");
+
+  TCanvas *c22 = new TCanvas("c22", "c22", 500, 500);
+  hEres_leta->GetYaxis()->SetTitleOffset(1.4);
+  hEres_leta->SetLineWidth(2);
+  hEres_leta->SetLineColor(kBlue);
+  hEres_leta->Fit("gaus");
+  hEres_leta->DrawClone();
+  c22->SaveAs("results/emcal_electrons_Eres_leta.png");
+  c22->SaveAs("results/emcal_electrons_Eres_leta.pdf");
+
+  TCanvas *c23 = new TCanvas("c23", "c23", 500, 500);
+  hEres_heta->GetYaxis()->SetTitleOffset(1.4);
+  hEres_heta->SetLineWidth(2);
+  hEres_heta->SetLineColor(kBlue);
+  hEres_heta->Fit("gaus");
+  hEres_heta->DrawClone();
+  c23->SaveAs("results/emcal_electrons_Eres_heta.png");
+  c23->SaveAs("results/emcal_electrons_Eres_heta.pdf");
+
+  TCanvas *c24 = new TCanvas("c24", "c24", 500, 500);
+  hEres_cut_leta->GetYaxis()->SetTitleOffset(1.4);
+  hEres_cut_leta->SetLineWidth(2);
+  hEres_cut_leta->SetLineColor(kBlue);
+  hEres_cut_leta->Fit("gaus");
+  hEres_cut_leta->DrawClone();
+  c24->SaveAs("results/emcal_electrons_Eres_cut_leta.png");
+  c24->SaveAs("results/emcal_electrons_Eres_cut_leta.pdf");
+
+  TCanvas *c25 = new TCanvas("c25", "c25", 500, 500);
+  hEres_cut_heta->GetYaxis()->SetTitleOffset(1.4);
+  hEres_cut_heta->SetLineWidth(2);
+  hEres_cut_heta->SetLineColor(kBlue);
+  hEres_cut_heta->Fit("gaus");
+  hEres_cut_heta->DrawClone();
+  c25->SaveAs("results/emcal_electrons_Eres_cut_heta.png");
+  c25->SaveAs("results/emcal_electrons_Eres_cut_heta.pdf");
+
+  TCanvas *c26 = new TCanvas("c26", "c26", 500, 500);
+  hPrec_Pthr_cut->GetYaxis()->SetTitleOffset(1.4);
+  hPrec_Pthr_cut->SetLineWidth(2);
+  hPrec_Pthr_cut->SetLineColor(kBlue);
+  hPrec_Pthr_cut->DrawClone("colz");
+  c26->SaveAs("results/emcal_electrons_Prec_Pthr_cut.png");
+  c26->SaveAs("results/emcal_electrons_Prec_Pthr_cut.pdf");
+
+  TCanvas *c27 = new TCanvas("c27", "c27", 500, 500);
+  hEres_Ethr_cut->GetYaxis()->SetTitleOffset(1.4);
+  hEres_Ethr_cut->SetLineWidth(2);
+  hEres_Ethr_cut->SetLineColor(kBlue);
+  hEres_Ethr_cut->DrawClone("colz");
+  c27->SaveAs("results/emcal_electrons_Eres_Ethr_cut.png");
+  c27->SaveAs("results/emcal_electrons_Eres_Ethr_cut.pdf");
+
 }