Print

Print


Author: [log in to unmask]
Date: Thu Apr 16 10:48:02 2015
New Revision: 2719

Log:
simple ana driver

Modified:
    java/trunk/users/src/main/java/org/hps/users/phansson/TruthMomentumResolutionDriver.java

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TruthMomentumResolutionDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TruthMomentumResolutionDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TruthMomentumResolutionDriver.java	Thu Apr 16 10:48:02 2015
@@ -1,12 +1,14 @@
 package org.hps.users.phansson;
 
 import hep.aida.IAnalysisFactory;
-import hep.aida.ICloud1D;
 import hep.aida.IDataPointSet;
 import hep.aida.IDataPointSetFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
+import hep.aida.ref.histogram.Histogram1D;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -16,11 +18,13 @@
 import java.util.logging.Logger;
 
 import org.hps.analysis.ecal.HPSMCParticlePlotsDriver;
+import org.lcsim.constants.Constants;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.Track;
 import org.lcsim.event.base.ParticleTypeClassifier;
 import org.lcsim.geometry.Detector;
+import org.lcsim.recon.tracking.seedtracker.SeedTrack;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
@@ -36,9 +40,12 @@
     int totalTracks = 0;
     private boolean _debug = false;
     private AIDA aida = AIDA.defaultInstance();
+    double bfield;
+    double bfac;
     //private AIDAFrame pFrame;
     IAnalysisFactory af = aida.analysisFactory();
     IPlotter pPlotter;
+    IPlotter pPlotterProp;
     IPlotter pPlotter2;
     IPlotter pPlotter22;
     IPlotter pPlotter3;    
@@ -55,17 +62,19 @@
     IHistogram1D hTruthMatchedNegTrackPdiff;
     IHistogram1D[] hTruthMatchedNegTrackPdiffvsP = new IHistogram1D[5];
     IDataPointSet hTruthMatchedNegTrackPres;
-    ICloud1D hTruthMatchedPosTrackPdiffPrev[] = new ICloud1D[5];
-    ICloud1D hTruthMatchedNegTrackPdiffPrev[] = new ICloud1D[5];
-    ICloud1D hNTracks;
+    IHistogram1D hTruthMatchedPosTrackPdiffPrev[] = new Histogram1D[5];
+    IHistogram1D hTruthMatchedNegTrackPdiffPrev[] = new Histogram1D[5];
+    IHistogram1D hNTracks;
     IHistogram1D trkCountVsEventPlot;
 
-    ICloud1D hNPosTracks;
-    ICloud1D hNNegTracks;
-    ICloud1D hNPositronsForTrack;
-    ICloud1D hNElectronsForTrack;
-    ICloud1D hNPositronsForTrackInv;
-    ICloud1D hNElectronsForTrackInv;
+    IHistogram1D hNPosTracks;
+    IHistogram1D hNNegTracks;
+    IHistogram1D hNPositronsForTrack;
+    IHistogram1D hNElectronsForTrack;
+    IHistogram1D hNPositronsForTrackInv;
+    IHistogram1D hNElectronsForTrackInv;
+    
+    IHistogram1D hTrackChi2;
     
     HashMap<Integer,MCParticle> mc_ele_prev = new HashMap<Integer, MCParticle>();
     HashMap<Integer,MCParticle> mc_pos_prev = new HashMap<Integer, MCParticle>();
@@ -93,8 +102,12 @@
     
     public void detectorChanged(Detector detector) {
         
-     
-      
+        bfield = detector.getFieldMap().getField(new BasicHep3Vector(0., 0., 1.)).y();
+        System.out.println("b-field = " + bfield);
+        
+        
+        bfac = Constants.fieldConversion;
+        
         //pFrame = new AIDAFrame();
         //pFrame.setTitle("Truth p Plots");
         makePlots();
@@ -107,9 +120,15 @@
        
     }
     
-    public double getMomentum(Track track) {
-        double[] p_vec = track.getTrackStates().get(0).getMomentum();
-        return Math.sqrt(p_vec[0]*p_vec[0] + p_vec[1]*p_vec[1] +p_vec[2]*p_vec[2]);
+    public double getPt(Track trk, double b) {
+        double R = 1.0/trk.getTrackStates().get(0).getOmega();
+        System.out.println("Omega " + trk.getTrackStates().get(0).getOmega() + " R " + R + " b " + b + " bfac " + Constants.fieldConversion);
+        return Constants.fieldConversion * b * Math.abs(R);
+    }
+    
+    public double getP(Track trk, double b) {
+        double theta = Math.atan(1.0/trk.getTrackStates().get(0).getTanLambda());
+        return getPt(trk,b) / Math.sin(theta);
     }
     
     
@@ -156,8 +175,11 @@
         int[] ntrks = {0,0,0};
 
         for (Track trk : tracklist) {
-            double p = this.getMomentum(trk);
+            //Hep3Vector p_vec = new BasicHep3Vector(trk.getTrackStates().get(0).getMomentum());
+            double p = getP(trk,bfield);
+            System.out.printf("p %f pT %f\n", p, getPt(trk,bfield));
             this.hTrackP.fill(p);
+            this.hTrackChi2.fill(trk.getChi2());
             if(this.isElectronTrack(trk)) {
                 this.hNegTrackP.fill(p);
                 if(electron!=null) {
@@ -283,7 +305,15 @@
     private void makePlots() {
     
     
+        pPlotterProp = af.createPlotterFactory().create("Track recon plots");
+        pPlotterProp.show();
+        pPlotterProp.setTitle("Track recon plots");
+        pPlotterProp.createRegions(1, 2);       
+        hTrackChi2 = aida.histogram1D("Track chi2", 30, 0,10);
+        pPlotterProp.region(0).plot(hTrackChi2);
+        
         pPlotter = af.createPlotterFactory().create("Truth p Plots");
+        pPlotter.show();
         pPlotter.setTitle("Truth p Plots");
         //pFrame.addPlotter(pPlotter);
         IPlotterStyle style0 = pPlotter.style();
@@ -307,17 +337,19 @@
         IDataPointSetFactory dpsf = aida.analysisFactory().createDataPointSetFactory(aida.tree());
         hTruthMatchedPosTrackPres = dpsf.create("hTruthMatchedPosTrackPres", "RMS(Track p - p(e+)) q>0 vs P",2);
         hTruthMatchedNegTrackPres = dpsf.create("hTruthMatchedNegTrackPres", "RMS(Track p - p(e-)) q<0 vs P",2);
-        hNTracks = aida.cloud1D("Ntrks");
+        hNTracks = aida.histogram1D("Ntrks",6, -0.5, 5.5);
+                
+                
         trkCountVsEventPlot = aida.histogram1D("Number of Tracks vs Event Nr", 501, -0.5, 500.5);
-	trkCountVsEventPlot.annotation().addItem("xAxisLabel", "Event Number");
-        hNPosTracks = aida.cloud1D("Ntrks q>0");
-        hNNegTracks = aida.cloud1D("Ntrks q<0");    
+        trkCountVsEventPlot.annotation().addItem("xAxisLabel", "Event Number");
+        hNPosTracks = aida.histogram1D("Ntrks q>0",6, -0.5, 5.5);
+        hNNegTracks = aida.histogram1D("Ntrks q<0",6, -0.5, 5.5);    
         hElectronP = aida.histogram1D("Electron Momentum", 50, 0,4);
         hPositronP = aida.histogram1D("Positron Momentum", 50, 0,4);      
-        hNPositronsForTrack = aida.cloud1D("N positrons given track with q>0");
-        hNElectronsForTrack = aida.cloud1D("N electrons given track with q<0");
-        hNPositronsForTrackInv = aida.cloud1D("N positrons given track with q<0");
-        hNElectronsForTrackInv = aida.cloud1D("N electrons given track with q>0");
+        hNPositronsForTrack = aida.histogram1D("N positrons given track with q>0",6, -0.5, 5.5);
+        hNElectronsForTrack = aida.histogram1D("N electrons given track with q<0",6, -0.5, 5.5);
+        hNPositronsForTrackInv = aida.histogram1D("N positrons given track with q<0",6, -0.5, 5.5);
+        hNElectronsForTrackInv = aida.histogram1D("N electrons given track with q>0",6, -0.5, 5.5);
 
         
         pPlotter.region(0).plot(hTrackP);
@@ -371,8 +403,8 @@
         pPlotter3.createRegions(2, 5);
         
         for(int i=0;i<5;++i) {
-            hTruthMatchedPosTrackPdiffPrev[i] = aida.cloud1D("Track p - p(e+) q>0 BC=-" + i);
-            hTruthMatchedNegTrackPdiffPrev[i] = aida.cloud1D("Track p - p(e-) q<0 BC=-" + i);
+            hTruthMatchedPosTrackPdiffPrev[i] = aida.histogram1D("Track p - p(e+) q>0 BC=-" + i, 100, -0.2,0.2);
+            hTruthMatchedNegTrackPdiffPrev[i] = aida.histogram1D("Track p - p(e-) q<0 BC=-" + i, 100, -0.2,0.2);
             pPlotter3.region(i).plot(hTruthMatchedPosTrackPdiffPrev[i]);
             pPlotter3.region(5+i).plot(hTruthMatchedNegTrackPdiffPrev[i]);
         }