Print

Print


Commit in lcsim/src/org/lcsim/recon/cluster/muonfinder on MAIN
MipTrackMap.java+16-141.4 -> 1.5
MuonFinder.java+8-61.8 -> 1.9
MuonDriver.java+1-11.3 -> 1.4
SimpleMipQualityDecision.java+5-61.3 -> 1.4
+30-27
4 modified files
Use Vlayer where appropriate, get cal info from CalorimeterInformation class

lcsim/src/org/lcsim/recon/cluster/muonfinder
MipTrackMap.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- MipTrackMap.java	4 Feb 2010 17:45:32 -0000	1.4
+++ MipTrackMap.java	8 Mar 2010 19:36:39 -0000	1.5
@@ -20,7 +20,7 @@
  * later need to make it as one cluster if it is assocated with the same track. 
  *
  * @author [log in to unmask]
- * @version $Id: MipTrackMap.java,v 1.4 2010/02/04 17:45:32 cassell Exp $
+ * @version $Id: MipTrackMap.java,v 1.5 2010/03/08 19:36:39 cassell Exp $
  */
 
 
@@ -88,7 +88,11 @@
 
 	    int lastIterationWithFoundHit = -1;
 	    int maxSkippedLayers = 3;
-	    for( int iIteration = 0 ; iIteration < 71 ; iIteration++){ // for sid02 calorimeter. 31 for Ecal 40 for Hacl.
+            int maxlB = ci.getNLayers(CalorimeterType.EM_BARREL)+
+                        ci.getNLayers(CalorimeterType.HAD_BARREL);
+            int maxlE = ci.getNLayers(CalorimeterType.EM_ENDCAP)+
+                        ci.getNLayers(CalorimeterType.HAD_ENDCAP);
+	    for( int iIteration = 0 ; iIteration < Math.max(maxlB,maxlE) ; iIteration++){ // for sid02 calorimeter. 31 for Ecal 40 for Hacl.
 		//To get the information from last hit
 		CalorimeterHit hit = mipclus.getCalorimeterHits().get( mipclus.getCalorimeterHits().size()-1);
 		IDDecoder id = hit.getIDDecoder();
@@ -98,7 +102,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.
@@ -129,15 +133,15 @@
 		    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);
-		    int curlayer = curid.getLayer();
+		    int curlayer = curid.getVLayer();
 		    String cursubdetName = curhit.getSubdetector().getName();
 		    //use geometric information and layer number to find cur hit
 		    boolean InSide = (curlayer > lastlayer) && cursubdetName.contains(lastsubdetName) && nearIDs.contains(curhit.getCellID());
-                    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(EcalToHcalBarrel || EcalToHcalEndcap || InSide || EndToBarrelEcal || EndToBarrelHcal || BarrelEcalToEndHcal){
                         Hep3Vector curFromTangent = result.getTangent(curpos);
 			Hep3Vector curFromLastTwo = VecOp.sub(curpos, last0);
@@ -245,7 +249,6 @@
                 if(removedhits.contains(hit)) continue;
                 SortedMap<Double, Set<CalorimeterHit>> sortedHitbyPos= new TreeMap();
                 IDDecoder id = hit.getIDDecoder();
-                double layer = id.getLayer();
                 Hep3Vector hitPos = new BasicHep3Vector(hit.getPosition());
                 Hep3Vector hitPosUnit = VecOp.unit(hitPos);
 
@@ -261,7 +264,6 @@
                 for(CalorimeterHit subhit : muhits){
                     if(removedhits.contains(subhit)) continue;
                     IDDecoder subid = subhit.getIDDecoder();
-                    double sublayer = subid.getLayer();
                     Hep3Vector subhitPos = new BasicHep3Vector(subhit.getPosition()); 
                     Hep3Vector subhitPosUnit = VecOp.unit(subhitPos);
                     double cos = VecOp.dot(hitPosUnit, subhitPosUnit);
@@ -463,7 +465,7 @@
             int cellp = (int) (cellv.magnitude());
             int cellr = (int) Math.sqrt(cellv.x()*cellv.x() + cellv.y()*cellv.y());
             int cellz = (int) cellv.z();
-	    System.out.println(" hit : p= " + p +" r=" + r + " , z " + z + " " + count[0] + " hits in 3x3, " + count[1] + " at " + id.getLayer() + " layer of " + hit.getSubdetector().getName());
+	    System.out.println(" hit : p= " + p +" r=" + r + " , z " + z + " " + count[0] + " hits in 3x3, " + count[1] + " at " + id.getVLayer() + " layer of " + hit.getSubdetector().getName());
             System.out.println(" cell: p= " + cellp +" r=" + cellr + " , z " + cellz);
 	}
         
@@ -500,10 +502,10 @@
 	return v;
     }
 
-    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/muonfinder
MuonFinder.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- MuonFinder.java	4 Feb 2010 17:45:32 -0000	1.8
+++ MuonFinder.java	8 Mar 2010 19:36:39 -0000	1.9
@@ -40,7 +40,7 @@
  * it is required to find good quality mip cluster in muon detector.
  *
  * @author [log in to unmask]
- * @version $Id: MuonFinder.java,v 1.8 2010/02/04 17:45:32 cassell Exp $
+ * @version $Id: MuonFinder.java,v 1.9 2010/03/08 19:36:39 cassell Exp $
  */
 
 public class MuonFinder extends Driver{
@@ -146,7 +146,7 @@
                     for(CalorimeterHit h : mumip.getCalorimeterHits()){
                         IDDecoder id = h.getIDDecoder();
                         id.setID(h.getCellID());
-                        int layer = id.getLayer();
+                        int layer = id.getVLayer();
                         if(prelayer != layer || prelayer == -1){
                             predetName = h.getSubdetector().getName();
                             i++;
@@ -203,26 +203,28 @@
                         //Using extrapolated track
                         int lastLayerBarrel = ci.getNLayers(CalorimeterType.HAD_BARREL);
                         int lastLayerEndcap = ci.getNLayers(CalorimeterType.HAD_ENDCAP);
-                        if(lastLayerBarrel != lastLayerEndcap) {System.out.println("ERROR : number of layer different");}
+//                        if(lastLayerBarrel != lastLayerEndcap) {System.out.println("ERROR : number of layer different");}
                         int endingLayer = lastLayerBarrel;
                         boolean isBarrel = true;
                         boolean hasLastPoint = true;
                         for(int i=0 ; i < 20 ;i++){ 
-                            endingLayer = endingLayer - 1;
                             IDDecoder tid = null;
                             Hep3Vector tpoint = new BasicHep3Vector();
                             Hep3Vector tBarrel = null;
                             if(isBarrel) {
-                                tBarrel = result.extendToHCALBarrelLayer(endingLayer);
+                                tBarrel = result.extendToHCALBarrelLayer(lastLayerBarrel - i -1);
                             }
-                            Hep3Vector tEndcap = result.extendToHCALEndcapLayer(endingLayer);
+                            Hep3Vector tEndcap = result.extendToHCALEndcapLayer(lastLayerEndcap - i -1);
                             if(tBarrel != null && tEndcap == null){
                                 tpoint = tBarrel;
+                                endingLayer = lastLayerBarrel - i -1;
                             }else if(tBarrel == null && tEndcap != null){
                                 tpoint = tEndcap;
                                 isBarrel = false;
+                                endingLayer = lastLayerEndcap - i -1;
                             }else if(tBarrel != null && tEndcap != null){
                                 tpoint = tBarrel;
+                                endingLayer = lastLayerBarrel - i -1;
                             }else{
                                 for(int l=0; l<endingLayer+1 ; l++){
                                     int nextlayer = endingLayer-l;

lcsim/src/org/lcsim/recon/cluster/muonfinder
MuonDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- MuonDriver.java	4 Feb 2010 17:45:32 -0000	1.3
+++ MuonDriver.java	8 Mar 2010 19:36:39 -0000	1.4
@@ -110,7 +110,7 @@
                     for(CalorimeterHit h : mumip.getCalorimeterHits()){
                         IDDecoder id = h.getIDDecoder();
                         id.setID(h.getCellID());
-                        int layer = id.getLayer();
+                        int layer = id.getVLayer();
                         if(prelayer != layer || prelayer == -1){
                             predetName = h.getSubdetector().getName();
                             i++;

lcsim/src/org/lcsim/recon/cluster/muonfinder
SimpleMipQualityDecision.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SimpleMipQualityDecision.java	26 Jan 2010 16:09:25 -0000	1.3
+++ SimpleMipQualityDecision.java	8 Mar 2010 19:36:39 -0000	1.4
@@ -12,14 +12,13 @@
  * modified from the code written by Mat.
  *
  * @author [log in to unmask]
- * @version $Id: SimpleMipQualityDecision.java,v 1.3 2010/01/26 16:09:25 cassell Exp $
+ * @version $Id: SimpleMipQualityDecision.java,v 1.4 2010/03/08 19:36:39 cassell Exp $
  */
  
 
 public class SimpleMipQualityDecision implements DecisionMakerSingle<Cluster>
 {
-    private int count;
-    boolean removeUpperHit = true;
+    boolean removeUpperHit = false;
     public SimpleMipQualityDecision() {
 	// No user-settable options for now
     }
@@ -31,7 +30,7 @@
         Set<Integer> isolayer = new HashSet<Integer>();
         Map<Integer, Set<CalorimeterHit>> exam = new HashMap<Integer, Set<CalorimeterHit>>();
 	for (CalorimeterHit hit : mip.getCalorimeterHits()) {
-	    int layer = getLayer(hit);
+	    int layer = getVLayer(hit);
             //To avoid overlap with the other detector's layer
             if(hit.getSubdetector().isEndcap()) layer = layer+100;
 	    Integer layerInt = new Integer(layer);
@@ -65,10 +64,10 @@
         return pass;
     }
 
-    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