Author: [log in to unmask]
Date: Fri Sep 25 15:51:49 2015
New Revision: 3716
Log:
stuff
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java Fri Sep 25 15:51:49 2015
@@ -49,6 +49,7 @@
private IHistogram2D trackTime2D;
private IHistogram1D trackTimeDiff;
private IHistogram2D vertexMassMomentum;
+ private IHistogram2D vertexZVsMomentum;
private IHistogram2D vertexedTrackMomentum2D;
private IHistogram2D pyEleVspyPos;
private IHistogram2D pxEleVspxPos;
@@ -64,6 +65,7 @@
private IHistogram1D vertexU;
private IHistogram1D vertexV;
private IHistogram1D nCand;
+ private IHistogram1D nVtxCand;
// IHistogram1D vertexW;
// IHistogram2D vertexVZ;
private IHistogram2D vertexZY;
@@ -96,21 +98,22 @@
// track quality cuts
private double beamPCut = 0.85;
private double minPCut = 0.05;
- private double trkPyMax = 0.2;
- private double trkPxMax = 0.2;
+// private double trkPyMax = 0.2;
+// private double trkPxMax = 0.2;
private double radCut = 0.8 * ebeam;
private double trkTimeDiff = 16.0;
private double clusterTimeDiffCut = 2.5;
private double l1IsoMin = 1.0;
//cluster matching
- private boolean reqCluster = false;
- private int nClustMax = 3;
- private double eneLossFactor = 0.7; //average E/p roughly
- private double eneOverPCut = 0.3; //|(E/p)_meas - (E/p)_mean|<eneOverPCut
+// private boolean reqCluster = false;
+// private int nClustMax = 3;
+// private double eneLossFactor = 0.7; //average E/p roughly
+// private double eneOverPCut = 0.3; //|(E/p)_meas - (E/p)_mean|<eneOverPCut
//counters
- private float nRecoEvents = 0;
+ private float nEvents = 0;
+ private float nRecoV0 = 0;
private float nPassBasicCuts = 0;
private float nPassTrkQualityCuts = 0;
private float nPassV0QualityCuts = 0;
@@ -120,8 +123,6 @@
private float nPassClusterMatchCuts = 0;
private float nPassFrontHitsCuts = 0;
private float nPassIsoCuts = 0;
-
- private float nPassClusterCuts = 0;
public void setEbeam(double ebeam) {
this.ebeam = ebeam;
@@ -157,21 +158,23 @@
trackTimeDiff = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Track time difference", 100, -10, 10);
trackTime2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Track time vs. track time", 100, -10, 10, 100, -10, 10);
vertexMassMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex mass vs. vertex momentum", 100, 0, 1.1, 100, 0, 0.1);
+ vertexZVsMomentum = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex Z vs. vertex momentum", 100, -v0VzMax, v0VzMax, 100, 0, 0.1);
vertexedTrackMomentum2D = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Positron vs. electron momentum", 100, 0, 1.1, 100, 0, 1.1);
- vertexedTrackMomentum2DRad = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Positron vs. electron momentum: Radiative", 100, 0, 1.1, 100, 0, 1.1);
+ vertexedTrackMomentum2DRad = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Positron vs. electron momentum: radiative", 100, 0, 1.1, 100, 0, 1.1);
vertexPxPy = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex Py vs. Px", 100, -0.04, 0.04, 100, -0.04, 0.04);
goodVertexMass = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Good vertex mass", 100, 0, 0.11);
goodVertexZVsMass = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Good vertex Z vs. mass", 100, 0, 0.11, 100, -v0VzMax, v0VzMax);
nCand = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Number of Trident Candidates", 5, 0, 4);
+ nVtxCand = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Number of Vertexing Candidates", 5, 0, 4);
deltaP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Positron - electron momentum", 100, -1., 1.0);
- deltaPRad = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Positron - electron momentum", 100, -1., 1.0);
- sumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Positron + electron momentum", 100, 0.2, 1.25);
+ deltaPRad = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Positron - electron momentum: radiative", 100, -1., 1.0);
+ sumP = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Positron + electron momentum", 100, v0PzMin, v0PzMax);
vertexX = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex X Position (mm)", 100, -v0VxMax, v0VxMax);
vertexY = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Y Position (mm)", 100, -v0VyMax, v0VyMax);
vertexZ = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Z Position (mm)", 100, -v0VzMax, v0VzMax);
- vertexPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Px (GeV)", 100, -0.1, 0.1);
- vertexPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Py (GeV)", 100, -0.1, 0.1);
- vertexPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Pz (GeV)", 100, 0.0, v0PzMax);
+ vertexPx = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Px (GeV)", 100, -v0PxMax, v0PxMax);
+ vertexPy = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Py (GeV)", 100, -v0PyMax, v0PyMax);
+ vertexPz = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Pz (GeV)", 100, v0PzMin, v0PzMax);
vertexU = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Px over Ptot (GeV)", 100, -0.1, 0.1);
vertexV = aida.histogram1D(plotDir + trkType + triggerType + "/" + "Vertex Py over Ptot (GeV)", 100, -0.1, 0.1);
// vertexW = aida.histogram1D(plotDir +trkType+ triggerType + "/" + "Vertex Pz overPtot (GeV)", 100, 0.95, 1.0);
@@ -215,7 +218,16 @@
return;
}
- nRecoEvents++;
+ nEvents++;
+
+ int nV0 = 0;
+ List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName);
+ for (ReconstructedParticle v0 : unConstrainedV0List) {
+ if (isGBL == TrackType.isGBL(v0.getType())) {
+ nV0++;
+ }
+ }
+ nRecoV0 += nV0;
RelationalTable hitToStrips = TrackUtils.getHitToStripsTable(event);
RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event);
@@ -241,11 +253,10 @@
return;
}
- nPassBasicCuts++;//passed some basic event-level cuts...
+ nPassBasicCuts += nV0;//passed some basic event-level cuts...
List<ReconstructedParticle> candidateList = new ArrayList<>();
List<ReconstructedParticle> vertCandidateList = new ArrayList<>();
- List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName);
for (ReconstructedParticle uncV0 : unConstrainedV0List) {
if (isGBL != TrackType.isGBL(uncV0.getType())) {
continue;
@@ -258,7 +269,7 @@
List<Track> tracks = new ArrayList<Track>();
ReconstructedParticle electron = uncV0.getParticles().get(ReconParticleDriver.ELECTRON);
ReconstructedParticle positron = uncV0.getParticles().get(ReconParticleDriver.POSITRON);
- if (!(electron.getCharge() < 0 && positron.getCharge() > 0)) {
+ if (electron.getCharge() != -1 || positron.getCharge() != 1) {
throw new RuntimeException("incorrect charge on v0 daughters");
}
tracks.add(electron.getTracks().get(0));
@@ -397,6 +408,7 @@
}
nCand.fill(candidateList.size());
+ nVtxCand.fill(vertCandidateList.size());
if (candidateList.isEmpty()) {
return;
}
@@ -404,18 +416,9 @@
ReconstructedParticle bestCandidate = candidateList.get((int) (Math.random() * candidateList.size()));
//fill some stuff:
- ReconstructedParticle electron = null, positron = null;
- for (ReconstructedParticle particle : bestCandidate.getParticles()) // tracks.addAll(particle.getTracks()); //add add electron first, then positron...down below
- {
- if (particle.getCharge() > 0) {
- positron = particle;
- } else if (particle.getCharge() < 0) {
- electron = particle;
- } else {
- throw new RuntimeException("expected only electron and positron in vertex, got something with charge 0");
- }
- }
- if (electron == null || positron == null) {
+ ReconstructedParticle electron = bestCandidate.getParticles().get(ReconParticleDriver.ELECTRON);
+ ReconstructedParticle positron = bestCandidate.getParticles().get(ReconParticleDriver.POSITRON);
+ if (electron.getCharge() != -1 || positron.getCharge() != 1) {
throw new RuntimeException("vertex needs e+ and e- but is missing one or both");
}
@@ -424,9 +427,12 @@
Hep3Vector pBestV0Rot = VecOp.mult(beamAxisRotation, bestCandidate.getMomentum());
Hep3Vector pEleRot = VecOp.mult(beamAxisRotation, electron.getMomentum());
Hep3Vector pPosRot = VecOp.mult(beamAxisRotation, positron.getMomentum());
+ Vertex uncVert = bestCandidate.getStartVertex();
+ Hep3Vector v0Vtx = VecOp.mult(beamAxisRotation, uncVert.getPosition());
trackTime2D.fill(tEle, tPos);
trackTimeDiff.fill(tEle - tPos);
+ vertexZVsMomentum.fill(bestCandidate.getMomentum().magnitude(), v0Vtx.z());
vertexMassMomentum.fill(bestCandidate.getMomentum().magnitude(), bestCandidate.getMass());
vertexedTrackMomentum2D.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude());
pyEleVspyPos.fill(pEleRot.y(), pPosRot.y());
@@ -436,8 +442,6 @@
vertexPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
goodVertexMass.fill(bestCandidate.getMass());
- Vertex uncVert = bestCandidate.getStartVertex();
- Hep3Vector v0Vtx = VecOp.mult(beamAxisRotation, uncVert.getPosition());
goodVertexZVsMass.fill(bestCandidate.getMass(), v0Vtx.z());
vertexX.fill(v0Vtx.x());
vertexY.fill(v0Vtx.y());
@@ -469,19 +473,19 @@
System.out.println("\t\t\tTridend Selection Summary");
System.out.println("******************************************************************************************");
- System.out.println("Number of Events:\t\t" + nRecoEvents + "\t\t\t" + (nRecoEvents) / nRecoEvents + "\t\t\t" + nRecoEvents / nRecoEvents);
- System.out.println("N(particle) Cuts:\t\t" + nPassBasicCuts + "\t\t\t" + nPassBasicCuts / nRecoEvents + "\t\t\t" + nPassBasicCuts / nRecoEvents);
- System.out.println("Trk Quality Cuts:\t\t" + nPassTrkQualityCuts + "\t\t\t" + nPassTrkQualityCuts / nPassBasicCuts + "\t\t\t" + nPassTrkQualityCuts / nRecoEvents);
- System.out.println("V0 Quality Cuts:\t\t" + nPassV0QualityCuts + "\t\t\t" + nPassV0QualityCuts / nPassTrkQualityCuts + "\t\t\t" + nPassV0QualityCuts / nRecoEvents);
- System.out.println("V0 Vertex Cuts:\t\t" + nPassV0Cuts + "\t\t\t" + nPassV0Cuts / nPassV0QualityCuts + "\t\t\t" + nPassV0Cuts / nRecoEvents);
- System.out.println("Timing Cuts:\t\t" + nPassTimeCuts + "\t\t\t" + nPassTimeCuts / nPassV0Cuts + "\t\t\t" + nPassTimeCuts / nRecoEvents);
- System.out.println("Tracking Cuts:\t\t" + nPassTrkCuts + "\t\t\t" + nPassTrkCuts / nPassTimeCuts + "\t\t\t" + nPassTrkCuts / nRecoEvents);
- System.out.println("Cluster Cuts:\t\t" + nPassClusterMatchCuts + "\t\t\t" + nPassClusterMatchCuts / nPassTrkCuts + "\t\t\t" + nPassClusterMatchCuts / nRecoEvents);
+ System.out.println("Number of V0:\t\t" + nRecoV0 + "\t\t\t" + nRecoV0 / nRecoV0 + "\t\t\t" + nRecoV0 / nRecoV0 + "\t\t\t" + nRecoV0 / nEvents);
+ System.out.println("N(particle) Cuts:\t\t" + nPassBasicCuts + "\t\t\t" + nPassBasicCuts / nRecoV0 + "\t\t\t" + nPassBasicCuts / nRecoV0 + "\t\t\t" + nPassBasicCuts / nEvents);
+ System.out.println("Trk Quality Cuts:\t\t" + nPassTrkQualityCuts + "\t\t\t" + nPassTrkQualityCuts / nPassBasicCuts + "\t\t\t" + nPassTrkQualityCuts / nRecoV0 + "\t\t\t" + nPassTrkQualityCuts / nEvents);
+ System.out.println("V0 Quality Cuts:\t\t" + nPassV0QualityCuts + "\t\t\t" + nPassV0QualityCuts / nPassTrkQualityCuts + "\t\t\t" + nPassV0QualityCuts / nRecoV0 + "\t\t\t" + nPassV0QualityCuts / nEvents);
+ System.out.println("V0 Vertex Cuts:\t\t" + nPassV0Cuts + "\t\t\t" + nPassV0Cuts / nPassV0QualityCuts + "\t\t\t" + nPassV0Cuts / nRecoV0 + "\t\t\t" + nPassV0Cuts / nEvents);
+ System.out.println("Timing Cuts:\t\t" + nPassTimeCuts + "\t\t\t" + nPassTimeCuts / nPassV0Cuts + "\t\t\t" + nPassTimeCuts / nRecoV0 + "\t\t\t" + nPassTimeCuts / nEvents);
+ System.out.println("Tracking Cuts:\t\t" + nPassTrkCuts + "\t\t\t" + nPassTrkCuts / nPassTimeCuts + "\t\t\t" + nPassTrkCuts / nRecoV0 + "\t\t\t" + nPassTrkCuts / nEvents);
+ System.out.println("Cluster Cuts:\t\t" + nPassClusterMatchCuts + "\t\t\t" + nPassClusterMatchCuts / nPassTrkCuts + "\t\t\t" + nPassClusterMatchCuts / nRecoV0 + "\t\t\t" + nPassClusterMatchCuts / nEvents);
System.out.println("\t\t\tVertex Selection Summary");
System.out.println("******************************************************************************************");
- System.out.println("Front Hits Cuts:\t\t" + nPassFrontHitsCuts + "\t\t\t" + nPassFrontHitsCuts / nPassClusterMatchCuts + "\t\t\t" + nPassFrontHitsCuts / nRecoEvents);
- System.out.println("Isolation Cuts:\t\t" + nPassIsoCuts + "\t\t\t" + nPassIsoCuts / nPassFrontHitsCuts + "\t\t\t" + nPassIsoCuts / nRecoEvents);
+ System.out.println("Front Hits Cuts:\t\t" + nPassFrontHitsCuts + "\t\t\t" + nPassFrontHitsCuts / nPassClusterMatchCuts + "\t\t\t" + nPassFrontHitsCuts / nRecoV0 + "\t\t\t" + nPassFrontHitsCuts / nEvents);
+ System.out.println("Isolation Cuts:\t\t" + nPassIsoCuts + "\t\t\t" + nPassIsoCuts / nPassFrontHitsCuts + "\t\t\t" + nPassIsoCuts / nRecoV0 + "\t\t\t" + nPassIsoCuts / nEvents);
System.out.println("******************************************************************************************");
}
|