7 modified files
lcsim/src/org/lcsim/recon/cluster/mipfinder
diff -u -r1.7 -r1.8
--- NonProjectiveMipFinder.java 5 Feb 2010 20:22:42 -0000 1.7
+++ NonProjectiveMipFinder.java 8 Mar 2010 19:35:53 -0000 1.8
@@ -29,7 +29,7 @@
* and curving MIPs better.
*
* @author Mat Charles <[log in to unmask]>
- * @version $Id: NonProjectiveMipFinder.java,v 1.7 2010/02/05 20:22:42 jeremy Exp $
+ * @version $Id: NonProjectiveMipFinder.java,v 1.8 2010/03/08 19:35:53 cassell Exp $
*/
public class NonProjectiveMipFinder extends Driver implements Clusterer
@@ -85,8 +85,8 @@
Iterator<CalorimeterHit> iter = hitsInLayer.iterator();
CalorimeterHit hit1 = iter.next();
CalorimeterHit hit2 = iter.next();
- if (getLayer(hit1) != layer) { throw new AssertionError("Book-keeping error"); }
- if (getLayer(hit2) != layer) { throw new AssertionError("Book-keeping error"); }
+ if (getVLayer(hit1) != layer) { throw new AssertionError("Book-keeping error"); }
+ if (getVLayer(hit2) != layer) { throw new AssertionError("Book-keeping error"); }
List<CalorimeterHit> isolatedHitsInLayer = isolatedHitsHcal.get(layer);
List<CalorimeterHit> semiIsolatedHitsInLayer = semiIsolatedHitsHcal.get(layer);
if (isolatedHitsInLayer != null && isolatedHitsInLayer.contains(hit1)) { throw new AssertionError("2 hits in layer "+layer+", but hit is marked as isolated. Stub contains "+stub.getLayersCount()+" layers."); }
@@ -870,8 +870,8 @@
if (m_debug) { System.out.println(" * Hit "+neighbour+" has neighbour "+neighbourOfNeighbour+" at ("+non_x+", "+non_y+", "+non_z+") -- r="+non_r); }
}
if (m_debug) {
- System.out.println("Inconsistency in neighbours map: Hit (id="+hitID+") in layer "+getLayer(hit)+" has neighbour "+neighbour
- +", but hit "+neighbour+" in layer "+getLayer(lastNeighbourHit)+" does not have "+hitID+" as a neighbour."
+ System.out.println("Inconsistency in neighbours map: Hit (id="+hitID+") in layer "+getVLayer(hit)+" has neighbour "+neighbour
+ +", but hit "+neighbour+" in layer "+getVLayer(lastNeighbourHit)+" does not have "+hitID+" as a neighbour."
+" hit1 is at (r="+r1+", costh="+costh1+", x="+hit1pos.x()+", y="+hit1pos.y()+", z="+hit1pos.z()+");"
+" hit2 is at (r="+r2+", costh="+costh2+", x="+hit2pos.x()+", y="+hit2pos.y()+", z="+hit2pos.z()+");"
+" for ID of type "+id.getClass().getName()
@@ -887,7 +887,7 @@
}
}
}
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
if (countFoundNeighbours == 0 && !vetoHitIDs.contains(hitID)) {
List<CalorimeterHit> isolatedHitsInThisLayer = isolatedHits.get(layer);
if (isolatedHitsInThisLayer == null) { isolatedHitsInThisLayer = new Vector<CalorimeterHit>(); isolatedHits.put(layer, isolatedHitsInThisLayer); }
@@ -1102,10 +1102,10 @@
return outputStubs;
}
- 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;
}
@@ -1384,14 +1384,14 @@
m_hits.remove(layer);
}
public void addNonEdgeHit(CalorimeterHit hit) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
if (m_hits.get(layer) != null) { throw new AssertionError("Error"); }
List<CalorimeterHit> hitsInLayer = new Vector<CalorimeterHit>();
hitsInLayer.add(hit);
m_hits.put(layer, hitsInLayer);
}
public void addHit(CalorimeterHit hit) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
if (this.getLayersCount() == 0) {
addOuterHit(hit);
} else {
@@ -1407,7 +1407,7 @@
}
}
public void addInnerHit(CalorimeterHit hit) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
if (this.getLayersCount()>0) {
if (layer >= this.getInnerLayer()) {
throw new AssertionError("Not innermost layer");
@@ -1419,7 +1419,7 @@
m_hits.put(layer, hitsInLayer);
}
public void addOuterHit(CalorimeterHit hit) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
if (this.getLayersCount()>0) {
if (layer <= this.getOuterLayer()) {
throw new AssertionError("Not outermost layer");
@@ -1431,8 +1431,8 @@
m_hits.put(layer, hitsInLayer);
}
public void addDoubleHit(CalorimeterHit hit1, CalorimeterHit hit2) {
- int layer1 = getLayer(hit1);
- int layer2 = getLayer(hit2);
+ int layer1 = getVLayer(hit1);
+ int layer2 = getVLayer(hit2);
// if (layer1 != layer2) { throw new AssertionError("DoubleHit mismatch"); }
if (layer1 != layer2) { System.out.println("Stub.addDoubleHit: DoubleHit mismatch"); return;}
List<CalorimeterHit> hitsInThisLayer = m_hits.get(layer1);
@@ -1489,10 +1489,10 @@
throw new AssertionError("Book-keeping error");
}
}
- private int getLayer(CalorimeterHit hit) {
+ private int getVLayer(CalorimeterHit hit) {
org.lcsim.geometry.IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- return id.getLayer();
+ return id.getVLayer();
}
public int countOverlappingLayers(Stub otherStub, boolean requireHitMatch) {
int countSoFar = 0;
lcsim/src/org/lcsim/recon/cluster/mipfinder
diff -u -r1.3 -r1.4
--- MipFinderCrossingBarrelEndcapBorder.java 16 Jun 2008 17:15:07 -0000 1.3
+++ MipFinderCrossingBarrelEndcapBorder.java 8 Mar 2010 19:35:53 -0000 1.4
@@ -22,7 +22,7 @@
* able to move from the barrel to the endcap (or vice versa).
*
* @author [log in to unmask]
- * @version $Id: MipFinderCrossingBarrelEndcapBorder.java,v 1.3 2008/06/16 17:15:07 mcharles Exp $
+ * @version $Id: MipFinderCrossingBarrelEndcapBorder.java,v 1.4 2010/03/08 19:35:53 cassell Exp $
*/
public class MipFinderCrossingBarrelEndcapBorder extends TrackClusterDriver
@@ -290,7 +290,7 @@
layerSet = new HashSet<Integer>();
layerMap.put(det, layerSet);
}
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
layerSet.add(layer);
}
int layerCount = 0;
@@ -305,10 +305,10 @@
return outputList;
}
- 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;
}
@@ -342,7 +342,7 @@
protected Map<Integer, List<CalorimeterHit>> sortHitsByLayer(List<CalorimeterHit> hits) {
Map<Integer, List<CalorimeterHit>> output = new HashMap<Integer, List<CalorimeterHit>>();
for (CalorimeterHit hit : hits) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
List<CalorimeterHit> hitsInLayer = output.get(layer);
if (hitsInLayer == null) { hitsInLayer = new Vector<CalorimeterHit>(); output.put(layer, hitsInLayer); }
hitsInLayer.add(hit);
lcsim/src/org/lcsim/recon/cluster/mipfinder
diff -u -r1.3 -r1.4
--- DoubleHit.java 3 Feb 2010 19:39:08 -0000 1.3
+++ DoubleHit.java 8 Mar 2010 19:35:53 -0000 1.4
@@ -9,7 +9,7 @@
@author Wolfgang F. Mader ([log in to unmask])
- @version $Id: DoubleHit.java,v 1.3 2010/02/03 19:39:08 cassell Exp $
+ @version $Id: DoubleHit.java,v 1.4 2010/03/08 19:35:53 cassell Exp $
Modification Log:
-- 07/22/2004 Version 1.0
@@ -49,7 +49,7 @@
// What layer is the main hit in?
id.setID(h.getCellID());
- int mainLayer = id.getLayer();
+ int mainLayer = id.getVLayer();
// For each nearby hit, whether it is in the same layer as
// the main hit or one layer away.
@@ -60,7 +60,7 @@
if ( hit != null ){
// Check the layer indices:
id.setID(hit.getCellID());
- int layer = id.getLayer();
+ int layer = id.getVLayer();
if (layer == mainLayer) {
nNeighbourHitsInSameLayer++;
} else if ( (layer==mainLayer-1) || (layer==mainLayer+1) ) {
lcsim/src/org/lcsim/recon/cluster/mipfinder
diff -u -r1.4 -r1.5
--- MIPClusterBuilder.java 15 Sep 2009 23:23:21 -0000 1.4
+++ MIPClusterBuilder.java 8 Mar 2010 19:35:53 -0000 1.5
@@ -48,7 +48,7 @@
// Find layer:
IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- Integer layer = new Integer(id.getLayer());
+ Integer layer = new Integer(id.getVLayer());
// Store the hit in the right per-layer list:
if ( hitTable.containsKey(layer) ) {
Vector<CalorimeterHit> v = hitTable.get(layer);
@@ -137,7 +137,7 @@
for (CalorimeterHit hit : cluster.getCalorimeterHits()) {
IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- System.out.println(this.getClass().getName()+" found cluster: hit #"+i+":"+hit+", layer="+id.getLayer()+", theta="+id.getTheta()+", phi="+id.getPhi());
+ System.out.println(this.getClass().getName()+" found cluster: hit #"+i+":"+hit+", Vlayer="+id.getVLayer()+", theta="+id.getTheta()+", phi="+id.getPhi());
i++;
}
}
@@ -165,9 +165,9 @@
if ( hit != null ) {
id.setID(h.getCellID());
- int iLayer = id.getLayer() * direction;
+ int iLayer = id.getVLayer() * direction;
id.setID(hit.getCellID());
- int jLayer = id.getLayer() * direction;
+ int jLayer = id.getVLayer() * direction;
if ( jLayer == iLayer+1 ) {
@@ -198,7 +198,7 @@
if ( lValidate && (aType instanceof SingleHit) ){
IDDecoder id = h.getIDDecoder();
id.setID(h.getCellID());
- Integer layer = new Integer(id.getLayer());
+ Integer layer = new Integer(id.getVLayer());
Integer countHitsInLayer = iSingleHitsInLayer.get(layer);
if (countHitsInLayer != null) {
// Increment
@@ -216,7 +216,7 @@
private boolean isInSeedLayer(CalorimeterHit hit){
IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- int layer = id.getLayer();
+ int layer = id.getVLayer();
return ( direction*layer >= direction*firstLayer &&
direction*layer < direction*(firstLayer+direction*nSeedLayers) );
}
@@ -267,7 +267,7 @@
for (CalorimeterHit hit : clus.getCalorimeterHits()) {
IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- int thisHitLayer = id.getLayer();
+ int thisHitLayer = id.getVLayer();
for (int i=0; i<layer.length; i++) {
if (layer[i] == thisHitLayer) {
hitCount[i]++; // Found a hit in this logical layer
lcsim/src/org/lcsim/recon/cluster/mipfinder
diff -u -r1.2 -r1.3
--- MipQualityDecision.java 21 Aug 2008 18:35:08 -0000 1.2
+++ MipQualityDecision.java 8 Mar 2010 19:35:53 -0000 1.3
@@ -4,9 +4,9 @@
import org.lcsim.util.*;
import org.lcsim.util.decision.*;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
-import org.lcsim.geometry.*;
+import org.lcsim.recon.util.CalorimeterInformation;
import org.lcsim.event.*;
+import org.lcsim.geometry.Calorimeter.CalorimeterType;
/**
* A class to look at whether a calorimeter cluster is
@@ -17,23 +17,25 @@
* c) chi^2 of helix fit to cluster
*
* @author [log in to unmask]
- * @version $Id: MipQualityDecision.java,v 1.2 2008/08/21 18:35:08 mcharles Exp $
+ * @version $Id: MipQualityDecision.java,v 1.3 2010/03/08 19:35:53 cassell Exp $
*/
public class MipQualityDecision implements DecisionMakerSingle<Cluster>
{
+ CalorimeterInformation ci;
public MipQualityDecision() {
// No user-settable options for now
}
public boolean valid(Cluster mip) {
+ if(ci == null)ci = CalorimeterInformation.instance();
// How many layers in this MIP?
// And how many instances of >1 hit in a layer?
int countDuplicates = 0;
Set<Integer> layersSeen = new HashSet<Integer>();
for (CalorimeterHit hit : mip.getCalorimeterHits()) {
- int layer = getLayer(hit);
+ int layer = getVLayer(hit);
Integer layerInt = new Integer(layer);
if (!layersSeen.contains(layerInt)) {
layersSeen.add(layerInt);
@@ -49,32 +51,31 @@
List<org.lcsim.fit.helicaltrack.HelicalTrackHit> hitsToFit = new Vector<org.lcsim.fit.helicaltrack.HelicalTrackHit>();
for (CalorimeterHit calHit : mip.getCalorimeterHits()) {
double pos[] = calHit.getPosition();
- String subdetName = calHit.getSubdetector().getName();
double err_rphi = 0.0;
double err_z = 0.0;
- if (subdetName.compareTo("EMBarrel")==0) {
+ if (calHit.getSubdetector() == ci.getSubdetector(CalorimeterType.EM_BARREL)) {
// Barrel -- r fixed but phi uncertain
// rphi error = cell size / sqrt(12)
// z error = cell size / sqrt(12)
err_rphi = 3.5 / 3.464;
err_z = 3.5 / 3.464;
- } else if (subdetName.compareTo("EMEndcap")==0) {
+ } else if (calHit.getSubdetector() == ci.getSubdetector(CalorimeterType.EM_ENDCAP)) {
// Endcap -- z fixed but r and phi uncertain
// rphi error = cell size / sqrt(12) ??
// z error = silicon width / sqrt(12)
err_rphi = 3.5 / 3.464;
err_z = 0.32 / 3.464; // 320 micron silicon
- } else if (subdetName.compareTo("HADBarrel")==0) {
+ } else if (calHit.getSubdetector() == ci.getSubdetector(CalorimeterType.HAD_BARREL)) {
err_rphi = 10.0 / 3.464;
err_z = 10.0 / 3.464;
- } else if (subdetName.compareTo("HADEndcap")==0) {
+ } else if (calHit.getSubdetector() == ci.getSubdetector(CalorimeterType.HAD_ENDCAP)) {
err_rphi = 10.0 / 3.464;
err_z = 3.0 / 3.464; // 1.2 mm gas OR 5.0 mm scint... pick 3mm as a compromise
- } else if (subdetName.compareTo("MuonEndcap")==0) {
+ } else if (calHit.getSubdetector() == ci.getSubdetector(CalorimeterType.MUON_ENDCAP)) {
err_rphi = 30.0 / 3.464;// 3x3cm segmentation
err_z = 3.0 / 3.464; // 1.2 mm gas
} else {
- throw new AssertionError("Subdet not recognized: "+subdetName);
+ throw new AssertionError("Subdet not recognized: "+calHit.getSubdetector().getName());
}
org.lcsim.fit.helicaltrack.HelicalTrack3DHit fitHit = new org.lcsim.fit.helicaltrack.HelicalTrack3DHit(pos[0], pos[1], pos[2], err_rphi, err_z);
hitsToFit.add(fitHit);
@@ -123,10 +124,10 @@
}
}
- 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/cluster/mipfinder
diff -u -r1.9 -r1.10
--- ShowerPointFinder.java 4 Feb 2010 17:45:33 -0000 1.9
+++ ShowerPointFinder.java 8 Mar 2010 19:35:53 -0000 1.10
@@ -70,7 +70,7 @@
double z = id.getPosition()[2];
double p = Math.sqrt(x*x+y*y+z*z);
double r = Math.sqrt(x*x+y*y);
- double lastlayer = id.getLayer();
+ double lastlayer = id.getVLayer();
String lastsubdetName = hit.getSubdetector().getName();
// Check for neighbouring hits in a 5x5x(2n+1) grid
// where n is the number of iterations since we last saw a hit.
@@ -103,7 +103,7 @@
double curp = Math.sqrt(curx*curx+cury*cury+curz*curz);
double curr = Math.sqrt(curx*curx+cury*cury);
Hep3Vector curpos = new BasicHep3Vector(curx,cury,curz);
- double curlayer = curid.getLayer();
+ double curlayer = curid.getVLayer();
String cursubdetName = curhit.getSubdetector().getName();
//use geometric information and layer number to find cur hit
// Inside Sub detector -> 0)
@@ -111,11 +111,11 @@
// ECal Endcap -> 3) HCal Endcap or 4) Ecal Barrel
// HCal Endcap -> 5) HCal Barrel
boolean InSide = (curlayer > lastlayer) && cursubdetName.contains(lastsubdetName) && nearIDs.contains(curhit.getCellID()); // 0)
- boolean EcalToHcalBarrel= (curid.getLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_BARREL))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_BARREL)); // 1) ECal Barrel -> HCal Barrel
- boolean BarrelEcalToEndHcal = (curid.getLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_ENDCAP))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_BARREL)); //2) ECal Barrel -> HCal Endcap (There is no way to HCal Barrel directly from ECal Endcap
- boolean EcalToHcalEndcap= (curid.getLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_ENDCAP))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_ENDCAP)); // 3) ECal Endcap -> HCal Endcap
- boolean EndToBarrelEcal = (curid.getLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.EM_BARREL))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_ENDCAP)); // 4) ECal Endcap -> ECal Barrel
- boolean EndToBarrelHcal = (curid.getLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_BARREL))) && lastsubdetName.contains(ci.getName(CalorimeterType.HAD_ENDCAP)); // 5) HCal Endcap -> HCal Barrel
+ boolean EcalToHcalBarrel= (curid.getVLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_BARREL))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_BARREL)); // 1) ECal Barrel -> HCal Barrel
+ boolean BarrelEcalToEndHcal = (curid.getVLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_ENDCAP))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_BARREL)); //2) ECal Barrel -> HCal Endcap (There is no way to HCal Barrel directly from ECal Endcap
+ boolean EcalToHcalEndcap= (curid.getVLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_ENDCAP))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_ENDCAP)); // 3) ECal Endcap -> HCal Endcap
+ boolean EndToBarrelEcal = (curid.getVLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.EM_BARREL))) && lastsubdetName.contains(ci.getName(CalorimeterType.EM_ENDCAP)); // 4) ECal Endcap -> ECal Barrel
+ boolean EndToBarrelHcal = (curid.getVLayer()==0 && cursubdetName.contains(ci.getName(CalorimeterType.HAD_BARREL))) && lastsubdetName.contains(ci.getName(CalorimeterType.HAD_ENDCAP)); // 5) HCal Endcap -> HCal Barrel
if(InSide || EcalToHcalBarrel || BarrelEcalToEndHcal || EcalToHcalEndcap || EndToBarrelEcal || EndToBarrelHcal){
Hep3Vector cur = VecOp.sub(curpos, last0);
lcsim/src/org/lcsim/recon/cluster/mipfinder
diff -u -r1.8 -r1.9
--- TrackClusterDriver.java 5 Jun 2008 17:00:02 -0000 1.8
+++ TrackClusterDriver.java 8 Mar 2010 19:35:53 -0000 1.9
@@ -22,7 +22,7 @@
* An alternative driver. This is designed to find any track
* segment, not just MIPs.
*
- * @version $Id: TrackClusterDriver.java,v 1.8 2008/06/05 17:00:02 mcharles Exp $
+ * @version $Id: TrackClusterDriver.java,v 1.9 2010/03/08 19:35:53 cassell Exp $
*/
public class TrackClusterDriver extends Driver implements Clusterer
@@ -208,7 +208,7 @@
// Look up the layer of this hit:
IDDecoder id = hit.getIDDecoder();
id.setID(hit.getCellID());
- Integer layer = new Integer(id.getLayer());
+ Integer layer = new Integer(id.getVLayer());
// Add it to the list for that layer:
List<CalorimeterHit> layerList = hitsPerLayer.get(layer);
if (layerList == null) {
CVSspam 0.2.8