lcsim/src/org/lcsim/contrib/uiowa/structural
diff -u -r1.3 -r1.4
--- TestFragmentIdentifier.java 6 Jan 2006 01:02:06 -0000 1.3
+++ TestFragmentIdentifier.java 6 Jan 2006 22:58:51 -0000 1.4
@@ -19,7 +19,7 @@
* Test the performance of a FragmentIdentifier by
* comparing it to another, cheating FragmentIdentifier.
*
- * @version $Id: TestFragmentIdentifier.java,v 1.3 2006/01/06 01:02:06 mcharles Exp $
+ * @version $Id: TestFragmentIdentifier.java,v 1.4 2006/01/06 22:58:51 mcharles Exp $
*/
public class TestFragmentIdentifier implements FragmentIdentifier
@@ -32,23 +32,45 @@
try {
m_tree = af.createTreeFactory().create("FragmentID.aida","xml",false,true);
m_histoFactory = af.createHistogramFactory(m_tree);
- m_hcorrectID = m_histoFactory.createHistogram1D("correctID", 2, -0.5, 1.5);
- m_hnumHitsWhenFragFrag = m_histoFactory.createCloud1D("numHitsWhenCorrect (test=frag, cheat=frag)");
- m_hnumHitsWhenFragNon = m_histoFactory.createCloud1D("numHitsWhenWrong (test=frag, cheat=nonfrag)");
- m_hnumHitsWhenNonFrag = m_histoFactory.createCloud1D("numHitsWhenWrong (test=nonfrag, cheat=frag)");
- m_hnumHitsWhenNonNon = m_histoFactory.createCloud1D("numHitsWhenCorrect (test=nonfrag, cheat=nonfrag)");
- m_hdocaWhenFragFrag = m_histoFactory.createCloud1D("docaWhenCorrect (test=frag, cheat=frag)");
- m_hdocaWhenFragNon = m_histoFactory.createCloud1D("docaWhenWrong (test=frag, cheat=nonfrag)");
- m_hdocaWhenNonFrag = m_histoFactory.createCloud1D("docaWhenWrong (test=nonfrag, cheat=frag)");
- m_hdocaWhenNonNon = m_histoFactory.createCloud1D("docaWhenCorrect (test=nonfrag, cheat=nonfrag)");
+
+ // All calorimeters combined
+ m_hcorrectID = m_histoFactory.createHistogram1D("correctID", 2, -0.5, 1.5);
+ m_hnumHitsWhenFragFrag = m_histoFactory.createCloud1D("numHitsWhenCorrect (test=frag, cheat=frag)");
+ m_hnumHitsWhenFragNon = m_histoFactory.createCloud1D("numHitsWhenWrong (test=frag, cheat=nonfrag)");
+ m_hnumHitsWhenNonFrag = m_histoFactory.createCloud1D("numHitsWhenWrong (test=nonfrag, cheat=frag)");
+ m_hnumHitsWhenNonNon = m_histoFactory.createCloud1D("numHitsWhenCorrect (test=nonfrag, cheat=nonfrag)");
+ m_hdocaWhenFragFrag = m_histoFactory.createCloud1D("docaWhenCorrect (test=frag, cheat=frag)");
+ m_hdocaWhenFragNon = m_histoFactory.createCloud1D("docaWhenWrong (test=frag, cheat=nonfrag)");
+ m_hdocaWhenNonFrag = m_histoFactory.createCloud1D("docaWhenWrong (test=nonfrag, cheat=frag)");
+ m_hdocaWhenNonNon = m_histoFactory.createCloud1D("docaWhenCorrect (test=nonfrag, cheat=nonfrag)");
m_hnumHitsVsDocaWhenFragFrag = m_histoFactory.createCloud2D("numHitsVsDocaWhenCorrect (test=frag, cheat=frag)");
m_hnumHitsVsDocaWhenFragNon = m_histoFactory.createCloud2D("numHitsVsDocaWhenWrong (test=frag, cheat=nonfrag)");
m_hnumHitsVsDocaWhenNonFrag = m_histoFactory.createCloud2D("numHitsVsDocaWhenWrong (test=nonfrag, cheat=frag)");
m_hnumHitsVsDocaWhenNonNon = m_histoFactory.createCloud2D("numHitsVsDocaWhenCorrect (test=nonfrag, cheat=nonfrag)");
- m_hdocaToParentWhenFragFrag = m_histoFactory.createCloud1D("docaToParentWhenCorrect (test=frag, cheat=frag)");
- m_hdocaToParentWhenNonFrag = m_histoFactory.createCloud1D("docaToParentWhenWrong (test=nonfrag, cheat=frag)");
- m_hdistToParentWhenFragFrag = m_histoFactory.createCloud1D("distToParentWhenCorrect (test=frag, cheat=frag)");
- m_hdistToParentWhenNonFrag = m_histoFactory.createCloud1D("distToParentWhenWrong (test=nonfrag, cheat=frag)");
+ m_hdocaToParentWhenFragFrag = m_histoFactory.createCloud1D("docaToParentWhenCorrect (test=frag, cheat=frag)");
+ m_hdocaToParentWhenNonFrag = m_histoFactory.createCloud1D("docaToParentWhenWrong (test=nonfrag, cheat=frag)");
+ m_hdistToParentWhenFragFrag = m_histoFactory.createCloud1D("distToParentWhenCorrect (test=frag, cheat=frag)");
+ m_hdistToParentWhenNonFrag = m_histoFactory.createCloud1D("distToParentWhenWrong (test=nonfrag, cheat=frag)");
+
+ // HCAL
+ m_HCAL_hcorrectID = m_histoFactory.createHistogram1D("correctID HCAL", 2, -0.5, 1.5);
+ m_HCAL_hnumHitsWhenFragFrag = m_histoFactory.createCloud1D("numHitsWhenCorrect (test=frag, cheat=frag) HCAL");
+ m_HCAL_hnumHitsWhenFragNon = m_histoFactory.createCloud1D("numHitsWhenWrong (test=frag, cheat=nonfrag) HCAL");
+ m_HCAL_hnumHitsWhenNonFrag = m_histoFactory.createCloud1D("numHitsWhenWrong (test=nonfrag, cheat=frag) HCAL");
+ m_HCAL_hnumHitsWhenNonNon = m_histoFactory.createCloud1D("numHitsWhenCorrect (test=nonfrag, cheat=nonfrag) HCAL");
+ m_HCAL_hdocaWhenFragFrag = m_histoFactory.createCloud1D("docaWhenCorrect (test=frag, cheat=frag) HCAL");
+ m_HCAL_hdocaWhenFragNon = m_histoFactory.createCloud1D("docaWhenWrong (test=frag, cheat=nonfrag) HCAL");
+ m_HCAL_hdocaWhenNonFrag = m_histoFactory.createCloud1D("docaWhenWrong (test=nonfrag, cheat=frag) HCAL");
+ m_HCAL_hdocaWhenNonNon = m_histoFactory.createCloud1D("docaWhenCorrect (test=nonfrag, cheat=nonfrag) HCAL");
+ m_HCAL_hnumHitsVsDocaWhenFragFrag = m_histoFactory.createCloud2D("numHitsVsDocaWhenCorrect (test=frag, cheat=frag) HCAL");
+ m_HCAL_hnumHitsVsDocaWhenFragNon = m_histoFactory.createCloud2D("numHitsVsDocaWhenWrong (test=frag, cheat=nonfrag) HCAL");
+ m_HCAL_hnumHitsVsDocaWhenNonFrag = m_histoFactory.createCloud2D("numHitsVsDocaWhenWrong (test=nonfrag, cheat=frag) HCAL");
+ m_HCAL_hnumHitsVsDocaWhenNonNon = m_histoFactory.createCloud2D("numHitsVsDocaWhenCorrect (test=nonfrag, cheat=nonfrag) HCAL");
+ m_HCAL_hdocaToParentWhenFragFrag = m_histoFactory.createCloud1D("docaToParentWhenCorrect (test=frag, cheat=frag) HCAL");
+ m_HCAL_hdocaToParentWhenNonFrag = m_histoFactory.createCloud1D("docaToParentWhenWrong (test=nonfrag, cheat=frag) HCAL");
+ m_HCAL_hdistToParentWhenFragFrag = m_histoFactory.createCloud1D("distToParentWhenCorrect (test=frag, cheat=frag) HCAL");
+ m_HCAL_hdistToParentWhenNonFrag = m_histoFactory.createCloud1D("distToParentWhenWrong (test=nonfrag, cheat=frag) HCAL");
+
} catch (IOException ioe1) {
ioe1.printStackTrace();
@@ -66,12 +88,16 @@
boolean test_isFragment = m_testID.isFragment(clus, event);
boolean cheat_isFragment = m_cheatID.isFragment(clus, event);
+ boolean hcal = isHCAL(clus);
+
String debugString = new String("DEBUG: Fragment ID ");
if (test_isFragment == cheat_isFragment) {
m_hcorrectID.fill(1);
+ if (hcal) { m_HCAL_hcorrectID.fill(1); }
debugString += "correct";
} else {
m_hcorrectID.fill(0);
+ if (hcal) { m_HCAL_hcorrectID.fill(0); }
debugString += "wrong";
}
debugString += ": ";
@@ -93,15 +119,31 @@
if (test_isFragment && cheat_isFragment) {
m_hnumHitsWhenFragFrag.fill(numHits);
if (numHits>=4) { m_hdocaWhenFragFrag.fill(doca); m_hnumHitsVsDocaWhenFragFrag.fill(numHits,doca); }
+ if (hcal) {
+ m_HCAL_hnumHitsWhenFragFrag.fill(numHits);
+ if (numHits>=4) { m_HCAL_hdocaWhenFragFrag.fill(doca); m_HCAL_hnumHitsVsDocaWhenFragFrag.fill(numHits,doca); }
+ }
} else if (test_isFragment && !cheat_isFragment) {
m_hnumHitsWhenFragNon.fill(numHits);
if (numHits>=4) { m_hdocaWhenFragNon.fill(doca); m_hnumHitsVsDocaWhenFragNon.fill(numHits,doca); }
+ if (hcal) {
+ m_HCAL_hnumHitsWhenFragNon.fill(numHits);
+ if (numHits>=4) { m_HCAL_hdocaWhenFragNon.fill(doca); m_HCAL_hnumHitsVsDocaWhenFragNon.fill(numHits,doca); }
+ }
} else if (!test_isFragment && cheat_isFragment) {
m_hnumHitsWhenNonFrag.fill(numHits);
if (numHits>=4) { m_hdocaWhenNonFrag.fill(doca); m_hnumHitsVsDocaWhenNonFrag.fill(numHits,doca); }
+ if (hcal) {
+ m_HCAL_hnumHitsWhenNonFrag.fill(numHits);
+ if (numHits>=4) { m_HCAL_hdocaWhenNonFrag.fill(doca); m_HCAL_hnumHitsVsDocaWhenNonFrag.fill(numHits,doca); }
+ }
} else if (!test_isFragment && !cheat_isFragment) {
m_hnumHitsWhenNonNon.fill(numHits);
if (numHits>=4) { m_hdocaWhenNonNon.fill(doca); m_hnumHitsVsDocaWhenNonNon.fill(numHits,doca); }
+ if (hcal) {
+ m_HCAL_hnumHitsWhenNonNon.fill(numHits);
+ if (numHits>=4) { m_HCAL_hdocaWhenNonNon.fill(doca); m_HCAL_hnumHitsVsDocaWhenNonNon.fill(numHits,doca); }
+ }
}
if (cheat_isFragment) {
@@ -118,8 +160,10 @@
double distance = displacement.magnitude();
if (test_isFragment) {
m_hdistToParentWhenFragFrag.fill(distance);
+ if (hcal) { m_HCAL_hdistToParentWhenFragFrag.fill(distance); }
} else {
m_hdistToParentWhenNonFrag.fill(distance);
+ if (hcal) { m_hdistToParentWhenNonFrag.fill(distance); }
}
}
}
@@ -131,8 +175,10 @@
double docaToParent = MiscUtilities.findDOCAToPoint(linePosAndDir[0], linePosAndDir[1], parentPosAndDir[0]);
if (test_isFragment) {
m_hdocaToParentWhenFragFrag.fill(docaToParent);
+ if (hcal) { m_hdocaToParentWhenFragFrag.fill(docaToParent); }
} else {
m_hdocaToParentWhenNonFrag.fill(docaToParent);
+ if (hcal) { m_hdocaToParentWhenNonFrag.fill(docaToParent); }
}
}
}
@@ -149,13 +195,29 @@
}
}
+ boolean isHCAL(Cluster clus)
+ {
+ // How many hits?
+ int nHits = clus.getCalorimeterHits().size();
+ // How many HCAL hits?
+ int nHitsHCAL = MiscUtilities.countHitsInClusterHCAL(null, clus);
+
+ if (nHitsHCAL * 2 > nHits) {
+ // More than half in HCAL
+ return true;
+ } else {
+ // Half or more in ECAL
+ return false;
+ }
+ }
+
protected FragmentIdentifier m_testID;
protected FragmentIdentifier m_cheatID;
ITree m_tree = null;
IHistogramFactory m_histoFactory = null;
- IHistogram1D m_hcorrectID;
+ IHistogram1D m_hcorrectID;
ICloud1D m_hnumHitsWhenFragFrag;
ICloud1D m_hnumHitsWhenFragNon ;
ICloud1D m_hnumHitsWhenNonFrag ;
@@ -168,11 +230,28 @@
ICloud2D m_hnumHitsVsDocaWhenFragNon ;
ICloud2D m_hnumHitsVsDocaWhenNonFrag ;
ICloud2D m_hnumHitsVsDocaWhenNonNon ;
-
ICloud1D m_hdocaToParentWhenFragFrag;
ICloud1D m_hdocaToParentWhenNonFrag;
ICloud1D m_hdistToParentWhenFragFrag;
ICloud1D m_hdistToParentWhenNonFrag;
+ IHistogram1D m_HCAL_hcorrectID;
+ ICloud1D m_HCAL_hnumHitsWhenFragFrag;
+ ICloud1D m_HCAL_hnumHitsWhenFragNon ;
+ ICloud1D m_HCAL_hnumHitsWhenNonFrag ;
+ ICloud1D m_HCAL_hnumHitsWhenNonNon ;
+ ICloud1D m_HCAL_hdocaWhenFragFrag;
+ ICloud1D m_HCAL_hdocaWhenFragNon ;
+ ICloud1D m_HCAL_hdocaWhenNonFrag ;
+ ICloud1D m_HCAL_hdocaWhenNonNon ;
+ ICloud2D m_HCAL_hnumHitsVsDocaWhenFragFrag;
+ ICloud2D m_HCAL_hnumHitsVsDocaWhenFragNon ;
+ ICloud2D m_HCAL_hnumHitsVsDocaWhenNonFrag ;
+ ICloud2D m_HCAL_hnumHitsVsDocaWhenNonNon ;
+ ICloud1D m_HCAL_hdocaToParentWhenFragFrag;
+ ICloud1D m_HCAL_hdocaToParentWhenNonFrag;
+ ICloud1D m_HCAL_hdistToParentWhenFragFrag;
+ ICloud1D m_HCAL_hdistToParentWhenNonFrag;
+
}