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]); }