lcsim/src/org/lcsim/contrib/SteveMagill
diff -u -r1.2 -r1.3
--- TrackMipClusterDriver.java 18 May 2007 19:58:36 -0000 1.2
+++ TrackMipClusterDriver.java 29 May 2008 21:32:22 -0000 1.3
@@ -1,4 +1,4 @@
-package org.lcsim.contrib.SteveMagill;
+package org.lcsim.contrib.compile.SteveMagill;
// This driver extrapolates tracks into CAL, associating mips and determining interaction layer
// output : Mip Clusters and IL per track
@@ -55,8 +55,6 @@
private double[] _emecZ; //EM Endcap Z
private double _hadbZ; //HAD barrel z
private double[] _hadecZ; // HAD endcap z
-// The central magnetic field strength
- private double[] _fieldStrength;
private double _dminE;
private double _dminH;
private double _dminTrC;
@@ -64,7 +62,9 @@
private String _nameExt;
private String[] _hitcollnames;
private boolean trmipD = false;
- private boolean trmipRes = true;
+ private boolean trmipRes = false;
+ private SpacePoint trackspacept;
+ private double zField;
// private String[] _hitmapnames;
public TrackMipClusterDriver(double dminE, double dminH, double dminTrC, double mincd)
@@ -84,9 +84,12 @@
{
// setup specific detector stuff here
Detector det = event.getDetector();
- double[] zero = {0, 0, 0};
- _fieldStrength = det.getFieldMap().getField(zero);
-// System.out.println("B Field " +_fieldStrength[2]+ " Tesla");
+// double[] zero = {0, 0, 0};
+// _fieldStrength = det.getFieldMap().getField(zero);
+ // try this
+ Hep3Vector ip = new BasicHep3Vector();
+ zField = det.getFieldMap().getField(ip).z();
+// System.out.println("B Field " + zField + " Tesla");
// Setup layer counts and distances for barrel, endcap
CylindricalCalorimeter emb = ((CylindricalCalorimeter) det.getSubdetectors().get("EMBarrel"));
@@ -161,17 +164,19 @@
long cID = chit.getCellID();
caldecoder.setID(cID);
int nlay = caldecoder.getLayer();
- celbtheta[nhitbLayer[nlay]][nlay] = caldecoder.getTheta();
- double cellphi = caldecoder.getPhi();
- if (cellphi>Math.PI) cellphi=cellphi-2*Math.PI;
+ double[] htpos = chit.getPosition();
+ double cellphi = Math.atan2(htpos[1],htpos[0]);
+ if (cellphi<0) cellphi+=2*Math.PI;
+ double htr = Math.sqrt(htpos[0]*htpos[0]+htpos[1]*htpos[1]);
+ double celltheta = Math.atan(htr/htpos[2]);
+ if (celltheta<0) celltheta+=Math.PI;
+ celbtheta[nhitbLayer[nlay]][nlay] = celltheta;
celbphi[nhitbLayer[nlay]][nlay] = cellphi;
celbID[nhitbLayer[nlay]][nlay] = cID;
celbhit[nhitbLayer[nlay]][nlay] = chit;
nhitbLayer[nlay]++;
nhitsEMB++;
nhitsBTotCAL++;
- if (trmipD) aida.cloud1D("Raw Cell E in EM CAL").fill(chit.getRawEnergy());
- if (trmipD) aida.cloud1D("Corrected Cell E in EM CAL").fill(chit.getCorrectedEnergy());
}
} else if (_hitcollnames[i] == "HcalBarrDigiHits")
{
@@ -180,9 +185,13 @@
long cID = chit.getCellID();
caldecoder.setID(cID);
int nlay = _numbemlayers + caldecoder.getLayer();
- celbtheta[nhitbLayer[nlay]][nlay] = caldecoder.getTheta();
- double cellphi = caldecoder.getPhi();
- if (cellphi>Math.PI) cellphi=cellphi-2*Math.PI;
+ double[] htpos = chit.getPosition();
+ double cellphi = Math.atan2(htpos[1],htpos[0]);
+ if (cellphi<0) cellphi+=2*Math.PI;
+ double htr = Math.sqrt(htpos[0]*htpos[0]+htpos[1]*htpos[1]);
+ double celltheta = Math.atan(htr/htpos[2]);
+ if (celltheta<0) celltheta+=Math.PI;
+ celbtheta[nhitbLayer[nlay]][nlay] = celltheta;
celbphi[nhitbLayer[nlay]][nlay] = cellphi;
celbID[nhitbLayer[nlay]][nlay] = cID;
celbhit[nhitbLayer[nlay]][nlay] = chit;
@@ -197,10 +206,14 @@
long cID = chit.getCellID();
caldecoder.setID(cID);
int nlay = caldecoder.getLayer();
- celectheta[nhitecLayer[nlay]][nlay] = caldecoder.getTheta();
- double cellphi = caldecoder.getPhi();
- if (cellphi>Math.PI) cellphi=cellphi-2*Math.PI;
- celecphi[nhitecLayer[nlay]][nlay] = cellphi;
+ double[] htpos = chit.getPosition();
+ double cellphi = Math.atan2(htpos[1],htpos[0]);
+ if (cellphi<0) cellphi+=2*Math.PI;
+ double htr = Math.sqrt(htpos[0]*htpos[0]+htpos[1]*htpos[1]);
+ double celltheta = Math.atan(htr/htpos[2]);
+ if (celltheta<0) celltheta+=Math.PI;
+ celectheta[nhitbLayer[nlay]][nlay] = celltheta;
+ celecphi[nhitbLayer[nlay]][nlay] = cellphi;
celecID[nhitecLayer[nlay]][nlay] = cID;
celechit[nhitecLayer[nlay]][nlay] = chit;
nhitecLayer[nlay]++;
@@ -214,10 +227,14 @@
long cID = chit.getCellID();
caldecoder.setID(cID);
int nlay = _numecemlayers + caldecoder.getLayer();
- celectheta[nhitecLayer[nlay]][nlay] = caldecoder.getTheta();
- double cellphi = caldecoder.getPhi();
- if (cellphi>Math.PI) cellphi=cellphi-2*Math.PI;
- celecphi[nhitecLayer[nlay]][nlay] = cellphi;
+ double[] htpos = chit.getPosition();
+ double cellphi = Math.atan2(htpos[1],htpos[0]);
+ if (cellphi<0) cellphi+=2*Math.PI;
+ double htr = Math.sqrt(htpos[0]*htpos[0]+htpos[1]*htpos[1]);
+ double celltheta = Math.atan(htr/htpos[2]);
+ if (celltheta<0) celltheta+=Math.PI;
+ celectheta[nhitbLayer[nlay]][nlay] = celltheta;
+ celecphi[nhitbLayer[nlay]][nlay] = cellphi;
celecID[nhitecLayer[nlay]][nlay] = cID;
celechit[nhitecLayer[nlay]][nlay] = chit;
nhitecLayer[nlay]++;
@@ -234,10 +251,8 @@
// aida.cloud2D("Number of hits B vs EC CAL").fill(nhitsBTotCAL,nhitsECTotCAL);
// Now calculate densities for hits in barrel
-// Map<Long, CalorimeterHit> lodenshitmap = new HashMap<Long, CalorimeterHit>();
-// Map<Long, CalorimeterHit> hidenshitmap = new HashMap<Long, CalorimeterHit>();
- HitMap lodenshitmap = new HitMap();
- HitMap hidenshitmap = new HitMap();
+// HitMap lodenshitmap = new HitMap();
+// HitMap hidenshitmap = new HitMap();
for (int i=0; i<_numbemlayers+_numbhadlayers; ++i)
{
for (int j=0; j<nhitbLayer[i]; ++j)
@@ -256,29 +271,30 @@
if (i >= _numbemlayers) dmin = _dminH;
if (distance < dmin)
{
- if (i < 30) celbden[j][i] += 0.0026/distance;
- if (i > 29) celbden[j][i] += 0.0052/distance;
+ if (i < _numbemlayers) celbden[j][i] += 0.0026/distance; // default is 0.0026
+ if (i > _numbemlayers-1) celbden[j][i] += 0.0054/distance; // default was 0.0052, try 0.0062
if (trmipD)
{
if (i == 0) aida.cloud1D("Distance between EM B CAL hits layer 0").fill(distance);
- if (i < 30) aida.cloud1D("Distance between EM B CAL hits").fill(distance);
- if (i == 30) aida.cloud1D("Distance between HAD B CAL hits layer 0").fill(distance);
- if (i > 29) aida.cloud1D("Distance between HAD B CAL hits").fill(distance);
+ if (i < _numbemlayers) aida.cloud1D("Distance between EM B CAL hits").fill(distance);
+ if (i == _numbemlayers) aida.cloud1D("Distance between HAD B CAL hits layer 0").fill(distance);
+ if (i > _numbemlayers-1) aida.cloud1D("Distance between HAD B CAL hits").fill(distance);
}
}
}
if (trmipD) aida.cloud1D("Cell Density B").fill(celbden[j][i]);
+ if (trmipD) aida.cloud2D("Cell Density B vs Layer").fill(i,celbden[j][i]);
// aida.cloud2D("Cell Density vs Vis E").fill(celbhit[j][i].getRawEnergy(),celbden[j][i]);
- if (celbden[j][i] > 0 && celbden[j][i] < _mincd)
- {
- lodenshitmap.put(celbID[j][i],celbhit[j][i]);
- if (trmipD) aida.cloud1D("Visible E LowD hits").fill(celbhit[j][i].getRawEnergy());
- }
- if (celbden[j][i] > _mincd)
- {
- hidenshitmap.put(celbID[j][i],celbhit[j][i]);
- if (trmipD) aida.cloud1D("Visible E HighD hits").fill(celbhit[j][i].getRawEnergy());
- }
+// if (celbden[j][i] > 0 && celbden[j][i] < _mincd)
+// {
+// lodenshitmap.put(celbID[j][i],celbhit[j][i]);
+// if (trmipD) aida.cloud1D("Visible E LowD hits").fill(celbhit[j][i].getRawEnergy());
+// }
+// if (celbden[j][i] > _mincd)
+// {
+// hidenshitmap.put(celbID[j][i],celbhit[j][i]);
+// if (trmipD) aida.cloud1D("Visible E HighD hits").fill(celbhit[j][i].getRawEnergy());
+// }
}
}
@@ -291,58 +307,56 @@
for (int k=0; k<nhitecLayer[i]; ++k)
{
if (k == j) continue;
- double dmin = 2*_dminE;
+ double dmin = _dminE;
double deltheta = Math.abs(celectheta[k][i]-celectheta[j][i]);
if (trmipD) aida.cloud1D("Delta Theta EC Cell").fill(deltheta);
double delphi = Math.abs(celecphi[k][i]-celecphi[j][i]);
if (delphi > Math.PI) delphi = 2*Math.PI-delphi;
if (trmipD) aida.cloud1D("Delta Phi EC Cell").fill(delphi);
double distance = Math.sqrt(deltheta*deltheta+delphi*delphi);
- if (i >= _numecemlayers) dmin = 2*_dminH;
+ if (i >= _numecemlayers) dmin = _dminH;
if (distance < dmin)
{
- if (i < 30) celecden[j][i] += 0.0017/distance;
- if (i > 29) celecden[j][i] += 0.0042/distance;
+ if (i < _numecemlayers) celecden[j][i] += 0.0028/distance; // default was 0.0017, try 0.0026
+ if (i > _numecemlayers-1) celecden[j][i] += 0.0085/distance; // default was 0.0042, try 0.0062
if (trmipD)
{
if (i == 0) aida.cloud1D("Distance between EM EC CAL hits layer 0").fill(distance);
- if (i < 30) aida.cloud1D("Distance between EM EC CAL hits").fill(distance);
- if (i > 29) aida.cloud1D("Distance between HAD EC CAL hits").fill(distance);
- if (i == 30) aida.cloud1D("Distance between HAD EC CAL hits layer 0").fill(distance);
+ if (i < _numecemlayers) aida.cloud1D("Distance between EM EC CAL hits").fill(distance);
+ if (i > _numecemlayers-1) aida.cloud1D("Distance between HAD EC CAL hits").fill(distance);
+ if (i == _numecemlayers) aida.cloud1D("Distance between HAD EC CAL hits layer 0").fill(distance);
}
}
}
if (trmipD) aida.cloud1D("Cell Density EC").fill(celecden[j][i]);
- if (celecden[j][i] > 0 && celecden[j][i] < _mincd)
- {
- lodenshitmap.put(celecID[j][i],celechit[j][i]);
- if (trmipD) aida.cloud1D("Visible E LowD hits").fill(celechit[j][i].getRawEnergy());
- }
- if (celecden[j][i] > _mincd)
- {
- hidenshitmap.put(celecID[j][i],celechit[j][i]);
- if (trmipD) aida.cloud1D("Visible E HighD hits").fill(celechit[j][i].getRawEnergy());
- }
+ if (trmipD) aida.cloud2D("Cell Density EC vs Layer").fill(i,celecden[j][i]);
+// if (celecden[j][i] > 0 && celecden[j][i] < _mincd)
+// {
+// lodenshitmap.put(celecID[j][i],celechit[j][i]);
+// if (trmipD) aida.cloud1D("Visible E LowD hits").fill(celechit[j][i].getRawEnergy());
+// }
+// if (celecden[j][i] > _mincd)
+// {
+// hidenshitmap.put(celecID[j][i],celechit[j][i]);
+// if (trmipD) aida.cloud1D("Visible E HighD hits").fill(celechit[j][i].getRawEnergy());
+// }
}
}
- List<CalorimeterHit> lodensHits = new Vector<CalorimeterHit>();
- lodensHits.addAll(lodenshitmap.values());
- event.put("LowDensityHits",lodensHits);
- List<CalorimeterHit> hidensHits = new Vector<CalorimeterHit>();
- hidensHits.addAll(hidenshitmap.values());
- event.put("HighDensityHits",hidensHits);
- if (trmipD) aida.cloud2D("LowD vs HighD hits").fill(hidensHits.size(),lodensHits.size());
+// List<CalorimeterHit> lodensHits = new Vector<CalorimeterHit>();
+// lodensHits.addAll(lodenshitmap.values());
+// event.put("LowDensityHits",lodensHits);
+// List<CalorimeterHit> hidensHits = new Vector<CalorimeterHit>();
+// hidensHits.addAll(hidenshitmap.values());
+// event.put("HighDensityHits",hidensHits);
// Loop over tracks in event, extrapolate to layers and match hits if mips
-// List<CheatTrack> evtracks = event.get(CheatTrack.class, "CombinedTracks");
- List<PerfectTrack> evtracks = event.get(PerfectTrack.class, "PerfectTracks");
-// aida.cloud1D("Number of Combined Tracks").fill(evtracks.size());
-// System.out.println("Number of CheatTracks " +evtracks.size());
- List<Track> ctracks = new ArrayList<Track>();
+ List<Track> evtracks = event.get(Track.class, "PerfectTracks");
+// aida.cloud1D("Number of Tracks").fill(evtracks.size());
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<PerfectTrack, BasicCluster> trkmipmap = new HashMap<PerfectTrack, BasicCluster>();
+ Map<Track, BasicCluster> trkmipmap = new HashMap<Track, BasicCluster>();
Map<BasicCluster, Integer> clusILmap = new HashMap<BasicCluster, Integer>();
+ Map<Track, SpacePoint> trkposmap = new HashMap<Track, SpacePoint>();
// Make hitmaps that contain mip hits
HitMap embhitmap = (HitMap) (event.get("EMBarrhitmap"));
HitMap hadbhitmap = (HitMap) (event.get("HADBarrhitmap"));
@@ -351,37 +365,37 @@
double TotTrP = 0;
int jt = 0;
int[] IntLay = new int[200];
- for (PerfectTrack itrack : evtracks)
+// System.out.println(" Starting Track Loop in TMC");
+ for (Track itrack : evtracks)
{
-// IntLay[jt] = 0; // set to first layer as default if wanted
BasicCluster mipclus = new BasicCluster();
double trpt = Math.sqrt(itrack.getPX()*itrack.getPX()+itrack.getPY()*itrack.getPY());
double[] trp = itrack.getMomentum();
Hep3Vector trp3 = new BasicHep3Vector(trp);
-// double[] tror = itrack.getReferencePoint();
-// Hep3Vector tror3 = new BasicHep3Vector(tror);
- Hep3Vector tror3 = itrack.getOrigin();
+ double[] trrp = itrack.getReferencePoint();
+ double[] trpar = itrack.getTrackParameters();
+ double[] tror = new double[3];
+ tror[0] = -trpar[0]*Math.sin(trpar[1])+trrp[0];
+ tror[1] = trpar[0]*Math.cos(trpar[1])+trrp[1];
+ tror[2] = trpar[3]+trrp[2];
+// System.out.println(" Track Origin " + tror[0] + " " + tror[1] + " " + tror[2]);
+ Hep3Vector tror3 = new BasicHep3Vector(tror);
+ SpacePoint trorsp = new SpacePoint(tror3); // old swimmer was deprecated, uses SP now
int trq = itrack.getCharge();
// System.out.println("Track Charge " + trq + " Track P " + trp3 + " Origin " + tror3);
- if (trq == 0) continue; // sometimes these are photons!
- ctracks.add(itrack);
- // ctracks.set(jt, itrack);
+ if (trq == 0) continue; // shouldn't need this, but it doesn't hurt
TotTrP += Math.sqrt(itrack.getPX()*itrack.getPX()+itrack.getPY()*itrack.getPY()+itrack.getPZ()*itrack.getPZ());
- if (trmipD) aida.cloud1D("pT of all Combined Tracks").fill(trpt);
- HelixSwimmer tswim = new HelixSwimmer(_fieldStrength[2]);
+ if (trmipD) aida.cloud1D("pT of all Tracks").fill(trpt);
+ HelixSwimmer tswim = new HelixSwimmer(zField);
// swim track to 1st layer of CAL, arguments are momentum, origin, and charge
- tswim.setTrack(trp3, tror3, trq);
-// System.out.println("Radius of first EM Barrel layer" + BRadii[0]);
+// tswim.setTrack(trp3, tror3, trq); // deprecated
+ tswim.setTrack(trp3, trorsp, trq);
double torad = tswim.getDistanceToRadius(BRadii[0]); // this is midpoint of first active layer of EM Barrel Cal
double toz = tswim.getDistanceToZ(ECZs[0]); // this is midpoint of first active layer of EM Endcap Cal
-// System.out.println("Track pT " +trpt);
-// System.out.println("Track momentum " +trp3);
-// System.out.println("Track origin " +tror3);
-// System.out.println("Rad Dist " +torad+ "Z Dist " +toz);
// if distance to radius is less than distance to z, use barrel hit collection, else use endcap
- if (torad < toz) // in Barrel
+ if (torad < Math.abs(toz)) // in Barrel
{
- if (trmipD) aida.cloud1D("Track pT Barrel Tracks").fill(trpt);
+ if (trmipD) aida.cloud1D("Track pT B Tracks").fill(trpt);
boolean nointeraction = true;
IntLay[jt] = _numbemlayers+_numbhadlayers; // set to last layer
// loop over all barrel layers, swimming track to radius and getting spacepoint
@@ -394,32 +408,32 @@
long[] layerid = new long[200];
CalorimeterHit[] layerHit = new CalorimeterHit[200];
double drad = tswim.getDistanceToRadius(BRadii[j]);
- SpacePoint trackSP = tswim.getPointAtDistance(drad);
+ SpacePoint trackSP = tswim.getPointAtLength(drad);
// System.out.println("Barrel Layer " + j + "Barrel Radius " + BRadii[j] + "SpacePoint " + trackSP);
- double trbtheta = trackSP.theta();
- if (trmipD) aida.cloud1D("Track Theta at EMBrad").fill(trbtheta);
- double trbphi = trackSP.phi();
- if (trmipD) aida.cloud1D("Track Phi at EMBrad").fill(trbphi);
+ double trbtheta = Math.atan(trackSP.rxy()/trackSP.z());
+ if (trbtheta<0) trbtheta+=Math.PI;
+ double trbphi = Math.atan2(trackSP.y(),trackSP.x());
+ if (trbphi<0) trbphi+=2*Math.PI;
+ if (trmipD) aida.cloud1D("Track Theta at Brad").fill(trbtheta);
+ if (trmipD) aida.cloud1D("Track Phi at Brad").fill(trbphi);
// System.out.println("Track Theta " + trbtheta + "Track phi " + trbphi);
- if (trmipD) aida.cloud2D("Theta vs Phi for tracks at EMBrad").fill(trbphi,trbtheta);
+ if (trmipD) aida.cloud2D("Theta vs Phi for tracks at Brad").fill(trbphi,trbtheta);
// now loop over all hits in layer, adding mips or determining IL
for (int i=0; i<nhitbLayer[j]; ++i)
{
- if (trmipD) aida.cloud2D("Theta vs Phi for CAL B hits at EMBrad").fill(celbphi[i][j],celbtheta[i][j]);
+ if (trmipD) aida.cloud2D("Theta vs Phi for CAL B hits at Brad").fill(celbphi[i][j],celbtheta[i][j]);
if (trmipD) aida.cloud1D("Del theta track CAL B cell").fill(Math.abs(trbtheta-celbtheta[i][j]));
double dthe = Math.abs(trbtheta-celbtheta[i][j]);
double dphi = Math.abs(trbphi-celbphi[i][j]);
if (dphi > Math.PI) dphi = 2*Math.PI-dphi;
if (trmipD) aida.cloud1D("Del phi track CAL B cell").fill(dphi);
double delpos = Math.sqrt(dphi*dphi+dthe*dthe);
- if (trmipD) aida.cloud2D("Del theta vs Del phi track CAL B cell").fill(dphi,dthe);
if (trmipD) aida.cloud1D("Del Pos Track CAL B cell").fill(delpos);
- // if (trpt>5 && j<30 && delpos<0.0075) aida.cloud1D("Cell Density for close B cells").fill(celbden[i][j]);
- // if (trpt>5 && j<30 && delpos>0.0075) aida.cloud1D("Cell Density for far B cells").fill(celbden[i][j]);
- // if (trpt>5 && j>29 && delpos<0.025) aida.cloud1D("Cell Density for close B cells").fill(celbden[i][j]);
- // if (trpt>5 && j>29 && delpos>0.025) aida.cloud1D("Cell Density for far B cells").fill(celbden[i][j]);
+ if (trmipD && j<_numbemlayers) aida.cloud1D("Del Pos Track CAL B EM cell").fill(delpos);
+ if (trmipD && j>_numbemlayers-1) aida.cloud1D("Del Pos Track CAL B HAD cell").fill(delpos);
+ if (trmipD) aida.cloud2D("Del Pos Track CAL B cell vs cell density").fill(celbden[i][j],delpos);
double trcedmin = _dminTrC;
- if (j >= _numbemlayers) trcedmin = 2*trcedmin;
+ if (j >= _numbemlayers) trcedmin = 2.0*trcedmin;
if (delpos<trcedmin)
{
prden += celbden[i][j];
@@ -452,14 +466,13 @@
}
}
}
-// if (trpt>5) System.out.println("Layer number " + j + " Number of matches " + ntcmatch + " Match density " + prden);
}
}
if (mipclus.getCalorimeterHits().size()==0) IntLay[jt]=0;
- if (trmipD) aida.cloud1D("Interaction Layer in B").fill(IntLay[jt]);
+ aida.cloud1D("Interaction Layer in B").fill(IntLay[jt]);
} else // Endcap
{
- if (trmipD) aida.cloud1D("Track pT Endcap Tracks").fill(trpt);
+ if (trmipD) aida.cloud1D("Track pT EC Tracks").fill(trpt);
boolean nointeraction = true;
IntLay[jt] = _numecemlayers+_numechadlayers; // set to last layer
// loop over all barrel layers, swimming track to radius and getting spacepoint
@@ -472,11 +485,12 @@
long[] layerid = new long[200];
CalorimeterHit[] layerHit = new CalorimeterHit[200];
double drad = tswim.getDistanceToZ(ECZs[j]);
- SpacePoint trackSP = tswim.getPointAtDistance(drad);
-// System.out.println("Spacepoint in EMEndcap Layer 0 " +trackSP);
- double trectheta = trackSP.theta();
+ SpacePoint trackSP = tswim.getPointAtLength(drad);
+ double trectheta = Math.atan(trackSP.rxy()/trackSP.z());
+ if (trectheta<0) trectheta+=Math.PI;
+ double trecphi = Math.atan2(trackSP.y(),trackSP.x());
+ if (trecphi<0) trecphi+=2*Math.PI;
if (trmipD) aida.cloud1D("Track Theta at ECZ").fill(trectheta);
- double trecphi = trackSP.phi();
if (trmipD) aida.cloud1D("Track Phi at ECZ").fill(trecphi);
if (trmipD) aida.cloud2D("Theta vs Phi for tracks at ECZ").fill(trecphi,trectheta);
// have track theta, phi in Endcaps - check for mip hits in Endcap Collections
@@ -489,11 +503,12 @@
if (dphi > Math.PI) dphi = 2*Math.PI-dphi;
if (trmipD) aida.cloud1D("Del phi track CAL EC cell").fill(dphi);
double delpos = Math.sqrt(dphi*dphi+dthe*dthe);
- if (trmipD) aida.cloud2D("Del theta vs Del phi track CAL EC cell").fill(dphi,dthe);
if (trmipD) aida.cloud1D("Del Pos Track CAL EC cell").fill(delpos);
- double trcedmin = 2*_dminTrC;
- if (j >= _numecemlayers) trcedmin = 2*trcedmin;
- if (delpos<2*trcedmin)
+ if (trmipD && j<_numecemlayers) aida.cloud1D("Del Pos Track CAL EC EM cell").fill(delpos);
+ if (trmipD && j>_numecemlayers-1) aida.cloud1D("Del Pos Track CAL EC HAD cell").fill(delpos);
+ double trcedmin = _dminTrC;
+ if (j >= _numecemlayers) trcedmin = 2.0*trcedmin;
+ if (delpos<trcedmin)
{
prden += celecden[i][j];
layerid[ntcmatch] = celecID[i][j];
@@ -530,36 +545,32 @@
}
}
if (mipclus.getCalorimeterHits().size()==0) IntLay[jt]=0;
- if (trmipD) aida.cloud1D("Interaction Layer in EC").fill(IntLay[jt]);
+ aida.cloud1D("Interaction Layer in EC").fill(IntLay[jt]);
}
// add mip cluster to cluster list and fill maps
mipclusters.add(mipclus);
trkmipmap.put(itrack, mipclus);
clusILmap.put(mipclus, IntLay[jt]);
-
+ trkposmap.put(itrack, trackspacept);
jt++; // increment track index
}
if (trmipD) aida.cloud1D("Total Track Momentum").fill(TotTrP);
- if (trmipRes) aida.cloud1D("Number of Perfect Tracks").fill(evtracks.size());
- if (trmipRes) aida.cloud1D("Number of mip clusters").fill(mipclusters.size());
- if (trmipRes) aida.cloud2D("No of Tracks vs No of MipClus").fill(mipclusters.size(),evtracks.size());
+ 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());
for (BasicCluster mipcluster : mipclusters)
{
- if (trmipRes) aida.cloud1D("Number of hits in Mip Cluster").fill(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)
{
- if (trmipRes) aida.cloud1D("Interaction Layer all Tracks").fill(IntLay[i]);
+ aida.cloud1D("Interaction Layer all Tracks").fill(IntLay[i]);
// System.out.println("Interaction Layer for Track " + IntLay[i]);
}
- if (ctracks.size() > 0) event.put("Cheated Tracks", ctracks); // cheated tracks now in event
if (mipclusters.size() > 0) event.put(_nameExt, mipclusters);
event.put("TrackMipMap",trkmipmap);
event.put("MipClusILMap",clusILmap);
-// System.out.println("EMB mip hitmap size " + embhitmap.size());
-// System.out.println("HADB mip hitmap size " + hadbhitmap.size());
-// System.out.println("EMEC mip hitmap size " + emechitmap.size());
-// System.out.println("HADEC mip hitmap size " + hadechitmap.size());
+ event.put("TrackPosMap",trkposmap);
}
public void setClusterNameExtension(String ext)
{