]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
- new plot in the PID checker (dQdt=f(t))
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Jun 2009 15:09:15 +0000 (15:09 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 10 Jun 2009 15:09:15 +0000 (15:09 +0000)
- documentation

TRD/AliTRDseedV1.cxx
TRD/AliTRDtrackerV1.cxx
TRD/doc/trd_software_writeup.tex
TRD/qaRec/AliTRDcheckPID.cxx

index 6437a5cac1fb3dcb699bbce69094fe7edb08c291..4aa4d9b34d314c7b482f0a0cd409d2e66a3a614b 100644 (file)
@@ -466,6 +466,11 @@ Float_t AliTRDseedV1::GetdQdl(Int_t ic, Float_t *dl) const
 //   - dx     : anisochronity, track inclination - see Fit and AliTRDcluster::GetXloc() 
 //              and AliTRDcluster::GetYloc() for the effects taken into account
 // 
+//Begin_Html
+//<img src="TRD/trackletDQDT.gif">
+//End_Html
+// In the picture the energy loss measured on the tracklet as a function of drift time [left] and respectively 
+// drift length [right] for different particle species is displayed.
 // Author : Alex Bercuci <A.Bercuci@gsi.de>
 //
   Float_t dq = 0.;
index 9b5b991db3dd9e711bc6adb19b3d49d47e947941..47180b5bcdd5936c7627f312184bfe84ba4cc49f 100644 (file)
@@ -1302,35 +1302,56 @@ Double_t AliTRDtrackerV1::FitLine(const AliTRDtrackV1 *track, AliTRDseedV1 *trac
 //_________________________________________________________________________
 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();
index c37fefa498ea42ed796c988305244cd4ca2b4a2a..b5ecd1665a17336a6498075098e2325cd93f62a2 100644 (file)
@@ -102,7 +102,7 @@ software components that are specific to the TRD.  It is an attempt
 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}. 
@@ -198,13 +198,13 @@ The supermodule frames consist of the aluminum sheets on the sides, top,
 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 
@@ -290,7 +290,7 @@ glue that has been applied to fix the gas leaks.  Figure~\ref{FIG_GEO:mat_budget
 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
@@ -428,12 +428,12 @@ by \\{\tt AliTRDSimParam::SetArgon()}.
 %
 \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
@@ -444,8 +444,8 @@ adjusted in several momentum bins.  After a TR photon has been generated and put
 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}.
 %
@@ -479,7 +479,7 @@ that can be stored in digits objects ({\tt AliTRDdigits}):
 \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 
@@ -525,7 +525,7 @@ procedure each electron of a given hit is in principle followed along its
 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.
@@ -535,19 +535,19 @@ simulation are used in the digitizing process to adjust the drift times
 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}).  
@@ -590,7 +590,7 @@ signal is sampled in the digitization process. At this point also the relative
 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 
@@ -755,7 +755,7 @@ sections.
 
 \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
@@ -918,7 +918,7 @@ estimation. The drift time can be estimated according to the expression:
 \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. 
@@ -1051,7 +1051,7 @@ The error of TRD cluster is represented by the variance in the $r-\phi$ and radi
 
 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\\
@@ -1164,7 +1164,7 @@ The results for $s_y$ and $f(q)$ are displayed in Figure \ref{FIG_CLUSTER:errorC
 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}
@@ -1202,7 +1202,7 @@ Projective algorithm to attach clusters to seeding tracks. The following steps a
 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 
@@ -1329,7 +1329,7 @@ C_{X}&=&
     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}
@@ -1337,7 +1337,7 @@ C_{Y}=\frac{1}{1+tg^{2}\alpha}
     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}
@@ -1359,20 +1359,19 @@ the charge per unit length can be written as:
 \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}
index 3541273a4794fbf12d9200b17d40ffe703932426..516e3f43666d3efab0d345c921d211836e121216 100644 (file)
@@ -158,7 +158,7 @@ TObjArray * AliTRDcheckPID::Histos(){
       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"))){
@@ -556,17 +556,17 @@ TH1 *AliTRDcheckPID::PlotPH(const AliTRDtrackV1 *track)
   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;
@@ -842,7 +842,7 @@ Bool_t AliTRDcheckPID::GetRefFigure(Int_t ifig)
 
     // 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;
@@ -882,7 +882,6 @@ Bool_t AliTRDcheckPID::GetRefFigure(Int_t ifig)
         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;
     }