lcsim/src/org/lcsim/recon/pfa/identifier
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");