7 added files
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N MainLoop.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MainLoop.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,31 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import java.io.File;
+import org.lcsim.util.Driver;
+import java.util.*;
+import org.lcsim.event.*;
+import org.lcsim.util.loop.*;
+import org.lcsim.detector.driver.*;
+
+public class MainLoop extends Driver {
+ public MainLoop() {
+ }
+ public static void main(String[] args) throws Exception {
+ LCSimLoop loop = new LCSimLoop();
+ File input = new File("/home/wenzel/TrackerHitAccessDriver/planar_mu.slcio");
+// File input = new File("/home/wenzel/TrackerHitAccessDriver/planar_mu_1gev.slcio");
+ loop.setLCIORecordSource(input);
+ String[] colls = {"TrackerBarrelHits","TkrEndcapHits","VtxBarrelHits","VtxEndcapHits"};
+// For now only look at the hits in the Barrel detectors:
+// String[] colls = {"TrackerBarrelHits","VtxBarrelHits"};
+ loop.add( new SimTrackerHitIdentifierReadoutDriver(colls));
+// loop.add(new SimTrackerHitIdentifierReadoutDriver());
+// loop.add( new SimTrackerHitPositionalReadoutDriver(new String[] {"SiTrackerBarrel_RO"} ) );
+ loop.add(new TrackerHitAccessDriver());
+ loop.add(new ParticlewithHitsAccessDriver());
+ // File output = new File("exampleAnalysisJava.slcio");
+ // loop.add(new LCIODriver(output));
+ long n = loop.loop(5);
+ loop.dispose();
+ //AIDA.defaultInstance().saveAs("exampleAnalysisJava.aida");
+ }
+}
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N ParticlewithHits.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ParticlewithHits.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,19 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import hep.physics.particle.BasicParticle;
+import org.lcsim.event.MCParticle;
+import java.util.Collections;
+import java.util.List;
+public class ParticlewithHits {
+ private MCParticle particle;
+ private List<SiMeasurement> ListofMeasurements;
+
+ public ParticlewithHits(MCParticle inParticle,
+ List<SiMeasurement> inList)
+ {
+ particle = inParticle;
+ ListofMeasurements = inList;
+ }
+ public MCParticle GetMCParticle() {return particle;}
+ public List<SiMeasurement> GetList() {return ListofMeasurements;}
+
+}
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N ParticlewithHitsAccessDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ParticlewithHitsAccessDriver.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,85 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import hep.physics.particle.properties.ParticleType;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+import hep.aida.ITree;
+
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.HashMap;
+
+import hep.physics.particle.BasicParticle;
+import org.lcsim.event.MCParticle;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.SiTrackerBarrel;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IDetectorElementContainer;
+import org.lcsim.detector.IGeometryInfo;
+import org.lcsim.detector.ILogicalVolume;
+import org.lcsim.detector.IPhysicalVolume;
+import org.lcsim.detector.material.IMaterial;
+import org.lcsim.detector.solids.ISolid;
+import org.lcsim.detector.solids.Box;
+import org.lcsim.detector.solids.Tube;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.BasicHep3Vector;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.driver.CollectionHandler;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
+import java.util.Random;
+import java.lang.Math;
+//import SiMeasurement;
+/*
+ * ParticlewithHitsAccessDriver.java
+ *
+ * Created on July 31, 2005, 3:03 PM
+ *
+ */
+
+/**
+ *
+ * @author Hans Wenzel
+ */
+public class ParticlewithHitsAccessDriver extends Driver {
+
+ public ParticlewithHitsAccessDriver() {
+ }
+ protected void process(EventHeader event) {
+
+ List<List<ParticlewithHits>> SiMeasurementLists = event.get(ParticlewithHits.class);
+ System.out.println("List size "+SiMeasurementLists.size());
+ // now loop over the List and print it out:
+ for (List<ParticlewithHits> SiMeasurementList: SiMeasurementLists) {
+ for (ParticlewithHits phits : SiMeasurementList) {
+ MCParticle part = phits.GetMCParticle();
+ System.out.println("Particle PDGID: "+part.getPDGID());
+ List<SiMeasurement> MList = phits.GetList();
+ Collections.sort(MList, new TimeComparator());
+
+ System.out.println("Number of Hits: "+MList.size());
+ for ( SiMeasurement point : MList) {
+ point.Print();
+ }
+ }
+ }
+ }
+}
+
+
+
+
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N ReverseTimeComparator.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ReverseTimeComparator.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,13 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import org.lcsim.event.SimTrackerHit;
+import java.util.Comparator;
+
+class ReverseTimeComparator implements Comparator<SiMeasurement>
+{
+ public int compare(SiMeasurement h1, SiMeasurement h2)
+ {
+ SimTrackerHit hit1 = h1.GetHit();
+ SimTrackerHit hit2 = h2.GetHit();
+ return (hit1.getTime() > hit2.getTime() ? -1 : (hit1.getTime() == hit2.getTime() ? 0 : 1));
+ }
+}
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N SiMeasurement.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiMeasurement.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,49 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import org.lcsim.event.SimTrackerHit;
+import java.util.Comparator;
+import org.lcsim.event.SimTrackerHit;
+import hep.physics.particle.BasicParticle;
+import org.lcsim.event.MCParticle;
+import org.lcsim.detector.IDetectorElement;
+
+public class SiMeasurement {
+ private SimTrackerHit Hit;
+ private double LocalX;
+ private double LocalY;
+ private double SigX;
+ private double SigY;
+ private IDetectorElement IDet;
+ private String DetectorType;
+ public SiMeasurement(SimTrackerHit inHit,
+ double inLocalX,
+ double inLocalY,
+ double inSigX,
+ double inSigY,
+ IDetectorElement inIDet,
+ String inDetectorType) {
+ Hit = inHit;
+ LocalX = inLocalX;
+ LocalY = inLocalY;
+ SigX = inSigX;
+ SigY = inSigY;
+ IDet = inIDet;
+ DetectorType = inDetectorType;
+ }
+ public SimTrackerHit GetHit() {return Hit;}
+ public double GetLocalX() {return LocalX;}
+ public double GetLocalY() {return LocalY;}
+ public double GetSigX() {return SigX;}
+ public double GetSigY() {return SigY;}
+ public IDetectorElement GetIDet() {return IDet;}
+ public String GetDetectorType(){return DetectorType;}
+ public void Print() {
+ System.out.println( "Local x: "+LocalX+
+ " Local Y: "+LocalY+
+ " Sigma X: "+SigX+
+ " Sigma Y: "+SigY+
+ " Detector name: "+IDet.getName()+
+ " Detector Type: "+DetectorType);
+ return;
+ }
+
+}
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N TimeComparator.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TimeComparator.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,14 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import org.lcsim.event.SimTrackerHit;
+import java.util.Comparator;
+
+class TimeComparator implements Comparator<SiMeasurement>
+{
+
+ public int compare(SiMeasurement h1, SiMeasurement h2)
+ {
+ SimTrackerHit hit1 = h1.GetHit();
+ SimTrackerHit hit2 = h2.GetHit();
+ return (hit1.getTime() < hit2.getTime() ? -1 : (hit1.getTime() == hit2.getTime() ? 0 : 1));
+ }
+}
lcsim/src/org/lcsim/contrib/HansWenzel/Tracking
diff -N TrackerHitAccessDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackerHitAccessDriver.java 6 Sep 2007 20:49:35 -0000 1.1
@@ -0,0 +1,168 @@
+package org.lcsim.contrib.HansWenzel.Tracking;
+import hep.physics.particle.properties.ParticleType;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+import hep.aida.ITree;
+
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.HashMap;
+
+import hep.physics.particle.BasicParticle;
+import org.lcsim.event.MCParticle;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.SiTrackerBarrel;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IDetectorElementContainer;
+import org.lcsim.detector.IGeometryInfo;
+import org.lcsim.detector.ILogicalVolume;
+import org.lcsim.detector.IPhysicalVolume;
+import org.lcsim.detector.material.IMaterial;
+import org.lcsim.detector.solids.ISolid;
+import org.lcsim.detector.solids.Box;
+import org.lcsim.detector.solids.Tube;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.BasicHep3Vector;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.driver.CollectionHandler;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
+import java.util.Random;
+import java.lang.Math;
+//import SiMeasurement;
+/*
+ * TrackerHitAccessDriver.java
+ *
+ * Created on July 31, 2005, 3:03 PM
+ *
+ */
+
+/**
+ *
+ * @author Hans Wenzel
+ */
+public class TrackerHitAccessDriver extends Driver {
+
+ final double strippitch = 0.05; // 50 micron strips
+ final double sigstripy = strippitch/Math.sqrt(12.); // pitch/sqrt(12)
+ double sigstripx = 0.0;
+ double MeasureX = 0.0;
+ double MeasureY = 0.0;
+ double sigMeasureX = 0.0;
+ double sigMeasureY = 0.0;
+ final double pixelx = 0.01; // 10 x 10 microns Pixels
+ final double pixely = 0.01;
+ final double sigpixelx = pixelx/Math.sqrt(12.);
+ final double sigpixely = pixely/Math.sqrt(12.);
+// private SiMeasurement measurement;
+ Random rndm;
+ public TrackerHitAccessDriver() {
+ rndm = new Random();
+ }
+ protected void process(EventHeader event) {
+ SiMeasurement measurement=null;
+ List<MCParticle> particles = event.get(MCParticle.class,event.MC_PARTICLES);
+ System.out.println("Nr of MC particles: "+particles.size());
+ List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
+ Map<MCParticle,Integer> IndexMap = new HashMap<MCParticle,Integer>();
+ Integer index = 0;
+ List<ParticlewithHits> SiMeasurementList = new ArrayList<ParticlewithHits>();
+
+// Map<MCParticle,List<SiMeasurement>> SiMeasurementMap = new HashMap<MCParticle,List<SiMeasurement>>();
+ // Loop over all SimTrackerHit collections:
+ for (List<SimTrackerHit> collection : collections) {
+ LCMetaData meta = event.getMetaData(collection);
+ if ((meta.getName().substring(0,13).equals("TrackerBarrel"))||(meta.getName().substring(0,9).equals("VtxBarrel"))) {
+ // System.out.println("meta: "+meta.getName());
+ for (SimTrackerHit hit : collection) {
+ MCParticle particle = hit.getMCParticle();
+ if (particle !=null){
+
+ IDetectorElement DEofHit = hit.getDetectorElement();
+ IGeometryInfo gi = DEofHit.getGeometry();
+ double[] pos = hit.getPoint();
+ Hep3Vector heppoint = new BasicHep3Vector(pos);
+ Hep3Vector locpoint = gi.transformGlobalToLocal(heppoint);
+ IPhysicalVolume pv = gi.getPhysicalVolume();
+ ILogicalVolume lv = pv.getLogicalVolume();
+ IMaterial gimat = lv.getMaterial();
+ ISolid gisolid = lv.getSolid();
+ if(gisolid instanceof Box) {
+ Box gbox = (Box)gisolid; //casting
+ sigstripx = (2.*gbox.getXHalfLength())/Math.sqrt(12.); // pit/sqrt(12)
+ } else if(gisolid instanceof Tube) {
+ Tube tube =(Tube)gisolid; //casting
+ } else {
+ System.out.println("ISolid not known!!!!");
+ }
+ if (DEofHit.getName().substring(0,13).equals("TrackerBarrel")) {
+ MeasureX = 0.0;
+ MeasureY = locpoint.y()+sigstripy*rndm.nextGaussian();
+ sigMeasureX = sigstripx;
+ sigMeasureY = sigstripy;
+ measurement = new SiMeasurement(hit,MeasureX,MeasureY,sigMeasureX,sigMeasureY,DEofHit,"TrackerBarrel");
+ } else if (DEofHit.getName().substring(0,9).equals("VtxBarrel")) {
+ MeasureX = locpoint.x()+sigpixelx*rndm.nextGaussian();;
+ MeasureY = locpoint.y()+sigpixely*rndm.nextGaussian();
+ sigMeasureX = sigpixelx;
+ sigMeasureY = sigpixely;
+ measurement = new SiMeasurement(hit,MeasureX,MeasureY,sigMeasureX,sigMeasureY,DEofHit,"VtxBarrel");
+ } else {
+ System.out.println("Currently endcaps not implemented");
+ }
+
+ Boolean found = IndexMap.containsKey(particle);
+ if (found) {
+ ParticlewithHits pwh = SiMeasurementList.get(IndexMap.get(particle));
+ List<SiMeasurement> MeasurementList = pwh.GetList();
+ MeasurementList.add(measurement);
+ } else {
+ List<SiMeasurement> MeasurementList =new ArrayList();
+ MeasurementList.add(measurement);
+ ParticlewithHits particlewh = new ParticlewithHits(particle,MeasurementList);
+ SiMeasurementList.add(particlewh);
+ IndexMap.put(particle,index);
+ index = index+1;
+ }
+ } // end if MCparticle found
+ } // end loop over hits
+ } // end barrel selection
+ }// end loop over hit collections
+ System.out.println("List size "+SiMeasurementList.size());
+ /*
+ // now loop over the List and print it out:
+ for (ParticlewithHits phits: SiMeasurementList) {
+ MCParticle part = phits.GetMCParticle();
+ System.out.println("Particle PDGID: "+part.getPDGID());
+ List<SiMeasurement> MList = phits.GetList();
+ Collections.sort(MList, new TimeComparator());
+
+ System.out.println("Number of Hits: "+MList.size());
+ for ( SiMeasurement point : MList) {
+ point.Print();
+ }
+ }
+ */
+ // Put the collection into the event.
+ System.out.println("Adding object to event: " );
+ event.put("_ParticlewithHits",SiMeasurementList , ParticlewithHits.class, 0);
+ }
+}
+
+
+
+
CVSspam 0.2.8