//_________________________________________________________________________
Double_t AliTRDtrackerV1::FitRiemanTilt(const AliTRDtrackV1 *track, AliTRDseedV1 *tracklets, Bool_t sigError, Int_t np, AliTrackPoint *points)
{
- //
- // Performs a Riemann fit taking tilting pad correction into account
- // The equation of a Riemann circle, where the y position is substituted by the
- // measured y-position taking pad tilting into account, has to be transformed
- // into a 4-dimensional hyperplane equation
- // Riemann circle: (x-x0)^2 + (y-y0)^2 -R^2 = 0
- // Measured y-Position: ymeas = y - tan(phiT)(zc - zt)
- // zc: center of the pad row
- // zt: z-position of the track
- // The z-position of the track is assumed to be linear dependent on the x-position
- // Transformed equation: a + b * u + c * t + d * v + e * w - 2 * (ymeas + tan(phiT) * zc) * t = 0
- // Transformation: u = 2 * x * t
- // v = 2 * tan(phiT) * t
- // w = 2 * tan(phiT) * (x - xref) * t
- // t = 1 / (x^2 + ymeas^2)
- // Parameters: a = -1/y0
- // b = x0/y0
- // c = (R^2 -x0^2 - y0^2)/y0
- // d = offset
- // e = dz/dx
- // If the offset respectively the slope in z-position is impossible, the parameters are fixed using
- // results from the simple riemann fit. Afterwards the fit is redone.
- // The curvature is calculated according to the formula:
- // curv = a/(1 + b^2 + c*a) = 1/R
- //
- // Paramters: - Array of tracklets (connected to the track candidate)
- // - Flag selecting the error definition
- // Output: - Chi2 values of the track (in Parameter list)
- //
+//
+// Performs a Riemann fit taking tilting pad correction into account
+//
+// Paramters: - Array of tracklets (connected to the track candidate)
+// - Flag selecting the error definition
+// Output: - Chi2 values of the track (in Parameter list)
+//
+// The equations which has to be solved simultaneously are:
+// BEGIN_LATEX
+// R^{2} = (x-x_{0})^{2} + (y^{*}-y_{0})^{2}
+// y^{*} = y - tg(h)(z - z_{t})
+// z_{t} = z_{0}+dzdx*(x-x_{r})
+// END_LATEX
+// with (x, y, z) the coordinate of the cluster, (x_0, y_0, z_0) the coordinate of the center of the Riemann circle,
+// R its radius, x_r a constant refrence radial position in the middle of the TRD stack and dzdx the slope of the
+// track in the x-z plane. Using the following transformations
+// BEGIN_LATEX
+// t = 1 / (x^{2} + y^{2})
+// u = 2 * x * t
+// v = 2 * tan(h) * t
+// w = 2 * tan(h) * (x - x_{r}) * t
+// END_LATEX
+// One gets the following linear equation
+// BEGIN_LATEX
+// a + b * u + c * t + d * v + e * w = 2 * (y + tg(h) * z) * t
+// END_LATEX
+// where the coefficients have the following meaning
+// BEGIN_LATEX
+// a = -1/y_{0}
+// b = x_{0}/y_{0}
+// c = (R^{2} -x_{0}^{2} - y_{0}^{2})/y_{0}
+// d = z_{0}
+// e = dz/dx
+// END_LATEX
+// The error calculation for the free term is thus
+// BEGIN_LATEX
+// #sigma = 2 * #sqrt{#sigma^{2}_{y} + (tilt corr ...) + tg^{2}(h) * #sigma^{2}_{z}} * t
+// END_LATEX
+//
+// From this simple model one can compute chi^2 estimates and a rough approximation of pt from the curvature according
+// to the formula:
+// BEGIN_LATEX
+// C = 1/R = a/(1 + b^{2} + c*a)
+// END_LATEX
+//
+// Authors
+// M.Ivanov <M.Ivanov@gsi.de>
+// A.Bercuci <A.Bercuci@gsi.de>
+// M.Fasel <M.Fasel@gsi.de>
+
TLinearFitter *fitter = GetTiltedRiemanFitter();
fitter->StoreData(kTRUE);
fitter->ClearPoints();
to collect useful informations on the design and usage of the TRD
software, in order to facilitate newcomers the introduction to the
code. The most important classes and procedures are described and
-several examples und use cases are given.
+several examples and use cases are given.
However, this writeup is not meant to be a basic AliRoot introduction.
For this purpose the reader is referred to the general AliRoot users
guide \cite{ALIROOT}.
and bottom of a supermodule together with the traversing support structures.
The left panel of Fig.~\ref{FIG_GEO:sm_geom} shows the structures that are
implemented in the TRD geometry. Also, parts of the services like the LV
-power bus bars and cooling arterias can be seen. Additional electronics
+power bus bars and cooling arteries can be seen. Additional electronics
equipment (e.g. ``Sch\"utten-Box``) is represented by aluminum boxes that
contain corresponding copper layers to mimic the present material. The
services also include e.g. gas distribution boxes, cooling pipes, power and
readout cables, and power connection panels. Part of the services extend
into the baby and the back frame. Therefore, additional mother volumes
-have been introduced in order to accomodate this material. All supermodules
+have been introduced in order to accommodate this material. All supermodules
have inserts of carbon fiber sheets in the bottom part of the aluminum
casing, for the ones in front of the PHOS detector (sectors 11--15) also
the top part includes carbon fiber inserts. The supermodules in the sectors
shows the resulting radiation length map in the active detector area for
super module 0, which has only carbon fiber inserts at the bottom and is
thus one of the super modules with the largest material budget. It is
-clearly visible that the MCMs and the cooling pipes introduce hots spots
+clearly visible that the MCMs and the cooling pipes introduce hot spots
in $X/X_{0}$. However, after averaging over the shown area, the mean
value is found to be $\langle X/X_{0}\rangle =$~24.7~\%. For a supermodule
with carbon fiber inserts at the top and the bottom one finds
%
\subsection{Photons from transition radiation}
%
-Additionally to the hits from energy loss, also hits from the absorbtion of
+Additionally to the hits from energy loss, also hits from the absorption of
TR photons are generated. This is done in {\tt AliTRDv1::CreateTRhit()}, which
in turn is called by the chosen step manager for electrons and positrons
entering the entering the drift volume. The process consists of two steps:
first the number and energies of the TR photons have to be determined and then
-their absorbtion position inside the gas volume has to be calculated. The
+their absorption position inside the gas volume has to be calculated. The
corresponding procedures, used by {\tt AliTRDv1::CreateTRhit()}, are
implemented in {\tt AliTRDsimTR()}. This class contains a parametrization
of TR photons generated by a regular foil stack radiator \cite{TRPHOT}. This
on the particle stack, it is assumed that it follows a straight trajectory
whose direction is determined by the momentum vector of the generating electron.
Since the emission angle for TR photons is very small ($\sim 1/\gamma$) this
-is a valid approximation. The absorbtion length, which thus determines the
-TR hit position, is randomly chosen according to the absorbtion cross sections
+is a valid approximation. The absorption length, which thus determines the
+TR hit position, is randomly chosen according to the absorption cross sections
in the gas mixture. These energy dependent cross sections are also included
in {\tt AliTRDsimTR}.
%
\end{tabular}
\end{center}
%
-However, in practise {\tt AliTRDdigits} is not used to store the digits
+However, in practice {\tt AliTRDdigits} is not used to store the digits
information. Instead the data containers described in \ref{DIGITS:containers}
are used for this purpose. The digitization process includes as an
intermediate step between hit and digits the so-called summable digits, or
path from the position of the primary ionization towards the anode wire.
The position of this electron can be modified by diffusion in the gas
({\tt AliTRDdigitizer::Diffusion()}), ExB effect ({\tt AliTRDdigitizer::ExB()}),
-and absorbtion ({\tt AliTRDdigitizer::Absorbtion()}, off per default).
+and absorption ({\tt AliTRDdigitizer::Absorbtion()}, off per default).
The drift time of the electrons is also modified according to their distance
to the corresponding anode wire position ({\tt AliTRDdigitizer::TimeStruct()}),
since the electric field lines are not uniform inside the amplification region.
accordingly. Once the position and the drift time of the electron at the
anode wire plane are know, the signal induced on the pads can be calculated.
This involves three effects: the pad response, which distributes the charge
-on several pads ({\tt AliTRDdigitizer::PadResponse()}), the time reponse due
+on several pads ({\tt AliTRDdigitizer::PadResponse()}), the time response due
to the slow ion drift and the PASA response function, which distributes the
charge onto the following time bins, ({\tt AliTRDdigitizer::TimeResponse()}),
-and the cross talk between neighbouring pads ({\tt AliTRDdigitizer::CrossTalk()}).
+and the cross talk between neighboring pads ({\tt AliTRDdigitizer::CrossTalk()}).
At the end of this procedure, the charge seen by each pad in each time bin
is available. Also, the indices of maximally three MC particles in the kine
tree contributing to a given pad signal are stored, so that in a later
analysis it can be tested which particle generated what signal.
As a next step the signals could either directly be converted into {\bf DIGITS},
or, which is the default procedure, they are stored as {\bf SDIGITIS}.
-The correponding functions ({\tt AliTRDdigitizer::Signal2SDigits()} and
+The corresponding functions ({\tt AliTRDdigitizer::Signal2SDigits()} and
{\tt AliTRDdigitizer::Signal2ADC()}) are called from
-{\tt AliTRDdigitizer::ConvertSignals()}, depending on the configuation.
+{\tt AliTRDdigitizer::ConvertSignals()}, depending on the configuration.
The function {\tt AliTRDdigitizer::Signal2SDigits()} stores the signals as
{\bf SDIGITS} in data structures of the type {\tt AliTRDarraySignal} (see
section \ref{DIGITS:containers}).
gain factors derived from the calibration procedures for a given dataset will
be used to distort the simulated data correspondingly. The noise is generated
according to a Gaussian distribution of a given width and added to the output.
-Finally, the converted signals are discretized into the ADC values of the
+Finally, the converted signals are discretize into the ADC values of the
defined resolution. At this stage also the zero suppression mechanism is applied
to the simulated ADC values ({\tt AliTRDdigitizer::ZS()}), in order to reduce
the output volume (see section \ref{DIGITS:zs}). These {\bf DIGITS} can then
\subsection{MCM simulation}
The MCM simulation is contained in {\tt AliTRDmcmSim}. This class
-mimicks the digital part of an MCM. It can be used for the simulation
+mimics the digital part of an MCM. It can be used for the simulation
after digitization has been performed.
Internally, an object of {\tt AliTRDmcmSim} can hold the data of
\begin{equation}
t_{drift} = t_{bin} - t_{0} - t_{cause}(x) - t_{TC}(q_{i-1}, q_{i-2}, ...)
\end{equation}
-where $t_0$ is the delay of the trigger signal. $t_{cause}$ is the causality delay between ionisation electrons hitting
+where $t_0$ is the delay of the trigger signal. $t_{cause}$ is the causality delay between ionization electrons hitting
the anode and the registration of mean signal by the electronics - due to the rising time of the TRF
A second order correction here comes from the fact that the time spreading of charge at anode is the convolution of
TRF with the diffusion and thus cross-talk between clusters before and after local clusters changes with drift length.
The parameters on which the {\bf $r-\phi$ error parameterization} depends are:\\
- $s^2$ - variance due to PRF width for the case of Gauss model. Replaced by parameterization in case of LUT.\\
- - dt - transversal diffusion coeficient\\
+ - dt - transversal diffusion coefficient\\
- exb - tg of lorentz angle\\
- x - drift length - with respect to the anode wire\\
- z - offset from the anode wire\\
Cluster error parameterization for different components.}
\label{FIG_CLUSTER:errorCharge}
\end{figure}
-The function has to extended to accomodate gain calibration scalling and errors.
+The function has to extended to accommodate gain calibration scaling and errors.
%
\setcounter{footnote}{0}
3. purge clusters\\
4. truncated mean on z direction\\
5. purge clusters\\
-Optionally one can use the z, dz/dx information from the sseding track to correct for tilting.
+Optionally one can use the z, dz/dx information from the seeding track to correct for tilting.
We start up by defining the track direction in the xy plane and roads. The roads are calculated based
on tracking information (variance in the $r-\phi$ direction) and estimated variance of the standard
0 &Var(z)
\end{array} \right)
\end{eqnarray}
-using simple trigonometrics one can write for this last case
+using simple trigonometric one can write for this last case
\begin{equation}
C_{Y}=\frac{1}{1+tg^{2}\alpha}
\left( \begin{array}{cc}
tg(\alpha)(\sigma_{z}^{2}-\sigma_{y}^{2}) & \sigma_{z}^{2}+tg^{2}(\alpha)\sigma_{y}^{2}
\end{array} \right)
\end{equation}
-which can be aproximated for small alphas (2 deg) with
+which can be approximated for small alphas (2 deg) with
\begin{equation}
C_{Y}=
\left( \begin{array}{cc}
\frac{dq}{dl}(x) = \frac{q_{c}}{dx(x) * \sqrt{1 + (\frac{dy}{dx})^{2}_{fit} + (\frac{dz}{dx})^{2}_{ref}}}
\end{equation}
where $q_c$ is the total charge collected in the current time bin and dx is the length
-of the time bin (see Figure \ref{FIG_TRACKLET:dEdx} left). The representation of charge deposit used for PID differs thus in principle from the measured dQ/dt distribution (see Figure \ref{FIG_TRACKLET:dEdx} right)
+of the time bin (see Figure \ref{FIG_TRACKLET:dEdx} right). The representation of charge deposit used for PID differs thus in principle from the measured dQ/dt distribution (see Figure \ref{FIG_TRACKLET:dEdx} left)
\begin{figure}[htb]
\begin{center}
-% \includegraphics[width=0.48\textwidth]{plots/trackletDQDL.eps}
-% \includegraphics[width=0.48\textwidth]{plots/trackletDQDT.eps}
+\includegraphics[width=0.88\textwidth]{plots/trackletDQDT.eps}
\end{center}
\caption{
-Enargy loss measurement on the tracklet as a function of drft length [left] and as a function of drift time [right] for different particle species.}
+Energy loss measurement on the tracklet as a function of drift time [left] and respectively drift length [right] for different particle species.}
\label{FIG_TRACKLET:dEdx}
\end{figure}
The following correction are applied :
- charge : pad row cross corrections
- [diffusion and TRF assymetry] TODO
+ [diffusion and TRF asymmetry] TODO
- dx : anisochronity.
Due to anisochronity of the TRD detector drift velocity varies as function of drift length and distance to the anode wire. Thus
\begin{eqnarray}
xBins, -0.5, xBins - 0.5,
AliTRDtrackerV1::GetNTimeBins(), 0., .5*AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght());
} else h->Reset();
- fPH->AddAt(h, 0);
+ fPH->AddAt(h, 1);
// histos of the number of clusters distribution for all 5 particle species and 11 momenta
if(!(h = (TH2F*)gROOT->FindObject("NClus"))){
if(!IsInRange(momentum)) return 0x0;;
AliTRDseedV1 *tracklet = 0x0;
- AliTRDcluster *TRDcluster = 0x0;
+ AliTRDcluster *cluster = 0x0;
Int_t species = AliTRDpidUtil::Pdg2Pid(pdg);
Int_t iBin = FindBin(species, momentum);
for(Int_t iChamb = 0; iChamb < AliTRDgeometry::kNlayer; iChamb++){
tracklet = fTrack->GetTracklet(iChamb);
if(!tracklet) continue;
Float_t x0 = tracklet->GetX0();
- for(Int_t iClus = 0; iClus < AliTRDtrackerV1::GetNTimeBins(); iClus++){
- if(!(TRDcluster = tracklet->GetClusters(iClus))) continue;
- hPHT -> Fill(iBin, TRDcluster->GetLocalTimeBin(), TMath::Abs(TRDcluster->GetQ()));
- hPHX -> Fill(iBin, x0 - TRDcluster->GetX(), tracklet->GetdQdl(iClus));
+ for(Int_t ic = 0; ic < AliTRDtrackerV1::GetNTimeBins(); ic++){
+ if(!(cluster = tracklet->GetClusters(ic))) continue;
+ hPHT -> Fill(iBin, cluster->GetLocalTimeBin(), TMath::Abs(cluster->GetQ()));
+ hPHX -> Fill(iBin, x0 - cluster->GetX(), tracklet->GetdQdl(ic));
}
}
return hPHT;
// save 2.0 GeV projection as reference
TLegend *legPH = new TLegend(.4, .7, .68, .98);
- legPH->SetBorderSize(1);
+ legPH->SetBorderSize(1);legPH->SetFillColor(0);
legPH->SetHeader("Particle Species");
if(!(arr = (TObjArray*)(fContainer->At(kPH)))) break;
if(!(h2 = (TProfile2D*)(arr->At(0)))) break;
h1->GetYaxis()->SetTitle("<dQ/dl> [a.u./cm]");
}
h = (TH1F*)h1->DrawClone(FIRST ? "c" : "samec");
- legPH->AddEntry(h, Form("%s", AliTRDCalPID::GetPartName(is)), "pl");
FIRST = kFALSE;
}