Below is the standard ExampleVTX, rewritten in Java:
import hep.ilc.marlin.jni.Parameters;
import hep.ilc.marlin.jni.ProcessorMgr;
import hep.lcio.event.LCEvent;
import hep.lcio.event.LCRunHeader;
import hep.lcio.implementation.io.LCFactory;
import hep.lcio.io.LCEventListener;
import hep.lcio.io.LCReader;
import hep.lcio.io.LCRunListener;
public class ExampleVTX {
private ProcessorMgr mgr;
public ExampleVTX() {
mgr = ProcessorMgr.instance();
}
private void setup() {
System.out.println("Start Setup ExampleVTX");
Parameters vtxParameters = new Parameters();
vtxParameters.add("CollectionName", "vxd01_VXD");
vtxParameters.add("Debug", false);
vtxParameters.add("PixelSizeX", 0.025);
vtxParameters.add("PixelSizeY", 0.025);
vtxParameters.add("LayerThickness", 0.05);
vtxParameters.add("Threshold", 200);
vtxParameters.add("CutOnDeltaRays", 0.05);
vtxParameters.add("TanLorentz", 0.8);
vtxParameters.add("ElectronicNoise", 100);
vtxParameters.add("ElectronsPerKeV", 270);
vtxParameters.add("EnergyLoss", 370);
vtxParameters.add("SegmentLength", 0.005);
vtxParameters.add("GenerateBackground", false);
// Parameters for 50 um thick layer
// vtxParameters.add("LadderRadius", new double[] { 15.3072, 26.3072, 38.3072, 49.3072, 60.3072 });
// vtxParameters.add("ActiveLadderOffset", new double[] { 1.46756, 1.41122, 2.59339, 3.62327, 4.46110 });
// Parameters for 450 um
vtxParameters.add("LadderRadius", new double[] { 15.5072, 26.5072, 38.5072, 49.5072, 60.5072 });
vtxParameters.add("ActiveLadderOffset", new double[] { 1.8676, 1.8112, 3.2862, 4.5890, 5.6922 });
mgr.addActiveProcessor("VTXDigitizer", "MyVTXDigitizer", vtxParameters);
Parameters trkParameters = new Parameters();
trkParameters.add("Chi2WRphiTriplet", 10);
trkParameters.add("Chi2WRphiQuartet", 10);
trkParameters.add("Chi2WRphiSeptet", 10);
trkParameters.add("Chi2WZTriplet", 10);
trkParameters.add("Chi2WZQuartet", 10);
trkParameters.add("Chi2WZSeptet", 10 );
trkParameters.add("NDivisionsInPhi", 60 );
trkParameters.add("NDivisionsInTheta", 60 );
trkParameters.add("LayerCombinations", new int[] { 4, 3, 2, 4, 3, 1, 4, 2, 1, 3, 2, 1 });
mgr.addActiveProcessor("VertexTracking", "MyVertexTracking", trkParameters);
System.out.println("End Setup ExampleVTX");
}
private void run(String file) throws Exception {
System.out.println("Start Run ExampleVTX");
LCReader lcReader = LCFactory.getInstance().createLCReader() ;
lcReader.registerLCRunListener( new LCRunListener() {
public void processRunHeader(LCRunHeader rh) {
System.err.println("Run "+rh.getDescription());
mgr.processRunHeader(rh);
}
public void modifyRunHeader(LCRunHeader rh) {
System.err.println("Modify Run "+rh);
}
}) ;
lcReader.registerLCEventListener( new LCEventListener() {
public void processEvent(LCEvent evt) {
System.err.println("Event ");
String[] n = evt.getCollectionNames();
for (int i=0; i<n.length; i++) {
System.err.println(n[i]);
}
mgr.processEvent(evt);
}
public void modifyEvent(LCEvent evt) {
System.err.println("Modify Event ");
}
}) ;
lcReader.open( file ) ;
mgr.init();
lcReader.readStream(11);
mgr.end();
lcReader.close();
System.out.println("End Run ExampleVTX");
}
public static void main(String[] args) throws Exception {
ExampleVTX ex = new ExampleVTX();
ex.setup();
ex.run("MarlinReco/examples/top_vxd01.slcio");
}
}