diff --git a/benchmarks/others/config.yml b/benchmarks/others/config.yml
index 3c4348d4a7f4ad11d1099bf8bfc0bd56db501d92..718b572faeac190eef1f067dc9a465f7f084cd90 100644
--- a/benchmarks/others/config.yml
+++ b/benchmarks/others/config.yml
@@ -2,13 +2,33 @@ bench:materialscan:
   stage: benchmarks
   extends: .det_benchmark
   script:
-    - echo ".x benchmarks/others/materialScan.cxx(-4.5, +4.5, 0.01, 500.)" | materialScan ${DETECTOR_PATH}/${JUGGLER_DETECTOR}.xml -interactive
-    - mkdir results/images/ && mv materialScan.png materialScan.pdf results/images/
+    - echo ".x benchmarks/others/materialScan.cxx(-4.5, +4.5, 0.01, 750., 0.0)" | materialScan ${DETECTOR_PATH}/${JUGGLER_DETECTOR}.xml -interactive
+    - mkdir results/images/
+    - mv materialScan.png results/images/materialScan.png
+    - mv materialScan.pdf results/images/materialScan.pdf
+
+bench:materialscan:tracking:
+  stage: benchmarks
+  extends: .det_benchmark
+  script:
+    - echo ".x benchmarks/others/materialScan.cxx(-4.5, +4.5, 0.01, 750., 0.0, 103., 191., 350.)" | materialScan ${DETECTOR_PATH}/${JUGGLER_DETECTOR}.xml -interactive
+    - mkdir results/images/
+    - mv materialScan.png results/images/materialScanTracking.png
+    - mv materialScan.pdf results/images/materialScanTracking.pdf
+
+bench:materialscan:ecal:
+  stage: benchmarks
+  extends: .det_benchmark
+  script:
+    - echo ".x benchmarks/others/materialScan.cxx(-4.5, +4.5, 0.01, 750., 0.0, 230., 355., 380.)" | materialScan ${DETECTOR_PATH}/${JUGGLER_DETECTOR}.xml -interactive
+    - mkdir results/images/
+    - mv materialScan.png results/images/materialScanEcal.png
+    - mv materialScan.pdf results/images/materialScanEcal.pdf
 
 collect_results:materialscan:
   extends: .det_benchmark
   stage: collect
   needs:
-    - ["bench:materialscan"]
+    - ["bench:materialscan", "bench:materialscan:tracking"]
   script:
     - ls -lrht
diff --git a/benchmarks/others/materialScan.cxx b/benchmarks/others/materialScan.cxx
index 678e88101e41323dd396feddc589bf9e491bd823..dbc7cfc8f2a84cb21698f0849439a65fa5b58d6a 100644
--- a/benchmarks/others/materialScan.cxx
+++ b/benchmarks/others/materialScan.cxx
@@ -41,12 +41,15 @@ Color_t color(const Material& m) {
 }
 
 void materialScan(
-    double etamin = -2.0,
-    double etamax = +1.0,
-    double etastep = 0.2,
-    double rmax = 100.0,
-    double phi = 0.0)
-{
+    double etamin = -2.0, // minimum eta
+    double etamax = +1.0, // maximum eta
+    double etastep = 0.2, // steps in eta
+    double rmax = 100.0, // maximum radius to scan to
+    double phi = 0.0, // phi angle for material scan
+    double rhomax = 10000.0, // maximum distance from z axis
+    double znmax = 10000.0, // maximum negative endcap z plane (positive number)
+    double zpmax = 10000.0 // maximum positive endcap z plane (positive number)
+) {
   // check inputs
   if (etamin > etamax || rmax <= 0.0) {
     std::cout << "Error: ordered eta range required" << std::endl;
@@ -58,10 +61,11 @@ void materialScan(
   std::vector<dd4hep::rec::MaterialVec> scan;
   double x0{0}, y0{0}, z0{0};
   for (double eta = etamin; eta <= etamax + 0.5*etastep; eta += etastep) {
-    double theta = 2.0 * atan(exp(-eta));
-    double x = rmax * cos(phi) * sin(theta);
-    double y = rmax * sin(phi) * sin(theta);
-    double z = rmax * cos(theta);
+    double theta = 2.0 * (atan(1) - atan(exp(-eta)));
+    double r = min((theta > 0? zpmax: -znmax) / sin(theta), min(rmax, rhomax / cos(theta)));
+    double x = r * cos(theta) * cos(phi);
+    double y = r * cos(theta) * sin(phi);
+    double z = r * sin(theta); 
     scan.emplace_back(gMaterialScan->scan(x0,y0,z0,x,y,z));
     total += scan.back().size();
   }
@@ -101,7 +105,7 @@ void materialScan(
   std::cout << histograms.size() << " histograms created" << std::endl;
 
   // plot histograms as stack
-  THStack hs("hs",Form("Material Scan (max distance %.0f cm)",rmax));
+  THStack hs("hs",Form("Material Scan (r < %.0f cm, rho < %.0f cm, -%.0f cm < z < %.0f cm)", rmax, rhomax, znmax, zpmax));
   for (auto& h: histograms) {
     hs.Add(&h);
   }
@@ -112,7 +116,6 @@ void materialScan(
   hs.GetXaxis()->SetTitle("eta");
   hs.GetYaxis()->SetTitle("Fraction X0");
   hs.SetMinimum(2.5e-3);
-  hs.SetMaximum(100.);
   cs.SaveAs("materialScan.png");
   cs.SaveAs("materialScan.pdf");
 }