diff --git a/DDRec/include/DDRec/DetectorData.h b/DDRec/include/DDRec/DetectorData.h
index 899346e04f09d6ed3c96a9555facb4a9430b0bc7..fef36cd9f50938ae5581de34ea6818f905f680b6 100644
--- a/DDRec/include/DDRec/DetectorData.h
+++ b/DDRec/include/DDRec/DetectorData.h
@@ -256,8 +256,7 @@ namespace DD4hep {
 
 
 
-    /** Simple data structure defining a 
-     *  layered calorimeter layout for
+    /** Simple data structure defining a layered calorimeter layout for
      *  reconstruction. 
      * 
      * @author F.Gaede, CERN/DESY
@@ -278,13 +277,21 @@ namespace DD4hep {
       /// extent of the calorimeter in the r-z-plane [ rmin, rmax, zmin, zmax ] in mm.
       double extent[4] ;
 
-      /** the order of the rotational symmetry:
+      /** the order of the rotational symmetry at the outside:
        *  8 for an octagonal barrel calorimeter
        *  2 for an endcap calorimeter
        *  1 for a standalone prototype
        *  0 for an idealized cylindrical calorimeter.
        */
-      int symmetry ;
+      int outer_symmetry ;
+
+      /** the order of the rotational symmetry at the inside:
+       *  8 for an octagonal barrel calorimeter
+       *  2 for an endcap calorimeter
+       *  1 for a standalone prototype
+       *  0 for an idealized cylindrical calorimeter.
+       */
+      int inner_symmetry ;
 
       /// azimuthal angle of the first module in barrel layout
       double  phi0  ;
diff --git a/DDRec/src/gear/createGearForILD.cpp b/DDRec/src/gear/createGearForILD.cpp
index aeb50463c9631ad1f90de1fe9a3692bd1526d083..a240eec22076580fea3bef58027c4d8b02427770 100644
--- a/DDRec/src/gear/createGearForILD.cpp
+++ b/DDRec/src/gear/createGearForILD.cpp
@@ -192,7 +192,7 @@ namespace DD4hep{
 	gearSET->setDoubleVal("strip_length_mm" , set->lengthStrip/ dd4hep::mm ) ;
 	gearSET->setDoubleVal("strip_pitch_mm"  , set->pitchStrip / dd4hep::mm ) ;
 	gearSET->setDoubleVal("strip_angle_deg" , set->angleStrip / dd4hep::deg ) ;
-	
+
 	
 	gearSET->setIntVals("n_sensors_per_ladder",n_sensors_per_ladder);
 	
@@ -300,41 +300,71 @@ namespace DD4hep{
       //========= CALO ==============================================================================
 
       //**********************************************************
-      //*  test gear interface w/ LayeredCalorimeterData extension
+      //*  gear interface w/ LayeredCalorimeterData extension
       //**********************************************************
 
-      try {
+      std::map< std::string, std::string > caloMap ;
+      caloMap["HcalBarrel"] = "HcalBarrelParameters"  ; 
+      caloMap["EcalBarrel"] = "EcalBarrelParameters" ;
+      caloMap["EcalEndcap"] = "EcalEndcapParameters" ;
+      caloMap["EcalPlug"]   = "EcalPlugParameters" ;
+      caloMap["YokeBarrel"] = "YokeBarrelParameters" ;
+      caloMap["YokeEndcap"] = "YokeEndcapParameters" ;
+      caloMap["YokePlug"]   = "YokePlugParameters" ;
+      caloMap["HcalBarrel"] = "HcalBarrelParameters" ;
+      caloMap["HcalEndcap"] = "HcalEndcapParameters" ;
+      caloMap["HcalRing"]   = "HcalRingParameters" ;
+      caloMap["Lcal"]	    = "LcalParameters" ;
+      caloMap["LHcal"]	    = "LHcalParameters" ;
+      caloMap["BeamCal"]    = "BeamCalParameters" ;
+      
+      for(  std::map< std::string, std::string >::const_iterator it = caloMap.begin() ; it != caloMap.end() ; ++it ){
 
-	DetElement caloDE = lcdd.detector("HcalBarrel") ;
-	
-	LayeredCalorimeterData* calo = caloDE.extension<LayeredCalorimeterData>() ;
       
-	gear::CalorimeterParametersImpl* gearCalo = 
-	  ( calo->layoutType == LayeredCalorimeterData::BarrelLayout  ?
-	    new gear::CalorimeterParametersImpl(  calo->extent[0]/dd4hep::mm, calo->extent[3]/dd4hep::mm, calo->symmetry, calo->phi0 )  :
-	    //CalorimeterParametersImpl (double rMin, double zMax, int symOrder=8, double phi0=0.0) - C'tor for a cylindrical (octagonal) BARREL calorimeter.
-	    new gear::CalorimeterParametersImpl(  calo->extent[0]/dd4hep::mm,  calo->extent[1]/dd4hep::mm,  calo->extent[2]/dd4hep::mm, calo->symmetry, calo->phi0 )   ) ;
-	//CalorimeterParametersImpl (double rMin, double rMax, double zMin, int symOrder=2, double phi0=0.0) - C'tor for a cylindrical (octagonal) ENDCAP calorimeter. 
-	
-	for( unsigned i=0, nL = calo->layers.size() ; i <nL ; ++i ){
+
+	try {
+
+	  DetElement caloDE = lcdd.detector( it->first ) ;
+	
+	  LayeredCalorimeterData* calo = caloDE.extension<LayeredCalorimeterData>() ;
 	  
-	  LayeredCalorimeterData::Layer& l = calo->layers[i] ;
+	  gear::CalorimeterParametersImpl* gearCalo = 
+	    ( calo->layoutType == LayeredCalorimeterData::BarrelLayout  ?
+	      new gear::CalorimeterParametersImpl(  calo->extent[0]/dd4hep::mm, calo->extent[3]/dd4hep::mm, calo->inner_symmetry, calo->phi0 )  :
+	      //CalorimeterParametersImpl (double rMin, double zMax, int symOrder=8, double phi0=0.0) - C'tor for a cylindrical (octagonal) BARREL calorimeter.
+	      new gear::CalorimeterParametersImpl(  calo->extent[0]/dd4hep::mm,  calo->extent[1]/dd4hep::mm,  calo->extent[2]/dd4hep::mm, calo->outer_symmetry, calo->phi0 )   ) ;
+	  //CalorimeterParametersImpl (double rMin, double rMax, double zMin, int symOrder=2, double phi0=0.0) - C'tor for a cylindrical (octagonal) ENDCAP calorimeter. 
 	  
-	  if( i == 0 ) {
-	    gearCalo->layerLayout().positionLayer( l.distance/dd4hep::mm, l.thickness/dd4hep::mm , l.cellSize0/dd4hep::mm, l.cellSize1/dd4hep::mm, l.absorberThickness/dd4hep::mm ) ;
-	  }else{
-	    gearCalo->layerLayout().addLayer(                             l.thickness/dd4hep::mm , l.cellSize0/dd4hep::mm, l.cellSize1/dd4hep::mm, l.absorberThickness/dd4hep::mm ) ;
+	  for( unsigned i=0, nL = calo->layers.size() ; i <nL ; ++i ){
+	    
+	    LayeredCalorimeterData::Layer& l = calo->layers[i] ;
+	    
+	    if( i == 0 ) {
+	      gearCalo->layerLayout().positionLayer( l.distance/dd4hep::mm, l.thickness/dd4hep::mm , 
+						     l.cellSize0/dd4hep::mm, l.cellSize1/dd4hep::mm, l.absorberThickness/dd4hep::mm ) ;
+	    }else{
+	      gearCalo->layerLayout().addLayer(                             l.thickness/dd4hep::mm , 
+									    l.cellSize0/dd4hep::mm, l.cellSize1/dd4hep::mm, l.absorberThickness/dd4hep::mm ) ;
+	    }
+	    
 	  }
-	  
-	  
-	}
 	
-	caloDE.addExtension< GearHandle >( new GearHandle( gearCalo, "HcalBarrelParameters" ) ) ;
-      
+	  if( it->first == "HcalBarrel" ){
+	    // additional parameters needed by MarlinPandora
+	    gearCalo->setIntVal("Hcal_outer_polygon_order"   , calo->outer_symmetry  ) ;
+	    gearCalo->setDoubleVal("Hcal_outer_polygon_phi0" ,  calo->phi0 ) ;
+	  }
+		  
+
+
+	  caloDE.addExtension< GearHandle >( new GearHandle( gearCalo, it->second ) ) ;
+
+	} catch( std::runtime_error& e ){  
+	  std::cerr << " >>>> " << e.what() << std::endl ;
+	} 
+
+      } // calo loop 
 
-      } catch( std::runtime_error& e ){  
-	std::cerr << " >>>> " << e.what() << std::endl ;
-      } 
 
 
       //**********************************************************