lcsim/src/org/lcsim/contrib/uiowa/MuonFinder
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;