Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN | |||
FastTrackResidualDriver.java | +70 | -66 | 1.6 -> 1.7 |
Fixed layer and side functions.
diff -u -r1.6 -r1.7 --- FastTrackResidualDriver.java 11 May 2012 15:49:20 -0000 1.6 +++ FastTrackResidualDriver.java 27 Jun 2012 19:35:17 -0000 1.7 @@ -13,6 +13,8 @@
import java.util.List; import java.util.logging.Level; import java.util.logging.Logger;
+import org.lcsim.detector.identifier.IIdentifier; +import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.*; import org.lcsim.event.*; import org.lcsim.geometry.Detector;
@@ -83,12 +85,12 @@
crystalCols = 46; crystalRows = 5;
- ecalBeamgapCorr = 20.0;
+ ecalBeamgapCorr = 0.0;
// Position of the conversion conversionZ = -1500.0;
- ecalClusterSel = 1;
+ ecalClusterSel = 0;
IHistogramFactory hf = aida.histogramFactory(); String side;
@@ -268,8 +270,7 @@
if(debug) System.out.println("icl " + icl); int clid = ecal_cls.get(icl); if(debug) System.out.println("clid " + clid + " all clusters size " + ecal_all_clusters.size());
- double p_cl[] = ecal_all_clusters.get(clid).getPosition(); - int clpos[] = getCrystalPair(p_cl);
+ int clpos[] = getCrystalPair(ecal_all_clusters.get(clid));
if(debug) System.out.println("clpos " + clpos[0] + "," + clpos[1]); ncl_ecal_map.get(iSide).fill(clpos[0], clpos[1]); if(debug) System.out.println("clpos " + clpos[0] + "," + clpos[1]);
@@ -288,7 +289,7 @@
- selclids = getCrystalPair(ecal_all_clusters.get(sel_ecal_idx).getPosition());
+ selclids = getCrystalPair(ecal_all_clusters.get(sel_ecal_idx));
nselcl_ecal_map.get(iSide).fill(selclids[0], selclids[1]); selcl_ecal_e.get(iSide).fill(ecal_all_clusters.get(sel_ecal_idx).getEnergy());
@@ -338,6 +339,7 @@
} //stripList = new ArrayList<SiTrackerHitStrip1D>(); for ( SiTrackerHitStrip1D stripCluster : trackerHits ) {
+ System.out.println("cluster at " + stripCluster.getPositionAsVector().toString() + " " + stripCluster.getSensor().toString());
isaxial = isAxialHit(stripCluster);
@@ -352,7 +354,7 @@
}
- layer = getLayerFromSensorName(name);
+ layer = getLayerFromSiCluster(stripCluster);
si_side = getSideFromSiCluster(stripCluster);
@@ -445,52 +447,29 @@
// }
- - private int[] getCrystalPair(Hep3Vector cluster) { - double pos[] = {cluster.x(),cluster.y(),0.}; - return getCrystalPair(pos); - } - - private int[] getCrystalPair(double[] cluster) { - double x = cluster[0]; - double y = cluster[1]; - int position[] = new int[2]; - position[0] = (int)Math.floor(x/crystalX); - - position[1] = (int) Math.floor( (y - beamGap * Math.signum(y) ) / crystalY); - return position;
+ public int[] getCrystalPair(HPSEcalCluster cluster) { + int[] pos = new int[2]; + pos[0] = cluster.getSeedHit().getIdentifierFieldValue("ix"); + pos[1] = cluster.getSeedHit().getIdentifierFieldValue("iy");
- } - - private double[] getClusterPosition(HPSEcalCluster cluster) { - CalorimeterHit hit = cluster.getSeedHit(); - //return cluster.getPosition(); - - //IDDecoder dec = dec.getSubdetector("Ecal").getIDDecoder(); -// dec.setID(hit.getCellID()); -// int ix = dec.getValue("ix"); -// int iy = dec.getValue("iy"); -// double position[] = new double[2]; -// position[0] = crystalX * ix; -// position[1] = crystalY * iy + beamGap * Math.signum(iy); - if (debug) System.out.println("Getting cluster position"); - double pos[] = cluster.getPosition(); - if (debug) System.out.println("Found " + pos[0] + "," + pos[1] + "," + pos[2]); - return pos;
+ //System.out.println("cluster ix,iy " + pos[0] + "," + pos[1] + " from pos " + cluster.getSeedHit().getPositionVec().toString()); + return pos; + //getCrystalPair(cluster.getPosition());
}
+
private List<Integer> getEcalClustersForFastTracking(List<HPSEcalCluster> clusters, String side) { if(side!="up" && side!="down") { throw new RuntimeException("This ecal side" + side + " do not exist!!"); } List<Integer> cls = new ArrayList<Integer>(); boolean save;
- double [] pos;
+ int [] pos;
for (int i=0;i<clusters.size();++i) { save=false;
- pos = getClusterPosition(clusters.get(i));
+ pos = getCrystalPair(clusters.get(i));
if(pos[1]>=0 && side=="up") { save=true;
@@ -567,20 +546,25 @@
private boolean isAxialHit(SiTrackerHitStrip1D strip) {
- boolean axial = false; - Hep3Vector m = strip.getMeasuredCoordinate(); - //System.out.println("y " + m.y() + " -> abs(y) " + Math.abs(m.y()) ); - if ( Math.abs((Math.abs(m.y())-1.0))<0.0000000001 ) { - axial = true; - //System.out.println( " ===> " + axial ); - } - return axial;
+ String side = this.getSideFromSiCluster(strip); + int layer = this.getLayerFromSiCluster(strip); + return layer%2==0 ? false : true; + + //int ref_l = ref_helper.getValue(ref_id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even + //int ref_s = ref_helper.getValue(ref_id, "module"); // 0-1; module number is top or bottom +// boolean axial = false; +// Hep3Vector m = strip.getMeasuredCoordinate(); +// //System.out.println("y " + m.y() + " -> abs(y) " + Math.abs(m.y()) ); +// if ( Math.abs((Math.abs(m.y())-1.0))<0.0000000001 ) { +// axial = true; +// //System.out.println( " ===> " + axial ); +// } +// return axial;
} private int getNAxialHits(List<SiTrackerHitStrip1D> trackerHits, String side) { int nhits=0; for ( SiTrackerHitStrip1D stripCluster : trackerHits ) {
-
if(isAxialHit(stripCluster)) { String si_side = getSideFromSiCluster(stripCluster);
@@ -602,7 +586,7 @@
for ( SiTrackerHitStrip1D stripCluster : trackerHits ) { if(isAxialHit(stripCluster)==false) continue;
-
+
si_side = getSideFromSiCluster(stripCluster); if( side == si_side) {
@@ -614,7 +598,7 @@
throw new RuntimeException("SiSensor name " + name + " is invalid?"); }
- l = getLayerFromSensorName(name);
+ l = this.getLayerFromSiCluster(stripCluster);
if ( l == layer) ++nhits; }
@@ -645,18 +629,20 @@
System.err.println("This name is too short!!"); throw new RuntimeException("SiSensor name " + name + " is invalid?"); }
- - l = getLayerFromSensorName(name);
+ l = this.getLayerFromSiCluster(stripCluster); +
//Turn this into the layer scheme I use
- if(side=="down") { - //even numbers are used - i = (l/2) - 1; - n[i] = n[i] + 1; - } else {
i = ((l+1)/2) - 1; n[i] = n[i] + 1;
- }
+// if(side=="down") { +// i = ((l+1)/2) - 1; +// n[i] = n[i] + 1; +// } else { +// //even numbers are used +// i = (l/2) - 1; +// n[i] = n[i] + 1; +// }
}
@@ -666,14 +652,32 @@
} private String getSideFromSiCluster(SiTrackerHitStrip1D stripCluster) {
- Hep3Vector posVec = stripCluster.getPositionAsVector(); - double yHit = posVec.y(); - String side; - if (yHit>=0.0) side = "up"; - else side = "down"; - return side;
+ IIdentifierHelper ref_helper = stripCluster.getIdentifierHelper(); + IIdentifier ref_id = stripCluster.getSensor().getIdentifier(); + int ref_l = ref_helper.getValue(ref_id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even + int ref_s = ref_helper.getValue(ref_id, "module"); // 0-1; module number is top or bottom + return ref_s==0 ? "up" : "down"; +//// Hep3Vector posVec = stripCluster.getPositionAsVector(); +//// double yHit = posVec.y(); +//// String side; +//// if (yHit>=0.0) side = "up"; +//// else side = "down"; +//// return side; + } + + private int getLayerFromSiCluster(SiTrackerHitStrip1D stripCluster) { + IIdentifierHelper ref_helper = stripCluster.getIdentifierHelper(); + IIdentifier ref_id = stripCluster.getSensor().getIdentifier(); + int ref_l = ref_helper.getValue(ref_id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even + int ref_s = ref_helper.getValue(ref_id, "module"); // 0-1; module number is top or bottom + return ref_l; +//// Hep3Vector posVec = stripCluster.getPositionAsVector(); +//// double yHit = posVec.y(); +//// String side; +//// if (yHit>=0.0) side = "up"; +//// else side = "down"; +//// return side;
}
-
private int getLayerFromSensorName(String name) { int ilayer = -1;// = Integer.parseInt(layer.substring(layer.length()-1));
@@ -691,7 +695,7 @@
} else { throw new RuntimeException("This sensor name do not have a layer!"); }
-
+ System.out.println("Name " + name + " -> layer " + ilayer);
return ilayer; }
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1