Print

Print


Commit in lcsim/src/org/lcsim/recon/ztracking/cheater on MAIN
TrackingCheater.java+37-641.2 -> 1.3
Separate CheatTrack and CombinedTrack classes

lcsim/src/org/lcsim/recon/ztracking/cheater
TrackingCheater.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- TrackingCheater.java	3 Aug 2005 23:43:18 -0000	1.2
+++ TrackingCheater.java	5 Aug 2005 00:32:56 -0000	1.3
@@ -7,20 +7,18 @@
 
 package org.lcsim.recon.ztracking.cheater;
 
-/*
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.SimTrackerHit;
 import org.lcsim.event.Track;
-import org.lcsim.recon.ztracking.FoundTrack;
 
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.loop.LCSimLoop;
 
-import hep.lcio.event.*;
-import hep.lcio.implementation.io.LCFactory;
-import hep.lcio.io.*;
+//import hep.lcio.event.*;
+//import hep.lcio.implementation.io.LCFactory;
+//import hep.lcio.io.*;
 
 import java.io.File;
 import java.text.DecimalFormat;
@@ -28,19 +26,13 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-*/
+
 
 /**
  * The Tracking cheater works by finding perfectly reconstructed tracks 
  * using the MC truth information associated with each hit.
  * 
  */
-
-public class TrackingCheater
-{
-    
-}
-/*
 public class TrackingCheater extends Driver
 // public class TrackingCheater extends AbstractTracker
 {
@@ -49,7 +41,7 @@
     int NTracks = 0, NCombinedTracks = 0;
 
 
-    
+    /** */
     public TrackingCheater()
     {
 	String text = ClassName+"  version 0.7";
@@ -75,15 +67,14 @@
 	for (List<SimTrackerHit> collection : collections)
 	{
 	    String name = event.getMetaData(collection).getName();
-	    if (name.equals("TkrEndcapHits")||name.equals("VtxEndcapHits")) continue;
-	    if (first) System.out.println("   Find "+name+" tracks");
+	    if (first) System.out.println("   Find "+name+" cheater tracks");
 	    Map<MCParticle,CheatTrack> result = findTracks(collection);
 	    if (result.size() > 0) event.put(name+"Tracks",new ArrayList(result.values()));
 	}
 
 	// Find combined tracks.
 	List<List<CheatTrack>> trackLists = event.get(CheatTrack.class);
-	if (first) System.out.println("   Find combined tracks.");
+	if (first) System.out.println("   Find combined cheater tracks.");
 	Map<MCParticle, CombinedTrack> combined = findCombinedTracks(trackLists);
 	if (combined.size() > 0) event.put("CombinedTracks",new ArrayList(combined.values()));
 
@@ -92,13 +83,13 @@
 	    aida.cloud1D("NTracks").fill(NTracks);
 	    aida.cloud1D("NCombined").fill(NCombinedTracks);
 
-	    List<List<FoundTrack>> foundTrackLists = event.get(FoundTrack.class);
-	    for (List<FoundTrack> tracks : foundTrackLists ) {
+	    List<List<CheatTrack>> foundTrackLists = event.get(CheatTrack.class);
+	    for (List<CheatTrack> tracks : foundTrackLists ) {
 		String name = event.getMetaData(tracks).getName();
 		if (name.equals("TkrBarrHitsTracks")) {
 		    if (first) System.out.println("   Plot "+name+" points");
 		    int np = 0;
-		    for (FoundTrack track : tracks) {
+		    for (CheatTrack track : tracks) {
 			MCParticle mcP = track.getMCParticle();
 			int nPoints = track.getNPoints(); np+=nPoints;
 			aida.cloud1D("NBarrelPoints").fill(nPoints);
@@ -108,7 +99,7 @@
 		else if (name.equals("CombinedTracks")) {
 		    if (first) System.out.println("   Plot "+name+" points");
 		    int np=0;
-		    for (FoundTrack track : tracks) {
+		    for (CheatTrack track : tracks) {
 			MCParticle mcP = track.getMCParticle();
 			CombinedTrack trk = (CombinedTrack) track;
 			int nPoints = 0;
@@ -127,6 +118,7 @@
 	if (nEvt>=3) firstEvents = false;
     }
 
+
     private Map<MCParticle,CheatTrack> findTracks(List<SimTrackerHit> hits)
     {
 	Map<MCParticle,CheatTrack> result = new HashMap<MCParticle,CheatTrack>();
@@ -136,6 +128,11 @@
 	    double x[] = hit.getPoint();
 	    //System.out.println("    hit position: x,y,z = "+df.format(x[0])+", "+df.format(x[1])+", "+df.format(x[2]));
 	    MCParticle mcP = hit.getMCParticle();
+	    if (mcP==null) {
+		if (warnNoMCParticle) System.err.println("TrackingCheater:: SimTrackerHit with no MCParticle");
+		warnNoMCParticle = false;
+		continue;
+	    }
 	    //if (first) System.out.println("    MCParticle PDGID,charge = "+mcP.getPDGID()+", "+mcP.getCharge());
 	    CheatTrack ct = result.get(mcP);
 	    if (ct == null) { result.put(mcP,ct = new CheatTrack(mcP)); NTracks++; }
@@ -156,10 +153,19 @@
 		ct.add(track);
 	    }
 	}
+
+	// Reject combined tracks with 1 or 2 hits.
+	List<MCParticle> mcpList = new ArrayList();
+	for (MCParticle mcp : result.keySet()) {
+	    CheatTrack track = result.get(mcp);
+	    if (track.getNPoints()<=2) mcpList.add(mcp);
+	}
+	for (MCParticle mcp : mcpList) result.remove(mcp);
+
 	return result;
     }
 
-    // Get fraction of hits from parent MC particle. 
+    /** Get fraction of hits from parent MC particle. */
     public double getMCPFraction(int itrk)
     {
 	return 1.0;
@@ -170,16 +176,16 @@
 	String JobName = "TestTrackingCheater";
 	String text = "Running "+JobName+" in Batch mode.";
 	System.out.println(text); System.err.println(text);
-    
-//	ILCFactory factory = LCFactory.getInstance();
-//	LCReader reader = factory.createLCReader();
-//	reader.open(args[0]);
-//	reader.registerLCEventListener(analysis);
-//	reader.readStream();
-//	reader.close();
-//	System.out.println("Analyzed "+analysis.nEvents+" events");
-//	analysis.tree.commit();
-     
+    /*
+	ILCFactory factory = LCFactory.getInstance();
+	LCReader reader = factory.createLCReader();
+	reader.open(args[0]);
+	reader.registerLCEventListener(analysis);
+	reader.readStream();
+	reader.close();
+	System.out.println("Analyzed "+analysis.nEvents+" events");
+	analysis.tree.commit();
+     */
 	// Create an analysis job.
 	LCSimLoop loop = new LCSimLoop();
 	TrackingCheater analysis = new TrackingCheater();
@@ -199,36 +205,3 @@
 
     private DecimalFormat df = new DecimalFormat();
 }
-
-
-class CheatTrack extends FoundTrack
-{
-    static boolean warnUnknownMCParticle = true;
-
-    CheatTrack(MCParticle particle)
-    {
-	super(particle);
-     
-//	if (particle.hashCode()<0) {
-//	    if (warnUnknownMCParticle) {
-//		System.err.println("TrackingCheater::CheatTrack: Unknown MCParticle  - hashCode = "+particle.hashCode());
-//		warnUnknownMCParticle = false;
-//	    }
-//	}
-     
-    }
-}
-
-class CombinedTrack extends FoundTrack
-{
-    List list = new ArrayList();
-
-    CombinedTrack(MCParticle particle)
-    {
-	super(particle);
-    }
-    void add(FoundTrack track) { list.add(track); }
-    int  getNTracks() { return list.size(); }
-    FoundTrack getTrack(int n) { return (FoundTrack) list.get(n); }
-}
-*/
\ No newline at end of file
CVSspam 0.2.8