lcsim/src/org/lcsim/contrib/SteveMagill
diff -u -r1.5 -r1.6
--- TrackMipClusterDriver.java 6 Jun 2008 18:40:50 -0000 1.5
+++ TrackMipClusterDriver.java 20 Aug 2008 20:19:39 -0000 1.6
@@ -99,7 +99,7 @@
for (int i=0; i<_numbemlayers; ++i)
{
BRadii[i]=emb.getLayering().getDistanceToLayerSensorMid(i);
-// System.out.println("EM Barrel Layer Number " +i+ " EM Barrel Radius " +_emBRadii[i]);
+// System.out.println("EM Barrel Layer Number " +i+ " EM Barrel Radius " + BRadii[i]);
}
CylindricalCalorimeter emec = ((CylindricalCalorimeter) det.getSubdetectors().get("EMEndcap"));
@@ -118,7 +118,7 @@
for (int i=0; i<_numbhadlayers; ++i)
{
BRadii[i+_numbemlayers]=hadb.getLayering().getDistanceToLayerSensorMid(i);
-// System.out.println("HAD Barrel Layer Number " +i+ " HAD Barrel Radius " +_hadBRadii[i]);
+// System.out.println("HAD Barrel Layer Number " +i+ " HAD Barrel Radius " + BRadii[i+_numbemlayers]);
}
CylindricalCalorimeter hadec = ((CylindricalCalorimeter) det.getSubdetectors().get("HADEndcap"));
@@ -357,8 +357,10 @@
List<BasicCluster> mipclusters = new ArrayList<BasicCluster>();
// also, need a map linking tracks to mip clusters for future use and map linking IL to track
Map<Track, BasicCluster> trkmipmap = new HashMap<Track, BasicCluster>();
+ Map<Track, Integer> TrILmap = new HashMap<Track, Integer>();
Map<BasicCluster, Integer> clusILmap = new HashMap<BasicCluster, Integer>();
-// Map<Track, SpacePoint> trkposmap = new HashMap<Track, SpacePoint>();
+ Map<Track, SpacePoint> trkposmap = new HashMap<Track, SpacePoint>();
+ Map<Track, SpacePoint> trkmepmap = new HashMap<Track, SpacePoint>();
// Make hitmaps that contain mip hits
HitMap embhitmap = (HitMap) (event.get("EMBarrhitmap"));
HitMap hadbhitmap = (HitMap) (event.get("HADBarrhitmap"));
@@ -368,11 +370,20 @@
int jt = 0;
int[] IntLay = new int[200];
// System.out.println(" Starting Track Loop in TMC");
+ SpacePoint trackspacept = new SpacePoint();
+ SpacePoint lastmipSP = new SpacePoint();
for (Track itrack : evtracks)
{
BasicCluster mipclus = new BasicCluster();
+ double mipE = 0.;
double trpt = Math.sqrt(itrack.getPX()*itrack.getPX()+itrack.getPY()*itrack.getPY());
+ double TrP = Math.sqrt(itrack.getPX()*itrack.getPX()+itrack.getPY()*itrack.getPY()+itrack.getPZ()*itrack.getPZ());
double[] trp = itrack.getMomentum();
+ if (TrP<0.75)
+ {
+ if (trp[2]>0) trp[2] = trp[2]-.002; // dEdx subtraction approx on z comp
+ if (trp[2]<0) trp[2] = trp[2]+.002;
+ }
Hep3Vector trp3 = new BasicHep3Vector(trp);
double[] trrp = itrack.getReferencePoint();
double[] trpar = itrack.getTrackParameters();
@@ -450,10 +461,19 @@
if (prden == 0 || prden>_mincd)
{
IntLay[jt] = j;
+ trackspacept = trackSP;
+// System.out.println("Track SpacePoint at IL" + trackspacept);
+ if (trmipD)
+ {
+ if (j==0) aida.cloud1D("Track pt for B layer 0 IL").fill(trpt);
+ if (prden==0 && j==0) aida.cloud1D("No Hits in IL B layer 0").fill(prden);
+ if (prden>_mincd && j==0) aida.cloud1D("Many Hits in IL B layer 0").fill(prden);
+ }
nointeraction = false;
if (trmipD) aida.cloud1D("Cell Density Sum for B Interactions").fill(prden);
} else
{
+ lastmipSP = trackSP;
if (trmipD) aida.cloud1D("Cell Density Sum for B Noninteractions").fill(prden);
// add hits in this layer to mip cluster, remove from hitmap
for (int l=0; l<ntcmatch; ++l)
@@ -461,6 +481,10 @@
// System.out.println("Add this hit to B mip cluster " + l + " Layer " +j);
// System.out.println("Hit ID " + layerid[l] + " Hit " + layerHit[l]);
mipclus.addHit(layerHit[l]);
+ // increment hit energy using dEdx per layer
+ if (j<_numbemlayers-10) mipE += 0.0055;
+ if (j>_numbemlayers-11 && j<_numbemlayers) mipE += 0.0111;
+ if (j>_numbemlayers-1) mipE += 0.0228;
if (j<_numbemlayers)
{
embhitmap.remove(layerid[l]);
@@ -526,10 +550,18 @@
if (prden == 0 || prden>_mincd)
{
IntLay[jt] = j;
+ trackspacept = trackSP;
+ if (trmipD)
+ {
+ if (j==0) aida.cloud1D("Track pt for EC layer 0 IL").fill(trpt);
+ if (prden==0 && j==0) aida.cloud1D("No Hits in IL EC layer 0").fill(prden);
+ if (prden>_mincd && j==0) aida.cloud1D("Many Hits in IL EC layer 0").fill(prden);
+ }
nointeraction = false;
if (trmipD) aida.cloud1D("Cell Density Sum for EC Interactions").fill(prden);
} else
{
+ lastmipSP = trackSP;
if (trmipD) aida.cloud1D("Cell Density Sum for EC Noninteractions").fill(prden);
// add hits in this layer to mip cluster
// System.out.println("Number of matches " + ntcmatch);
@@ -539,6 +571,10 @@
// System.out.println("Add this hit to EC mip cluster " + l + " Layer " +j);
// System.out.println("Hit ID " + layerid[l] + " Hit " + layerHit[l]);
mipclus.addHit(layerHit[l]);
+ // increment hit energy using dEdx per layer
+ if (j<_numecemlayers-10) mipE += 0.0055;
+ if (j>_numecemlayers-11 && j<_numecemlayers) mipE += 0.0111;
+ if (j>_numecemlayers-1) mipE += 0.0228;
if (j<_numecemlayers)
{
emechitmap.remove(layerid[l]);
@@ -554,29 +590,39 @@
aida.cloud1D("Interaction Layer in EC").fill(IntLay[jt]);
}
// add mip cluster to cluster list and fill maps
+ // first, set energy based on dEdx in various layers
+ mipclus.setEnergy(mipE);
mipclusters.add(mipclus);
trkmipmap.put(itrack, mipclus);
clusILmap.put(mipclus, IntLay[jt]);
-// trkposmap.put(itrack, trackspacept);
+ TrILmap.put(itrack, IntLay[jt]);
+ trkposmap.put(itrack, trackspacept);
+ trkmepmap.put(itrack, lastmipSP);
jt++; // increment track index
}
if (trmipD) aida.cloud1D("Total Track Momentum").fill(TotTrP);
if (trmipD) aida.cloud1D("Number of Perfect Tracks").fill(evtracks.size());
if (trmipD) aida.cloud1D("Number of mip clusters").fill(mipclusters.size());
if (trmipD) aida.cloud2D("No of Tracks vs No of MipClus").fill(mipclusters.size(),evtracks.size());
+ int strmiph = 0;
for (BasicCluster mipcluster : mipclusters)
{
+ if (evtracks.size()==1) strmiph = mipcluster.getCalorimeterHits().size();
if (trmipD) aida.cloud1D("Number of hits in Mip Cluster").fill(mipcluster.getCalorimeterHits().size());
}
for (int i=0; i<evtracks.size(); ++i)
{
aida.cloud1D("Interaction Layer all Tracks").fill(IntLay[i]);
+ if (evtracks.size()==1 && trmipD) aida.cloud1D("Interaction Layer 1 Track only").fill(IntLay[i]);
+ if (evtracks.size()==1 && trmipD) aida.cloud2D("NumHits MipCLus vs IL 1Tr").fill(IntLay[0],strmiph);
// System.out.println("Interaction Layer for Track " + IntLay[i]);
}
if (mipclusters.size() > 0) event.put(_nameExt, mipclusters);
event.put("TrackMipMap",trkmipmap);
event.put("MipClusILMap",clusILmap);
-// event.put("TrackPosMap",trkposmap);
+ event.put("TrackILPosMap",trkposmap);
+ event.put("TrackMipEPMap",trkmepmap);
+ event.put("TrackILMap",TrILmap);
}
public void setClusterNameExtension(String ext)
{