2 added + 13 modified, total 15 files
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -N LayerInfo.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LayerInfo.java 23 Aug 2005 00:03:36 -0000 1.1
@@ -0,0 +1,88 @@
+/*
+ * LayerInfo.java
+ *
+ * Created on August 22, 2005, 3:19 PM
+ *
+ */
+package org.lcsim.slic.diagnostics;
+
+class LayerInfo
+{
+ int layerNum;
+ double edep = 0;
+ int nhits = 0;
+ double percentTotE = 0;
+ double percentNHits = 0;
+ double averageE = 0;
+ double averageNHits = 0;
+
+ public LayerInfo(int layerNum)
+ {
+ this.layerNum = layerNum;
+ }
+
+ int getLayerNumber()
+ {
+ return layerNum;
+ }
+
+ void addEdep(double edep)
+ {
+ this.edep += edep;
+ }
+
+ double getEdep()
+ {
+ return edep;
+ }
+
+ void incrNHits()
+ {
+ nhits++;
+ }
+
+ int getNHits()
+ {
+ return nhits;
+ }
+
+ void setPercentTotalEnergy(double totalEnergy)
+ {
+ percentTotE = edep / totalEnergy;
+ }
+
+ double getPercentTotalEnergy()
+ {
+ return percentTotE;
+ }
+
+ void setPercentNHits(int totNHits)
+ {
+ percentNHits = ((double)nhits) / ((double)totNHits);
+ }
+
+ double getPercentNHits()
+ {
+ return percentNHits;
+ }
+
+ void setAverageEventEnergy(int nevents)
+ {
+ averageE = edep / (double)nevents;
+ }
+
+ double getAverageEventEnergy()
+ {
+ return averageE;
+ }
+
+ void setAverageEventNHits(int nevents)
+ {
+ averageNHits = nhits / (double)nevents;
+ }
+
+ double getAverageEventNHits()
+ {
+ return averageNHits;
+ }
+}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -N PlotsDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ PlotsDriver.java 23 Aug 2005 00:03:37 -0000 1.1
@@ -0,0 +1,53 @@
+/*
+ * PlotsDriver.java
+ *
+ * Created on August 22, 2005, 4:43 PM
+ *
+ */
+
+package org.lcsim.slic.diagnostics;
+
+import java.util.Map;
+import java.util.HashMap;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author jeremym
+ */
+class PlotsDriver extends Driver
+{
+ Map<String, PlotsBase> plots = new HashMap<String, PlotsBase>();
+
+ int nevents = 0;
+ String name;
+
+ public PlotsDriver(String name)
+ {
+ this.name=name;
+ }
+
+ protected void process(EventHeader event)
+ {
+ super.process(event);
+ ++nevents;
+ /* Sub-classes are responsible for setting-up and filling their plots. */
+ }
+
+ protected void endOfData()
+ {
+ for ( PlotsBase p : plots.values() )
+ {
+ p.endEvents(nevents);
+ }
+ }
+
+ protected void startOfData()
+ {
+ for ( PlotsBase p : plots.values() )
+ {
+ p.beginEvents();
+ }
+ }
+}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.10 -r1.11
--- CalorimeterHitPlots.java 20 Aug 2005 20:47:58 -0000 1.10
+++ CalorimeterHitPlots.java 23 Aug 2005 00:03:36 -0000 1.11
@@ -23,7 +23,7 @@
*
* @author jeremym
*/
-public class CalorimeterHitPlots extends PlotsBase
+class CalorimeterHitPlots extends PlotsBase
{
/* cal plots: basic MCP stats */
ICloud1D mcpCountPerHit;
@@ -33,8 +33,6 @@
ICloud2D hitRawVsCorrectedEnergy;
ICloud1D mcpMissing;
- List<SimCalorimeterHit> hits;
-
String collName;
public CalorimeterHitPlots(LCMetaData meta)
@@ -42,12 +40,7 @@
super(meta.getName());
definePlots();
}
-
- public void setSimCalorimeterHitList(List<SimCalorimeterHit> hits)
- {
- this.hits = hits;
- }
-
+
protected void definePlots()
{
super.definePlots();
@@ -60,13 +53,10 @@
mcpMissing = aida.cloud1D(makePlotName("Missing MCParticle Contribution"));
}
- public void fill()
+ protected void fill(EventHeader event)
{
- super.fill();
- if ( this.hits != null )
- {
- fill(this.hits);
- }
+ super.fill(event);
+ fill(event.get(SimCalorimeterHit.class, getName() ));
}
private void fill(List<SimCalorimeterHit> hits)
@@ -86,7 +76,7 @@
{
mcpMissingCount += 1;
}
-
+
/* segmentation plots */
if ( segmentation instanceof ProjectiveCylinder ||
segmentation instanceof NonprojectiveCylinder ||
@@ -138,9 +128,9 @@
mcpSingleContribPDG.fill(hit.getMCParticle(0).getPDGID());
}
}
-
+
/* missing MCP */
mcpMissing.fill(mcpMissingCount);
}
}
-}
+}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.4 -r1.5
--- CalorimeterHitPlotsDriver.java 18 Aug 2005 00:50:00 -0000 1.4
+++ CalorimeterHitPlotsDriver.java 23 Aug 2005 00:03:36 -0000 1.5
@@ -26,9 +26,7 @@
{
LCMetaData meta = event.getMetaData(simCalorimeterHits);
CalorimeterHitPlots calPlots = getCalorimeterHitPlots(meta);
- calPlots.setEventHeader(event);
- calPlots.setSimCalorimeterHitList(simCalorimeterHits);
- calPlots.fill();
+ calPlots.fill(event);
}
}
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.5 -r1.6
--- EventSummaryPlots.java 18 Aug 2005 00:50:00 -0000 1.5
+++ EventSummaryPlots.java 23 Aug 2005 00:03:36 -0000 1.6
@@ -23,8 +23,8 @@
*
* @author jeremym
*/
-public class EventSummaryPlots extends PlotsBase
-{
+class EventSummaryPlots extends PlotsBase
+{
ICloud1D eventTotalEnergy;
ICloud1D eventHits;
ICloud1D eventTrackerHits;
@@ -53,7 +53,7 @@
protected void definePlots()
{
super.definePlots();
-
+
eventTotalEnergy = aida.cloud1D(makePlotName("Energy"));
eventHits = aida.cloud1D(makePlotName("Hit Count"));
eventTrackerHits = aida.cloud1D(makePlotName("Tracker Hit Count"));
@@ -61,18 +61,11 @@
eventTrackerEnergy = aida.cloud1D(makePlotName("Tracker Total Energy"));
eventCalorimeterEnergy = aida.cloud1D(makePlotName("Calorimeter Total Energy"));
}
-
- public void fill()
+
+ protected void fill(EventHeader event)
{
- super.fill();
- if ( event != null )
- {
- fill(event);
- }
- }
-
- private void fill(EventHeader event)
- {
+ super.fill(event);
+
trackerTotalEnergy = calorimeterTotalEnergy = 0;
trackerHitCount = calorimeterHitCount = 0;
@@ -97,7 +90,7 @@
trackerTotalEnergy += hit.getdEdx();
}
}
-
+
/* event energy */
eventTotalEnergy.fill(trackerTotalEnergy + calorimeterTotalEnergy);
eventCalorimeterEnergy.fill(calorimeterTotalEnergy);
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.4 -r1.5
--- EventSummaryPlotsDriver.java 4 Aug 2005 01:39:50 -0000 1.4
+++ EventSummaryPlotsDriver.java 23 Aug 2005 00:03:36 -0000 1.5
@@ -30,7 +30,6 @@
protected void process(EventHeader event)
{
super.process(event);
- plots.setEventHeader(event);
- plots.fill();
+ plots.fill(event);
}
}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.4 -r1.5
--- GenericHit.java 1 Aug 2005 06:33:51 -0000 1.4
+++ GenericHit.java 23 Aug 2005 00:03:36 -0000 1.5
@@ -10,7 +10,7 @@
*
* @author jeremym
*/
-public class GenericHit
+class GenericHit
{
private double energy;
private double[] position;
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.10 -r1.11
--- GenericHitPlots.java 20 Aug 2005 05:24:18 -0000 1.10
+++ GenericHitPlots.java 23 Aug 2005 00:03:36 -0000 1.11
@@ -4,14 +4,13 @@
import java.util.Map;
import java.util.HashMap;
import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
import hep.aida.ICloud1D;
import hep.aida.ICloud2D;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.EventHeader.LCMetaData;
import org.lcsim.geometry.subdetector.SubdetectorIDDecoder;
-/**
- * @author jeremym
- */
class GenericHitPlots extends PlotsBase
{
/* plots */
@@ -26,39 +25,67 @@
ICloud1D hitAvgEnergy;
IHistogram1D layerEnergy;
ICloud1D layerHitCount;
-
+ ICloud1D hitMinEdep;
+ ICloud1D hitMaxEdep;
+ ICloud2D hitMinVsMaxEdep;
+ ICloud2D hitVsTotE;
+ IHistogram2D layerPercentTotE;
+ IHistogram2D layerPercentHits;
+// IHistogram1D layerAvgEventE;
+// IHistogram1D layerAvgEventHits;
+
int nlayers = 0;
double eventTotEnergy = 0;
-
+
List<GenericHit> hits;
+ Map<Integer, LayerInfo> layers = new HashMap<Integer, LayerInfo>();
/** Creates a new instance of SingleHitCollectionPlots */
public GenericHitPlots(LCMetaData meta)
{
super(meta.getName());
-
+
/* set n layers */
nlayers = ((SubdetectorIDDecoder)meta.getIDDecoder()).getSubdetector().getLayering().getLayerCount();
+ /* make layer info for each layer */
+ makeLayers();
+
/* define plots for this coll */
this.definePlots();
}
+ private void makeLayers()
+ {
+ for ( int i=0; i<nlayers; i++)
+ {
+ layers.put(i, new LayerInfo(i));
+ }
+ }
+
/* plots for generic hits */
protected void definePlots()
{
super.definePlots();
-
- energy = aida.cloud1D(makePlotName("Hit Energies"));
- hitAvgEnergy = aida.cloud1D(makePlotName("Hit Average Energy by Event"));
- time = aida.histogram1D(makePlotName("Hit Time"), 100, 0, 50);
- thetaPhi = aida.cloud2D(makePlotName("Hit Theta vs. Phi"));
- xy = aida.cloud2D(makePlotName("Hit X vs. Y"));
- rz = aida.cloud2D(makePlotName("Hit R vs. Z"));
- layer = aida.histogram1D(makePlotName("Hit Layer"), nlayers, 0, nlayers);
- layerEnergy = aida.histogram1D(makePlotName("Layer Energy"), nlayers, 0, nlayers);
- energyEvent = aida.cloud1D(makePlotName("Event Total Energy"));
- hitCount = aida.cloud1D(makePlotName("Event Total Hit Count"));
+
+ energy = aida.cloud1D(makePlotName("Hit Energies"));
+ hitAvgEnergy = aida.cloud1D(makePlotName("Hit Average Energy by Event"));
+ time = aida.histogram1D(makePlotName("Hit Time"), 100, 0, 50);
+ thetaPhi = aida.cloud2D(makePlotName("Hit Theta vs. Phi"));
+ xy = aida.cloud2D(makePlotName("Hit X vs. Y"));
+ rz = aida.cloud2D(makePlotName("Hit R vs. Z"));
+ layer = aida.histogram1D(makePlotName("Hit Layer"), nlayers, 0, nlayers);
+ layerEnergy = aida.histogram1D(makePlotName("Layer Energy"), nlayers, 0, nlayers);
+ energyEvent = aida.cloud1D(makePlotName("Event Total Energy"));
+ hitCount = aida.cloud1D(makePlotName("Event Total Hit Count"));
+ hitMinEdep = aida.cloud1D(makePlotName("Hit Min Edep"));
+ hitMaxEdep = aida.cloud1D(makePlotName("Hit Max Edep"));
+ hitMinVsMaxEdep = aida.cloud2D(makePlotName("Hit Min vs Max Edep"));
+ hitVsTotE = aida.cloud2D(makePlotName("Hit Count vs Total Energy"));
+ layerPercentTotE = aida.histogram2D(makePlotName("Percent of Energy Total by Layer"), nlayers, 0, nlayers, 100, 0, 1.0);
+ layerPercentHits = aida.histogram2D(makePlotName("Percent of Hit Count by Layer"), nlayers, 0, nlayers, 100, 0, 1.0);
+// layerAvgEventE = aida.histogram2D(makePlotName("Average Event Energy"), nlayers, 0, nlayers);
+// layerAvgEventNHits = aida.histogram2D(makePlotName("Average Event Hit Count"), nlayers, 0, nlayers);
}
public void setGenericHitList(List<GenericHit> hits)
@@ -66,28 +93,30 @@
this.hits = hits;
}
- public void fill()
+ protected void fill(EventHeader event)
{
- super.fill();
- if ( this.hits != null )
- {
- fill(this.hits);
- }
+ super.fill(event);
+
+ /* GenericHitPlotsDriver sets hit list for these plots. */
+ fill(this.hits);
}
private void fill(List<GenericHit> hits)
{
eventTotEnergy = 0;
int nhits = 0;
+ double minEdep = 9999.0;
+ double maxEdep = 0;
if ( hits.size() != 0 )
{
for ( GenericHit hit : hits )
{
double[] position = hit.getPosition();
+ double edep = hit.getEnergy();
/* hit energy */
- energy.fill(hit.getEnergy() );
+ energy.fill(edep);
/* hit time */
time.fill(hit.getTime() );
@@ -104,14 +133,35 @@
/* hit layer */
layer.fill(hit.getLayer());
- /* hit layer energy */
- layerEnergy.fill(hit.getLayer(), hit.getEnergy());
+ /* hit weighted layer energy */
+ layerEnergy.fill(hit.getLayer(), edep);
/* incr tot E */
- eventTotEnergy += hit.getEnergy();
+ eventTotEnergy += edep;
/* incr num hits */
++nhits;
+
+ /* check max edep */
+ if ( edep > maxEdep )
+ {
+ maxEdep = edep;
+ }
+
+ /* check min edep */
+ if ( edep < minEdep )
+ {
+ minEdep = edep;
+ }
+
+ /* fetch the LayerInfo for this hit */
+ LayerInfo layerInfo = layers.get(hit.getLayer());
+
+ /* add layer edep */
+ layerInfo.addEdep(edep);
+
+ /* add layer hit */
+ layerInfo.incrNHits();
}
/* event energy */
@@ -123,6 +173,30 @@
/* avg energy per hit */
double hitAvgE = eventTotEnergy / nhits;
hitAvgEnergy.fill(hitAvgE);
+
+ /* min edep */
+ hitMinEdep.fill(minEdep);
+
+ /* max edep */
+ hitMaxEdep.fill(maxEdep);
+
+ /* min vs max edep */
+ hitMinVsMaxEdep.fill(minEdep, maxEdep);
+
+ /* hit count vs total energy */
+ hitVsTotE.fill(nhits, eventTotEnergy);
+
+ /* set layer calcs and fill the plots */
+ for ( LayerInfo layerInfo : layers.values() )
+ {
+ /* set and fill percent total edep */
+ layerInfo.setPercentTotalEnergy(eventTotEnergy);
+ layerPercentTotE.fill(layerInfo.getLayerNumber(), layerInfo.getPercentTotalEnergy());
+
+ /* set and fill percent hit count */
+ layerInfo.setPercentNHits(nhits);
+ layerPercentHits.fill(layerInfo.getLayerNumber(), layerInfo.getPercentNHits());
+ }
}
}
-}
+}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.4 -r1.5
--- GenericHitPlotsDriver.java 4 Aug 2005 01:39:50 -0000 1.4
+++ GenericHitPlotsDriver.java 23 Aug 2005 00:03:36 -0000 1.5
@@ -53,7 +53,7 @@
GenericHitPlots plots = getGenericHitPlots(meta);
List<GenericHit> hits = makeTrackerHits(simTrackerHits, meta);
plots.setGenericHitList(hits);
- plots.fill();
+ plots.fill(event);
}
}
@@ -66,7 +66,7 @@
GenericHitPlots plots = getGenericHitPlots(meta);
List<GenericHit> hits = makeCalorimeterHits(simCalorimeterHits, meta);
plots.setGenericHitList(hits);
- plots.fill();
+ plots.fill(event);
}
}
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.3 -r1.4
--- HitUtil.java 1 Aug 2005 06:33:51 -0000 1.3
+++ HitUtil.java 23 Aug 2005 00:03:36 -0000 1.4
@@ -15,7 +15,7 @@
*
* @author jeremym
*/
-abstract public class HitUtil
+abstract class HitUtil
{
public static double getSphericalRadius(double[] position)
{
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.9 -r1.10
--- MCParticlePlots.java 21 Aug 2005 03:57:24 -0000 1.9
+++ MCParticlePlots.java 23 Aug 2005 00:03:36 -0000 1.10
@@ -20,12 +20,13 @@
import hep.physics.particle.properties.ParticlePropertyProvider;
import hep.physics.vec.Hep3Vector;
import org.lcsim.event.MCParticle;
+import org.lcsim.event.EventHeader;
/**
*
* @author jeremym
*/
-public class MCParticlePlots extends PlotsBase
+class MCParticlePlots extends PlotsBase
{
ParticlePropertyProvider mcpLkp = ParticlePropertyManager.getParticlePropertyProvider();
@@ -59,19 +60,12 @@
int nmcp = 0;
double totE = 0;
- List<MCParticle> mcps;
-
public MCParticlePlots()
{
super("MCParticles");
this.definePlots();
}
- public void setMCParticleList(List<MCParticle> mcps)
- {
- this.mcps = mcps;
- }
-
protected void definePlots()
{
super.definePlots();
@@ -92,13 +86,10 @@
mcpNoEndPoint = aida.cloud1D(makePlotName("No End Point"));
}
- public void fill()
+ protected void fill(EventHeader event)
{
- super.fill();
- if ( mcps != null )
- {
- fill(mcps);
- }
+ super.fill(event);
+ fill(event.get(MCParticle.class).get(0));
}
private void fill(List<MCParticle> particles)
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.4 -r1.5
--- MCParticlePlotsDriver.java 4 Aug 2005 01:39:50 -0000 1.4
+++ MCParticlePlotsDriver.java 23 Aug 2005 00:03:36 -0000 1.5
@@ -20,13 +20,6 @@
protected void process(EventHeader event)
{
super.process(event);
-
- /* process the MCP coll */
- List<List<MCParticle>> mcpCollections = event.get(MCParticle.class);
- for ( List<MCParticle> mcp : mcpCollections )
- {
- mcpPlots.setMCParticleList(mcp);
- mcpPlots.fill();
- }
+ mcpPlots.fill(event);
}
}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.4 -r1.5
--- PlotsBase.java 18 Aug 2005 00:50:01 -0000 1.4
+++ PlotsBase.java 23 Aug 2005 00:03:36 -0000 1.5
@@ -14,7 +14,7 @@
*
* @author jeremym
*/
-public class PlotsBase
+abstract class PlotsBase
{
protected static AIDA aida = org.lcsim.util.aida.AIDA.defaultInstance();
protected static ITree tree = aida.tree();
@@ -29,11 +29,6 @@
setupAidaDir();
}
- public void fill()
- {
- this.cd();
- }
-
public void setEventHeader(EventHeader eventHeader)
{
this.eventHeader = eventHeader;
@@ -49,7 +44,7 @@
return dir;
}
- protected void cd()
+ protected void cd()
{
tree.cd(this.getDir());
}
@@ -94,9 +89,25 @@
{
throw new RuntimeException("Could not setup AIDA dir: " + dir);
}
-
+
this.dir = "/" + dir;
tree.cd("/");
}
+
+ protected void beginEvents()
+ {
+ /* no op */
+ }
+
+ protected void endEvents(int nevents)
+ {
+ /* no op */
+ }
+
+ protected void fill(EventHeader event)
+ {
+ this.cd();
+ setEventHeader(event);
+ }
}
\ No newline at end of file
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.3 -r1.4
--- TrackerHitPlots.java 20 Aug 2005 20:47:59 -0000 1.3
+++ TrackerHitPlots.java 23 Aug 2005 00:03:36 -0000 1.4
@@ -8,6 +8,7 @@
import java.util.List;
import hep.aida.ICloud1D;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.EventHeader.LCMetaData;
import org.lcsim.event.SimTrackerHit;
@@ -15,12 +16,10 @@
*
* @author jeremym
*/
-public class TrackerHitPlots extends PlotsBase
+class TrackerHitPlots extends PlotsBase
{
- List<SimTrackerHit> hits;
-
String collName;
-
+
ICloud1D mcpMissing;
public TrackerHitPlots(LCMetaData meta)
@@ -28,12 +27,7 @@
super(meta.getName());
definePlots();
}
-
- public void setSimTrackerHitList(List<SimTrackerHit> hits)
- {
- this.hits = hits;
- }
-
+
protected void definePlots()
{
super.definePlots();
@@ -41,13 +35,10 @@
mcpMissing = aida.cloud1D(makePlotName("Missing MCParticle Contribution"));
}
- public void fill()
+ protected void fill(EventHeader event)
{
- super.fill();
- if ( this.hits != null )
- {
- fill(this.hits);
- }
+ super.fill(event);
+ fill(event.get(SimTrackerHit.class, getName()));
}
private void fill(List<SimTrackerHit> hits)
SlicDiagnostics/src/org/lcsim/slic/diagnostics
diff -u -r1.1 -r1.2
--- TrackerHitPlotsDriver.java 20 Aug 2005 20:38:47 -0000 1.1
+++ TrackerHitPlotsDriver.java 23 Aug 2005 00:03:36 -0000 1.2
@@ -26,9 +26,7 @@
{
LCMetaData meta = event.getMetaData(SimTrackerHits);
TrackerHitPlots trkPlots = getTrackerHitPlots(meta);
- trkPlots.setEventHeader(event);
- trkPlots.setSimTrackerHitList(SimTrackerHits);
- trkPlots.fill();
+ trkPlots.fill(event);
}
}
CVSspam 0.2.8