ex-4: went on writing the theory
This commit is contained in:
parent
e60d32591d
commit
15079ff587
117
ex-4/main.c
Normal file
117
ex-4/main.c
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <gsl/gsl_rng.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Set default options.
|
||||||
|
//
|
||||||
|
size_t N = 50000; // number of events.
|
||||||
|
size_t n = 50; // number of bins.
|
||||||
|
double p_max = 10; // maximum value of momentum module.
|
||||||
|
|
||||||
|
// Process CLI arguments.
|
||||||
|
//
|
||||||
|
for (size_t i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
if (!strcmp(argv[i], "-N")) N = atol(argv[++i]);
|
||||||
|
else if (!strcmp(argv[i], "-n")) n = atol(argv[++i]);
|
||||||
|
else if (!strcmp(argv[i], "-p")) p_max = atof(argv[++i]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Usage: %s -[hiIntp]\n", argv[0]);
|
||||||
|
fprintf(stderr, "\t-h\tShow this message.\n");
|
||||||
|
fprintf(stderr, "\t-N integer\tThe number of events to generate.\n");
|
||||||
|
fprintf(stderr, "\t-n integer\tThe number of bins of the histogram.\n");
|
||||||
|
fprintf(stderr, "\t-p float\tThe maximum value of momentum.\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize an RNG.
|
||||||
|
//
|
||||||
|
gsl_rng_env_setup();
|
||||||
|
gsl_rng *r = gsl_rng_alloc(gsl_rng_default);
|
||||||
|
|
||||||
|
// Generate the angle θ uniformly distributed on a sphere using the
|
||||||
|
// inverse transform:
|
||||||
|
//
|
||||||
|
// θ = acos(1 - 2X)
|
||||||
|
//
|
||||||
|
// where X is a random uniform variable in [0,1), and the module p of
|
||||||
|
// the vector:
|
||||||
|
//
|
||||||
|
// p² = p_v² + p_h²
|
||||||
|
//
|
||||||
|
// uniformly distributed between 0 and p_max. The two components are
|
||||||
|
// then computed as:
|
||||||
|
//
|
||||||
|
// p_v = p⋅cos(θ)
|
||||||
|
// p_h = p⋅sin(θ)
|
||||||
|
//
|
||||||
|
// The histogram will be updated this way.
|
||||||
|
// The j-th bin where p_h goes in is given by:
|
||||||
|
//
|
||||||
|
// step = p_max / n
|
||||||
|
// j = floor(p_h / step)
|
||||||
|
//
|
||||||
|
// Thus an histogram was created and a structure containing the number of
|
||||||
|
// entries in each bin and the sum of |p_v| in each of them is created and
|
||||||
|
// filled while generating the events.
|
||||||
|
//
|
||||||
|
struct bin
|
||||||
|
{
|
||||||
|
size_t amo; // Amount of events in the bin.
|
||||||
|
double sum; // Sum of |p_v|s of all the events in the bin.
|
||||||
|
};
|
||||||
|
struct bin *histo = calloc(n, sizeof(struct bin));
|
||||||
|
|
||||||
|
// Some useful variables.
|
||||||
|
//
|
||||||
|
double step = p_max / n;
|
||||||
|
struct bin *b;
|
||||||
|
double theta;
|
||||||
|
double p;
|
||||||
|
double p_v;
|
||||||
|
double p_h;
|
||||||
|
size_t j;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
// Generate the event.
|
||||||
|
//
|
||||||
|
theta = acos(1 - 2*gsl_rng_uniform(r));
|
||||||
|
p = p_max * gsl_rng_uniform(r);
|
||||||
|
|
||||||
|
// Compute the components.
|
||||||
|
//
|
||||||
|
p_v = p * cos(theta);
|
||||||
|
p_h = p * sin(theta);
|
||||||
|
|
||||||
|
// Update the histogram.
|
||||||
|
//
|
||||||
|
j = floor(p_h / step);
|
||||||
|
b = &histo[j];
|
||||||
|
b->amo++;
|
||||||
|
b->sum += fabs(p_v);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute the mean value of each bin and print it to stodut
|
||||||
|
// together with other useful things to make the histogram.
|
||||||
|
//
|
||||||
|
printf("bins: \t%ld\n", n);
|
||||||
|
printf("step: \t%.5f\n", step);
|
||||||
|
for (size_t i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
histo[i].sum = histo[i].sum / histo[i].amo;
|
||||||
|
printf("\n%.5f", histo[i].sum);
|
||||||
|
};
|
||||||
|
|
||||||
|
// free memory
|
||||||
|
gsl_rng_free(r);
|
||||||
|
free(histo);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
Binary file not shown.
@ -6,16 +6,16 @@ Consider a great number of non-interacting particles, each of which with a
|
|||||||
random momentum $\vec{p}$ with module between 0 and $p_{\text{max}}$ randomly
|
random momentum $\vec{p}$ with module between 0 and $p_{\text{max}}$ randomly
|
||||||
angled with respect to a coordinate system {$\hat{x}$, $\hat{y}$, $\hat{z}$}.
|
angled with respect to a coordinate system {$\hat{x}$, $\hat{y}$, $\hat{z}$}.
|
||||||
Once the polar angle $\theta$ is defined, the momentum vertical and horizontal
|
Once the polar angle $\theta$ is defined, the momentum vertical and horizontal
|
||||||
components of a particle, which will be referred as $p_v$ and $p_h$, are the
|
components of a particle, which will be referred as $\vec{p_v}$ and $\vec{p_h}$
|
||||||
ones shown in @fig:components.
|
respectively, are the ones shown in @fig:components.
|
||||||
If $\theta$ is evenly distributed on the sphere and the same holds for the
|
If $\theta$ is evenly distributed on the sphere and the same holds for the
|
||||||
module $p$, which distribution will the average value of the absolute value of
|
module $p$, which distribution will the average value of $|p_v|$ follow as a
|
||||||
$p_v$ follow as a function of $p_h$?
|
function of $p_h$?
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
\hypertarget{fig:components}{%
|
\hypertarget{fig:components}{%
|
||||||
\centering
|
\centering
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}[font=\scriptsize]
|
||||||
% Axes
|
% Axes
|
||||||
\draw [thick, ->] (5,2) -- (5,8);
|
\draw [thick, ->] (5,2) -- (5,8);
|
||||||
\draw [thick, ->] (5,2) -- (2,1);
|
\draw [thick, ->] (5,2) -- (2,1);
|
||||||
@ -41,178 +41,128 @@ $p_v$ follow as a function of $p_h$?
|
|||||||
}
|
}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
The aim is to compute $\langle |p_v| \rangle (p_h) dp_h$.
|
Since the aim is to compute $\langle |p_v| \rangle (p_h)$, the conditional
|
||||||
|
distribution probability of $p_v$ given a fixed value of $p_h = x$ must first
|
||||||
|
be determined. It can be computed as the ratio between the probablity of
|
||||||
|
getting a fixed value of $P_v$ given $x$ over the total probability of $x$:
|
||||||
|
|
||||||
Consider all the points with $p_h \in [p_h ; p_h - dp_h]$: the values of
|
$$
|
||||||
$p_v$ that these points can assume depend on $\theta$ and the total momentum
|
f (P_v | P_h = x) = \frac{f_{P_h , P_v} (x, P_v)}
|
||||||
length $p$.
|
{\int_{\{ P_v \}} d P_v f_{P_h , P_v} (x, P_v)}
|
||||||
|
= \frac{f_{P_h , P_v} (x, P_v)}{I}
|
||||||
|
$$
|
||||||
|
|
||||||
|
where $f_{P_h , P_v}$ is the joint pdf of the two variables $P_v$ and $P_h$ and
|
||||||
|
the integral runs over all the possible values of $P_v$ given $P_h$.
|
||||||
|
|
||||||
|
This joint pdf can simly be computed from the joint pdf of $\theta$ and $p$ with
|
||||||
|
a change of variables. For the pdf of $\theta$ $f_{\theta} (\theta)$, the same
|
||||||
|
considerations done in @sec:3 lead to:
|
||||||
|
|
||||||
|
$$
|
||||||
|
f_{\theta} (\theta) = \frac{1}{2} \sin{\theta} \chi_{[0, \pi]} (\theta)
|
||||||
|
$$
|
||||||
|
|
||||||
|
whereas, being $p$ evenly distributed:
|
||||||
|
|
||||||
|
$$
|
||||||
|
f_p (p) = \chi_{[0, p_{\text{max}}]} (p)
|
||||||
|
$$
|
||||||
|
|
||||||
|
where $\chi_{[a, b]} (y)$ is the normalized characteristic function which value
|
||||||
|
is $1/N$ between $a$ and $b$, where $N$ is the normalization term, and 0
|
||||||
|
elsewhere. Being a couple of independent variables, their joint pdf is simply
|
||||||
|
given by the product of their pdfs:
|
||||||
|
|
||||||
|
$$
|
||||||
|
f_{\theta , p} (\theta, p) = f_{\theta} (\theta) f_p (p)
|
||||||
|
= \frac{1}{2} \sin{\theta} \chi_{[0, \pi]} (\theta)
|
||||||
|
\chi_{[0, p_{\text{max}}]} (p)
|
||||||
|
$$
|
||||||
|
|
||||||
|
Given the new variables:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
\begin{cases}
|
\begin{cases}
|
||||||
p_h = p \sin{\theta} \\ p_v = p \cos{\theta}
|
P_v = P \cos(\theta) \\
|
||||||
|
P_h = P \sin(\theta)
|
||||||
\end{cases}
|
\end{cases}
|
||||||
\thus |p_v| = p |\cos{\theta}| = p_h \frac{|\cos{\theta}|}{\sin{\theta}}
|
|
||||||
= |p_v| (\theta)
|
|
||||||
$$
|
$$
|
||||||
|
|
||||||
It looks like the dependence on $p$ has disappeared, but obviously it has
|
with $\theta \in [0, \pi]$, the previous ones are written as:
|
||||||
not. In fact, it lies beneath the limits that one has to put on the possible
|
|
||||||
values of $\theta$. For the sake of clarity, take a look at @fig:sphere (the
|
|
||||||
system is rotation-invariant, hence it can be drown at a fixed azimuthal angle).
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\hypertarget{fig:sphere}{%
|
|
||||||
\centering
|
|
||||||
\begin{tikzpicture}
|
|
||||||
% p_h slice
|
|
||||||
\definecolor{cyclamen}{RGB}{146, 24, 43}
|
|
||||||
\filldraw [cyclamen!15!white] (1.5,-3.15) -- (1.5,3.15) -- (1.75,3.05)
|
|
||||||
-- (2,2.85) -- (2,-2.85) -- (1.75,-3.05)
|
|
||||||
-- (1.5,-3.15);
|
|
||||||
\draw [cyclamen] (1.5,-3.15) -- (1.5,3.15);
|
|
||||||
\draw [cyclamen] (2,-2.9) -- (2,2.9);
|
|
||||||
\node [cyclamen, left] at (1.5,-0.3) {$p_h$};
|
|
||||||
\node [cyclamen, right] at (2,-0.3) {$p_h + dp_h$};
|
|
||||||
% Axes
|
|
||||||
\draw [thick, ->] (0,-4) -- (0,4);
|
|
||||||
\draw [thick, ->] (0,0) -- (4,0);
|
|
||||||
\node at (0.3,3.8) {$z$};
|
|
||||||
\node at (4,0.3) {$hd$};
|
|
||||||
% p_max semicircle
|
|
||||||
\draw [thick, cyclamen] (0,-3.5) to [out=0, in=-90] (3.5,0);
|
|
||||||
\draw [thick, cyclamen] (0,3.5) to [out=0, in=90] (3.5,0);
|
|
||||||
\node [cyclamen, left] at (-0.2,3.5) {$p_{\text{max}}$};
|
|
||||||
\node [cyclamen, left] at (-0.2,-3.5) {$-p_{\text{max}}$};
|
|
||||||
% Angles
|
|
||||||
\draw [thick, cyclamen, ->] (0,1.5) to [out=0, in=140] (0.55,1.2);
|
|
||||||
\node [cyclamen] at (0.4,2) {$\theta$};
|
|
||||||
\draw [thick, cyclamen] (0,0) -- (1.5,3.15);
|
|
||||||
\node [cyclamen, above right] at (1.5,3.15) {$\theta_x$};
|
|
||||||
\draw [thick, cyclamen] (0,0) -- (1.5,-3.15);
|
|
||||||
\node [cyclamen, below right] at (1.5,-3.15) {$\theta_y$};
|
|
||||||
% Vectors
|
|
||||||
\draw [ultra thick, cyclamen, ->] (0,0) -- (1.7,2.2);
|
|
||||||
\draw [ultra thick, cyclamen, ->] (0,0) -- (1.9,0.6);
|
|
||||||
\draw [ultra thick, cyclamen, ->] (0,0) -- (1.6,-2);
|
|
||||||
\end{tikzpicture}
|
|
||||||
\caption{Momentum space at fixed azimuthal angle ("$hd$" stands for
|
|
||||||
"horizontal direction"). Some vectors with $p_h \in [p_h, p_h +dp_h]$
|
|
||||||
are evidenced.}\label{fig:sphere}
|
|
||||||
}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
As can be seen, $\theta_x$ and $\theta_y$ are the minimum and maximum tilts
|
|
||||||
angles of these vectors respectively, because if a point had $p_h \in [p_h; p_h
|
|
||||||
+ dp_h]$ and $\theta < \theta_x$ or $\theta > \theta_y$, it would have $p >
|
|
||||||
p_{\text{max}}$. Therefore their values are easily computed as follow:
|
|
||||||
|
|
||||||
$$
|
$$
|
||||||
p_h = p_{\text{max}} \sin{\theta_x} = p_{\text{max}} \sin{\theta_y}
|
\begin{cases}
|
||||||
\thus \sin{\theta_x} = \sin{\theta_y} = \frac{p_h}{p_{\text{max}}}
|
P = \sqrt{P_v^2 + P_h^2} \\
|
||||||
|
\theta = \text{atan}^{\star} ( P_h/P_v ) :=
|
||||||
|
\begin{cases}
|
||||||
|
\text{atan} ( P_h/P_v ) &\incase P_v > 0 \\
|
||||||
|
\text{atan} ( P_h/P_v ) + \pi &\incase P_v < 0
|
||||||
|
\end{cases}
|
||||||
|
\end{cases}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
Since the average value of a quantity is computed by integrating it over all the
|
which can be shown having Jacobian:
|
||||||
possible quantities it depends on weighted on their probability, one gets:
|
|
||||||
|
|
||||||
$$
|
$$
|
||||||
\langle |p_v| \rangle (p_h) dp_h = \int_{\theta_x}^{\theta_y}
|
J = \frac{1}{\sqrt{P_v^2 + P_h^2}}
|
||||||
d\theta P(\theta) \cdot P(p) \, dp \cdot |p_v| (\theta)
|
|
||||||
$$
|
$$
|
||||||
|
|
||||||
where $d\theta P(\theta)$ is the probability of generating a point with $\theta
|
Hence:
|
||||||
\in [\theta; \theta + d\theta]$ and $P(p) \, dp$ is the probability of
|
|
||||||
generating a point with $\vec{p}$ in the pink region in @fig:sphere, given a
|
|
||||||
fixed $\theta$.
|
|
||||||
The easiest to deduce is $P(p) \, dp$: since $p$ is evenly distributed, it
|
|
||||||
follows that:
|
|
||||||
|
|
||||||
$$
|
$$
|
||||||
P(p) \, dp = \frac{1}{p_{\text{max}}} dp
|
f_{P_h , P_v} (P_h, P_v) =
|
||||||
|
\frac{1}{2} \sin[ \text{atan}^{\star} ( P_h/P_v )]
|
||||||
|
\chi_{[0, \pi]} (\text{atan}^{\star} ( P_h/P_v )) \cdot \\
|
||||||
|
\frac{\chi_{[0, p_{\text{max}}]} \left( \sqrt{P_v^2 + P_h^2} \right)}
|
||||||
|
{\sqrt{P_v^2 + P_h^2}}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
with:
|
from which, the integral $I$ can now be computed. The edges of the integral
|
||||||
|
are fixed bt the fact that the total momentum can not exceed $P_{\text{max}}$:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
dp = p(p_h + dp_h) - p(p_h)
|
I = \int
|
||||||
= \frac{p_h + dp_h}{\sin{\theta}} - \frac{p_h}{\sin{\theta}}
|
\limits_{- \sqrt{P_{\text{max}}^2 - P_h}}^{\sqrt{P_{\text{max}}^2 - P_h}}
|
||||||
= \frac{dp_h}{\sin{\theta}}
|
dP_v \, f_{P_h , P_v} (x, P_v)
|
||||||
$$
|
$$
|
||||||
|
|
||||||
hence
|
after a bit of maths, using the identity:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
P(p) \, dp = \frac{1}{p_{\text{max}}} \cdot \frac{1}{\sin{\theta}} \, dp_h
|
\sin[ \text{atan}^{\star} ( P_h/P_v )] = \frac{P_h}{\sqrt{P_h^2 + P_v^2}}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
For $d\theta P(\theta)$, instead, one has to do the same considerations done
|
and the fact that both the characteristic functions are automatically satisfied
|
||||||
in @sec:3, from which:
|
within the integral limits, the following result arises:
|
||||||
|
|
||||||
$$
|
$$
|
||||||
P(\theta) d\theta = \frac{1}{2} \sin{\theta} d\theta
|
I = 2 \, \text{atan} \left( \sqrt{\frac{P_{\text{max}}^2}{x^2} - 1} \right)
|
||||||
$$
|
$$
|
||||||
|
|
||||||
Ultimately, having found all the pieces, the integral must be computed:
|
from which:
|
||||||
|
|
||||||
\begin{align*}
|
$$
|
||||||
\langle |p_v| \rangle (p_h) dp_h &= \int_{\theta_x}^{\theta_y}
|
f (P_v | P_h = x) = \frac{x}{P_v^2 + x^2} \cdot
|
||||||
d\theta \frac{1}{2} \sin{\theta} \cdot
|
\frac{1}{2 \, \text{atan}
|
||||||
\frac{1}{p_{\text{max}}} \frac{1}{\sin{\theta}} \, dp_h \cdot
|
\left( \sqrt{\frac{P_{\text{max}}^2}{x^2} - 1} \right)}
|
||||||
p_h \frac{|\cos{\theta}|}{\sin{\theta}}
|
$$
|
||||||
\\
|
|
||||||
&= \frac{1}{2} \frac{p_h dp_h}{p_{\text{max}}} \int_{\theta_x}^{\theta_y}
|
|
||||||
d\theta \frac{|\cos{\theta}|}{\sin{\theta}}
|
|
||||||
\\
|
|
||||||
&= \frac{1}{2} \frac{p_h dp_h}{p_{\text{max}}} \cdot \mathscr{O}
|
|
||||||
\end{align*}
|
|
||||||
|
|
||||||
Then, with a bit of math:
|
Finally, putting all the pieces together, the average value of $|P_v|$ can now
|
||||||
|
be computed:
|
||||||
|
|
||||||
\begin{align*}
|
$$
|
||||||
\mathscr{O} &= \int_{\theta_x}^{\theta_y} d\theta
|
\langle |P_v| \rangle = \int
|
||||||
\frac{|\cos{\theta}|}{\sin{\theta}}
|
\limits_{- \sqrt{P_{\text{max}}^2 - P_h}}^{\sqrt{P_{\text{max}}^2 - P_h}}
|
||||||
\\
|
f (P_v | P_h = x) = [ \dots ] =
|
||||||
&= \int_{\theta_x}^{\frac{\pi}{2}} d\theta \frac{\cos{\theta}}{\sin{\theta}}
|
x \, \frac{\ln \left( \frac{P_{\text{max}}}{x} \right)}
|
||||||
- \int_{\frac{\pi}{2}}^{\theta_y} d\theta \frac{\cos{\theta}}{\sin{\theta}}
|
{\text{atan} \left( \sqrt{ \frac{P_{\text{max}}}{x^2} - 1} \right)}
|
||||||
\\
|
$$
|
||||||
&= \left[ \ln{(\sin{\theta})} \right]_{\theta_x}^{\frac{\pi}{2}}
|
|
||||||
- \left[ \ln{(\sin{\theta})} \right]_{\frac{\pi}{2}}^{\theta_y}
|
|
||||||
\\
|
|
||||||
&= \ln{(1)} -\ln{ \left( \frac{p_h}{p_{\text{max}}} \right) }
|
|
||||||
- \ln{ \left( \frac{p_h}{p_{\text{max}}} \right) } + \ln{(1)}
|
|
||||||
\\
|
|
||||||
&= 2 \ln{ \left( \frac{p_{\text{max}}}{p_h} \right) }
|
|
||||||
\end{align*}
|
|
||||||
|
|
||||||
\newpage
|
|
||||||
Hence, in conclusion:
|
|
||||||
|
|
||||||
\begin{align*}
|
|
||||||
\langle |p_v| \rangle (p_h) dp_h &= \frac{1}{2} \frac{p_h dp_h}{p_{\text{max}}}
|
|
||||||
\cdot 2 \ln{ \left( \frac{p_{\text{max}}}{p_h} \right) }
|
|
||||||
\\
|
|
||||||
&= \ln{ \left( \frac{p_{\text{max}}}{p_h} \right) }
|
|
||||||
\frac{p_h}{p_{\text{max}}} dp_h
|
|
||||||
\end{align*}
|
|
||||||
|
|
||||||
Namely:
|
Namely:
|
||||||
|
|
||||||
\begin{figure}
|
![Plot of the expected distribution with
|
||||||
\hypertarget{fig:plot}{%
|
$P_{\text{max}} = 10$.](images/expected.pdf){#fig:plot}
|
||||||
\centering
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\definecolor{cyclamen}{RGB}{146, 24, 43}
|
|
||||||
% Axis
|
|
||||||
\draw [thick, <->] (0,5) -- (0,0) -- (11,0);
|
|
||||||
\node [below right] at (11,0) {$p_h$};
|
|
||||||
\node [above left] at (0,5) {$\langle |p_v| \rangle$};
|
|
||||||
% Plot
|
|
||||||
\draw [domain=0.001:10, smooth, variable=\x,
|
|
||||||
cyclamen, ultra thick] plot ({\x},{12*ln(10/\x)*\x/10});
|
|
||||||
\node [cyclamen, below] at (10,0) {$p_{\text{max}}$};
|
|
||||||
\end{tikzpicture}
|
|
||||||
\caption{Plot of the expected distribution.}\label{fig:plot}
|
|
||||||
}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
|
|
||||||
## Monte Carlo simulation
|
## Monte Carlo simulation
|
||||||
|
Loading…
Reference in New Issue
Block a user