Commit in lcsim/src/org/lcsim/recon/pfa/identifier on MAIN
HelixExtrapolator.java+80-71.5 -> 1.6
Allow for difference in calorimeters when finding distance to first sensitive layer

lcsim/src/org/lcsim/recon/pfa/identifier
HelixExtrapolator.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- HelixExtrapolator.java	26 Jan 2010 16:09:26 -0000	1.5
+++ HelixExtrapolator.java	28 Jan 2010 18:33:40 -0000	1.6
@@ -7,6 +7,8 @@
 import org.lcsim.event.Track;
 import org.lcsim.util.Driver;
 import org.lcsim.geometry.IDDecoder;
+import org.lcsim.geometry.compact.Subdetector;
+import org.lcsim.geometry.subdetector.*;
 import org.lcsim.recon.util.CalorimeterInformation;
 
 abstract public class HelixExtrapolator extends Driver
@@ -102,13 +104,84 @@
 	m_ECAL_barrel_zmax = ci.getZMax("EM_BARREL");
 	m_HCAL_barrel_zmax = ci.getZMax("HAD_BARREL");
 	m_MCAL_barrel_zmax = ci.getZMax("MUON_BARREL");
-	m_ECAL_barrel_r = ci.getSubdetector("EM_BARREL").getLayering().getDistanceToLayerSensorMid(0);
-	m_HCAL_barrel_r = ci.getSubdetector("HAD_BARREL").getLayering().getDistanceToLayerSensorMid(0);
-	m_MCAL_barrel_r = ci.getSubdetector("MUON_BARREL").getLayering().getDistanceToLayerSensorMid(0);
-	m_ECAL_endcap_z = ci.getSubdetector("EM_ENDCAP").getLayering().getDistanceToLayerSensorMid(0);
-	m_HCAL_endcap_z = ci.getSubdetector("HAD_ENDCAP").getLayering().getDistanceToLayerSensorMid(0);
-	m_MCAL_endcap_z = ci.getSubdetector("EM_ENDCAP").getLayering().getDistanceToLayerSensorMid(0);
-	m_FCAL_endcap_z = ci.getSubdetector("LUMI").getLayering().getDistanceToLayerSensorMid(0);
+        Subdetector s = ci.getSubdetector("EM_BARREL");
+        double rm = ci.getRMin("EM_BARREL");
+        if(s instanceof CylindricalBarrelCalorimeter)
+        {
+            m_ECAL_barrel_r = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_ECAL_barrel_r = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
+        s = ci.getSubdetector("HAD_BARREL");
+        rm = ci.getRMin("HAD_BARREL");
+        if(s instanceof CylindricalBarrelCalorimeter)
+        {
+            m_HCAL_barrel_r = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_HCAL_barrel_r = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
+        s = ci.getSubdetector("MUON_BARREL");
+        rm = ci.getRMin("MUON_BARREL");
+        if(s instanceof CylindricalBarrelCalorimeter)
+        {
+            m_MCAL_barrel_r = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_MCAL_barrel_r = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
+
+        s = ci.getSubdetector("EM_ENDCAP");
+        rm = ci.getZMin("EM_ENDCAP");
+        if(s instanceof CylindricalEndcapCalorimeter)
+        {
+            m_ECAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_ECAL_endcap_z = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
+        s = ci.getSubdetector("HAD_ENDCAP");
+        rm = ci.getZMin("HAD_ENDCAP");
+        if(s instanceof CylindricalEndcapCalorimeter)
+        {
+            m_HCAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_HCAL_endcap_z = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
+        s = ci.getSubdetector("MUON_ENDCAP");
+        rm = ci.getZMin("MUON_ENDCAP");
+        if(s instanceof CylindricalEndcapCalorimeter)
+        {
+            m_MCAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_MCAL_endcap_z = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
+        s = ci.getSubdetector("LUMI");
+        rm = ci.getZMin("LUMI");
+        if(s instanceof CylindricalEndcapCalorimeter)
+        {
+            m_FCAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
+        }
+        else
+        {
+            m_FCAL_endcap_z = rm + s.getLayering().getDistanceToLayerSensorMid(0);
+
+        }
 	m_ECAL_endcap_rmin = ci.getRMin("EM_ENDCAP");
 	m_HCAL_endcap_rmin = ci.getRMin("HAD_ENDCAP");
 	m_MCAL_endcap_rmin = ci.getRMin("MUON_ENDCAP");
CVSspam 0.2.8