2 removed + 27 modified, total 29 files
java/branches/hps-java_HPSJAVA-88/analysis/src/main/java/org/hps/analysis/examples
--- java/branches/hps-java_HPSJAVA-88/analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/analysis/src/main/java/org/hps/analysis/examples/TrackAnalysis.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -30,6 +30,7 @@
import org.lcsim.event.Track;
import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
+import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
import org.lcsim.fit.helicaltrack.HelicalTrackCross;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
@@ -96,25 +97,26 @@
_hasLayerOne = false;
// Loop over the hits on the track and make sure we have HelicalTrackHits (which contain the MC particle)
for (TrackerHit hit : trk.getTrackerHits()) {
+ HelicalTrackHit htc = (HelicalTrackHit) hit;
+ if (htc.Detector().equals("BeamSpot"))
+ continue;
+
// get the set of MCParticles associated with this hit and update the hit count for each MCParticle
Set<MCParticle> mclist = hittomc.allFrom(hit);
for (MCParticle mcp : mclist) {
Integer mchits = 0;
- if (mcmap.containsKey(mcp)) {
+ if (mcmap.containsKey(mcp))
mchits = mcmap.get(mcp);
- }
mchits++;
mcmap.put(mcp, mchits);
}
-// HelicalTrackHit htc = (HelicalTrackHit) hit;
- if (hit instanceof HelicalTrackCross) {
+ if (hit instanceof HelicalTrackCross)
countHit((HelicalTrackCross) hit);
- } else if (hit instanceof HelicalTrack2DHit) {
+ else if (hit instanceof HelicalTrack2DHit)
countHit((HelicalTrack2DHit) hit);
- } else {
+ else
countHit(hit, rthtosimhit, hittostrip, hittorotated);
- }
}
// Find the MCParticle that has the most hits on the track
@@ -128,9 +130,8 @@
}
}
- if (nbest > 0) {
+ if (nbest > 0)
_mcp = mcbest;
- }
_purity = (double) nbest / (double) _nhits;
_nbadhits = _nhits - nbest;
@@ -145,32 +146,25 @@
}
}
- if (nbestAll > 0) {
+ if (nbestAll > 0)
_mcpNew = mcbestAll;
- }
_purityNew = (double) nbestAll / (double) _nhitsNew;
_nbadhitsNew = _nhitsNew - nbestAll;
- for (TrackerHit hit : trk.getTrackerHits()) {
- if (hit instanceof HelicalTrackCross) {
+ for (TrackerHit hit : trk.getTrackerHits())
+ if (hit instanceof HelicalTrackCross)
checkForBadHit((HelicalTrackCross) hit);
- }
- }
- if (_nAxialhits > 0) {
- if (mcmapAxial.containsKey(_mcpNew)) {
+ if (_nAxialhits > 0)
+ if (mcmapAxial.containsKey(_mcpNew))
_nbadAxialhits = _nAxialhits - mcmapAxial.get(_mcpNew);
- } else {
+ else
_nbadAxialhits = _nAxialhits;
- }
- }
- if (_nZhits > 0) {
- if (mcmapZ.containsKey(_mcpNew)) {
+ if (_nZhits > 0)
+ if (mcmapZ.containsKey(_mcpNew))
_nbadZhits = _nZhits - mcmapZ.get(_mcpNew);
- } else {
+ else
_nbadZhits = _nZhits;
- }
- }
}
private void countHit(HelicalTrackCross cross) {
@@ -178,9 +172,8 @@
for (HelicalTrackStrip cl : clusterlist) {
int layer = cl.layer();
- if (layer == 1) {
+ if (layer == 1)
_hasLayerOne = true;
- }
_nStripHitsPerLayer[layer - 1] = cl.rawhits().size();
_hitLocationPerLayer.put(layer, clusterPosition(cl));
@@ -191,30 +184,26 @@
if (axdotu > 0.5) {
isAxial = true;
_nAxialhits++;
- } else {
+ } else
_nZhits++;
- }
List<MCParticle> mcPartList = cl.MCParticles();
_nMCHitsPerLayer[layer - 1] = mcPartList.size();
for (MCParticle mcp : mcPartList) {
Integer mchits = 0;
- if (mcmapAll.containsKey(mcp)) {
+ if (mcmapAll.containsKey(mcp))
mchits = mcmapAll.get(mcp);
- }
mchits++;
mcmapAll.put(mcp, mchits);
if (isAxial) {
Integer mchitsAxial = 0;
- if (mcmapAxial.containsKey(mcp)) {
+ if (mcmapAxial.containsKey(mcp))
mchitsAxial = mcmapAxial.get(mcp);
- }
mchitsAxial++;
mcmapAxial.put(mcp, mchitsAxial);
} else {
Integer mchitsZ = 0;
- if (mcmapZ.containsKey(mcp)) {
+ if (mcmapZ.containsKey(mcp))
mchitsZ = mcmapZ.get(mcp);
- }
mchitsZ++;
mcmapZ.put(mcp, mchitsZ);
}
@@ -237,22 +226,19 @@
IIdentifier id = new Identifier(rawHit.getCellID());
//===> int newLayer = SvtUtils.getInstance().getHelper().getValue(id, "layer");
int newLayer = ((HpsSiSensor) rawHit.getDetectorElement()).getLayerNumber();
- if (layer != -1 && layer != newLayer) {
+ if (layer != -1 && layer != newLayer)
System.out.format("TrackerHit has hits from multiple layers: %d and %d\n", layer, newLayer);
- }
layer = newLayer;
//===> int newModule = SvtUtils.getInstance().getHelper().getValue(id, "module");
int newModule = ((HpsSiSensor) rawHit.getDetectorElement()).getModuleNumber();
- if (module != -1 && module != newModule) {
+ if (module != -1 && module != newModule)
System.out.format("TrackerHit has hits from multiple modules: %d and %d\n", module, newModule);
- }
module = newModule;
// System.out.println(SvtUtils.getInstance().getHelper().getValue(id, "strip"));
}
- if (layer == 1) {
+ if (layer == 1)
_hasLayerOne = true;
- }
DiagonalizedCovarianceMatrix covariance = new DiagonalizedCovarianceMatrix(cl);
_nStripHitsPerLayer[layer - 1] = cl.getRawHits().size();
_hitLocationPerLayer.put(layer, new BasicHep3Vector(hit.getPosition()));
@@ -264,41 +250,35 @@
if (axdotu > 0.5) {
isAxial = true;
_nAxialhits++;
- } else {
+ } else
_nZhits++;
- }
// get the set of MCParticles associated with this hit and update the hit count for each MCParticle
Set<MCParticle> mcPartList = new HashSet<MCParticle>();
for (RawTrackerHit rawHit : rawHits) {
Set<SimTrackerHit> simhits = (Set<SimTrackerHit>) rthtosimhit.allFrom(rawHit);
- for (SimTrackerHit simhit : simhits) {
- if (simhit != null && simhit.getMCParticle() != null) {
+ for (SimTrackerHit simhit : simhits)
+ if (simhit != null && simhit.getMCParticle() != null)
mcPartList.add(simhit.getMCParticle());
- }
- }
}
// System.out.println("MCParticle count: " + mcPartList.size());
_nMCHitsPerLayer[layer - 1] = mcPartList.size();
for (MCParticle mcp : mcPartList) {
Integer mchits = 0;
- if (mcmapAll.containsKey(mcp)) {
+ if (mcmapAll.containsKey(mcp))
mchits = mcmapAll.get(mcp);
- }
mchits++;
mcmapAll.put(mcp, mchits);
if (isAxial) {
Integer mchitsAxial = 0;
- if (mcmapAxial.containsKey(mcp)) {
+ if (mcmapAxial.containsKey(mcp))
mchitsAxial = mcmapAxial.get(mcp);
- }
mchitsAxial++;
mcmapAxial.put(mcp, mchitsAxial);
} else {
Integer mchitsZ = 0;
- if (mcmapZ.containsKey(mcp)) {
+ if (mcmapZ.containsKey(mcp))
mchitsZ = mcmapZ.get(mcp);
- }
mchitsZ++;
mcmapZ.put(mcp, mchitsZ);
}
@@ -314,15 +294,13 @@
boolean isAxial = true;
for (MCParticle mcp : mcPartList) {
Integer mchits = 0;
- if (mcmapAll.containsKey(mcp)) {
+ if (mcmapAll.containsKey(mcp))
mchits = mcmapAll.get(mcp);
- }
mchits++;
mcmapAll.put(mcp, mchits);
Integer mchitsAxial = 0;
- if (mcmapAxial.containsKey(mcp)) {
+ if (mcmapAxial.containsKey(mcp))
mchitsAxial = mcmapAxial.get(mcp);
- }
mchitsAxial++;
mcmapAxial.put(mcp, mchitsAxial);
}
@@ -336,9 +314,8 @@
badHitList.add(cl.layer());
badhits.put(_mcpNew, cross);
}
- if (cl.MCParticles().size() > 1) {
+ if (cl.MCParticles().size() > 1)
sharedHitList.add(cl.layer());
- }
}
}
@@ -439,18 +416,14 @@
public DiagonalizedCovarianceMatrix(TrackerHit hit) {
SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
RealMatrix covMatrix = new Array2DRowRealMatrix(3, 3);
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 3; j++) {
+ for (int i = 0; i < 3; i++)
+ for (int j = 0; j < 3; j++)
covMatrix.setEntry(i, j, cov.e(i, j));
- }
- }
EigenDecomposition decomposed = new EigenDecomposition(covMatrix);
BasicHep3Matrix localToGlobal = new BasicHep3Matrix();
- for (int i = 0; i < 3; i++) {
- for (int j = 0; j < 3; j++) {
+ for (int i = 0; i < 3; i++)
+ for (int j = 0; j < 3; j++)
localToGlobal.setElement(i, j, decomposed.getV().getEntry(i, j));
- }
- }
// SymmetricMatrix localToGlobal = decomposed.getV().operate(new ArrayRealVector(3))
{
double eigenvalue = decomposed.getRealEigenvalue(0);
java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions
--- java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ConditionsDriverTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ConditionsDriverTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -22,7 +22,7 @@
public class ConditionsDriverTest extends TestCase {
// This test file has a few events from each of the "good runs" of the 2012 Test Run.
- private static final String fileLocation = "ftp://ftp-hps.slac.stanford.edu/hps/hps_data/hps_java_test_case_data/ConditionsTest.slcio";
+ private static final String fileLocation = "http://www.lcsim.org/test/hps-java/ConditionsTest.slcio";
// Number of runs that should be processed in the job.
static final int NRUNS = 9;
java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/beam
--- java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/beam/BeamCurrentTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -24,7 +24,7 @@
public class BeamCurrentTest extends TestCase {
/** This test file has a few events from the "good runs" of the Test Run. */
- private static final String fileLocation = "ftp://ftp-hps.slac.stanford.edu/hps/hps_data/hps_java_test_case_data/ConditionsTest.slcio";
+ private static final String fileLocation = "http://www.lcsim.org/test/hps-java/ConditionsTest.slcio";
/** Answer key for beam current by run. */
static Map<Integer, Double> beamCurrentAnswerKey = new HashMap<Integer, Double>();
java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ecal
--- java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ecal/PhysicalToGainTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/conditions/src/test/java/org/hps/conditions/ecal/PhysicalToGainTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -25,11 +25,14 @@
* This is a simple example of how to retrieve the gain and noise by physical ID (X,Y) in
* the ECAL.
* @author Jeremy McCormick <[log in to unmask]>
+ *
+ * @version $Id$
+ *
*/
public class PhysicalToGainTest extends TestCase {
// This test file has a few events from each of the "good runs" of the 2012 Test Run.
- private static final String fileLocation = "ftp://ftp-hps.slac.stanford.edu/hps/hps_data/hps_java_test_case_data/ConditionsTest.slcio";
+ private static final String fileLocation = "http://www.lcsim.org/test/hps-java/ConditionsTest.slcio";
// Run the test.
public void test() throws Exception {
java/branches/hps-java_HPSJAVA-88/ecal-recon/src/main/java/org/hps/recon/ecal
--- java/branches/hps-java_HPSJAVA-88/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/ecal-recon/src/main/java/org/hps/recon/ecal/EcalClusterIC.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -626,8 +626,7 @@
// Loop over seeds
for (Map.Entry<CalorimeterHit, CalorimeterHit> entry2 : hitSeedMap.entrySet()) {
if (entry2.getKey() == entry2.getValue()){
- if((entry2.getKey().getCorrectedEnergy()<seedEnergyThreshold)
- ||(seedEnergyTot.get(entry2.getKey())<clusterEnergyThreshold))
+ if(seedEnergyCorr.get(entry2.getKey())<clusterEnergyThreshold)
{
//Not clustered for not passing cuts
rejectedHitList.add(entry2.getKey());
java/branches/hps-java_HPSJAVA-88/integration-tests
--- java/branches/hps-java_HPSJAVA-88/integration-tests/pom.xml 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/pom.xml 2014-10-19 06:58:06 UTC (rev 1245)
@@ -28,7 +28,6 @@
<configuration>
<excludes>
<exclude>org/hps/EtSystemTest.java</exclude>
- <exclude>org/hps/TestRunReconTest.java</exclude>
</excludes>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<trimStackTrace>true</trimStackTrace>
@@ -54,7 +53,33 @@
</plugin>
</plugins>
</build>
- </profile>
+ </profile>
+ <profile>
+ <id>fast-integration-tests</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>org/hps/EcalReadoutSimTest.java</exclude>
+ <exclude>org/hps/EtSystemTest.java</exclude>
+ <exclude>org/hps/HPSTestRunTracker2014GeometryTrackReconTest.java</exclude>
+ <exclude>org/hps/MCFilteredReconTest.java</exclude>
+ <exclude>org/hps/MockDataReconTest.java</exclude>
+ <exclude>org/hps/ReadoutNoPileupTest.java</exclude>
+ <exclude>org/hps/ReconClusterICTest.java</exclude>
+ <exclude>org/hps/TestRunReconTest.java</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
<!-- This profile activates automatically when not running tests on a SLAC Unix system with NFS access. -->
<profile>
<id>no-slac-nfs</id>
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/EcalReadoutSimTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/EcalReadoutSimTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -7,7 +7,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -24,7 +23,6 @@
import org.lcsim.job.JobControlManager;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.cache.FileCache;
import org.lcsim.util.loop.LCSimLoop;
/**
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/MCReconTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/MCReconTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,103 +0,0 @@
-package org.hps;
-
-import java.io.File;
-import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import junit.framework.TestCase;
-
-import org.hps.recon.tracking.RawTrackerHitFitterDriver;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.Cluster;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.ReconstructedParticle;
-import org.lcsim.event.Track;
-import org.lcsim.event.TrackerHit;
-import org.lcsim.job.JobControlManager;
-import org.lcsim.util.Driver;
-import org.lcsim.util.cache.FileCache;
-import org.lcsim.util.test.TestUtil.TestOutputFile;
-
-/**
- * Run the reconstruction on output from the readout simulation.
- *
- * @author Jeremy McCormick <[log in to unmask]>
- */
-public class MCReconTest extends TestCase {
-
- static final String fileLocation = "http://www.lcsim.org/test/hps-java/MCReconTest.slcio";
-
- public void testMCRecon() throws Exception {
-
- new TestOutputFile(this.getClass().getSimpleName()).mkdirs();
-
- File reconOutputFile = new TestOutputFile(this.getClass().getSimpleName()
- + File.separator + this.getClass().getSimpleName() + "_recon");
-
- FileCache cache = new FileCache();
- File inputFile = cache.getCachedFile(new URL(fileLocation));
-
- System.out.println("Running MC recon on " + inputFile.getPath() + " ...");
- JobControlManager job = new JobControlManager();
- job.addVariableDefinition("outputFile", reconOutputFile.getPath());
- job.addInputFile(inputFile);
- job.setup("/org/hps/steering/test/MCReconTest.lcsim");
- ReconCheckDriver reconCheckDriver = new ReconCheckDriver();
- job.getLCSimLoop().add(reconCheckDriver);
- for (Driver driver : job.getDriverAdapter().getDriver().drivers()) {
- System.out.println(driver.getClass().getCanonicalName());
- if (driver instanceof RawTrackerHitFitterDriver) {
- ((RawTrackerHitFitterDriver)driver).setDebug(false);
- }
- }
- Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF);
- long startMillis = System.currentTimeMillis();
- job.run();
- long elapsedMillis = System.currentTimeMillis() - startMillis;
- long nevents = job.getLCSimLoop().getTotalSupplied();
- System.out.println("MC recon processed " + job.getLCSimLoop().getTotalSupplied() + " events.");
- System.out.print("MC recon took " + ((double)elapsedMillis/1000L) + " seconds");
- System.out.println(" which is " + ((double)elapsedMillis / (double)nevents) + " ms per event.");
- job.getLCSimLoop().dispose();
- }
-
- static class ReconCheckDriver extends Driver {
-
- int nTracks;
- int nClusters;
- int nTrackerHits;
- int nCalorimeterHits;
- int nReconstructedParticles;
- int nEvents;
-
- public void process(EventHeader event) {
- ++nEvents;
- if (event.hasCollection(Track.class, "MatchedTracks")) {
- nTracks += event.get(Track.class, "MatchedTracks").size();
- }
- if (event.hasCollection(Cluster.class, "EcalClusters")) {
- nClusters += event.get(Cluster.class, "EcalClusters").size();
- }
- if (event.hasCollection(TrackerHit.class, "RotatedHelicalTrackHits")) {
- nTrackerHits += event.get(TrackerHit.class, "RotatedHelicalTrackHits").size();
- }
- if (event.hasCollection(CalorimeterHit.class, "EcalCalHits")) {
- nCalorimeterHits += event.get(CalorimeterHit.class, "EcalCalHits").size();
- }
- if (event.hasCollection(ReconstructedParticle.class, "FinalStateParticles")) {
- nReconstructedParticles += event.get(ReconstructedParticle.class, "FinalStateParticles").size();
- }
- }
-
- public void endOfData() {
- System.out.println("ReconCheckDriver results ...");
- System.out.println(" nEvents: " + nEvents);
- System.out.println(" nTracks: " + nTracks);
- System.out.println(" nClusters: " + nClusters);
- System.out.println(" nTrackerHits: " + nTrackerHits);
- System.out.println(" nCalorimeterHits: " + nCalorimeterHits);
- System.out.println(" nReconstructedParticles: " + nReconstructedParticles);
- }
- }
-}
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutNoPileupTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutNoPileupTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -25,7 +25,9 @@
* @author Jeremy McCormick <[log in to unmask]>
*/
public class ReadoutNoPileupTest extends TestCase {
-
+
+ static final int nEvents = 100;
+
public void testReadoutNoPileup() throws Exception {
new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -37,6 +39,7 @@
File outputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName() + "_readout");
job.addVariableDefinition("outputFile", outputFile.getPath());
job.setup("/org/hps/steering/readout/HPS2014ReadoutNoPileup.lcsim");
+ job.setNumberOfEvents(nEvents);
job.run();
}
}
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToEvioTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToEvioTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -23,6 +23,8 @@
*/
public class ReadoutToEvioTest extends TestCase {
+ static final int nEvents = 100;
+
public void testReadoutToEvio() throws Exception {
new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -34,6 +36,7 @@
File outputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName() + "_readout");
job.addVariableDefinition("outputFile", outputFile.getPath());
job.setup("/org/hps/steering/readout/HPS2014ReadoutToEvio.lcsim");
+ job.setNumberOfEvents(nEvents);
job.run();
}
}
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToLcioTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/ReadoutToLcioTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -22,7 +22,9 @@
* @author Jeremy McCormick <[log in to unmask]>
*/
public class ReadoutToLcioTest extends TestCase {
-
+
+ static final int nEvents = 100;
+
public void testReadoutToLcio() throws Exception {
new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -35,6 +37,7 @@
File outputFile = new TestOutputFile(this.getClass().getSimpleName() + File.separator + this.getClass().getSimpleName());
job.addVariableDefinition("outputFile", outputFile.getPath());
job.setup("/org/hps/steering/readout/HPS2014ReadoutToLcio.lcsim");
+ job.setNumberOfEvents(nEvents);
job.run();
}
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/SimpleMCReconTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/SimpleMCReconTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -21,6 +21,8 @@
public class SimpleMCReconTest extends TestCase {
+ static final int nEvents = 100;
+
public void testSimpleMCReconTest() throws Exception {
new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -34,6 +36,7 @@
job.addVariableDefinition("outputFile", outputFile.getPath());
job.addInputFile(inputFile);
job.setup("/org/hps/steering/recon/SimpleMCRecon.lcsim");
+ job.setNumberOfEvents(nEvents);
job.run();
// Read in the LCIO event file and print out summary information.
@@ -86,14 +89,13 @@
public void endOfData() {
System.out.println("ReconCheckDriver results ...");
System.out.println(" nEvents: " + nEvents);
- System.out.println(" nTracks: " + nTracks);
+ System.out.println(" nSimCalorimeterHits: " + nSimCalorimeterHits);
System.out.println(" nClusters: " + nClusters);
- System.out.println(" nTrackerHits: " + nTrackerHits);
- System.out.println(" nSimCalorimeterHits: " + nSimCalorimeterHits);
- System.out.println(" nCalorimeterHits: " + nCalorimeterHits);
+ System.out.println(" nTrackerHits: " + nTrackerHits);
+ System.out.println(" nTracks: " + nTracks);
System.out.println(" nReconstructedParticles: " + nReconstructedParticles);
- System.out.println(" nTracks / nEvents = " + (double)nTracks / (double)nEvents);
- System.out.println(" nClusters / nEvents = " + (double)nClusters / (double)nEvents);
+ System.out.println(" < nTracks / nEvents > = " + (double)nTracks / (double)nEvents);
+ System.out.println(" < nClusters / nEvents > = " + (double)nClusters / (double)nEvents);
}
}
}
\ No newline at end of file
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/TestRunReadoutToEvioTest.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/java/org/hps/TestRunReadoutToEvioTest.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -17,7 +17,9 @@
* @author Jeremy McCormick <[log in to unmask]>
*/
public class TestRunReadoutToEvioTest extends TestCase {
-
+
+ static final int nEvents = 100;
+
public void testTestRunReadoutToEvio() throws Exception {
new TestOutputFile(this.getClass().getSimpleName()).mkdir();
@@ -31,6 +33,7 @@
job.addVariableDefinition("outputFile", outputFile.getPath());
job.addVariableDefinition("runNumber", "1351");
job.setup("/org/hps/steering/readout/TestRunReadoutToEvio.lcsim");
+ job.setNumberOfEvents(nEvents);
job.run();
}
}
java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/resources/org/hps/steering/test
--- java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/resources/org/hps/steering/test/MCReconTest.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/integration-tests/src/test/resources/org/hps/steering/test/MCReconTest.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,60 +0,0 @@
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
- xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
- <control>
- <printInputFiles>true</printInputFiles>
- <printDriversDetailed>true</printDriversDetailed>
- </control>
- <execute>
- <driver name="EventMarkerDriver"/>
- <driver name="CalibrationDriver"/>
- <driver name="TrackerDigiDriver"/>
- <driver name="HelicalTrackHitDriver"/>
- <driver name="TrackerReconDriver"/>
- <driver name="EcalRawConverter" />
- <driver name="EcalClusterer" />
- <driver name="ReconParticle" />
- <driver name="TrackDataDriver" />
- <driver name="GBLDriver"/>
- <driver name="LCIOWriter"/>
- </execute>
- <drivers>
- <driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver"/>
- <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
- <eventInterval>10</eventInterval>
- </driver>
- <driver name="TrackerDigiDriver" type="org.hps.recon.tracking.SimpleTrackerDigiDriver">
- <debug>false</debug>
- </driver>
- <driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
- <debug>false</debug>
- <maxSeperation>20.0</maxSeperation>
- <tolerance>1.0</tolerance>
- </driver>
- <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
- <debug>false</debug>
- <strategyResource>/org/hps/recon/tracking/strategies/HPS-Full.xml</strategyResource>
- </driver>
- <driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
- <debug>1</debug>
- <isMC>false</isMC>
- <gblFileName></gblFileName>
- </driver>
- <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
- <ecalCollectionName>EcalCalHits</ecalCollectionName>
- <use2014Gain>false</use2014Gain>
- <useTimestamps>false</useTimestamps>
- <useTruthTime>true</useTruthTime>
- </driver>
- <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
- <ecalName>Ecal</ecalName>
- <ecalCollectionName>EcalCalHits</ecalCollectionName>
- <timeCut>false</timeCut>
- </driver>
- <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"/>
- <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
- <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
- <outputFilePath>${outputFile}</outputFilePath>
- </driver>
- </drivers>
-</lcsim>
-
java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle
--- java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -22,7 +22,7 @@
/**
- *
+ * The Main HPS implementation of ReconParticleDriver...makes V0 candidates and does vertex fits
* @author Omar Moreno <[log in to unmask]>
* @version $Id$
*/
@@ -39,12 +39,12 @@
@Override
protected void startOfData(){
- unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
- beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
- targetConV0CandidatesColName = "TargetConstrainedV0Candidates";
- unconstrainedV0VerticesColName = "UnconstrainedV0Vertices";
- beamConV0VerticesColName = "BeamspotConstrainedV0Vertices";
- targetConV0VerticesColName = "TargetConstrainedV0Vertices";
+// unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
+// beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
+// targetConV0CandidatesColName = "TargetConstrainedV0Candidates";
+// unconstrainedV0VerticesColName = "UnconstrainedV0Vertices";
+// beamConV0VerticesColName = "BeamspotConstrainedV0Vertices";
+// targetConV0VerticesColName = "TargetConstrainedV0Vertices";
}
/**
java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle
--- java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -41,22 +41,28 @@
List<ReconstructedParticle> electrons;
List<ReconstructedParticle> positrons;
List<Vertex> unconstrainedV0Vertices;
- List<Vertex> beamConV0Vertices;
+ List<Vertex> beamConV0Vertices;
List<Vertex> targetConV0Vertices;
// Collections
String ecalClustersCollectionName = "EcalClusters";
String tracksCollectionName = "MatchedTracks";
String finalStateParticlesColName = "FinalStateParticles";
- String unconstrainedV0CandidatesColName = null;
- String beamConV0CandidatesColName = null;
- String targetConV0CandidatesColName = null;
- String vertexCandidatesColName = null;
- String vertexBeamConsCandidatesName = null;
- String unconstrainedV0VerticesColName = null;
- String beamConV0VerticesColName = null;
- String targetConV0VerticesColName = null;
-
+ String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
+ String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
+ String targetConV0CandidatesColName = "TargetConstrainedV0Candidates";
+ String unconstrainedV0VerticesColName = "UnconstrainedV0Vertices";
+ String beamConV0VerticesColName = "BeamspotConstrainedV0Vertices";
+ String targetConV0VerticesColName = "TargetConstrainedV0Vertices";
+// String unconstrainedV0CandidatesColName = null;
+// String beamConV0CandidatesColName = null;
+// String targetConV0CandidatesColName = null;
+// String vertexCandidatesColName = null;
+// String vertexBeamConsCandidatesName = null;
+// String unconstrainedV0VerticesColName = null;
+// String beamConV0VerticesColName = null;
+// String targetConV0VerticesColName = null;
+
// The beamsize array is in the tracking frame
/* TODO mg-May 14, 2014: the the beam size from the conditions db...also beam position! */
double[] beamsize = {0.001, 0.2, 0.02};
@@ -94,9 +100,43 @@
this.ecalClustersCollectionName = ecalClustersCollectionName;
}
- public void setTrackCollectoinName(String tracksCollectionName) {
+ public void setTracksCollectionName(String tracksCollectionName) {
this.tracksCollectionName = tracksCollectionName;
}
+
+ public void setFinalStateParticlesColName(String finalStateParticlesColName) {
+ this.finalStateParticlesColName = finalStateParticlesColName;
+ }
+
+
+ public void setUnconstrainedV0CandidatesColName(String unconstrainedV0CandidatesColName) {
+ this.unconstrainedV0CandidatesColName = unconstrainedV0CandidatesColName;
+ }
+
+
+ public void setBeamConV0CandidatesColName(String beamConV0CandidatesColName) {
+ this.beamConV0CandidatesColName = beamConV0CandidatesColName;
+ }
+
+
+ public void setTargetConV0CandidatesColName(String targetV0CandidatesColName) {
+ this.targetConV0CandidatesColName = targetConV0CandidatesColName;
+ }
+
+
+ public void setUnconstrainedV0VerticesColName(String unconstrainedV0VerticesColName) {
+ this.unconstrainedV0VerticesColName = unconstrainedV0VerticesColName;
+ }
+
+
+ public void setBeamConV0VerticesColName(String beamConV0VerticesColName) {
+ this.beamConV0VerticesColName = beamConV0VerticesColName;
+ }
+
+
+ public void setTargetConV0VerticesColName(String targetV0VerticesColName) {
+ this.targetConV0VerticesColName = targetConV0VerticesColName;
+ }
@Override
protected void detectorChanged(Detector detector) {
@@ -112,8 +152,8 @@
// All events should have a collection of Ecal clusters. If the event
// doesn't have one, skip the event.
- if (!event.hasCollection(Cluster.class, ecalClustersCollectionName))
- return;
+ if (!event.hasCollection(Cluster.class, ecalClustersCollectionName))
+ return;
// Get the collection of Ecal clusters from the event. A triggered
// event should have Ecal clusters. If it doesn't, skip the event.
@@ -123,7 +163,7 @@
// Get the collection of tracks from the event
List<Track> tracks = event.get(Track.class, tracksCollectionName);
- this.printDebug("Number of Tracks: " + tracks.size());
+ this.printDebug("Number of Tracks in "+tracksCollectionName+" : " + tracks.size());
finalStateParticles = new ArrayList<ReconstructedParticle>();
electrons = new ArrayList<ReconstructedParticle>();
@@ -145,40 +185,41 @@
// Loop through the list of final state particles and separate the
// charged particles to either electrons or positrons. These lists
// will be used for vertexing purposes.
- for (ReconstructedParticle finalStateParticle : finalStateParticles) {
- if (finalStateParticle.getCharge() > 0) positrons.add(finalStateParticle);
- else if (finalStateParticle.getCharge() < 0) electrons.add(finalStateParticle);
- }
+ for (ReconstructedParticle finalStateParticle : finalStateParticles)
+ if (finalStateParticle.getCharge() > 0)
+ positrons.add(finalStateParticle);
+ else if (finalStateParticle.getCharge() < 0)
+ electrons.add(finalStateParticle);
this.printDebug("Number of Electrons: " + electrons.size());
this.printDebug("Number of Positrons: " + positrons.size());
-
+
// Vertex electron and positron candidates
findVertices(electrons, positrons);
// If the list exist, put the vertexed candidates and vertices into the event
- if (unconstrainedV0CandidatesColName != null){
+ if (unconstrainedV0CandidatesColName != null) {
this.printDebug("Total number of unconstrained V0 candidates: " + unconstrainedV0Candidates.size());
event.put(unconstrainedV0CandidatesColName, unconstrainedV0Candidates, ReconstructedParticle.class, 0);
}
- if (beamConV0CandidatesColName != null){
+ if (beamConV0CandidatesColName != null) {
this.printDebug("Total number of beam constrained V0 candidates: " + unconstrainedV0Candidates.size());
event.put(beamConV0CandidatesColName, beamConV0Candidates, ReconstructedParticle.class, 0);
}
- if (targetConV0CandidatesColName != null){
+ if (targetConV0CandidatesColName != null) {
this.printDebug("Total number of target constrained V0 candidates: " + unconstrainedV0Candidates.size());
event.put(targetConV0CandidatesColName, targetConV0Candidates, ReconstructedParticle.class, 0);
}
- if(unconstrainedV0VerticesColName != null){
- this.printDebug("Total number of unconstrained V0 vertices: " + unconstrainedV0Vertices.size());
- event.put(unconstrainedV0VerticesColName, unconstrainedV0Vertices, Vertex.class, 0);
+ if (unconstrainedV0VerticesColName != null) {
+ this.printDebug("Total number of unconstrained V0 vertices: " + unconstrainedV0Vertices.size());
+ event.put(unconstrainedV0VerticesColName, unconstrainedV0Vertices, Vertex.class, 0);
}
- if(beamConV0VerticesColName != null){
- this.printDebug("Total number of beam constrained V0 vertices: " + beamConV0Vertices.size());
- event.put(beamConV0VerticesColName, beamConV0Vertices, Vertex.class, 0);
+ if (beamConV0VerticesColName != null) {
+ this.printDebug("Total number of beam constrained V0 vertices: " + beamConV0Vertices.size());
+ event.put(beamConV0VerticesColName, beamConV0Vertices, Vertex.class, 0);
}
- if(targetConV0VerticesColName != null){
- this.printDebug("Total number of target constrained V0 vertices: " + beamConV0Vertices.size());
- event.put(targetConV0VerticesColName, targetConV0Vertices, Vertex.class, 0);
+ if (targetConV0VerticesColName != null) {
+ this.printDebug("Total number of target constrained V0 vertices: " + beamConV0Vertices.size());
+ event.put(targetConV0VerticesColName, targetConV0Vertices, Vertex.class, 0);
}
}
@@ -198,19 +239,17 @@
// Instantiate the list of unmatched clusters. Remove if we find track match
List<Cluster> unmatchedClusters = new ArrayList<Cluster>(clusters);
-
for (Track track : tracks) {
-
+
ReconstructedParticle particle = new BaseReconstructedParticle();
HepLorentzVector fourVector = new BasicHepLorentzVector(0, 0, 0, 0);
-
+
//
// Add all track information to the ReconstructedParticle
//
-
particle.addTrack(track);
-
+
// Set the momentum of the ReconstructedParticle
Hep3Vector momentum = new BasicHep3Vector(track.getTrackStates().get(0).getMomentum());
momentum = CoordinateTransformations.transformVectorToDetector(momentum);
@@ -230,7 +269,7 @@
// Get the position of the Ecal cluster
Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
-
+
// Extrapolate the track to the Ecal cluster position
Hep3Vector trackPosAtEcal = TrackUtils.extrapolateTrack(track, clusterPosition.z());
this.printDebug("Ecal cluster position: " + clusterPosition.toString());
@@ -257,17 +296,17 @@
this.printDebug("Track and Ecal cluster are in opposite volumes. Track Y @ ECAL = " + trackPosAtEcal.z());
continue;
}
-
+
// TODO: Checking whether r < rMax should be occuring within isMatch. isMatch
// is basically repeating a lot of the same code as above.
- if (r < rMax && isMatch(cluster,track)) {
- rMax = r;
- matchedCluster = cluster;
+ if (r < rMax && isMatch(cluster, track)) {
+ rMax = r;
+ matchedCluster = cluster;
}
}
-
+
if (matchedCluster != null) {
- particle.addCluster(matchedCluster);
+ particle.addCluster(matchedCluster);
((BasicHepLorentzVector) fourVector).setT(matchedCluster.getEnergy());
unmatchedClusters.remove(matchedCluster);
}
@@ -303,14 +342,14 @@
}
/**
- *
+ *
*/
boolean isMatch(Cluster cluster, Track track) {
-
- // Get the position of the Ecal cluster
- Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
-
- // Extrapolate the track to the Ecal cluster position
+
+ // Get the position of the Ecal cluster
+ Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
+
+ // Extrapolate the track to the Ecal cluster position
Hep3Vector trackPosAtEcal = TrackUtils.extrapolateTrack(track, clusterPosition.z());
double dxCut = 20.0;
@@ -318,10 +357,10 @@
if (Math.abs(trackPosAtEcal.x() - clusterPosition.x()) > dxCut)
return false;
-
+
if (Math.abs(trackPosAtEcal.y() - clusterPosition.y()) > dyCut)
return false;
-
+
return true;
}
}
java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle
--- java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriverIC.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/recon/src/main/java/org/hps/recon/particle/ReconParticleDriverIC.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -232,7 +232,7 @@
for (HPSEcalClusterIC cluster : unmatchedClusters) {
// Get the position of the Ecal cluster
- Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getPosition());
+ Hep3Vector clusterPosition = new BasicHep3Vector(cluster.getCorrPosition());
// Extrapolate the track to the Ecal cluster position
Hep3Vector trackPosAtEcal = TrackUtils.extrapolateTrack(track, clusterPosition.z());
@@ -283,6 +283,7 @@
double[] corrPosition = new double[3];
corrPosition[0] = corrP;
corrPosition[1] = rawP[1];
+ corrPosition[2] = rawP[2];
matchedCluster.setCorrPosition(corrPosition);
}// End of cluster position/energy corrections.
@@ -317,6 +318,7 @@
double[] corrPosition = new double[3];
corrPosition[0] = corrP;
corrPosition[1] = rawP[1];
+ corrPosition[2] = rawP[2];
unmatchedCluster.setCorrPosition(corrPosition);
}// End of cluster position/energy corrections.
java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineNoPileupRecon.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineNoPileupRecon.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,5 +1,7 @@
<!--
Offline reconstruction for 2014 (electron run) data.
+ Updated on 16Oct to include new clustering with corrections. -HS <[log in to unmask]>
+
@author Sho Uemura <[log in to unmask]>
@version $Id: HPS2014OfflineRecon.lcsim,v 1.7 2013/10/30 16:23:32 phansson Exp $
-->
@@ -58,12 +60,12 @@
<useTimestamps>true</useTimestamps>
<useTruthTime>false</useTruthTime>
</driver>
- <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
+ <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterIC">
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
<timeCut>true</timeCut>
</driver>
- <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
+ <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriverIC">
</driver>
<driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,5 +1,6 @@
<!--
Offline reconstruction for 2014 (electron run) data.
+ Updated on 16Oct to include new clustering with corrections. -HS <[log in to unmask]>
@author Sho Uemura <[log in to unmask]>
@version $Id: HPS2014OfflineRecon.lcsim,v 1.7 2013/10/30 16:23:32 phansson Exp $
-->
@@ -62,12 +63,12 @@
<useTimestamps>true</useTimestamps>
<useTruthTime>false</useTruthTime>
</driver>
- <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
+ <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterIC">
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
<timeCut>true</timeCut>
</driver>
- <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
+ <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriverIC">
</driver>
<driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,5 +1,7 @@
<!--
Offline reconstruction for 2014 (electron run) data.
+ Updated on 16Oct to include new clustering with corrections. -HS <[log in to unmask]>
+
@author Sho Uemura <[log in to unmask]>
@version $Id: HPS2014OfflineRecon.lcsim,v 1.7 2013/10/30 16:23:32 phansson Exp $
-->
@@ -61,12 +63,12 @@
<useTimestamps>false</useTimestamps>
<useTruthTime>true</useTruthTime>
</driver>
- <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
+ <driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterIC">
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
<timeCut>true</timeCut>
</driver>
- <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
+ <driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriverIC">
</driver>
<driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/SimpleMCRecon.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/recon/SimpleMCRecon.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,3 +1,11 @@
+<!--
+ This is a steering file for running a simplified version of the reconstruction directly
+ on LCIO files generated with SLIC, which only contain MCParticle, SimCalorimeterHit,
+ and SimTrackerHit collections.
+
+ It should NOT be used for production purposes and is primarily intended for testing,
+ or for performing a quick analysis on MC data without running the trigger simulation.
+-->
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<control>
@@ -5,32 +13,30 @@
<printDriversDetailed>true</printDriversDetailed>
</control>
<execute>
+ <!-- Print out event numbers. -->
<driver name="EventMarkerDriver"/>
+ <!-- Load the text based conditions. -->
<driver name="CalibrationDriver"/>
+ <!-- Simple tracker hit digi. -->
<driver name="TrackerDigiDriver"/>
+ <!-- Create tracker hits. -->
<driver name="HelicalTrackHitDriver"/>
+ <!-- Find tracks. -->
<driver name="TrackerReconDriver"/>
- <!-- FIXME: This should be changed to use the current ECAL clustering algorithm. -->
- <driver name="SimpleEcalClusterer"/>
-<!--
- <driver name="EcalRawConverter" />
- <driver name="EcalClusterer" />
--->
+ <!-- Create ecal clusters. -->
+ <driver name="EcalClusterer"/>
+ <!-- Create recon particles. -->
<driver name="ReconParticle" />
-<!--
- <driver name="TrackDataDriver" />
--->
- <driver name="GBLDriver"/>
+ <!-- Write out a recon LCIO file. -->
<driver name="LCIOWriter"/>
+ <!-- Cleanup the readout collections on the detector after each event. -->
+ <driver name="CleanupDriver" />
</execute>
<drivers>
- <driver name="SimpleEcalClusterer" type="org.hps.recon.ecal.EcalClusterer">
- <ecalCollectionName>EcalHits</ecalCollectionName>
- </driver>
- <driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver"/>
<driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
<eventInterval>10</eventInterval>
</driver>
+ <driver name="CalibrationDriver" type="org.hps.conditions.deprecated.CalibrationDriver"/>
<driver name="TrackerDigiDriver" type="org.hps.recon.tracking.SimpleTrackerDigiDriver">
<debug>false</debug>
</driver>
@@ -43,31 +49,15 @@
<debug>false</debug>
<strategyResource>/org/hps/recon/tracking/strategies/HPS-Full.xml</strategyResource>
</driver>
- <driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
- <debug>1</debug>
- <isMC>false</isMC>
- <gblFileName></gblFileName>
- </driver>
-<!--
- <driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
- <ecalCollectionName>EcalCalHits</ecalCollectionName>
- <use2014Gain>false</use2014Gain>
- <useTimestamps>false</useTimestamps>
- <useTruthTime>true</useTruthTime>
- </driver>
<driver name="EcalClusterer" type="org.hps.recon.ecal.EcalClusterICBasic">
<ecalName>Ecal</ecalName>
- <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ <ecalCollectionName>EcalHits</ecalCollectionName>
<timeCut>false</timeCut>
- </driver>
--->
+ </driver>
<driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver"/>
-<!--
- <driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
--->
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
<outputFilePath>${outputFile}</outputFilePath>
</driver>
+ <driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
</drivers>
-</lcsim>
-
+</lcsim>
\ No newline at end of file
java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitor.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitor.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -6,26 +6,30 @@
xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<execute>
<driver name="EventMarkerDriver"/>
- <driver name="DQMDatabaseDriver"/>
+<!-- <driver name="DQMDatabaseDriver"/> -->
<driver name="CalibrationDriver"/>
<driver name="RawTrackerHitSensorSetup"/>
- <driver name="BadChannelFilter" />
+<!-- <driver name="BadChannelFilter" /> -->
<driver name="RawTrackerHitFitterDriver" />
<driver name="TrackerHitDriver"/>
<driver name="HelicalTrackHitDriver"/>
<driver name="TrackerReconDriver"/>
- <driver name="TrackDataDriver"/>
+ <driver name="TrackDataDriver"/>
<driver name="EcalRawConverter" />
- <driver name="EcalClusterer" />
- <driver name="ReconParticle" />
- <driver name="SVTMonitoring"/>
+ <driver name="EcalClusterer" />
+ <driver name="ReconParticle" />
+<!-- <driver name="SVTMonitoring"/>
<driver name="SVTHitMCEfficiency"/>
<driver name="TrackingMonitoring"/>
<driver name="TrackingResiduals"/>
<driver name="TrackMCEfficiency"/>
<driver name="FinalStateMonitoring"/>
- <driver name="V0Monitoring"/>
- <driver name="AidaSaveDriver"/>
+ <driver name="V0Monitoring"/> -->
+ <driver name="AddBeamSpotToTrack"/>
+ <driver name="BSTrackReconParticle" />
+ <driver name="BeamSpotTrackAnalysis"/>
+ <driver name="AidaSaveDriver"/>
+ <driver name="LCIOWriter"/>
<driver name="CleanupDriver"/>
</execute>
<drivers>
@@ -68,12 +72,26 @@
<ecalName>Ecal</ecalName>
<ecalCollectionName>EcalCalHits</ecalCollectionName>
</driver>
+ <driver name="AddBeamSpotToTrack" type="org.hps.users.mgraham.AddBeamSpotToTrack">
+ </driver>
+ <driver name="BeamSpotTrackAnalysis" type="org.hps.users.mgraham.BeamSpotTrackAnalysis">
+ </driver>
<driver name="ReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
- <debug>false</debug>
+ <debug>true</debug>
</driver>
- <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
- <outputFilePath>${outputFile}.slcio</outputFilePath>
+
+ <driver name="BSTrackReconParticle" type="org.hps.recon.particle.HpsReconParticleDriver">
+ <debug>true</debug>
+ <tracksCollectionName>BeamSpotTracks</tracksCollectionName>
+ <finalStateParticlesColName>BSFinalStateParticles</finalStateParticlesColName>
+ <unconstrainedV0CandidatesColName>BSUnconstrainedV0Candidates</unconstrainedV0CandidatesColName>
+ <beamConV0CandidatesColName>BSBeamspotConstrainedV0Candidates</beamConV0CandidatesColName>
+ <targetConV0CandidatesColName>BSTargetConstrainedV0Candidates</targetConV0CandidatesColName>
+ <unconstrainedV0VerticesColName>BSUnconstrainedV0Vertices</unconstrainedV0VerticesColName>
+ <beamConV0VerticesColName>BSBeamspotConstrainedV0Vertices</beamConV0VerticesColName>
+ <targetConV0VerticesColName>BSTargetConstrainedV0Vertices</targetConV0VerticesColName>
</driver>
+
<driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
<outputFileName>./conditions_test_plots.root</outputFileName>
</driver>
@@ -105,6 +123,9 @@
<overwriteDB>false</overwriteDB>
</driver>
<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
-
+ <driver name="LCIOWriter"
+ type="org.lcsim.util.loop.LCIODriver">
+ <outputFilePath>blah.slcio</outputFilePath>
+ </driver>
</drivers>
</lcsim>
java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham
--- java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitorOnRecon.lcsim 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/steering-files/src/main/resources/org/hps/steering/users/mgraham/DataQualityMonitorOnRecon.lcsim 2014-10-19 06:58:06 UTC (rev 1245)
@@ -80,28 +80,34 @@
<driver name="SVTMonitoring" type="org.hps.analysis.dataquality.SvtMonitoring">
<runNumber>${runNumber}</runNumber>
<overwriteDB>false</overwriteDB>
+ <printDQMStrings>true</printDQMStrings>
</driver>
<driver name="TrackingMonitoring" type="org.hps.analysis.dataquality.TrackingMonitoring">
<runNumber>${runNumber}</runNumber>
<overwriteDB>false</overwriteDB>
+ <printDQMStrings>true</printDQMStrings>
</driver>
<driver name="TrackingResiduals" type="org.hps.analysis.dataquality.TrackingResiduals">
<runNumber>${runNumber}</runNumber>
<overwriteDB>false</overwriteDB>
+ <printDQMStrings>true</printDQMStrings>
</driver>
<driver name="FinalStateMonitoring" type="org.hps.analysis.dataquality.FinalStateMonitoring">
<runNumber>${runNumber}</runNumber>
<overwriteDB>false</overwriteDB>
+ <printDQMStrings>true</printDQMStrings>
</driver>
<driver name="TrackMCEfficiency" type="org.hps.analysis.dataquality.TrackMCEfficiency">
<overwriteDB>false</overwriteDB>
+ <printDQMStrings>true</printDQMStrings>
</driver>
<driver name="SVTHitMCEfficiency" type="org.hps.analysis.dataquality.SVTHitMCEfficiency">
<overwriteDB>false</overwriteDB>
- <printDQMStrings>false</printDQMStrings>
+ <printDQMStrings>true</printDQMStrings>
</driver>
<driver name="V0Monitoring" type="org.hps.analysis.dataquality.V0Monitoring">
<runNumber>${runNumber}</runNumber>
+ <printDQMStrings>true</printDQMStrings>
<overwriteDB>false</overwriteDB>
</driver>
<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
java/branches/hps-java_HPSJAVA-88/tracking
--- java/branches/hps-java_HPSJAVA-88/tracking/pom.xml 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/pom.xml 2014-10-19 06:58:06 UTC (rev 1245)
@@ -23,6 +23,7 @@
<configuration>
<excludes>
<exclude>org/hps/recon/tracking/TruthResidualTest.java</exclude>
+ <exclude>org/hps/recon/tracking/TrackRecoFromScratchTest.java</exclude>
<!-- Test input LCIO file is missing for next two. -->
<exclude>org/hps/recon/tracking/TestRunTrackReconTest.java</exclude>
<exclude>org/hps/recon/tracking/HelicalTrackHitDriverTest.java</exclude>
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblFitter.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblFitter.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -192,8 +192,8 @@
Matrix mDirT = MatrixOp.transposed(mDir); //new BasicMatrix(MatrixOp.transposed(mDir));
if (_debug) {
- System.out.printf(" mDir \n%s\n", this.getClass().getSimpleName(), mDir.toString());
- System.out.printf(" mDirT \n%s\n", this.getClass().getSimpleName(), mDirT.toString());
+ System.out.printf(" mDir \n%s\n%s\n", this.getClass().getSimpleName(), mDir.toString());
+ System.out.printf(" mDirT \n%s\n%s\n", this.getClass().getSimpleName(), mDirT.toString());
}
// Track direction
@@ -213,7 +213,7 @@
uvDir.setElement(1, 2, cosLambda);
if (_debug) {
- System.out.printf(" uvDir \n%s\n", this.getClass().getSimpleName(), uvDir.toString());
+ System.out.printf(" uvDir \n%s\n%s\n", this.getClass().getSimpleName(), uvDir.toString());
}
// projection from measurement to local (curvilinear uv) directions (duv/dm)
@@ -224,8 +224,8 @@
//proL2m_list[strip->GetId()] = new TMatrixD(proL2m);
if (_debug) {
- System.out.printf(" proM2l \n%s\n", this.getClass().getSimpleName(), proM2l.toString());
- System.out.printf(" proL2m \n%s\n", this.getClass().getSimpleName(), proL2m.toString());
+ System.out.printf(" proM2l \n%s\n%s\n", this.getClass().getSimpleName(), proM2l.toString());
+ System.out.printf(" proL2m \n%s\n%s\n", this.getClass().getSimpleName(), proL2m.toString());
}
// measurement/residual in the measurement system
@@ -404,6 +404,12 @@
return -3;
}
+ // print the trajectory
+ if(_debug)
+ {
+ System.out.println(" Gbl Trajectory ");
+ _traj.printPoints(4);
+ }
// fit trajectory
_traj.fit(m_chi2, m_ndf, m_lost_weight);
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblRefitter.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/gbl/HpsGblRefitter.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -23,13 +23,13 @@
import org.hps.recon.tracking.gbl.matrix.Vector;
/**
- * A Driver which refits tracks using GBL Modeled on the hps-dst code written by
- * Per Hansson and Omar Moreno Requires the GBL Collections and Relations to be
- * present in the event.
+ * A Driver which refits tracks using GBL.
+ * Modeled on the hps-dst code written by Per Hansson and Omar Moreno.
+ * Requires the GBL Collections and Relations to be present in the event.
*
* @author Norman A Graf
*
- * @version $Id:
+ * @version $Id$
*/
public class HpsGblRefitter extends Driver
{
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrack.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrack.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -1,20 +1,12 @@
package org.hps.recon.tracking.nobfield;
import hep.physics.matrix.SymmetricMatrix;
-import static java.lang.Math.abs;
-import static java.lang.Math.signum;
import java.util.ArrayList;
import java.util.List;
-import org.lcsim.constants.Constants;
import org.lcsim.event.LCIOParameters;
import org.lcsim.event.Track;
import org.lcsim.event.TrackState;
import org.lcsim.event.TrackerHit;
-import static org.lcsim.event.base.BaseTrack.D0;
-import static org.lcsim.event.base.BaseTrack.OMEGA;
-import static org.lcsim.event.base.BaseTrack.PHI;
-import static org.lcsim.event.base.BaseTrack.TANLAMBDA;
-import static org.lcsim.event.base.BaseTrack.Z0;
import org.lcsim.event.base.BaseTrackState;
/**
@@ -31,6 +23,9 @@
protected List<TrackState> _trackStates;
protected double[] _chi2 = new double[2];
protected double[] _parameters = new double[5];
+ protected double[] _momentum = new double[3];
+ protected double[] _ref = new double[3];
+ protected int _ndf;
// Parameter ordering.
public static final int x0 = LCIOParameters.ParameterName.d0.ordinal();
public static final int slopeXZ = LCIOParameters.ParameterName.phi0.ordinal();
@@ -139,59 +134,59 @@
@Override
public int getCharge() {
- throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
@Override
public double[] getReferencePoint() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return _ref;
}
@Override
public double getReferencePointX() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return _ref[0];
}
@Override
public double getReferencePointY() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return _ref[1];
}
@Override
public double getReferencePointZ() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return _ref[2];
}
@Override
public boolean isReferencePointPCA() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return false;
}
@Override
public double[] getMomentum() {
- throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+ return _momentum;
}
@Override
public double getPX() {
- throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
@Override
public double getPY() {
- throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
@Override
public double getPZ() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
@Override
public boolean fitSuccess() {
throw new UnsupportedOperationException("StraightTrack...no momentum measured."); //To change body of generated methods, choose Tools | Templates.
}
-
+
@Override
public double getTrackParameter(int i) {
return _parameters[i];
@@ -227,24 +222,32 @@
@Override
public int getNDF() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return _ndf;
}
+ public void setNDF(int ndf) {
+ _ndf = ndf;
+ }
+
@Override
public double getdEdx() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
@Override
public double getdEdxError() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
@Override
public double getRadiusOfInnermostHit() {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ return -999;
}
+// public TrackDirection getTrackDirection(){
+
+ // }
+
public String toString() {
String className = getClass().getName();
int lastDot = className.lastIndexOf('.');
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrackFinder.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/StraightTrackFinder.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -3,7 +3,10 @@
import java.util.ArrayList;
import java.util.List;
import org.hps.recon.tracking.HitCollectionUtilites;
+import org.hps.recon.tracking.nobfield.TrackCollectionUtilities;
import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.fit.line.SlopeInterceptLineFit;
import org.lcsim.fit.line.SlopeInterceptLineFitter;
@@ -17,7 +20,7 @@
public class StraightTrackFinder extends Driver {
// Debug flag.
- private boolean debug = false;
+ private boolean debug = true;
// Tracks found across all events.
int ntracks = 0;
// Number of events processed.
@@ -36,9 +39,10 @@
private int _iterativeConfirmed = 3;
// use HPS implementation of material manager
private boolean _useHPSMaterialManager = true;
- // enable the use of sectoring using sector binning in SeedTracker
- private boolean _applySectorBinning = true;
+ private TrackChecker checkerTrack = new TrackChecker();
+ private HitOnTrackChecker checkerHOT = new HitOnTrackChecker();
+
private SlopeInterceptLineFitter _lfitter = new SlopeInterceptLineFitter();
public void setDebug(boolean debug) {
@@ -76,9 +80,6 @@
this._useHPSMaterialManager = useHPSMaterialManager;
}
- /**
- * This is used to setup the Drivers after XML config.
- */
@Override
public void detectorChanged(Detector detector) {
// Cache Detector object.
@@ -93,68 +94,44 @@
return;
List<HelicalTrackHit> allHits = event.get(HelicalTrackHit.class, stInputCollectionName);
- if (allHits.size() == 0)
- return;
+
List<List<HelicalTrackHit>> splitTopBot = HitCollectionUtilites.SplitTopBottomHits(allHits);
// will always have top(=0) and bottom(=1) lists (though they may be empty)
List<HelicalTrackHit> topHits = splitTopBot.get(0);
List<HelicalTrackHit> bottomHits = splitTopBot.get(1);
- //a simple strategy...eventually implement SeedTracker strategies
+ //a simple strategy...eventually implement SeedTracker strategies?
int nTotLayers = 6;
- int[] layerStrategy = {1, 3, 5, 7, 9, 11};
+ int nSeed = 3;
+ int nExtra = nTotLayers - nSeed;
+ int[] seedStrategy = {1, 3, 5};
+ int[] extendStrategy = {7, 9, 11};
int minHits = 4;
- List<StraightTrack> trackList = new ArrayList<>();
-//sort the hits for some reason
-// List<List<HelicalTrackHit>> sortedTopHits=new ArrayList<>();
-// List<List<HelicalTrackHit>> sortedBottomHits=new ArrayList<>();
-// for(int i = 0;i<nTotLayers;i++){
-// List<HelicalTrackHit> sortedTop=HitCollectionUtilites.GetSortedHits(topHits,layerStrategy[i]);
-// sortedTopHits.add(sortedTop);
-// List<HelicalTrackHit> sortedBot=HitCollectionUtilites.GetSortedHits(bottomHits,layerStrategy[i]);
-// sortedBottomHits.add(sortedBot);
-// }
-//
- if (topHits.size() < 4)
- return;
- //first do top...
- for (HelicalTrackHit h1 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[0])) {
- if (debug)
- System.out.println(h1.toString());
- for (HelicalTrackHit h2 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[1])) {
- if (debug)
- System.out.println(h2.toString());
- for (HelicalTrackHit h3 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[2])) {
- if (debug)
- System.out.println(h3.toString());
- for (HelicalTrackHit h4 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[3])) {
- if (debug)
- System.out.println(h4.toString());
- for (HelicalTrackHit h5 : HitCollectionUtilites.GetSortedHits(topHits, layerStrategy[4])) {
- if (debug)
- System.out.println(h5.toString());
- // Setup for the line fit
- List<HelicalTrackHit> testTrack = new ArrayList<HelicalTrackHit>();
- testTrack.add(h1);
- testTrack.add(h2);
- testTrack.add(h3);
- testTrack.add(h4);
- testTrack.add(h5);
- SlopeInterceptLineFit xfit = FitToLine(testTrack, 0);
- SlopeInterceptLineFit yfit = FitToLine(testTrack, 1);
- if (debug)
- System.out.println("xfit = " + xfit.toString());
- if (debug)
- System.out.println("yfit = " + yfit.toString());
- StraightTrack trk = makeTrack(xfit, yfit);
- trackList.add(trk);
- }
- }
- }
- }
+ TrackChecker checkerTrack = new TrackChecker();
+ HitOnTrackChecker checkerHOT = new HitOnTrackChecker();
+
+// List<StraightTrack> seeds = getSeeds(seedStrategy, topHits);
+ List<StraightTrack> seeds = getSeeds(seedStrategy, allHits);
+ System.out.println("Found " + seeds.size() + " seeds");
+
+ List<StraightTrack> extendedSeeds = new ArrayList<>();
+ for (StraightTrack seed : seeds)
+ extendTrack(extendStrategy, 0, seed, allHits, extendedSeeds);
+// extendTrack(extendStrategy, 0, seed, topHits, extendedSeeds);
+
+ System.out.println("Prepruning :Found " + extendedSeeds.size() + " extended seeds");
+
+ //remove tracks with more than m overlaping hits...pick best chi2
+ //...
+ List<StraightTrack> finalTracks = new ArrayList<>();
+ for (StraightTrack track : extendedSeeds) {
+ boolean isbest = TrackCollectionUtilities.pruneTrackList((ArrayList<Track>) (ArrayList) extendedSeeds, track, 1);
+ if (isbest)
+ finalTracks.add(track);
}
- event.put(trackCollectionName, trackList);
+ System.out.println("Postpruning :Found " + finalTracks.size() + " extended seeds");
+ event.put(trackCollectionName, finalTracks);
}
public SlopeInterceptLineFit FitToLine(List<HelicalTrackHit> hits, int projection) {
@@ -188,17 +165,108 @@
}
- private StraightTrack makeTrack(SlopeInterceptLineFit xfit, SlopeInterceptLineFit yfit) {
+ private StraightTrack makeTrack(List<HelicalTrackHit> hits, SlopeInterceptLineFit xfit, SlopeInterceptLineFit yfit) {
StraightTrack track = new StraightTrack();
- double[] pars = {-99, -99, -99, -99};
+ double[] pars = {-99, -99, -99, -99, -99};//this needs to have 5 fields to implement Track
pars[0] = xfit.intercept();
pars[1] = xfit.slope();
pars[2] = yfit.intercept();
pars[3] = yfit.slope();
track.setTrackParameters(pars);
track.setChi2(xfit.chisquared(), yfit.chisquared());
+ track.setNDF(xfit.ndf()+yfit.ndf());
+ for (TrackerHit hit : hits)
+ track.addHit(hit);
// TODO: set convariance,
return track;
}
+ private StraightTrack makeTrack(List<HelicalTrackHit> hits) {
+ SlopeInterceptLineFit xfit = FitToLine(hits, 0);
+ SlopeInterceptLineFit yfit = FitToLine(hits, 1);
+ if (debug)
+ System.out.println("xfit = " + xfit.toString());
+ if (debug)
+ System.out.println("yfit = " + yfit.toString());
+ return makeTrack(hits, xfit, yfit);
+ }
+
+ /*
+ * Get all seed combinations that make sense (pass checkSeed)
+ * currently, just assume there are 3 seed layers (don't have to be first 3 though.
+ */
+ private List<StraightTrack> getSeeds(int[] seedLayers, List<HelicalTrackHit> hits) {
+ List<StraightTrack> seeds = new ArrayList<>();
+ int nseeds = seedLayers.length;
+ if (nseeds == 3)//TODO ... set this up so that this works for arbitrary nseeds...use recursion
+ for (HelicalTrackHit h1 : HitCollectionUtilites.GetSortedHits(hits, seedLayers[0])) {
+ if (debug)
+ System.out.println(h1.toString());
+ for (HelicalTrackHit h2 : HitCollectionUtilites.GetSortedHits(hits, seedLayers[1])) {
+ if (debug)
+ System.out.println(h2.toString());
+ for (HelicalTrackHit h3 : HitCollectionUtilites.GetSortedHits(hits, seedLayers[2])) {
+ if (debug)
+ System.out.println(h3.toString());
+ //make a 3-hit test track...see if it passes CheckTrack
+ List<HelicalTrackHit> testTrack = new ArrayList<HelicalTrackHit>();
+ testTrack.add(h1);
+ testTrack.add(h2);
+ testTrack.add(h3);
+ StraightTrack trk = makeTrack(testTrack);
+ if (!checkerTrack.checkSeed(trk))
+ break;
+ seeds.add(trk);
+ }
+ }
+ }
+ return seeds;
+ }
+
+ /*
+ * recursively extend the seeds through all of the extend layers..
+ * ...I think this should work...
+ */
+ private void extendTrack(int[] extendLayers, int n, StraightTrack origTrack, List<HelicalTrackHit> hits, List<StraightTrack> trackList) {
+ if (n >= extendLayers.length) {
+ if (debug)
+ System.out.println("Done finding this track through all " + n + " extra layers");
+ trackList.add(origTrack);
+ return;
+ }
+
+ boolean cannotExtendThisLayer = true;
+ if (debug)
+ System.out.println("Extending to layer " + extendLayers[n]);
+ for (HelicalTrackHit h : HitCollectionUtilites.GetSortedHits(hits, extendLayers[n])) {
+ //let's see if this hit makes sense to add to original track
+ if (!checkerHOT.checkNewHit(origTrack, h))
+ continue;
+
+ List<TrackerHit> origHits = origTrack.getTrackerHits();
+ //make a new list and cast them as HelicalTrackHits (Track only stores TrackerHits)
+ List<HelicalTrackHit> newHits = new ArrayList<>();
+ for (TrackerHit oh : origHits) {
+ HelicalTrackHit hoh = (HelicalTrackHit) oh;
+ System.out.println(hoh.getPosition()[0]);
+ newHits.add(hoh);
+ }
+ //add the new hit to the list & make new track
+ newHits.add(h);
+ StraightTrack newTrack = makeTrack(newHits);
+ //check the new track after we've added this hit
+ if (!checkerTrack.checkTrack(newTrack))
+ continue;
+ cannotExtendThisLayer = false;
+ //extend again to the next layer
+ extendTrack(extendLayers, n + 1, newTrack, hits, trackList);
+ }
+
+ //didn't find any hits in this layer that match the track...but let's try the next one
+ if (cannotExtendThisLayer)
+ extendTrack(extendLayers, n + 1, origTrack, hits, trackList);
+
+ return;
+ }
+
}
java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield
--- java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/TrackChecker.java 2014-10-19 06:41:14 UTC (rev 1244)
+++ java/branches/hps-java_HPSJAVA-88/tracking/src/main/java/org/hps/recon/tracking/nobfield/TrackChecker.java 2014-10-19 06:58:06 UTC (rev 1245)
@@ -19,4 +19,9 @@
return true;
}
+ public boolean checkSeed(StraightTrack trk) {
+
+ return true;
+ }
+
}
SVNspam 0.1