%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentstyle[12pt]{article}
\def\laq{\raise 0.4ex\hbox{$<$}\kern -0.8em\lower 0.62ex\hbox{$\sim$}}
\def\gaq{\raise 0.4ex\hbox{$>$}\kern -0.7em\lower 0.62ex\hbox{$\sim$}}
\input psfig.tex
\begin{document}
\centerline{\Large\bf Brane-Production and the Neutrino-Nucleon 
}
\centerline{\Large\bf cross section at Ultra High Energies}
\centerline{\Large\bf in Low Scale Gravity Models}


\bigskip
\centerline{\bf Pankaj Jain, Supriya Kar and Sukanta Panda}

\bigskip
\begin{center}
Physics Department\\
I.I.T. Kanpur, India 208016\\
\end{center}
\bigskip

\noindent {\bf Abstract:}
The origin of the ultra high energy cosmic ray (UHECR) showers
has remained as a mystery among particle physicists and astrophysicists.
In low scale gravity models, where the neutrino-nucleon cross section
rises to typical hadronic values at energies above $10^{20}$ eV, the
neutrino
becomes a candidate for the primary that initiates these showers.
We calculate the neutrino-nucleon cross section at ultra high energies
by assuming that it is dominated by the production of p-branes. 
We show, using a generalized Randall-Sundrum model, 
that the neutrino-nucleon cross-section at neutrino energies
of $10^{11}$ GeV is of the order of 100 mb, which is required for explaining
UHECR events. Similar result also follows in other models such as the
Lykken-Randall model.



\newpage
Low scale gravity models \cite{add,RS}
lead to the possibility that the neutrino-nucleon
cross section at ultra high energies may be several orders of magnitude
larger than what is predicted by the Standard Model. At center of
mass energies $\sqrt s$ less than the scale of quantum gravity $M_*$,
which we assume is of order 1 TeV, the cross section can be calculated
using the perturbative Feynman rules \cite{HaLyZh}. However at higher energies,
such that $\sqrt s>M_*$, there does not exist any reliable procedure
to calculate the cross section. In applications to cosmic rays we
are interested in cross section at center of mass energies of the
order of $10^{12}$ GeV$^2$, where the perturbative approach is certainly
not applicable. Several authors
\cite{N+S,us1,d+d,kp,stringy,Emparan2,Feng,Anchordoqui1} have obtained various
estimates by using different models for the cross section in this
energy regime. In Ref.
\cite{us1} we assumed two models for the $s$ dependence of the
cross section, $\sigma\sim s,s^2$, and found that neutrino-nucleon
cross sections are of the order of one to several hundred mb with
the precise value dependent on the model used and on the choice of
$M_*$. The larger value of the cross section is obtained using
the $s^2$ model. Such large values of the neutrino-nucleon cross section
are very interesting since then the neutrino becomes a candidate
\cite{us1,d+d}
for explaining the puzzling cosmic ray events which appear to violate
the GZK bound \cite{GZK,puget,nw,sigl}.
The idea that neutrino-nucleon
cross section grows large at GZK energies is very old \cite{early}.
Large extra dimension, low scale gravity models \cite{add,RS}
have provided new impetus to this idea \cite{us1,d+d,kp,tos,neu,N+S2}.
Even if the cross section is not large enough
to explain the GZK events, cosmic ray observations can be used to
test this hypothesis and to put
stringent bounds on these models.


There exist several proposals for calculating
the ultra high energy scattering cross sections including the
gravitational contribution.
In Ref. \cite{N+S,Emparan2,Emparan1,Rattazzi} the authors proposed an
eikonal model for the cross section, which may be applicable for
very large $s$ but for momentum transfer $-t<M_*^2$. For larger
values of the momentum transfer, Ref. \cite{N+S,Banks,BH1,BH2,Eardley}
have proposed that black hole production will set in.
This proposal has generated great interest with several
studies investigating the production rate of black holes
at colliders \cite{BH2,Hossenfelder,Cheung,Casadio,Ringwald,Park,Rizzo}
and cosmic ray collisions
\cite{Feng,Anchordoqui1,Anchordoqui2,Uehara,Kowalski}.
Using the
eikonal model \cite{Emparan2} and the
black hole production rate \cite{Feng}, 
it is found that the neutrino-nucleon cross section
is of the order of $0.1$ mb at $s\approx 10^{12}$ GeV$^2$.
This cross section
is also large enough such that neutrinos
could generate horizontal showers, which can easily be seen in future
observatories.

Black hole production cross section is estimated by assuming
that it is approximately equal to the geometric area of the black
hole produced. A collision between partons $i$ and $j$ with
center of mass energy $\sqrt{\hat s}$ is assumed to produce a
black hole of mass $M_{\rm BH} \approx \sqrt{\hat s}$ and hence the
parton level cross section $\hat \sigma(ij\rightarrow{\rm BH})$
is equal to $\pi R_S^2$ where $R_S$ is the Schwarzschild radius
of a black hole of mass $M_{\rm BH}$. This geometric cross section
has been criticized by Voloshin \cite{Voloshin} on the grounds
that a high energy collision with partons $i$ and $j$ will
have a very large amplitude to radiate, and the amplitude to produce
an isolated black hole will be exponentially damped. At our current
stage of understanding of quantum gravity, the various models proposed must be
considered as highly speculative.

Recently Ref.  \cite{Ahn2002} has proposed that besides black holes,
high
energy collisions will also produce branes.
They argue that in certain
cases the production cross section of p-branes of mass $M_p\approx\sqrt 
{\hat s}$ is
much higher than that of black holes of the same mass.  The precise value
of the cross section depends on the dimensionality of the brane and the
size of the extra dimensions.  The largest cross section for a p-brane is
obtained when the brane is completely wrapped on the small-size extra
dimensions where it is assumed that there exist $m$ extra dimensions
compactified on length scale of order $L\laq M_*^{-1}$ and the
remaining $n-m$ extra dimensions are compactified on length scale 
of order $L^\prime >> M_*^{-1}$.
The ratio $\Sigma(s;n,m,p\le m)$ of the cross section of the p-brane to black
hole production in this case is given by \cite{Ahn2002}
\begin{equation}
\Sigma(s;n,m,p\le m) \approx \left(L\over L_*\right)^{-2p\over n-p+1}
{\gamma(n,p)^2\over\gamma(n,0)^2}\left(s\over s_*\right)^{w-1\over n+1}
\end{equation}
where $n$ is the total number of extra dimensions, $L_* = M_*^{-1}$,
\begin{equation}
\gamma(n,p) = \left[{8\Gamma\left(n+3-p\over2\right)\over
(2+n)\sqrt{\left(1-{p\over n+2}\right)/(p+1)}}\right]^{w\over n+1}
\end{equation}
and $w=1/[1-p/(n+1)]$.  The branes, once produced, will decay producing 
gravitons and matter fields.

We calculate the neutrino-nucleon total
cross section $\sigma_{\nu p}$
at ultra high energies assuming that the cross section is
dominated by brane production.   
We perform this calculation within the framework of a generalized 
Randall-Sundrum (RS)
model \cite{RS} and the model proposed by Lykken and Randall in Ref. \cite{LR}
such that these models have an arbitrary number of compact extra dimensions
instead of the single compact dimension assumed in Ref. \cite{RS,LR}.
Besides the single compact dimension which involves the warp factor,
the remaining $m$ compact dimensions are assumed to be factorizable. 
These $m$ extra dimensions are compactified on a m-torus of radius R.
The generalized RS model, therefore, 
consists of two 3-branes with opposite tension
situated at orbifold points $y=0,y_c$ in
a (4+m+1)-dimensional space-time. 
The metric can be written as
\begin{equation}
ds^2_{D+1} = e^{-2\sigma(y)}\eta_{\mu\nu}dx^\mu dx^\nu 
+ R^2\delta_{ab}d\theta_a d\theta_b + dy^2 
\end{equation}
where $\mu,\nu=0,..,3$, $a,b=1,...,m$,  
$\theta_a$ are the compactied dimension with range [0,2$\pi$]
and y is the warped dimension with range [-$y_c,y_c$].
The Einstein equations can be written as
\begin{equation}
G_{AB}=\frac{1}{4 M^{m+3}}\left(T_{AB}^{(B)}+T_{AB}^{(br)}\right)
\end{equation}
The components of the bulk energy-momentum tensor are assumed to be
$$ T^{(B)\mu}_\nu  = \delta_\nu^\mu \Lambda_0,~~ T^{(B)y}_y =
\Lambda_0,
~~T^{(B)b}_a = \Lambda_\theta\delta_a^b $$
The components of the brane energy-momentum tensor are assumed to be
$$ T^{(br)\mu,i}_\nu  = \delta(y-y_i) v_0^i \delta_\nu^\mu ,~~
T^{(br)y,i}_y
=0, 
~~T^{(br)n,i}_m =  \delta(y-y_i) v_\theta^i  \delta_m^n\ , $$
where i=1,2,
and all other non-diagonal components are taken to be zero.
Inhomogeneities in the energy-momentum tensors and cosmological
constants can be due to different
contributions to casimir energies in the different direction of
space-time \cite{kv,cw}.
In the absence of a four dimensional cosmological constant, the
($\mu,\nu$)-component of the Einstein's equation gives
\begin{equation}
-3 \sigma''(y)+6\sigma'^2(y)=-\frac{\Lambda_0}{4
M^{m+3}}-\sum_i\frac{v_0^i}{4
M^{m+3}}\delta(y-y_i)
\label{ein1}
\end{equation}
The (y,y)-component of the Einstein's equation is given by
\begin{equation}
6 \sigma'(y)^2 = -\frac{\Lambda_0}{4 M^{m+3}}
\label{ein2}
\end{equation}
The ($\theta,\theta$)-component of the Einstein's equation is given by                
\begin{equation}                                         
 -4\sigma''(y) +10 \sigma'^2(y) = -\frac{\Lambda_\theta}{4 M^{m+3}}
-\sum_i\frac{v_\theta^i}{4 M^{m+3}}\delta(y-y_i)
\label{ein3}
\end{equation}
From Eq.(\ref{ein1},\ref{ein2},\ref{ein3}), using the orbifold symmetry
along y-direction, we find
\begin{equation}
\sigma(y)=\sqrt{-\frac{\Lambda_0}{24 M^{m+3}}}~(|y|-y_c)
\end{equation}
and $\Lambda_\theta=\frac{5}{3}\Lambda_0$,~~$v_\theta^i=\frac{4}{3}v_0^i.$
This solution is valid only if brane tensions and cosmological constants are
related as follows 
\begin{equation}
\Lambda_0 = -24 M^{m+3}k^2,~~v_0^1=-v_0^2=24 M^{m+3}k
\end{equation}
The four-dimensional reduced Planck mass $M_{pl}$ can be written as
\begin{equation}
M_{pl}^2 =  M^{(m+3)}\exp{(2 k y_c)}{(2\pi R)^m\over k }
\left[1-\exp(-2 k y_c))\right]
\end{equation}
where $M=\frac{M_*}{(32\pi)^{1/(m+3)}}$. If we demand $k y_c \simeq 35,
M_*=1TeV$ and $R<(TeV)^{-1}$
we find that $k<M_*$. We can take $y_c$ of order fm without violating the
existing observational constraints from astrophysics and
accelerator physics and then we find $k$ is of order GeV. We
assume that some unknown mechanism stabilizes the radius of extra
dimensions.

We next determine the spectrum of the KK-modes of this theory in
the low energy limit.
Decomposition of KK states can be carried out by considering the
following
graviton  perturbations:
\bigskip
\begin{equation}
ds^2 = e^{-2 \sigma}[ \eta_{\mu\nu} + h_{\mu\nu}(x,y,\theta_i)]
+ dy^2 + R^2 \delta_{ij} d \theta_i d \theta_j
\end{equation}
where R is the radius of compact extra dimensions and $ \sigma=k
(|y|-y_c)$. Here
we are not considering  fluctuations around extra dimensions.
We expand the linear fluctuations around the flat 4-dimensional metric in
a
complete
set of radial wavefunctions and fourier modes:
\bigskip
\begin{equation}
h_{\mu\nu}(x,y,\theta_i) =
\sum_{n,l}h_{\mu\nu}^{(n,l)}(x)\phi_{(n,l)}(y)
e^{il\theta}  
\end{equation}
Working in a gauge $\eta^{\alpha
\beta}\partial_{\alpha}h_{\beta\gamma}^{(n,l)}=\eta^{\alpha
\beta}h_{\alpha\beta}^{(n,l)}=0 $ and
$\partial^2 h_{\mu\nu}^{(n,l)}(x)=m_n^2  h_{\mu\nu}^{(n,l)}(x),$
the differential equation for radial part is given by
\begin{equation}
\partial_y \left( e^{-4 \sigma} \partial_y \phi_{n,l}(y)\right)=
- e^{- 2 \sigma}\left( m_n^2-\frac{l^2}{R^2}e^{- 2 \sigma}\right)
\phi_{n,l}(y)
\label{radial}
\end{equation}
with normalization condition $(2\pi R)^m\int_{- y_c}^{y_c} dy
e^{-2 \sigma} \phi_n^* \phi_{n'}=\delta_{nn'}$.
After changing variables to $z_n=\frac{M_n}{k}e^{\sigma}$  
and $f_{n,l}=e^{- 2 \sigma}\phi_{n,l}$, Eq.(\ref{radial}) can be
written as (for $y\ne0,y_c$)
\begin{equation}
z_n^2 \frac{d^2f_{n,l}}{dz_n^2}+z_n\frac{d
f_{n,l}}{dz_n}+\left[z_n^2-\left(4+\frac{l^2}{ k^2 R^2} 
\right)\right]f_{n,l}=0
\end{equation}
In the low energy limit we can set
l=0 since these modes will have energy larger than $1/R$.
Then in this limit the theory reduces to RS model except for the fact
that the size of the warped extra dimension is taken to be of order 1 fm
which is about three orders of magnitude larger than the fundamental length
scale of $(1 TeV)^{-1}$. 
The masses of these KK-modes are quantized in mass scale of the order of GeV and
their couplings to the standard model
fields which lives on the brane at $y=y_c$ are the same as in RS case. 
As there are a large number of modes present, we can ignore the few low 
lying modes and the sum over the remaining modes
can be done by changing the summation to
an integration as in the ADD case. 
%is provided by the following term
%\begin{equation} 
%D(s)=\sum_{n=1}^{\infty}\frac{i}{s-m_n^2+i\epsilon}=\frac{1}{2 k
%\sqrt{s}}+\frac{i}{2\pi k \sqrt{s}} log\left( \frac  
% {M_S+\sqrt{s}}{M_S-\sqrt{s}} \right)
%\end{equation}
%Real part of D(s) is just a contribution comes from the production of
%single KK mode with $m_n^2=s$ and the imaginary part is from the summation
%over many KK modes.$M_S$ is cutoff in the integral and is taken to be
%1 TeV.
%Sum over space-like propagators can also be written as 
%\begin{equation}
%D(t)=\sum_{n=1}^{\infty}\frac{-i}{|t|+m_n^2}=\frac{-i}
%{\pi k \sqrt{|t|}} tan^{-1}\left( \frac
%{M_S}{\sqrt{|t|}} \right)
%\end{equation}

We also consider another model proposed by Lykken and Randall \cite{LR}
in which the size of the extra dimension can be infinite. The model
was originally proposed with only one extra dimension. The model
involves three branes, one located at $y=0$, second at $y=\infty$ and
the third, which is the physical brane, located at some position
$y=y_0$ such that $0<y_0<\infty$. We generalize
this model by introducing $m$ additional compactified dimensions in
exact analogy to the above construction in the case of RS model. 
We find that the low energy predictions of the model remain unchanged due
to the addition of $m$ compact extra dimensions. Hence we find that
we can extend both the RS and the Lykken-Randall model such that they 
contain $m$ extra dimensions compactified on a length scale of the order
of inverse TeV and one large extra dimension of length scale larger
than (or order of) 1 fm. We can now construct p-brane solutions in these
models such that the brane is completely wrapped around the $m$ extra
compact dimensions. 

The parton level brane production 
cross section $\hat\sigma_{\rm brane}$ for p-brane
of mass $M_p=\sqrt {\hat s}$
is given by,
\begin{equation}
\hat\sigma_{\rm brane}(\hat s) = \Sigma(\hat s;n,m,p\le m) \hat\sigma_{\rm BH}
(\hat s)
\end{equation}
where $\hat\sigma_{\rm BH}$ is the production cross section for
black hole of mass $M_{BH}=\sqrt {\hat s}$. The black hole production 
cross section,
$\hat\sigma_{\rm BH}$, is given by \cite{BH1,BH2}
\begin{equation}
\hat\sigma_{\rm BH} \approx \pi r_S^2
\label{BlackDisc}
\end{equation}
where $r_S$ is the Schwarzchild radius of a $4+n$ dimensional black hole,
\begin{equation}
r_S = {1\over \sqrt \pi M_*}\left[M_{\rm BH}\over M_*\right]^{1\over 1+n}
\left[{8\Gamma\left({3+n\over 2}\right)\over 2+n}\right]^{1\over 1+n}
\end{equation}
The black hole and the brane
production processes are expected to give dominant contributions
when $s>> M_*^2$.

The total cross section can be computed using
\begin{equation}
\sigma(\nu N\rightarrow {\rm brane}) = \sum_i\int_{x_{\rm min}}^1 dx
\hat \sigma_{{\rm brane},i}(xs)f_i(x,Q)\ ,
\end{equation}
where $f_i$ is the parton distribution function corresponding to
the $i^{th}$ parton, $x_{\rm min} = M_*^2/s$
and $Q$ is the typical momentum scale of the collision
which is taken to be the brane mass. We use the CTEQ parton distributions
\cite{CTEQ}
for our calculation. Since the parton distributions are not known
beyond $Q=10$ TeV, we set $Q$ equal to this value if the brane
mass exceeds 10 TeV. The minimum value of $x$ is obtained by assuming
that branes are produced with masses $M_p$ greater than $M_*$.

\begin{figure}[t,b]
\caption{The neutrino-nucleon cross section $\sigma_{\nu p}$
including the p-brane production for several representative
values of $p$ and the number of extra dimensions $n$. The ratio
of the length scales $L/L_*$ of the small to large extra dimensions
has been set equal to 0.25 and the scale of quantum
gravity $M_*=1$ TeV. The highest energy HERA data point
and the cross section obtained in Standard Model (SM) are also shown
for comparison.}
\bigskip
\hbox{\hspace{0em}
\hbox{\psfig{figure=brane_fig11.eps,height=6cm}}}
\label{fig_sigma1}
\end{figure}

In fig. \ref{fig_sigma1} we plot the neutrino-nucleon cross section
for some representative choice of parameters, $p$ and $n$. The
ratio of length scales $L/L_*$ has been set equal to 0.25. We find that
for $n=7$ and $p=6$ the cross section rises to roughly 50 mb at
neutrino energy of $10^{11}$ GeV. As $p$ becomes smaller the cross section
is much smaller. Similarly the cross section is considerably reduced
as we lower $n$. The cross section is also found to be very sensitive
to the precise value of $L/L_*$. The dependence of total cross section
on $L/L_*$ is shown in fig. \ref{fig_sigma2} for some representative
choice of parameters, $p$ and $n$. The neutrino energy has been
taken to be $10^{11}$ GeV for this plot.

\begin{figure}[t,b]
\caption{
The $L/L_*$ dependence of the
neutrino-nucleon cross section $\sigma_{\nu p}$
  for several representative
value $p$ and the number of extra dimensions $n$.
he scale of quantum
gravity $M_*=1$ TeV and the incident neutrino energy is taken to be
$10^{11}$ GeV.
}
\bigskip
\hbox{\hspace{0em}
\hbox{\psfig{figure=brane_fig2.eps,height=6cm}}}
\label{fig_sigma2}
\end{figure}

It is clear from fig.  \ref{fig_sigma1} and fig.  \ref{fig_sigma2} that
there exists a large range of parameter space where the neutrino-nucleon
cross section is of the order of 100 mb or above for the primary neutrino
energy of $10^{11}$ GeV. These are comparable to the nucleon-nucleon cross
section at these energies and is typically the cross section values
required in order that the neutrino can considered as a candidate for
generating the observed air showers above the GZK bound.  We point out that
in the present case the neutrino delivers its entire energy in a single
collision.  This is in contrast to our earlier work \cite{us2}, 
using a t-channel
exchange in which the neutrino loses only a fraction of its energy in a
single collision.  In that case, the neutrino collides with several air
nuclei along its path, and the resulting air shower tends to be longer in
developing compared to an equally-energetic proton shower.  Nevertheless,
the characteristics of air showers do not rule out this model, given
fluctuations and uncertainties in energy \cite{us2}.  In the present case
with high inelasticity, the position of the shower maximum will be
determined dominantly by the value of the neutrino-air cross section.
Since there exists a large range of parameter space where the
neutrino-nucleon cross section exceeds 100 mb, the shower maximum could
exist at the same or higher altitude than that produced by a proton or even
an iron nucleus of equivalent energy.  Hence the position of the shower
maximum may be indistinguishable from a hadron primary of
equivalent energy.

We point out that our cross section does not violate any bounds
imposed by unitarity. The models and parameter ranges 
considered in this paper are not ruled
out by the low energy data. The cross section estimate is based on
the calculation of the area of the classical brane solution, which essentially
can be regarded as an estimate of the size of the region where the
gravitational interaction between the two particles is strong. Therefore
within these models, the total cross section has to be atleast as large 
as the
estimate obtained by assuming that it is dominated by p-brane production.
 Furthermore  as argued in Ref. \cite{us2} it is not possible
to determine whether a cross section violates unitarity simply
by looking at its rate of growth with energy. For example, the large 
$\sigma_{\nu-p}$ 
($>100$mb) obtained in Ref. \cite{us2} by assuming that it rises as 
$s^2$ with energy, 
is well within the bounds 
obtained by Goldberg and Weiler \cite{gw} by a model independent 
application of dispersion relations and unitarity. The growth
of p-brane production cross section with energy is relatively mild
in any case, with the total cross section rising at most as $E_\nu^{0.6}$ at
large energy
for the parameter ranges considered in this paper. 

After formation the p-brane will decay. In analogy with black hole
evaporation, we expect that branes will decay into gravitons and
matter fields. The emitted gravitons will not be detected.
Hence only a
fraction of the particles that are produced will be responsible for
generating the shower and the primary energy may be significantly
underestimated. This implies that for a shower of energy $E$ we need a primary
neutrino of energy  $E'$ which is somewhat larger than $E$.
The precise amount of energy which goes into gravitons is model
dependent.

In conclusion we have shown that in low scale gravity models the
neutrino-nucleon cross section is of the order of or larger than 100 mb for
a large range of parameter space allowed by current experimental
constraints.  This makes the neutrino a candidate for explaining the cosmic
ray events which appear to violate the GZK bound.  Future cosmic ray
observatories will be able to confirm or rule out this hypothesis.  In
particular, the ability of neutrino events to point back to their sources,
which can be established by well-defined statistical
correlations \cite{pointing}, has the potential to establish or to rule out
neutrinos as primaries in the GZK-violation mystery. A very clear discussion
on the possible origin of the highest energy cosmic rays is
given in Ref. \cite{ElbertandSommers}.

\bigskip
\noindent
{\bf Acknowledgements:}
We thank Douglas McKay and John Ralston for useful discussions. 
This work was supported in part by 
a grant from DST (India).


\begin{thebibliography}{unsrt}

\bibitem{add} N. Arkani-Hamed, S. Dimopolous and G. Dvali, {\it Phys. Lett.}
{\bf B429}, 263 (1998); 
I. Antoniadis, N. Arkani-Hamed, S. Dimopoulos and G. R. Dvali,
Phys. Lett. B {\bf 436}, 257 (1998). 
\bibitem{RS} L. Randall and R. Sundrum,
{\it Phys. Rev. Lett.} {\bf 83}, 3370 (1999); {\it Phys. Rev. Lett.} {\bf
83}, 4690 (1999).
\bibitem{HaLyZh}T. Han, J.D. Lykken and R.-J. Zhang,
{\it Phys. Rev. D} {\bf 59}, 105006 (1999);
  G.F. Giudice, R. Rattazzi and J.D. Wells,
{\it Nucl. Phys.} {\bf544}, 3 (1998); J. Hewett, {\it Phys. Rev. Lett.}
{\bf 82}, 4765 (1999).
\bibitem{N+S} S. Nussinov and R. Shrock, {\it Phys. Rev. D} {\bf 59},
105002 (1999).
\bibitem{us1}P. Jain, D. McKay, S. Panda and J. Ralston, {\it Phys. Lett.}
{\bf B484}, 267 (2000), .
\bibitem{d+d} G. Domokos and S. Kovesi-Domokos, {\it Phys.
Rev. Lett.} {\bf 82}, 1366 (1999)
\bibitem{kp}M. Kachelrie{\ss} and M. Pl{\"{u}}macher, {\it Phys. Rev. D}
{\bf 62}, 103006 (2000).
\bibitem{stringy} F. Cornet, J. I. Illana and M. Masip,
{\it Phys. Rev. Lett.} {\bf 86}, 4235 (2001), ;
S. Cullen, M. Perelstein and M. Peskin, {\it Phys. Rev. D}
{\bf 62}, 055012 (2000).
\bibitem{Emparan2} R. Emparan, M. Masip, and R. Rattazzi, 
Phys. Rev. {\bf D65}, 064023 (2002), 
  .
\bibitem{Feng}  J. L. Feng and A. D. Shapere, 
Phys. Rev. Lett. {\bf 88} 021303 (2002).
\bibitem{Anchordoqui1} L. Anchordoqui and H. Goldberg, 
Phys. Rev. {\bf D65},  047502 (2002), .
\bibitem{GZK} K. Greisen, Phys. Rev. Lett. {\bf 16}, 748 (1966); G. T. Zatsepin
and V. A. Kuzmin, Sov. Phys. JETP Lett. {\bf 4}, 78 (1966).
\bibitem{puget} J. Puget, F.W. Stecker and J. Bredekamp, {\it Astrophys.
J.} \textbf{205},
638 (1976); F.W. Stecker and M.H. Salamon, {\it Astrophys. J.}
{\bf 512}, 521 (1999);
   J. Wdowczyk, W. Tkaczyk and A. Wolfendale, {\it J. Phys. A}
\textbf{5}, 1419 (1972).
\bibitem{nw}M. Nagano and A. Watson, {\it Rev. Mod. Phys.} {\bf 72}, 689
(2000).
\bibitem{sigl} G. Sigl, Lect. Notes Phys. {\bf 556}, 259 (2000), 
.
\bibitem{early}Early versions of the idea of enhanced UHE neutrino-nucleon
cross sections include V. Berezinsky and G. Zatsepin, {\it Phys. Lett. B}
{\bf 28}, 423 (1969); G. Domokos and S. Nussinov, {\it Phys. Lett.}
{\bf B187}, 372 (1987); G. Domokos, B. Elliot, S. Kovesi-Domokos, and S.
Mrenna, {\it Phys. Rev. Lett.} {\bf 63}, 844 (1989);
J. Bordes, H.-M. Chan, J. Faridani, J. Pfaudler
  and S.-T. Tsou, {\it Astropar. Phys.} {\bf 8}, 135 (1998).
\bibitem{tos}C. Tyler, A. Olinto and G. Sigl, {\it Phys. Rev. D} {\bf 63},
055001 (2001).
\bibitem{neu}L. Anchordoqui, H. Goldberg, T. McKauley, T. Paul, S.
Reucroft and J. Swain, {\it Phys. Rev. D} {\bf 63}, 124009 (2001),
;
 Anchordoqui, H. Goldberg, J. MacLeod, T. McCauley, T. Paul,
S. Reucroft and J. Swain, .
\bibitem{N+S2} S. Nussinov and R. Shrock,  Phys. Rev. D {\bf 64},
047702 (2001).
\bibitem{Emparan1}  R. Emparan, 
Phys. Rev. {\bf D64},  024025 (2001).
\bibitem{Rattazzi} G. F. Giudice, R. Rattazzi and J. D. Wells,
Nucl. Phys. B {\bf 630}, 293 (2002),
.
\bibitem{Banks} T. Banks and W. Fischler,  .
\bibitem{BH1} S. B. Giddings and S. Thomas, Phys. Rev. {\bf D65}, 056010 
(2002), 
; 
S. B. Giddings, .
\bibitem{BH2} S. Dimopoulos and G. Landsberg,  Phys. Rev. Lett.
{\bf 87}, 161602 (2001).
\bibitem{Eardley} D. M. Eardley and S. B. Giddings, .
\bibitem{Hossenfelder}
S. Hossenfelder, S. Hofmann, M. Bleicher, H. St\"{o}cker, ;
M. Bleicher, S. Hofmann,
S. Hossenfelder and H. St\"{o}cker,
.
\bibitem{Cheung} K. Cheung, Phys. Rev. Lett. {\bf 88},  221602 (2002), 
.
\bibitem{Casadio} R. Casadio and B. Harms, .
\bibitem{Ringwald} A. Ringwald and H. Tu, 
Phys. Lett. B {\bf 525} 135 (2002).
\bibitem{Park} S. C. Park and H. S. Song, .
\bibitem{Rizzo} T. G. Rizzo, .
\bibitem{Anchordoqui2} L. A. Anchordoqui, J. L. Feng, H. Goldberg,
  and A. D. Shapere, Phys. Rev. {\bf D65}, 124027 (2002), .
\bibitem{Uehara} Y. Uehara, Prog. Theor. Phys. {\bf 107}, 621 (2002), 
.
\bibitem{Kowalski} M. Kowalski, A. Ringwald and H. Tu, 
Phys. Lett. {\bf B529}, 1 (2002), .
\bibitem{Voloshin}  M. B. Voloshin,  Phys. Lett. B {\bf 518}
137 (2001);  Phys. Lett. B {\bf 524}, 376 (2002).
\bibitem{Ahn2002} Eun-Joo Ahn, M. Cavaglia, A. V. Olinto,
.
\bibitem{LR} J. Lykken and L. Randall, JHEP {\bf 0006}, 014 (2000),
. 
\bibitem{kv} I. I. Kogan and N. A. Voronov, JETP Lett. {\bf 38}, 311 (1983).
\bibitem{cw} P. Candelas and S. Weinberg, Nucl. Phys. B {\bf 237}, 397 (1984).
\bibitem{CTEQ} H. L. Lai {\it et al}, Phys. Rev. D {\bf 51}, 4763 (1995).
\bibitem{us2} A. Jain, P. Jain, D. McKay, and J. Ralston,
 IJMPA {\bf 17}, 533 (2002).
\bibitem{gw} H. Goldberg and T. Weiler, {\it Phys. Rev. D} {\bf 59},
113005 (1999).
\bibitem{pointing} Y. Uchihori {\it et al}, 
Astropart. Phys. {\bf 13}, 151 (2000);
G. Farrar and P. Biermann, Phys. Rev. Lett. {\bf 81}, 3571, (1998);
A. Virmani et al.  Astropart. Phys. (to appear);  
G. Sigl, D. Torres, L. Anchordoqui, G. Romero,
 Phys. Rev. D {\bf 63}, 081302 (2001);
P. G. Tinyakov and I. I. Tkachev,
Pisma Zh. Eksp. Teor. Fiz. {\bf 74}, 499 (2001),
.
\bibitem{ElbertandSommers} J. Elbert
and P. Sommers, Astrophys.  J. {\bf 441}, 151 (1995).

\end{thebibliography}
\end{document}
-- 

{{{{{{{{{{{{{{{{   }}}}}}}}}}}}}}}

John P. Ralston

Professor of Physics
Department of Physics and Astronomy
University of Kansas, Lawrence KS 66044
RALSTON@UKANS.EDU
phone: 785 864 4626
fax: 785 864 5262
-----------------------------------
% Psfig/TeX 
\def\PsfigVersion{1.9}
% dvips version
%
% All psfig/tex software, documentation, and related files
% in this distribution of psfig/tex are 
% Copyright 1987, 1988, 1991 Trevor J. Darrell
%
% Permission is granted for use and non-profit distribution of psfig/tex 
% providing that this notice is clearly maintained. The right to
% distribute any portion of psfig/tex for profit or as part of any commercial
% product is specifically reserved for the author(s) of that portion.
%
% *** Feel free to make local modifications of psfig as you wish,
% *** but DO NOT post any changed or modified versions of ``psfig''
% *** directly to the net. Send them to me and I'll try to incorporate
% *** them into future versions. If you want to take the psfig code 
% *** and make a new program (subject to the copyright above), distribute it, 
% *** (and maintain it) that's fine, just don't call it psfig.
%
% Bugs and improvements to trevor@media.mit.edu.
%
% Thanks to Greg Hager (GDH) and Ned Batchelder for their contributions
% to the original version of this project.
%
% Modified by J. Daniel Smith on 9 October 1990 to accept the
% %%BoundingBox: comment with or without a space after the colon.  Stole
% file reading code from Tom Rokicki's EPSF.TEX file (see below).
%
% More modifications by J. Daniel Smith on 29 March 1991 to allow the
% the included PostScript figure to be rotated.  The amount of
% rotation is specified by the "angle=" parameter of the \psfig command.
%
% Modified by Robert Russell on June 25, 1991 to allow users to specify
% .ps filenames which don't yet exist, provided they explicitly provide
% boundingbox information via the \psfig command. Note: This will only work
% if the "file=" parameter follows all four "bb???=" parameters in the
% command. This is due to the order in which psfig interprets these params.
%
%  3 Jul 1991	JDS	check if file already read in once
%  4 Sep 1991	JDS	fixed incorrect computation of rotated
%			bounding box
% 25 Sep 1991	GVR	expanded synopsis of \psfig
% 14 Oct 1991	JDS	\fbox code from LaTeX so \psdraft works with TeX
%			changed \typeout to \ps@typeout
% 17 Oct 1991	JDS	added \psscalefirst and \psrotatefirst
%

% From: gvr@cs.brown.edu (George V. Reilly)
%
% \psdraft	draws an outline box, but doesn't include the figure
%		in the DVI file.  Useful for previewing.
%
% \psfull	includes the figure in the DVI file (default).
%
% \psscalefirst width= or height= specifies the size of the figure
% 		before rotation.
% \psrotatefirst (default) width= or height= specifies the size of the
% 		 figure after rotation.  Asymetric figures will
% 		 appear to shrink.
%
% \psfigurepath#1	sets the path to search for the figure
%
% \psfig
% usage: \psfig{file=, figure=, height=, width=,
%			bbllx=, bblly=, bburx=, bbury=,
%			rheight=, rwidth=, clip=, angle=, silent=}
%
%	"file" is the filename.  If no path name is specified and the
%		file is not found in the current directory,
%		it will be looked for in directory \psfigurepath.
%	"figure" is a synonym for "file".
%	By default, the width and height of the figure are taken from
%		the BoundingBox of the figure.
%	If "width" is specified, the figure is scaled so that it has
%		the specified width.  Its height changes proportionately.
%	If "height" is specified, the figure is scaled so that it has
%		the specified height.  Its width changes proportionately.
%	If both "width" and "height" are specified, the figure is scaled
%		anamorphically.
%	"bbllx", "bblly", "bburx", and "bbury" control the PostScript
%		BoundingBox.  If these four values are specified
%               *before* the "file" option, the PSFIG will not try to
%               open the PostScript file.
%	"rheight" and "rwidth" are the reserved height and width
%		of the figure, i.e., how big TeX actually thinks
%		the figure is.  They default to "width" and "height".
%	The "clip" option ensures that no portion of the figure will
%		appear outside its BoundingBox.  "clip=" is a switch and
%		takes no value, but the `=' must be present.
%	The "angle" option specifies the angle of rotation (degrees, ccw).
%	The "silent" option makes \psfig work silently.
%

% check to see if macros already loaded in (maybe some other file says
% "\input psfig") ...
\ifx\undefined\psfig\else\endinput\fi

%
% from a suggestion by eijkhout@csrd.uiuc.edu to allow
% loading as a style file. Changed to avoid problems
% with amstex per suggestion by jbence@math.ucla.edu

\let\LaTeXAtSign=\@
\let\@=\relax
\edef\psfigRestoreAt{\catcode`\@=\number\catcode`@\relax}
%\edef\psfigRestoreAt{\catcode`@=\number\catcode`@\relax}
\catcode`\@=11\relax
\newwrite\@unused
\def\ps@typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}
\ps@typeout{psfig/tex \PsfigVersion}

%% Here's how you define your figure path.  Should be set up with null
%% default and a user useable definition.

\def\figurepath{./}
\def\psfigurepath#1{\edef\figurepath{#1}}

%
% @psdo control structure -- similar to Latex @for.
% I redefined these with different names so that psfig can
% be used with TeX as well as LaTeX, and so that it will not 
% be vunerable to future changes in LaTeX's internal
% control structure,
%
\def\@nnil{\@nil}
\def\@empty{}
\def\@psdonoop#1\@@#2#3{}
\def\@psdo#1:=#2\do#3{\edef\@psdotmp{#2}\ifx\@psdotmp\@empty \else
    \expandafter\@psdoloop#2,\@nil,\@nil\@@#1{#3}\fi}
\def\@psdoloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
       #5\def#4{#2}\ifx #4\@nnil \else#5\@ipsdoloop #3\@@#4{#5}\fi\fi}
\def\@ipsdoloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil 
       \let\@nextwhile=\@psdonoop \else
      #4\relax\let\@nextwhile=\@ipsdoloop\fi\@nextwhile#2\@@#3{#4}}
\def\@tpsdo#1:=#2\do#3{\xdef\@psdotmp{#2}\ifx\@psdotmp\@empty \else
    \@tpsdoloop#2\@nil\@nil\@@#1{#3}\fi}
\def\@tpsdoloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil 
       \let\@nextwhile=\@psdonoop \else
      #4\relax\let\@nextwhile=\@tpsdoloop\fi\@nextwhile#2\@@#3{#4}}
% 
% \fbox is defined in latex.tex; so if \fbox is undefined, assume that
% we are not in LaTeX.
% Perhaps this could be done better???
\ifx\undefined\fbox
% \fbox code from modified slightly from LaTeX
\newdimen\fboxrule
\newdimen\fboxsep
\newdimen\ps@tempdima
\newbox\ps@tempboxa
\fboxsep = 3pt
\fboxrule = .4pt
\long\def\fbox#1{\leavevmode\setbox\ps@tempboxa\hbox{#1}\ps@tempdima\fboxrule
    \advance\ps@tempdima \fboxsep \advance\ps@tempdima \dp\ps@tempboxa
   \hbox{\lower \ps@tempdima\hbox
  {\vbox{\hrule height \fboxrule
          \hbox{\vrule width \fboxrule \hskip\fboxsep
          \vbox{\vskip\fboxsep \box\ps@tempboxa\vskip\fboxsep}\hskip 
                 \fboxsep\vrule width \fboxrule}
                 \hrule height \fboxrule}}}}
\fi
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% file reading stuff from epsf.tex
%   EPSF.TEX macro file:
%   Written by Tomas Rokicki of Radical Eye Software, 29 Mar 1989.
%   Revised by Don Knuth, 3 Jan 1990.
%   Revised by Tomas Rokicki to accept bounding boxes with no
%      space after the colon, 18 Jul 1990.
%   Portions modified/removed for use in PSFIG package by
%      J. Daniel Smith, 9 October 1990.
%
\newread\ps@stream
\newif\ifnot@eof       % continue looking for the bounding box?
\newif\if@noisy        % report what you're making?
\newif\if@atend        % %%BoundingBox: has (at end) specification
\newif\if@psfile       % does this look like a PostScript file?
%
% PostScript files should start with `%!'
%
{\catcode`\%=12\global\gdef\epsf@start{%!}}
\def\epsf@PS{PS}
%
\def\epsf@getbb#1{%
%
%   The first thing we need to do is to open the
%   PostScript file, if possible.
%
\openin\ps@stream=#1
\ifeof\ps@stream\ps@typeout{Error, File #1 not found}\else
%
%   Okay, we got it. Now we'll scan lines until we find one that doesn't
%   start with %. We're looking for the bounding box comment.
%
   {\not@eoftrue \chardef\other=12
    \def\do##1{\catcode`##1=\other}\dospecials \catcode`\ =10
    \loop
       \if@psfile
	  \read\ps@stream to \epsf@fileline
       \else{
	  \obeyspaces
          \read\ps@stream to \epsf@tmp\global\let\epsf@fileline\epsf@tmp}
       \fi
       \ifeof\ps@stream\not@eoffalse\else
%
%   Check the first line for `%!'.  Issue a warning message if its not
%   there, since the file might not be a PostScript file.
%
       \if@psfile\else
       \expandafter\epsf@test\epsf@fileline:. \\%
       \fi
%
%   We check to see if the first character is a % sign;
%   if so, we look further and stop only if the line begins with
%   `%%BoundingBox:' and the `(atend)' specification was not found.
%   That is, the only way to stop is when the end of file is reached,
%   or a `%%BoundingBox: llx lly urx ury' line is found.
%
          \expandafter\epsf@aux\epsf@fileline:. \\%
       \fi
   \ifnot@eof\repeat
   }\closein\ps@stream\fi}%
%
% This tests if the file we are reading looks like a PostScript file.
%
\long\def\epsf@test#1#2#3:#4\\{\def\epsf@testit{#1#2}
			\ifx\epsf@testit\epsf@start\else
\ps@typeout{Warning! File does not start with `\epsf@start'.  It may not be a PostScript file.}
			\fi
			\@psfiletrue} % don't test after 1st line
%
%   We still need to define the tricky \epsf@aux macro. This requires
%   a couple of magic constants for comparison purposes.
%
{\catcode`\%=12\global\let\epsf@percent=%\global\def\epsf@bblit{%BoundingBox}}
%
%
%   So we're ready to check for `%BoundingBox:' and to grab the
%   values if they are found.  We continue searching if `(at end)'
%   was found after the `%BoundingBox:'.
%
\long\def\epsf@aux#1#2:#3\\{\ifx#1\epsf@percent
   \def\epsf@testit{#2}\ifx\epsf@testit\epsf@bblit
	\@atendfalse
        \epsf@atend #3 . \\%
	\if@atend	
	   \if@verbose{
		\ps@typeout{psfig: found `(atend)'; continuing search}
	   }\fi
        \else
        \epsf@grab #3 . . . \\%
        \not@eoffalse
        \global\no@bbfalse
        \fi
   \fi\fi}%
%
%   Here we grab the values and stuff them in the appropriate definitions.
%
\def\epsf@grab #1 #2 #3 #4 #5\\{%
   \global\def\epsf@llx{#1}\ifx\epsf@llx\empty
      \epsf@grab #2 #3 #4 #5 .\\\else
   \global\def\epsf@lly{#2}%
   \global\def\epsf@urx{#3}\global\def\epsf@ury{#4}\fi}%
%
% Determine if the stuff following the %%BoundingBox is `(atend)'
% J. Daniel Smith.  Copied from \epsf@grab above.
%
\def\epsf@atendlit{(atend)} 
\def\epsf@atend #1 #2 #3\\{%
   \def\epsf@tmp{#1}\ifx\epsf@tmp\empty
      \epsf@atend #2 #3 .\\\else
   \ifx\epsf@tmp\epsf@atendlit\@atendtrue\fi\fi}


% End of file reading stuff from epsf.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% trigonometry stuff from "trig.tex"
\chardef\psletter = 11 % won't conflict with \begin{letter} now...
\chardef\other = 12

\newif \ifdebug %%% turn me on to see TeX hard at work ...
\newif\ifc@mpute %%% don't need to compute some values
\c@mputetrue % but assume that we do

\let\then = \relax
\def\r@dian{pt }
\let\r@dians = \r@dian
\let\dimensionless@nit = \r@dian
\let\dimensionless@nits = \dimensionless@nit
\def\internal@nit{sp }
\let\internal@nits = \internal@nit
\newif\ifstillc@nverging
\def \Mess@ge #1{\ifdebug \then \message {#1} \fi}

{ %%% Things that need abnormal catcodes %%%
	\catcode `\@ = \psletter
	\gdef \nodimen {\expandafter \n@dimen \the \dimen}
	\gdef \term #1 #2 #3%
	       {\edef \t@ {\the #1}%%% freeze parameter 1 (count, by value)
		\edef \t@@ {\expandafter \n@dimen \the #2\r@dian}%
				   %%% freeze parameter 2 (dimen, by value)
		\t@rm {\t@} {\t@@} {#3}%
	       }
	\gdef \t@rm #1 #2 #3%
	       {{%
		\count 0 = 0
		\dimen 0 = 1 \dimensionless@nit
		\dimen 2 = #2\relax
		\Mess@ge {Calculating term #1 of \nodimen 2}%
		\loop
		\ifnum	\count 0 < #1
		\then	\advance \count 0 by 1
			\Mess@ge {Iteration \the \count 0 \space}%
			\Multiply \dimen 0 by {\dimen 2}%
			\Mess@ge {After multiplication, term = \nodimen 0}%
			\Divide \dimen 0 by {\count 0}%
			\Mess@ge {After division, term = \nodimen 0}%
		\repeat
		\Mess@ge {Final value for term #1 of 
				\nodimen 2 \space is \nodimen 0}%
		\xdef \Term {#3 = \nodimen 0 \r@dians}%
		\aftergroup \Term
	       }}
	\catcode `\p = \other
	\catcode `\t = \other
	\gdef \n@dimen #1pt{#1} %%% throw away the ``pt''
}

\def \Divide #1by #2{\divide #1 by #2} %%% just a synonym

\def \Multiply #1by #2%%% allows division of a dimen by a dimen
       {{%%% should really freeze parameter 2 (dimen, passed by value)
	\count 0 = #1\relax
	\count 2 = #2\relax
	\count 4 = 65536
	\Mess@ge {Before scaling, count 0 = \the \count 0 \space and
			count 2 = \the \count 2}%
	\ifnum	\count 0 > 32767 %%% do our best to avoid overflow
	\then	\divide \count 0 by 4
		\divide \count 4 by 4
	\else	\ifnum	\count 0 < -32767
		\then	\divide \count 0 by 4
			\divide \count 4 by 4
		\else
		\fi
	\fi
	\ifnum	\count 2 > 32767 %%% while retaining reasonable accuracy
	\then	\divide \count 2 by 4
		\divide \count 4 by 4
	\else	\ifnum	\count 2 < -32767
		\then	\divide \count 2 by 4
			\divide \count 4 by 4
		\else
		\fi
	\fi
	\multiply \count 0 by \count 2
	\divide \count 0 by \count 4
	\xdef \product {#1 = \the \count 0 \internal@nits}%
	\aftergroup \product
       }}

\def\r@duce{\ifdim\dimen0 > 90\r@dian \then   % sin(x+90) = sin(180-x)
		\multiply\dimen0 by -1
		\advance\dimen0 by 180\r@dian
		\r@duce
	    \else \ifdim\dimen0 < -90\r@dian \then  % sin(-x) = sin(360+x)
		\advance\dimen0 by 360\r@dian
		\r@duce
		\fi
	    \fi}

\def\Sine#1%
       {{%
	\dimen 0 = #1 \r@dian
	\r@duce
	\ifdim\dimen0 = -90\r@dian \then
	   \dimen4 = -1\r@dian
	   \c@mputefalse
	\fi
	\ifdim\dimen0 = 90\r@dian \then
	   \dimen4 = 1\r@dian
	   \c@mputefalse
	\fi
	\ifdim\dimen0 = 0\r@dian \then
	   \dimen4 = 0\r@dian
	   \c@mputefalse
	\fi
%
	\ifc@mpute \then
        	% convert degrees to radians
		\divide\dimen0 by 180
		\dimen0=3.141592654\dimen0
%
		\dimen 2 = 3.1415926535897963\r@dian %%% a well-known constant
		\divide\dimen 2 by 2 %%% we only deal with -pi/2 : pi/2
		\Mess@ge {Sin: calculating Sin of \nodimen 0}%
		\count 0 = 1 %%% see power-series expansion for sine
		\dimen 2 = 1 \r@dian %%% ditto
		\dimen 4 = 0 \r@dian %%% ditto
		\loop
			\ifnum	\dimen 2 = 0 %%% then we've done
			\then	\stillc@nvergingfalse 
			\else	\stillc@nvergingtrue
			\fi
			\ifstillc@nverging %%% then calculate next term
			\then	\term {\count 0} {\dimen 0} {\dimen 2}%
				\advance \count 0 by 2
				\count 2 = \count 0
				\divide \count 2 by 2
				\ifodd	\count 2 %%% signs alternate
				\then	\advance \dimen 4 by \dimen 2
				\else	\advance \dimen 4 by -\dimen 2
				\fi
		\repeat
	\fi		
			\xdef \sine {\nodimen 4}%
       }}

% Now the Cosine can be calculated easily by calling \Sine
\def\Cosine#1{\ifx\sine\UnDefined\edef\Savesine{\relax}\else
		             \edef\Savesine{\sine}\fi
	{\dimen0=#1\r@dian\advance\dimen0 by 90\r@dian
	 \Sine{\nodimen 0}
	 \xdef\cosine{\sine}
	 \xdef\sine{\Savesine}}}	      
% end of trig stuff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\psdraft{
	\def\@psdraft{0}
	%\ps@typeout{draft level now is \@psdraft \space . }
}
\def\psfull{
	\def\@psdraft{100}
	%\ps@typeout{draft level now is \@psdraft \space . }
}

\psfull

\newif\if@scalefirst
\def\psscalefirst{\@scalefirsttrue}
\def\psrotatefirst{\@scalefirstfalse}
\psrotatefirst

\newif\if@draftbox
\def\psnodraftbox{
	\@draftboxfalse
}
\def\psdraftbox{
	\@draftboxtrue
}
\@draftboxtrue

\newif\if@prologfile
\newif\if@postlogfile
\def\pssilent{
	\@noisyfalse
}
\def\psnoisy{
	\@noisytrue
}
\psnoisy
%%% These are for the option list.
%%% A specification of the form a = b maps to calling \@p@@sa{b}
\newif\if@bbllx
\newif\if@bblly
\newif\if@bburx
\newif\if@bbury
\newif\if@height
\newif\if@width
\newif\if@rheight
\newif\if@rwidth
\newif\if@angle
\newif\if@clip
\newif\if@verbose
\def\@p@@sclip#1{\@cliptrue}


\newif\if@decmpr

%%% GDH 7/26/87 -- changed so that it first looks in the local directory,
%%% then in a specified global directory for the ps file.
%%% RPR 6/25/91 -- changed so that it defaults to user-supplied name if
%%% boundingbox info is specified, assuming graphic will be created by
%%% print time.
%%% TJD 10/19/91 -- added bbfile vs. file distinction, and @decmpr flag

\def\@p@@sfigure#1{\def\@p@sfile{null}\def\@p@sbbfile{null}
	        \openin1=#1.bb
		\ifeof1\closein1
	        	\openin1=\figurepath#1.bb
			\ifeof1\closein1
			        \openin1=#1
				\ifeof1\closein1%
				       \openin1=\figurepath#1
					\ifeof1
					   \ps@typeout{Error, File #1 not found}
						\if@bbllx\if@bblly
				   		\if@bburx\if@bbury
			      				\def\@p@sfile{#1}%
			      				\def\@p@sbbfile{#1}%
							\@decmprfalse
				  	   	\fi\fi\fi\fi
					\else\closein1
				    		\def\@p@sfile{\figurepath#1}%
				    		\def\@p@sbbfile{\figurepath#1}%
						\@decmprfalse
	                       		\fi%
			 	\else\closein1%
					\def\@p@sfile{#1}
					\def\@p@sbbfile{#1}
					\@decmprfalse
			 	\fi
			\else
				\def\@p@sfile{\figurepath#1}
				\def\@p@sbbfile{\figurepath#1.bb}
				\@decmprtrue
			\fi
		\else
			\def\@p@sfile{#1}
			\def\@p@sbbfile{#1.bb}
			\@decmprtrue
		\fi}

\def\@p@@sfile#1{\@p@@sfigure{#1}}

\def\@p@@sbbllx#1{
		%\ps@typeout{bbllx is #1}
		\@bbllxtrue
		\dimen100=#1
		\edef\@p@sbbllx{\number\dimen100}
}
\def\@p@@sbblly#1{
		%\ps@typeout{bblly is #1}
		\@bbllytrue
		\dimen100=#1
		\edef\@p@sbblly{\number\dimen100}
}
\def\@p@@sbburx#1{
		%\ps@typeout{bburx is #1}
		\@bburxtrue
		\dimen100=#1
		\edef\@p@sbburx{\number\dimen100}
}
\def\@p@@sbbury#1{
		%\ps@typeout{bbury is #1}
		\@bburytrue
		\dimen100=#1
		\edef\@p@sbbury{\number\dimen100}
}
\def\@p@@sheight#1{
		\@heighttrue
		\dimen100=#1
   		\edef\@p@sheight{\number\dimen100}
		%\ps@typeout{Height is \@p@sheight}
}
\def\@p@@swidth#1{
		%\ps@typeout{Width is #1}
		\@widthtrue
		\dimen100=#1
		\edef\@p@swidth{\number\dimen100}
}
\def\@p@@srheight#1{
		%\ps@typeout{Reserved height is #1}
		\@rheighttrue
		\dimen100=#1
		\edef\@p@srheight{\number\dimen100}
}
\def\@p@@srwidth#1{
		%\ps@typeout{Reserved width is #1}
		\@rwidthtrue
		\dimen100=#1
		\edef\@p@srwidth{\number\dimen100}
}
\def\@p@@sangle#1{
		%\ps@typeout{Rotation is #1}
		\@angletrue
%		\dimen100=#1
		\edef\@p@sangle{#1} %\number\dimen100}
}
\def\@p@@ssilent#1{ 
		\@verbosefalse
}
\def\@p@@sprolog#1{\@prologfiletrue\def\@prologfileval{#1}}
\def\@p@@spostlog#1{\@postlogfiletrue\def\@postlogfileval{#1}}
\def\@cs@name#1{\csname #1\endcsname}
\def\@setparms#1=#2,{\@cs@name{@p@@s#1}{#2}}
%
% initialize the defaults (size the size of the figure)
%
\def\ps@init@parms{
		\@bbllxfalse \@bbllyfalse
		\@bburxfalse \@bburyfalse
		\@heightfalse \@widthfalse
		\@rheightfalse \@rwidthfalse
		\def\@p@sbbllx{}\def\@p@sbblly{}
		\def\@p@sbburx{}\def\@p@sbbury{}
		\def\@p@sheight{}\def\@p@swidth{}
		\def\@p@srheight{}\def\@p@srwidth{}
		\def\@p@sangle{0}
		\def\@p@sfile{} \def\@p@sbbfile{}
		\def\@p@scost{10}
		\def\@sc{}
		\@prologfilefalse
		\@postlogfilefalse
		\@clipfalse
		\if@noisy
			\@verbosetrue
		\else
			\@verbosefalse
		\fi
}
%
% Go through the options setting things up.
%
\def\parse@ps@parms#1{
	 	\@psdo\@psfiga:=#1\do
		   {\expandafter\@setparms\@psfiga,}}
%
% Compute bb height and width
%
\newif\ifno@bb
\def\bb@missing{
	\if@verbose{
		\ps@typeout{psfig: searching \@p@sbbfile \space  for bounding box}
	}\fi
	\no@bbtrue
	\epsf@getbb{\@p@sbbfile}
        \ifno@bb \else \bb@cull\epsf@llx\epsf@lly\epsf@urx\epsf@ury\fi
}	
\def\bb@cull#1#2#3#4{
	\dimen100=#1 bp\edef\@p@sbbllx{\number\dimen100}
	\dimen100=#2 bp\edef\@p@sbblly{\number\dimen100}
	\dimen100=#3 bp\edef\@p@sbburx{\number\dimen100}
	\dimen100=#4 bp\edef\@p@sbbury{\number\dimen100}
	\no@bbfalse
}
% rotate point (#1,#2) about (0,0).
% The sine and cosine of the angle are already stored in \sine and
% \cosine.  The result is placed in (\p@intvaluex, \p@intvaluey).
\newdimen\p@intvaluex
\newdimen\p@intvaluey
\def\rotate@#1#2{{\dimen0=#1 sp\dimen1=#2 sp
%            	calculate x' = x \cos\theta - y \sin\theta
		  \global\p@intvaluex=\cosine\dimen0
		  \dimen3=\sine\dimen1
		  \global\advance\p@intvaluex by -\dimen3
% 		calculate y' = x \sin\theta + y \cos\theta
		  \global\p@intvaluey=\sine\dimen0
		  \dimen3=\cosine\dimen1
		  \global\advance\p@intvaluey by \dimen3
		  }}
\def\compute@bb{
		\no@bbfalse
		\if@bbllx \else \no@bbtrue \fi
		\if@bblly \else \no@bbtrue \fi
		\if@bburx \else \no@bbtrue \fi
		\if@bbury \else \no@bbtrue \fi
		\ifno@bb \bb@missing \fi
		\ifno@bb \ps@typeout{FATAL ERROR: no bb supplied or found}
			\no-bb-error
		\fi
		%
%\ps@typeout{BB: \@p@sbbllx, \@p@sbblly, \@p@sbburx, \@p@sbbury} 
%
% store height/width of original (unrotated) bounding box
		\count203=\@p@sbburx
		\count204=\@p@sbbury
		\advance\count203 by -\@p@sbbllx
		\advance\count204 by -\@p@sbblly
		\edef\ps@bbw{\number\count203}
		\edef\ps@bbh{\number\count204}
		%\ps@typeout{ psbbh = \ps@bbh, psbbw = \ps@bbw }
		\if@angle 
			\Sine{\@p@sangle}\Cosine{\@p@sangle}
	        	{\dimen100=\maxdimen\xdef\r@p@sbbllx{\number\dimen100}
					    \xdef\r@p@sbblly{\number\dimen100}
			                    \xdef\r@p@sbburx{-\number\dimen100}
					    \xdef\r@p@sbbury{-\number\dimen100}}
%
% Need to rotate all four points and take the X-Y extremes of the new
% points as the new bounding box.
                        \def\minmaxtest{
			   \ifnum\number\p@intvaluex<\r@p@sbbllx
			      \xdef\r@p@sbbllx{\number\p@intvaluex}\fi
			   \ifnum\number\p@intvaluex>\r@p@sbburx
			      \xdef\r@p@sbburx{\number\p@intvaluex}\fi
			   \ifnum\number\p@intvaluey<\r@p@sbblly
			      \xdef\r@p@sbblly{\number\p@intvaluey}\fi
			   \ifnum\number\p@intvaluey>\r@p@sbbury
			      \xdef\r@p@sbbury{\number\p@intvaluey}\fi
			   }
%			lower left
			\rotate@{\@p@sbbllx}{\@p@sbblly}
			\minmaxtest
%			upper left
			\rotate@{\@p@sbbllx}{\@p@sbbury}
			\minmaxtest
%			lower right
			\rotate@{\@p@sbburx}{\@p@sbblly}
			\minmaxtest
%			upper right
			\rotate@{\@p@sbburx}{\@p@sbbury}
			\minmaxtest
			\edef\@p@sbbllx{\r@p@sbbllx}\edef\@p@sbblly{\r@p@sbblly}
			\edef\@p@sbburx{\r@p@sbburx}\edef\@p@sbbury{\r@p@sbbury}
%\ps@typeout{rotated BB: \r@p@sbbllx, \r@p@sbblly, \r@p@sbburx, \r@p@sbbury}
		\fi
		\count203=\@p@sbburx
		\count204=\@p@sbbury
		\advance\count203 by -\@p@sbbllx
		\advance\count204 by -\@p@sbblly
		\edef\@bbw{\number\count203}
		\edef\@bbh{\number\count204}
		%\ps@typeout{ bbh = \@bbh, bbw = \@bbw }
}
%
% \in@hundreds performs #1 * (#2 / #3) correct to the hundreds,
%	then leaves the result in @result
%
\def\in@hundreds#1#2#3{\count240=#2 \count241=#3
		     \count100=\count240	% 100 is first digit #2/#3
		     \divide\count100 by \count241
		     \count101=\count100
		     \multiply\count101 by \count241
		     \advance\count240 by -\count101
		     \multiply\count240 by 10
		     \count101=\count240	%101 is second digit of #2/#3
		     \divide\count101 by \count241
		     \count102=\count101
		     \multiply\count102 by \count241
		     \advance\count240 by -\count102
		     \multiply\count240 by 10
		     \count102=\count240	% 102 is the third digit
		     \divide\count102 by \count241
		     \count200=#1\count205=0
		     \count201=\count200
			\multiply\count201 by \count100
		 	\advance\count205 by \count201
		     \count201=\count200
			\divide\count201 by 10
			\multiply\count201 by \count101
			\advance\count205 by \count201
			%
		     \count201=\count200
			\divide\count201 by 100
			\multiply\count201 by \count102
			\advance\count205 by \count201
			%
		     \edef\@result{\number\count205}
}
\def\compute@wfromh{
		% computing : width = height * (bbw / bbh)
		\in@hundreds{\@p@sheight}{\@bbw}{\@bbh}
		%\ps@typeout{ \@p@sheight * \@bbw / \@bbh, = \@result }
		\edef\@p@swidth{\@result}
		%\ps@typeout{w from h: width is \@p@swidth}
}
\def\compute@hfromw{
		% computing : height = width * (bbh / bbw)
	        \in@hundreds{\@p@swidth}{\@bbh}{\@bbw}
		%\ps@typeout{ \@p@swidth * \@bbh / \@bbw = \@result }
		\edef\@p@sheight{\@result}
		%\ps@typeout{h from w : height is \@p@sheight}
}
\def\compute@handw{
		\if@height 
			\if@width
			\else
				\compute@wfromh
			\fi
		\else 
			\if@width
				\compute@hfromw
			\else
				\edef\@p@sheight{\@bbh}
				\edef\@p@swidth{\@bbw}
			\fi
		\fi
}
\def\compute@resv{
		\if@rheight \else \edef\@p@srheight{\@p@sheight} \fi
		\if@rwidth \else \edef\@p@srwidth{\@p@swidth} \fi
		%\ps@typeout{rheight = \@p@srheight, rwidth = \@p@srwidth}
}
%		
% Compute any missing values
\def\compute@sizes{
	\compute@bb
	\if@scalefirst\if@angle
% at this point the bounding box has been adjsuted correctly for
% rotation.  PSFIG does all of its scaling using \@bbh and \@bbw.  If
% a width= or height= was specified along with \psscalefirst, then the
% width=/height= value needs to be adjusted to match the new (rotated)
% bounding box size (specifed in \@bbw and \@bbh).
%    \ps@bbw       width=
%    -------  =  ---------- 
%    \@bbw       new width=
% so `new width=' = (width= * \@bbw) / \ps@bbw; where \ps@bbw is the
% width of the original (unrotated) bounding box.
	\if@width
	   \in@hundreds{\@p@swidth}{\@bbw}{\ps@bbw}
	   \edef\@p@swidth{\@result}
	\fi
	\if@height
	   \in@hundreds{\@p@sheight}{\@bbh}{\ps@bbh}
	   \edef\@p@sheight{\@result}
	\fi
	\fi\fi
	\compute@handw
	\compute@resv}

%
% \psfig
% usage : \psfig{file=, height=, width=, bbllx=, bblly=, bburx=, bbury=,
%			rheight=, rwidth=, clip=}
%
% "clip=" is a switch and takes no value, but the `=' must be present.
\def\psfig#1{\vbox {
	% do a zero width hard space so that a single
	% \psfig in a centering enviornment will behave nicely
	%{\setbox0=\hbox{\ }\ \hskip-\wd0}
	%
	\ps@init@parms
	\parse@ps@parms{#1}
	\compute@sizes
	%
	\ifnum\@p@scost<\@psdraft{
		%
		\special{ps::[begin] 	\@p@swidth \space \@p@sheight \space
				\@p@sbbllx \space \@p@sbblly \space
				\@p@sbburx \space \@p@sbbury \space
				startTexFig \space }
		\if@angle
			\special {ps:: \@p@sangle \space rotate \space} 
		\fi
		\if@clip{
			\if@verbose{
				\ps@typeout{(clip)}
			}\fi
			\special{ps:: doclip \space }
		}\fi
		\if@prologfile
		    \special{ps: plotfile \@prologfileval \space } \fi
		\if@decmpr{
			\if@verbose{
				\ps@typeout{psfig: including \@p@sfile.Z \space }
			}\fi
			\special{ps: plotfile "`zcat \@p@sfile.Z" \space }
		}\else{
			\if@verbose{
				\ps@typeout{psfig: including \@p@sfile \space }
			}\fi
			\special{ps: plotfile \@p@sfile \space }
		}\fi
		\if@postlogfile
		    \special{ps: plotfile \@postlogfileval \space } \fi
		\special{ps::[end] endTexFig \space }
		% Create the vbox to reserve the space for the figure.
		\vbox to \@p@srheight sp{
		% 1/92 TJD Changed from "true sp" to "sp" for magnification.
			\hbox to \@p@srwidth sp{
				\hss
			}
		\vss
		}
	}\else{
		% draft figure, just reserve the space and print the
		% path name.
		\if@draftbox{		
			% Verbose draft: print file name in box
			\hbox{\frame{\vbox to \@p@srheight sp{
			\vss
			\hbox to \@p@srwidth sp{ \hss \@p@sfile \hss }
			\vss
			}}}
		}\else{
			% Non-verbose draft
			\vbox to \@p@srheight sp{
			\vss
			\hbox to \@p@srwidth sp{\hss}
			\vss
			}
		}\fi	



	}\fi
}}
\psfigRestoreAt
\let\@=\LaTeXAtSign

