Print

Print


Author: [log in to unmask]
Date: Mon Nov 23 07:16:28 2015
New Revision: 3974

Log:
resolution matching c code

Modified:
    java/trunk/users/src/main/java/org/hps/users/baltzell/RfFitterDriver.java

Modified: java/trunk/users/src/main/java/org/hps/users/baltzell/RfFitterDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/baltzell/RfFitterDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/baltzell/RfFitterDriver.java	Mon Nov 23 07:16:28 2015
@@ -64,9 +64,10 @@
 					foundRf=true;
 					times[ii] = fitPulse(hit);
 					if (ii==1){
+						
 						System.out.println(times[1]-times[0]);
 					}
-  				    
+					  				    
 					break;
 				}
 			}
@@ -93,40 +94,37 @@
 		double fitThresh[]={-999,-999};
 		double pedVal[]={-999,-999};
 		
-		//use this loop to look for bins containing the peaks (2-3 peaks)
-		for (int ii=4; ii<adcSamples.length-4; ii++) {
-			//after 2 peaks, stop looking for more
+		// Look for bins containing the peaks (2-3 peaks)
+		for (int ii=4; ii<adcSamples.length; ii++) {
+			// After 2 peaks, stop looking for more
 			if (iz==2){break;}
-			//System.out.println("nsamp:\t"+ii+"\t"+adcSamples[ii]+"\tplus 1:\t"+adcSamples[ii+1]+"\tminus 1:\t"+adcSamples[ii-1]);
-			if ((adcSamples[ii+1]>0) && (adcSamples[ii-1]>0) && (adcSamples[ii]>threshold) && ii>12){
-				//System.out.println("Passed 1st condition!\t"+iz);
-				if ((adcSamples[ii]>adcSamples[ii+1]) && (adcSamples[ii]>adcSamples[ii-1]) ){
-					//System.out.println("iz:\t"+iz);
-//						||((adcSamples[ii]==adcSamples[ii+1] && adcSamples[ii]>adcSamples[ii-1]))){//not in c code
+			if ((adcSamples[ii+1]>0) && (adcSamples[ii-1]>0) && (adcSamples[ii]>threshold) && ii>8){
+				if ((adcSamples[ii]>adcSamples[ii+1]) && (adcSamples[ii]>=adcSamples[ii-1]) ){
+					
 					peakBin[iz]=ii;
 					iz++;
 				}
 			}
 		}
 		
+		
 		int jj=0;
-		//choose peak closest to center of window (second peak, ik=1)
+		// Choose peak closest to center of window (second peak, ik=1)
 		final int ik=1;
 		pedVal[ik] = (adcSamples[peakBin[ik]-6]+adcSamples[peakBin[ik]-7]+adcSamples[peakBin[ik]-8]+adcSamples[peakBin[ik]-9])/4.0;
 		fitThresh[ik]= (adcSamples[peakBin[ik]]+pedVal[ik])/3.0;
-		
-		//calc initial values along the way, we find/fit 3 points:
+	
+		// Initial values: we find/fit 3 points:
 		double itime[] = {-999,-999,-999};
 		double ifadc[] = {-999,-999,-999};
-			
-		//find the points of the peak bin to peak bin-5 (look backwards to forwards)
+		
+		// Find the points of the peak bin to peak bin-5 
 		for (int ll=0; ll<5; ll++){	
 			if ((adcSamples[peakBin[ik]-5+ll]) > fitThresh[ik]){
-				//get one below fit threshold and two points above	
+				// One point is below fit threshold and two points are above	
 				if(jj==0 && (adcSamples[peakBin[ik]-6+ll] > pedVal[ik])){
 					final int zz=fitData.size();	
 					fitData.addPoint();
-					//System.out.println("fit points:\t"+zz+"\t"+(peakBin[ik]-6+ll)+"\t"+adcSamples[peakBin[ik]-6+ll]);
 					itime[zz] = peakBin[ik]-6+ll;
 					ifadc[zz] = adcSamples[peakBin[ik]-6+ll];
 					fitData.point(zz).coordinate(0).setValue(peakBin[ik]-6+ll);
@@ -137,42 +135,34 @@
 				}
 				final int zz=fitData.size();	
 				fitData.addPoint();
-				//System.out.println("fit points:\t"+zz+"\t"+(peakBin[ik]-5+ll)+"\t"+adcSamples[peakBin[ik]-5+ll]);
 				itime[zz] = peakBin[ik]-5+ll;
 				ifadc[zz] = adcSamples[peakBin[ik]-5+ll];
 				fitData.point(zz).coordinate(0).setValue(peakBin[ik]-5+ll);
 				fitData.point(zz).coordinate(1).setValue(adcSamples[peakBin[ik]-5+ll]);
 				fitData.point(zz).coordinate(1).setErrorMinus(NOISE);
 				fitData.point(zz).coordinate(1).setErrorPlus(NOISE);
-						
+					
 				jj++;
 				if (jj==3) {break;}					
 			}
 		}
-			
+		
 		double islope = ((double)(ifadc[2]-ifadc[0]))/(itime[2]-itime[0]);
 		double icept = ifadc[1] - islope*itime[1];
-		//System.out.println("initial parameters, icept:\t"+icept+"\t islope:\t"+islope+"\t itime:\t"+itime[1]);
-		// properly initialize fit parameters:
-		//fitFunction.setParameter("time",0.0);//itime[1]);
+		// Initialize fit parameters:
 		fitFunction.setParameter("intercept",icept);
 		fitFunction.setParameter("slope",islope);
-	
+
 		// this used to be turned on somewhere else on every event, dunno if it still is:
 		//Logger.getLogger("org.freehep.math.minuit").setLevel(Level.OFF);
-		
+	
 		IFitResult fitResults = fitter.fit(fitData,fitFunction);
 		
-		//choose to get the time value at this location on the fit:
+		// Read the time value at this location on the fit:
 		double halfVal = (adcSamples[peakBin[1]]+pedVal[1])/2.0;	
-		//System.out.println("Fit results:\t"+fitResults.fittedParameter("intercept")+"\t"+fitResults.fittedParameter("slope"));
-		//System.out.println("Half height:\t"+halfVal);
+	
 		return NSPERSAMPLE*(halfVal-fitResults.fittedParameter("intercept"))/fitResults.fittedParameter("slope");
+			
+	}
 		
-		
-	}
-	
-	
-	
-	
 }