6 modified files
lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
diff -u -r1.1 -r1.2
--- IParticleFilter.java 17 Jul 2008 00:52:39 -0000 1.1
+++ IParticleFilter.java 17 Jul 2008 19:52:01 -0000 1.2
@@ -5,6 +5,7 @@
package org.lcsim.contrib.seedtracker.strategybuilder;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
/**
@@ -20,6 +21,16 @@
*/
public interface IParticleFilter {
+ /**
+ * Returns true if the MCParticle passes the filter, false otherwise
+ * @param p The test MCParticle
+ * @return
+ */
public boolean passes(MCParticle p);
-
+
+ /**
+ * This method is called for each event by StrategyBuilder.
+ * @param event
+ */
+ public void setEvent(EventHeader event);
}
lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
diff -u -r1.2 -r1.3
--- StrategyBasedFilter.java 17 Jul 2008 17:55:27 -0000 1.2
+++ StrategyBasedFilter.java 17 Jul 2008 19:52:01 -0000 1.3
@@ -5,7 +5,10 @@
package org.lcsim.contrib.seedtracker.strategybuilder;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
import org.lcsim.contrib.seedtracker.SeedStrategy;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
import org.lcsim.fit.helicaltrack.HelixParamCalculator;
@@ -18,7 +21,9 @@
double pt;
double dca;
double z0;
- double b = 5.0;
+ double b;
+ Hep3Vector ip = new BasicHep3Vector(0., 0., 0.);
+
public StrategyBasedFilter(SeedStrategy strategy){
pt = strategy.getMinPT();
dca = strategy.getMaxDCA();
@@ -26,9 +31,7 @@
}
- public void setBField(double b_field){
- b = b_field;
- }
+
public boolean passes(MCParticle p) {
HelixParamCalculator calc = new HelixParamCalculator(p, b);
return (
@@ -37,5 +40,9 @@
calc.getMCTransverseMomentum() > pt
);
}
+
+ public void setEvent(EventHeader event){
+ b = event.getDetector().getFieldMap().getField(ip).z();
+ }
}
lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
diff -u -r1.3 -r1.4
--- RunStrategyBuilder.java 17 Jul 2008 17:55:27 -0000 1.3
+++ RunStrategyBuilder.java 17 Jul 2008 19:52:01 -0000 1.4
@@ -7,6 +7,7 @@
import java.io.File;
import org.lcsim.contrib.seedtracker.StrategyXMLUtils;
+import org.lcsim.util.Driver;
import org.lcsim.util.loop.LCSimLoop;
/**
@@ -36,6 +37,7 @@
String lwfn = "";
int mintrks = 3;
String filterClassName = "";
+ String altDriver = "";
//parse arguments.. if error print usage
try{
int no_flag_counter = 0;
@@ -65,6 +67,8 @@
mintrks = Integer.valueOf(args[++i]);
} else if (arg.equals("-f")) {
filterClassName = args[++i];
+ } else if (arg.equals("-a")) {
+ altDriver =args[++i];
} else if (arg.startsWith("-")){
throw new Exception();
} else {
@@ -79,7 +83,30 @@
printUsage();
System.exit(1);
}
- StrategyBuilder builder = new StrategyBuilder(); // prevent compiler from complaining that driver might not have been initialized.
+ IStrategyBuilder builder = new StrategyBuilder();
+
+ if (altDriver.length() > 0) {
+ try {
+ builder = (IStrategyBuilder) Class.forName(altDriver).newInstance();
+ } catch (ClassNotFoundException cfne) {
+ System.out.println("Class "+altDriver+ " not found :'( Exiting.");
+ System.exit(3);
+ } catch (InstantiationException ie){
+ System.out.println("Class "+altDriver+ " could not be instantiated. Does the constructor take arguments? Exiting.");
+ System.exit(4);
+ } catch (IllegalAccessException iae){
+ System.out.println("IllegalAccessException? WTF does that mean? Exiting.");
+ System.exit(5);
+ } catch (ClassCastException cce){
+ System.out.println("Unable to cast "+altDriver+ " as a IStrategyBuilder. Exiting");
+ System.exit(6);
+ }
+
+ if (!(builder instanceof Driver)) {
+ System.out.println("Alternative driver must extend Driver. Exiting");
+ System.exit(14123);
+ }
+ }
builder.setVerbose(verbose);
builder.setDivideByTwoFlag(flag);
@@ -102,23 +129,23 @@
builder.setParticleFilter((IParticleFilter) Class.forName(filterClassName).newInstance());
} catch (ClassNotFoundException cfne) {
System.out.println("Class "+filterClassName+ " not found :'( Exiting.");
- System.exit(3);
+ System.exit(123);
} catch (InstantiationException ie){
System.out.println("Class "+filterClassName+ " could not be instantiated. Does the constructor take arguments? Exiting.");
- System.exit(4);
+ System.exit(234);
} catch (IllegalAccessException iae){
System.out.println("IllegalAccessException? WTF does that mean? Exiting.");
- System.exit(5);
+ System.exit(345);
} catch (ClassCastException cce){
System.out.println("Unable to cast "+filterClassName+ " as a IParticleFilter. Exiting");
- System.exit(6);
+ System.exit(456);
}
}
File file = new File(filename);
if (!file.exists()) {
System.out.println("Cannot find data file "+file.toString()+". Exiting. ");
- System.exit(7);
+ System.exit(7);
}
@@ -130,7 +157,7 @@
LCSimLoop loop = new LCSimLoop();
loop.setLCIORecordSource(file);
- loop.add( builder );
+ loop.add( (Driver) builder );
loop.loop(numEvents, null);
loop.dispose();
} catch (Exception e){
@@ -156,6 +183,9 @@
System.out.println(" -f FILTER_CLASS\t\tSpecify an MCParticle filter by naming a " +
"\n\t\t\t\t fully qualified (i.e. org.lcsim.etc) class. \n\t\t\t\t By default, " +
"a filter based on the prototype \n\t\t\t\t strategy cutoffs is used.");
+ System.out.println(" -a ALTERNATIVE_DRIVER\t\tUse an alternative driver instead of \n\t\t\t\t the default StrategyBuilder. " +
+ "Must implement\n\t\t\t\t IStrategyBuilder and extend Driver. UNTESTED.\n\t\t\t\t " +
+ "Fully qualified class name must be used \n\t\t\t\t (i.e. org.lcsim.etc)");
}
}
lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
diff -u -r1.3 -r1.4
--- StrategyBuilder.java 17 Jul 2008 17:55:27 -0000 1.3
+++ StrategyBuilder.java 17 Jul 2008 19:52:01 -0000 1.4
@@ -5,8 +5,6 @@
package org.lcsim.contrib.seedtracker.strategybuilder;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
@@ -35,7 +33,10 @@
import org.lcsim.util.Driver;
/**
- * StrategyBuilder generatew
+ * StrategyBuilder automatically generates strategies for a detector by
+ * seeing what layers MCParticles tend to go through.
+ *
+ * See interface for public method doc.
*
* @author cozzy
*/
@@ -60,18 +61,25 @@
private List<Set<DumbLayer>> setlist = new ArrayList<Set<DumbLayer>>();
private String detectorName;
private IParticleFilter filter;
- private Hep3Vector ip = new BasicHep3Vector(0.,0.,0.);
+ @Override
+ protected void startOfData(){
+ //Use default filter if none is specified
+ if (filter==null){
+ filter = new StrategyBasedFilter(prototype);
+ }
+ }
@Override
protected void process(EventHeader event){
super.process(event);
-
if (verbose) System.out.println("Processing event "+event.getEventNumber());
+ filter.setEvent(event);
+
//Build MC Map from SimTrackerHits
Map<MCParticle, List<SimTrackerHit>> mcmap = new HashMap<MCParticle, List<SimTrackerHit>>();
@@ -295,14 +303,6 @@
@Override
protected void detectorChanged(Detector detector){
detectorName = detector.getDetectorName();
-
- //if no filter defined, use StrategyBasedFilter
- if (filter==null){
- filter = new StrategyBasedFilter(prototype);
- double b = detector.getFieldMap().getField(ip).z();
- ((StrategyBasedFilter) filter).setBField(b);
- }
-
}
lcsim/src/org/lcsim/contrib/seedtracker/strategybuilder
diff -u -r1.1 -r1.2
--- AllPassFilter.java 17 Jul 2008 00:52:39 -0000 1.1
+++ AllPassFilter.java 17 Jul 2008 19:52:01 -0000 1.2
@@ -5,6 +5,7 @@
package org.lcsim.contrib.seedtracker.strategybuilder;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
/**
@@ -17,4 +18,7 @@
return true;
}
+ public void setEvent(EventHeader event){
+ return;
+ }
}
lcsim/src/org/lcsim/contrib/seedtracker/digiexample
diff -u -r1.3 -r1.4
--- DigiSeedTrackerDriver.java 17 Jul 2008 00:52:39 -0000 1.3
+++ DigiSeedTrackerDriver.java 17 Jul 2008 19:52:01 -0000 1.4
@@ -19,7 +19,7 @@
*/
public class DigiSeedTrackerDriver extends Driver{
- private static final String strategy_file = "resources/org/lcsim/contrib/seedtracker/seedstrategy" +
+ private static final String strategy_file = "resources/org/lcsim/contrib/seedtracker/strategybuilder" +
"/strategies/autogen_100GeV_singleMuon_sid01_planar_tracker.xml";
public DigiSeedTrackerDriver() {
CVSspam 0.2.8