Print

Print


Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/examples/StarterAnalysisDriver.java+61-301.2 -> 1.3
java/org/lcsim/hps/users/meeg/LCIOTrackAnalysis.java+68-551.1 -> 1.2
resources/org/lcsim/hps/steering/StarterAnalysis.lcsim+10-71.1 -> 1.2
+139-92
3 modified files
add some histograms and clean up

hps-java/src/main/java/org/lcsim/hps/examples
StarterAnalysisDriver.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- StarterAnalysisDriver.java	8 Feb 2013 02:59:40 -0000	1.2
+++ StarterAnalysisDriver.java	8 Feb 2013 22:00:14 -0000	1.3
@@ -1,5 +1,8 @@
 package org.lcsim.hps.examples;
 
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import java.util.ArrayList;
 import java.util.List;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.LCRelation;
@@ -9,13 +12,15 @@
 import org.lcsim.event.TrackerHit;
 import org.lcsim.event.base.BaseRelationalTable;
 import org.lcsim.event.base.BaseTrackState;
+import org.lcsim.geometry.Detector;
 import org.lcsim.hps.users.meeg.LCIOTrackAnalysis;
 import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
 
 /*
  * Example analysis driver.
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: StarterAnalysisDriver.java,v 1.2 2013/02/08 02:59:40 meeg Exp $
+ * @version $Id: StarterAnalysisDriver.java,v 1.3 2013/02/08 22:00:14 meeg Exp $
  */
 public class StarterAnalysisDriver extends Driver {
 
@@ -23,15 +28,63 @@
     int naccepted = 0;
     private boolean debug = false;
     private double bfield = 0.5;
+    private AIDA aida = AIDA.defaultInstance();
+    IHistogram1D trkPz;
+    IHistogram2D trkMC;
+
+    @Override
+    protected void detectorChanged(Detector detector) {
+        trkPz = aida.histogram1D("Track momentum (Pz)", 50, 0, 10.0);
+        trkMC = aida.histogram2D("Track momentum vs. MCParticle momentum (Pz)", 50, 0, 10.0, 50, 0, 10.0);
+    }
 
     @Override
     public void process(EventHeader event) {
         nevents++;
-        List<Track> tracklist = event.get(Track.class, "MatchedTracks");
-        if (tracklist.size() < 2) {
-            return;
+
+        List<LCIOTrackAnalysis> tkanalList = processTracks(event);
+
+        //only look at events with 2 or more tracks
+//        if (tkanalList.size() < 2) {
+//            return;
+//        }
+
+//        System.out.println("Event with " + tkanalList.size() + " tracks");
+
+        int ok = 0;
+        for (LCIOTrackAnalysis tkanal : tkanalList) {   //remember, these tracks are in the lcsim tracking frame!     
+            Track track = tkanal.getTrack();
+            BaseTrackState ts = (BaseTrackState) track.getTrackStates().get(0);
+//            ts.computeMomentum(bfield);
+            trkPz.fill(ts.getMomentum()[0]);
+//            BaseTrackState.computeMomentum(track.getTrackStates().get(0), 0.5);
+            MCParticle mcp = tkanal.getMCParticle();
+            if (mcp != null) {
+                System.out.println("chisq: " + track.getChi2() + ", track pz: " + ts.getMomentum()[0] + ", MC momentum: " + mcp.getMomentum());
+                trkMC.fill(ts.getMomentum()[0], mcp.getPZ());
+                if (Math.abs(tkanal.getMCParticle().getPDGID()) == 611) {
+                    ok++;
+                }
+                //do some stuff to makes sure tracks are great
+                //is there an e+e- from the muonium
+            }
+        }
+
+        if (ok == 2) {
+            naccepted++;
         }
-        System.out.println("Event with "+tracklist.size()+" tracks");
+    }
+
+    @Override
+    public void endOfData() {
+
+        System.out.println("# of muonium events= " + naccepted + "; # of total = " + nevents);
+    }
+
+    private List<LCIOTrackAnalysis> processTracks(EventHeader event) {
+        List<LCIOTrackAnalysis> tkanalList = new ArrayList<LCIOTrackAnalysis>();
+
+        List<Track> tracklist = event.get(Track.class, "MatchedTracks");
 
         if (debug) {
             List<List<TrackerHit>> hitlists = event.get(TrackerHit.class);
@@ -88,29 +141,12 @@
             }
         }
 
-
-
-        int ok = 0;
         for (Track track : tracklist) {   //remember, these tracks are in the lcsim tracking frame!     
             BaseTrackState ts = (BaseTrackState) track.getTrackStates().get(0);
-            ts.computeMomentum(0.5);
-//            BaseTrackState.computeMomentum(track.getTrackStates().get(0), 0.5);
-            LCIOTrackAnalysis tkanal = new LCIOTrackAnalysis(track, hittomc, hittostrip, hittorotated);
-            MCParticle mcp = tkanal.getMCParticle();
-            if (mcp != null) {
-                System.out.println("chisq: " + track.getChi2() + ", pz: " + ts.getMomentum()[0] + ", momentum: " + mcp.getMomentum());
-                if (Math.abs(tkanal.getMCParticle().getPDGID()) == 611) {
-                    ok++;
-                }
-                //do some stuff to makes sure tracks are great
-                //is there an e+e- from the muonium
-            }
-        }
-
-        if (ok == 2) {
-            naccepted++;
+            ts.computeMomentum(bfield);
+            tkanalList.add(new LCIOTrackAnalysis(track, hittomc, hittostrip, hittorotated));
         }
-
+        return tkanalList;
     }
 
     public void setDebug(boolean debug) {
@@ -120,9 +156,4 @@
     public void setBfield(double bfield) {
         this.bfield = bfield;
     }
-
-    public void endOfData() {
-
-        System.out.println("# of muonium events= " + naccepted + "; # of total = " + nevents);
-    }
 }

hps-java/src/main/java/org/lcsim/hps/users/meeg
LCIOTrackAnalysis.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LCIOTrackAnalysis.java	8 Feb 2013 02:59:40 -0000	1.1
+++ LCIOTrackAnalysis.java	8 Feb 2013 22:00:14 -0000	1.2
@@ -3,10 +3,13 @@
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.Identifier;
 import org.lcsim.event.MCParticle;
+import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.RelationalTable;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
@@ -15,93 +18,91 @@
 /**
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: LCIOTrackAnalysis.java,v 1.1 2013/02/08 02:59:40 meeg Exp $
+ * @version $Id: LCIOTrackAnalysis.java,v 1.2 2013/02/08 22:00:14 meeg Exp $
  */
 public class LCIOTrackAnalysis {
 
+    protected Track track;
     protected MCParticle _mcp = null;
     protected double _purity;
     protected int _nhits;
     protected int _nbadhits;
+    private int _nAxialhits;
+    private int _nZhits;
     protected boolean _hasLayerOne;
+    private int[] _nStripHitsPerLayer = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     protected Map<Integer, Hep3Vector> _hitLocationPerLayer = new HashMap<Integer, Hep3Vector>();
     protected int _nhitsNew;
 
+    public Track getTrack() {
+        return track;
+    }
+
     public LCIOTrackAnalysis(Track trk, RelationalTable hittomc, RelationalTable hittostrip, RelationalTable hittorotated) {
+        track = trk;
+
         //  Get the number of hits on the track
         _nhits = trk.getTrackerHits().size();
 
         //  Create a map containing the number of hits for each MCParticle associated with the track
         Map<MCParticle, Integer> mcmap = new HashMap<MCParticle, Integer>();
         _hasLayerOne = false;
-        //  Loop over the hits on the track and make sure we have HelicalTrackHits (which contain the MC particle)
+        //  Loop over the hits on the track (HelicalTrackHits)
         for (TrackerHit rotatedHit : trk.getTrackerHits()) {
             TrackerHit hit = (TrackerHit) hittorotated.from(rotatedHit);
-//            System.out.println(hit);
             //  get the set of MCParticles associated with this hit and update the hit count for each MCParticle
-            MCParticle mcp = (MCParticle) hittomc.to(hit);
-//            Set<MCParticle> mclist = hittomc.allTo(hit);
-//            System.out.println(mclist.size());
-//            for (MCParticle mcp : mclist) {
-            if (mcp != null) {
+            Set<MCParticle> mclist = hittomc.allFrom(hit);
+//            System.out.println("MCParticle count: " + mclist.size());
+            for (MCParticle mcp : mclist) {
+                if (mcp != null) {
 //                System.out.println(mcp.getOrigin());
-                Integer mchits = 0;
-                if (mcmap.containsKey(mcp)) {
-                    mchits = mcmap.get(mcp);
+                    Integer mchits = 0;
+                    if (mcmap.containsKey(mcp)) {
+                        mchits = mcmap.get(mcp);
+                    }
+                    mchits++;
+                    mcmap.put(mcp, mchits);
                 }
-                mchits++;
-                mcmap.put(mcp, mchits);
             }
-//            }
-
-//            BasicHep3Vector axial = new BasicHep3Vector();
-//            axial.setV(0, 1, 0);
 
-
-            Set<TrackerHit> hitlist = hittostrip.allTo(hit);
+            Set<TrackerHit> hitlist = hittostrip.allFrom(hit);
             for (TrackerHit cl : hitlist) {
-                int layer = SvtUtils.getInstance().getHelper().getValue(new Identifier(cl.getCellID()), "layer");
-                System.out.println(layer);
+                int layer = -1;
+                int module = -1;
+                List<RawTrackerHit> rawHits = cl.getRawHits();
+//                System.out.println("RawHits: " + rawHits.size());
+                for (RawTrackerHit rawHit : rawHits) {
+//                    System.out.println(rawHit.getCellID());
+                    IIdentifier id = new Identifier(rawHit.getCellID());
+                    int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
+                    if (layer != -1 && layer != newLayer) {
+                        System.out.format("TrackerHit has hits from multiple layers: %d and %d\n", layer, newLayer);
+                    }
+                    layer = newLayer;
+                    int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
+                    if (module != -1 && module != newModule) {
+                        System.out.format("TrackerHit has hits from multiple modules: %d and %d\n", module, newModule);
+                    }
+                    module = newModule;
+//                    System.out.println(SvtUtils.getInstance().getHelper().getValue(id, "strip"));
+                }
+//                System.out.format("layer %d, module %d\n", layer, module);
                 if (layer == 1) {
                     _hasLayerOne = true;
                 }
 
-//                    _nStripHitsPerLayer[layer - 1] = cl.rawhits().size();
+
+                _nStripHitsPerLayer[layer - 1] = rawHits.size();
                 _hitLocationPerLayer.put(layer, new BasicHep3Vector(cl.getPosition()));
                 _nhitsNew++;
-//                    double axdotu = VecOp.dot(cl.u(), axial);
-//                    boolean isAxial = false;
-//                    if (axdotu > 0.5) {
-//                        isAxial = true;
-//                        _nAxialhits++;
-//                    } else {
-//                        _nZhits++;
-//                    }
-//                    List<MCParticle> mcPartList = cl.MCParticles();
-//                    _nMCHitsPerLayer[layer - 1] = mcPartList.size();
-//                    for (MCParticle mcp : mcPartList) {
-//                        Integer mchits = 0;
-//                        if (mcmapAll.containsKey(mcp)) {
-//                            mchits = mcmapAll.get(mcp);
-//                        }
-//                        mchits++;
-//                        mcmapAll.put(mcp, mchits);
-//                        if (isAxial) {
-//                            Integer mchitsAxial = 0;
-//                            if (mcmapAxial.containsKey(mcp)) {
-//                                mchitsAxial = mcmapAxial.get(mcp);
-//                            }
-//                            mchitsAxial++;
-//                            mcmapAxial.put(mcp, mchitsAxial);
-//                        } else {
-//                            Integer mchitsZ = 0;
-//                            if (mcmapZ.containsKey(mcp)) {
-//                                mchitsZ = mcmapZ.get(mcp);
-//                            }
-//                            mchitsZ++;
-//                            mcmapZ.put(mcp, mchitsZ);
-//                        }
-//                    }
+
+                boolean isAxial = SvtUtils.getInstance().isAxial(SvtUtils.getInstance().getSensor(module, layer));
+                if (isAxial) {
+                    _nAxialhits++;
+                } else {
+                    _nZhits++;
+
+                }
             }
         }
 
@@ -144,6 +145,14 @@
         return _nhitsNew;
     }
 
+    public int getNAxialHits() {
+        return _nAxialhits;
+    }
+
+    public int getNZHits() {
+        return _nZhits;
+    }
+
     public boolean hasLayerOne() {
         return _hasLayerOne;
     }
@@ -151,4 +160,8 @@
     public Hep3Vector getClusterPosition(Integer layer) {
         return _hitLocationPerLayer.get(layer);
     }
+
+    public int getNumberOfStripHits(int layer) {
+        return _nStripHitsPerLayer[layer - 1];
+    }
 }

hps-java/src/main/resources/org/lcsim/hps/steering
StarterAnalysis.lcsim 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- StarterAnalysis.lcsim	8 Feb 2013 02:59:40 -0000	1.1
+++ StarterAnalysis.lcsim	8 Feb 2013 22:00:14 -0000	1.2
@@ -1,29 +1,32 @@
 <!-- 
   Example steering file for analysis.
   @author Sho Uemura <[log in to unmask]>
-  @version $Id: StarterAnalysis.lcsim,v 1.1 2013/02/08 02:59:40 meeg Exp $
+  @version $Id: StarterAnalysis.lcsim,v 1.2 2013/02/08 22:00:14 meeg Exp $
 -->
 <lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
        xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
     <execute>
         <driver name="EventMarkerDriver"/>
-        
+        <driver name="HPSCalibrationDriver"/>   
+
         <driver name="StarterAnalysisDriver"/>   
 
-<!--		<driver name="AidaSaveDriver"/>-->
+        <driver name="AidaSaveDriver"/>
     </execute> 
 
     <drivers>
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
             <eventInterval>1000</eventInterval>
         </driver> 
+        
+        <driver name="HPSCalibrationDriver" type="org.lcsim.hps.monitoring.HPSCalibrationDriver"/>
+
         <driver name="StarterAnalysisDriver" type="org.lcsim.hps.examples.StarterAnalysisDriver">
         </driver>
 
-		<driver name="AidaSaveDriver"
-                type="org.lcsim.job.AidaSaveDriver">
-			<outputFileName>${outputFile}</outputFileName>
-		</driver>
+        <driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
+            <outputFileName>${outputFile}</outputFileName>
+        </driver>
     </drivers>
 </lcsim>
 	
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1