Author: [log in to unmask]
Date: Mon May 11 09:36:24 2015
New Revision: 2946
Log:
Additions to DQM analysis
Added:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java
- copied, changed from r2846, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SVTOpeningStudies.java
- copied, changed from r2846, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/FinalStateMonitoring.java Mon May 11 09:36:24 2015
@@ -59,7 +59,6 @@
double beamEnergy = 1.05; //GeV
double maxFactor = 1.5;
double feeMomentumCut = 0.8; //GeV
-
@Override
protected void detectorChanged(Detector detector) {
@@ -111,7 +110,7 @@
if (!matchTriggerType(triggerData))//only process singles0 triggers...
return;
}
- } else
+ } else if (debug)
System.out.println(this.getClass().getSimpleName() + ": No trigger bank found...running over all trigger types");
nRecoEvents++;
@@ -228,10 +227,13 @@
IFitter fitter = fitFactory.createFitter("chi2");
IHistogram1D beamE = aida.histogram1D(plotDir + triggerType + "/" + "Beam Electrons Pz (GeV)");
IFitResult result = fitBeamEnergyPeak(beamE, fitter, "range=\"(-10.0,10.0)\"");
- double[] pars = result.fittedParameters();
- for (int i = 0; i < 5; i++)
- System.out.println("Beam Energy Peak: " + result.fittedParameterNames()[i] + " = " + pars[i]);
-
+ if (result != null) {
+ double[] pars = result.fittedParameters();
+ for (int i = 0; i < 5; i++)
+ System.out.println("Beam Energy Peak: " + result.fittedParameterNames()[i] + " = " + pars[i]);
+ monitoredQuantityMap.put(fpQuantNames[7], (double) pars[1]);
+ monitoredQuantityMap.put(fpQuantNames[8], (double) pars[2]);
+ }
monitoredQuantityMap.put(fpQuantNames[0], (double) nTotEle / nRecoEvents);
monitoredQuantityMap.put(fpQuantNames[1], (double) nTotPos / nRecoEvents);
monitoredQuantityMap.put(fpQuantNames[2], (double) nTotPhotons / nRecoEvents);
@@ -239,8 +241,7 @@
monitoredQuantityMap.put(fpQuantNames[4], (double) sumdelX / nTotAss);
monitoredQuantityMap.put(fpQuantNames[5], (double) sumdelY / nTotAss);
monitoredQuantityMap.put(fpQuantNames[6], (double) sumEoverP / nTotAss);
- monitoredQuantityMap.put(fpQuantNames[7], (double) pars[1]);
- monitoredQuantityMap.put(fpQuantNames[8], (double) pars[2]);
+
IPlotter plotter = analysisFactory.createPlotterFactory().create("Beam Energy Electrons");
IPlotterStyle pstyle = plotter.style();
@@ -248,7 +249,7 @@
pstyle.dataStyle().fillStyle().setColor("green");
pstyle.dataStyle().lineStyle().setColor("black");
plotter.region(0).plot(beamE);
- plotter.region(0).plot(result.fittedFunction());
+// plotter.region(0).plot(result.fittedFunction());
if (outputPlots)
try {
plotter.writeToFile(outputPlotDir + "beamEnergyElectrons.png");
@@ -269,9 +270,14 @@
// return fitter.fit(h1d, "g+p1", init, range);
double[] init = {20.0, 2.2, 0.12, 10, 0.0};
// double[] init = {20.0, 2.2, 0.1};
- return fitter.fit(h1d, "g+p1", init);
- }
-
-
+ IFitResult ifr = null;
+ try {
+ ifr = fitter.fit(h1d, "g+p1", init);
+ } catch (RuntimeException ex) {
+ System.out.println(this.getClass().getSimpleName() + ": caught exception in fitGaussian");
+ }
+
+ return ifr;
+ }
}
Copied: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java (from r2846, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java)
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/PlotAndFitUtilities.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/PlotAndFitUtilities.java Mon May 11 09:36:24 2015
@@ -1,4 +1,4 @@
-package org.hps.monitoring.drivers.trackrecon;
+package org.hps.analysis.dataquality;
import hep.aida.IBaseHistogram;
import hep.aida.ICloud1D;
Copied: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SVTOpeningStudies.java (from r2846, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java)
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/SVTOpeningStudies.java Mon May 11 09:36:24 2015
@@ -1,36 +1,22 @@
-package org.hps.monitoring.drivers.trackrecon;
-
-import hep.aida.IAnalysisFactory;
-import hep.aida.IFitFactory;
-import hep.aida.IFitResult;
-import hep.aida.IFitter;
-import hep.aida.IFunction;
-import hep.aida.IFunctionFactory;
+package org.hps.analysis.dataquality;
+
import hep.aida.IHistogram1D;
-import hep.aida.IPlotter;
-import hep.aida.IPlotterFactory;
-import hep.aida.IPlotterStyle;
-import java.io.IOException;
+import hep.aida.IHistogram2D;
import java.util.ArrayList;
import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.fitAndPutParameters;
import org.lcsim.event.EventHeader;
import org.lcsim.event.Track;
import org.lcsim.event.TrackState;
import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.Detector;
-import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
-import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.performGaussianFit;
/**
*
* @author mgraham
*/
-public class SVTOpeningAlignment extends Driver {
+public class SVTOpeningStudies extends DataQualityMonitor {
static private AIDA aida = AIDA.defaultInstance();
private String helicalTrackHitCollectionName = "HelicalTrackHits";
@@ -38,8 +24,7 @@
private String l1to3CollectionName = "L1to3Tracks";
private String l4to6CollectionName = "L4to6Tracks";
private String outputPlots = null;
- IPlotter plotterTop;
- IPlotter plotterBot;
+
IHistogram1D nTracks46Top;
IHistogram1D nTracks13Top;
IHistogram1D nTracks46Bot;
@@ -55,23 +40,47 @@
IHistogram1D dellambdaBot;
IHistogram1D delz0Bot;
- IPlotterFactory plotterFactory;
- IFunctionFactory functionFactory;
- IFitFactory fitFactory;
- IFunction fd0Top;
- IFunction fphi0Top;
- IFunction fz0Top;
- IFunction flambdaTop;
- IFunction fwTop;
- IFunction fd0Bot;
- IFunction fphi0Bot;
- IFunction fz0Bot;
- IFunction flambdaBot;
- IFunction fwBot;
-
- IFitter jminChisq;
-
- public SVTOpeningAlignment() {
+ IHistogram1D nTracks46Pos;
+ IHistogram1D nTracks13Pos;
+ IHistogram1D nTracks46Ele;
+ IHistogram1D nTracks13Ele;
+ IHistogram1D deld0Pos;
+ IHistogram1D delphiPos;
+ IHistogram1D delwPos;
+ IHistogram1D dellambdaPos;
+ IHistogram1D delz0Pos;
+ IHistogram1D deld0Ele;
+ IHistogram1D delphiEle;
+ IHistogram1D delwEle;
+ IHistogram1D dellambdaEle;
+ IHistogram1D delz0Ele;
+
+ IHistogram2D d0Ele;
+ IHistogram2D phiEle;
+ IHistogram2D wEle;
+ IHistogram2D lambdaEle;
+ IHistogram2D z0Ele;
+
+ IHistogram2D d0Pos;
+ IHistogram2D phiPos;
+ IHistogram2D wPos;
+ IHistogram2D lambdaPos;
+ IHistogram2D z0Pos;
+
+ IHistogram1D nCombosTop;
+ IHistogram1D nCombosBot;
+
+ double rangeD0 = 50;
+ double rangePhi0 = 0.25;
+ double rangeOmega = 0.00025;
+ double rangeSlope = 0.01;
+ double rangeZ0 = 10;
+
+ double pcut = 0.8;
+
+ private final String plotDir = "SVTOpening/";
+
+ public SVTOpeningStudies() {
}
public void setOutputPlots(String output) {
@@ -94,93 +103,57 @@
protected void detectorChanged(Detector detector) {
aida.tree().cd("/");
- IAnalysisFactory fac = aida.analysisFactory();
- IPlotterFactory pfac = fac.createPlotterFactory("SVT Alignment");
- functionFactory = aida.analysisFactory().createFunctionFactory(null);
- fitFactory = aida.analysisFactory().createFitFactory();
- jminChisq = fitFactory.createFitter("chi2", "jminuit");
-
- plotterTop = pfac.create("Top Layers");
- IPlotterStyle style = plotterTop.style();
- style.dataStyle().fillStyle().setColor("yellow");
- style.dataStyle().errorBarStyle().setVisible(false);
- style.legendBoxStyle().setVisible(false);
- style.dataStyle().outlineStyle().setVisible(false);
- plotterTop.createRegions(3, 3);
- //plotterFrame.addPlotter(plotter);
-
- IPlotterStyle functionStyle = pfac.createPlotterStyle();
- functionStyle.dataStyle().lineStyle().setColor("red");
- functionStyle.dataStyle().markerStyle().setVisible(true);
- functionStyle.dataStyle().markerStyle().setColor("black");
- functionStyle.dataStyle().markerStyle().setShape("dot");
- functionStyle.dataStyle().markerStyle().setSize(2);
-
- nTracks13Top = aida.histogram1D("Number of L1-3 Tracks: Top ", 7, 0, 7.0);
- nTracks46Top = aida.histogram1D("Number of L4-6 Tracks: Top ", 7, 0, 7.0);
-
- deld0Top = aida.histogram1D("Delta d0: Top", 50, -20.0, 20.0);
- delphiTop = aida.histogram1D("Delta sin(phi): Top", 50, -0.1, 0.1);
- delwTop = aida.histogram1D("Delta curvature: Top", 50, -0.0002, 0.0002);
- dellambdaTop = aida.histogram1D("Delta slope: Top", 50, -0.02, 0.02);
- delz0Top = aida.histogram1D("Delta y0: Top", 50, -5, 5.0);
-
- fd0Top = functionFactory.createFunctionByName("Gaussian", "G");
- fphi0Top = functionFactory.createFunctionByName("Gaussian", "G");
- fwTop = functionFactory.createFunctionByName("Gaussian", "G");
- flambdaTop = functionFactory.createFunctionByName("Gaussian", "G");
- fz0Top = functionFactory.createFunctionByName("Gaussian", "G");
-
- plotterTop.region(0).plot(deld0Top);
- plotterTop.region(3).plot(delphiTop);
- plotterTop.region(6).plot(delwTop);
- plotterTop.region(1).plot(dellambdaTop);
- plotterTop.region(4).plot(delz0Top);
- plotterTop.region(2).plot(nTracks13Top);
- plotterTop.region(5).plot(nTracks46Top);
- plotterTop.region(0).plot(fd0Top, functionStyle);
- plotterTop.region(3).plot(fphi0Top, functionStyle);
- plotterTop.region(6).plot(fwTop, functionStyle);
- plotterTop.region(1).plot(flambdaTop, functionStyle);
- plotterTop.region(4).plot(fz0Top, functionStyle);
- plotterTop.show();
-
- plotterBot = pfac.create("Bottom Layers");
- IPlotterStyle styleBot = plotterBot.style();
- styleBot.legendBoxStyle().setVisible(false);
- styleBot.dataStyle().fillStyle().setColor("yellow");
- styleBot.dataStyle().errorBarStyle().setVisible(false);
- styleBot.dataStyle().outlineStyle().setVisible(false);
- plotterBot.createRegions(3, 3);
-
- nTracks13Bot = aida.histogram1D("Number of L1-3 Tracks: Bot ", 7, 0, 7.0);
- nTracks46Bot = aida.histogram1D("Number of L4-6 Tracks: Bot ", 7, 0, 7.0);
-
- deld0Bot = aida.histogram1D("Delta d0: Bot", 50, -20.0, 20.0);
- delphiBot = aida.histogram1D("Delta sin(phi): Bot", 50, -0.1, 0.1);
- delwBot = aida.histogram1D("Delta curvature: Bot", 50, -0.0002, 0.0002);
- dellambdaBot = aida.histogram1D("Delta slope: Bot", 50, -0.02, 0.02);
- delz0Bot = aida.histogram1D("Delta y0: Bot", 50, -5, 5.0);
-
- fd0Bot = functionFactory.createFunctionByName("Gaussian", "G");
- fphi0Bot = functionFactory.createFunctionByName("Gaussian", "G");
- fwBot = functionFactory.createFunctionByName("Gaussian", "G");
- flambdaBot = functionFactory.createFunctionByName("Gaussian", "G");
- fz0Bot = functionFactory.createFunctionByName("Gaussian", "G");
-
- plotterBot.region(0).plot(deld0Bot);
- plotterBot.region(3).plot(delphiBot);
- plotterBot.region(6).plot(delwBot);
- plotterBot.region(1).plot(dellambdaBot);
- plotterBot.region(4).plot(delz0Bot);
- plotterBot.region(2).plot(nTracks13Bot);
- plotterBot.region(5).plot(nTracks46Bot);
- plotterBot.region(0).plot(fd0Bot, functionStyle);
- plotterBot.region(3).plot(fphi0Bot, functionStyle);
- plotterBot.region(6).plot(fwBot, functionStyle);
- plotterBot.region(1).plot(flambdaBot, functionStyle);
- plotterBot.region(4).plot(fz0Bot, functionStyle);
- plotterBot.show();
+ nTracks13Top = aida.histogram1D(plotDir + "Number of L1-3 Tracks: Top ", 7, 0, 7.0);
+ nTracks46Top = aida.histogram1D(plotDir + "Number of L4-6 Tracks: Top ", 7, 0, 7.0);
+
+ deld0Top = aida.histogram1D(plotDir + "Delta d0: Top", 50, -rangeD0, rangeD0);
+ delphiTop = aida.histogram1D(plotDir + "Delta sin(phi): Top", 50, -rangePhi0, rangePhi0);
+ delwTop = aida.histogram1D(plotDir + "Delta curvature: Top", 50, -rangeOmega, rangeOmega);
+ dellambdaTop = aida.histogram1D(plotDir + "Delta slope: Top", 50, -rangeSlope, rangeSlope);
+ delz0Top = aida.histogram1D(plotDir + "Delta y0: Top", 50, -rangeZ0, rangeZ0);
+
+ nTracks13Bot = aida.histogram1D(plotDir + "Number of L1-3 Tracks: Bot ", 7, 0, 7.0);
+ nTracks46Bot = aida.histogram1D(plotDir + "Number of L4-6 Tracks: Bot ", 7, 0, 7.0);
+
+ deld0Bot = aida.histogram1D(plotDir + "Delta d0: Bot", 50, -rangeD0, rangeD0);
+ delphiBot = aida.histogram1D(plotDir + "Delta sin(phi): Bot", 50, -rangePhi0, rangePhi0);
+ delwBot = aida.histogram1D(plotDir + "Delta curvature: Bot", 50, -rangeOmega, rangeOmega);
+ dellambdaBot = aida.histogram1D(plotDir + "Delta slope: Bot", 50, -rangeSlope, rangeSlope);
+ delz0Bot = aida.histogram1D(plotDir + "Delta y0: Bot", 50, -rangeZ0, rangeZ0);
+
+ nTracks13Ele = aida.histogram1D(plotDir + "Number of L1-3 Tracks: Ele ", 7, 0, 7.0);
+ nTracks46Ele = aida.histogram1D(plotDir + "Number of L4-6 Tracks: Ele ", 7, 0, 7.0);
+
+ deld0Ele = aida.histogram1D(plotDir + "Delta d0: Ele", 50, -rangeD0, rangeD0);
+ delphiEle = aida.histogram1D(plotDir + "Delta sin(phi): Ele", 50, -rangePhi0, rangePhi0);
+ delwEle = aida.histogram1D(plotDir + "Delta curvature: Ele", 50, -rangeOmega, rangeOmega);
+ dellambdaEle = aida.histogram1D(plotDir + "Delta slope: Ele", 50, -rangeSlope, rangeSlope);
+ delz0Ele = aida.histogram1D(plotDir + "Delta y0: Ele", 50, -rangeZ0, rangeZ0);
+
+ nTracks13Pos = aida.histogram1D(plotDir + "Number of L1-3 Tracks: Pos ", 7, 0, 7.0);
+ nTracks46Pos = aida.histogram1D(plotDir + "Number of L4-6 Tracks: Pos ", 7, 0, 7.0);
+
+ deld0Pos = aida.histogram1D(plotDir + "Delta d0: Pos", 50, -rangeD0, rangeD0);
+ delphiPos = aida.histogram1D(plotDir + "Delta sin(phi): Pos", 50, -rangePhi0, rangePhi0);
+ delwPos = aida.histogram1D(plotDir + "Delta curvature: Pos", 50, -rangeOmega, rangeOmega);
+ dellambdaPos = aida.histogram1D(plotDir + "Delta slope: Pos", 50, -rangeSlope, rangeSlope);
+ delz0Pos = aida.histogram1D(plotDir + "Delta y0: Pos", 50, -rangeZ0, rangeZ0);
+
+ d0Ele = aida.histogram2D(plotDir + "electrons d0: L46vs L13", 50, -rangeD0, rangeD0, 50, -rangeD0, rangeD0);
+ phiEle = aida.histogram2D(plotDir + "electrons sin(phi): L46vs L13", 50, -rangePhi0, rangePhi0, 50, -rangePhi0, rangePhi0);
+ wEle = aida.histogram2D(plotDir + "electrons curvature: L46vs L13", 50, -rangeOmega, rangeOmega, 50, -rangeOmega, rangeOmega);
+ lambdaEle = aida.histogram2D(plotDir + "electrons slope: L46vs L13", 50, -10 * rangeSlope, 10 * rangeSlope, 50, -10 * rangeSlope, 10 * rangeSlope);
+ z0Ele = aida.histogram2D(plotDir + "electrons y0: L46vs L13", 50, -rangeZ0, rangeZ0, 50, -rangeZ0, rangeZ0);
+
+ d0Pos = aida.histogram2D(plotDir + "positrons d0: L46vs L13", 50, -rangeD0, rangeD0, 50, -rangeD0, rangeD0);
+ phiPos = aida.histogram2D(plotDir + "positrons sin(phi): L46vs L13", 50, -rangePhi0, rangePhi0, 50, -rangePhi0, rangePhi0);
+ wPos = aida.histogram2D(plotDir + "positrons curvature: L46vs L13", 50, -rangeOmega, rangeOmega, 50, -rangeOmega, rangeOmega);
+ lambdaPos = aida.histogram2D(plotDir + "positrons slope: L46vs L13", 50, -10 * rangeSlope, 10 * rangeSlope, 50, -10 * rangeSlope, 10 * rangeSlope);
+ z0Pos = aida.histogram2D(plotDir + "positrons y0: L46vs L13", 50, -rangeZ0, rangeZ0, 50, -rangeZ0, rangeZ0);
+
+ nCombosTop = aida.histogram1D(plotDir + "Number of Combinations: Top", 7, 0, 7.0);
+ nCombosBot = aida.histogram1D(plotDir + "Number of Combinations: Bot", 7, 0, 7.0);
+
}
@Override
@@ -203,59 +176,106 @@
List<Track> l4to6tracksTop = splitTrackList(l4to6tracks, true);
List<Track> l4to6tracksBot = splitTrackList(l4to6tracks, false);
+ List<Track> l1to3tracksEle = splitByCharge(l1to3tracks, -1);
+ List<Track> l1to3tracksPos = splitByCharge(l1to3tracks, 1);
+ List<Track> l4to6tracksEle = splitByCharge(l4to6tracks, -1);
+ List<Track> l4to6tracksPos = splitByCharge(l4to6tracks, 1);
+
nTracks13Top.fill(l1to3tracksTop.size());
nTracks13Bot.fill(l1to3tracksBot.size());
nTracks46Top.fill(l4to6tracksTop.size());
nTracks46Bot.fill(l4to6tracksBot.size());
+ nTracks13Ele.fill(l1to3tracksEle.size());
+ nTracks13Pos.fill(l1to3tracksPos.size());
+ nTracks46Ele.fill(l4to6tracksEle.size());
+ nTracks46Pos.fill(l4to6tracksPos.size());
+
+ int ncombotop = 0;
+ int ncombobot = 0;
+
for (Track trk46 : l4to6tracksTop) {
TrackState ts46 = trk46.getTrackStates().get(0);
- for (Track trk13 : l1to3tracksTop) {
- TrackState ts13 = trk13.getTrackStates().get(0);
- deld0Top.fill(ts46.getD0() - ts13.getD0());
- delphiTop.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi()));
- delwTop.fill(ts46.getOmega() - ts13.getOmega());
- delz0Top.fill(ts46.getZ0() - ts13.getZ0());
- dellambdaTop.fill(ts46.getTanLambda() - ts13.getTanLambda());
- }
- }
- fitAndPutParameters(deld0Top, fd0Top);
- fitAndPutParameters(delphiTop, fphi0Top);
- fitAndPutParameters(delwTop, fwTop);
- fitAndPutParameters(delz0Top, fz0Top);
- fitAndPutParameters(dellambdaTop, flambdaTop);
+ for (Track trk13 : l1to3tracksTop)
+ if (trk46.getMomentum()[0] > pcut && trk13.getMomentum()[0] > pcut) {
+ TrackState ts13 = trk13.getTrackStates().get(0);
+ deld0Top.fill(ts46.getD0() - ts13.getD0());
+ delphiTop.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi()));
+ delwTop.fill(ts46.getOmega() - ts13.getOmega());
+ delz0Top.fill(ts46.getZ0() - ts13.getZ0());
+ dellambdaTop.fill(ts46.getTanLambda() - ts13.getTanLambda());
+ ncombotop++;
+ }
+ }
for (Track trk46 : l4to6tracksBot) {
TrackState ts46 = trk46.getTrackStates().get(0);
- for (Track trk13 : l1to3tracksBot) {
+ for (Track trk13 : l1to3tracksBot)
+ if (trk46.getMomentum()[0] > pcut && trk13.getMomentum()[0] > pcut) {
+ TrackState ts13 = trk13.getTrackStates().get(0);
+ deld0Bot.fill(ts46.getD0() - ts13.getD0());
+ delphiBot.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi()));
+ delwBot.fill(ts46.getOmega() - ts13.getOmega());
+ delz0Bot.fill(ts46.getZ0() - ts13.getZ0());
+ dellambdaBot.fill(ts46.getTanLambda() - ts13.getTanLambda());
+ ncombobot++;
+ }
+ }
+
+ nCombosTop.fill(ncombotop);
+ nCombosBot.fill(ncombobot);
+
+ for (Track trk46 : l4to6tracksEle) {
+ TrackState ts46 = trk46.getTrackStates().get(0);
+ for (Track trk13 : l1to3tracksEle) {
TrackState ts13 = trk13.getTrackStates().get(0);
- deld0Bot.fill(ts46.getD0() - ts13.getD0());
- delphiBot.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi()));
- delwBot.fill(ts46.getOmega() - ts13.getOmega());
- delz0Bot.fill(ts46.getZ0() - ts13.getZ0());
- dellambdaBot.fill(ts46.getTanLambda() - ts13.getTanLambda());
+ deld0Ele.fill(ts46.getD0() - ts13.getD0());
+ delphiEle.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi()));
+ delwEle.fill(ts46.getOmega() - ts13.getOmega());
+ delz0Ele.fill(ts46.getZ0() - ts13.getZ0());
+ dellambdaEle.fill(ts46.getTanLambda() - ts13.getTanLambda());
+ d0Ele.fill(ts46.getD0(), ts13.getD0());
+ phiEle.fill(Math.sin(ts46.getPhi()), Math.sin(ts13.getPhi()));
+ wEle.fill(ts46.getOmega(), ts13.getOmega());
+ lambdaEle.fill(ts46.getTanLambda(), ts13.getTanLambda());
+ z0Ele.fill(ts46.getZ0(), ts13.getZ0());
+
}
}
-// IFunction currentFitFunction = performGaussianFit(deld0Bot, fd0Bot, jminChisq).fittedFunction();;
-// fd0Bot.setParameters(currentFitFunction.parameters());
- fitAndPutParameters(deld0Bot, fd0Bot);
- fitAndPutParameters(delphiBot, fphi0Bot);
- fitAndPutParameters(delwBot, fwBot);
- fitAndPutParameters(delz0Bot, fz0Bot);
- fitAndPutParameters(dellambdaBot, flambdaBot);
-
+ for (Track trk46 : l4to6tracksPos) {
+ TrackState ts46 = trk46.getTrackStates().get(0);
+ for (Track trk13 : l1to3tracksPos) {
+ TrackState ts13 = trk13.getTrackStates().get(0);
+ deld0Pos.fill(ts46.getD0() - ts13.getD0());
+ delphiPos.fill(Math.sin(ts46.getPhi()) - Math.sin(ts13.getPhi()));
+ delwPos.fill(ts46.getOmega() - ts13.getOmega());
+ delz0Pos.fill(ts46.getZ0() - ts13.getZ0());
+ dellambdaPos.fill(ts46.getTanLambda() - ts13.getTanLambda());
+ d0Pos.fill(ts46.getD0(), ts13.getD0());
+ phiPos.fill(Math.sin(ts46.getPhi()), Math.sin(ts13.getPhi()));
+ wPos.fill(ts46.getOmega(), ts13.getOmega());
+ lambdaPos.fill(ts46.getTanLambda(), ts13.getTanLambda());
+ z0Pos.fill(ts46.getZ0(), ts13.getZ0());
+ }
+ }
+
+ /*
+ l1to3tracksPos = null;
+ l1to3tracksEle = null;
+ l1to3tracksTop = null;
+ l1to3tracksBot = null;
+
+ l4to6tracksPos = null;
+ l4to6tracksEle = null;
+ l4to6tracksTop = null;
+ l4to6tracksBot = null;
+ */
}
@Override
public void endOfData() {
- if (outputPlots != null)
- try {
- plotterTop.writeToFile(outputPlots + "-deltasTop.gif");
- plotterBot.writeToFile(outputPlots + "-deltasBottom.gif");
- } catch (IOException ex) {
- Logger.getLogger(TrackingReconPlots.class.getName()).log(Level.SEVERE, null, ex);
- }
+
}
private List<Track> splitTrackList(List<Track> trks, boolean doTop) {
@@ -277,4 +297,26 @@
}
return tracksHalf;
}
+
+ private List<Track> splitByCharge(List<Track> trks, int charge) {
+ List<Track> tracksHalf = new ArrayList<>();
+ boolean isTop = false;
+ boolean isBot = false;
+ for (Track trk : trks) {
+ isTop = false;
+ isBot = false;
+ if (!(trk.getCharge() == charge)) { //XNOR but remember that the track charge is opposite because of B-field definition...
+ for (TrackerHit hit : trk.getTrackerHits())
+ if (hit.getPosition()[2] > 0)//remember, non-bend in tracking frame is z-direction
+ isTop = true;
+ else
+ isBot = true;
+ if (isTop == true && isBot != true) //if all hits are in top
+ tracksHalf.add(trk);
+ if (isBot == true && isTop != true) //if all hits are in bottom
+ tracksHalf.add(trk);
+ }
+ }
+ return tracksHalf;
+ }
}
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java Mon May 11 09:36:24 2015
@@ -5,11 +5,13 @@
import hep.aida.IFitter;
import hep.aida.IHistogram1D;
import hep.aida.IHistogram2D;
+import hep.physics.vec.Hep3Vector;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.hps.recon.ecal.triggerbank.AbstractIntData;
import org.hps.recon.ecal.triggerbank.TIData;
+import org.hps.recon.tracking.TrackUtils;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;
@@ -65,6 +67,9 @@
IHistogram2D[] xvsyTop = new IHistogram2D[nmodules];
IHistogram2D[] xvsyBot = new IHistogram2D[nmodules];
+ IHistogram1D trkYAtECALTop;
+ IHistogram1D trkYAtECALBot;
+
IHistogram1D trkChi2Pos;
IHistogram1D trkChi2Ele;
IHistogram1D trkChi2Top;
@@ -118,18 +123,20 @@
this.detector = detector;
aida.tree().cd("/");
- IHistogram1D trkChi2 = aida.histogram1D(plotDir + triggerType + "/" + "Track Chi2", 25, 0, 25.0);
- IHistogram1D nTracks = aida.histogram1D(plotDir + triggerType + "/" + "Tracks per Event", 6, 0, 6);
- IHistogram1D trkd0 = aida.histogram1D(plotDir + triggerType + "/" + "d0 ", 25, -5.0, 5.0);
- IHistogram1D trkphi = aida.histogram1D(plotDir + triggerType + "/" + "sinphi ", 25, -0.2, 0.2);
- IHistogram1D trkomega = aida.histogram1D(plotDir + triggerType + "/" + "omega ", 25, -0.0005, 0.0005);
- IHistogram1D trklam = aida.histogram1D(plotDir + triggerType + "/" + "tan(lambda) ", 25, -0.1, 0.1);
- IHistogram1D trkz0 = aida.histogram1D(plotDir + triggerType + "/" + "z0 ", 25, -1.0, 1.0);
- IHistogram1D nHits = aida.histogram1D(plotDir + triggerType + "/" + "Hits per Track", 2, 5, 7);
- IHistogram1D trackMeanTime = aida.histogram1D(plotDir + triggerType + "/" + "Mean time of hits on track", 100, -10., 100.);
- IHistogram1D trackRMSTime = aida.histogram1D(plotDir + triggerType + "/" + "RMS time of hits on track", 100, 0., 15.);
- IHistogram2D trackChi2RMSTime = aida.histogram2D(plotDir + triggerType + "/" + "Track chi2 vs. RMS time of hits", 100, 0., 15., 25, 0, 25.0);
- IHistogram1D seedRMSTime = aida.histogram1D(plotDir + triggerType + "/" + "RMS time of hits on seed layers", 100, 0., 15.);
+ IHistogram1D trkChi2 = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Track Chi2", 25, 0, 25.0);
+ IHistogram1D nTracks = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Tracks per Event", 6, 0, 6);
+ IHistogram1D trkd0 = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "d0 ", 25, -5.0, 5.0);
+ IHistogram1D trkphi = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "sinphi ", 25, -0.2, 0.2);
+ IHistogram1D trkomega = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "omega ", 25, -0.0005, 0.0005);
+ IHistogram1D trklam = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "tan(lambda) ", 25, -0.1, 0.1);
+ IHistogram1D trkz0 = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "z0 ", 25, -1.0, 1.0);
+ IHistogram1D nHits = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Hits per Track", 4, 3, 7);
+ IHistogram1D trackMeanTime = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Mean time of hits on track", 100, -10., 100.);
+ IHistogram1D trackRMSTime = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "RMS time of hits on track", 100, 0., 15.);
+ IHistogram2D trackChi2RMSTime = aida.histogram2D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Track chi2 vs. RMS time of hits", 100, 0., 15., 25, 0, 25.0);
+ IHistogram1D seedRMSTime = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "RMS time of hits on seed layers", 100, 0., 15.);
+ trkYAtECALTop = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Track Y at ECAL: Top", 100, 0, 100);
+ trkYAtECALBot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Track Y at ECAL: Bot", 100, 0, 100);
for (int i = 1; i <= nmodules; i++) {
xvsyTop[i - 1] = aida.histogram2D(hthplotDir + "Module " + i + " Top", 50, -100, 100, 50, 0, 40);
xvsyBot[i - 1] = aida.histogram2D(hthplotDir + "Module " + i + " Bottom", 50, -100, 100, 50, 0, 40);
@@ -137,41 +144,41 @@
hthBot[i - 1] = aida.histogram1D(hthplotDir + "Module " + i + "Bot: Track Hits", 25, 0, 25);
}
- trkChi2Pos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "Track Chi2", 25, 0, 25.0);
- nTracksPos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "Tracks per Event", 6, 0, 6);
- trkd0Pos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "d0 ", 25, -5.0, 5.0);
- trkphiPos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "sinphi ", 25, -0.2, 0.2);
- trkomegaPos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "omega ", 25, -0.0005, 0.0005);
- trklamPos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "tan(lambda) ", 25, -0.1, 0.1);
- trkz0Pos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "z0 ", 25, -1.0, 1.0);
- nHitsPos = aida.histogram1D(plotDir + triggerType + "/" + positronDir + "Hits per Track", 2, 5, 7);
-
- trkChi2Ele = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "Track Chi2", 25, 0, 25.0);
- nTracksEle = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "Tracks per Event", 6, 0, 6);
- trkd0Ele = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "d0 ", 25, -5.0, 5.0);
- trkphiEle = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "sinphi ", 25, -0.2, 0.2);
- trkomegaEle = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "omega ", 25, -0.0005, 0.0005);
- trklamEle = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "tan(lambda) ", 25, -0.1, 0.1);
- trkz0Ele = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "z0 ", 25, -1.0, 1.0);
- nHitsEle = aida.histogram1D(plotDir + triggerType + "/" + electronDir + "Hits per Track", 2, 5, 7);
-
- trkChi2Top = aida.histogram1D(plotDir + triggerType + "/" + topDir + "Track Chi2", 25, 0, 25.0);
- nTracksTop = aida.histogram1D(plotDir + triggerType + "/" + topDir + "Tracks per Event", 6, 0, 6);
- trkd0Top = aida.histogram1D(plotDir + triggerType + "/" + topDir + "d0 ", 25, -5.0, 5.0);
- trkphiTop = aida.histogram1D(plotDir + triggerType + "/" + topDir + "sinphi ", 25, -0.2, 0.2);
- trkomegaTop = aida.histogram1D(plotDir + triggerType + "/" + topDir + "omega ", 25, -0.0005, 0.0005);
- trklamTop = aida.histogram1D(plotDir + triggerType + "/" + topDir + "tan(lambda) ", 25, -0.1, 0.1);
- trkz0Top = aida.histogram1D(plotDir + triggerType + "/" + topDir + "z0 ", 25, -1.0, 1.0);
- nHitsTop = aida.histogram1D(plotDir + triggerType + "/" + topDir + "Hits per Track", 2, 5, 7);
-
- trkChi2Bot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "Track Chi2", 25, 0, 25.0);
- nTracksBot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "Tracks per Event", 6, 0, 6);
- trkd0Bot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "d0 ", 25, -5.0, 5.0);
- trkphiBot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "sinphi ", 25, -0.2, 0.2);
- trkomegaBot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "omega ", 25, -0.0005, 0.0005);
- trklamBot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "tan(lambda) ", 25, -0.1, 0.1);
- trkz0Bot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "z0 ", 25, -1.0, 1.0);
- nHitsBot = aida.histogram1D(plotDir + triggerType + "/" + botDir + "Hits per Track", 2, 5, 7);
+ trkChi2Pos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "Track Chi2", 25, 0, 25.0);
+ nTracksPos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "Tracks per Event", 6, 0, 6);
+ trkd0Pos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "d0 ", 25, -5.0, 5.0);
+ trkphiPos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "sinphi ", 25, -0.2, 0.2);
+ trkomegaPos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "omega ", 25, -0.0005, 0.0005);
+ trklamPos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "tan(lambda) ", 25, -0.1, 0.1);
+ trkz0Pos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "z0 ", 25, -1.0, 1.0);
+ nHitsPos = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + positronDir + "Hits per Track", 4, 3, 7);
+
+ trkChi2Ele = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "Track Chi2", 25, 0, 25.0);
+ nTracksEle = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "Tracks per Event", 6, 0, 6);
+ trkd0Ele = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "d0 ", 25, -5.0, 5.0);
+ trkphiEle = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "sinphi ", 25, -0.2, 0.2);
+ trkomegaEle = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "omega ", 25, -0.0005, 0.0005);
+ trklamEle = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "tan(lambda) ", 25, -0.1, 0.1);
+ trkz0Ele = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "z0 ", 25, -1.0, 1.0);
+ nHitsEle = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + electronDir + "Hits per Track", 4, 3, 7);
+
+ trkChi2Top = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "Track Chi2", 25, 0, 25.0);
+ nTracksTop = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "Tracks per Event", 6, 0, 6);
+ trkd0Top = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "d0 ", 25, -5.0, 5.0);
+ trkphiTop = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "sinphi ", 25, -0.2, 0.2);
+ trkomegaTop = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "omega ", 25, -0.0005, 0.0005);
+ trklamTop = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "tan(lambda) ", 50, 0.0, 0.1);
+ trkz0Top = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "z0 ", 25, -1.0, 1.0);
+ nHitsTop = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + topDir + "Hits per Track", 4, 3, 7);
+
+ trkChi2Bot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "Track Chi2", 25, 0, 25.0);
+ nTracksBot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "Tracks per Event", 6, 0, 6);
+ trkd0Bot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "d0 ", 25, -5.0, 5.0);
+ trkphiBot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "sinphi ", 25, -0.2, 0.2);
+ trkomegaBot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "omega ", 25, -0.0005, 0.0005);
+ trklamBot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "tan(lambda) ", 50, 0, 0.1);
+ trkz0Bot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "z0 ", 25, -1.0, 1.0);
+ nHitsBot = aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + botDir + "Hits per Track", 4, 3, 7);
// Make a list of SiSensors in the SVT.
sensors = this.detector.getSubdetector(trackerName).getDetectorElement().findDescendants(HpsSiSensor.class);
@@ -190,99 +197,97 @@
aida.tree().cd("/");
- if (!event.hasCollection(LCRelation.class, helicalTrackHitRelationsCollectionName) || !event.hasCollection(LCRelation.class, rotatedHelicalTrackHitRelationsCollectionName)) {
+ if (!event.hasCollection(LCRelation.class, helicalTrackHitRelationsCollectionName) || !event.hasCollection(LCRelation.class, rotatedHelicalTrackHitRelationsCollectionName))
return;
- }
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) {
+ 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) {
+ for (LCRelation relation : rotaterelations)
+ if (relation != null && relation.getFrom() != null && relation.getTo() != null)
hittorotated.add(relation.getFrom(), relation.getTo());
- }
- }
-
- if (!event.hasCollection(TrackerHit.class, helicalTrackHitCollectionName)) {
+
+ if (!event.hasCollection(TrackerHit.class, helicalTrackHitCollectionName))
return;
- }
if (event.hasCollection(GenericObject.class, "TriggerBank")) {
List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank");
- for (GenericObject data : triggerList) {
+ for (GenericObject data : triggerList)
if (AbstractIntData.getTag(data) == TIData.BANK_TAG) {
TIData triggerData = new TIData(data);
if (!matchTriggerType(triggerData))//only process singles0 triggers...
- {
+
return;
- }
}
- }
- } else {
+ } else if (debug)
System.out.println(this.getClass().getSimpleName() + ": No trigger bank found...running over all trigger types");
- }
-
- int[] topHits = {0, 0, 0, 0, 0, 0};
- int[] botHits = {0, 0, 0, 0, 0, 0};
- List<TrackerHit> hth = event.get(TrackerHit.class, helicalTrackHitCollectionName);
- for (TrackerHit hit : hth) {
- int module = -99;
- int layer = ((RawTrackerHit) hit.getRawHits().get(0)).getLayerNumber();
- if (layer < 2) {
- module = 1;
- } else if (layer < 4) {
- module = 2;
- } else if (layer < 6) {
- module = 3;
- } else if (layer < 8) {
- module = 4;
- } else if (layer < 10) {
- module = 5;
- } else {
- module = 6;
- }
-
- if (hit.getPosition()[1] > 0) {
- topHits[module - 1]++;
- xvsyTop[module - 1].fill(hit.getPosition()[0], hit.getPosition()[1]);
- } else {
- botHits[module - 1]++;
- xvsyBot[module - 1].fill(hit.getPosition()[0], Math.abs(hit.getPosition()[1]));
- }
- }
-
- for (int i = 0; i < nmodules; i++) {
- hthTop[i].fill(topHits[i]);
- hthBot[i].fill(botHits[i]);
- }
-
+ /* This doesn't work on reco'ed files...fix me!
+ int[] topHits = {0, 0, 0, 0, 0, 0};
+ int[] botHits = {0, 0, 0, 0, 0, 0};
+ List<TrackerHit> hth = event.get(TrackerHit.class, helicalTrackHitCollectionName);
+ for (TrackerHit hit : hth) {
+ int module = -99;
+ int layer = ((RawTrackerHit) hit.getRawHits().get(0)).getLayerNumber();
+ if (layer < 2) {
+ module = 1;
+ } else if (layer < 4) {
+ module = 2;
+ } else if (layer < 6) {
+ module = 3;
+ } else if (layer < 8) {
+ module = 4;
+ } else if (layer < 10) {
+ module = 5;
+ } else {
+ module = 6;
+ }
+
+ if (hit.getPosition()[1] > 0) {
+ topHits[module - 1]++;
+ xvsyTop[module - 1].fill(hit.getPosition()[0], hit.getPosition()[1]);
+ } else {
+ botHits[module - 1]++;
+ xvsyBot[module - 1].fill(hit.getPosition()[0], Math.abs(hit.getPosition()[1]));
+ }
+ }
+
+ for (int i = 0; i < nmodules; i++) {
+ hthTop[i].fill(topHits[i]);
+ hthBot[i].fill(botHits[i]);
+ }
+ */
if (!event.hasCollection(Track.class, trackCollectionName)) {
- aida.histogram1D(plotDir + triggerType + "/" + "Tracks per Event").fill(0);
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Tracks per Event").fill(0);
return;
}
nEvents++;
List<Track> tracks = event.get(Track.class, trackCollectionName);
nTotTracks += tracks.size();
- aida.histogram1D(plotDir + triggerType + "/" + "Tracks per Event").fill(tracks.size());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Tracks per Event").fill(tracks.size());
int cntEle = 0;
int cntPos = 0;
int cntTop = 0;
int cntBot = 0;
+ double ecalFace = 1393.0;//mm
for (Track trk : tracks) {
+ Hep3Vector trackPosAtEcalFace = TrackUtils.extrapolateTrack(trk, ecalFace);
+ double yAtECal = trackPosAtEcalFace.y();
+ if (yAtECal > 0)
+ trkYAtECALTop.fill(yAtECal);
+ else
+ trkYAtECALBot.fill(Math.abs(yAtECal));
nTotHits += trk.getTrackerHits().size();
- aida.histogram1D(plotDir + triggerType + "/" + "Track Chi2").fill(trk.getChi2());
- aida.histogram1D(plotDir + triggerType + "/" + "Hits per Track").fill(trk.getTrackerHits().size());
- aida.histogram1D(plotDir + triggerType + "/" + "d0 ").fill(trk.getTrackStates().get(0).getD0());
- aida.histogram1D(plotDir + triggerType + "/" + "sinphi ").fill(Math.sin(trk.getTrackStates().get(0).getPhi()));
- aida.histogram1D(plotDir + triggerType + "/" + "omega ").fill(trk.getTrackStates().get(0).getOmega());
- aida.histogram1D(plotDir + triggerType + "/" + "tan(lambda) ").fill(trk.getTrackStates().get(0).getTanLambda());
- aida.histogram1D(plotDir + triggerType + "/" + "z0 ").fill(trk.getTrackStates().get(0).getZ0());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Track Chi2").fill(trk.getChi2());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "Hits per Track").fill(trk.getTrackerHits().size());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "d0 ").fill(trk.getTrackStates().get(0).getD0());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "sinphi ").fill(Math.sin(trk.getTrackStates().get(0).getPhi()));
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "omega ").fill(trk.getTrackStates().get(0).getOmega());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "tan(lambda) ").fill(trk.getTrackStates().get(0).getTanLambda());
+ aida.histogram1D(plotDir + trackCollectionName + "/" + triggerType + "/" + "z0 ").fill(trk.getTrackStates().get(0).getZ0());
if (trk.getTrackStates().get(0).getOmega() < 0) {//positrons
trkChi2Pos.fill(trk.getChi2());
nHitsPos.fill(trk.getTrackerHits().size());
@@ -309,7 +314,7 @@
trkd0Bot.fill(trk.getTrackStates().get(0).getD0());
trkphiBot.fill(Math.sin(trk.getTrackStates().get(0).getPhi()));
trkomegaBot.fill(trk.getTrackStates().get(0).getOmega());
- trklamBot.fill(trk.getTrackStates().get(0).getTanLambda());
+ trklamBot.fill(Math.abs(trk.getTrackStates().get(0).getTanLambda()));
trkz0Bot.fill(trk.getTrackStates().get(0).getZ0());
cntBot++;
} else {
@@ -318,7 +323,7 @@
trkd0Top.fill(trk.getTrackStates().get(0).getD0());
trkphiTop.fill(Math.sin(trk.getTrackStates().get(0).getPhi()));
trkomegaTop.fill(trk.getTrackStates().get(0).getOmega());
- trklamTop.fill(trk.getTrackStates().get(0).getTanLambda());
+ trklamTop.fill(Math.abs(trk.getTrackStates().get(0).getTanLambda()));
trkz0Top.fill(trk.getTrackStates().get(0).getZ0());
cntTop++;
}
@@ -327,48 +332,49 @@
sumz0 += trk.getTrackStates().get(0).getZ0();
sumslope += Math.abs(trk.getTrackStates().get(0).getTanLambda());
sumchisq += trk.getChi2();
-
- int nStrips = 0;
- int nSeedStrips = 0;
- double meanTime = 0;
- double meanSeedTime = 0;
- for (TrackerHit hit : trk.getTrackerHits()) {
- Collection<TrackerHit> htsList = hittostrip.allFrom(hittorotated.from(hit));
- for (TrackerHit hts : htsList) {
- nStrips++;
- meanTime += hts.getTime();
- int layer = ((HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement()).getLayerNumber();
- if (layer <= 6) {
- nSeedStrips++;
- meanSeedTime += hts.getTime();
- }
- }
- }
- meanTime /= nStrips;
- meanSeedTime /= nSeedStrips;
-
- double rmsTime = 0;
- double rmsSeedTime = 0;
- for (TrackerHit hit : trk.getTrackerHits()) {
- Collection<TrackerHit> htsList = hittostrip.allFrom(hittorotated.from(hit));
- for (TrackerHit hts : htsList) {
- rmsTime += Math.pow(hts.getTime() - meanTime, 2);
- HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement();
- int layer = sensor.getLayerNumber();
- if (layer <= 6) {
- rmsSeedTime += Math.pow(hts.getTime() - meanSeedTime, 2);
- }
- String sensorName = getNiceSensorName(sensor);
- getSensorPlot(plotDir + "hitTimeResidual_", sensorName).fill((hts.getTime() - meanTime) * nStrips / (nStrips - 1)); //correct residual for bias
- }
- }
- rmsTime = Math.sqrt(rmsTime / nStrips);
- aida.histogram1D(plotDir + triggerType + "/" + "Mean time of hits on track").fill(meanTime);
- aida.histogram1D(plotDir + triggerType + "/" + "RMS time of hits on track").fill(rmsTime);
- aida.histogram2D(plotDir + triggerType + "/" + "Track chi2 vs. RMS time of hits").fill(rmsTime, trk.getChi2());
-
- rmsSeedTime = Math.sqrt(rmsSeedTime / nSeedStrips);
- aida.histogram1D(plotDir + triggerType + "/" + "RMS time of hits on seed layers").fill(rmsSeedTime);
+//below does not work on recon'ed files
+//
+// int nStrips = 0;
+// int nSeedStrips = 0;
+// double meanTime = 0;
+// double meanSeedTime = 0;
+// for (TrackerHit hit : trk.getTrackerHits()) {
+// Collection<TrackerHit> htsList = hittostrip.allFrom(hittorotated.from(hit));
+// for (TrackerHit hts : htsList) {
+// nStrips++;
+// meanTime += hts.getTime();
+// int layer = ((HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement()).getLayerNumber();
+// if (layer <= 6) {
+// nSeedStrips++;
+// meanSeedTime += hts.getTime();
+// }
+// }
+// }
+// meanTime /= nStrips;
+// meanSeedTime /= nSeedStrips;
+//
+// double rmsTime = 0;
+// double rmsSeedTime = 0;
+// for (TrackerHit hit : trk.getTrackerHits()) {
+// Collection<TrackerHit> htsList = hittostrip.allFrom(hittorotated.from(hit));
+// for (TrackerHit hts : htsList) {
+// rmsTime += Math.pow(hts.getTime() - meanTime, 2);
+// HpsSiSensor sensor = (HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement();
+// int layer = sensor.getLayerNumber();
+// if (layer <= 6) {
+// rmsSeedTime += Math.pow(hts.getTime() - meanSeedTime, 2);
+// }
+// String sensorName = getNiceSensorName(sensor);
+// getSensorPlot(plotDir + "hitTimeResidual_", sensorName).fill((hts.getTime() - meanTime) * nStrips / (nStrips - 1)); //correct residual for bias
+// }
+// }
+// rmsTime = Math.sqrt(rmsTime / nStrips);
+// aida.histogram1D(plotDir + trackCollectionName+ "/"+ triggerType + "/" + "Mean time of hits on track").fill(meanTime);
+// aida.histogram1D(plotDir + trackCollectionName+ "/"+ triggerType + "/" + "RMS time of hits on track").fill(rmsTime);
+// aida.histogram2D(plotDir + trackCollectionName+ "/"+ triggerType + "/" + "Track chi2 vs. RMS time of hits").fill(rmsTime, trk.getChi2());
+//
+// rmsSeedTime = Math.sqrt(rmsSeedTime / nSeedStrips);
+// aida.histogram1D(plotDir + trackCollectionName+ "/"+ triggerType + "/" + "RMS time of hits on seed layers").fill(rmsSeedTime);
// System.out.format("%d seed strips, RMS time %f\n", nSeedStrips, rmsSeedTime);
// System.out.format("%d strips, mean time %f, RMS time %f\n", nStrips, meanTime, rmsTime);
@@ -388,7 +394,7 @@
//IHistogram1D occupancyPlot = aida.histogram1D(sensor.getName().replaceAll("Tracker_TestRunModule_", ""), 640, 0, 639);
IHistogram1D hitTimeResidual = getSensorPlot(plotDir + "hitTimeResidual_", getNiceSensorName(sensor));
IFitResult result = fitGaussian(hitTimeResidual, fitter, "range=\"(-20.0,20.0)\"");
- System.out.format("%s\t%f\t%f\t%d\t%d\n",getNiceSensorName(sensor), result.fittedParameters()[1], result.fittedParameters()[2], sensor.getFebID(), sensor.getFebHybridID());
+ System.out.format("%s\t%f\t%f\t%d\t%d\n", getNiceSensorName(sensor), result.fittedParameters()[1], result.fittedParameters()[2], sensor.getFebID(), sensor.getFebHybridID());
}
monitoredQuantityMap.put(trackingQuantNames[0], (double) nTotTracks / nEvents);
@@ -415,17 +421,15 @@
@Override
public void printDQMData() {
System.out.println("ReconMonitoring::printDQMData");
- for (Map.Entry<String, Double> entry : monitoredQuantityMap.entrySet()) {
+ for (Map.Entry<String, Double> entry : monitoredQuantityMap.entrySet())
System.out.println(entry.getKey() + " = " + entry.getValue());
- }
System.out.println("*******************************");
}
@Override
public void printDQMStrings() {
- for (Map.Entry<String, Double> entry : monitoredQuantityMap.entrySet()) {
+ for (Map.Entry<String, Double> entry : monitoredQuantityMap.entrySet())
System.out.println("ALTER TABLE dqm ADD " + entry.getKey() + " double;");
- }
}
private IHistogram1D getSensorPlot(String prefix, HpsSiSensor sensor) {
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java Mon May 11 09:36:24 2015
@@ -41,6 +41,7 @@
//some counters
int nRecoEvents = 0;
int nTotV0 = 0;
+ int nTot2Ele = 0;
//some summers
double sumMass = 0.0;
double sumVx = 0.0;
@@ -49,17 +50,31 @@
double sumChi2 = 0.0;
IHistogram2D pEleVspPos;
+ IHistogram2D pEleVspPosWithCut;
IHistogram2D pyEleVspyPos;
IHistogram2D pxEleVspxPos;
+ IHistogram2D pEleVspEle;
+ IHistogram2D pyEleVspyEle;
+ IHistogram2D pxEleVspxEle;
IHistogram2D massVsVtxZ;
+ IHistogram2D VtxYVsVtxZ;
+ IHistogram2D VtxXVsVtxZ;
+ IHistogram2D VtxXVsVtxY;
+
+ IHistogram1D sumChargeHisto;
+ IHistogram1D numChargeHisto;
boolean debug = false;
private String plotDir = "V0Monitoring/";
- double beamEnergy = 1.05; //GeV
- double maxFactor = 1.5;
+ double beamEnergy = 1.05; //GeV
+ double maxFactor = 1.25;
double feeMomentumCut = 0.8; //GeV
-
+
+ double v0ESumMinCut = 0.8 * beamEnergy;
+ double v0ESumMaxCut = 1.1 * beamEnergy;
+ double v0MaxPCut = 1.1;//GeV
+
@Override
protected void detectorChanged(Detector detector) {
System.out.println("V0Monitoring::detectorChanged Setting up the plotter");
@@ -87,11 +102,19 @@
IHistogram1D tarconVy = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Vy (mm)", 50, -1, 1);
IHistogram1D tarconVz = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Vz (mm)", 50, -10, 10);
IHistogram1D tarconChi2 = aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Chi2", 25, 0, 25);
- pEleVspPos = aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p)", 50, 0, beamEnergy * maxFactor, 50, 0,beamEnergy * maxFactor);
+ pEleVspPos = aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p)", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
+ pEleVspPosWithCut = aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p): Radiative", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
pyEleVspyPos = aida.histogram2D(plotDir + triggerType + "/" + "Py(e) vs Py(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
pxEleVspxPos = aida.histogram2D(plotDir + triggerType + "/" + "Px(e) vs Px(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
- massVsVtxZ = aida.histogram2D(plotDir + triggerType + "/" + "Mass vs Vz", 50, 0, 0.15, 50, -50, 50);
-
+ massVsVtxZ = aida.histogram2D(plotDir + triggerType + "/" + "Mass vs Vz", 50, 0, 0.15, 50, -50, 80);
+ VtxXVsVtxZ = aida.histogram2D(plotDir + triggerType + "/" + "Vx vs Vz", 100, -10, 10, 100, -50, 80);
+ VtxYVsVtxZ = aida.histogram2D(plotDir + triggerType + "/" + "Vy vs Vz", 100, -5, 5, 100, -50, 80);
+ VtxXVsVtxY = aida.histogram2D(plotDir + triggerType + "/" + "Vx vs Vy", 100, -10, 10, 100, -5, 5);
+ pEleVspEle = aida.histogram2D(plotDir + triggerType + "/" + "2 Electron: P(e) vs P(p)", 50, 0, beamEnergy * maxFactor, 50, 0, beamEnergy * maxFactor);
+ pyEleVspyEle = aida.histogram2D(plotDir + triggerType + "/" + "2 Electron:Py(e) vs Py(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
+ pxEleVspxEle = aida.histogram2D(plotDir + triggerType + "/" + "2 Electron:Px(e) vs Px(p)", 50, -0.1, 0.1, 50, -0.1, 0.1);
+ sumChargeHisto = aida.histogram1D(plotDir + triggerType + "/" + "Total Charge of Event", 5, -2, 3);
+ numChargeHisto = aida.histogram1D(plotDir + triggerType + "/" + "Number of Charged Particles", 6, 0, 6);
}
@Override
@@ -114,7 +137,7 @@
if (!matchTriggerType(triggerData))//only process singles0 triggers...
return;
}
- } else
+ } else if (debug)
System.out.println(this.getClass().getSimpleName() + ": No trigger bank found...running over all trigger types");
nRecoEvents++;
@@ -129,20 +152,37 @@
aida.histogram1D(plotDir + triggerType + "/" + "Unconstrained Chi2").fill(uncVert.getChi2());
aida.histogram2D(plotDir + triggerType + "/" + "Mass vs Vz").fill(uncV0.getMass(), uncVert.getPosition().z());
+ VtxXVsVtxZ.fill(uncVert.getPosition().x(), uncVert.getPosition().z());
+ VtxYVsVtxZ.fill(uncVert.getPosition().y(), uncVert.getPosition().z());
+ VtxXVsVtxY.fill(uncVert.getPosition().x(), uncVert.getPosition().y());
+
//this always has 2 tracks.
List<ReconstructedParticle> trks = uncV0.getParticles();
- Track ele = trks.get(0).getTracks().get(0);
- Track pos = trks.get(1).getTracks().get(0);
- //if track #0 has charge>0 it's the electron! This seems mixed up, but remember the track
- //charge is assigned assuming a positive B-field, while ours is negative
- if (trks.get(0).getCharge() > 0) {
- pos = trks.get(0).getTracks().get(0);
- ele = trks.get(1).getTracks().get(0);
+// Track ele = trks.get(0).getTracks().get(0);
+// Track pos = trks.get(1).getTracks().get(0);
+// //if track #0 has charge>0 it's the electron! This seems mixed up, but remember the track
+// //charge is assigned assuming a positive B-field, while ours is negative
+// if (trks.get(0).getCharge() > 0) {
+// pos = trks.get(0).getTracks().get(0);
+// ele = trks.get(1).getTracks().get(0);
+// }
+// aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p)").fill(getMomentum(ele), getMomentum(pos));
+// aida.histogram2D(plotDir + triggerType + "/" + "Px(e) vs Px(p)").fill(ele.getTrackStates().get(0).getMomentum()[1], pos.getTrackStates().get(0).getMomentum()[1]);
+// aida.histogram2D(plotDir + triggerType + "/" + "Py(e) vs Py(p)").fill(ele.getTrackStates().get(0).getMomentum()[2], pos.getTrackStates().get(0).getMomentum()[2]);
+ ReconstructedParticle ele = trks.get(0);
+ ReconstructedParticle pos = trks.get(1);
+ //ReconParticles have the charge correct.
+ if (trks.get(0).getCharge() < 0) {
+ pos = trks.get(0);
+ ele = trks.get(1);
}
- aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p)").fill(getMomentum(ele), getMomentum(pos));
- aida.histogram2D(plotDir + triggerType + "/" + "Px(e) vs Px(p)").fill(ele.getTrackStates().get(0).getMomentum()[1], pos.getTrackStates().get(0).getMomentum()[1]);
- aida.histogram2D(plotDir + triggerType + "/" + "Py(e) vs Py(p)").fill(ele.getTrackStates().get(0).getMomentum()[2], pos.getTrackStates().get(0).getMomentum()[2]);
-
+ double pe = ele.getMomentum().magnitude();
+ double pp = pos.getMomentum().magnitude();
+ aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p)").fill(pe, pp);
+ aida.histogram2D(plotDir + triggerType + "/" + "Px(e) vs Px(p)").fill(ele.getMomentum().x(), pos.getMomentum().x());
+ aida.histogram2D(plotDir + triggerType + "/" + "Py(e) vs Py(p)").fill(ele.getMomentum().y(), pos.getMomentum().y());
+ if (pe < v0MaxPCut && pp < v0MaxPCut && (pe + pp) > v0ESumMinCut&&(pe + pp)<v0ESumMaxCut)//enrich radiative-like events
+ aida.histogram2D(plotDir + triggerType + "/" + "P(e) vs P(p): Radiative").fill(pe, pp);
}
List<ReconstructedParticle> beamConstrainedV0List = event.get(ReconstructedParticle.class, beamConV0CandidatesColName);
@@ -171,6 +211,36 @@
aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Mass (GeV)").fill(tarV0.getMass());
aida.histogram1D(plotDir + triggerType + "/" + "Target Constrained Chi2").fill(tarVert.getChi2());
}
+ List<ReconstructedParticle> finalStateParticles = event.get(ReconstructedParticle.class, finalStateParticlesColName);
+ if (debug)
+ System.out.println("This events has " + finalStateParticles.size() + " final state particles");
+
+ ReconstructedParticle ele1 = null;
+ ReconstructedParticle ele2 = null;
+ int sumCharge = 0;
+ int numChargedParticles = 0;
+ for (ReconstructedParticle fsPart : finalStateParticles) {
+ if (debug)
+ System.out.println("PDGID = " + fsPart.getParticleIDUsed() + "; charge = " + fsPart.getCharge() + "; pz = " + fsPart.getMomentum().x());
+ double charge = fsPart.getCharge();
+ sumCharge += charge;
+ if (charge != 0) {
+ numChargedParticles++;
+ if (charge < 1)
+ if (ele1 == null)
+ ele1 = fsPart;
+ else
+ ele2 = fsPart;
+ }
+ }
+ sumChargeHisto.fill(sumCharge);
+ numChargeHisto.fill(numChargedParticles);
+
+ if (ele1 != null && ele2 != null) {
+ pEleVspEle.fill(ele1.getMomentum().magnitude(), ele2.getMomentum().magnitude());
+ pyEleVspyEle.fill(ele1.getMomentum().y(), ele2.getMomentum().y());
+ pxEleVspxEle.fill(ele1.getMomentum().x(), ele2.getMomentum().x());
+ }
}
@Override
@@ -200,44 +270,45 @@
double[] init3 = {50.0, 0.0, 3.0, 1.0, 0.0};
IFitResult resVz = fitVertexPosition(bsconVz, fitter, init3, "range=\"(-6,6)\"");
- double[] parsVx = resVx.fittedParameters();
- double[] parsVy = resVy.fittedParameters();
- double[] parsVz = resVz.fittedParameters();
-
- for (int i = 0; i < 5; i++)
- System.out.println("Vertex Fit Parameters: " + resVx.fittedParameterNames()[i] + " = " + parsVx[i] + "; " + parsVy[i] + "; " + parsVz[i]);
-
- IPlotter plotter = analysisFactory.createPlotterFactory().create("Vertex Position");
- plotter.createRegions(1, 3);
- IPlotterStyle pstyle = plotter.style();
- pstyle.legendBoxStyle().setVisible(false);
- pstyle.dataStyle().fillStyle().setColor("green");
- pstyle.dataStyle().lineStyle().setColor("black");
- plotter.region(0).plot(bsconVx);
- plotter.region(0).plot(resVx.fittedFunction());
- plotter.region(1).plot(bsconVy);
- plotter.region(1).plot(resVy.fittedFunction());
- plotter.region(2).plot(bsconVz);
- plotter.region(2).plot(resVz.fittedFunction());
- if (outputPlots)
- try {
- plotter.writeToFile(outputPlotDir + "vertex.png");
- } catch (IOException ex) {
- Logger.getLogger(V0Monitoring.class.getName()).log(Level.SEVERE, null, ex);
- }
-
- monitoredQuantityMap.put(fpQuantNames[0], (double) nTotV0 / nRecoEvents);
- monitoredQuantityMap.put(fpQuantNames[1], sumMass / nTotV0);
+ if (resVx != null && resVy != null & resVz != null) {
+ double[] parsVx = resVx.fittedParameters();
+ double[] parsVy = resVy.fittedParameters();
+ double[] parsVz = resVz.fittedParameters();
+
+ for (int i = 0; i < 5; i++)
+ System.out.println("Vertex Fit Parameters: " + resVx.fittedParameterNames()[i] + " = " + parsVx[i] + "; " + parsVy[i] + "; " + parsVz[i]);
+
+ IPlotter plotter = analysisFactory.createPlotterFactory().create("Vertex Position");
+ plotter.createRegions(1, 3);
+ IPlotterStyle pstyle = plotter.style();
+ pstyle.legendBoxStyle().setVisible(false);
+ pstyle.dataStyle().fillStyle().setColor("green");
+ pstyle.dataStyle().lineStyle().setColor("black");
+ plotter.region(0).plot(bsconVx);
+ plotter.region(0).plot(resVx.fittedFunction());
+ plotter.region(1).plot(bsconVy);
+ plotter.region(1).plot(resVy.fittedFunction());
+ plotter.region(2).plot(bsconVz);
+ plotter.region(2).plot(resVz.fittedFunction());
+ if (outputPlots)
+ try {
+ plotter.writeToFile(outputPlotDir + "vertex.png");
+ } catch (IOException ex) {
+ Logger.getLogger(V0Monitoring.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
// monitoredQuantityMap.put(fpQuantNames[2], sumVx / nTotV0);
// monitoredQuantityMap.put(fpQuantNames[3], sumVy / nTotV0);
// monitoredQuantityMap.put(fpQuantNames[4], sumVz / nTotV0);
- monitoredQuantityMap.put(fpQuantNames[2], parsVx[1]);
- monitoredQuantityMap.put(fpQuantNames[3], parsVy[1]);
- monitoredQuantityMap.put(fpQuantNames[4], parsVz[1]);
- monitoredQuantityMap.put(fpQuantNames[5], parsVx[2]);
- monitoredQuantityMap.put(fpQuantNames[6], parsVy[2]);
- monitoredQuantityMap.put(fpQuantNames[7], parsVz[2]);
-
+ monitoredQuantityMap.put(fpQuantNames[2], parsVx[1]);
+ monitoredQuantityMap.put(fpQuantNames[3], parsVy[1]);
+ monitoredQuantityMap.put(fpQuantNames[4], parsVz[1]);
+ monitoredQuantityMap.put(fpQuantNames[5], parsVx[2]);
+ monitoredQuantityMap.put(fpQuantNames[6], parsVy[2]);
+ monitoredQuantityMap.put(fpQuantNames[7], parsVz[2]);
+ }
+ monitoredQuantityMap.put(fpQuantNames[0], (double) nTotV0 / nRecoEvents);
+ monitoredQuantityMap.put(fpQuantNames[1], sumMass / nTotV0);
monitoredQuantityMap.put(fpQuantNames[8], sumChi2 / nTotV0);
}
@@ -248,8 +319,15 @@
System.out.println("ALTER TABLE dqm ADD " + fpQuantNames[i] + " double;");
}
- IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range) {
- return fitter.fit(h1d, "g+p1", init, range);
+ IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range
+ ) {
+ IFitResult ifr = null;
+ try {
+ ifr = fitter.fit(h1d, "g+p1", init, range);
+ } catch (RuntimeException ex) {
+ System.out.println(this.getClass().getSimpleName() + ": caught exception in fitGaussian");
+ }
+ return ifr;
}
private double getMomentum(Track trk) {
|