LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  September 2015

HPS-SVN September 2015

Subject:

r3704 - in /java/trunk/analysis/src/main/java/org/hps/analysis/dataquality: TridentMonitoring.java V0Monitoring.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Thu, 24 Sep 2015 22:13:27 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (540 lines)

Author: [log in to unmask]
Date: Thu Sep 24 15:13:24 2015
New Revision: 3704

Log:
fix more plots

Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TridentMonitoring.java
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.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	Thu Sep 24 15:13:24 2015
@@ -32,77 +32,91 @@
 
     private double ebeam = 1.05;
     private BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
-
-    String finalStateParticlesColName = "FinalStateParticles";
-    String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
-    String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
-    String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates";
-    String trackListName = "MatchedTracks";
-    String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"};
+    private static final int nCuts = 6;
+    private static final int PASS = 0;
+    private static final int FAIL = 1;
+
+    private String finalStateParticlesColName = "FinalStateParticles";
+    private String unconstrainedV0CandidatesColName = "UnconstrainedV0Candidates";
+    private String beamConV0CandidatesColName = "BeamspotConstrainedV0Candidates";
+    private String targetV0ConCandidatesColName = "TargetConstrainedV0Candidates";
+    private String trackListName = "MatchedTracks";
+    private String[] fpQuantNames = {"nV0_per_Event", "avg_BSCon_mass", "avg_BSCon_Vx", "avg_BSCon_Vy", "avg_BSCon_Vz", "sig_BSCon_Vx", "sig_BSCon_Vy", "sig_BSCon_Vz", "avg_BSCon_Chi2"};
 
     private final String plotDir = "TridentMonitoring/";
-    IHistogram2D trackTime2D;
-    IHistogram1D trackTimeDiff;
-    IHistogram2D vertexMassMomentum;
-    IHistogram2D vertexedTrackMomentum2D;
-    IHistogram2D pyEleVspyPos;
-    IHistogram2D pxEleVspxPos;
-    IHistogram2D vertexPxPy;
-    IHistogram1D goodVertexMass;
-    IHistogram2D goodVertexZVsMass;
-    IHistogram1D vertexX;
-    IHistogram1D vertexY;
-    IHistogram1D vertexZ;
-    IHistogram1D vertexPx;
-    IHistogram1D vertexPy;
-    IHistogram1D vertexPz;
-    IHistogram1D vertexU;
-    IHistogram1D vertexV;
-    IHistogram1D nCand;
+    private IHistogram2D trackTime2D;
+    private IHistogram1D trackTimeDiff;
+    private IHistogram2D vertexMassMomentum;
+    private IHistogram2D vertexedTrackMomentum2D;
+    private IHistogram2D pyEleVspyPos;
+    private IHistogram2D pxEleVspxPos;
+    private IHistogram2D vertexPxPy;
+    private IHistogram1D goodVertexMass;
+    private IHistogram2D goodVertexZVsMass;
+    private IHistogram1D vertexX;
+    private IHistogram1D vertexY;
+    private IHistogram1D vertexZ;
+    private IHistogram1D vertexPx;
+    private IHistogram1D vertexPy;
+    private IHistogram1D vertexPz;
+    private IHistogram1D vertexU;
+    private IHistogram1D vertexV;
+    private IHistogram1D nCand;
 //    IHistogram1D vertexW;
-    IHistogram2D vertexVZ;
-    IHistogram2D vertexZY;
-
-    IHistogram1D deltaP;
-    IHistogram1D deltaPRad;
-    IHistogram1D sumP;
-    IHistogram2D vertexedTrackMomentum2DRad;
+//    IHistogram2D vertexVZ;
+    private IHistogram2D vertexZY;
+
+    private IHistogram1D[][] cutVertexMass = new IHistogram1D[nCuts][2];
+    private IHistogram1D[][] cutVertexZ = new IHistogram1D[nCuts][2];
+    private IHistogram2D[][] cutVertexZVsMass = new IHistogram2D[nCuts][2];
+
+    private IHistogram1D deltaP;
+    private IHistogram1D deltaPRad;
+    private IHistogram1D sumP;
+    private IHistogram2D vertexedTrackMomentum2DRad;
 
     //clean up event first
-    int nTrkMax = 5;
-    int nPosMax = 1;
+    private int nTrkMax = 5;
+    private int nPosMax = 1;
+
+    private double maxChi2SeedTrack = 7.0;
+    private double maxChi2GBLTrack = 15.0;
+    private double maxVertChi2 = 7.0;
 
     //v0 cuts   
-    double v0Chi2 = 10;
-    double v0PzMax = 1.25 * ebeam;//GeV 
-    double v0PzMin = 0.1;// GeV
-    double v0PyMax = 0.2;//GeV absolute value
-    double v0PxMax = 0.2;//GeV absolute value
-    double v0VzMax = 25.0;// mm from target...someday make mass dependent
-    double v0VyMax = 1.0;// mm from target...someday make mass dependent
-    double v0VxMax = 2.0;// mm from target...someday make mass dependent
+    private double v0PzMax = 1.25 * ebeam;//GeV 
+    private double v0PzMin = 0.1;// GeV
+    private double v0PyMax = 0.2;//GeV absolute value
+    private double v0PxMax = 0.2;//GeV absolute value
+    private double v0VzMax = 50.0;// mm from target...someday make mass dependent
+    private double v0VyMax = 1.0;// mm from target...someday make mass dependent
+    private double v0VxMax = 2.0;// mm from target...someday make mass dependent
     //  track quality cuts
-    double trkChi2 = 10;
-    double beamPCut = 0.9;
-    double minPCut = 0.05;
-    double trkPyMax = 0.2;
-    double trkPxMax = 0.2;
-    double radCut = 0.8 * ebeam;
-    double trkTimeDiff = 16.0;
+    private double beamPCut = 0.85;
+    private double minPCut = 0.05;
+    private double trkPyMax = 0.2;
+    private double trkPxMax = 0.2;
+    private double radCut = 0.8 * ebeam;
+    private double trkTimeDiff = 16.0;
+    
+    private double l1IsoMin = 1.0;
 //cluster matching
-    boolean reqCluster = false;
-    int nClustMax = 3;
-    double eneLossFactor = 0.7; //average E/p roughly
-    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
-    float nRecoEvents = 0;
-    float nPassBasicCuts = 0;
-    float nPassV0Cuts = 0;
-    float nPassTrkCuts = 0;
-    float nPassTimeCuts = 0;
-
-    float nPassClusterCuts = 0;
+    private float nRecoEvents = 0;
+    private float nPassBasicCuts = 0;
+    private float nPassTrkQualityCuts = 0;
+    private float nPassV0QualityCuts = 0;
+    private float nPassV0Cuts = 0;
+    private float nPassTrkCuts = 0;
+    private float nPassTimeCuts = 0;
+    private float nPassIsoCuts = 0;
+
+    private float nPassClusterCuts = 0;
 
     public void setEbeam(double ebeam) {
         this.ebeam = ebeam;
@@ -110,7 +124,7 @@
 
     @Override
     protected void detectorChanged(Detector detector) {
-        System.out.println("TridentMonitoring::detectorChanged  Setting up the plotter");
+        System.out.println("TridendMonitoring::detectorChanged  Setting up the plotter");
         beamAxisRotation.setActiveEuler(Math.PI / 2, -0.0305, -Math.PI / 2);
 
         aida.tree().cd("/");
@@ -156,12 +170,24 @@
         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);
-        vertexVZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex Py over Ptot vs. Z", 100, -v0VzMax, v0VzMax, 100, -0.1, 0.1);
+//        vertexVZ = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex Py over Ptot vs. Z", 100, -v0VzMax, v0VzMax, 100, -0.1, 0.1);
         vertexZY = aida.histogram2D(plotDir + trkType + triggerType + "/" + "Vertex Z vs. Y", 100, -v0VyMax, v0VyMax, 100, -v0VzMax, v0VzMax);
+
+        for (int i = 0; i < nCuts; i++) {
+            for (int pass = 0; pass < 2; pass++) {
+                cutVertexZ[i][pass] = aida.histogram1D(String.format("%s%s%s/cut%d/%s: Vertex Z position (mm)", plotDir, trkType, triggerType, i, pass == PASS ? "pass" : "fail"),
+                        100, -v0VzMax, v0VzMax);
+                cutVertexMass[i][pass] = aida.histogram1D(String.format("%s%s%s/cut%d/%s: Vertex mass (GeV)", plotDir, trkType, triggerType, i, pass == PASS ? "pass" : "fail"),
+                        100, 0, 0.1 * ebeam);
+                cutVertexZVsMass[i][pass] = aida.histogram2D(String.format("%s%s%s/cut%d/%s: Vertex Z vs. mass", plotDir, trkType, triggerType, i, pass == PASS ? "pass" : "fail"),
+                        100, 0, 0.1 * ebeam, 100, -v0VzMax, v0VzMax);
+            }
+        }
     }
 
     @Override
-    public void process(EventHeader event) {
+    public void process(EventHeader event
+    ) {
         /*  make sure everything is there */
         if (!event.hasCollection(ReconstructedParticle.class, finalStateParticlesColName)) {
             return;
@@ -213,7 +239,7 @@
         nPassBasicCuts++;//passed some basic event-level cuts...
 
         List<ReconstructedParticle> candidateList = new ArrayList<>();
-        ReconstructedParticle bestCandidate;
+        List<ReconstructedParticle> vertCandidateList = new ArrayList<>();
         List<ReconstructedParticle> unConstrainedV0List = event.get(ReconstructedParticle.class, unconstrainedV0CandidatesColName);
         for (ReconstructedParticle uncV0 : unConstrainedV0List) {
             if (isGBL != TrackType.isGBL(uncV0.getType())) {
@@ -222,26 +248,8 @@
             Vertex uncVert = uncV0.getStartVertex();
 //  v0 & vertex-quality cuts
             Hep3Vector v0MomRot = VecOp.mult(beamAxisRotation, uncV0.getMomentum());
-            if (v0MomRot.z() > v0PzMax || v0MomRot.z() < v0PzMin) {
-                continue;
-            }
-            if (Math.abs(v0MomRot.y()) > v0PyMax) {
-                continue;
-            }
-            if (Math.abs(v0MomRot.x()) > v0PxMax) {
-                continue;
-            }
-            Hep3Vector v0Vtx = uncVert.getPosition();
-            if (Math.abs(v0Vtx.z()) > v0VzMax) {
-                continue;
-            }
-            if (Math.abs(v0Vtx.y()) > v0VyMax) {
-                continue;
-            }
-            if (Math.abs(v0Vtx.x()) > v0VxMax) {
-                continue;
-            }
-            nPassV0Cuts++;
+            Hep3Vector v0Vtx = VecOp.mult(beamAxisRotation, uncVert.getPosition());
+
             List<Track> tracks = new ArrayList<Track>();
             ReconstructedParticle electron = null, positron = null;
             for (ReconstructedParticle particle : uncV0.getParticles()) //                tracks.addAll(particle.getTracks());  //add add electron first, then positron...down below
@@ -266,27 +274,103 @@
             for (Track track : tracks) {
                 trackTimes.add(TrackUtils.getTrackTime(track, hitToStrips, hitToRotated));
             }
+
+            Double[] eleIso = TrackUtils.getIsolations(electron.getTracks().get(0), hitToStrips, hitToRotated);
+            Double[] posIso = TrackUtils.getIsolations(positron.getTracks().get(0), hitToStrips, hitToRotated);
+            double minL1Iso = -9999;
+            if (eleIso[0] != null && posIso[0] != null) {
+                double eleL1Iso = Math.min(Math.abs(eleIso[0]), Math.abs(eleIso[1]));
+                double posL1Iso = Math.min(Math.abs(posIso[0]), Math.abs(posIso[1]));
+                minL1Iso = Math.min(eleL1Iso, posL1Iso);
+//                    VtxZVsL1Iso.fill(minL1Iso, uncVert.getPosition().z());
+            }
+
+            int cutNum = 0;
+            boolean trackQualityCut = Math.max(tracks.get(0).getChi2(), tracks.get(1).getChi2()) < (isGBL ? maxChi2GBLTrack : maxChi2SeedTrack);
+            if (!trackQualityCut) {
+                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
+                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
+                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
+                continue;
+            }
+            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
+            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
+            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
+            cutNum++;
+            nPassTrkQualityCuts++;
+
+            boolean v0QualityCut = uncVert.getChi2() < maxVertChi2;
+            if (!v0QualityCut) {
+                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
+                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
+                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
+                continue;
+            }
+            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
+            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
+            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
+            cutNum++;
+            nPassV0QualityCuts++;
+
+            boolean vertexMomentumCut = v0MomRot.z() < v0PzMax && v0MomRot.z() > v0PzMin && Math.abs(v0MomRot.x()) < v0PxMax && Math.abs(v0MomRot.y()) < v0PyMax;
+            boolean vertexPositionCut = Math.abs(v0Vtx.x()) < v0VxMax && Math.abs(v0Vtx.y()) < v0VyMax && Math.abs(v0Vtx.z()) < v0VzMax;
+            if (!vertexMomentumCut || !vertexPositionCut) {
+                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
+                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
+                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
+                continue;
+            }
+            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
+            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
+            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
+            cutNum++;
+            nPassV0Cuts++;
+
             boolean trackTimeDiffCut = Math.abs(trackTimes.get(0) - trackTimes.get(1)) < trkTimeDiff;
 
             if (!trackTimeDiffCut) {
-                continue;
-            }
+                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
+                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
+                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
+                continue;
+            }
+            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
+            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
+            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
+            cutNum++;
             nPassTimeCuts++;
 
-            if (electron.getMomentum().y() * positron.getMomentum().y() > 0) {
-                continue;
-            }
+            boolean topBottomCut = electron.getMomentum().y() * positron.getMomentum().y() < 0;
             boolean pMinCut = electron.getMomentum().magnitude() > minPCut && positron.getMomentum().magnitude() > minPCut;
-            if (!pMinCut) {
-                continue;
-            }
             boolean pMaxCut = electron.getMomentum().magnitude() < beamPCut && positron.getMomentum().magnitude() < beamPCut;
-            if (!pMaxCut) {
-                continue;
-            }
+            if (!topBottomCut || !pMaxCut || !pMinCut) {
+                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
+                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
+                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
+                continue;
+            }
+            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
+            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
+            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
+            cutNum++;
             nPassTrkCuts++;
 
             candidateList.add(uncV0);
+
+            boolean isoCut = minL1Iso > l1IsoMin;
+            if (!isoCut) {
+                cutVertexZ[cutNum][FAIL].fill(v0Vtx.z());
+                cutVertexMass[cutNum][FAIL].fill(uncV0.getMass());
+                cutVertexZVsMass[cutNum][FAIL].fill(uncV0.getMass(), v0Vtx.z());
+                continue;
+            }
+            cutVertexZ[cutNum][PASS].fill(v0Vtx.z());
+            cutVertexMass[cutNum][PASS].fill(uncV0.getMass());
+            cutVertexZVsMass[cutNum][PASS].fill(uncV0.getMass(), v0Vtx.z());
+            cutNum++;
+            nPassIsoCuts++;
+            
+            vertCandidateList.add(uncV0);
         }
 
         nCand.fill(candidateList.size());
@@ -294,7 +378,7 @@
             return;
         }
         // pick the best candidate...for now just pick a random one. 
-        bestCandidate = candidateList.get((int) (Math.random() * candidateList.size()));
+        ReconstructedParticle bestCandidate = candidateList.get((int) (Math.random() * candidateList.size()));
 
         //fill some stuff: 
         ReconstructedParticle electron = null, positron = null;
@@ -330,7 +414,7 @@
         vertexPxPy.fill(pBestV0Rot.x(), pBestV0Rot.y());
         goodVertexMass.fill(bestCandidate.getMass());
         Vertex uncVert = bestCandidate.getStartVertex();
-        Hep3Vector v0Vtx = uncVert.getPosition();
+        Hep3Vector v0Vtx = VecOp.mult(beamAxisRotation, uncVert.getPosition());
         goodVertexZVsMass.fill(bestCandidate.getMass(), v0Vtx.z());
         vertexX.fill(v0Vtx.x());
         vertexY.fill(v0Vtx.y());
@@ -341,7 +425,7 @@
         vertexU.fill(pBestV0Rot.x() / pBestV0Rot.magnitude());
         vertexV.fill(pBestV0Rot.y() / pBestV0Rot.magnitude());
 //                    vertexW.fill(bestCandidate.getMomentum().z()/bestCandidate.getMomentum().magnitude());
-        vertexVZ.fill(v0Vtx.z(), pBestV0Rot.y() / pBestV0Rot.magnitude());
+//        vertexVZ.fill(v0Vtx.z(), pBestV0Rot.y() / pBestV0Rot.magnitude());
         vertexZY.fill(v0Vtx.y(), v0Vtx.z());
         if (bestCandidate.getMomentum().magnitude() > radCut) {
             vertexedTrackMomentum2DRad.fill(electron.getMomentum().magnitude(), positron.getMomentum().magnitude());
@@ -352,21 +436,27 @@
 
     @Override
     public void printDQMData() {
-        System.out.println("TridentMonitoring::printDQMData");
+        System.out.println("TridendMonitoring::printDQMData");
         for (Entry<String, Double> entry : monitoredQuantityMap.entrySet()) {
             System.out.println(entry.getKey() + " = " + entry.getValue());
         }
         System.out.println("*******************************");
 
-        System.out.println("TridentMonitoring::Tridend Selection Summary");
-
-        System.out.println("\t\t\tTrident Selection Summary");
+        System.out.println("TridendMonitoring::Tridend Selection Summary");
+
+        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("V0 Vertex   Cuts:\t\t" + nPassV0Cuts + "\t\t\t" + nPassV0Cuts / nPassBasicCuts + "\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("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("\t\t\tVertex Selection Summary");
+        System.out.println("******************************************************************************************");
+        System.out.println("Isolation   Cuts:\t\t" + nPassIsoCuts + "\t\t\t" + nPassIsoCuts / nPassTrkCuts + "\t\t\t" + nPassIsoCuts / nRecoEvents);
         System.out.println("******************************************************************************************");
     }
 
@@ -390,7 +480,8 @@
         }
     }
 
-    IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range) {
+    IFitResult fitVertexPosition(IHistogram1D h1d, IFitter fitter, double[] init, String range
+    ) {
         return fitter.fit(h1d, "g+p1", init, range);
     }
 

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/V0Monitoring.java	Thu Sep 24 15:13:24 2015
@@ -138,7 +138,7 @@
     private final String plotDir = "V0Monitoring/";
 
     double beamEnergy = 1.05; //GeV
-    private BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
+    private final BasicHep3Matrix beamAxisRotation = new BasicHep3Matrix();
 
     double maxFactor = 1.25;
     double feeMomentumCut = 0.8; //GeV
@@ -265,25 +265,26 @@
                 continue;
             Vertex uncVert = uncV0.getStartVertex();
             Hep3Vector pVtxRot = VecOp.mult(beamAxisRotation, uncV0.getMomentum());
+            Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, uncVert.getPosition());
             double theta = Math.acos(pVtxRot.z() / pVtxRot.magnitude());
             double phi = Math.atan2(pVtxRot.y(), pVtxRot.x());
-            unconVx.fill(uncVert.getPosition().x());
-            unconVy.fill(uncVert.getPosition().y());
-            unconVz.fill(uncVert.getPosition().z());
+            unconVx.fill(vtxPosRot.x());
+            unconVy.fill(vtxPosRot.y());
+            unconVz.fill(vtxPosRot.z());
             unconMass.fill(uncV0.getMass());
             unconChi2.fill(uncVert.getChi2());
-            unconVzVsChi2.fill(uncVert.getChi2(), uncVert.getPosition().z());
-            unconChi2VsTrkChi2.fill(uncV0.getParticles().get(0).getTracks().get(0).getChi2() + uncV0.getParticles().get(1).getTracks().get(0).getChi2(), uncVert.getChi2());
-
-            VtxZVsMass.fill(uncV0.getMass(), uncVert.getPosition().z());
-            VtxXVsVtxZ.fill(uncVert.getPosition().x(), uncVert.getPosition().z());
-            VtxYVsVtxZ.fill(uncVert.getPosition().y(), uncVert.getPosition().z());
-            VtxXVsVtxY.fill(uncVert.getPosition().x(), uncVert.getPosition().y());
-            VtxXVsVtxPx.fill(pVtxRot.x(), uncVert.getPosition().x());
-            VtxYVsVtxPy.fill(pVtxRot.y(), uncVert.getPosition().y());
-            VtxZVsVtxPx.fill(pVtxRot.x(), uncVert.getPosition().z());
-            VtxZVsVtxPy.fill(pVtxRot.y(), uncVert.getPosition().z());
-            VtxZVsVtxPz.fill(pVtxRot.z(), uncVert.getPosition().z());
+            unconVzVsChi2.fill(uncVert.getChi2(), vtxPosRot.z());
+            unconChi2VsTrkChi2.fill(Math.max(uncV0.getParticles().get(0).getTracks().get(0).getChi2(), uncV0.getParticles().get(1).getTracks().get(0).getChi2()), uncVert.getChi2());
+
+            VtxZVsMass.fill(uncV0.getMass(), vtxPosRot.z());
+            VtxXVsVtxZ.fill(vtxPosRot.x(), vtxPosRot.z());
+            VtxYVsVtxZ.fill(vtxPosRot.y(), vtxPosRot.z());
+            VtxXVsVtxY.fill(vtxPosRot.x(), vtxPosRot.y());
+            VtxXVsVtxPx.fill(pVtxRot.x(), vtxPosRot.x());
+            VtxYVsVtxPy.fill(pVtxRot.y(), vtxPosRot.y());
+            VtxZVsVtxPx.fill(pVtxRot.x(), vtxPosRot.z());
+            VtxZVsVtxPy.fill(pVtxRot.y(), vtxPosRot.z());
+            VtxZVsVtxPz.fill(pVtxRot.z(), vtxPosRot.z());
 
             //this always has 2 tracks. 
             List<ReconstructedParticle> trks = uncV0.getParticles();
@@ -306,7 +307,7 @@
                 ele = trks.get(1);
             }
             if (ele.getCharge() < 0 && pos.getCharge() > 0) {
-                VtxZVsTrkChi2.fill(uncV0.getParticles().get(0).getTracks().get(0).getChi2() + uncV0.getParticles().get(1).getTracks().get(0).getChi2(), uncVert.getPosition().z());
+                VtxZVsTrkChi2.fill(Math.max(uncV0.getParticles().get(0).getTracks().get(0).getChi2(), uncV0.getParticles().get(1).getTracks().get(0).getChi2()), uncVert.getPosition().z());
 
                 Double[] eleIso = TrackUtils.getIsolations(ele.getTracks().get(0), hitToStrips, hitToRotated);
                 Double[] posIso = TrackUtils.getIsolations(pos.getTracks().get(0), hitToStrips, hitToRotated);
@@ -347,17 +348,18 @@
                 continue;
             nTotV0++;
             Vertex bsVert = bsV0.getStartVertex();
-            bsconVx.fill(bsVert.getPosition().x());
-            bsconVy.fill(bsVert.getPosition().y());
-            bsconVz.fill(bsVert.getPosition().z());
+            Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, bsVert.getPosition());
+            bsconVx.fill(vtxPosRot.x());
+            bsconVy.fill(vtxPosRot.y());
+            bsconVz.fill(vtxPosRot.z());
             bsconMass.fill(bsV0.getMass());
             bsconChi2.fill(bsVert.getChi2());
-            bsconVzVsChi2.fill(bsVert.getChi2(), bsVert.getPosition().z());
-            bsconChi2VsTrkChi2.fill(bsV0.getParticles().get(0).getTracks().get(0).getChi2() + bsV0.getParticles().get(1).getTracks().get(0).getChi2(), bsVert.getChi2());
+            bsconVzVsChi2.fill(bsVert.getChi2(), vtxPosRot.z());
+            bsconChi2VsTrkChi2.fill(Math.max(bsV0.getParticles().get(0).getTracks().get(0).getChi2(), bsV0.getParticles().get(1).getTracks().get(0).getChi2()), bsVert.getChi2());
             sumMass += bsV0.getMass();
-            sumVx += bsVert.getPosition().x();
-            sumVy += bsVert.getPosition().y();
-            sumVz += bsVert.getPosition().z();
+            sumVx += vtxPosRot.x();
+            sumVy += vtxPosRot.y();
+            sumVz += vtxPosRot.z();
             sumChi2 += bsVert.getChi2();
         }
 
@@ -368,13 +370,14 @@
                 continue;
 
             Vertex tarVert = tarV0.getStartVertex();
-            tarconVx.fill(tarVert.getPosition().x());
-            tarconVy.fill(tarVert.getPosition().y());
-            tarconVz.fill(tarVert.getPosition().z());
+            Hep3Vector vtxPosRot = VecOp.mult(beamAxisRotation, tarVert.getPosition());
+            tarconVx.fill(vtxPosRot.x());
+            tarconVy.fill(vtxPosRot.y());
+            tarconVz.fill(vtxPosRot.z());
             tarconMass.fill(tarV0.getMass());
             tarconChi2.fill(tarVert.getChi2());
-            tarconVzVsChi2.fill(tarVert.getChi2(), tarVert.getPosition().z());
-            tarconChi2VsTrkChi2.fill(tarV0.getParticles().get(0).getTracks().get(0).getChi2() + tarV0.getParticles().get(1).getTracks().get(0).getChi2(), tarVert.getChi2());
+            tarconVzVsChi2.fill(tarVert.getChi2(), vtxPosRot.z());
+            tarconChi2VsTrkChi2.fill(Math.max(tarV0.getParticles().get(0).getTracks().get(0).getChi2(), tarV0.getParticles().get(1).getTracks().get(0).getChi2()), tarVert.getChi2());
         }
         List<ReconstructedParticle> finalStateParticles = event.get(ReconstructedParticle.class, finalStateParticlesColName);
         if (debug)

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use