Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa/MuonFinder on MAIN
MipTrackMap.java+29-71.1 -> 1.2
merge subclusters for muon mip

lcsim/src/org/lcsim/contrib/uiowa/MuonFinder
MipTrackMap.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MipTrackMap.java	28 Sep 2008 06:31:15 -0000	1.1
+++ MipTrackMap.java	30 Sep 2008 01:11:18 -0000	1.2
@@ -128,10 +128,6 @@
 		    boolean InSide = (curp > p || curlayer > lastlayer) && nearIDs.contains(curhit.getCellID());
 		    boolean EndToBarrelEcal = (curid.getLayer()==0 && cursubdetName.contains("EMBarrel")) && lastsubdetName.contains("EMEndcap");
                     boolean EndToBarrelHcal = (curid.getLayer()==0 && cursubdetName.contains("HADBarrel")) && lastsubdetName.contains("HADEndcap");
-		    if(debug){
-			if(EndToBarrelEcal || EndToBarrelHcal) System.out.println("This is a boundary condition");
-		    }				
-
 		    if(EcalToHcal || InSide || EndToBarrelEcal || EndToBarrelHcal ){
 			Hep3Vector cur = VecOp.sub(curpos, last0);
 			Hep3Vector curUnit = VecOp.unit(cur);
@@ -221,10 +217,36 @@
         output.addAll(mipsNewInThisTree);
         output.addAll(clumpsInThisTree);
 
-        
-            
+        //Simple way by looking at direction of two clusters
+        List<Cluster> muonmip = new Vector<Cluster>();
+        if(output.size() > 1){
+            for(int i = 0 ; i < output.size() ; i ++){
+                Cluster cluster1 = output.get(i);
+                Hep3Vector v1 = getClusterDirection(output.get(i));
+                for(int j = 1 ; j < output.size()-1 ; j ++){
+                    Cluster cluster2 = output.get(j);
+                    Hep3Vector v2 = getClusterDirection(output.get(j));
+                    double cos = VecOp.dot(v1, v2);
+                    if(cos>0.8) {
+                        BasicCluster tmpClus = new BasicCluster();
+                        for(CalorimeterHit hit : cluster1.getCalorimeterHits()){
+                           tmpClus.addHit(hit);
+                        }
+                        for(CalorimeterHit hit : cluster2.getCalorimeterHits()){
+                           tmpClus.addHit(hit);
+                        }
+                        muonmip.add(tmpClus);
+                        output.remove(cluster2);
+                    } 
+                }
+                output.remove(cluster1);
+           }
+        }else { muonmip.addAll(output); }
+
+
+
         if (m_removePoorQualityMips) {
-            removePoorQualityMips(output);
+            removePoorQualityMips(muonmip);
         }
 
         return output;
CVSspam 0.2.8