Author: mgraham
Date: Thu Oct 30 08:16:39 2014
New Revision: 1343
Log:
Straight track fitting analysis driver
Modified:
java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java
Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java (original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/StraightTrackAnalysis.java Thu Oct 30 08:16:39 2014
@@ -1,13 +1,18 @@
package org.hps.users.mgraham;
import hep.aida.IHistogram1D;
+import java.util.HashMap;
import java.util.List;
-import org.hps.recon.tracking.nobfield.StraightTrack;
+import java.util.Map;
+import org.hps.analysis.examples.TrackAnalysis;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.LCRelation;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.RelationalTable;
import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseRelationalTable;
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -23,6 +28,9 @@
private String mcSvtHitsName = "TrackerHits";
private String rawHitsName = "RawTrackerHitMaker_RawTrackerHits";
private String clustersName = "StripClusterer_SiTrackerHitStrip1D";
+ private final String helicalTrackMCRelationsCollectionName = "HelicalTrackMCRelations";
+ private final String helicalTrackHitRelationsCollectionName = "HelicalTrackHitRelations";
+ private final String rotatedHelicalTrackHitRelationsCollectionName = "RotatedHelicalTrackHitRelations";
private String hthName = "HelicalTrackHits";
private String tracksName = "StraightTracks";
@@ -72,16 +80,57 @@
aida.histogram1D("Number of Layers Hit").fill(totLayers);
List<Track> tracks = event.get(Track.class, tracksName);
aida.histogram1D("Number of Tracks found").fill(tracks.size());
+
+ //make some maps and relation tables
+ Map<Track, TrackAnalysis> tkanalMap = new HashMap<Track, TrackAnalysis>();
+ RelationalTable hittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ List<LCRelation> mcrelations = event.get(LCRelation.class, helicalTrackMCRelationsCollectionName);
+ for (LCRelation relation : mcrelations)
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null)
+ hittomc.add(relation.getFrom(), relation.getTo());
+
+ System.out.println("Size of hittomc collection " + hittomc.size());
+ RelationalTable mcHittomcP = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ // Get the collections of SimTrackerHits
+ List<List<SimTrackerHit>> simcols = event.get(SimTrackerHit.class);
+ // Loop over the SimTrackerHits and fill in the relational table
+ for (List<SimTrackerHit> simlist : simcols)
+ for (SimTrackerHit simhit : simlist)
+ if (simhit.getMCParticle() != null)
+ mcHittomcP.add(simhit, simhit.getMCParticle());
+
+ RelationalTable trktomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ RelationalTable rawtomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ if (event.hasCollection(LCRelation.class, "SVTTrueHitRelations")) {
+ List<LCRelation> trueHitRelations = event.get(LCRelation.class, "SVTTrueHitRelations");
+ for (LCRelation relation : trueHitRelations)
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null)
+ rawtomc.add(relation.getFrom(), relation.getTo());
+ }
+
+ RelationalTable hittostrip = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ List<LCRelation> hitrelations = event.get(LCRelation.class, helicalTrackHitRelationsCollectionName);
+ for (LCRelation relation : hitrelations)
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null)
+ hittostrip.add(relation.getFrom(), relation.getTo());
+
+ RelationalTable hittorotated = new BaseRelationalTable(RelationalTable.Mode.ONE_TO_ONE, RelationalTable.Weighting.UNWEIGHTED);
+ List<LCRelation> rotaterelations = event.get(LCRelation.class, rotatedHelicalTrackHitRelationsCollectionName);
+ for (LCRelation relation : rotaterelations)
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null)
+ hittorotated.add(relation.getFrom(), relation.getTo());
+
for (Track trk : tracks) {
- StraightTrack stght = (StraightTrack) trk;
- aida.histogram1D("x0", 50, -2, 2).fill(stght.getTrackParameters()[0]);
- aida.histogram1D("y0", 50, -2, 2).fill(stght.getTrackParameters()[2]);
- aida.histogram1D("xz slope", 50, -0.2, 0.25).fill(stght.getTrackParameters()[1]);
- aida.histogram1D("yz slope", 50, -0.25, 0.25).fill(stght.getTrackParameters()[3]);
- aida.histogram1D("track chi2 per ndf", 50, 0, 10).fill(stght.getChi2()/stght.getNDF());
- aida.histogram1D("track nhits", 50, 0, 10).fill(stght.getTrackerHits().size());
+// StraightTrack stght = (StraightTrack) trk;
+ aida.histogram1D("d0", 50, -2, 2).fill(trk.getTrackParameters()[0]);
+ aida.histogram1D("z0", 50, -2, 2).fill(trk.getTrackParameters()[3]);
+ aida.histogram1D("xy slope", 50, -0.2, 0.25).fill(trk.getTrackParameters()[1]);
+ aida.histogram1D("sz slope", 50, -0.25, 0.25).fill(trk.getTrackParameters()[4]);
+ aida.histogram1D("track chi2 per ndf", 50, 0, 2).fill(trk.getChi2() / trk.getNDF());
+ aida.histogram1D("track nhits", 50, 0, 10).fill(trk.getTrackerHits().size());
+ TrackAnalysis tkanal = new TrackAnalysis(trk, hittomc);
+ }
- }
}
}
|