diff --git a/UtilityApps/src/materialBudget.cpp b/UtilityApps/src/materialBudget.cpp
index 8e74a00e48f2c2e3821441ef69feeb201a4efffd..28c91aa455961c6cf9721dc03b0f354c1ac011d0 100644
--- a/UtilityApps/src/materialBudget.cpp
+++ b/UtilityApps/src/materialBudget.cpp
@@ -105,6 +105,7 @@ int main_wrapper(int argc, char** argv)   {
   std::string steeringFile =  argv[2];
   int nbins = 90 ;
   double phi0 = M_PI / 2. ;
+  double etaMax = -1. ;
   std::string outFileName("material_budget.root") ;
   std::vector<SDetHelper> subdets ;
     
@@ -126,6 +127,9 @@ int main_wrapper(int argc, char** argv)   {
     if( token == "nbins" ){
       iss >> nbins ;
     }
+    else if( token == "etaMax" ){
+      iss >> etaMax ;
+    }
     else if( token == "rootfile" ){
       iss >> outFileName ;
     }
@@ -160,13 +164,27 @@ int main_wrapper(int argc, char** argv)   {
 
     std::string hxn(det.name), hxnn(det.name) ;
     std::string hln(det.name), hlnn(det.name) ;
-    hxn += "x0" ;
-    hxnn += " integrated X0 vs -theta" ;
-    det.hx = new TH1F( hxn.c_str(), hxnn.c_str(), nbins, -90. , 0. ) ;
 
-    hln += "lambda" ;
-    hlnn += " integrated int. lengths vs -theta" ;
-    det.hl = new TH1F( hln.c_str(), hlnn.c_str(), nbins, -90. , 0. ) ;
+    if( etaMax > 0. ) {  // use eta
+
+      hxn += "x0" ;
+      hxnn += " integrated X0 vs eta" ;
+      det.hx = new TH1F( hxn.c_str(), hxnn.c_str(), nbins, 0. , etaMax ) ;
+
+      hln += "lambda" ;
+      hlnn += " integrated int. lengths vs eta" ;
+      det.hl = new TH1F( hln.c_str(), hlnn.c_str(), nbins,  0. , etaMax ) ;
+
+    } else {   // use polar angle
+
+      hxn += "x0" ;
+      hxnn += " integrated X0 vs -theta" ;
+      det.hx = new TH1F( hxn.c_str(), hxnn.c_str(), nbins, -90. , 0. ) ;
+
+      hln += "lambda" ;
+      hlnn += " integrated int. lengths vs -theta" ;
+      det.hl = new TH1F( hln.c_str(), hlnn.c_str(), nbins, -90. , 0. ) ;
+    }
 
   }
   //-------------------------
@@ -177,6 +195,7 @@ int main_wrapper(int argc, char** argv)   {
   MaterialManager matMgr( world ) ;
   
   double dTheta = 0.5*M_PI/nbins; // bin size
+  double dEta  = etaMax/nbins ;
 
   std::cout  << "====================================================================================================" << std::endl ;
 
@@ -186,7 +205,7 @@ int main_wrapper(int argc, char** argv)   {
   
   for(int i=0 ; i< nbins ;++i){
 
-    double theta = (0.5+i)*dTheta ;
+    double theta = ( etaMax > 0. ?  2. * atan ( exp ( - (0.5+i)*dEta ) ) : (0.5+i)*dTheta  ) ;
 
     std::cout << std::scientific << theta << " " ;
     
@@ -210,8 +229,11 @@ int main_wrapper(int argc, char** argv)   {
 	path_length += length;
       }
 
-      det.hx->Fill( -theta/M_PI*180. , sum_x0 ) ;
-      det.hl->Fill( -theta/M_PI*180. , sum_lambda ) ;
+
+      double binX = ( etaMax > 0. ? (0.5+i)*dEta : -theta/M_PI*180. ) ;
+
+      det.hx->Fill( binX , sum_x0 ) ;
+      det.hl->Fill( binX , sum_lambda ) ;
 
       std::cout  << std::scientific  << sum_x0 << "  " << sum_lambda << "  " ; // << path_length ;
 
@@ -239,6 +261,9 @@ void dumpExampleSteering(){
   std::cout << "# number of bins for polar angle (default 90)" << std::endl ;
   std::cout << "nbins 90" << std::endl ;
   std::cout <<  std::endl ;
+  std::cout << "# use pseudo rapidity rather than polar angle - specify maximum eta value" << std::endl ;
+  std::cout << "# etaMax 3." << std::endl ;
+  std::cout <<  std::endl ;
   std::cout << "# phi direction in deg (default: 90./y-axis)" << std::endl ;
   std::cout << "phi 90." << std::endl ;
   std::cout <<  std::endl ;