LADCPproc.backscatter
changeset 28 79bf60e97208
parent 12 65582c172355
child 29 f72cd642972c
child 31 af03ca38fc2a
--- a/LADCPproc.backscatter
+++ b/LADCPproc.backscatter
@@ -1,9 +1,9 @@
 #======================================================================
 #                    L A D C P P R O C . B A C K S C A T T E R 
 #                    doc: Wed Oct 20 13:02:27 2010
-#                    dlm: Wed May 16 17:55:14 2012
+#                    dlm: Thu Mar 27 18:54:02 2014
 #                    (c) 2010 A.M. Thurnherr
-#                    uE-Info: 279 33 NIL 0 0 72 2 2 4 NIL ofnI
+#                    uE-Info: 25 52 NIL 0 0 72 2 2 4 NIL ofnI
 #======================================================================
 
 # HISTORY:
@@ -21,6 +21,8 @@
 #						 search
 #				  - BUG: same used bins entirely below seabed (only possible
 #						 for shallow casts)
+#	Mar 21, 2014: - adapted to new [LADCPproc.utils]
+#	Mar 27, 2014: - adapted to depthOfBinAlongBeam()
 
 my($BEAM1) = 0;
 my($BEAM2) = 1;
@@ -206,51 +208,40 @@
     }
 	print(STDERR "\n\t\@per-beam noise levels = @Er") if ($opt_d);
 
+	my($Svfunc);											# Sv method
+	if ($opt_u =~ /^[dD]/) {
+		$Svfunc = \&Sv_D99;
+	} elsif ($opt_u =~ /^[vV]/) {
+		$Svfunc = \&Sv_V04;
+	} elsif ($opt_u =~ /^[tT]/) {
+		$Svfunc = \&Sv_T11;
+	} else {
+		$Svfunc = \&Sv_nocorr;
+	}
+
 	for (my($ens)=$LADCP_start; $ens<=$LADCP_end; $ens++) {
 		for (my($bin)=0; $bin<$LADCP{N_BINS}; $bin++) {
-			my($gi) = int(&depthOfBin($ens,$bin) / $GRID_DZ);
-			next if ($gi < 0);
-			my($range_to_bin) = &dzToBin($ens,$bin) / cos(rad($LADCP{BEAM_ANGLE}));
+			my($range_to_bin) = &rangeToBin($ens,$bin);
 
-			my($Svfunc);
-			if ($opt_u =~ /^[dD]/) {
-				$Svfunc = \&Sv_D99;
-			} elsif ($opt_u =~ /^[vV]/) {
-				$Svfunc = \&Sv_V04;
-			} elsif ($opt_u =~ /^[tT]/) {
-				$Svfunc = \&Sv_T11;
-			} else {
-				$Svfunc = \&Sv_nocorr;
-			}
+			for (my($beam)=0; $beam<4; $beam++) {
+				my($gi) = int(&depthOfBinAlongBeam($ens,$bin,$beam) / $GRID_DZ);
+				next if ($gi < 0);
+				$LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$beam] = &$Svfunc($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
+							 							    		 $LADCP{TRANSMITTED_PULSE_LENGTH},
+														    		 $Er[$beam],$range_to_bin,
+							            			        		 $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][$beam]);
 
-			$LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$BEAM1] = &$Svfunc($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
-							 							    $LADCP{TRANSMITTED_PULSE_LENGTH},
-														    $Er[$BEAM1],$range_to_bin,
-							            			        $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][$BEAM1]);
-			$LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$BEAM2] = &$Svfunc($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
-							 							    $LADCP{TRANSMITTED_PULSE_LENGTH},
-														    $Er[$BEAM2],$range_to_bin,
-							            			        $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][$BEAM2]);
-			$LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$BEAM3] = &$Svfunc($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
-							 							    $LADCP{TRANSMITTED_PULSE_LENGTH},
-														    $Er[$BEAM3],$range_to_bin,
-							            			        $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][$BEAM3]);
-			$LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$BEAM4] = &$Svfunc($LADCP{ENSEMBLE}[$ens]->{CTD_TEMP},
-							 							    $LADCP{TRANSMITTED_PULSE_LENGTH},
-														    $Er[$BEAM4],$range_to_bin,
-							            			        $LADCP{ENSEMBLE}[$ens]->{ECHO_AMPLITUDE}[$bin][$BEAM4]);
-			my($Sv) = avg(@{$LADCP{ENSEMBLE}[$ens]->{SV}[$bin]});
+				$sSv[$gi][$bin] += $LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$beam];
+				$nSv[$gi][$bin]++;							            			        		 
 
-			$sSv[$gi][$bin] += $Sv;
-			$nSv[$gi][$bin]++;
-
-			if ($bin>=$Svbin_start && $bin<=$Svbin_end) {
-				$sSv_prof[$gi] += $Sv;
-				$nSv_prof[$gi]++;
-			}
-		}
-	}
-}
+				if ($bin>=$Svbin_start && $bin<=$Svbin_end) {
+					$sSv_prof[$gi] += $LADCP{ENSEMBLE}[$ens]->{SV}[$bin][$beam];
+					$nSv_prof[$gi]++;
+				} # if $bin
+			} # for $beam
+		} # for $bin
+	} # for $end
+} # sub
 
 sub depthOfGI($) { return $_[0]*$GRID_DZ + $GRID_DZ/2; }		# depth corresponding to particular grid index