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  June 2016

HPS-SVN June 2016

Subject:

r4408 - /java/trunk/users/src/main/java/org/hps/users/mrsolt/TrackHitEfficiency.java

From:

[log in to unmask]

Reply-To:

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

Date:

Tue, 21 Jun 2016 06:49:35 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (747 lines)

Author: [log in to unmask]
Date: Mon Jun 20 23:49:34 2016
New Revision: 4408

Log:
Updated Hit Efficiency Driver.

Modified:
    java/trunk/users/src/main/java/org/hps/users/mrsolt/TrackHitEfficiency.java

Modified: java/trunk/users/src/main/java/org/hps/users/mrsolt/TrackHitEfficiency.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mrsolt/TrackHitEfficiency.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mrsolt/TrackHitEfficiency.java	Mon Jun 20 23:49:34 2016
@@ -38,6 +38,7 @@
 import org.lcsim.event.ReconstructedParticle;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackCross;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
@@ -79,6 +80,33 @@
     IHistogram1D HitEfficiency_Momentum_bot;
     IHistogram1D HitEfficiencyError_Momentum_top;
     IHistogram1D HitEfficiencyError_Momentum_bot;
+    
+    IHistogram1D HitEfficiencyElec_top;
+    IHistogram1D HitEfficiencyPosi_top;
+    IHistogram1D HitEfficiencyElec_bot;
+    IHistogram1D HitEfficiencyPosi_bot;
+    IHistogram1D HitEfficiencyErrorElec_top;
+    IHistogram1D HitEfficiencyErrorPosi_top;
+    IHistogram1D HitEfficiencyErrorElec_bot;
+    IHistogram1D HitEfficiencyErrorPosi_bot;
+    
+    IHistogram1D HitEfficiencyElecStereo_top;
+    IHistogram1D HitEfficiencyElecAxial_top;
+    IHistogram1D HitEfficiencyPosiStereo_top;
+    IHistogram1D HitEfficiencyPosiAxial_top;
+    IHistogram1D HitEfficiencyElecStereo_bot;
+    IHistogram1D HitEfficiencyElecAxial_bot;
+    IHistogram1D HitEfficiencyPosiStereo_bot;
+    IHistogram1D HitEfficiencyPosiAxial_bot;
+    IHistogram1D HitEfficiencyErrorElecStereo_top;
+    IHistogram1D HitEfficiencyErrorElecAxial_top;
+    IHistogram1D HitEfficiencyErrorPosiStereo_top;
+    IHistogram1D HitEfficiencyErrorPosiAxial_top;
+    IHistogram1D HitEfficiencyErrorElecStereo_bot;
+    IHistogram1D HitEfficiencyErrorElecAxial_bot;
+    IHistogram1D HitEfficiencyErrorPosiStereo_bot;
+    IHistogram1D HitEfficiencyErrorPosiAxial_bot;
+	
     IHistogram1D TrackXTop;
     IHistogram1D TrackYTop;
     IHistogram1D TrackXBot;
@@ -102,6 +130,10 @@
     Map<Integer, IHistogram1D> UnbiasedResidualX_bot = new HashMap<Integer,IHistogram1D>();
     Map<Integer, IHistogram1D> UnbiasedResidualY_top = new HashMap<Integer,IHistogram1D>();
     Map<Integer, IHistogram1D> UnbiasedResidualY_bot = new HashMap<Integer,IHistogram1D>();
+    Map<Integer, IHistogram1D> HitEfficiency_MomentumLay_top = new HashMap<Integer,IHistogram1D>();
+    Map<Integer, IHistogram1D> HitEfficiency_MomentumLay_bot = new HashMap<Integer,IHistogram1D>();
+    Map<Integer, IHistogram1D> HitEfficiency_MomentumLayError_top = new HashMap<Integer,IHistogram1D>();
+    Map<Integer, IHistogram1D> HitEfficiency_MomentumLayError_bot = new HashMap<Integer,IHistogram1D>();
     
     int num_lay = 6;
     
@@ -186,6 +218,16 @@
     double botYResidualCut6 = 3;
     
     int nSigCut = 1;
+    
+    double[] gapXtop = new double[num_lay];
+    double[] gapXbot = new double[num_lay];
+    double gapXtop4 = 15;
+    double gapXtop5 = 21;
+    double gapXtop6 = 27;
+    double gapXbot4 = 15;
+    double gapXbot5 = 21;
+    double gapXbot6 = 27;
+    
 
     TrackerHitUtils trackerHitUtils = new TrackerHitUtils();
     
@@ -207,9 +249,9 @@
     double[] bottomTracksPerMissingLayer = new double[5];
     double[] bottomTracksWithHitOnMissingLayer = new double[5];
 
-    int nBinx = 110;
-    int nBiny = 120;
-    int nP = 20;
+    int nBinx = 500;
+    int nBiny = 700;
+    int nP = 50;
     int[] numberOfTopTracks = new int[num_lay];
     int[] numberOfBotTracks = new int[num_lay];
     int[] numberOfTopTracksWithHitOnMissingLayer = new int[num_lay];
@@ -218,6 +260,57 @@
     double[] hitEfficiencyBot = new double[num_lay];
     double[] errorTop = new double[num_lay];
     double[] errorBot = new double[num_lay];
+    
+    int[] numberOfTopTracksElec = new int[num_lay];
+    int[] numberOfTopTracksPosi = new int[num_lay];
+    int[] numberOfBotTracksElec = new int[num_lay];
+    int[] numberOfBotTracksPosi = new int[num_lay];
+    int[] numberOfTopTracksWithHitOnMissingLayerElec = new int[num_lay];
+    int[] numberOfTopTracksWithHitOnMissingLayerPosi = new int[num_lay];
+    int[] numberOfBotTracksWithHitOnMissingLayerElec = new int[num_lay];
+    int[] numberOfBotTracksWithHitOnMissingLayerPosi = new int[num_lay];
+    double[] hitEfficiencyTopElec = new double[num_lay];
+    double[] hitEfficiencyTopPosi = new double[num_lay];
+    double[] hitEfficiencyBotElec = new double[num_lay];
+    double[] hitEfficiencyBotPosi = new double[num_lay];
+    double[] errorTopElec = new double[num_lay];
+    double[] errorTopPosi = new double[num_lay];
+    double[] errorBotElec = new double[num_lay];
+    double[] errorBotPosi = new double[num_lay];
+    
+    int[] numberOfTopTracksElecStereo = new int[num_lay];
+    int[] numberOfTopTracksElecAxial = new int[num_lay];
+    int[] numberOfTopTracksPosiStereo = new int[num_lay];
+    int[] numberOfTopTracksPosiAxial = new int[num_lay];
+    int[] numberOfBotTracksElecStereo = new int[num_lay];
+    int[] numberOfBotTracksElecAxial = new int[num_lay];
+    int[] numberOfBotTracksPosiStereo = new int[num_lay];
+    int[] numberOfBotTracksPosiAxial = new int[num_lay];
+    int[] numberOfTopTracksWithHitOnMissingLayerElecStereo = new int[num_lay];
+    int[] numberOfTopTracksWithHitOnMissingLayerElecAxial = new int[num_lay];
+    int[] numberOfTopTracksWithHitOnMissingLayerPosiStereo = new int[num_lay];
+    int[] numberOfTopTracksWithHitOnMissingLayerPosiAxial = new int[num_lay];
+    int[] numberOfBotTracksWithHitOnMissingLayerElecStereo = new int[num_lay];
+    int[] numberOfBotTracksWithHitOnMissingLayerElecAxial = new int[num_lay];
+    int[] numberOfBotTracksWithHitOnMissingLayerPosiStereo = new int[num_lay];
+    int[] numberOfBotTracksWithHitOnMissingLayerPosiAxial = new int[num_lay];
+    double[] hitEfficiencyTopElecStereo = new double[num_lay];
+    double[] hitEfficiencyTopElecAxial = new double[num_lay];
+    double[] hitEfficiencyTopPosiStereo = new double[num_lay];
+    double[] hitEfficiencyTopPosiAxial = new double[num_lay];
+    double[] hitEfficiencyBotElecStereo = new double[num_lay];
+    double[] hitEfficiencyBotElecAxial = new double[num_lay];
+    double[] hitEfficiencyBotPosiStereo = new double[num_lay];
+    double[] hitEfficiencyBotPosiAxial = new double[num_lay];
+    double[] errorTopElecStereo = new double[num_lay];
+    double[] errorTopElecAxial = new double[num_lay];
+    double[] errorTopPosiStereo = new double[num_lay];
+    double[] errorTopPosiAxial = new double[num_lay];
+    double[] errorBotElecStereo = new double[num_lay];
+    double[] errorBotElecAxial = new double[num_lay];
+    double[] errorBotPosiStereo = new double[num_lay];
+    double[] errorBotPosiAxial = new double[num_lay];
+    
     int[][][] numberOfTopTracksPos = new int[num_lay][nBinx][nBiny];
     int[][][] numberOfBotTracksPos = new int[num_lay][nBinx][nBiny];
     int[][][] numberOfTopTracksWithHitOnMissingLayerPos = new int[num_lay][nBinx][nBiny];
@@ -233,36 +326,46 @@
     double[] hitEfficiencyMomentumTop = new double[nP];
     double[] hitEfficiencyMomentumBot = new double[nP];
     double[] hitEfficiencyErrorMomentumTop = new double[nP];
-    double[] hitEfficiencyErrorMomentumBot = new double[nP];
+    double[] hitEfficiencyErrorMomentumBot = new double[nP];  
+    Map<Integer, int[]> numberOfTopTracksMomentumLay = new HashMap<Integer,int[]>();
+    Map<Integer, int[]> numberOfBotTracksMomentumLay = new HashMap<Integer,int[]>();
+    Map<Integer, int[]> numberOfTopTracksWithHitOnMissingLayerMomentumLay = new HashMap<Integer,int[]>();
+    Map<Integer, int[]> numberOfBotTracksWithHitOnMissingLayerMomentumLay = new HashMap<Integer,int[]>();
+    Map<Integer, double[]> hitEfficiencyMomentumLayTop = new HashMap<Integer,double[]>();
+    Map<Integer, double[]> hitEfficiencyMomentumLayBot = new HashMap<Integer,double[]>();
+    Map<Integer, double[]> hitEfficiencyErrorMomentumLayTop = new HashMap<Integer,double[]>();
+    Map<Integer, double[]> hitEfficiencyErrorMomentumLayBot = new HashMap<Integer,double[]>();
     
     double lowerLimX = -100;
-    double upperLimX = 120;
-    double lowerLimY = -50;
+    double upperLimX = 130;
+    double lowerLimY = -70;
     double upperLimY = 70;
     double lowerLimP;
     double upperLimP;
    
-    double angle = -0.035;
+    double angle = 0.0305;
     double xComp = Math.sin(angle);
     double yComp = Math.cos(angle);
     double zComp = 0.0;
     Hep3Vector unitNormal = new BasicHep3Vector(xComp,yComp,zComp);
     
-    Hep3Vector zPointonPlaneLay1Top = new BasicHep3Vector(0,92.09,0);
-    Hep3Vector zPointonPlaneLay2Top = new BasicHep3Vector(0,192.1,0);
-    Hep3Vector zPointonPlaneLay3Top = new BasicHep3Vector(0,292.2,0);
-    Hep3Vector zPointonPlaneLay4Top = new BasicHep3Vector(0,492.4,0);
-    Hep3Vector zPointonPlaneLay5Top = new BasicHep3Vector(0,692.7,0);
-    Hep3Vector zPointonPlaneLay6Top = new BasicHep3Vector(0,893.2,0);
+    Hep3Vector zPointonPlaneLay1Top = new BasicHep3Vector(0,0,92.09);
+    Hep3Vector zPointonPlaneLay2Top = new BasicHep3Vector(0,0,192.1);
+    Hep3Vector zPointonPlaneLay3Top = new BasicHep3Vector(0,0,292.2);
+    Hep3Vector zPointonPlaneLay4Top = new BasicHep3Vector(0,0,492.4);
+    Hep3Vector zPointonPlaneLay5Top = new BasicHep3Vector(0,0,692.7);
+    Hep3Vector zPointonPlaneLay6Top = new BasicHep3Vector(0,0,893.2);
     Hep3Vector[] zPointonPlaneTop = new Hep3Vector[num_lay];
-    
-    Hep3Vector zPointonPlaneLay1Bot = new BasicHep3Vector(0,107.7,0);
-    Hep3Vector zPointonPlaneLay2Bot = new BasicHep3Vector(0,207.9,0);
-    Hep3Vector zPointonPlaneLay3Bot = new BasicHep3Vector(0,308.8,0);
-    Hep3Vector zPointonPlaneLay4Bot = new BasicHep3Vector(0,508.4,0);
-    Hep3Vector zPointonPlaneLay5Bot = new BasicHep3Vector(0,708.7,0);
-    Hep3Vector zPointonPlaneLay6Bot = new BasicHep3Vector(0,909.0,0);
+    double[] zTop = new double[num_lay];
+    
+    Hep3Vector zPointonPlaneLay1Bot = new BasicHep3Vector(0,0,107.7);
+    Hep3Vector zPointonPlaneLay2Bot = new BasicHep3Vector(0,0,207.9);
+    Hep3Vector zPointonPlaneLay3Bot = new BasicHep3Vector(0,0,308.8);
+    Hep3Vector zPointonPlaneLay4Bot = new BasicHep3Vector(0,0,508.4);
+    Hep3Vector zPointonPlaneLay5Bot = new BasicHep3Vector(0,0,708.7);
+    Hep3Vector zPointonPlaneLay6Bot = new BasicHep3Vector(0,0,909.0);
     Hep3Vector[] zPointonPlaneBot = new Hep3Vector[num_lay];
+    double[] zBot = new double[num_lay];
     
     Hep3Vector trackPos = null;
     Hep3Vector frontTrackPos = null;
@@ -327,8 +430,22 @@
         BeamEnergyCollection beamEnergyCollection = 
                 this.getConditionsManager().getCachedConditions(BeamEnergyCollection.class, "beam_energies").getCachedData();        
         ebeam = beamEnergyCollection.get(0).getBeamEnergy();
-        lowerLimP = 0.2 * ebeam;
+        lowerLimP = 0.0 * ebeam;
         upperLimP = 1.3 * ebeam;
+        
+        zTop[0] = zPointonPlaneLay1Top.z();
+        zTop[1] = zPointonPlaneLay2Top.z();
+        zTop[2] = zPointonPlaneLay3Top.z();
+        zTop[3] = zPointonPlaneLay4Top.z();
+        zTop[4] = zPointonPlaneLay5Top.z();
+        zTop[5] = zPointonPlaneLay6Top.z();
+        
+        zBot[0] = zPointonPlaneLay1Bot.z();
+        zBot[1] = zPointonPlaneLay2Bot.z();
+        zBot[2] = zPointonPlaneLay3Bot.z();
+        zBot[3] = zPointonPlaneLay4Bot.z();
+        zBot[4] = zPointonPlaneLay5Bot.z();
+        zBot[5] = zPointonPlaneLay6Bot.z();
         
         zPointonPlaneTop[0] = zPointonPlaneLay1Top;
         zPointonPlaneTop[1] = zPointonPlaneLay2Top;
@@ -403,6 +520,20 @@
         topYResidualCut[5] = topYResidualCut6;
         botXResidualCut[5] = botXResidualCut6;
         botYResidualCut[5] = botYResidualCut6;
+        
+        gapXtop[0] = 0;
+        gapXtop[1] = 0;
+        gapXtop[2] = 0;
+        gapXtop[3] = gapXtop4;
+        gapXtop[4] = gapXtop5;
+        gapXtop[5] = gapXtop6;
+        
+        gapXbot[0] = 0;
+        gapXbot[1] = 0;
+        gapXbot[2] = 0;
+        gapXbot[3] = gapXbot4;
+        gapXbot[4] = gapXbot5;
+        gapXbot[5] = gapXbot6;
         
         
         // Get the HpsSiSensor objects from the tracker detector element
@@ -478,10 +609,37 @@
         HitEfficiency_bot = aida.histogram1D("Hit Efficiency Bot", num_lay, 0, num_lay);
         HitEfficiencyError_top = aida.histogram1D("Hit Efficiency Error Top", num_lay, 0, num_lay);
         HitEfficiencyError_bot = aida.histogram1D("Hit Efficiency Error Bot", num_lay, 0, num_lay);
+        HitEfficiencyElec_top = aida.histogram1D("Hit Efficiency Top Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyPosi_top = aida.histogram1D("Hit Efficiency Top Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyElec_bot = aida.histogram1D("Hit Efficiency Bot Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyPosi_bot = aida.histogram1D("Hit Efficiency Bot Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorElec_top = aida.histogram1D("Hit Efficiency Error Top Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorPosi_top = aida.histogram1D("Hit Efficiency Error Top Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorElec_bot = aida.histogram1D("Hit Efficiency Error Bot Electron", num_lay, 0, num_lay);
+        HitEfficiencyErrorPosi_bot = aida.histogram1D("Hit Efficiency Error Bot Positron", num_lay, 0, num_lay);
+        
+        HitEfficiencyElecStereo_top = aida.histogram1D("Hit Efficiency Top Stereo Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyElecAxial_top = aida.histogram1D("Hit Efficiency Top Axial Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyPosiStereo_top = aida.histogram1D("Hit Efficiency Top Stereo Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyPosiAxial_top = aida.histogram1D("Hit Efficiency Top Axial Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyElecStereo_bot = aida.histogram1D("Hit Efficiency Bot Stereo Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyElecAxial_bot = aida.histogram1D("Hit Efficiency Bot Axial Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyPosiStereo_bot = aida.histogram1D("Hit Efficiency Bot Stereo Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyPosiAxial_bot = aida.histogram1D("Hit Efficiency Bot Axial Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorElecStereo_top = aida.histogram1D("Hit Efficiency Error Top Stereo Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorElecAxial_top = aida.histogram1D("Hit Efficiency Error Top Axial Electron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorPosiStereo_top = aida.histogram1D("Hit Efficiency Error Top Stereo Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorPosiAxial_top = aida.histogram1D("Hit Efficiency Error Top Axial Positron Side", num_lay, 0, num_lay);
+        HitEfficiencyErrorElecStereo_bot = aida.histogram1D("Hit Efficiency Error Bot Stereo Electron", num_lay, 0, num_lay);
+        HitEfficiencyErrorElecAxial_bot = aida.histogram1D("Hit Efficiency Error Bot Axial Electron", num_lay, 0, num_lay);
+        HitEfficiencyErrorPosiStereo_bot = aida.histogram1D("Hit Efficiency Error Bot Stereo Positron", num_lay, 0, num_lay);
+        HitEfficiencyErrorPosiAxial_bot = aida.histogram1D("Hit Efficiency Error Bot Axial Positron", num_lay, 0, num_lay);
+        
         HitEfficiency_Momentum_top = aida.histogram1D("Hit Efficiency Momentum Top", nP, lowerLimP, upperLimP);
         HitEfficiency_Momentum_bot = aida.histogram1D("Hit Efficiency Momentum Bot", nP, lowerLimP, upperLimP);
         HitEfficiencyError_Momentum_top = aida.histogram1D("Hit Efficiency Error Momentum Top", nP, lowerLimP, upperLimP);
         HitEfficiencyError_Momentum_bot = aida.histogram1D("Hit Efficiency Error Momentum Bot", nP, lowerLimP, upperLimP);
+        
         TrackXTop = aida.histogram1D("Extrapolated Track X Top", 50, lowerLimX, upperLimX);
         TrackYTop = aida.histogram1D("Extrapolated Track Y Top", 50, lowerLimY, upperLimY);
         TrackXBot = aida.histogram1D("Extrapolated Track X Bot", 50, lowerLimX, upperLimX);
@@ -507,26 +665,33 @@
         	UnbiasedResidualX_bot.put((i+1),histogramFactory.createHistogram1D("Unbiased Residual X Bot Layer #" + (i+1),100,-10,10));
         	UnbiasedResidualY_top.put((i+1),histogramFactory.createHistogram1D("Unbiased Residual Y Top Layer #" + (i+1),100,-10,10));
         	UnbiasedResidualY_bot.put((i+1),histogramFactory.createHistogram1D("Unbiased Residual Y Bot Layer #" + (i+1),100,-10,10));
+        	HitEfficiency_MomentumLay_top.put((i+1), histogramFactory.createHistogram1D("Hit Efficiency Momentum Top Layer #"+ (i+1),nP, lowerLimP, upperLimP));
+        	HitEfficiency_MomentumLay_bot.put((i+1), histogramFactory.createHistogram1D("Hit Efficiency Momentum Bot Layer #"+ (i+1),nP, lowerLimP, upperLimP));
+        	HitEfficiency_MomentumLayError_top.put((i+1), histogramFactory.createHistogram1D("Hit Efficiency Error Momentum Top Layer #"+ (i+1),nP, lowerLimP, upperLimP));
+        	HitEfficiency_MomentumLayError_bot.put((i+1), histogramFactory.createHistogram1D("Hit Efficiency Error Momentum Bot Layer #"+ (i+1),nP, lowerLimP, upperLimP));
+        	numberOfTopTracksMomentumLay.put((i+1),new int[nP]);
+        	numberOfBotTracksMomentumLay.put((i+1),new int[nP]);
+        	numberOfTopTracksWithHitOnMissingLayerMomentumLay.put((i+1),new int[nP]);
+        	numberOfBotTracksWithHitOnMissingLayerMomentumLay.put((i+1),new int[nP]);
+        	hitEfficiencyMomentumLayTop.put((i+1),new double[nP]);
+        	hitEfficiencyMomentumLayBot.put((i+1),new double[nP]);
+        	hitEfficiencyErrorMomentumLayTop.put((i+1),new double[nP]);
+        	hitEfficiencyErrorMomentumLayBot.put((i+1),new double[nP]);
         }
         
         for (IPlotter plotter : plotters.values()) { 
-            plotter.show();
+            //plotter.show();
         }
     }
     @Override
 public void process(EventHeader event){
 		aida.tree().cd("/");
-        
-		System.out.println("Hello");
 		
         // If the event does not have tracks, skip it
         //if(!event.hasCollection(Track.class, trackCollectionName)) return;
 
         // Get the list of tracks from the event
         List<List<Track>> trackCollections = event.get(Track.class);
-        
-        // For now, only look at events with a single track
-        //if(tracks.size() != 1 ) return;
        
         // Get the list of final state particles from the event.  These will
         // be used to obtain the track momentum.
@@ -538,23 +703,24 @@
         
         //  Get all of the stereo hits in the event
         List<TrackerHit> stereoHits = event.get(TrackerHit.class, stereoHitCollectionName);
-        
-        // Get the list of Ecal clusters from the event
-        //List<Cluster> ecalClusters = event.get(Cluster.class, ecalClustersCollectionName);
 
         for (List<Track> tracks : trackCollections) {
         	for(Track track : tracks){
         		// Check that the track has the required number of hits.  The number of hits
         		// required to make a track is set in the tracking strategy.
         		if(track.getTrackerHits().size() != this.hitsOnTrack){
-        			System.out.println("This track doesn't have the required number of hits.");
+        			//System.out.println("This track doesn't have the required number of hits.");
         			continue;
         		}          
+        		//HpsSiSensor trackSensor = (HpsSiSensor) ((RawTrackerHit)((HelicalTrackCross) track.getTrackerHits().get(0)).getStrips().get(0).rawhits().get(0)).getDetectorElement();
+        				
+        				
         		HpsSiSensor trackSensor = (HpsSiSensor) ((RawTrackerHit)track.getTrackerHits().get(0).getRawHits().get(0)).getDetectorElement();
+        		//HpsSiSensor hitSensor = (HpsSiSensor) ((RawTrackerHit) stereoHit.getRawHits().get(0)).getDetectorElement();
+        		
         		// Calculate the momentum of the track
         		HelicalTrackFit hlc_trk_fit = TrackUtils.getHTF(track.getTrackStates().get(0));
         		
-        		//double p = this.getReconstructedParticle(track).getMomentum().magnitude();
         		double B_field = Math.abs(TrackUtils.getBField(event.getDetector()).y());
 
                 double p = hlc_trk_fit.p(B_field);
@@ -577,31 +743,14 @@
         		}
         		if(!isWithinAcceptance(track, unusedLayer)) continue;
         		
-        		//int nTop = 0;
-        		//int nBot = 0;
-        		//for (TrackerHit stereoHit : stereoHits) {
-        			//HpsSiSensor hitSensor = (HpsSiSensor) ((RawTrackerHit) stereoHit.getRawHits().get(0)).getDetectorElement();
-      	          
-        			//if ((trackSensor.isTopLayer() && hitSensor.isBottomLayer()) 
-        					//|| (trackSensor.isBottomLayer() && hitSensor.isTopLayer())) continue;
-        			
-        			//int layer = (hitSensor.getLayerNumber() + 1)/2;
-               	 	
-               	 	//if (unusedLayer != layer) continue; 
-        			
-        			//Hep3Vector stereoHitPosition = new BasicHep3Vector(stereoHit.getPosition());
-           	 		//Hep3Vector trackPosition = TrackUtils.extrapolateTrack(track, stereoHitPosition.z());
-           	 	//Hep3Vector trackPositionExtrap = TrackUtils.getHelixPlaneIntercept(hlc_trk_fit,unitNormal,zPointonPlane[unusedLayer-1],B_field);
-           	 	//TrackX.fill(trackPositionExtrap.x());
-           	 	//TrackY.fill(trackPositionExtrap.y());
            	 	trackMomentum_accepted.get(unusedLayer).fill(p);
            	 	if (trackSensor.isTopLayer()) {
-           	 			//if (nTop > 0){;
-           	 				//continue;
-           	 			//}
-           	 		//Hep3Vector trackPositionExtrap = TrackUtils.getHelixPlaneIntercept(hlc_trk_fit,unitNormal,zPointonPlaneTop[unusedLayer-1],B_field);
-           	 		//TrackXTop.fill(trackPositionExtrap.x());
-           	 		//TrackYTop.fill(trackPositionExtrap.y());
+           	 		
+           	 		Hep3Vector extrapTrackPos = TrackUtils.extrapolateTrack(track,  zTop[unusedLayer-1]);                
+           	 		double extrapTrackX = extrapTrackPos.x();
+           	 		double extrapTrackY = extrapTrackPos.y();
+           	 		TrackXTop.fill(extrapTrackX);
+           	 		TrackYTop.fill(extrapTrackY);
            	 		trackMomentum_accepted_top.get(unusedLayer).fill(p);
            	 		numberOfTopTracks[unusedLayer-1]++;
            	 		for(int i = 0; i<nP;i++){
@@ -610,31 +759,52 @@
            	 			double upperP = lowerP + mP;
            	 			if(lowerP < p && p < upperP){
            	 				numberOfTopTracksMomentum[i]++;
+           	 				for(int j = 0; j<num_lay;j++){
+           	 					if(unusedLayer == j + 1){
+           	 						numberOfTopTracksMomentumLay.get(j+1)[i]++;
+           	 					}
+           	 				}
            	 			}
            	 		}
            	 		for(int i = 0; i<nBinx; i++){
            	 			double mX = (upperLimX - lowerLimX)/((double) nBinx);
            	 			double lowerX = mX * i + lowerLimX;
            	 			double upperX = lowerX + mX;
-           	 			/*if(lowerX < trackPositionExtrap.x() && trackPositionExtrap.x() < upperX){
+           	 			if(lowerX < extrapTrackX && extrapTrackX < upperX){
            	 				for(int j = 0; j<nBiny; j++){
            	 					double mY = (upperLimY - lowerLimY)/((double) nBiny);
            	 					double lowerY = mY * j + lowerLimY;
            	 					double upperY = lowerY + mY;
-           	 					if(lowerY < trackPositionExtrap.y() && trackPositionExtrap.y() < upperY){
+           	 					if(lowerY < extrapTrackY && extrapTrackY < upperY){
            	 						numberOfTopTracksPos[unusedLayer-1][i][j]++;
            	 					}     
            	 				}
-           	 			}*/          	 			
+           	 			}          	 			
            	 		}
-           	 		//nTop++;
+           	 		if(extrapTrackX < gapXtop[unusedLayer-1]){
+           	 			numberOfTopTracksElec[unusedLayer-1]++;
+           	 			if(trackSensor.isAxial()){
+           	 				numberOfTopTracksElecAxial[unusedLayer-1]++;
+           	 			}
+           	 			else{
+           	 				numberOfTopTracksElecStereo[unusedLayer-1]++;
+           	 			}
+           	 		}
+           	 		else{
+           	 			numberOfTopTracksPosi[unusedLayer-1]++;
+           	 			if(trackSensor.isAxial()){
+           	 				numberOfTopTracksPosiAxial[unusedLayer-1]++;
+           	 			}
+           	 			else{
+           	 				numberOfTopTracksPosiStereo[unusedLayer-1]++;
+           	 			}
+           	 		}
            	 	} else{
-           	 			//if (nBot > 0){;
-           	 			//continue;
-           	 			//}
-           	 		//Hep3Vector trackPositionExtrap = TrackUtils.getHelixPlaneIntercept(hlc_trk_fit,unitNormal,zPointonPlaneBot[unusedLayer-1],B_field);
-           	 		//TrackXBot.fill(trackPositionExtrap.x());
-           	 		//TrackYBot.fill(trackPositionExtrap.y());
+           	 		Hep3Vector extrapTrackPos = TrackUtils.extrapolateTrack(track,  zTop[unusedLayer-1]);                
+           	 		double extrapTrackX = extrapTrackPos.x();
+           	 		double extrapTrackY = extrapTrackPos.y();
+           	 		TrackXBot.fill(extrapTrackX);
+           	 		TrackYBot.fill(extrapTrackY);
            	 		trackMomentum_accepted_bot.get(unusedLayer).fill(p);
            	 		numberOfBotTracks[unusedLayer-1]++;
            	 		for(int i = 0; i<nP;i++){
@@ -643,26 +813,47 @@
            	 			double upperP = lowerP + mP;
            	 			if(lowerP < p && p < upperP){
            	 				numberOfBotTracksMomentum[i]++;
+           	 				for(int j = 0; j<num_lay;j++){
+           	 					if(unusedLayer == j + 1){
+           	 						numberOfBotTracksMomentumLay.get(j+1)[i]++;
+           	 					}
+           	 				}
            	 			}
            	 		}
            	 		for(int i = 0; i<nBinx; i++){
            	 			double mX = (upperLimX - lowerLimX)/((double) nBinx);
            	 			double lowerX = mX * i + lowerLimX;
            	 			double upperX = lowerX + mX;
-           	 			/*if(lowerX < trackPositionExtrap.x() && trackPositionExtrap.x() < upperX){
+           	 			if(lowerX < extrapTrackX && extrapTrackX < upperX){
            	 				for(int j = 0; j<nBiny; j++){
            	 					double mY = (upperLimY - lowerLimY)/((double) nBiny);
            	 					double lowerY = mY * j + lowerLimY;
            	 					double upperY = lowerY + mY;
-           	 					if(lowerY < trackPositionExtrap.y() && trackPositionExtrap.y() < upperY){
+           	 					if(lowerY < extrapTrackY && extrapTrackY < upperY){
            	 						numberOfBotTracksPos[unusedLayer-1][i][j]++;
-           	 						//}     
-           	 				}          	 			
+           	 					}          	 			
+           	 				}
            	 			}
-           	 		}*/
-           	 			//nBot++;
+           	 		}
+           	 		if(extrapTrackX < gapXtop[unusedLayer-1]){
+           	 			numberOfBotTracksElec[unusedLayer-1]++;
+           	 			if(trackSensor.isAxial()){
+           	 				numberOfBotTracksElecAxial[unusedLayer-1]++;
+           	 			}
+           	 			else{
+           	 				numberOfBotTracksElecStereo[unusedLayer-1]++;
+           	 			}
+           	 		}
+           	 		else{
+           	 			numberOfBotTracksPosi[unusedLayer-1]++;
+           	 			if(trackSensor.isAxial()){
+           	 				numberOfBotTracksPosiAxial[unusedLayer-1]++;
+           	 			}
+           	 			else{
+       	 					numberOfBotTracksPosiStereo[unusedLayer-1]++;
+           	 			}
+           	 		}
            	 	}
-        	}
         		int countTop = 0;
         		int countBot = 0;
         		for (TrackerHit stereoHit : stereoHits) {
@@ -675,10 +866,6 @@
                	 	int layer = (hitSensor.getLayerNumber() + 1)/2;
                	 	
                	 	if (unusedLayer != layer) continue;              	 	
-               	 	
-               	 	//System.out.println(count);
-               	 	
-               	 	//System.out.println("Track " + track + "   Collection " + trackCollections);
                         
                	 	Hep3Vector stereoHitPosition = new BasicHep3Vector(stereoHit.getPosition());
                	 	Hep3Vector trackPosition = TrackUtils.extrapolateTrack(track, stereoHitPosition.z());
@@ -692,12 +879,10 @@
                	 		HitPosition_top.get(unusedLayer).fill(stereoHitPosition.z());
                	 		trackPlots.get("Unbiased Residual x - Top").fill(xResidual);
                	 		trackPlots.get("Unbiased Residual y - Top").fill(yResidual);
-               	 		//if (Math.abs(xResidual+this.topXResidualOffset) > nSigCut*this.topXResidualCut 
-               	 				//&& Math.abs(yResidual + this.topYResidualOffset) > nSigCut*this.topYResidualCut) continue;
                	 		if (Math.abs(xResidual+topXResidualOffset[unusedLayer-1]) > nSigCut*topXResidualCut[unusedLayer-1] 
        	 					|| Math.abs(yResidual + topYResidualOffset[unusedLayer-1]) > nSigCut*topYResidualCut[unusedLayer-1]) continue;
                	 		if (countTop > 0){
-               	 			System.out.println("Top " + unusedLayer);
+               	 			//System.out.println("Top " + unusedLayer);
                	 			continue;
                	 		}
                	 		trackMomentumPlots.get("Track Momentum - All Layers Hit").fill(p);
@@ -709,6 +894,11 @@
                	 			double upperP = lowerP + mP;
                	 			if(lowerP < p && p < upperP){
                	 				numberOfTopTracksWithHitOnMissingLayerMomentum[i]++;
+               	 				for(int j = 0; j<num_lay;j++){
+               	 					if(unusedLayer == j + 1){
+               	 						numberOfTopTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i]++;
+               	 					}
+               	 				}
                	 			}
                	 		}
                	 		for(int i = 0; i<nBinx; i++){
@@ -726,6 +916,12 @@
                	 				}
                	 			}             	 			
                	 		}
+               	 		if(trackPosition.x() < gapXtop[unusedLayer-1]){
+               	 			numberOfTopTracksWithHitOnMissingLayerElec[unusedLayer-1]++;
+               	 		}
+               	 		else{
+               	 			numberOfTopTracksWithHitOnMissingLayerPosi[unusedLayer-1]++;	
+               	 		}
                	 		countTop++;               	                	 		
                	 	} else {
                	 		UnbiasedResidualX_bot.get(unusedLayer).fill(xResidual);
@@ -733,12 +929,10 @@
                	 		HitPosition_bot.get(unusedLayer).fill(stereoHitPosition.z());
                	 		trackPlots.get("Unbiased Residual x - Bottom").fill(xResidual);
                	 		trackPlots.get("Unbiased Residual y - Bottom").fill(yResidual);
-               	 		//if (Math.abs(xResidual+this.botXResidualOffset) > nSigCut*this.botXResidualCut 
-               	 				//&& Math.abs(yResidual + this.botYResidualOffset) > nSigCut*this.botYResidualCut) continue;
                	 		if (Math.abs(xResidual+botXResidualOffset[unusedLayer-1]) > nSigCut*botXResidualCut[unusedLayer-1] 
        	 					|| Math.abs(yResidual + botYResidualOffset[unusedLayer-1]) > nSigCut*botYResidualCut[unusedLayer-1]) continue;
                	 		if (countBot > 0){
-           	 				System.out.println("Bot " + unusedLayer);
+           	 				//System.out.println("Bot " + unusedLayer);
            	 				continue;
            	 			}
                	 		trackMomentumPlots.get("Track Momentum - All Layers Hit").fill(p);
@@ -750,6 +944,11 @@
                	 			double upperP = lowerP + mP;
                	 			if(lowerP < p && p < upperP){
                	 				numberOfBotTracksWithHitOnMissingLayerMomentum[i]++;
+               	 				for(int j = 0; j<num_lay;j++){
+               	 					if(unusedLayer == j + 1){
+               	 						numberOfBotTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i]++;
+               	 					}
+               	 				}
                	 			}
                	 		}
                	 		for(int i = 0; i<nBinx; i++){
@@ -767,6 +966,12 @@
                	 				}
                	 			}             	 			
                	 		}
+               	 		if(trackPosition.x() < gapXtop[unusedLayer-1]){
+               	 			numberOfBotTracksWithHitOnMissingLayerElec[unusedLayer-1]++;
+               	 		}
+               	 		else{
+               	 			numberOfBotTracksWithHitOnMissingLayerPosi[unusedLayer-1]++;	
+               	 		}
                	 		countBot++;            	 	
         			}
         		}          
@@ -805,7 +1010,7 @@
     // incremented i.e. is unused by the track
     for(int layer = 0; layer < svtLayer.length; layer++){
         if(svtLayer[layer] == 0) { 
-            System.out.println("Layer number " + (layer+1) + " is not used");
+            //System.out.println("Layer number " + (layer+1) + " is not used");
             return (layer + 1);
         }
     }
@@ -1000,23 +1205,53 @@
 @Override
 public void endOfData(){
     
-    /*for(int i = 0; i<num_lay; i++){
-    	hitEfficiencyTop[i] = numberOfTopTracksWithHitOnMissingLayer[i]/ (double) numberOfTopTracks[i];
-    	System.out.println(hitEfficiencyTop[i]);
+    for(int i = 0; i<num_lay; i++){
+    	hitEfficiencyTop[i] = numberOfTopTracksWithHitOnMissingLayer[i]/(double) numberOfTopTracks[i];
     	hitEfficiencyBot[i] = numberOfBotTracksWithHitOnMissingLayer[i]/(double) numberOfBotTracks[i];
     	numberOfTopTracksTot = numberOfTopTracksTot + numberOfTopTracks[i];
     	numberOfBotTracksTot = numberOfBotTracksTot + numberOfBotTracks[i];
     	numberOfTopTracksWithHitOnMissingLayerTot = numberOfTopTracksWithHitOnMissingLayerTot + numberOfTopTracksWithHitOnMissingLayer[i];
     	numberOfBotTracksWithHitOnMissingLayerTot = numberOfBotTracksWithHitOnMissingLayerTot + numberOfBotTracksWithHitOnMissingLayer[i];
     	errorTop[i] = Math.sqrt(1/(double) numberOfTopTracks[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayer[i]);
-    	errorBot[i] = Math.sqrt(1/(double) numberOfBotTracks[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayer[i]);
-    	
-    	
-    	
+    	errorBot[i] = Math.sqrt(1/(double) numberOfBotTracks[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayer[i]);   	
     	HitEfficiency_top.fill(i,hitEfficiencyTop[i]);
     	HitEfficiency_bot.fill(i,hitEfficiencyBot[i]);
     	HitEfficiencyError_top.fill(i,errorTop[i]);
     	HitEfficiencyError_bot.fill(i,errorBot[i]);
+    	hitEfficiencyTopElecStereo[i] = numberOfTopTracksWithHitOnMissingLayerElecStereo[i]/(double) numberOfTopTracksElecStereo[i];
+    	hitEfficiencyTopElecAxial[i] = numberOfTopTracksWithHitOnMissingLayerElecAxial[i]/(double) numberOfTopTracksElecAxial[i];
+		hitEfficiencyTopPosiStereo[i] = numberOfTopTracksWithHitOnMissingLayerPosiStereo[i]/(double) numberOfTopTracksPosiStereo[i];
+		hitEfficiencyTopPosiAxial[i] = numberOfTopTracksWithHitOnMissingLayerPosiAxial[i]/(double) numberOfTopTracksPosiAxial[i];
+    	hitEfficiencyBotElecStereo[i] = numberOfBotTracksWithHitOnMissingLayerElecStereo[i]/(double) numberOfBotTracksElecStereo[i];
+    	hitEfficiencyBotElecAxial[i] = numberOfBotTracksWithHitOnMissingLayerElecAxial[i]/(double) numberOfBotTracksElecAxial[i];
+    	hitEfficiencyBotPosiStereo[i] = numberOfBotTracksWithHitOnMissingLayerPosiStereo[i]/(double) numberOfBotTracksPosiStereo[i];
+    	hitEfficiencyBotPosiAxial[i] = numberOfBotTracksWithHitOnMissingLayerPosiAxial[i]/(double) numberOfBotTracksPosiAxial[i];
+    	errorTopElecStereo[i] = Math.sqrt(1/(double) numberOfTopTracksElecStereo[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerElecStereo[i]);
+    	errorTopElecAxial[i] = Math.sqrt(1/(double) numberOfTopTracksElecAxial[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerElecAxial[i]);
+    	errorTopPosiStereo[i] = Math.sqrt(1/(double) numberOfTopTracksPosiStereo[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerPosiStereo[i]);
+    	errorTopPosiAxial[i] = Math.sqrt(1/(double) numberOfTopTracksPosiAxial[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerPosiAxial[i]);
+    	errorBotElecStereo[i] = Math.sqrt(1/(double) numberOfBotTracksElecStereo[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerElecStereo[i]);
+    	errorBotElecAxial[i] = Math.sqrt(1/(double) numberOfBotTracksElecAxial[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerElecAxial[i]);
+    	errorBotPosiStereo[i] = Math.sqrt(1/(double) numberOfBotTracksPosiStereo[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerPosiStereo[i]);
+    	errorBotPosiAxial[i] = Math.sqrt(1/(double) numberOfBotTracksPosiAxial[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerPosiAxial[i]);
+    	if(i+1>num_lay/2){
+    		hitEfficiencyTopElec[i] = numberOfTopTracksWithHitOnMissingLayerElec[i]/(double) numberOfTopTracksElec[i];
+    		hitEfficiencyTopPosi[i] = numberOfTopTracksWithHitOnMissingLayerPosi[i]/(double) numberOfTopTracksPosi[i];
+        	hitEfficiencyBotElec[i] = numberOfBotTracksWithHitOnMissingLayerElec[i]/(double) numberOfBotTracksElec[i];
+        	hitEfficiencyBotPosi[i] = numberOfBotTracksWithHitOnMissingLayerPosi[i]/(double) numberOfBotTracksPosi[i];
+        	errorTopElec[i] = Math.sqrt(1/(double) numberOfTopTracksElec[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerElec[i]);
+        	errorTopPosi[i] = Math.sqrt(1/(double) numberOfTopTracksPosi[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerPosi[i]);
+        	errorBotElec[i] = Math.sqrt(1/(double) numberOfBotTracksElec[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerElec[i]);
+        	errorBotPosi[i] = Math.sqrt(1/(double) numberOfBotTracksPosi[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerPosi[i]);
+        	HitEfficiencyElec_top.fill(i,hitEfficiencyTopElec[i]);
+        	HitEfficiencyPosi_top.fill(i,hitEfficiencyTopPosi[i]);
+        	HitEfficiencyElec_bot.fill(i,hitEfficiencyBotElec[i]);
+        	HitEfficiencyPosi_bot.fill(i,hitEfficiencyBotPosi[i]);
+        	HitEfficiencyErrorElec_top.fill(i,errorTopElec[i]);
+        	HitEfficiencyErrorPosi_top.fill(i,errorTopPosi[i]);
+        	HitEfficiencyErrorElec_bot.fill(i,errorBotElec[i]);
+        	HitEfficiencyErrorPosi_bot.fill(i,errorBotPosi[i]);
+    	}
     	double mX = (upperLimX - lowerLimX)/((double) nBinx);
     	double mY = (upperLimY - lowerLimY)/((double) nBiny);
     	for(int j = 0; j<nBinx; j++){
@@ -1045,7 +1280,6 @@
     			if(hitEfficiencyBotPos[i][j][k]>1){
     				hitEfficiencyBotPos[i][j][k] = 1.0;
     			}
-    			//System.out.println(i + "  " + x + "  " + y + "  " + numberOfTopTracksWithHitOnMissingLayerPos[i][j][k] + "  " + numberOfTopTracksPos[i][j][k] + "  " + hitEfficiencyTopPos[i][j][k]);
     			HitEfficiencyPos_top.get(i+1).fill(x,y,hitEfficiencyTopPos[i][j][k]);
     			HitEfficiencyPos_bot.get(i+1).fill(x,y,hitEfficiencyBotPos[i][j][k]);
     			HitEfficiencyErrorPos_top.get(i+1).fill(x,y,hitEfficiencyErrorTopPos[i][j][k]);
@@ -1054,16 +1288,47 @@
     	}
     }
     double mP = (upperLimP - lowerLimP)/((double) nP);
+    
     for(int i = 0; i<nP; i++){
     	hitEfficiencyMomentumTop[i] = numberOfTopTracksWithHitOnMissingLayerMomentum[i]/(double) numberOfTopTracksMomentum[i];
     	hitEfficiencyMomentumBot[i] = numberOfBotTracksWithHitOnMissingLayerMomentum[i]/(double) numberOfBotTracksMomentum[i];
-    	hitEfficiencyErrorMomentumTop[i] = Math.sqrt(1/(double) numberOfTopTracksMomentum[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerMomentum[i]);
-    	hitEfficiencyErrorMomentumBot[i] = Math.sqrt(1/(double) numberOfBotTracksMomentum[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerMomentum[i]);
-		double p = mP * (i+0.5) + lowerLimP;
+    	if(numberOfTopTracksWithHitOnMissingLayerMomentum[i] != 0 && numberOfTopTracksMomentum[i] != 0){
+    		hitEfficiencyErrorMomentumTop[i] = Math.sqrt(1/(double) numberOfTopTracksMomentum[i] + 1/(double) numberOfTopTracksWithHitOnMissingLayerMomentum[i]);
+    	}
+    	else{
+    		hitEfficiencyErrorMomentumTop[i] = 0;
+    	}
+    	if(numberOfBotTracksWithHitOnMissingLayerMomentum[i] != 0 && numberOfBotTracksMomentum[i] != 0){
+    		hitEfficiencyErrorMomentumBot[i] = Math.sqrt(1/(double) numberOfBotTracksMomentum[i] + 1/(double) numberOfBotTracksWithHitOnMissingLayerMomentum[i]);
+    	}
+    	else{
+    		hitEfficiencyErrorMomentumBot[i] = 0;
+    	}
+    	double p = mP * (i+0.5) + lowerLimP;
     	HitEfficiency_Momentum_top.fill(p,hitEfficiencyMomentumTop[i]);
     	HitEfficiency_Momentum_bot.fill(p,hitEfficiencyMomentumBot[i]);
     	HitEfficiencyError_Momentum_top.fill(p,hitEfficiencyErrorMomentumTop[i]);
     	HitEfficiencyError_Momentum_bot.fill(p,hitEfficiencyErrorMomentumBot[i]);
+    	for(int j = 0; j<num_lay; j++){
+    		hitEfficiencyMomentumLayTop.get(j+1)[i] = numberOfTopTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i]/(double) numberOfTopTracksMomentumLay.get(j+1)[i];
+    		hitEfficiencyMomentumLayBot.get(j+1)[i] = numberOfBotTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i]/(double) numberOfBotTracksMomentumLay.get(j+1)[i];
+    		if(numberOfTopTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i] != 0 && numberOfTopTracksMomentumLay.get(j+1)[i] != 0){
+    			hitEfficiencyErrorMomentumLayTop.get(j+1)[i] = Math.sqrt(1/(double) numberOfTopTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i] + 1/(double) numberOfTopTracksMomentumLay.get(j+1)[i]);
+    		}
+    		else{
+    			hitEfficiencyErrorMomentumLayTop.get(j+1)[i] = 0;
+    		}
+    		if(numberOfBotTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i] != 0 && numberOfBotTracksMomentumLay.get(j+1)[i] != 0){
+    			hitEfficiencyErrorMomentumLayBot.get(j+1)[i] = Math.sqrt(1/(double) numberOfBotTracksWithHitOnMissingLayerMomentumLay.get(j+1)[i] + 1/(double) numberOfBotTracksMomentumLay.get(j+1)[i]);
+    		}
+    		else{
+    			hitEfficiencyErrorMomentumLayBot.get(j+1)[i] = 0;
+    		}
+    		HitEfficiency_MomentumLay_top.get(j+1).fill(p,hitEfficiencyMomentumLayTop.get(j+1)[i]);
+    		HitEfficiency_MomentumLay_bot.get(j+1).fill(p,hitEfficiencyMomentumLayBot.get(j+1)[i]);
+    		HitEfficiency_MomentumLayError_top.get(j+1).fill(p,hitEfficiencyErrorMomentumLayTop.get(j+1)[i]);
+    		HitEfficiency_MomentumLayError_bot.get(j+1).fill(p,hitEfficiencyErrorMomentumLayBot.get(j+1)[i]);
+    	}
     }
    System.out.println("%===================================================================%");
    System.out.println("%======================  Hit Efficiencies ==========================%");

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