Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/Mbussonn/JetFinder on MAIN
JetDriverExtended.java+18-181.1 -> 1.2
JetFinder.java+59-461.1 -> 1.2
+77-64
2 modified files
Update my directory to sync with other computers

lcsim-contrib/src/main/java/org/lcsim/contrib/Mbussonn/JetFinder
JetDriverExtended.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- JetDriverExtended.java	29 Jun 2009 18:13:08 -0000	1.1
+++ JetDriverExtended.java	30 Jun 2009 18:44:56 -0000	1.2
@@ -26,7 +26,7 @@
  * A simple driver which can be used to find jets from ReconstructedParticles.
  * The resuslting jets are stored in a new collection of ReconstructedParticles.
  * @author tonyj
- * @version $Id: JetDriverExtended.java,v 1.1 2009/06/29 18:13:08 mbussonn Exp $
+ * @version $Id: JetDriverExtended.java,v 1.2 2009/06/30 18:44:56 mbussonn Exp $
  */
 public class JetDriverExtended extends Driver
 {
@@ -145,7 +145,7 @@
       //if (hist)
       {
          AIDA aida = AIDA.defaultInstance();
-		 aida.cloud1D("JetDriver/sumE").fill(totalEnergy);
+		 aida.cloud1D("JDE/JetDriver/sumE").fill(totalEnergy);
 		 double tje =0;
 		 for(int i=0;i<finder.njets();i++){
 			HepLorentzVector hlv = finder.jet(i);
@@ -160,31 +160,31 @@
 			double phi = Math.atan2(px,py);
 			tje +=hlv.v3().magnitude() ;
 			if(1==finder.nParticlesPerJet(i)){
-				aida.cloud1D("One particle/jet eta ").fill(eta);
-				aida.cloud1D("One particle/jet phi ").fill(phi);
-				aida.cloud1D("One particle/jet pt").fill(pt);
-				aida.cloud1D("One particle/jet |H4|").fill(finder.jet(i).magnitude());
-				aida.cloud1D("One particle/jet pr").fill(pr);
-				aida.cloud1D("One particle/jet pz").fill(pz);
+				aida.cloud1D("JDE/One particle/jet eta ").fill(eta);
+				aida.cloud1D("JDE/One particle/jet phi ").fill(phi);
+				aida.cloud1D("JDE/One particle/jet pt").fill(pt);
+				aida.cloud1D("JDE/One particle/jet |H4|").fill(finder.jet(i).magnitude());
+				aida.cloud1D("JDE/One particle/jet pr").fill(pr);
+				aida.cloud1D("JDE/One particle/jet pz").fill(pz);
 				//aida.cloud2D("One particle/jet direction").fill(pz,pr);
 
 			}else{
 
-				aida.cloud1D("Jet particle/jet eta ").fill(eta);
-				aida.cloud1D("Jet particle/jet phi ").fill(phi);
-				aida.cloud1D("Jet particle/jet pt").fill(pt);
-				aida.cloud1D("Jet particle/jet |H4|").fill(finder.jet(i).magnitude());
-				aida.cloud1D("Jet particle/jet pr").fill(pr);
-				aida.cloud1D("Jet particle/jet pz").fill(pz);
+				aida.cloud1D("JDE/Jet particles/jet eta ").fill(eta);
+				aida.cloud1D("JDE/Jet particles/jet phi ").fill(phi);
+				aida.cloud1D("JDE/Jet particles/jet pt").fill(pt);
+				aida.cloud1D("JDE/Jet particles/jet |H4|").fill(finder.jet(i).magnitude());
+				aida.cloud1D("JDE/Jet particles/jet pr").fill(pr);
+				aida.cloud1D("JDE/Jet particles/jet pz").fill(pz);
 				//aida.cloud2D("Jet particle/jet direction").fill(pz,pr);
 
-				aida.cloud2D("JetDriver/jet direction ").fill(hlv.v3().x(),hlv.v3().y());
-				aida.cloud1D("JetDriver/particlesPerJet").fill(finder.nParticlesPerJet(i));
-				aida.cloud1D("JetDriver/nJets").fill(finder.njets());
+				aida.cloud2D("JDE/JetDriver/jet direction ").fill(hlv.v3().x(),hlv.v3().y());
+				aida.cloud1D("JDE/JetDriver/particlesPerJet").fill(finder.nParticlesPerJet(i));
+				aida.cloud1D("JDE/JetDriver/nJets").fill(finder.njets());
 			}
 
 			}
-         aida.cloud1D("jetDriver/total jet energy").fill(tje);
+         aida.cloud1D("JDE/jetDriver/total jet energy").fill(tje);
 
 
       }

lcsim-contrib/src/main/java/org/lcsim/contrib/Mbussonn/JetFinder
JetFinder.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- JetFinder.java	29 Jun 2009 18:13:08 -0000	1.1
+++ JetFinder.java	30 Jun 2009 18:44:56 -0000	1.2
@@ -7,10 +7,9 @@
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogramFactory;
 import hep.aida.IProfile1D;
-import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 import java.io.IOException;
-import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -18,18 +17,15 @@
 import java.util.logging.Logger;
 import org.lcsim.contrib.Partridge.TrackingTest.TrackAnalysis;
 import org.lcsim.contrib.mgraham.sATLASDigi.FindableTrack;
-import org.lcsim.contrib.mgraham.sATLASDigi.FindableTrack.Ignore;
-import org.lcsim.contrib.sATLAS.TrackReconstructionDriver;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.LCRelation;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.ReconstructedParticle;
 import org.lcsim.event.RelationalTable;
 import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
 import org.lcsim.event.base.BaseRelationalTable;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
-import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
-import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
 import org.lcsim.recon.vertexing.zvtop4.VectorArithmetic;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -54,7 +50,6 @@
                gx = hf.createProfile1D("track finding efficiency vs angle ",35,0.0,.7);
                gxnarrow = hf.createProfile1D("track finding efficiency vs angle(near zero) ",70,0.0,.2);
                gy = hf.createHistogram1D("nummber of mcp in bin","this", 35, 0.0,.7);
-
         }
         System.out.println("creating gx "+gx);
    }
@@ -71,7 +66,7 @@
    {
         System.out.println("processing "+this.getName());
         List<ReconstructedParticle> jets = event.get(ReconstructedParticle.class,"Jets");
-        aida.cloud1D("nJets").fill(jets.size());
+        //aida.cloud1D("nJets").fill(jets.size());
 		RelationalTable     hittomc     = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
 		RelationalTable     trktomc     = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
 		List<LCRelation>    mcrelations = event.get(LCRelation.class, "HelicalTrackMCRelations");
@@ -104,7 +99,7 @@
 				trktomc.add(track, mcp);
 			}//</editor-fold>
 
-
+        int njets=0;
 		List<MCParticle> mcplist = new LinkedList<MCParticle>();
         FindableTrack findable = new FindableTrack(event);
 		for(ReconstructedParticle jet : jets){
@@ -112,9 +107,9 @@
 			double jpy = jet.getMomentum().y();
 			double jpz = jet.getMomentum().z();
 			double jpt = Math.sqrt(jpx*jpx +jpy*jpy);
-            if (jpt <150)
+            if (jpt <250)
                 continue;
-			
+			njets++;
 			List<ReconstructedParticle> listOfParticles = jet.getParticles();
 			if(listOfParticles.size()<2){continue;}
             aida.cloud2D("jet direction r z").fill(jpz,jpt);
@@ -126,6 +121,7 @@
 			}
 			Hep3Vector jetMomentum = jet.getMomentum();
 			int ntracks=0;
+            int nfindableMCP=0;
             MCParticleExtended mcpx         = new MCParticleExtended();
 			for(MCParticle         mcp          : mcplist){
 				mcpx.RecycleWithMCParticleAndEvent(mcp, event);//try not to allocate new object inside a tight loop         = new MCParticleExtended(mcp,event);
@@ -138,48 +134,65 @@
 					||mcp.getGeneratorStatus()!= MCParticleExtended.FINAL_STATE
 					||Math.abs(mcpx.getEta())>2.5)
                     {continue;}
-				else{
-					double angle = getAngle(mmt,jetMomentum);
-                    double wgt = 0.0;
-                    aida.cloud1D("angle").fill(angle);
-					if(setOfTrack.size()>1){
-                        wgt = 0.0;
-						aida.cloud1D("track with more than 1 mcp").fill(setOfTrack.size());						continue;
-					}
-					else if(setOfTrack.size()==0) {
-        				wgt = 0.0;
-                        aida.cloud1D("not found/nhits").fill(findable.LayersHit(mcp));
-                        aida.cloud1D("not found/eta")  .fill(mcpx.getEta());
-					}else if (setOfTrack.size()==1){
-                        ntracks++;
-                        wgt = 1.0;                                    //<editor-fold desc="//some useless graphs">
-					Track track = setOfTrack.iterator().next();
-					double d0track = track.getTrackParameter(HelicalTrackFit.dcaIndex);
+                nfindableMCP++;
+                double angle = getAngle(mmt,jetMomentum);
+                double wgt = 0.0;
+                aida.cloud1D("all/angle").fill(angle);
+                if(setOfTrack.size()>1){
+                    aida.cloud1D("track with more than 1 mcp").fill(setOfTrack.size());
+                    continue;
+                }
+                else if(setOfTrack.size()==0) {
+                    wgt = 0.0;
+                    aida.cloud1D("not found/nhits").fill(findable.LayersHit(mcp));
+                    aida.cloud1D("not found/eta")  .fill(mcpx.getEta());
+                    aida.cloud1D("not found/angle").fill(angle);
+                }else if (setOfTrack.size()==1){
+                    ntracks++;
+                    wgt = 1.0;
+                    Track track = setOfTrack.iterator().next();
+                    double d0track = track.getTrackParameter(HelicalTrackFit.dcaIndex);
                     double d0mcp   = mcpx.getDCA();
                     double z0track = track.getTrackParameter(HelicalTrackFit.z0Index);
                     double z0mcp   = mcpx.getZ0();
-
-					double px = track.getPX();
-					double py = track.getPY();
-					double pz = track.getPZ();
-					double ps = Math.sqrt(px*px+py*py+pz*pz);
+                    double px = track.getPX();
+                    double py = track.getPY();
+                    double pz = track.getPZ();
+                    double ps = Math.sqrt(px*px+py*py+pz*pz);
                     double pmcp= mmt.magnitude();
-                    
-                    aida.cloud2D("residu/d0-z0").fill(d0track-d0mcp,z0mcp-z0track);
-                    aida.cloud1D("residu/momentum").fill(pmcp-ps);
-                    aida.cloud1D("residu/number of hits").fill(findable.LayersHit(mcp)-track.getTrackerHits().size());
-					}
-                    gy.fill(angle);
-                    gx.fill(angle,wgt);
-                    gxnarrow.fill(angle,wgt);
-                    aida.cloud2D("nTrack vs nMCP in jet").fill(listOfParticles.size(), ntracks);
+                    //let's get the purity
+                    Set<TrackerHit> trackHits = new HashSet(track.getTrackerHits()) ;
+                    Set<TrackerHit> MCPHits   = new HashSet(hittomc.allTo(mcp));
+                    Set intersection = new HashSet(trackHits);
+                    intersection.retainAll(MCPHits);
+                    double trackp = (double)intersection.size()/(double)trackHits.size();
+                    double mcpp   = (double)intersection.size()/(double)MCPHits.size();
+
+                    aida.cloud2D("residual/d0-z0").fill(d0track-d0mcp,z0mcp-z0track);
+                    aida.cloud1D("residual/momentum").fill(pmcp-ps);
+                    aida.cloud1D("residual/number of hits").fill(findable.LayersHit(mcp)-track.getTrackerHits().size());
+                    aida.cloud1D("residual/chi squared").fill(track.getChi2());
+                    aida.cloud1D("track/purity (intersect track)").fill(trackp);
+                    aida.cloud1D("track/purity (intersect MCP)")  .fill(mcpp);
+
+                }
+                aida.cloud1D("angle").fill(angle);
+                gy.fill(angle);
+                gx.fill(angle,wgt);
+                gxnarrow.fill(angle,wgt);
 
-				}
 			}//end loop through MCP
-			mcplist.clear();	
-		}
+			if(nfindableMCP!=0){
+                aida.cloud2D("nTrack vs nMCP in jet").fill(listOfParticles.size(), (double)ntracks/(double)listOfParticles.size());
+                aida.cloud2D("% of finded tracks vs nMCPfindable ").fill(nfindableMCP, (double)ntracks/(double)nfindableMCP);
+                }
+            mcplist.clear();
+		}//end looping through jets
+        aida.cloud1D("number of jets per event :").fill(njets);
+   }//end proces(event)
+
+
 
-   }
    private double getAngle(Hep3Vector h1, Hep3Vector h2){
 	   double ca = VectorArithmetic.dot(h1, h2)/(h1.magnitude()*h2.magnitude());
 	   return Math.acos(ca);
CVSspam 0.2.8