lcsim/src/org/lcsim/recon/cluster/directedtree
diff -u -r1.3 -r1.4
--- TrackHitMatcher.java 20 Feb 2006 22:48:12 -0000 1.3
+++ TrackHitMatcher.java 15 Mar 2006 12:27:48 -0000 1.4
@@ -22,7 +22,7 @@
* A helper class for track-hit matching in a single calorimeter component
*
* @author Guilherme Lima
- * @version $Id: TrackHitMatcher.java,v 1.3 2006/02/20 22:48:12 lima Exp $
+ * @version $Id: TrackHitMatcher.java,v 1.4 2006/03/15 12:27:48 lima Exp $
*/
public class TrackHitMatcher {
@@ -41,8 +41,10 @@
_colName = colName;
_layers = layers;
_debug = debug;
- _subdet = _expert.getSubdetector( colName );
- _segm = (SegmentationBase)_expert.getIDDecoder( colName );
+ _subdet = _expert.getSubdetector( colName.replace("Digi","") );
+ _segm = (SegmentationBase)_expert.getIDDecoder( colName.replace("Digi","") );
+
+ _segm.setField(_segm.getFieldIndex("system"), _subdet.getSystemID());
_dU = dU;
_dV = dV;
}
@@ -58,38 +60,51 @@
_hitmap = _expert.getCollHitMap(_colName);
// loop over tracks
- for( Track trk : event.getTracks() ) {
+ // Use recon.ztracking.cheater.TrackingCheater (MCParticle)
+ List<Track> recoTracks = event.get(Track.class, "CombinedTracks");
+ // Use mc.fast.tracking.MCFastTracking (smearing around MCParticle)
+// List<Track> recoTracks = event.getTracks();
+
+ for( Track trk : recoTracks ) {
_trk = trk;
_trkHitsMap = trkHitsMap;
_trkHits = trkHitsMap.get( trk );
int nhitsBefore = (_trkHits!=null ? _trkHits.size() : 0);
+ if(_debug>0) {
+ double mcE = ((org.lcsim.recon.ztracking.cheater.CheatTrack)trk).getMCParticle().getEnergy();
+ System.out.println("TkHitMatcher: "+_colName+" - new track: E="+mcE);
+ }
+
Hep3Vector pvec = new BasicHep3Vector( trk.getMomentum() );
Vector<Hep3Vector> trkIntercepts = intersects.get(trk);
if( trkIntercepts == null) continue;
+ int iint=0;
for( Hep3Vector pos : trkIntercepts ) {
// find cell containing track-cylinder intersection
- if(_debug>0) System.out.println("TkHitMatcher: "+pos.x()+" "+pos.y()+" "+pos.z());
long cellid = _segm.findCellContainingXYZ( pos );
+ if(_debug>0) System.out.println("TkHitMatcher: "+_colName+" "+pos.x()+" "+pos.y()+" "+pos.z()+", cellid="+MyTools.printID(cellid));
if(cellid==0) continue;
// save matched hits
this.addHitToTrack( cellid );
_segm.setID( cellid );
-// double rhoCell = _segm.getDistanceToSensitive(i);
-// System.out.println("layer="+i+", pos="+pos+", cell pos=("
-// +_segm.getX()+"; "+_segm.getY()+"; "
-// +_segm.getZ()+")"
-// +", rhoSwim="+Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y())
-// +", rhoCell="+rhoCell+", #hits="+_hitmap.size());
+ double rhoCell = _segm.getDistanceToSensitive(iint);
+ if(_debug>1) {
+ System.out.println("layer="+iint+", pos="+pos+", cell pos=("
+ +_segm.getX()+"; "+_segm.getY()+"; "+_segm.getZ()+")"
+ +", rhoSwim="+Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y())
+ +", rhoCell="+rhoCell+", #hits="+_hitmap.size());
+ }
// save matched hits in neighborhood
long[] neighs = _segm.getNeighbourIDs( 0, _dU, _dV );
for(int i=0; i<neighs.length; ++i) {
this.addHitToTrack( neighs[i] );
}
+ ++iint;
}
if(_debug>0) {