7 modified files
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.3 -r1.4
--- SmallPhotonMaker.java 16 May 2007 21:25:43 -0000 1.3
+++ SmallPhotonMaker.java 8 Mar 2010 19:38:30 -0000 1.4
@@ -2,19 +2,19 @@
import java.util.*;
import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.BasicHep3Vector;
import hep.physics.vec.BasicHepLorentzVector;
import hep.physics.vec.HepLorentzVector;
import org.lcsim.recon.cluster.structural.FragmentIdentifier;
import org.lcsim.event.EventHeader;
-import org.lcsim.util.Driver;
import org.lcsim.event.Cluster;
import org.lcsim.event.CalorimeterHit;
-import org.lcsim.geometry.Detector;
import org.lcsim.event.ReconstructedParticle;
import org.lcsim.event.MCParticle;
import org.lcsim.event.SimCalorimeterHit;
import org.lcsim.event.base.BaseReconstructedParticle;
+import org.lcsim.geometry.Calorimeter.CalorimeterType;
+import org.lcsim.recon.util.CalorimeterInformation;
+import org.lcsim.geometry.Subdetector;
/**
* Given a list of clusters, make ones that are consistent with
@@ -30,6 +30,9 @@
public class SmallPhotonMaker extends SimpleNeutralParticleMaker
{
protected FragmentIdentifier m_fragID = null;
+ protected CalorimeterInformation ci;
+ protected Subdetector emb;
+ protected Subdetector eme;
public SmallPhotonMaker(FragmentIdentifier fragID) {
super(22); // make photons
m_fragID = fragID;
@@ -49,7 +52,7 @@
if (m_fragID.isFragment(clus, event)) {
// Small cluster/fragment -- is it photon-like?
CalorimeterHit firstHitInECAL = findInnermostHitInECAL(clus);
- boolean isPhoton = (firstHitInECAL!=null && getLayer(firstHitInECAL)<4);
+ boolean isPhoton = (firstHitInECAL!=null && getVLayer(firstHitInECAL)<4);
if (isPhoton) {
BaseReconstructedParticle part = new BaseReconstructedParticle();
part.addCluster(clus);
@@ -73,7 +76,7 @@
if (firstHitInECAL==null) {
printme += "[null]";
} else {
- printme += getLayer(firstHitInECAL);
+ printme += getVLayer(firstHitInECAL);
}
printme += " => isPhoton="+isPhoton;
printme += ". True contributions: ";
@@ -111,15 +114,20 @@
protected CalorimeterHit findInnermostHitInECAL(Cluster clus) {
+ if(ci == null)
+ {
+ ci = CalorimeterInformation.instance();
+ emb = ci.getSubdetector(CalorimeterType.EM_BARREL);
+ eme = ci.getSubdetector(CalorimeterType.EM_ENDCAP);
+ }
CalorimeterHit innermostHit = null;
for (CalorimeterHit hit : clus.getCalorimeterHits()) {
- int layer = getLayer(hit);
- org.lcsim.geometry.Subdetector subdet = hit.getSubdetector();
+ int layer = getVLayer(hit);
+ Subdetector subdet = hit.getSubdetector();
if ( ! subdet.isCalorimeter() ) { throw new AssertionError("Cluster hit outside calorimeter"); }
- String name = subdet.getName();
- if (name.compareTo("EMBarrel") == 0 || name.compareTo("EMEndcap") == 0) {
+ if (subdet == eme || subdet == emb) {
// EM -- OK
- if (innermostHit==null || getLayer(innermostHit)>layer) {
+ if (innermostHit==null || getVLayer(innermostHit)>layer) {
innermostHit = hit;
}
}
@@ -127,10 +135,10 @@
return innermostHit;
}
- protected int getLayer(CalorimeterHit hit) {
+ protected int getVLayer(CalorimeterHit hit) {
org.lcsim.geometry.IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- int layer = id.getLayer();
+ int layer = id.getVLayer();
return layer;
}
}
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.1 -r1.2
--- CheatTrackClusterMatcher.java 16 Jan 2008 21:12:15 -0000 1.1
+++ CheatTrackClusterMatcher.java 8 Mar 2010 19:38:30 -0000 1.2
@@ -16,11 +16,16 @@
import org.lcsim.util.swim.HelixSwimmer;
import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
import org.lcsim.geometry.Detector;
-import org.lcsim.recon.pfa.identifier.TrackClusterMatcher;
+import org.lcsim.geometry.Calorimeter.CalorimeterType;
+import org.lcsim.recon.util.CalorimeterInformation;
+import org.lcsim.geometry.Subdetector;
public class CheatTrackClusterMatcher extends Driver implements TrackClusterMatcher
{
String m_mcListName;
+ protected CalorimeterInformation ci;
+ protected Subdetector emb;
+ protected Subdetector eme;
public CheatTrackClusterMatcher(String mcList) {
m_mcListName = mcList;
@@ -105,13 +110,13 @@
CalorimeterHit innermostHitInECAL = findInnermostHitInECAL(hits);
if (innermostHitInECAL != null) {
// There is an ECAL innermost hit...
- int layer = getLayer(innermostHitInECAL);
+ int layer = getVLayer(innermostHitInECAL);
// Check if in first two layers
if (layer < 2) {
clustersWithHitsInFirstTwoLayers.add(clus);
}
// Check if is current innermost cluster
- if (clusterWithInnermostHitLayer == null || layer < getLayer(globalInnermostHitInECAL)) {
+ if (clusterWithInnermostHitLayer == null || layer < getVLayer(globalInnermostHitInECAL)) {
globalInnermostHitInECAL = innermostHitInECAL;
clusterWithInnermostHitLayer = clus;
}
@@ -120,12 +125,12 @@
String printme = new String("DEBUG: Scanned a cluster with "+hits.size()+" hits: ");
if (innermostHitInECAL != null) {
printme += " Has ECAL hit(s). Innermost hit in layer ";
- printme += getLayer(innermostHitInECAL);
- if (getLayer(innermostHitInECAL) < 2) {
+ printme += getVLayer(innermostHitInECAL);
+ if (getVLayer(innermostHitInECAL) < 2) {
printme += " which is in first two layers";
}
if (clusterWithInnermostHitLayer == clus) {
- printme += " so this is the innermost cluster (global innermost hit layer="+getLayer(globalInnermostHitInECAL)+")";
+ printme += " so this is the innermost cluster (global innermost hit layer="+getVLayer(globalInnermostHitInECAL)+")";
}
} else {
printme += " No ECAL hits.";
@@ -198,14 +203,12 @@
for (Cluster clus : clustersWithHitsInFirstTwoLayers) {
List<CalorimeterHit> hits = clustersWithContributions.get(clus);
CalorimeterHit innermostHitInECAL = findInnermostHitInECAL(hits);
- if (m_debug) { System.out.println("DEBUG: Cluster with "+hits.size()+" / "+clus.getCalorimeterHits().size()+" hits matched, and first ECAL hit in layer "+getLayer(innermostHitInECAL)+" of "+innermostHitInECAL.getSubdetector().getName()); }
- CalorimeterHit nearestHitInClusterToInterceptPoint = null;
+ if (m_debug) { System.out.println("DEBUG: Cluster with "+hits.size()+" / "+clus.getCalorimeterHits().size()+" hits matched, and first ECAL hit in layer "+getVLayer(innermostHitInECAL)+" of "+innermostHitInECAL.getSubdetector().getName()); }
for (CalorimeterHit hit : hits) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
if (layer==0 || layer==1) {
- org.lcsim.geometry.Subdetector subdet = hit.getSubdetector();
- String name = subdet.getName();
- if (name.compareTo("EMBarrel") == 0 || name.compareTo("EMEndcap") == 0) {
+ Subdetector subdet = hit.getSubdetector();
+ if (subdet == emb || subdet == eme) {
// EM -- OK
double distance = proximity(trackPoint, hit);
if (m_debug) { System.out.println("DEBUG: Hit in ECAL layer "+layer+" distance from intercept point: "+distance); }
@@ -237,13 +240,12 @@
protected CalorimeterHit findInnermostHitInECAL(List<CalorimeterHit> hits) {
CalorimeterHit innermostHit = null;
for (CalorimeterHit hit : hits) {
- int layer = getLayer(hit);
- org.lcsim.geometry.Subdetector subdet = hit.getSubdetector();
+ int layer = getVLayer(hit);
+ Subdetector subdet = hit.getSubdetector();
if ( ! subdet.isCalorimeter() ) { throw new AssertionError("Cluster hit outside calorimeter"); }
- String name = subdet.getName();
- if (name.compareTo("EMBarrel") == 0 || name.compareTo("EMEndcap") == 0) {
+ if (subdet == emb || subdet == eme) {
// EM -- OK
- if (innermostHit==null || getLayer(innermostHit)>layer) {
+ if (innermostHit==null || getVLayer(innermostHit)>layer) {
innermostHit = hit;
}
}
@@ -251,11 +253,11 @@
return innermostHit;
}
- protected int getLayer(CalorimeterHit hit) {
+ protected int getVLayer(CalorimeterHit hit) {
if (hit==null) { throw new AssertionError("hit is null"); }
org.lcsim.geometry.IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- int layer = id.getLayer();
+ int layer = id.getVLayer();
return layer;
}
@@ -352,26 +354,32 @@
public void initGeometry(EventHeader event)
{
- Detector det = event.getDetector();
- CylindricalCalorimeter emb = ((CylindricalCalorimeter) det.getSubdetectors().get("EMBarrel"));
- CylindricalCalorimeter eme = ((CylindricalCalorimeter) det.getSubdetectors().get("EMEndcap"));
- m_ECAL_barrel_zmin = emb.getZMin();
- m_ECAL_barrel_zmax = emb.getZMax();
- m_ECAL_barrel_r = emb.getLayering().getDistanceToLayerSensorMid(0);
- m_ECAL_endcap_z = eme.getLayering().getDistanceToLayerSensorMid(0);
- m_ECAL_endcap_rmin = eme.getInnerRadius();
- m_ECAL_endcap_rmax = eme.getOuterRadius();
- double[] zero = {0, 0, 0};
- m_fieldStrength = det.getFieldMap().getField(zero);
- m_init = true;
- if (m_debug) {
- System.out.println(this.getClass().getName()+": Init: ECAL barrel zmin="+m_ECAL_barrel_zmin);
- System.out.println(this.getClass().getName()+": Init: ECAL barrel zmax="+m_ECAL_barrel_zmax);
- System.out.println(this.getClass().getName()+": Init: ECAL barrel r="+m_ECAL_barrel_r);
- System.out.println(this.getClass().getName()+": Init: ECAL endcap z="+m_ECAL_endcap_z);
- System.out.println(this.getClass().getName()+": Init: ECAL endcap rmin="+m_ECAL_endcap_rmin);
- System.out.println(this.getClass().getName()+": Init: ECAL endcap rmax="+m_ECAL_endcap_rmax);
- }
+ if(!m_init)
+ {
+ if(ci == null)
+ {
+ ci = CalorimeterInformation.instance();
+ emb = ci.getSubdetector(CalorimeterType.EM_BARREL);
+ eme = ci.getSubdetector(CalorimeterType.EM_ENDCAP);
+ }
+ m_ECAL_barrel_zmin = ci.getZMin(CalorimeterType.EM_BARREL);
+ m_ECAL_barrel_zmax = ci.getZMax(CalorimeterType.EM_BARREL);
+ m_ECAL_barrel_r = emb.getLayering().getDistanceToLayerSensorMid(0);
+ m_ECAL_endcap_z = eme.getLayering().getDistanceToLayerSensorMid(0);
+ m_ECAL_endcap_rmin = ci.getRMin(CalorimeterType.EM_ENDCAP);
+ m_ECAL_endcap_rmax = ci.getRMax(CalorimeterType.EM_ENDCAP);
+ double[] zero = {0, 0, 0};
+ m_fieldStrength = event.getDetector().getFieldMap().getField(zero);
+ m_init = true;
+ if (m_debug) {
+ System.out.println(this.getClass().getName()+": Init: ECAL barrel zmin="+m_ECAL_barrel_zmin);
+ System.out.println(this.getClass().getName()+": Init: ECAL barrel zmax="+m_ECAL_barrel_zmax);
+ System.out.println(this.getClass().getName()+": Init: ECAL barrel r="+m_ECAL_barrel_r);
+ System.out.println(this.getClass().getName()+": Init: ECAL endcap z="+m_ECAL_endcap_z);
+ System.out.println(this.getClass().getName()+": Init: ECAL endcap rmin="+m_ECAL_endcap_rmin);
+ System.out.println(this.getClass().getName()+": Init: ECAL endcap rmax="+m_ECAL_endcap_rmax);
+ }
+ }
}
public void setDebug(boolean debug) { m_debug = debug; }
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.8 -r1.9
--- HelixExtrapolator.java 4 Feb 2010 17:45:32 -0000 1.8
+++ HelixExtrapolator.java 8 Mar 2010 19:38:30 -0000 1.9
@@ -128,33 +128,13 @@
m_MCAL_barrel_r = mbr0 + s.getLayering().getDistanceToLayerSensorMid(0);
s = ci.getSubdetector(CalorimeterType.EM_ENDCAP);
- double eer0 = ci.getZMin(CalorimeterType.EM_ENDCAP);
- if(s instanceof CylindricalEndcapCalorimeter)
- {
- eer0 = 0.;
- }
- m_ECAL_endcap_z = eer0 + s.getLayering().getDistanceToLayerSensorMid(0);
+ m_ECAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
s = ci.getSubdetector(CalorimeterType.HAD_ENDCAP);
- double her0 = ci.getZMin(CalorimeterType.HAD_ENDCAP);
- if(s instanceof CylindricalEndcapCalorimeter)
- {
- her0 = 0.;
- }
- m_HCAL_endcap_z = her0 + s.getLayering().getDistanceToLayerSensorMid(0);
+ m_HCAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
s = ci.getSubdetector(CalorimeterType.MUON_ENDCAP);
- double mer0 = ci.getZMin(CalorimeterType.MUON_ENDCAP);
- if(s instanceof CylindricalEndcapCalorimeter)
- {
- mer0 = 0.;
- }
- m_MCAL_endcap_z = mer0 + s.getLayering().getDistanceToLayerSensorMid(0);
+ m_MCAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
s = ci.getSubdetector(CalorimeterType.LUMI);
- double ler0 = ci.getZMin(CalorimeterType.LUMI);
- if(s instanceof CylindricalEndcapCalorimeter)
- {
- ler0 = 0.;
- }
- m_FCAL_endcap_z = ler0 + s.getLayering().getDistanceToLayerSensorMid(0);
+ m_FCAL_endcap_z = s.getLayering().getDistanceToLayerSensorMid(0);
m_ECAL_endcap_rmin = ci.getRMin(CalorimeterType.EM_ENDCAP);
m_HCAL_endcap_rmin = ci.getRMin(CalorimeterType.HAD_ENDCAP);
m_MCAL_endcap_rmin = ci.getRMin(CalorimeterType.MUON_ENDCAP);
@@ -173,7 +153,7 @@
}
m_ECAL_endcap_layering_z = new Vector<Double>();
for (int iLayer=0; iLayer<ci.getNLayers(CalorimeterType.EM_ENDCAP); iLayer++) {
- double z = eer0 + ci.getSubdetector(CalorimeterType.EM_ENDCAP).getLayering().getDistanceToLayerSensorMid(iLayer);
+ double z = ci.getSubdetector(CalorimeterType.EM_ENDCAP).getLayering().getDistanceToLayerSensorMid(iLayer);
m_ECAL_endcap_layering_z.add(new Double(z));
}
m_HCAL_barrel_layering_r = new Vector<Double>();
@@ -183,7 +163,7 @@
}
m_HCAL_endcap_layering_z = new Vector<Double>();
for (int iLayer=0; iLayer<ci.getNLayers(CalorimeterType.HAD_ENDCAP); iLayer++) {
- double z = her0 + ci.getSubdetector(CalorimeterType.HAD_ENDCAP).getLayering().getDistanceToLayerSensorMid(iLayer);
+ double z = ci.getSubdetector(CalorimeterType.HAD_ENDCAP).getLayering().getDistanceToLayerSensorMid(iLayer);
m_HCAL_endcap_layering_z.add(new Double(z));
}
m_MCAL_barrel_layering_r = new Vector<Double>();
@@ -193,12 +173,12 @@
}
m_MCAL_endcap_layering_z = new Vector<Double>();
for (int iLayer=0; iLayer<ci.getNLayers(CalorimeterType.MUON_ENDCAP); iLayer++) {
- double z = mer0 + ci.getSubdetector(CalorimeterType.MUON_ENDCAP).getLayering().getDistanceToLayerSensorMid(iLayer);
+ double z = ci.getSubdetector(CalorimeterType.MUON_ENDCAP).getLayering().getDistanceToLayerSensorMid(iLayer);
m_MCAL_endcap_layering_z.add(new Double(z));
}
m_FCAL_endcap_layering_z = new Vector<Double>();
for (int iLayer=0; iLayer<ci.getNLayers(CalorimeterType.LUMI); iLayer++) {
- double z = ler0 + ci.getSubdetector(CalorimeterType.LUMI).getLayering().getDistanceToLayerSensorMid(iLayer);
+ double z = ci.getSubdetector(CalorimeterType.LUMI).getLayering().getDistanceToLayerSensorMid(iLayer);
m_FCAL_endcap_layering_z.add(new Double(z));
}
m_init = true;
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.3 -r1.4
--- SimpleTrackMIPClusterMatcher.java 16 May 2007 17:44:37 -0000 1.3
+++ SimpleTrackMIPClusterMatcher.java 8 Mar 2010 19:38:30 -0000 1.4
@@ -6,11 +6,6 @@
import org.lcsim.util.swim.HelixSwimmer;
import org.lcsim.event.Cluster;
import org.lcsim.event.CalorimeterHit;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
-import org.lcsim.geometry.Detector;
-import org.lcsim.recon.cluster.util.BasicCluster;
-import org.lcsim.recon.cluster.util.TensorClusterPropertyCalculator;
-import org.lcsim.event.EventHeader;
import org.lcsim.event.Track;
/**
@@ -18,7 +13,7 @@
* on the ECAL inner surface and on the direction of the track at the
* intercept point.
*
- * @version $Id: SimpleTrackMIPClusterMatcher.java,v 1.3 2007/05/16 17:44:37 mcharles Exp $
+ * @version $Id: SimpleTrackMIPClusterMatcher.java,v 1.4 2010/03/08 19:38:30 cassell Exp $
*/
public class SimpleTrackMIPClusterMatcher extends SimpleTrackClusterMatcher
@@ -41,20 +36,19 @@
// Obtain geometrical info:
CalorimeterHit nearestHit = findNearestHit(trackPoint, nearbyMIP);
double separation = proximity(trackPoint, nearestHit);
- int layerOfNearestHit = getLayer(nearestHit);
CalorimeterHit firstHitInECAL = findInnermostHitInECAL(nearbyMIP);
double unitDotProduct = findUnitDotProduct(tangent, nearbyMIP);
org.lcsim.geometry.Subdetector subdet = nearestHit.getSubdetector();
// Make cuts:
- boolean goodSubDet = (subdet.getName().compareTo("EMBarrel")==0) || (subdet.getName().compareTo("EMEndcap")==0);
- boolean goodFirstLayer = (firstHitInECAL!=null && getLayer(firstHitInECAL) < 5);
+ boolean goodSubDet = (subdet == emb) || (subdet == eme);
+ boolean goodFirstLayer = (firstHitInECAL!=null && getVLayer(firstHitInECAL) < 5);
boolean goodDotProduct = (Math.abs(unitDotProduct) > 0.85);
double separationCut = m_separationCut;
boolean goodSeparation = (separation < separationCut);
boolean foundMatch = goodSubDet && goodFirstLayer && goodDotProduct && goodSeparation;
if (foundMatch) {
// OK, made a good match
- if (m_debug) { System.out.println("DEBUG: Matched cluster to MIP since subdet="+subdet.getName()+" and firstlayer="+getLayer(firstHitInECAL)+" and dotProduct="+Math.abs(unitDotProduct)+" and separation="+separation); }
+ if (m_debug) { System.out.println("DEBUG: Matched cluster to MIP since subdet="+subdet.getName()+" and firstlayer="+getVLayer(firstHitInECAL)+" and dotProduct="+Math.abs(unitDotProduct)+" and separation="+separation); }
return nearbyMIP;
} else {
if (m_debug) {
@@ -62,7 +56,7 @@
printme += "Debug: Didn't match track to MIP cluster since";
printme += " subdet="+subdet.getName()+" ["+goodSubDet+"] and";
if (firstHitInECAL!=null) {
- printme += " firstlayer="+getLayer(firstHitInECAL)+" ["+goodFirstLayer+"] and";
+ printme += " firstlayer="+getVLayer(firstHitInECAL)+" ["+goodFirstLayer+"] and";
} else {
printme += " firstlayer=null ["+goodFirstLayer+"] and";
}
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.5 -r1.6
--- SimpleTrackClusterMatcher.java 12 Oct 2007 21:32:48 -0000 1.5
+++ SimpleTrackClusterMatcher.java 8 Mar 2010 19:38:30 -0000 1.6
@@ -19,6 +19,9 @@
import org.lcsim.mc.fast.tracking.ReconTrack;
import org.lcsim.event.SimCalorimeterHit;
import org.lcsim.recon.cluster.util.ClusterEnergyCalculator;
+import org.lcsim.geometry.Calorimeter.CalorimeterType;
+import org.lcsim.recon.util.CalorimeterInformation;
+import org.lcsim.geometry.Subdetector;
/**
* Attempt to match a Track to a Cluster, based on the intercept point
@@ -27,11 +30,14 @@
* Currently, the match criteria are hard-code. It would be better to
* supply them as DecisionMaker objects.
*
- * @version $Id: SimpleTrackClusterMatcher.java,v 1.5 2007/10/12 21:32:48 mcharles Exp $
+ * @version $Id: SimpleTrackClusterMatcher.java,v 1.6 2010/03/08 19:38:30 cassell Exp $
*/
public class SimpleTrackClusterMatcher extends Driver implements TrackClusterMatcher
{
+ protected CalorimeterInformation ci;
+ protected Subdetector emb;
+ protected Subdetector eme;
public SimpleTrackClusterMatcher(double cut) {
m_separationCut = cut;
}
@@ -198,7 +204,6 @@
protected Cluster findMatchedCluster(Track tr, HelixSwimmer swimmer, double alpha, List<Cluster> clusters)
{
if (m_debug) { System.out.println("DEBUG: SimpleTrackClusterMatched.findMatchedCluster() invoked for a list of "+clusters.size()+" clusters."); }
-
// Find the track intercept and direction
swimmer.setTrack(tr);
Hep3Vector trackPoint = swimmer.getPointAtDistance(alpha);
@@ -208,12 +213,11 @@
// Obtain geometrical info:
CalorimeterHit nearestHit = findNearestHit(trackPoint, nearbyCluster);
double separation = proximity(trackPoint, nearestHit);
- int layerOfNearestHit = getLayer(nearestHit);
CalorimeterHit firstHitInECAL = findInnermostHitInECAL(nearbyCluster);
org.lcsim.geometry.Subdetector subdet = nearestHit.getSubdetector();
// Make cuts:
- boolean goodSubDet = (subdet.getName().compareTo("EMBarrel")==0) || (subdet.getName().compareTo("EMEndcap")==0);
- boolean goodFirstLayer = (firstHitInECAL!=null && getLayer(firstHitInECAL) < 5);
+ boolean goodSubDet = (subdet == emb) || (subdet == eme);
+ boolean goodFirstLayer = (firstHitInECAL!=null && getVLayer(firstHitInECAL) < 5);
double separationCut = m_separationCut;
boolean goodSeparation = (separation < separationCut);
boolean foundMatch = goodSubDet && goodFirstLayer && goodSeparation;
@@ -222,7 +226,7 @@
printme += "Debug: Match track to cluster = ["+foundMatch+"] since";
printme += " subdet="+subdet.getName()+" ["+goodSubDet+"] and";
if (firstHitInECAL!=null) {
- printme += " firstlayer="+getLayer(firstHitInECAL)+" ["+goodFirstLayer+"] and";
+ printme += " firstlayer="+getVLayer(firstHitInECAL)+" ["+goodFirstLayer+"] and";
} else {
printme += " firstlayer=null ["+goodFirstLayer+"] and";
}
@@ -348,13 +352,12 @@
protected CalorimeterHit findInnermostHitInECAL(Cluster clus) {
CalorimeterHit innermostHit = null;
for (CalorimeterHit hit : clus.getCalorimeterHits()) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
org.lcsim.geometry.Subdetector subdet = hit.getSubdetector();
if ( ! subdet.isCalorimeter() ) { throw new AssertionError("Cluster hit outside calorimeter"); }
- String name = subdet.getName();
- if (name.compareTo("EMBarrel") == 0 || name.compareTo("EMEndcap") == 0) {
+ if (subdet == emb || subdet == eme) {
// EM -- OK
- if (innermostHit==null || getLayer(innermostHit)>layer) {
+ if (innermostHit==null || getVLayer(innermostHit)>layer) {
innermostHit = hit;
}
}
@@ -386,10 +389,10 @@
double unitDotProduct = VecOp.dot(tangent, clusterDir) / (tangent.magnitude() * clusterDir.magnitude());
return unitDotProduct;
}
- protected int getLayer(CalorimeterHit hit) {
+ protected int getVLayer(CalorimeterHit hit) {
org.lcsim.geometry.IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- int layer = id.getLayer();
+ int layer = id.getVLayer();
return layer;
}
@@ -405,26 +408,32 @@
public void initGeometry(EventHeader event)
{
- Detector det = event.getDetector();
- CylindricalCalorimeter emb = ((CylindricalCalorimeter) det.getSubdetectors().get("EMBarrel"));
- CylindricalCalorimeter eme = ((CylindricalCalorimeter) det.getSubdetectors().get("EMEndcap"));
- m_ECAL_barrel_zmin = emb.getZMin();
- m_ECAL_barrel_zmax = emb.getZMax();
- m_ECAL_barrel_r = emb.getLayering().getDistanceToLayerSensorMid(0);
- m_ECAL_endcap_z = eme.getLayering().getDistanceToLayerSensorMid(0);
- m_ECAL_endcap_rmin = eme.getInnerRadius();
- m_ECAL_endcap_rmax = eme.getOuterRadius();
- double[] zero = {0, 0, 0};
- m_fieldStrength = det.getFieldMap().getField(zero);
- m_init = true;
- if (m_debug) {
- System.out.println(this.getClass().getName()+": Init: ECAL barrel zmin="+m_ECAL_barrel_zmin);
- System.out.println(this.getClass().getName()+": Init: ECAL barrel zmax="+m_ECAL_barrel_zmax);
- System.out.println(this.getClass().getName()+": Init: ECAL barrel r="+m_ECAL_barrel_r);
- System.out.println(this.getClass().getName()+": Init: ECAL endcap z="+m_ECAL_endcap_z);
- System.out.println(this.getClass().getName()+": Init: ECAL endcap rmin="+m_ECAL_endcap_rmin);
- System.out.println(this.getClass().getName()+": Init: ECAL endcap rmax="+m_ECAL_endcap_rmax);
- }
+ if(!m_init)
+ {
+ if(ci == null)
+ {
+ ci = CalorimeterInformation.instance();
+ emb = ci.getSubdetector(CalorimeterType.EM_BARREL);
+ eme = ci.getSubdetector(CalorimeterType.EM_ENDCAP);
+ }
+ m_ECAL_barrel_zmin = ci.getZMin(CalorimeterType.EM_BARREL);
+ m_ECAL_barrel_zmax = ci.getZMax(CalorimeterType.EM_BARREL);
+ m_ECAL_barrel_r = emb.getLayering().getDistanceToLayerSensorMid(0);
+ m_ECAL_endcap_z = eme.getLayering().getDistanceToLayerSensorMid(0);
+ m_ECAL_endcap_rmin = ci.getRMin(CalorimeterType.EM_ENDCAP);
+ m_ECAL_endcap_rmax = ci.getRMax(CalorimeterType.EM_ENDCAP);
+ double[] zero = {0, 0, 0};
+ m_fieldStrength = event.getDetector().getFieldMap().getField(zero);
+ m_init = true;
+ if (m_debug) {
+ System.out.println(this.getClass().getName()+": Init: ECAL barrel zmin="+m_ECAL_barrel_zmin);
+ System.out.println(this.getClass().getName()+": Init: ECAL barrel zmax="+m_ECAL_barrel_zmax);
+ System.out.println(this.getClass().getName()+": Init: ECAL barrel r="+m_ECAL_barrel_r);
+ System.out.println(this.getClass().getName()+": Init: ECAL endcap z="+m_ECAL_endcap_z);
+ System.out.println(this.getClass().getName()+": Init: ECAL endcap rmin="+m_ECAL_endcap_rmin);
+ System.out.println(this.getClass().getName()+": Init: ECAL endcap rmax="+m_ECAL_endcap_rmax);
+ }
+ }
}
protected boolean m_init = false;
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.3 -r1.4
--- LocalHelixExtrapolationTrackMIPClusterMatcher.java 6 Sep 2008 23:47:00 -0000 1.3
+++ LocalHelixExtrapolationTrackMIPClusterMatcher.java 8 Mar 2010 19:38:30 -0000 1.4
@@ -43,7 +43,7 @@
} else {
// Separation OK. Next, check that the cluster has a hit in the first n layers of the ECAL:
CalorimeterHit firstHitInECAL = findInnermostHitInECAL(nearbyCluster);
- if (firstHitInECAL != null && getLayer(firstHitInECAL) < m_cutFirstLayer) {
+ if (firstHitInECAL != null && getVLayer(firstHitInECAL) < m_cutFirstLayer) {
// First hit layer OK. Next, check the dot-product of directions:
double unitDotProduct = findUnitDotProduct(tangent, nearbyCluster);
if (Math.abs(unitDotProduct) > m_cutDotProduct) {
lcsim/src/org/lcsim/recon/pfa/identifier
diff -u -r1.5 -r1.6
--- LocalHelixExtrapolationTrackClusterMatcher.java 4 Feb 2010 17:45:32 -0000 1.5
+++ LocalHelixExtrapolationTrackClusterMatcher.java 8 Mar 2010 19:38:30 -0000 1.6
@@ -89,8 +89,8 @@
} else {
// Separation OK. Next, check that the cluster has a hit in the first n layers of the ECAL:
CalorimeterHit firstHitInECAL = findInnermostHitInECAL(nearbyCluster);
- if (firstHitInECAL != null && getLayer(firstHitInECAL) < m_cutFirstLayer) {
- if (m_debug) { System.out.println("DEBUG: "+this.getClass().getName()+": comparing track with p="+(new BasicHep3Vector(tr.getMomentum())).magnitude()+" to a cluster of "+nearbyCluster.getCalorimeterHits().size()+" hits at a separation of "+separation+": First hit in ECAL is in layer "+getLayer(firstHitInECAL)+" -- OK!"); }
+ if (firstHitInECAL != null && getVLayer(firstHitInECAL) < m_cutFirstLayer) {
+ if (m_debug) { System.out.println("DEBUG: "+this.getClass().getName()+": comparing track with p="+(new BasicHep3Vector(tr.getMomentum())).magnitude()+" to a cluster of "+nearbyCluster.getCalorimeterHits().size()+" hits at a separation of "+separation+": First hit in ECAL is in layer "+getVLayer(firstHitInECAL)+" -- OK!"); }
// First hit layer OK.
if (m_extraCut == null || m_extraCut.valid(tr,nearbyCluster) ) {
// Extra cut not specified or passed
@@ -142,13 +142,13 @@
protected CalorimeterHit findInnermostHitInECAL(Cluster clus) {
CalorimeterHit innermostHit = null;
for (CalorimeterHit hit : clus.getCalorimeterHits()) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
org.lcsim.geometry.Subdetector subdet = hit.getSubdetector();
if ( ! subdet.isCalorimeter() ) { throw new AssertionError("Cluster hit outside calorimeter"); }
String name = subdet.getName();
if (name.compareTo(ci.getName(CalorimeterType.EM_BARREL)) == 0 || name.compareTo(ci.getName(CalorimeterType.EM_ENDCAP)) == 0) {
// EM -- OK
- if (innermostHit==null || getLayer(innermostHit)>layer) {
+ if (innermostHit==null || getVLayer(innermostHit)>layer) {
innermostHit = hit;
}
}
@@ -177,10 +177,10 @@
double distance = VecOp.sub(hitPosition, point).magnitude();
return distance;
}
- protected int getLayer(CalorimeterHit hit) {
+ protected int getVLayer(CalorimeterHit hit) {
org.lcsim.geometry.IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- int layer = id.getLayer();
+ int layer = id.getVLayer();
return layer;
}
CVSspam 0.2.8