Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps on MAIN
analysis/ecal/HPSEcalPlotsDriver.java+80-151.5 -> 1.6
recon/tracking/kalman/FullFitKalman.java+18-291.2 -> 1.3
                     /KalmanGeom.java+3-91.2 -> 1.3
                     /TubeHelper.java-11.1 -> 1.2
users/mgraham/KalmanGeom.java+3-111.2 -> 1.3
+104-65
5 modified files
cleanup imports

hps-java/src/main/java/org/lcsim/hps/analysis/ecal
HPSEcalPlotsDriver.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- HPSEcalPlotsDriver.java	18 Jul 2011 21:02:46 -0000	1.5
+++ HPSEcalPlotsDriver.java	27 Jul 2011 23:33:44 -0000	1.6
@@ -3,6 +3,7 @@
 import hep.aida.ICloud1D;
 import hep.aida.ICloud2D;
 import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
 import hep.physics.vec.Hep3Vector;
 
 import java.util.ArrayList;
@@ -12,13 +13,16 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
+import org.lcsim.event.util.ParticleTypeClassifier;
 import org.lcsim.units.SystemOfUnits;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -27,7 +31,7 @@
  * Diagnostic plots for HPS ECal.
  * 
  * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: HPSEcalPlotsDriver.java,v 1.5 2011/07/18 21:02:46 jeremy Exp $
+ * @version $Id: HPSEcalPlotsDriver.java,v 1.6 2011/07/27 23:33:44 jeremy Exp $
  */
 public class HPSEcalPlotsDriver extends Driver 
 {
@@ -38,7 +42,11 @@
 
     // MCParticle plots.
     ICloud1D primaryEPlot;
-    ICloud1D fsPlot;
+    ICloud1D fsCountPlot; 
+    ICloud1D fsEPlot;    
+    ICloud1D fsGammaEPlot;
+    ICloud1D fsElectronEPlot;
+    ICloud1D fsPositronEPlot;
     
     // CalHit plots.
     IHistogram1D hitEPlot;
@@ -53,6 +61,10 @@
     ICloud1D timePlot;
     ICloud1D hitCountPlot;
     ICloud1D idCountPlot;
+    ICloud1D crystalXPlot;
+    ICloud1D crystalYPlot;
+    //ICloud2D cellXYPlot;
+    IHistogram2D crystalXYPlot;
     
     // Cluster plots.
     IHistogram1D nclusPlot;
@@ -60,7 +72,7 @@
     ICloud1D clusTotEPlot;           
     ICloud1D leadClusEPlot;
     ICloud1D leadClus2EPlot;
-    ICloud1D clusResTop3Plot;
+    //ICloud1D clusResTop3Plot;
     IHistogram1D clusHitPlot;
     ICloud1D clusSeedEPlot;
     ICloud1D clusSeedDistPlot;
@@ -119,6 +131,21 @@
     
     public void startOfData()
     {
+        fsCountPlot = aida.cloud1D("MCParticle: Number of Final State Particles");
+        fsCountPlot.annotation().addItem("xAxisLabel", "Number of FS Particles");
+        
+        fsEPlot = aida.cloud1D("MCParticle: FS Particle E");
+        fsEPlot.annotation().addItem("xAxisLabel", "Particle E [GeV]");
+        
+        fsGammaEPlot = aida.cloud1D("MCParticle: FS Gamma E");
+        fsGammaEPlot.annotation().addItem("xAxisLabel", "Particle E [GeV]");
+        
+        fsElectronEPlot = aida.cloud1D("MCParticle: FS Electron E");
+        fsElectronEPlot.annotation().addItem("xAxisLabel", "Particle E [GeV]");
+        
+        fsPositronEPlot = aida.cloud1D("MCParticle: FS Positron E");
+        fsPositronEPlot.annotation().addItem("xAxisLabel", "Particle E [GeV]");
+        
         timePlot = aida.cloud1D(ecalCollectionName + " : Hit Time");
         timePlot.annotation().addItem("yAxisScale", "log");
         timePlot.annotation().addItem("xAxisLabel", "Time [ns]");
@@ -157,9 +184,16 @@
         hitXZPlot.annotation().addItem("xAxisLabel", "X [mm]");
         hitXZPlot.annotation().addItem("yAxisLabel", "Z [mm]");
         
-        fsPlot  = aida.cloud1D("MCParticle: Number of Final State Particles");
-        fsPlot.annotation().addItem("xAxisLabel", "Number of FS Particles");
+        crystalXPlot = aida.cloud1D(ecalCollectionName + " : X Field Value");
+        crystalXPlot.annotation().addItem("xAxisLabel", "Number of Entries");
+        
+        crystalYPlot = aida.cloud1D(ecalCollectionName + " : Y Field Value");
+        crystalYPlot.annotation().addItem("xAxisLabel", "Number of Entries");
         
+        crystalXYPlot = aida.histogram2D(
+                ecalCollectionName + " : X & Y ID Values", 
+                46, -23., 23., 5, 1., 6.);
+                               
         clusEPlot = aida.cloud1D(ecalClusterCollectionName + " : Cluster E");
         clusEPlot.annotation().addItem("xAxisLabel", "E [GeV]");
         
@@ -181,8 +215,8 @@
         clusTotEPlot = aida.cloud1D(ecalClusterCollectionName + " : Total Clus E in Event");
         clusTotEPlot.annotation().addItem("xAxisLabel", "E [GeV]");
         
-        clusResTop3Plot = aida.cloud1D(ecalClusterCollectionName + " : Total Clus E Residual with Top 3 Particles");
-        clusResTop3Plot.annotation().addItem("xAxisLabel", "E [GeV]");
+        //clusResTop3Plot = aida.cloud1D(ecalClusterCollectionName + " : Total Clus E Residual with Top 3 Particles");
+        //clusResTop3Plot.annotation().addItem("xAxisLabel", "E [GeV]");
         
         clusHitPlot = aida.histogram1D(ecalClusterCollectionName + " : Number of Clusters per Hit", 5, 1, 6);
         clusHitPlot.annotation().addItem("xAxisLabel", "Number of Clusters");
@@ -197,28 +231,51 @@
         clusNHits = aida.histogram1D(ecalClusterCollectionName + " : Number of Hits per Cluster", 13, 0, 13);
         clusNHits.annotation().addItem("xAxisLabel", "Number of Hits");
         
-        leadClusAndPrimaryPlot = aida.cloud2D(ecalClusterCollectionName + " : Lead Cluster E vs Highest Primary Particle E");        
+        leadClusAndPrimaryPlot = aida.cloud2D(ecalClusterCollectionName + " : Lead Cluster E vs Highest Primary Particle E");
     }
-            
+                
     public void process(EventHeader event)
     {
         // sum and max vars
         double esum = 0;
         double emax = 0;
         double tmax = 0;
-                
+                              
         // Loop over hits from ECal collection.
         List<CalorimeterHit> hits = event.get(CalorimeterHit.class, ecalCollectionName);
         int nhits = hits.size();
+                       
+        // Get ID helper.
+        IIdentifierHelper helper = 
+            event.getMetaData(hits).getIDDecoder().getSubdetector().getDetectorElement().getIdentifierHelper();
         
         // MCParticles
         List<MCParticle> mcparticles = event.get(MCParticle.class).get(0);
         
         // Final State particles.
-        List<MCParticle> fsParticles = getFinalStateParticles(mcparticles);
+        List<MCParticle> fsParticles = makeGenFSParticleList(mcparticles);
         
         //System.out.println("fsParticles="+fsParticles.size());
-        fsPlot.fill(fsParticles.size());
+        fsCountPlot.fill(fsParticles.size());
+        
+        for (MCParticle fs : fsParticles)
+        {
+            double fsE = fs.getEnergy();
+            int fsPdg = fs.getPDGID();
+            fsEPlot.fill(fsE);
+            if (ParticleTypeClassifier.isElectron(fsPdg))
+            {
+                fsElectronEPlot.fill(fsE);               
+            }
+            else if (ParticleTypeClassifier.isPositron(fsPdg))
+            {
+                fsPositronEPlot.fill(fsE);
+            }
+            else if (ParticleTypeClassifier.isPhoton(fsPdg))
+            {
+                fsGammaEPlot.fill(fsE);
+            }            
+        }
                         
         // Sort MCParticles on energy.
         Collections.sort(fsParticles, new MCParticleEComparator());
@@ -279,8 +336,16 @@
             
             ids.add(hit.getCellID());
                                     
-            // incr E sum
+            // Add to ECal energy sum.
             esum += eraw;
+            
+            // X and Y identifier values.
+            IIdentifier id = hit.getIdentifier();
+            int ix = helper.unpack(id).getValue(helper.getFieldIndex("ix"));
+            int iy = helper.unpack(id).getValue(helper.getFieldIndex("iy"));            
+            crystalXPlot.fill(ix);
+            crystalYPlot.fill(iy);
+            crystalXYPlot.fill(ix, iy);
         }
         
         hitUnder100MeVPlot.fill(nhits100MeV);
@@ -413,7 +478,7 @@
         return primary;        
     }
     
-    private static List<MCParticle> getFinalStateParticles(List<MCParticle> mcparticles)
+    private static List<MCParticle> makeGenFSParticleList(List<MCParticle> mcparticles)
     {
         List<MCParticle> fsParticles = new ArrayList<MCParticle>();
         for (MCParticle mcparticle : mcparticles)

hps-java/src/main/java/org/lcsim/hps/recon/tracking/kalman
FullFitKalman.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- FullFitKalman.java	7 Jul 2011 20:57:38 -0000	1.2
+++ FullFitKalman.java	27 Jul 2011 23:33:44 -0000	1.3
@@ -1,41 +1,30 @@
 package org.lcsim.hps.recon.tracking.kalman;
 
-import org.lcsim.recon.tracking.trfbase.Propagator;
-import org.lcsim.recon.tracking.trfbase.PropDir;
-import org.lcsim.recon.tracking.trfbase.PropStat;
-import org.lcsim.recon.tracking.trfbase.Hit;
-import org.lcsim.recon.tracking.trfbase.ETrack;
-import org.lcsim.recon.tracking.trfbase.TrackError;
-import org.lcsim.recon.tracking.trfbase.Surface;
-import java.util.*;
-
-import org.lcsim.recon.tracking.trffit.HTrack;
-import org.lcsim.recon.tracking.trffit.FullFitter;
-
-
-import org.lcsim.recon.tracking.trfcyl.SurfCylinder;
-import org.lcsim.recon.tracking.trfcyl.ThinCylMs;
-
-import org.lcsim.recon.tracking.trfzp.SurfZPlane;
-import org.lcsim.recon.tracking.trfzp.ThinZPlaneMs;
+import java.util.Iterator;
+import java.util.List;
 
-//
-//import org.lcsim.contrib.RobKutschke.TRFSelfTest.util.SurfaceCode;
-//import org.lcsim.contrib.RobKutschke.TRFSelfTest.util.VTUtil;
 import org.lcsim.contrib.RobKutschke.TRFSelfTest.util.RKDebug;
-//import org.lcsim.contrib.RobKutschke.TRFSelfTest.util.RKZot;
-
-//
-//import org.lcsim.contrib.RobKutschke.ToyConfig.*;
-
 import org.lcsim.contrib.RobKutschke.TRFSelfTest.util.SurfaceCode;
 import org.lcsim.contrib.RobKutschke.TRFSelfTest.util.VTUtil;
+import org.lcsim.recon.tracking.trfbase.ETrack;
+import org.lcsim.recon.tracking.trfbase.Hit;
+import org.lcsim.recon.tracking.trfbase.PropDir;
+import org.lcsim.recon.tracking.trfbase.PropStat;
+import org.lcsim.recon.tracking.trfbase.Propagator;
+import org.lcsim.recon.tracking.trfbase.Surface;
+import org.lcsim.recon.tracking.trfbase.TrackError;
 import org.lcsim.recon.tracking.trfcyl.HitCylPhi;
 import org.lcsim.recon.tracking.trfcyl.HitCylPhiZ2D;
+import org.lcsim.recon.tracking.trfcyl.SurfCylinder;
+import org.lcsim.recon.tracking.trfcyl.ThinCylMs;
 import org.lcsim.recon.tracking.trffit.AddFitKalman;
+import org.lcsim.recon.tracking.trffit.FullFitter;
+import org.lcsim.recon.tracking.trffit.HTrack;
 import org.lcsim.recon.tracking.trfxyp.ThinXYPlaneMs;
 import org.lcsim.recon.tracking.trfzp.HitZPlane1;
 import org.lcsim.recon.tracking.trfzp.HitZPlane2;
+import org.lcsim.recon.tracking.trfzp.SurfZPlane;
+import org.lcsim.recon.tracking.trfzp.ThinZPlaneMs;
 import org.lcsim.util.aida.AIDA;
 
 /**
@@ -50,10 +39,10 @@
  * increased appropriately if the fitter is applied repeatedly to
  * a single track.
  *
- *@author $Author: mgraham $
- *@version $Id: FullFitKalman.java,v 1.2 2011/07/07 20:57:38 mgraham Exp $
+ *@author $Author: jeremy $
+ *@version $Id: FullFitKalman.java,v 1.3 2011/07/27 23:33:44 jeremy Exp $
  *
- * Date $Date: 2011/07/07 20:57:38 $
+ * Date $Date: 2011/07/27 23:33:44 $
  *
  */
 public class FullFitKalman extends FullFitter {

hps-java/src/main/java/org/lcsim/hps/recon/tracking/kalman
KalmanGeom.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- KalmanGeom.java	7 Jul 2011 20:57:38 -0000	1.2
+++ KalmanGeom.java	27 Jul 2011 23:33:44 -0000	1.3
@@ -8,8 +8,6 @@
 import org.lcsim.event.TrackerHit;
 import org.lcsim.geometry.Detector;
 
-
-//import org.lcsim.recon.tracking.trfbase.PropDir;
 import org.lcsim.recon.tracking.trfbase.Propagator;
 import org.lcsim.recon.tracking.trfbase.PropDispatch;
 import org.lcsim.recon.tracking.trfcyl.PropCyl;
@@ -20,14 +18,10 @@
 import org.lcsim.recon.tracking.trfcylplane.PropCylZ;
 import org.lcsim.recon.tracking.trfcylplane.PropZCyl;
 
-//import org.lcsim.contrib.RobKutschke.TRF.trfdca.PropDCAZ;
-//import org.lcsim.contrib.RobKutschke.TRF.trfdca.PropZDCA;
-
 import org.lcsim.recon.tracking.trfcyl.SurfCylinder;
 import org.lcsim.recon.tracking.trfdca.SurfDCA;
 import org.lcsim.recon.tracking.trfzp.SurfZPlane;
 
-//import org.lcsim.contrib.RobKutschke.ToyConfig.*;
 import org.lcsim.detector.ILogicalVolume;
 import org.lcsim.detector.IPhysicalVolume;
 import org.lcsim.detector.solids.ISolid;
@@ -48,10 +42,10 @@
  * to the callers in a convenient form.
  *
  *
- *@author $Author: mgraham $
- *@version $Id: KalmanGeom.java,v 1.2 2011/07/07 20:57:38 mgraham Exp $
+ *@author $Author: jeremy $
+ *@version $Id: KalmanGeom.java,v 1.3 2011/07/27 23:33:44 jeremy Exp $
  *
- * Date $Date: 2011/07/07 20:57:38 $
+ * Date $Date: 2011/07/27 23:33:44 $
  *
  */
 /* To make the Kalman filter work for any detector, the type of hit that is

hps-java/src/main/java/org/lcsim/hps/recon/tracking/kalman
TubeHelper.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TubeHelper.java	1 Jun 2011 17:08:05 -0000	1.1
+++ TubeHelper.java	27 Jul 2011 23:33:44 -0000	1.2
@@ -4,7 +4,6 @@
  */
 package org.lcsim.hps.recon.tracking.kalman;
 
-//import org.lcsim.contrib.ecfine.ShapeHelper;
 import org.lcsim.detector.solids.ISolid;
 import org.lcsim.detector.solids.Tube;
 import org.lcsim.event.Track;

hps-java/src/main/java/org/lcsim/hps/users/mgraham
KalmanGeom.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- KalmanGeom.java	7 Jul 2011 20:57:39 -0000	1.2
+++ KalmanGeom.java	27 Jul 2011 23:33:44 -0000	1.3
@@ -1,6 +1,5 @@
 package org.lcsim.hps.users.mgraham;
 
-//import org.lcsim.HPSKalmanFilter.*;
 import hep.physics.matrix.BasicMatrix;
 import hep.physics.matrix.SymmetricMatrix;
 import hep.physics.vec.Hep3Vector;
@@ -9,7 +8,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-//import org.lcsim.HPSKalmanFilter.ShapeDispatcher;
 
 import org.lcsim.contrib.RobKutschke.TRF.trfdca.PropDCAZ;
 import org.lcsim.detector.IDetectorElement;
@@ -20,8 +18,6 @@
 import org.lcsim.hps.recon.tracking.kalman.PropXYXY;
 import org.lcsim.hps.recon.tracking.kalman.ShapeDispatcher;
 
-
-//import org.lcsim.recon.tracking.trfbase.PropDir;
 import org.lcsim.recon.tracking.trfbase.Propagator;
 import org.lcsim.recon.tracking.trfbase.PropDispatch;
 import org.lcsim.recon.tracking.trfcyl.PropCyl;
@@ -32,14 +28,10 @@
 import org.lcsim.recon.tracking.trfcylplane.PropCylZ;
 import org.lcsim.recon.tracking.trfcylplane.PropZCyl;
 
-//import org.lcsim.contrib.RobKutschke.TRF.trfdca.PropDCAZ;
-//import org.lcsim.contrib.RobKutschke.TRF.trfdca.PropZDCA;
-
 import org.lcsim.recon.tracking.trfcyl.SurfCylinder;
 import org.lcsim.recon.tracking.trfdca.SurfDCA;
 import org.lcsim.recon.tracking.trfzp.SurfZPlane;
 
-//import org.lcsim.contrib.RobKutschke.ToyConfig.*;
 import org.lcsim.detector.ILogicalVolume;
 import org.lcsim.detector.IPhysicalVolume;
 import org.lcsim.detector.IReadout;
@@ -71,10 +63,10 @@
  * to the callers in a convenient form.
  *
  *
- *@author $Author: mgraham $
- *@version $Id: KalmanGeom.java,v 1.2 2011/07/07 20:57:39 mgraham Exp $
+ *@author $Author: jeremy $
+ *@version $Id: KalmanGeom.java,v 1.3 2011/07/27 23:33:44 jeremy Exp $
  *
- * Date $Date: 2011/07/07 20:57:39 $
+ * Date $Date: 2011/07/27 23:33:44 $
  *
  */
 /* To make the Kalman filter work for any detector, the type of hit that is
CVSspam 0.2.8