lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.18 -r1.19
--- HelicalTrackHitDriver.java 21 Jul 2008 20:08:19 -0000 1.18
+++ HelicalTrackHitDriver.java 28 Jul 2008 18:48:10 -0000 1.19
@@ -13,7 +13,6 @@
import hep.physics.vec.VecOp;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -36,6 +35,7 @@
import org.lcsim.event.RawTrackerHit;
import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrackerHit;
import org.lcsim.event.base.BaseTrackerHitMC;
import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
import org.lcsim.spacegeom.SpacePointVector;
@@ -63,7 +63,11 @@
* Type of hits to be converted/
*/
public enum HitType {
- Smeared,
+ /**
+ * Anything that uses BaseTrackerHit or BaseTrackerHitMC, for examples
+ * hits created by PixSim or TrackerHitCheater
+ */
+ Base,
/**
* Virtual segmentation (OldTrackerHit) hits.
*/
@@ -74,12 +78,14 @@
*/
Digitized
+
+
}
private StereoHitMaker _crosser = new StereoHitMaker(10., 10.);
private HitIdentifier ID = new HitIdentifier();
private SegmentationManager _segman;
private List<String> _vscol = new ArrayList<String>();
- private List<String> _smcol = new ArrayList<String>();
+ private List<String> _bscol = new ArrayList<String>();
private List<String> _digcol = new ArrayList<String>();
private String _outname = "HelicalTrackHits";
private Hep3Vector _uloc = new BasicHep3Vector(1., 0., 0.);
@@ -104,15 +110,24 @@
List<HelicalTrackHit> helhits = new ArrayList<HelicalTrackHit>();
Hep3Vector lz = new BasicHep3Vector(0., 0., 1.);
-
- // Warning! Tracker endcap smeared hits are doubled! NOT good for tracking.
- for (String colname : _smcol) {
+
+ for (String colname : _bscol) {
List<TrackerHit> hitlist = (List<TrackerHit>) event.get(colname);
for (TrackerHit hit : hitlist) {
Hep3Vector pos = new BasicHep3Vector(hit.getPosition());
- SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
+ SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
try {
+ //create a BaseTrackerHitMC from a BaseTrackerHit if necessary
+ if (hit instanceof BaseTrackerHit && !(hit instanceof BaseTrackerHitMC)){
+ List<SimTrackerHit> thesehits = new ArrayList<SimTrackerHit>();
+ for (RawTrackerHit raw : (List<RawTrackerHit>)hit.getRawHits()) {
+ thesehits.addAll(raw.getSimTrackerHit());
+ }
+ hit = new BaseTrackerHitMC(hit.getPosition(), hit.getCovMatrix(),
+ hit.getTime(), hit.getdEdx(), hit.getType(), thesehits);
+ }
+
SimTrackerHit simhit = ((BaseTrackerHitMC)hit).getSimHits().get(0);
IDetectorElementContainer cont = DetectorElementStore.getInstance().find(simhit.getIdentifier());
if (cont.isEmpty()) {
@@ -122,10 +137,12 @@
String detname = ID.getName(de);
int lyr = ID.getLayer(de);
BarrelEndcapFlag be = ID.getBarrelEndcapFlag(de);
-
- if (detname.indexOf("Vertex")==-1 && be.isEndcap()) {
-
- if (detname.indexOf("planar")==-1){
+
+ //Kludgy fix for layer numbering in sid01
+ if (!(detname.indexOf("Vertex") ==-1 && detname.indexOf("Vtx") == -1) && be.isEndcap()) {
+ if (event.getDetectorName().indexOf("planar")==-1) {
+// System.out.println(detname);
+// System.out.println("Layer divided by two");
lyr/=2;
}
}
@@ -227,8 +244,8 @@
public void addCollection(String name, HitType type) {
if (type == HitType.VirtualSegmentation) {
_vscol.add(name);
- } else if (type == HitType.Smeared) {
- _smcol.add(name);
+ } else if (type == HitType.Base) {
+ _bscol.add(name);
} else if (type == HitType.Digitized)
_digcol.add(name);
return;
lcsim/test/org/lcsim/contrib/seedtracker
diff -u -r1.1 -r1.2
--- SeedTrackerDigiTest.java 10 Jul 2008 22:05:03 -0000 1.1
+++ SeedTrackerDigiTest.java 28 Jul 2008 18:48:10 -0000 1.2
@@ -60,7 +60,7 @@
add(thd);
HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
hitdriver.addCollection(((TrackerHitDriver_User)thd).getStripHits1DName(),HitType.Digitized);
- hitdriver.addCollection("CheatedVertexBarrelHits",HitType.Smeared);
+ hitdriver.addCollection("CheatedVertexBarrelHits",HitType.Base);
add(hitdriver);
add( new SeedTracker(new BetterPlanarStrategy().getStrategies()) );
lcsim/src/org/lcsim/contrib/seedtracker/digiexample
diff -u -r1.1 -r1.2
--- DigiHitMaker.java 14 Jul 2008 23:26:16 -0000 1.1
+++ DigiHitMaker.java 28 Jul 2008 18:48:10 -0000 1.2
@@ -7,6 +7,8 @@
import java.util.ArrayList;
import java.util.List;
+import org.lcsim.contrib.NickSinev.PixSim.PixilatedSensorManager;
+import org.lcsim.contrib.NickSinev.PixSim.SensorOption;
import org.lcsim.contrib.SiStripSim.TrackerHitDriver_User;
import org.lcsim.contrib.tracking.TrackerHitCheater;
import org.lcsim.event.EventHeader;
@@ -23,24 +25,21 @@
public class DigiHitMaker extends Driver{
public DigiHitMaker(){
+
+ //Initialize Nick's Pixel hit making code
+ PixilatedSensorManager psm = new PixilatedSensorManager(SensorOption.ClassicCCD, true);
+ add(psm);
+
+// //Initialize Tim's TrackerHit making code
TrackerHitDriver_User thd = new TrackerHitDriver_User();
add(thd);
+
HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
hitdriver.addCollection(((TrackerHitDriver_User)thd).getStripHits1DName(),HitType.Digitized);
- hitdriver.addCollection("CheatedVertexBarrelHits",HitType.Smeared);
+ hitdriver.addCollection("RecVtxBarrHits",HitType.Base);
+ hitdriver.addCollection("RecVtxEndcapHits",HitType.Base);
+
hitdriver.OutputCollection("HelicalTrackHits"); // the default, but it might change?
add(hitdriver);
}
-
- protected void process(EventHeader event) {
- List<SimTrackerHit> simhits = new ArrayList<SimTrackerHit>();
- simhits.addAll(event.getSimTrackerHits("SiVertexBarrel_RO"));
- simhits.addAll(event.getSimTrackerHits("SiVertexEndcap_RO"));
- TrackerHitCheater cheater = new TrackerHitCheater();
- List<TrackerHit> smearedhits = cheater.makeTrackerHits(simhits);
- event.put("CheatedVertexBarrelHits", smearedhits, TrackerHit.class, 0);
-
- super.process(event);
-
- }
}