Print

Print


Commit in java/trunk/analysis/src/main/java/org/hps/analysis/dataquality on MAIN
SvtMonitoring.java+45-22747 -> 748
TrackingMonitoring.java+3-25747 -> 748
TrackingResiduals.java+7-11747 -> 748
+55-58
3 modified files
Changes to that these run on _recon files

java/trunk/analysis/src/main/java/org/hps/analysis/dataquality
SvtMonitoring.java 747 -> 748
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java	2014-06-27 02:18:08 UTC (rev 747)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SvtMonitoring.java	2014-06-27 02:18:29 UTC (rev 748)
@@ -15,10 +15,13 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.hps.recon.tracking.ShapeFitParameters;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+import org.lcsim.event.LCRelation;
 import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.TrackerHit;
 import org.lcsim.geometry.Detector;
 
 /**
@@ -81,9 +84,11 @@
         for (SiSensor sensor : sensors) {
             //IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
             IHistogram1D occupancyPlot = createSensorPlot(plotDir + "occupancy_", sensor, maxChannels, 0, maxChannels - 1);
-            IHistogram1D t0Plot = createSensorPlot(plotDir + "t0_", sensor, 50, -50., 50.);
-            IHistogram1D amplitudePlot = createSensorPlot(plotDir + "amplitude_", sensor, 50, 0, 2000);
-            IHistogram1D chi2Plot = createSensorPlot(plotDir + "chi2_", sensor, 50, 0, 25);
+            IHistogram1D t0Plot = createSensorPlot(plotDir + "t0Hit_", sensor, 50, -50., 50.);
+            IHistogram1D amplitudePlot = createSensorPlot(plotDir + "amplitude_", sensor, 50, 0, 2000.0);
+            IHistogram1D chi2Plot = createSensorPlot(plotDir + "chi2_", sensor, 50, 0, 25);           
+            IHistogram1D t0ClusterPlot = createSensorPlot(plotDir + "t0Cluster_", sensor, 50, -50., 50.);
+            IHistogram1D dedxClusterPlot = createSensorPlot(plotDir + "electrons_", sensor, 50, 0., 10.);
             occupancyPlot.reset();
         }
 
@@ -95,34 +100,50 @@
     public void process(EventHeader event) {
         /*  increment the strip occupancy arrays */
         if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+             System.out.println("Found a raw hit collection");
             List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
             for (RawTrackerHit hit : rawTrackerHits) {
                 int[] strips = occupancyMap.get(hit.getDetectorElement().getName());
                 strips[hit.getIdentifierFieldValue("strip")] += 1;
             }
             ++eventCountRaw;
-        } else
-            return; /* kick out of this if the even has none of these...*/
-        /*  fill the FittedTrackerHit related histograms */
-
-        if (event.hasCollection(FittedRawTrackerHit.class, fittedTrackerHitCollectionName)) {
-            List<FittedRawTrackerHit> fittedTrackerHits = event.get(FittedRawTrackerHit.class, fittedTrackerHitCollectionName);
-            for (FittedRawTrackerHit hit : fittedTrackerHits) {
-                String sensorName = hit.getRawTrackerHit().getDetectorElement().getName();
-                double t0 = hit.getT0();
-                double amp = hit.getAmp();
-                double chi2 = hit.getShapeFitParameters().getChiSq();
-                getSensorPlot(plotDir + "t0_", sensorName).fill(t0);
+        } 
+        /*  fill the FittedTrackerHit related histograms */       
+        if (event.hasCollection(LCRelation.class, fittedTrackerHitCollectionName)) {
+            List<LCRelation> fittedTrackerHits = event.get(LCRelation.class, fittedTrackerHitCollectionName);
+            for (LCRelation hit : fittedTrackerHits) {
+                RawTrackerHit rth=(RawTrackerHit)hit.getFrom();
+                GenericObject pars=(GenericObject)hit.getTo();               
+                String sensorName = getNiceSensorName((SiSensor)rth.getDetectorElement());
+                //this is a clever way to get the parameters we want from the generic object
+                ShapeFitParameters sfp=new ShapeFitParameters();
+                double t0 = sfp.getT0(pars);
+                double amp = sfp.getAmp(pars);
+                double chi2 = sfp.getChisq(pars);
+                getSensorPlot(plotDir + "t0Hit_", sensorName).fill(t0);
                 getSensorPlot(plotDir + "amplitude_", sensorName).fill(amp);
                 getSensorPlot(plotDir + "chi2_", sensorName).fill(chi2);
             }
             ++eventCountFit;
-        } else
-            return;
+        }
+        
+        if (event.hasItem(trackerHitCollectionName)) {
+            System.out.println("Found a Si cluster collection");
+            List<TrackerHit> siClusters =  (List<TrackerHit>)event.get(trackerHitCollectionName);
+            for (TrackerHit cluster : siClusters) {
+                String sensorName = getNiceSensorName((SiSensor)((RawTrackerHit) cluster.getRawHits().get(0)).getDetectorElement());
+                double t0 = cluster.getTime();
+                double dedx = cluster.getdEdx()*1e6;
+//                System.out.println("dedx = "+dedx);
+                getSensorPlot(plotDir + "t0Cluster_", sensorName).fill(t0);
+                getSensorPlot(plotDir + "electrons_", sensorName).fill(dedx);
+            }
+        }
     }
 
     private IHistogram1D getSensorPlot(String prefix, SiSensor sensor) {
-        return aida.histogram1D(prefix + sensor.getName());
+        String hname=prefix+getNiceSensorName(sensor);
+        return aida.histogram1D(hname);
     }
 
     private IHistogram1D getSensorPlot(String prefix, String sensorName) {
@@ -130,11 +151,13 @@
     }
 
     private IHistogram1D createSensorPlot(String prefix, SiSensor sensor, int nchan, double min, double max) {
-        IHistogram1D hist = aida.histogram1D(prefix + sensor.getName(), nchan, min, max);
+        String hname=prefix+getNiceSensorName(sensor);
+        IHistogram1D hist = aida.histogram1D(hname, nchan, min, max);
         hist.setTitle(sensor.getName().replaceAll(nameStrip, "")
                 .replace("module", "mod")
                 .replace("layer", "lyr")
                 .replace("sensor", "sens"));
+       
         return hist;
     }
 
@@ -214,11 +237,11 @@
         int irTop = 0;
         int irBot = 0;
         for (SiSensor sensor : sensors) {
-            IHistogram1D sensPlot = getSensorPlot(plotDir + "t0_", sensor);
+            IHistogram1D sensPlot = getSensorPlot(plotDir + "t0Hit_", sensor);
             IFitResult result = fitGaussian(sensPlot, fitter, "range=\"(-10.0,10.0)\"");
             for (int i = 0; i < 5; i++) {
                 double par = result.fittedParameters()[i];
-                System.out.println("t0_" + sensor.getName() + ":  " + result.fittedParameterNames()[i] + " = " + par);
+                System.out.println("t0Hit_" + sensor.getName() + ":  " + result.fittedParameterNames()[i] + " = " + par);
             }
 
             boolean isTop = SvtUtils.getInstance().isTopLayer(sensor);

java/trunk/analysis/src/main/java/org/hps/analysis/dataquality
TrackingMonitoring.java 747 -> 748
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java	2014-06-27 02:18:08 UTC (rev 747)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java	2014-06-27 02:18:29 UTC (rev 748)
@@ -11,6 +11,7 @@
 import org.lcsim.event.LCIOParameters;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackCross;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
@@ -58,9 +59,6 @@
         this.detector = detector;
         aida.tree().cd("/");
 
-        IProfile avgLayersTopPlot = aida.profile1D(plotDir+"Number of Stereo Hits per layer in Top Half", 6, 1, 13);
-        IProfile avgLayersBottomPlot = aida.profile1D(plotDir+"Number of Stereo Hits per layer in Bottom Half", 6, 1, 13);
-
         IHistogram1D trkChi2 = aida.histogram1D(plotDir+"Track Chi2", 25, 0, 25.0);
         IHistogram1D nTracks = aida.histogram1D(plotDir+"Tracks per Event", 6, 0, 6);
         IHistogram1D trkd0 = aida.histogram1D(plotDir+"d0 ", 25, -5.0, 5.0);
@@ -76,29 +74,9 @@
     public void process(EventHeader event) {
 
         aida.tree().cd("/");
-        if (!event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName))
-            return;
-        nEvents++;
-        List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName);
-        int[] layersTop = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        int[] layersBot = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        for (HelicalTrackHit hth : hthList) {
-            HelicalTrackCross htc = (HelicalTrackCross) hth;
-            double x = htc.getPosition()[0];
-            double y = htc.getPosition()[1];
-            SiSensor sensor = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement());
-            if (SvtUtils.getInstance().isTopLayer(sensor))
-                layersTop[htc.Layer() - 1]++;
-            else
-                layersBot[htc.Layer() - 1]++;
-        }
-        for (int i = 0; i < 12; i++) {
-            aida.profile1D(plotDir+"Number of Stereo Hits per layer in Top Half").fill(i + 1, layersTop[i]);
-            aida.profile1D(plotDir+"Number of Stereo Hits per layer in Bottom Half").fill(i + 1, layersBot[i]);
-        }
-
+                   
         if (!event.hasCollection(Track.class, trackCollectionName)) {
-//            System.out.println(trackCollectionName + " does not exist; skipping event");
+            System.out.println(trackCollectionName + " does not exist; skipping event");
             aida.histogram1D(plotDir+"Tracks per Event").fill(0);
             return;
         }

java/trunk/analysis/src/main/java/org/hps/analysis/dataquality
TrackingResiduals.java 747 -> 748
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java	2014-06-27 02:18:08 UTC (rev 747)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingResiduals.java	2014-06-27 02:18:29 UTC (rev 748)
@@ -5,6 +5,7 @@
 import org.hps.recon.tracking.TrackResidualsData;
 import org.hps.recon.tracking.TrackTimeData;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
 import org.lcsim.geometry.Detector;
 
 /**
@@ -34,7 +35,6 @@
         for (int i = 0; i < nmodules; i++) {
             IHistogram1D xresid = aida.histogram1D(plotDir + "Layer " + i + " x Residual", 50, -2.5, 2.5);
             IHistogram1D yresid = aida.histogram1D(plotDir + "Layer " + i + " y Residual", 50, -1, 1);
-
         }
 
         for (int i = 0; i < nmodules * 2; i++) {
@@ -44,16 +44,14 @@
 
     @Override
     public void process(EventHeader event) {
-
         aida.tree().cd("/");
-        if (!event.hasCollection(TrackTimeData.class, trackTimeDataCollectionName))
+        if (!event.hasCollection(GenericObject.class, trackTimeDataCollectionName))
             return;
-        if (!event.hasCollection(TrackResidualsData.class, trackResidualsCollectionName))
+        if (!event.hasCollection(GenericObject.class, trackResidualsCollectionName))
             return;
         nEvents++;
-
-        List<TrackResidualsData> trdList = event.get(TrackResidualsData.class, trackResidualsCollectionName);
-        for (TrackResidualsData trd : trdList) {
+        List<GenericObject> trdList = event.get(GenericObject.class, trackResidualsCollectionName);
+        for (GenericObject trd : trdList) {
             int nResid = trd.getNDouble();
             for (int i = 0; i < nResid; i++) {
                 aida.histogram1D(plotDir + "Layer " + i + " x Residual").fill(trd.getDoubleVal(i));//x is the double value in the generic object
@@ -61,13 +59,12 @@
             }
         }
 
-        List<TrackTimeData> ttdList = event.get(TrackTimeData.class, trackTimeDataCollectionName);
-        for (TrackTimeData ttd : ttdList) {
+        List<GenericObject> ttdList = event.get(GenericObject.class, trackTimeDataCollectionName);
+        for (GenericObject ttd : ttdList) {
             int nResid = ttd.getNDouble();
             for (int i = 0; i < nResid; i++)
                 aida.histogram1D(plotDir + "Half-Layer " + i + " t Residual").fill(ttd.getDoubleVal(i));//x is the double value in the generic object               
         }
-
     }
 
     @Override
@@ -87,7 +84,6 @@
     public void printDQMStrings() {
 //        for (Map.Entry<String, Double> entry : monitoredQuantityMap.entrySet())
 //            System.out.println("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
-
     }
 
 }
SVNspam 0.1