#!/usr/local/bin/perl -w use English; my($arg) = $ARGV[0]; my($MULTIPLIER) = 255; my($Debug) = 0; if( !$arg || ($arg ne "shower" && $arg ne "rich") ) { &usage(); } my($rh_tree); while () { my @fields = split; next if(/^#/ || /^\s+$/); my($x,$y,$theta,$phi); ($x,$y,$theta,$phi) = &extract_coordinates($arg,@fields); if (!defined $x) { next; } my($theta_int); my($phi_int); $theta_int = int( $theta * $MULTIPLIER / 90 +0.5 ); $phi_int = int( $phi * $MULTIPLIER / 60 +0.5 ); if ($theta_int<0) { $theta_int = 0; print STDERR "clipping in theta: $theta_int\n"; } if ($theta_int>255) { print STDERR "clipping in theta: $theta_int\n"; $theta_int = 255; } if ($phi_int<0) { print STDERR "clipping in phi: $phi_int\n"; $phi_int = 0; } if ($phi_int>255) { print STDERR "clipping in phi: $phi_int\n"; $phi_int = 255; } if ($Debug) { print "x: $x, y: $y, \ttheta: $theta, \tphi: $phi \tti: $theta_int, \tpi: $phi_int\n"; } $rh_tree->{$x}->{$y}->{'phi'} = $phi_int; $rh_tree->{$x}->{$y}->{'theta'} = $theta_int; } my($cur_x, $cur_y); my($cur_phi, $cur_theta); my($undefined_counter) = 0; if ($arg eq "rich") { foreach $cur_x (0..95) { foreach $cur_y (0..95) { if (!defined $rh_tree->{$cur_x}->{$cur_y}->{'phi'}) { $rh_tree->{$cur_x}->{$cur_y}->{'phi'} = -1; $rh_tree->{$cur_x}->{$cur_y}->{'theta'} = -1; $undefined_counter++; } } } } my($itemcounter) = 0; foreach $cur_x (sort {$a <=> $b} keys %$rh_tree) { foreach $cur_y (sort {$a <=> $b} keys %{$rh_tree->{$cur_x}}) { $cur_phi = $rh_tree->{$cur_x}->{$cur_y}->{'phi'}; $cur_theta = $rh_tree->{$cur_x}->{$cur_y}->{'theta'}; print "$cur_x\t$cur_y\t$cur_theta\t$cur_phi\n"; $itemcounter++; } } print STDERR "We had $undefined_counter undefined values in table\n"; print STDERR "output: $itemcounter items\n"; exit; ############################################## ############################################## sub extract_coordinates { my($arg, @f) = @_; if ($arg eq "shower") { ## x ,y , phi, theta my($phi) = $f[2]; if ($phi>90) { $phi = $phi - 360; } $phi+=30; print STDERR "errror, shower, phi out of region: $phi, x: $f[0] y: $f[1]\n" if($phi<0 || $phi >60); return($f[0], $f[1], $f[3], $phi); } elsif ($arg eq "rich") { ## x, y , theta, phi if (!defined $f[3]) { return; } my($phi) = $f[4]; $phi+=30; print STDERR "errror, rich, phi out of region: $phi, x: $f[0] y: $f[1]\n" if($phi<0 || $phi >60); if ($Debug) { print "return: $f[0], $f[1], $f[3], $phi\n"; } ### x, y, theta, phi return($f[0], $f[1], $f[3], $phi); } } sub usage { print "usage: translate \n"; exit; }