]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDparameter.cxx
Storing angle alpha for the tracks stopped at TRD. The stored value is used for inwar...
[u/mrichter/AliRoot.git] / TRD / AliTRDparameter.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 ///////////////////////////////////////////////////////////////////////////////
19 //                                                                           //
20 //  TRD parameter class                                                      //
21 //                                                                           //
22 ///////////////////////////////////////////////////////////////////////////////
23
24 #include <TRandom.h>
25
26 #include "AliRun.h"
27 #include "AliMagF.h"
28
29 #include "AliTRDparameter.h"
30 #include "AliTRDgeometryFull.h"
31
32 ClassImp(AliTRDparameter)
33
34 //_____________________________________________________________________________
35 AliTRDparameter::AliTRDparameter():TNamed()
36 {
37   //
38   // AliTRDparameter default constructor
39   //
40
41   fGeo                = 0;
42   fPRFsmp             = 0;
43   fTRFsmp             = 0;
44   fCTsmp              = 0;
45   fGasGain            = 0.0;
46   fNoise              = 0.0;
47   fChipGain           = 0.0;
48   fADCoutRange        = 0.0;
49   fADCinRange         = 0.0;
50   fADCthreshold       = 0;
51   fADCbaseline        = 0;        
52   fDiffusionOn        = 0;
53   fDiffusionT         = 0.0;
54   fDiffusionL         = 0.0;
55   fElAttachOn         = 0;
56   fElAttachProp       = 0.0;
57   fExBOn              = 0;
58   fOmegaTau           = 0.0;
59   fPRFOn              = 0;
60   fTRFOn              = 0;
61   fCTOn               = 0;
62   fTCOn               = 0;
63   fDriftVelocity      = 0.0;
64   fPadCoupling        = 0.0;
65   fTimeCoupling       = 0.0;
66   fTimeBinWidth       = 0.0;
67   fField              = 0.0;
68   fTiltingAngle       = 0.0;
69   fPRFbin             = 0;
70   fPRFlo              = 0.0;
71   fPRFhi              = 0.0;
72   fPRFwid             = 0.0;
73   fPRFpad             = 0;
74   fTRFbin             = 0;
75   fTRFlo              = 0.0;
76   fTRFhi              = 0.0;
77   fTRFwid             = 0.0;
78   fTCnexp             = 0;
79
80   fLUTOn              = 0;  
81   fLUT                = 0;
82   fClusMaxThresh      = 0;
83   fClusSigThresh      = 0;
84
85   fTimeStructOn       = 0;
86   fTimeStruct         = 0;
87   fStaggeringOn       = 0;
88   fAnodeWireOffset    = 0.0;
89
90 }
91
92 //_____________________________________________________________________________
93 AliTRDparameter::AliTRDparameter(const Text_t *name, const Text_t *title)
94                 :TNamed(name,title)
95 {
96   //
97   // AliTRDparameter constructor
98   //
99
100   fGeo                = new AliTRDgeometryFull();
101   fPRFsmp             = 0;
102   fTRFsmp             = 0;
103   fCTsmp              = 0;
104   fGasGain            = 0.0;
105   fNoise              = 0.0;
106   fChipGain           = 0.0;
107   fADCoutRange        = 0.0;
108   fADCinRange         = 0.0;
109   fADCthreshold       = 0;
110   fADCbaseline        = 0;        
111   fDiffusionOn        = 0;
112   fDiffusionT         = 0.0;
113   fDiffusionL         = 0.0;
114   fElAttachOn         = 0;
115   fElAttachProp       = 0.0;
116   fExBOn              = 0;
117   fOmegaTau           = 0.0;
118   fPRFOn              = 0;
119   fTRFOn              = 0;
120   fCTOn               = 0;
121   fTCOn               = 0;
122   fDriftVelocity      = 0.0;
123   fPadCoupling        = 0.0;
124   fTimeCoupling       = 0.0;
125   fTimeBinWidth       = 0.0;
126   fField              = 0.0;
127   fTiltingAngle       = 0.0;
128   fPRFbin             = 0;
129   fPRFlo              = 0.0;
130   fPRFhi              = 0.0;
131   fPRFwid             = 0.0;
132   fPRFpad             = 0;
133   fTRFbin             = 0;
134   fTRFlo              = 0.0;
135   fTRFhi              = 0.0;
136   fTRFwid             = 0.0;
137   fTCnexp             = 0;
138
139   fLUTOn              = 0;  
140   fLUT                = 0;
141   fClusMaxThresh      = 0;
142   fClusSigThresh      = 0;
143
144   fTimeStructOn       = 0;
145   fTimeStruct         = 0;
146   fStaggeringOn       = 0;
147   fAnodeWireOffset    = 0.0;
148
149   Init();
150
151 }
152
153
154 //_____________________________________________________________________________
155 AliTRDparameter::AliTRDparameter(const AliTRDparameter &p):TNamed(p)
156 {
157   //
158   // AliTRDparameter copy constructor
159   //
160
161   ((AliTRDparameter &) p).Copy(*this);
162
163 }
164
165 ///_____________________________________________________________________________
166 AliTRDparameter::~AliTRDparameter()
167 {
168   //
169   // AliTRDparameter destructor
170   //
171
172   if (fTRFsmp) {
173     delete [] fTRFsmp;
174     fTRFsmp = 0;
175   }
176
177   if (fPRFsmp) {
178     delete [] fPRFsmp;
179     fPRFsmp = 0;
180   }
181
182   if (fCTsmp) {
183     delete [] fCTsmp;
184     fCTsmp  = 0;
185   }
186
187   if (fLUT) {
188     delete [] fLUT;
189     fLUT    = 0;
190   }
191
192   if (fGeo) {
193     delete fGeo;
194     fGeo    = 0;
195   }
196
197   if (fTimeStruct) {
198     delete [] fTimeStruct;
199     fTimeStruct = 0;
200   }
201
202 }
203
204 //_____________________________________________________________________________
205 AliTRDparameter &AliTRDparameter::operator=(const AliTRDparameter &p)
206 {
207   //
208   // Assignment operator
209   //
210
211   if (this != &p) ((AliTRDparameter &) p).Copy(*this);
212   return *this;
213
214 }
215
216 //_____________________________________________________________________________
217 void AliTRDparameter::Copy(TObject &p)
218 {
219   //
220   // Copy function
221   //
222
223   Int_t iBin;
224
225   ((AliTRDparameter &) p).fGasGain            = fGasGain;
226   ((AliTRDparameter &) p).fNoise              = fNoise;
227   ((AliTRDparameter &) p).fChipGain           = fChipGain;
228   ((AliTRDparameter &) p).fADCoutRange        = fADCoutRange;
229   ((AliTRDparameter &) p).fADCinRange         = fADCinRange;
230   ((AliTRDparameter &) p).fADCthreshold       = fADCthreshold;
231   ((AliTRDparameter &) p).fADCbaseline        = fADCbaseline; 
232   ((AliTRDparameter &) p).fDiffusionOn        = fDiffusionOn; 
233   ((AliTRDparameter &) p).fDiffusionT         = fDiffusionT;
234   ((AliTRDparameter &) p).fDiffusionL         = fDiffusionL;
235   ((AliTRDparameter &) p).fElAttachOn         = fElAttachOn;
236   ((AliTRDparameter &) p).fElAttachProp       = fElAttachProp;
237   ((AliTRDparameter &) p).fExBOn              = fExBOn;
238   ((AliTRDparameter &) p).fOmegaTau           = fOmegaTau;
239   ((AliTRDparameter &) p).fLorentzFactor      = fLorentzFactor;
240   ((AliTRDparameter &) p).fDriftVelocity      = fDriftVelocity;
241   ((AliTRDparameter &) p).fPadCoupling        = fPadCoupling;
242   ((AliTRDparameter &) p).fTimeCoupling       = fTimeCoupling;
243   ((AliTRDparameter &) p).fTimeBinWidth       = fTimeBinWidth;
244   ((AliTRDparameter &) p).fField              = fField;
245   ((AliTRDparameter &) p).fPRFOn              = fPRFOn;
246   ((AliTRDparameter &) p).fTRFOn              = fTRFOn;
247   ((AliTRDparameter &) p).fCTOn               = fCTOn;
248   ((AliTRDparameter &) p).fTCOn               = fTCOn;
249   ((AliTRDparameter &) p).fTiltingAngle       = fTiltingAngle;
250   ((AliTRDparameter &) p).fPRFbin             = fPRFbin;
251   ((AliTRDparameter &) p).fPRFlo              = fPRFlo;
252   ((AliTRDparameter &) p).fPRFhi              = fPRFhi;
253   ((AliTRDparameter &) p).fPRFwid             = fPRFwid;
254   ((AliTRDparameter &) p).fPRFpad             = fPRFpad;
255   if (((AliTRDparameter &) p).fPRFsmp) delete [] ((AliTRDparameter &) p).fPRFsmp;
256   ((AliTRDparameter &) p).fPRFsmp = new Float_t[fPRFbin];
257   for (iBin = 0; iBin < fPRFbin; iBin++) {
258     ((AliTRDparameter &) p).fPRFsmp[iBin] = fPRFsmp[iBin];
259   }                                                                             
260   ((AliTRDparameter &) p).fTRFbin             = fTRFbin;
261   ((AliTRDparameter &) p).fTRFlo              = fTRFlo;
262   ((AliTRDparameter &) p).fTRFhi              = fTRFhi;
263   ((AliTRDparameter &) p).fTRFwid             = fTRFwid;
264   if (((AliTRDparameter &) p).fTRFsmp) delete [] ((AliTRDparameter &) p).fTRFsmp;
265   ((AliTRDparameter &) p).fTRFsmp = new Float_t[fTRFbin];
266   for (iBin = 0; iBin < fTRFbin; iBin++) {
267     ((AliTRDparameter &) p).fTRFsmp[iBin] = fTRFsmp[iBin];
268   }                                      
269   if (((AliTRDparameter &) p).fCTsmp)  delete [] ((AliTRDparameter &) p).fCTsmp;
270   ((AliTRDparameter &) p).fCTsmp  = new Float_t[fTRFbin];
271   for (iBin = 0; iBin < fTRFbin; iBin++) {
272     ((AliTRDparameter &) p).fCTsmp[iBin]  = fCTsmp[iBin];
273   }                                      
274   ((AliTRDparameter &) p).fTCnexp             = fTCnexp;
275
276   ((AliTRDparameter &) p).fLUTOn              = fLUTOn;
277   ((AliTRDparameter &) p).fLUTbin             = fLUTbin;
278   if (((AliTRDparameter &) p).fLUT)    delete [] ((AliTRDparameter &) p).fLUT;
279   ((AliTRDparameter &) p).fLUT  = new Float_t[fLUTbin];
280   for (iBin = 0; iBin < fLUTbin; iBin++) {
281     ((AliTRDparameter &) p).fLUT[iBin]  = fLUT[iBin];
282   }                                      
283   ((AliTRDparameter &) p).fClusMaxThresh      = fClusMaxThresh;
284   ((AliTRDparameter &) p).fClusSigThresh      = fClusSigThresh;
285
286   ((AliTRDparameter &) p).fAnodeWireOffset    = fAnodeWireOffset;
287   ((AliTRDparameter &) p).fStaggeringOn       = fStaggeringOn;
288   ((AliTRDparameter &) p).fTimeStructOn       = fTimeStructOn;
289   if (((AliTRDparameter &) p).fTimeStruct) 
290     delete [] ((AliTRDparameter &) p).fTimeStruct;
291   ((AliTRDparameter &) p).fTimeStruct = new Float_t[38*26];
292   for (Int_t i = 0; i < 38*26; i++) {
293     ((AliTRDparameter &) p).fTimeStruct[i] = fTimeStruct[i];
294   }                                      
295
296 }
297
298 //_____________________________________________________________________________
299 void AliTRDparameter::Init()
300 {
301   //
302   // Initializes the parameter
303   //
304   // The maximum number of pads
305   // and the position of pad 0,0,0
306   //
307   // chambers seen from the top:
308   //     +----------------------------+
309   //     |                            |
310   //     |                            |      ^
311   //     |                            |  rphi|
312   //     |                            |      |
313   //     |0                           |      |
314   //     +----------------------------+      +------>
315   //                                             z
316   // chambers seen from the side:            ^
317   //     +----------------------------+ drift|
318   //     |0                           |      |
319   //     |                            |      |
320   //     +----------------------------+      +------>
321   //                                             z
322   //
323   // IMPORTANT: time bin 0 is now the first one in the drift region
324   // closest to the readout !!!
325   //
326
327   //
328   // ----------------------------------------------------------------------------
329   // The pad definition
330   // ----------------------------------------------------------------------------
331   //
332
333   // The pad size in column direction (rphi-direction)
334   //SetColPadSize(0,0.65);
335   //SetColPadSize(1,0.68);
336   //SetColPadSize(2,0.71);
337   //SetColPadSize(3,0.74);
338   //SetColPadSize(4,0.77);
339   //SetColPadSize(5,0.80);
340
341   SetColPadSize(0,0.664);
342   SetColPadSize(1,0.695);
343   SetColPadSize(2,0.726);
344   SetColPadSize(3,0.756);
345   SetColPadSize(4,0.788);
346   SetColPadSize(5,0.818);
347
348   // The pad row (z-direction)
349   SetNRowPad();
350
351   // The number of time bins. Default is 100 ns timbin size
352   SetNTimeBin(20);
353
354   // Additional time bins before and after the drift region.
355   // Default is to only sample the drift region
356   SetExpandTimeBin(0,0);
357
358   //
359   // ----------------------------------------------------------------------------
360   // The digitization parameter
361   // ----------------------------------------------------------------------------
362   //
363
364   // The default parameter for the digitization
365   fGasGain        = 4000.;
366   fChipGain       = 12.4;
367   fNoise          = 1000.;
368   fADCoutRange    = 1023.;          // 10-bit ADC
369   fADCinRange     = 2000.;          // 2V input range
370   fADCthreshold   = 1;
371   fADCbaseline    = 0;
372
373   // The drift velocity (cm / mus)
374   fDriftVelocity  = 1.5;
375
376   // Diffusion on
377   fDiffusionOn    = 1;
378
379   // E x B effects
380   fExBOn          = 1;
381
382   // Propability for electron attachment
383   fElAttachOn     = 0;
384   fElAttachProp   = 0.0;
385
386   // The pad response function
387   fPRFOn          = 1;
388
389   // The time response function
390   fTRFOn          = 1;
391
392   // The cross talk
393   fCTOn           = 1;
394
395   // The tail cancelation
396   fTCOn           = 1;
397   
398   // The number of exponentials
399   fTCnexp         = 2;
400
401   // The pad coupling factor
402   //fPadCoupling    = 0.3;
403   // Use 0.49 instead which reproduces better the test beam
404   // data, even tough it is not understood why.
405   fPadCoupling    = 0.49;
406
407   // The time coupling factor (same number as for the TPC)
408   fTimeCoupling   = 0.4;
409
410   // Drift time non-isochronity on
411   fTimeStructOn   = 1;
412
413   // Wire planes staggered
414   fStaggeringOn   = 1;
415
416   // Distance of first Anode wire from first pad edge
417   fAnodeWireOffset = 0.25;
418
419   // The tilting angle for the readout pads
420   SetTiltingAngle(2.0);
421
422   // The magnetic field strength in Tesla
423   fField           = 0.4;
424
425   //
426   // ----------------------------------------------------------------------------
427   // The clusterization parameter
428   // ----------------------------------------------------------------------------
429   //
430
431   // The default parameter for the clustering
432   fClusMaxThresh = 3;
433   fClusSigThresh = 1;
434
435   // Use the LUT
436   fLUTOn         = 1;  
437
438   ReInit();
439
440 }
441
442 //_____________________________________________________________________________
443 void AliTRDparameter::ReInit()
444 {
445   //
446   // Reinitializes the parameter class after a change
447   //
448
449   // Create the sampled timing structure
450   SampleTimeStruct();
451
452   // Calculate the time bin width in ns
453   fTimeBinWidth   = fTimeBinSize / fDriftVelocity * 1000.0;
454
455   // The range and the binwidth for the sampled TRF 
456   fTRFbin = 100;
457   // Start 0.2 mus before the signal
458   fTRFlo  = -0.2 * fDriftVelocity;
459   // End the maximum driftlength after the signal 
460   fTRFhi  = AliTRDgeometry::DrThick() 
461           + fTimeAfter * fTimeBinSize;
462   fTRFwid = (fTRFhi - fTRFlo) / ((Float_t) fTRFbin);
463
464   // Transverse and longitudinal diffusion coefficients (Xe/CO2)
465   fDiffusionT     = GetDiffusionT(fDriftVelocity,fField);
466   fDiffusionL     = GetDiffusionL(fDriftVelocity,fField);
467
468   // omega * tau.= tan(Lorentz-angle)
469   fOmegaTau       = GetOmegaTau(fDriftVelocity,fField);
470
471   // The Lorentz factor
472   if (fExBOn) {
473     fLorentzFactor = 1.0 / (1.0 + fOmegaTau*fOmegaTau);
474   }
475   else {
476     fLorentzFactor = 1.0;
477   }
478
479   // Create the sampled PRF
480   SamplePRF();
481
482   // Create the sampled TRF
483   SampleTRF();
484
485   // Create the LUT
486   FillLUT();
487
488 }
489
490 //_____________________________________________________________________________
491 void AliTRDparameter::SetNRowPad(Int_t p, Int_t c, Int_t npad)
492 {
493   //
494   // Redefines the number of pads in raw direction for
495   // a given plane and chamber number
496   //
497
498   for (Int_t isect = 0; isect < AliTRDgeometry::Nsect(); isect++) {
499
500     fRowMax[p][c][isect] = npad;
501
502     fRowPadSize[p][c][isect] = (fGeo->GetChamberLength(p,c) 
503                                 - 2.* AliTRDgeometry::RpadW())
504                              / ((Float_t) npad);
505
506   }
507
508 }
509
510 //_____________________________________________________________________________
511 void AliTRDparameter::SetNRowPad()
512 {
513   //
514   // Defines the number of pads in row direction
515   //
516
517   Int_t isect;
518   Int_t icham;
519   Int_t iplan;
520
521   Int_t rowMax[kNplan][kNcham] = { { 16, 16, 12, 16, 16 }
522                                  , { 16, 16, 12, 16, 16 }
523                                  , { 16, 16, 12, 16, 16 }
524                                  , { 16, 16, 12, 16, 16 }
525                                  , { 16, 16, 12, 16, 16 }
526                                  , { 16, 16, 12, 16, 16 } };
527
528   Float_t rpadW = AliTRDgeometry::RpadW();
529
530   for (isect = 0; isect < kNsect; isect++) {
531     for (icham = 0; icham < kNcham; icham++) {
532       for (iplan = 0; iplan < kNplan; iplan++) {
533
534         fRowMax[iplan][icham][isect]     = rowMax[iplan][icham];
535
536         fRowPadSize[iplan][icham][isect] = (fGeo->GetChamberLength(iplan,icham) 
537                                             - 2.*rpadW)
538                                          / ((Float_t) rowMax[iplan][icham]);
539
540         Float_t row0 = rpadW - fGeo->GetChamberLength(iplan,0)
541                              - fGeo->GetChamberLength(iplan,1)
542                              - fGeo->GetChamberLength(iplan,2) / 2.;
543         for (Int_t ic = 0; ic < icham; ic++) {
544           row0 += fGeo->GetChamberLength(iplan,ic);
545         }
546         fRow0[iplan][icham][isect]       = row0;
547
548       }
549     }
550   }
551
552 }
553
554 //_____________________________________________________________________________
555 void AliTRDparameter::SetColPadSize(Int_t p, Float_t s)
556 {
557   //
558   // Redefines the pad size in column direction
559   //
560
561   Float_t cpadW  = AliTRDgeometry::CpadW();
562
563   fColPadSize[p] = s;
564   fCol0[p]       = - fGeo->GetChamberWidth(p)/2. + cpadW;
565   fColMax[p]     = ((Int_t) ((fGeo->GetChamberWidth(p) - 2.*cpadW) / s));
566
567 }
568
569 //_____________________________________________________________________________
570 void AliTRDparameter::SetNTimeBin(Int_t nbin)
571 {
572   //
573   // Redefines the number of time bins in the drift region.
574   // The time bin width is defined by the length of the
575   // drift region divided by <nbin>.
576   //
577
578   fTimeMax     = nbin;
579   fTimeBinSize = AliTRDgeometry::DrThick() / ((Float_t) fTimeMax);
580   for (Int_t iplan = 0; iplan < AliTRDgeometry::Nplan(); iplan++) {
581     fTime0[iplan] = AliTRDgeometry::Rmin()
582                   + AliTRDgeometry::CraHght()
583                   + AliTRDgeometry::CdrHght()
584                   + iplan * (AliTRDgeometry::Cheight() 
585                            + AliTRDgeometry::Cspace());
586   }
587
588 }
589
590 //_____________________________________________________________________________
591 Float_t AliTRDparameter::CrossTalk(Float_t time) const
592 {
593   //
594   // Applies the pad-pad capacitive cross talk
595   //
596
597   Int_t iBin = ((Int_t) ((time - fTRFlo) / fTRFwid)); 
598   if ((iBin >= 0) && (iBin < fTRFbin)) {
599     return fCTsmp[iBin];
600   }
601   else {
602     return 0.0;
603   }    
604
605 }
606
607 //_____________________________________________________________________________
608 Int_t AliTRDparameter::TimeStruct(Float_t time, Float_t z, Float_t *xyz) const
609 {
610   //
611   // Applies the time structure of the drift cells (by C.Lippmann).
612   // The drift time of electrons to the anode wires depends on the
613   // distance to the wire (z) and on the position in the drift region.
614   //
615   // input : time (radial distance from pad cathode) in [cm] and z (distance
616   // from anode wire parallel to cathode planes) in [cm]
617   //
618
619   if ( z > 0.24 )                   z = 0.24;
620   if ( !fStaggeringOn && z < 0.01 ) z = 0.01;
621
622   Int_t r1 = (Int_t)(10*time);
623   Int_t r2 = r1+1;
624   Int_t z1 = (Int_t)(100*z);
625   Int_t z2 = z1+1;
626
627   if (r1<0 || r1>37 || z1<0 || z1>25) {
628     printf("<AliTRDparameter::TimeStruct> Warning. Indices out of range: ");
629     printf("time=%.2f, z=%.2f, r1=%d, z1=%d\n",time,z,r1,z1);
630     return kFALSE;
631     if (r1<0)  r1 = 0;
632     if (r1>37) r1 = 37;
633     if (z1<0)  z1 = 0;
634     if (z1>25) z1 = 25;
635   }
636
637   // 2D Interpolation:
638   Float_t y11, y12, y21, y22, y1, y2;
639   y11 = fTimeStruct[r1+38*z1];
640   y22 = (r2 <= 37 && z2 <= 25) ? fTimeStruct[r2+38*z2] : fTimeStruct[37+38*25];
641   y12 = (z2 <= 25)             ? fTimeStruct[r1+38*z2] : fTimeStruct[r1+38*25];
642   y21 = (r2 <= 37)             ? fTimeStruct[r2+38*z1] : fTimeStruct[37+38*z1];
643
644   y1  = (y21-y11)*10*time + y11 - (y21-y11)*r1;
645   y2  = (y22-y12)*10*time + y12 - (y22-y12)*r1;
646
647   Float_t AmTh   = AliTRDgeometry::AmThick() / 2.;
648   Float_t tdrift = 0.0;                       // drift time (GARFIELD)
649   if (TMath::Abs(time-AmTh)>0.005 || z>0.005)
650     tdrift = (y2-y1)*100*z + y1 - (y2-y1)*z1;
651   if (time < AmTh) tdrift *= -1.;
652   Float_t xdrift = tdrift*(AmTh + AliTRDgeometry::DrThick())/fTimeStruct[37] + AmTh;
653   Float_t offset = time - xdrift;
654
655   xyz[0] = xyz[0] + offset;
656   xyz[1] = xyz[1];
657   xyz[2] = xyz[2];
658
659   return 1;
660
661 }
662
663 //_____________________________________________________________________________
664 Int_t AliTRDparameter::Diffusion(Float_t driftlength, Float_t *xyz)
665 {
666   //
667   // Applies the diffusion smearing to the position of a single electron
668   //
669
670   Float_t driftSqrt = TMath::Sqrt(driftlength);
671   Float_t sigmaT = driftSqrt * fDiffusionT;
672   Float_t sigmaL = driftSqrt * fDiffusionL;
673   xyz[0] = gRandom->Gaus(xyz[0], sigmaL * fLorentzFactor);
674   xyz[1] = gRandom->Gaus(xyz[1], sigmaT * fLorentzFactor);
675   xyz[2] = gRandom->Gaus(xyz[2], sigmaT);
676
677   return 1;
678
679 }
680
681 //_____________________________________________________________________________
682 Int_t AliTRDparameter::ExB(Float_t driftlength, Float_t *xyz) const
683 {
684   //
685   // Applies E x B effects to the position of a single electron
686   //
687
688   xyz[0] = xyz[0];
689   xyz[1] = xyz[1] + fOmegaTau * driftlength;
690   xyz[2] = xyz[2];
691
692   return 1;
693
694 }
695
696 //_____________________________________________________________________________
697 Int_t AliTRDparameter::PadResponse(Float_t signal, Float_t dist
698                                  , Int_t plane, Float_t *pad) const
699 {
700   //
701   // Applies the pad response
702   //
703
704   const Int_t kNplan = AliTRDgeometry::kNplan;
705
706   Int_t iBin  = ((Int_t) (( - dist - fPRFlo) / fPRFwid));
707   Int_t iOff  = plane * fPRFbin;
708
709   Int_t iBin0 = iBin - fPRFpad + iOff;
710   Int_t iBin1 = iBin           + iOff;
711   Int_t iBin2 = iBin + fPRFpad + iOff;
712
713   pad[0] = 0.0;
714   pad[1] = 0.0;
715   pad[2] = 0.0;
716   if ((iBin1 >= 0) && (iBin1 < (fPRFbin*kNplan))) {
717
718     if (iBin0 >= 0) {
719       pad[0] = signal * fPRFsmp[iBin0];
720     }
721     pad[1] = signal * fPRFsmp[iBin1];
722     if (iBin2 < (fPRFbin*kNplan)) {
723       pad[2] = signal * fPRFsmp[iBin2];
724     }
725
726     return 1;
727
728   }
729   else {
730
731     return 0;
732
733   }
734
735 }
736
737 //_____________________________________________________________________________
738 Float_t AliTRDparameter::TimeResponse(Float_t time) const
739 {
740   //
741   // Applies the preamp shaper time response
742   //
743
744   Int_t iBin = ((Int_t) ((time - fTRFlo) / fTRFwid)); 
745   if ((iBin >= 0) && (iBin < fTRFbin)) {
746     return fTRFsmp[iBin];
747   }
748   else {
749     return 0.0;
750   }    
751
752 }
753
754 //_____________________________________________________________________________
755 Float_t AliTRDparameter::Col0Tilted(Float_t col0, Float_t rowOffset
756                                   , Int_t plane)
757 {
758   //
759   // Calculates col0 for tilted pads
760   //
761
762   Float_t diff = fTiltingAngle * rowOffset;
763   return (col0 + TMath::Power(-1.0,(plane+1)) * diff);
764
765 }
766
767 //_____________________________________________________________________________
768 void AliTRDparameter::SampleTRF()
769 {
770   //
771   // Samples the time response function
772   //
773   // New TRF from Venelin Angelov, simulated with CADENCE
774   // Pad-ground capacitance = 25 pF
775   // Pad-pad cross talk capacitance = 6 pF   
776   //
777
778   Int_t   ipos1;
779   Int_t   ipos2;
780   Float_t diff;
781
782   const Int_t kNpasa     = 252;
783
784   Float_t time[kNpasa]   = { -0.220000, -0.210000, -0.200000, -0.190000 
785                            , -0.180000, -0.170000, -0.160000, -0.150000 
786                            , -0.140000, -0.130000, -0.120000, -0.110000 
787                            , -0.100000, -0.090000, -0.080000, -0.070000 
788                            , -0.060000, -0.050000, -0.040000, -0.030000 
789                            , -0.020000, -0.010000, -0.000000,  0.010000 
790                            ,  0.020000,  0.030000,  0.040000,  0.050000 
791                            ,  0.060000,  0.070000,  0.080000,  0.090000 
792                            ,  0.100000,  0.110000,  0.120000,  0.130000 
793                            ,  0.140000,  0.150000,  0.160000,  0.170000 
794                            ,  0.180000,  0.190000,  0.200000,  0.210000 
795                            ,  0.220000,  0.230000,  0.240000,  0.250000 
796                            ,  0.260000,  0.270000,  0.280000,  0.290000 
797                            ,  0.300000,  0.310000,  0.320000,  0.330000 
798                            ,  0.340000,  0.350000,  0.360000,  0.370000 
799                            ,  0.380000,  0.390000,  0.400000,  0.410000 
800                            ,  0.420000,  0.430000,  0.440000,  0.450000 
801                            ,  0.460000,  0.470000,  0.480000,  0.490000 
802                            ,  0.500000,  0.510000,  0.520000,  0.530000 
803                            ,  0.540000,  0.550000,  0.560000,  0.570000 
804                            ,  0.580000,  0.590000,  0.600000,  0.610000 
805                            ,  0.620000,  0.630000,  0.640000,  0.650000 
806                            ,  0.660000,  0.670000,  0.680000,  0.690000 
807                            ,  0.700000,  0.710000,  0.720000,  0.730000 
808                            ,  0.740000,  0.750000,  0.760000,  0.770000 
809                            ,  0.780000,  0.790000,  0.800000,  0.810000 
810                            ,  0.820000,  0.830000,  0.840000,  0.850000 
811                            ,  0.860000,  0.870000,  0.880000,  0.890000 
812                            ,  0.900000,  0.910000,  0.920000,  0.930000 
813                            ,  0.940000,  0.950000,  0.960000,  0.970000 
814                            ,  0.980000,  0.990000,  1.000000,  1.010000 
815                            ,  1.020000,  1.030000,  1.040000,  1.050000 
816                            ,  1.060000,  1.070000,  1.080000,  1.090000 
817                            ,  1.100000,  1.110000,  1.120000,  1.130000 
818                            ,  1.140000,  1.150000,  1.160000,  1.170000 
819                            ,  1.180000,  1.190000,  1.200000,  1.210000 
820                            ,  1.220000,  1.230000,  1.240000,  1.250000 
821                            ,  1.260000,  1.270000,  1.280000,  1.290000 
822                            ,  1.300000,  1.310000,  1.320000,  1.330000 
823                            ,  1.340000,  1.350000,  1.360000,  1.370000 
824                            ,  1.380000,  1.390000,  1.400000,  1.410000 
825                            ,  1.420000,  1.430000,  1.440000,  1.450000 
826                            ,  1.460000,  1.470000,  1.480000,  1.490000 
827                            ,  1.500000,  1.510000,  1.520000,  1.530000 
828                            ,  1.540000,  1.550000,  1.560000,  1.570000 
829                            ,  1.580000,  1.590000,  1.600000,  1.610000 
830                            ,  1.620000,  1.630000,  1.640000,  1.650000 
831                            ,  1.660000,  1.670000,  1.680000,  1.690000 
832                            ,  1.700000,  1.710000,  1.720000,  1.730000 
833                            ,  1.740000,  1.750000,  1.760000,  1.770000 
834                            ,  1.780000,  1.790000,  1.800000,  1.810000 
835                            ,  1.820000,  1.830000,  1.840000,  1.850000 
836                            ,  1.860000,  1.870000,  1.880000,  1.890000 
837                            ,  1.900000,  1.910000,  1.920000,  1.930000 
838                            ,  1.940000,  1.950000,  1.960000,  1.970000 
839                            ,  1.980000,  1.990000,  2.000000,  2.010000 
840                            ,  2.020000,  2.030000,  2.040000,  2.050000 
841                            ,  2.060000,  2.070000,  2.080000,  2.090000 
842                            ,  2.100000,  2.110000,  2.120000,  2.130000 
843                            ,  2.140000,  2.150000,  2.160000,  2.170000 
844                            ,  2.180000,  2.190000,  2.200000,  2.210000 
845                            ,  2.220000,  2.230000,  2.240000,  2.250000 
846                            ,  2.260000,  2.270000,  2.280000,  2.290000 };
847
848   Float_t signal[kNpasa] = {  0.000000,  0.000000,  0.000000,  0.000000 
849                            ,  0.000000,  0.000000,  0.000000,  0.000396 
850                            ,  0.005096,  0.022877,  0.061891,  0.126614 
851                            ,  0.215798,  0.324406,  0.444507,  0.566817 
852                            ,  0.683465,  0.787089,  0.873159,  0.937146 
853                            ,  0.979049,  0.999434,  1.000000,  0.983579 
854                            ,  0.954134,  0.913364,  0.866365,  0.813703 
855                            ,  0.759910,  0.706116,  0.653454,  0.603624 
856                            ,  0.556625,  0.514156,  0.475085,  0.439977 
857                            ,  0.408834,  0.380578,  0.355549,  0.333352 
858                            ,  0.313647,  0.296093,  0.280351,  0.266195 
859                            ,  0.253397,  0.241789,  0.231257,  0.221574 
860                            ,  0.212627,  0.204417,  0.196772,  0.189581 
861                            ,  0.182956,  0.176784,  0.171008,  0.165515 
862                            ,  0.160419,  0.155606,  0.151076,  0.146716 
863                            ,  0.142639,  0.138845,  0.135221,  0.131767 
864                            ,  0.128482,  0.125368,  0.122424,  0.119592 
865                            ,  0.116931,  0.114326,  0.111891,  0.109513 
866                            ,  0.107248,  0.105096,  0.103058,  0.101019 
867                            ,  0.099151,  0.097282,  0.095527,  0.093715 
868                            ,  0.092129,  0.090544,  0.088958,  0.087429 
869                            ,  0.086014,  0.084598,  0.083239,  0.081880 
870                            ,  0.080634,  0.079388,  0.078143,  0.077010 
871                            ,  0.075878,  0.074745,  0.073669,  0.072593 
872                            ,  0.071574,  0.070612,  0.069649,  0.068686 
873                            ,  0.067780,  0.066874,  0.066025,  0.065176 
874                            ,  0.064326,  0.063533,  0.062684,  0.061948 
875                            ,  0.061212,  0.060419,  0.059740,  0.059003 
876                            ,  0.058324,  0.057644,  0.057022,  0.056342 
877                            ,  0.055663,  0.055096,  0.054473,  0.053851 
878                            ,  0.053284,  0.052718,  0.052152,  0.051585 
879                            ,  0.051019,  0.050566,  0.050000,  0.049490 
880                            ,  0.048981,  0.048528,  0.048018,  0.047508 
881                            ,  0.047055,  0.046602,  0.046149,  0.045696 
882                            ,  0.045300,  0.044904,  0.044451,  0.044054 
883                            ,  0.043658,  0.043205,  0.042865,  0.042469 
884                            ,  0.042072,  0.041733,  0.041336,  0.040997 
885                            ,  0.040657,  0.040260,  0.039921,  0.039581 
886                            ,  0.039241,  0.038958,  0.038618,  0.038335 
887                            ,  0.037995,  0.037656,  0.037373,  0.037089 
888                            ,  0.036806,  0.036467,  0.036183,  0.035900 
889                            ,  0.035617,  0.035334,  0.035108,  0.034824 
890                            ,  0.034541,  0.034315,  0.034032,  0.033805 
891                            ,  0.033522,  0.033296,  0.033069,  0.032786 
892                            ,  0.032559,  0.032333,  0.032106,  0.031880 
893                            ,  0.031653,  0.031427,  0.031200,  0.030974 
894                            ,  0.030804,  0.030578,  0.030351,  0.030125 
895                            ,  0.029955,  0.029785,  0.029558,  0.029332 
896                            ,  0.029162,  0.028992,  0.028766,  0.028596 
897                            ,  0.028426,  0.028199,  0.028086,  0.027860 
898                            ,  0.027746,  0.027633,  0.027463,  0.027293 
899                            ,  0.027180,  0.027067,  0.026954,  0.026954 
900                            ,  0.026840,  0.026727,  0.026727,  0.026614 
901                            ,  0.026614,  0.026614,  0.026557,  0.026501 
902                            ,  0.026501,  0.026501,  0.026501,  0.026501 
903                            ,  0.026501,  0.026501,  0.026501,  0.026387 
904                            ,  0.026387,  0.026387,  0.026387,  0.026387 
905                            ,  0.026387,  0.026387,  0.026387,  0.026387 
906                            ,  0.026387,  0.026387,  0.026387,  0.026387 
907                            ,  0.026387,  0.026274,  0.026274,  0.026274 
908                            ,  0.026274,  0.026274,  0.026274,  0.026274 
909                            ,  0.026274,  0.026274,  0.026274,  0.026274 
910                            ,  0.026274,  0.026274,  0.026274,  0.026161 };
911
912   Float_t xtalk[kNpasa]  = {  0.000000,  0.000000,  0.000000,  0.000000 
913                            ,  0.000000,  0.000000,  0.000000,  0.000113 
914                            ,  0.000793,  0.003058,  0.007305,  0.013194 
915                            ,  0.019706,  0.025821,  0.030634,  0.033465 
916                            ,  0.034145,  0.032729,  0.029615,  0.025198 
917                            ,  0.019989,  0.014496,  0.009003,  0.003964 
918                            , -0.000510, -0.004190, -0.007191, -0.009400 
919                            , -0.010872, -0.011835, -0.012288, -0.012288 
920                            , -0.012005, -0.011495, -0.010872, -0.010136 
921                            , -0.009343, -0.008607, -0.007871, -0.007191 
922                            , -0.006512, -0.005946, -0.005379, -0.004926 
923                            , -0.004473, -0.004077, -0.003737, -0.003398 
924                            , -0.003114, -0.002831, -0.002605, -0.002378 
925                            , -0.002208, -0.002039, -0.001869, -0.001699 
926                            , -0.001585, -0.001472, -0.001359, -0.001246 
927                            , -0.001132, -0.001019, -0.001019, -0.000906 
928                            , -0.000906, -0.000793, -0.000793, -0.000680 
929                            , -0.000680, -0.000680, -0.000566, -0.000566 
930                            , -0.000566, -0.000566, -0.000453, -0.000453 
931                            , -0.000453, -0.000453, -0.000453, -0.000453 
932                            , -0.000340, -0.000340, -0.000340, -0.000340 
933                            , -0.000340, -0.000340, -0.000340, -0.000340 
934                            , -0.000340, -0.000340, -0.000340, -0.000340 
935                            , -0.000340, -0.000227, -0.000227, -0.000227 
936                            , -0.000227, -0.000227, -0.000227, -0.000227 
937                            , -0.000227, -0.000227, -0.000227, -0.000227 
938                            , -0.000227, -0.000227, -0.000227, -0.000227 
939                            , -0.000227, -0.000227, -0.000227, -0.000227 
940                            , -0.000227, -0.000227, -0.000227, -0.000227 
941                            , -0.000227, -0.000227, -0.000227, -0.000227 
942                            , -0.000227, -0.000227, -0.000227, -0.000227 
943                            , -0.000227, -0.000227, -0.000227, -0.000227 
944                            , -0.000227, -0.000227, -0.000227, -0.000113 
945                            , -0.000113, -0.000113, -0.000113, -0.000113 
946                            , -0.000113, -0.000113, -0.000113, -0.000113 
947                            , -0.000113, -0.000113, -0.000113, -0.000113 
948                            , -0.000113, -0.000113, -0.000113, -0.000113 
949                            , -0.000113, -0.000113, -0.000113, -0.000113 
950                            , -0.000113, -0.000113, -0.000113, -0.000113 
951                            , -0.000113, -0.000113, -0.000113, -0.000113 
952                            , -0.000113, -0.000113, -0.000113, -0.000113 
953                            , -0.000113, -0.000113, -0.000113, -0.000113 
954                            , -0.000113, -0.000113, -0.000113, -0.000113 
955                            , -0.000113, -0.000113, -0.000113, -0.000113 
956                            , -0.000113, -0.000113, -0.000113, -0.000113 
957                            , -0.000113, -0.000113, -0.000113, -0.000113 
958                            , -0.000113, -0.000113, -0.000113, -0.000113 
959                            , -0.000113, -0.000113, -0.000113, -0.000113 
960                            , -0.000113, -0.000113, -0.000113, -0.000113 
961                            , -0.000113, -0.000113, -0.000113, -0.000113 
962                            , -0.000113, -0.000113, -0.000113, -0.000113 
963                            , -0.000113, -0.000113, -0.000113, -0.000113 
964                            , -0.000113, -0.000113, -0.000113,  0.000000 
965                            ,  0.000000,  0.000000,  0.000000,  0.000000 
966                            ,  0.000000,  0.000000,  0.000000,  0.000000 
967                            ,  0.000000,  0.000000,  0.000000,  0.000000 
968                            ,  0.000000,  0.000000,  0.000000,  0.000000 
969                            ,  0.000000,  0.000000,  0.000000,  0.000000 
970                            ,  0.000000,  0.000000,  0.000000,  0.000000 
971                            ,  0.000000,  0.000000,  0.000000,  0.000000 
972                            ,  0.000000,  0.000000,  0.000000,  0.000000 
973                            ,  0.000000,  0.000000,  0.000000,  0.000000 
974                            ,  0.000000,  0.000000,  0.000000,  0.000000 };
975
976   // increase CrossTalk to measurements
977   for (Int_t ipasa = 0; ipasa < kNpasa; ipasa++) {
978     xtalk[ipasa] *= 1.75;
979   }
980
981   if (fTRFsmp) delete [] fTRFsmp;
982   fTRFsmp = new Float_t[fTRFbin];
983   if (fCTsmp)  delete [] fCTsmp;
984   fCTsmp  = new Float_t[fTRFbin];
985
986   Float_t loTRF    = TMath::Max(fTRFlo / fDriftVelocity,time[0]);
987   Float_t hiTRF    = TMath::Min(fTRFhi / fDriftVelocity,time[kNpasa-1]);
988   Float_t binWidth = (hiTRF - loTRF) / ((Float_t) fTRFbin);
989
990   // Take the linear interpolation
991   for (Int_t iBin = 0; iBin < fTRFbin; iBin++) {
992
993     Float_t bin = (((Float_t) iBin) + 0.5) * binWidth + loTRF;
994     ipos1 = ipos2 = 0;
995     diff  = 0;
996     do {
997       diff = bin - time[ipos2++];
998     } while (diff > 0);
999     ipos2--;
1000     if (ipos2 >= kNpasa) ipos2 = kNpasa - 1;
1001     ipos1 = ipos2 - 1;
1002
1003     fTRFsmp[iBin] = signal[ipos2] 
1004                   + diff * (signal[ipos2] - signal[ipos1]) 
1005                          / (  time[ipos2] -   time[ipos1]);
1006
1007     fCTsmp[iBin]  = xtalk[ipos2] 
1008                   + diff * (xtalk[ipos2]  -  xtalk[ipos1]) 
1009                          / (  time[ipos2] -   time[ipos1]);
1010
1011   }
1012
1013 }
1014
1015 //_____________________________________________________________________________
1016 void AliTRDparameter::SampleTimeStruct()
1017 {
1018   //
1019   // Samples the timing structure of a drift cell
1020   // Drift Time data calculated with Garfield (by C.Lippmann)
1021   //
1022
1023   const Int_t ktimebin  = 38;
1024   const Int_t kZbin = 26;
1025
1026   Float_t stagg[ktimebin][kZbin] =
1027     {{9.1221e-02, 9.1269e-02, 9.1426e-02, 9.1678e-02, 9.2041e-02, 9.2500e-02,
1028       9.3081e-02, 9.3760e-02, 9.4540e-02, 9.5434e-02, 9.6436e-02, 9.7554e-02,
1029       9.8796e-02, 1.0016e-01, 1.0167e-01, 1.0336e-01, 1.0528e-01, 1.0748e-01,
1030       1.1012e-01, 1.1348e-01, 1.1790e-01, 1.2395e-01, 1.3317e-01, 1.5036e-01,
1031       1.9348e-01, 5.7191e-01},
1032      {6.5708e-02, 6.5787e-02, 6.5954e-02, 6.6237e-02, 6.6646e-02, 6.7170e-02,
1033       6.7804e-02, 6.8554e-02, 6.9424e-02, 7.0392e-02, 7.1492e-02, 7.2693e-02,
1034       7.4006e-02, 7.5459e-02, 7.7042e-02, 7.8795e-02, 8.0786e-02, 8.3081e-02,
1035       8.5798e-02, 8.9290e-02, 9.3841e-02, 1.0007e-01, 1.0959e-01, 1.2741e-01,
1036       1.7152e-01, 5.4720e-01},
1037      {3.9602e-02, 3.9699e-02, 3.9969e-02, 4.0417e-02, 4.1015e-02, 4.1802e-02,
1038       4.2726e-02, 4.3804e-02, 4.4992e-02, 4.6309e-02, 4.7720e-02, 4.9244e-02,
1039       5.0874e-02, 5.2592e-02, 5.4437e-02, 5.6461e-02, 5.8704e-02, 6.1340e-02,
1040       6.4533e-02, 6.8509e-02, 7.3620e-02, 8.0737e-02, 9.1920e-02, 1.1276e-01,
1041       1.6078e-01, 5.2455e-01},
1042      {1.1236e-02, 1.1514e-02, 1.2355e-02, 1.3666e-02, 1.5354e-02, 1.7292e-02,
1043       1.9469e-02, 2.1756e-02, 2.4118e-02, 2.6505e-02, 2.8902e-02, 3.1273e-02,
1044       3.3618e-02, 3.5960e-02, 3.8367e-02, 4.0957e-02, 4.3859e-02, 4.7286e-02,
1045       5.1516e-02, 5.7160e-02, 6.5086e-02, 7.6740e-02, 9.4905e-02, 1.2426e-01,
1046       1.8267e-01, 4.8444e-01},
1047      {1.1285e-02, 1.1581e-02, 1.2430e-02, 1.3739e-02, 1.5383e-02, 1.7329e-02,
1048       1.9477e-02, 2.1732e-02, 2.4063e-02, 2.6412e-02, 2.8746e-02, 3.1073e-02,
1049       3.3329e-02, 3.5733e-02, 3.8146e-02, 4.0847e-02, 4.3908e-02, 4.7650e-02,
1050       5.2475e-02, 5.9069e-02, 6.8420e-02, 8.2181e-02, 1.0199e-01, 1.3525e-01,
1051       1.9150e-01, 4.6381e-01},
1052      {3.9345e-02, 3.9430e-02, 3.9698e-02, 4.0124e-02, 4.0714e-02, 4.1462e-02,
1053       4.2325e-02, 4.3327e-02, 4.4476e-02, 4.5727e-02, 4.7075e-02, 4.8532e-02,
1054       5.0118e-02, 5.1838e-02, 5.3758e-02, 5.5958e-02, 5.8528e-02, 6.1589e-02,
1055       6.5285e-02, 6.9903e-02, 7.6022e-02, 8.4799e-02, 9.8707e-02, 1.2316e-01,
1056       1.7495e-01, 5.2371e-01},
1057      {6.4837e-02, 6.4889e-02, 6.5062e-02, 6.5329e-02, 6.5688e-02, 6.6204e-02,
1058       6.6770e-02, 6.7494e-02, 6.8306e-02, 6.9234e-02, 7.0297e-02, 7.1484e-02,
1059       7.2842e-02, 7.4318e-02, 7.6041e-02, 7.8040e-02, 8.0428e-02, 8.3315e-02,
1060       8.6827e-02, 9.1171e-02, 9.6759e-02, 1.0445e-01, 1.1651e-01, 1.3841e-01,
1061       1.8746e-01, 5.4644e-01},
1062      {9.0789e-02, 9.0824e-02, 9.0908e-02, 9.1065e-02, 9.1268e-02, 9.1522e-02,
1063       9.1838e-02, 9.2207e-02, 9.2643e-02, 9.3230e-02, 9.4073e-02, 9.5341e-02,
1064       9.7229e-02, 1.0633e-01, 1.0703e-01, 1.0868e-01, 1.1124e-01, 1.1451e-01,
1065       1.1853e-01, 1.2342e-01, 1.2981e-01, 1.3868e-01, 1.5245e-01, 1.7661e-01,
1066       2.2796e-01, 5.6931e-01},
1067      {1.2735e-01, 1.2744e-01, 1.2775e-01, 1.2828e-01, 1.2909e-01, 1.3021e-01,
1068       1.3172e-01, 1.3377e-01, 1.3658e-01, 1.4055e-01, 1.4624e-01, 1.5549e-01,
1069       1.7490e-01, 2.1347e-01, 1.8445e-01, 1.7581e-01, 1.7263e-01, 1.7216e-01,
1070       1.7377e-01, 1.7731e-01, 1.8337e-01, 1.9306e-01, 2.0875e-01, 2.3610e-01,
1071       2.9100e-01, 6.0131e-01},
1072      {1.7654e-01, 1.7663e-01, 1.7711e-01, 1.7789e-01, 1.7901e-01, 1.8055e-01,
1073       1.8252e-01, 1.8511e-01, 1.8844e-01, 1.9288e-01, 1.9889e-01, 2.0816e-01,
1074       2.2673e-01, 2.7253e-01, 2.3949e-01, 2.3043e-01, 2.2695e-01, 2.2620e-01,
1075       2.2751e-01, 2.3091e-01, 2.3691e-01, 2.4671e-01, 2.6258e-01, 2.9036e-01,
1076       3.4575e-01, 6.4208e-01},
1077      {2.2845e-01, 2.2860e-01, 2.2907e-01, 2.2987e-01, 2.3103e-01, 2.3262e-01,
1078       2.3466e-01, 2.3727e-01, 2.4063e-01, 2.4510e-01, 2.5116e-01, 2.6032e-01,
1079       2.7853e-01, 3.2713e-01, 2.9240e-01, 2.8314e-01, 2.7962e-01, 2.7878e-01,
1080       2.8008e-01, 2.8341e-01, 2.8944e-01, 2.9918e-01, 3.1503e-01, 3.4275e-01,
1081       3.9786e-01, 6.8482e-01},
1082      {2.8077e-01, 2.8094e-01, 2.8142e-01, 2.8222e-01, 2.8341e-01, 2.8496e-01,
1083       2.8702e-01, 2.8962e-01, 2.9301e-01, 2.9745e-01, 3.0350e-01, 3.1263e-01,
1084       3.3069e-01, 3.8049e-01, 3.4500e-01, 3.3562e-01, 3.3206e-01, 3.3126e-01,
1085       3.3253e-01, 3.3588e-01, 3.4183e-01, 3.5155e-01, 3.6729e-01, 3.9494e-01,
1086       4.4955e-01, 7.2458e-01},
1087      {3.3321e-01, 3.3336e-01, 3.3385e-01, 3.3466e-01, 3.3584e-01, 3.3744e-01,
1088       3.3946e-01, 3.4213e-01, 3.4544e-01, 3.4987e-01, 3.5592e-01, 3.6502e-01,
1089       3.8298e-01, 4.3361e-01, 3.9758e-01, 3.8814e-01, 3.8456e-01, 3.8373e-01,
1090       3.8498e-01, 3.8831e-01, 3.9424e-01, 4.0392e-01, 4.1961e-01, 4.4703e-01,
1091       5.0121e-01, 7.6594e-01},
1092      {3.8572e-01, 3.8588e-01, 3.8634e-01, 3.8716e-01, 3.8834e-01, 3.8993e-01,
1093       3.9196e-01, 3.9456e-01, 3.9792e-01, 4.0236e-01, 4.0848e-01, 4.1745e-01,
1094       4.3532e-01, 4.8671e-01, 4.5019e-01, 4.4067e-01, 4.3708e-01, 4.3625e-01,
1095       4.3746e-01, 4.4078e-01, 4.4663e-01, 4.5626e-01, 4.7192e-01, 4.9913e-01,
1096       5.5270e-01, 8.0632e-01},
1097      {4.3847e-01, 4.3855e-01, 4.3892e-01, 4.3976e-01, 4.4089e-01, 4.4247e-01,
1098       4.4451e-01, 4.4711e-01, 4.5048e-01, 4.5489e-01, 4.6092e-01, 4.6997e-01,
1099       4.8773e-01, 5.3996e-01, 5.0285e-01, 4.9328e-01, 4.8966e-01, 4.8878e-01,
1100       4.9006e-01, 4.9327e-01, 4.9912e-01, 5.0870e-01, 5.2424e-01, 5.5126e-01,
1101       6.0420e-01, 8.4589e-01},
1102      {4.9089e-01, 4.9105e-01, 4.9153e-01, 4.9234e-01, 4.9351e-01, 4.9509e-01,
1103       4.9712e-01, 4.9970e-01, 5.0306e-01, 5.0749e-01, 5.1348e-01, 5.2250e-01,
1104       5.4016e-01, 5.9329e-01, 5.5559e-01, 5.4594e-01, 5.4229e-01, 5.4138e-01,
1105       5.4257e-01, 5.4584e-01, 5.5162e-01, 5.6114e-01, 5.7660e-01, 6.0338e-01,
1106       6.5560e-01, 8.8395e-01},
1107      {5.4358e-01, 5.4372e-01, 5.4422e-01, 5.4500e-01, 5.4618e-01, 5.4776e-01,
1108       5.4978e-01, 5.5238e-01, 5.5572e-01, 5.6014e-01, 5.6613e-01, 5.7508e-01,
1109       5.9263e-01, 6.4680e-01, 6.0840e-01, 5.9867e-01, 5.9497e-01, 5.9416e-01,
1110       5.9522e-01, 5.9846e-01, 6.0424e-01, 6.1369e-01, 6.2902e-01, 6.5556e-01,
1111       7.0707e-01, 9.1967e-01},
1112      {5.9631e-01, 5.9648e-01, 5.9694e-01, 5.9776e-01, 5.9892e-01, 6.0049e-01,
1113       6.0252e-01, 6.0511e-01, 6.0845e-01, 6.1287e-01, 6.1881e-01, 6.2775e-01,
1114       6.4519e-01, 7.0051e-01, 6.6128e-01, 6.5147e-01, 6.4773e-01, 6.4680e-01,
1115       6.4793e-01, 6.5114e-01, 6.5690e-01, 6.6624e-01, 6.8147e-01, 7.0775e-01,
1116       7.5854e-01, 9.5826e-01},
1117      {6.4916e-01, 6.4928e-01, 6.4976e-01, 6.5057e-01, 6.5173e-01, 6.5329e-01,
1118       6.5533e-01, 6.5792e-01, 6.6124e-01, 6.6563e-01, 6.7159e-01, 6.8051e-01,
1119       6.9779e-01, 7.5441e-01, 7.1424e-01, 7.0434e-01, 7.0057e-01, 6.9962e-01,
1120       7.0071e-01, 7.0392e-01, 7.0959e-01, 7.1891e-01, 7.3396e-01, 7.6003e-01,
1121       8.1008e-01, 9.9861e-01},
1122      {7.0207e-01, 7.0221e-01, 7.0264e-01, 7.0345e-01, 7.0461e-01, 7.0621e-01,
1123       7.0820e-01, 7.1079e-01, 7.1410e-01, 7.1849e-01, 7.2442e-01, 7.3329e-01,
1124       7.5047e-01, 8.0863e-01, 7.6728e-01, 7.5729e-01, 7.5348e-01, 7.5250e-01,
1125       7.5358e-01, 7.5674e-01, 7.6239e-01, 7.7162e-01, 7.8659e-01, 8.1236e-01,
1126       8.6164e-01, 1.0402},
1127      {7.5498e-01, 7.5573e-01, 7.5560e-01, 7.5642e-01, 7.5759e-01, 7.5913e-01,
1128       7.6116e-01, 7.6373e-01, 7.6704e-01, 7.7142e-01, 7.7734e-01, 7.8617e-01,
1129       8.0322e-01, 8.6277e-01, 8.2039e-01, 8.1030e-01, 8.0646e-01, 8.0546e-01,
1130       8.0650e-01, 8.0964e-01, 8.1524e-01, 8.2443e-01, 8.3926e-01, 8.6476e-01,
1131       9.1328e-01, 1.0826},
1132      {8.0804e-01, 8.0817e-01, 8.0865e-01, 8.0945e-01, 8.1060e-01, 8.1219e-01,
1133       8.1420e-01, 8.1674e-01, 8.2006e-01, 8.2444e-01, 8.3032e-01, 8.3912e-01,
1134       8.5604e-01, 9.1704e-01, 8.7360e-01, 8.6340e-01, 8.5952e-01, 8.5850e-01,
1135       8.5951e-01, 8.6262e-01, 8.6815e-01, 8.7727e-01, 8.9200e-01, 9.1725e-01,
1136       9.6506e-01, 1.1263},
1137      {8.6112e-01, 8.6129e-01, 8.6175e-01, 8.6255e-01, 8.6370e-01, 8.6526e-01,
1138       8.6729e-01, 8.6986e-01, 8.7316e-01, 8.7749e-01, 8.8338e-01, 8.9214e-01,
1139       9.0895e-01, 9.7166e-01, 9.2687e-01, 9.1657e-01, 9.1266e-01, 9.1157e-01,
1140       9.1260e-01, 9.1569e-01, 9.2125e-01, 9.3021e-01, 9.4481e-01, 9.6985e-01,
1141       1.0169, 1.1709},
1142      {9.1435e-01, 9.1448e-01, 9.1492e-01, 9.1575e-01, 9.1689e-01, 9.1846e-01,
1143       9.2046e-01, 9.2304e-01, 9.2633e-01, 9.3068e-01, 9.3652e-01, 9.4523e-01,
1144       9.6191e-01, 1.0265, 9.8022e-01, 9.6983e-01, 9.6588e-01, 9.6480e-01,
1145       9.6576e-01, 9.6877e-01, 9.7426e-01, 9.8323e-01, 9.9774e-01, 1.0225,
1146       1.0689, 1.2167},
1147      {9.6759e-01, 9.6773e-01, 9.6823e-01, 9.6900e-01, 9.7017e-01, 9.7170e-01,
1148       9.7372e-01, 9.7628e-01, 9.7957e-01, 9.8389e-01, 9.8975e-01, 9.9845e-01,
1149       1.0150, 1.0814, 1.0336, 1.0232, 1.0192, 1.0181, 1.0190, 1.0220, 1.0274,
1150       1.0363, 1.0507, 1.0752, 1.1210, 1.2635},
1151      {1.0219, 1.0211, 1.0215, 1.0223, 1.0235, 1.0250, 1.0270, 1.0296, 1.0329,
1152       1.0372, 1.0432, 1.0517, 1.0681, 1.1366, 1.0872, 1.0766, 1.0725, 1.0714,
1153       1.0723, 1.0753, 1.0807, 1.0895, 1.1038, 1.1281, 1.1732, 1.3110},
1154      {1.0743, 1.0748, 1.0749, 1.0757, 1.0770, 1.0784, 1.0804, 1.0830, 1.0863,
1155       1.0906, 1.0964, 1.1050, 1.1214, 1.1919, 1.1407, 1.1300, 1.1260, 1.1248,
1156       1.1257, 1.1287, 1.1340, 1.1428, 1.1570, 1.1810, 1.2256, 1.3591},
1157      {1.1278, 1.1279, 1.1284, 1.1292, 1.1304, 1.1319, 1.1339, 1.1364, 1.1397,
1158       1.1440, 1.1498, 1.1584, 1.1747, 1.2472, 1.1943, 1.1836, 1.1795, 1.1783,
1159       1.1792, 1.1821, 1.1874, 1.1961, 1.2102, 1.2340, 1.2781, 1.4079},
1160      {1.1912, 1.1815, 1.1820, 1.1827, 1.1839, 1.1854, 1.1875, 1.1900, 1.1933,
1161       1.1975, 1.2033, 1.2119, 1.2281, 1.3027, 1.2480, 1.2371, 1.2330, 1.2318,
1162       1.2327, 1.2356, 1.2409, 1.2495, 1.2635, 1.2872, 1.3308, 1.4571},
1163      {1.2349, 1.2351, 1.2356, 1.2363, 1.2375, 1.2390, 1.2410, 1.2436, 1.2468,
1164       1.2511, 1.2569, 1.2654, 1.2815, 1.3583, 1.3017, 1.2908, 1.2866, 1.2854,
1165       1.2863, 1.2892, 1.2944, 1.3030, 1.3170, 1.3404, 1.3836, 1.5071},
1166      {1.3170, 1.2887, 1.2892, 1.2900, 1.2911, 1.2927, 1.2947, 1.2972, 1.3005,
1167       1.3047, 1.3105, 1.3190, 1.3350, 1.4139, 1.3555, 1.3445, 1.3403, 1.3391,
1168       1.3399, 1.3428, 1.3480, 1.3566, 1.3704, 1.3937, 1.4366, 1.5575},
1169      {1.3423, 1.3424, 1.3429, 1.3437, 1.3449, 1.3464, 1.3484, 1.3509, 1.3541,
1170       1.3584, 1.3642, 1.3727, 1.3886, 1.4695, 1.4093, 1.3982, 1.3940, 1.3928,
1171       1.3936, 1.3966, 1.4017, 1.4103, 1.4240, 1.4472, 1.4896, 1.6085},
1172      {1.3960, 1.3962, 1.3966, 1.3974, 1.3985, 1.4001, 1.4021, 1.4046, 1.4079,
1173       1.4122, 1.4179, 1.4264, 1.4423, 1.5251, 1.4632, 1.4520, 1.4477, 1.4465,
1174       1.4474, 1.4502, 1.4554, 1.4639, 1.4776, 1.5007, 1.5429, 1.6600},
1175      {1.4498, 1.4499, 1.4504, 1.4512, 1.4524, 1.4539, 1.4559, 1.4584, 1.4616,
1176       1.4659, 1.4717, 1.4801, 1.4959, 1.5806, 1.5170, 1.5058, 1.5016, 1.5003,
1177       1.5011, 1.5040, 1.5091, 1.5177, 1.5313, 1.5542, 1.5962, 1.7119},
1178      {1.5036, 1.5037, 1.5042, 1.5050, 1.5061, 1.5077, 1.5097, 1.5122, 1.5154,
1179       1.5197, 1.5254, 1.5339, 1.5497, 1.6359, 1.5708, 1.5596, 1.5554, 1.5541,
1180       1.5549, 1.5577, 1.5629, 1.5714, 1.5850, 1.6079, 1.6497, 1.7643},
1181      {1.5574, 1.5575, 1.5580, 1.5588, 1.5600, 1.5615, 1.5635, 1.5660, 1.5693,
1182       1.5735, 1.5792, 1.5877, 1.6035, 1.6909, 1.6247, 1.6135, 1.6092, 1.6080,
1183       1.6088, 1.6117, 1.6167, 1.6252, 1.6388, 1.6616, 1.7033, 1.8171},
1184      {1.6173, 1.6114, 1.6119, 1.6127, 1.6138, 1.6153, 1.6173, 1.6198, 1.6231,
1185       1.6274, 1.6331, 1.6415, 1.6573, 1.7454, 1.6786, 1.6674, 1.6631, 1.6618,
1186       1.6626, 1.6654, 1.6706, 1.6791, 1.6926, 1.7154, 1.7570, 1.8704},
1187      {1.6651, 1.6652, 1.6657, 1.6665, 1.6676, 1.6692, 1.6712, 1.6737, 1.6769,
1188       1.6812, 1.6869, 1.6953, 1.7111, 1.7995, 1.7324, 1.7212, 1.7169, 1.7157,
1189       1.7164, 1.7193, 1.7244, 1.7328, 1.7465, 1.7693, 1.8108, 1.9241}};
1190
1191   Float_t nonstagg[ktimebin][kZbin] =
1192     {{0.0912, 0.0913, 0.0914, 0.0917, 0.0920, 0.0925, 0.0931, 0.0938, 0.0946,
1193       0.0954, 0.0964, 0.0975, 0.0988, 0.1001, 0.1017, 0.1034, 0.1053, 0.1075,
1194       0.1101, 0.1135, 0.1179, 0.1239, 0.1332, 0.1504, 0.1935, 0.5719},
1195      {0.0657, 0.0658, 0.0660, 0.0662, 0.0666, 0.0672, 0.0678, 0.0685, 0.0694,
1196       0.0704, 0.0715, 0.0727, 0.0740, 0.0755, 0.0770, 0.0788, 0.0808, 0.0831,
1197       0.0858, 0.0893, 0.0938, 0.1001, 0.1096, 0.1274, 0.1715, 0.5475},
1198      {0.0396, 0.0397, 0.0400, 0.0404, 0.0410, 0.0418, 0.0427, 0.0438, 0.0450,
1199       0.0463, 0.0477, 0.0492, 0.0509, 0.0526, 0.0544, 0.0565, 0.0587, 0.0613,
1200       0.0645, 0.0685, 0.0736, 0.0807, 0.0919, 0.1128, 0.1608, 0.5233},
1201      {0.0112, 0.0115, 0.0124, 0.0137, 0.0154, 0.0173, 0.0195, 0.0218, 0.0241,
1202       0.0265, 0.0289, 0.0313, 0.0336, 0.0360, 0.0384, 0.0410, 0.0439, 0.0473,
1203       0.0515, 0.0571, 0.0651, 0.0767, 0.0949, 0.1243, 0.1826, 0.4858},
1204      {0.0113, 0.0116, 0.0124, 0.0137, 0.0154, 0.0173, 0.0195, 0.0217, 0.0241,
1205       0.0264, 0.0287, 0.0311, 0.0334, 0.0357, 0.0381, 0.0408, 0.0439, 0.0476,
1206       0.0525, 0.0591, 0.0684, 0.0821, 0.1019, 0.1352, 0.1914, 0.4601},
1207      {0.0394, 0.0394, 0.0397, 0.0401, 0.0407, 0.0415, 0.0423, 0.0434, 0.0445,
1208       0.0457, 0.0471, 0.0485, 0.0501, 0.0518, 0.0538, 0.0560, 0.0585, 0.0616,
1209       0.0652, 0.0698, 0.0759, 0.0846, 0.0983, 0.1226, 0.1742, 0.5225},
1210      {0.0650, 0.0650, 0.0652, 0.0655, 0.0658, 0.0663, 0.0669, 0.0676, 0.0685,
1211       0.0694, 0.0704, 0.0716, 0.0729, 0.0744, 0.0761, 0.0780, 0.0802, 0.0828,
1212       0.0860, 0.0899, 0.0950, 0.1020, 0.1130, 0.1334, 0.1809, 0.5444},
1213      {0.0929, 0.0929, 0.0922, 0.0921, 0.0923, 0.0928, 0.0934, 0.0941, 0.0950,
1214       0.0958, 0.0968, 0.0979, 0.0990, 0.1002, 0.1015, 0.1029, 0.1044, 0.1062,
1215       0.1080, 0.1101, 0.1126, 0.1155, 0.1192, 0.1241, 0.1312, 0.0000},
1216      {0.1688, 0.1657, 0.1518, 0.1450, 0.1409, 0.1382, 0.1366, 0.1357, 0.1352,
1217       0.1352, 0.1354, 0.1359, 0.1367, 0.1377, 0.1389, 0.1403, 0.1420, 0.1441,
1218       0.1465, 0.1495, 0.1532, 0.1580, 0.1643, 0.1736, 0.1902, 0.2919},
1219      {0.3413, 0.2191, 0.2052, 0.1981, 0.1936, 0.1905, 0.1883, 0.1869, 0.1860,
1220       0.1856, 0.1856, 0.1859, 0.1865, 0.1875, 0.1888, 0.1904, 0.1924, 0.1948,
1221       0.1977, 0.2011, 0.2054, 0.2107, 0.2175, 0.2272, 0.2440, 0.3413},
1222      {0.4016, 0.2716, 0.2576, 0.2505, 0.2459, 0.2428, 0.2406, 0.2392, 0.2383,
1223       0.2378, 0.2378, 0.2381, 0.2387, 0.2396, 0.2409, 0.2426, 0.2446, 0.2470,
1224       0.2500, 0.2535, 0.2578, 0.2631, 0.2700, 0.2796, 0.2964, 0.3877},
1225      {0.4388, 0.3240, 0.3100, 0.3029, 0.2983, 0.2952, 0.2931, 0.2916, 0.2907,
1226       0.2902, 0.2901, 0.2904, 0.2911, 0.2920, 0.2933, 0.2950, 0.2970, 0.2994,
1227       0.3024, 0.3059, 0.3102, 0.3155, 0.3224, 0.3319, 0.3486, 0.4320},
1228      {0.3580, 0.3764, 0.3625, 0.3554, 0.3509, 0.3477, 0.3455, 0.3440, 0.3431,
1229       0.3427, 0.3426, 0.3429, 0.3435, 0.3445, 0.3458, 0.3474, 0.3494, 0.3519,
1230       0.3548, 0.3583, 0.3626, 0.3679, 0.3747, 0.3843, 0.4008, 0.4768},
1231      {0.4023, 0.4289, 0.4150, 0.4079, 0.4033, 0.4002, 0.3980, 0.3965, 0.3956,
1232       0.3952, 0.3951, 0.3954, 0.3960, 0.3970, 0.3983, 0.3999, 0.4019, 0.4043,
1233       0.4072, 0.4107, 0.4150, 0.4203, 0.4271, 0.4367, 0.4530, 0.5228},
1234      {0.4334, 0.4815, 0.4676, 0.4604, 0.4559, 0.4527, 0.4506, 0.4491, 0.4482,
1235       0.4477, 0.4476, 0.4479, 0.4486, 0.4495, 0.4508, 0.4524, 0.4544, 0.4568,
1236       0.4597, 0.4632, 0.4675, 0.4728, 0.4796, 0.4890, 0.5052, 0.5699},
1237      {0.4695, 0.5341, 0.5202, 0.5130, 0.5085, 0.5053, 0.5032, 0.5017, 0.5008,
1238       0.5003, 0.5002, 0.5005, 0.5012, 0.5021, 0.5034, 0.5050, 0.5070, 0.5095,
1239       0.5123, 0.5158, 0.5200, 0.5253, 0.5321, 0.5415, 0.5576, 0.6179},
1240      {0.5905, 0.5868, 0.5729, 0.5657, 0.5612, 0.5580, 0.5559, 0.5544, 0.5535,
1241       0.5530, 0.5529, 0.5532, 0.5538, 0.5548, 0.5560, 0.5577, 0.5597, 0.5621,
1242       0.5649, 0.5684, 0.5726, 0.5779, 0.5846, 0.5940, 0.6099, 0.6666},
1243      {0.5940, 0.6307, 0.6254, 0.6185, 0.6141, 0.6108, 0.6086, 0.6071, 0.6062,
1244       0.6057, 0.6057, 0.6059, 0.6066, 0.6075, 0.6088, 0.6104, 0.6124, 0.6148,
1245       0.6176, 0.6211, 0.6253, 0.6306, 0.6373, 0.6465, 0.6623, 0.7156},
1246      {0.6986, 0.6924, 0.6784, 0.6713, 0.6667, 0.6636, 0.6614, 0.6599, 0.6590,
1247       0.6585, 0.6585, 0.6587, 0.6594, 0.6603, 0.6616, 0.6632, 0.6651, 0.6675,
1248       0.6704, 0.6739, 0.6781, 0.6833, 0.6900, 0.6992, 0.7147, 0.7651},
1249      {0.7449, 0.7453, 0.7312, 0.7242, 0.7196, 0.7165, 0.7143, 0.7128, 0.7119,
1250       0.7117, 0.7113, 0.7116, 0.7122, 0.7132, 0.7144, 0.7160, 0.7180, 0.7204,
1251       0.7233, 0.7267, 0.7309, 0.7361, 0.7427, 0.7519, 0.7672, 0.8151},
1252      {0.8011, 0.7982, 0.7843, 0.7772, 0.7726, 0.7694, 0.7673, 0.7658, 0.7649,
1253       0.7644, 0.7643, 0.7646, 0.7652, 0.7661, 0.7674, 0.7690, 0.7709, 0.7733,
1254       0.7763, 0.7796, 0.7838, 0.7890, 0.7956, 0.8046, 0.8198, 0.8656},
1255      {0.8261, 0.8513, 0.8374, 0.8302, 0.8256, 0.8225, 0.8203, 0.8188, 0.8179,
1256       0.8174, 0.8173, 0.8176, 0.8182, 0.8191, 0.8204, 0.8220, 0.8240, 0.8263,
1257       0.8292, 0.8326, 0.8367, 0.8419, 0.8485, 0.8575, 0.8725, 0.9163},
1258      {0.9145, 0.9043, 0.8905, 0.8834, 0.8788, 0.8756, 0.8734, 0.8720, 0.8710,
1259       0.8706, 0.8705, 0.8707, 0.8713, 0.8722, 0.8735, 0.8751, 0.8770, 0.8794,
1260       0.8822, 0.8856, 0.8898, 0.8949, 0.9015, 0.9104, 0.9252, 0.9674},
1261      {0.8915, 0.9576, 0.9437, 0.9365, 0.9320, 0.9288, 0.9267, 0.9251, 0.9242,
1262       0.9237, 0.9236, 0.9239, 0.9245, 0.9254, 0.9267, 0.9282, 0.9302, 0.9326,
1263       0.9354, 0.9388, 0.9429, 0.9480, 0.9545, 0.9635, 0.9781, 1.0188},
1264      {1.0290, 1.0109, 0.9970, 0.9898, 0.9852, 0.9821, 0.9799, 0.9784, 0.9775,
1265       0.9770, 0.9769, 0.9772, 0.9778, 0.9787, 0.9800, 0.9815, 0.9835, 0.9858,
1266       0.9886, 0.9920, 0.9961, 1.0012, 1.0077, 1.0165, 1.0310, 1.0705},
1267      {1.0470, 1.1170, 1.0503, 1.0431, 1.0386, 1.0354, 1.0333, 1.0318, 1.0308,
1268       1.0303, 1.0303, 1.0305, 1.0311, 1.0320, 1.0333, 1.0348, 1.0368, 1.0391,
1269       1.0419, 1.0453, 1.0494, 1.0545, 1.0609, 1.0697, 1.0840, 1.1223},
1270      {1.2284, 1.1176, 1.1037, 1.0966, 1.0922, 1.0889, 1.0867, 1.0852, 1.0842,
1271       1.0838, 1.0837, 1.0839, 1.0845, 1.0854, 1.0867, 1.0882, 1.0902, 1.0925,
1272       1.0953, 1.0987, 1.1028, 1.1078, 1.1143, 1.1230, 1.1371, 1.1744},
1273      {1.1548, 1.1712, 1.1572, 1.1501, 1.1455, 1.1424, 1.1402, 1.1387, 1.1377,
1274       1.1373, 1.1371, 1.1374, 1.1380, 1.1389, 1.1401, 1.1417, 1.1436, 1.1460,
1275       1.1488, 1.1521, 1.1562, 1.1613, 1.1676, 1.1763, 1.1903, 1.2267},
1276      {1.2050, 1.2248, 1.2108, 1.2037, 1.1991, 1.1959, 1.1937, 1.1922, 1.1913,
1277       1.1908, 1.1907, 1.1909, 1.1915, 1.1925, 1.1937, 1.1952, 1.1972, 1.1995,
1278       1.2023, 1.2056, 1.2097, 1.2147, 1.2211, 1.2297, 1.2436, 1.2791},
1279      {1.2799, 1.2784, 1.2644, 1.2573, 1.2527, 1.2495, 1.2473, 1.2458, 1.2449,
1280       1.2444, 1.2443, 1.2446, 1.2451, 1.2460, 1.2473, 1.2488, 1.2508, 1.2531,
1281       1.2559, 1.2592, 1.2633, 1.2683, 1.2746, 1.2833, 1.2970, 1.3317},
1282      {1.2857, 1.3320, 1.3181, 1.3109, 1.3063, 1.3032, 1.3010, 1.2995, 1.2986,
1283       1.2981, 1.2980, 1.2982, 1.2988, 1.2997, 1.3009, 1.3025, 1.3044, 1.3067,
1284       1.3095, 1.3129, 1.3169, 1.3219, 1.3283, 1.3368, 1.3505, 1.3845},
1285      {1.3924, 1.3856, 1.3718, 1.3646, 1.3601, 1.3569, 1.3547, 1.3532, 1.3523,
1286       1.3518, 1.3517, 1.3519, 1.3525, 1.3534, 1.3546, 1.3562, 1.3581, 1.3604,
1287       1.3632, 1.3665, 1.3706, 1.3756, 1.3819, 1.3904, 1.4041, 1.4375},
1288      {1.5732, 1.4395, 1.4255, 1.4184, 1.4138, 1.4107, 1.4085, 1.4070, 1.4060,
1289       1.4055, 1.4054, 1.4057, 1.4063, 1.4071, 1.4086, 1.4099, 1.4119, 1.4142,
1290       1.4170, 1.4203, 1.4243, 1.4293, 1.4356, 1.4441, 1.4576, 1.4906},
1291      {1.4352, 1.4933, 1.4793, 1.4722, 1.4676, 1.4644, 1.4623, 1.4607, 1.4598,
1292       1.4593, 1.4592, 1.4595, 1.4600, 1.4609, 1.4622, 1.4637, 1.4656, 1.4680,
1293       1.4707, 1.4741, 1.4781, 1.4831, 1.4894, 1.4979, 1.5113, 1.5439},
1294      {1.4933, 1.5471, 1.5332, 1.5260, 1.5214, 1.5183, 1.5161, 1.5146, 1.5136,
1295       1.5131, 1.5131, 1.5133, 1.5139, 1.5148, 1.5160, 1.5175, 1.5195, 1.5218,
1296       1.5247, 1.5279, 1.5319, 1.5369, 1.5432, 1.5516, 1.5650, 1.5973},
1297      {1.5709, 1.6010, 1.5870, 1.5798, 1.5753, 1.5721, 1.5699, 1.5684, 1.5675,
1298       1.5670, 1.5669, 1.5671, 1.5677, 1.5686, 1.5698, 1.5714, 1.5733, 1.5756,
1299       1.5784, 1.5817, 1.5857, 1.5907, 1.5970, 1.6054, 1.6188, 1.6509},
1300      {1.6675, 1.6548, 1.6408, 1.6337, 1.6291, 1.6259, 1.6238, 1.6223, 1.6213,
1301       1.6208, 1.6207, 1.6210, 1.6216, 1.6225, 1.6237, 1.6252, 1.6272, 1.6295,
1302       1.6322, 1.6356, 1.6396, 1.6445, 1.6508, 1.6593, 1.6727, 1.7046},
1303      {1.7042, 1.7087, 1.6947, 1.6876, 1.6830, 1.6798, 1.6776, 1.6761, 1.6752,
1304       1.6747, 1.6746, 1.6749, 1.6754, 1.6763, 1.6775, 1.6791, 1.6810, 1.6833,
1305       1.6861, 1.6894, 1.6935, 1.6984, 1.7047, 1.7132, 1.7265, 1.7584}};
1306
1307   if (fTimeStruct)  delete [] fTimeStruct;
1308   fTimeStruct  = new Float_t[ktimebin*kZbin];
1309
1310   for (Int_t ctrt = 0; ctrt<ktimebin; ctrt++)
1311     for (Int_t ctrz = 0; ctrz<kZbin; ctrz++) {
1312       if (fStaggeringOn) fTimeStruct[ctrt+ctrz*ktimebin] = stagg[ctrt][ctrz];
1313       else               fTimeStruct[ctrt+ctrz*ktimebin] = nonstagg[ctrt][ctrz];
1314     }
1315
1316 }
1317
1318 //_____________________________________________________________________________
1319 void AliTRDparameter::SamplePRF()
1320 {
1321   //
1322   // Samples the pad response function
1323   //
1324
1325   const Int_t kNplan  = AliTRDgeometry::kNplan;
1326   const Int_t kPRFbin = 61;
1327
1328   Float_t prf[kNplan][kPRFbin] = { {0.0267681, 0.031056,  0.036111,  0.0419945, 0.0489578,
1329                                     0.0571508, 0.0666984, 0.078064,  0.0912508, 0.106579,
1330                                     0.124429,  0.144803,  0.168187,  0.194645,  0.224143,
1331                                     0.25717,   0.293146,  0.331943,  0.373128,  0.415798,
1332                                     0.459149,  0.502028,  0.54349,   0.582109,  0.617335,
1333                                     0.648306,  0.674189,  0.695082,  0.710222,  0.719711,
1334                                     0.723751,  0.719711,  0.710222,  0.695082,  0.674189,
1335                                     0.648306,  0.617335,  0.582109,  0.54349,   0.502028,
1336                                     0.459149,  0.415798,  0.373128,  0.331943,  0.293146,
1337                                     0.25717,   0.224143,  0.194645,  0.168187,  0.144803,
1338                                     0.124429,  0.106579,  0.0912508, 0.078064,  0.0666984,
1339                                     0.0571508, 0.0489578, 0.0419945, 0.036111,  0.031056,
1340                                     0.0267681},
1341                                    {0.0240831, 0.0281427, 0.0328987, 0.0384801, 0.0451249,
1342                                     0.0530119, 0.0623139, 0.0733268, 0.0864095, 0.101704,
1343                                     0.119473,  0.140308,  0.164191,  0.191333,  0.222141,
1344                                     0.256551,  0.29433,   0.335294,  0.37892,   0.424206,
1345                                     0.470202,  0.515621,  0.559255,  0.600068,  0.636821,
1346                                     0.668836,  0.695767,  0.717076,  0.73233,   0.741818,
1347                                     0.745491,  0.741818,  0.73233,   0.717076,  0.695767,
1348                                     0.668836,  0.636821,  0.600068,  0.559255,  0.515621,
1349                                     0.470202,  0.424206,  0.37892,   0.335294,  0.29433,
1350                                     0.256551,  0.222141,  0.191333,  0.164191,  0.140308,
1351                                     0.119473,  0.101704,  0.0864095, 0.0733268, 0.0623139,
1352                                     0.0530119, 0.0451249, 0.0384801, 0.0328987, 0.0281427,
1353                                     0.0240831},
1354                                    {0.0206855, 0.0243011, 0.0285603, 0.0335902, 0.0396015,
1355                                     0.0467843, 0.0553424, 0.0655316, 0.0776688, 0.0921782,
1356                                     0.109269,  0.129259,  0.152459,  0.179369,  0.210091,
1357                                     0.244681,  0.283099,  0.325176,  0.370396,  0.417732,
1358                                     0.466086,  0.514192,  0.560518,  0.603805,  0.643028,
1359                                     0.67738,   0.706095,  0.728728,  0.745307,  0.755731,
1360                                     0.759954,  0.755731,  0.745307,  0.728728,  0.706095,
1361                                     0.67738,   0.643028,  0.603805,  0.560518,  0.514192,
1362                                     0.466086,  0.417732,  0.370396,  0.325176,  0.283099,
1363                                     0.244681,  0.210091,  0.179369,  0.152459,  0.129259,
1364                                     0.109269,  0.0921782, 0.0776688, 0.0655316, 0.0553424,
1365                                     0.0467843, 0.0396015, 0.0335902, 0.0285603, 0.0243011,
1366                                     0.0206855},
1367                                    {0.0186168, 0.0219999, 0.0260102, 0.0307769, 0.0364947,
1368                                     0.0433655, 0.0516213, 0.0615466, 0.0734611, 0.0877121,
1369                                     0.104666,  0.124855,  0.14853,   0.176033,  0.207639,
1370                                     0.243511,  0.283633,  0.327786,  0.37537,   0.425281,
1371                                     0.476227,  0.526727,  0.575268,  0.620462,  0.66101,
1372                                     0.69611,   0.725313,  0.748317,  0.764969,  0.775206,
1373                                     0.779006,  0.775206,  0.764969,  0.748317,  0.725313,
1374                                     0.69611,   0.66101,   0.620462,  0.575268,  0.526727,
1375                                     0.476227,  0.425281,  0.37537,   0.327786,  0.283633,
1376                                     0.243511,  0.207639,  0.176033,  0.14853,   0.124855,
1377                                     0.104666,  0.0877121, 0.0734611, 0.0615466, 0.0516213,
1378                                     0.0433655, 0.0364947, 0.0307769, 0.0260102, 0.0219999,
1379                                     0.0186168, },
1380                                    {0.0159737, 0.0189921, 0.0225916, 0.0268927, 0.0320634,
1381                                     0.0382995, 0.0458393, 0.0549765, 0.0660512, 0.0794439,
1382                                     0.095565,  0.114844,  0.137713,  0.164586,  0.195824,
1383                                     0.231681,  0.272223,  0.31727,   0.366248,  0.418078,
1384                                     0.471358,  0.524425,  0.575561,  0.623193,  0.666055,
1385                                     0.703243,  0.734192,  0.7586,    0.776331,  0.787347,
1386                                     0.791646,  0.787347,  0.776331,  0.7586,    0.734192,
1387                                     0.703243,  0.666055,  0.623193,  0.575561,  0.524425,
1388                                     0.471358,  0.418078,  0.366248,  0.31727,   0.272223,
1389                                     0.231681,  0.195824,  0.164586,  0.137713,  0.114844,
1390                                     0.095565,  0.0794439, 0.0660512, 0.0549765, 0.0458393,
1391                                     0.0382995, 0.0320634, 0.0268927, 0.0225916, 0.0189921,
1392                                     0.0159737},
1393                                    {0.0143532, 0.0171745, 0.0205622, 0.024635,  0.0295461,
1394                                     0.0354915, 0.0427198, 0.0515368, 0.0623058, 0.0754416,
1395                                     0.0913994, 0.110662,  0.133721,  0.161057,  0.193093,
1396                                     0.230138,  0.27229,   0.319327,  0.370597,  0.424961,
1397                                     0.480832,  0.536333,  0.589555,  0.638805,  0.682781,
1398                                     0.720621,  0.751845,  0.776243,  0.793764,  0.804426,
1399                                     0.808259,  0.804426,  0.793764,  0.776243,  0.751845,
1400                                     0.720621,  0.682781,  0.638805,  0.589555,  0.536333,
1401                                     0.480832,  0.424961,  0.370597,  0.319327,  0.27229,
1402                                     0.230138,  0.193093,  0.161057,  0.133721,  0.110662,
1403                                     0.0913994, 0.0754416, 0.0623058, 0.0515368, 0.0427198,
1404                                     0.0354915, 0.0295461, 0.024635,  0.0205622, 0.0171745,
1405                                     0.0143532} };
1406
1407   // More sampling precision with linear interpolation
1408   fPRFlo  = -1.5;
1409   fPRFhi  =  1.5;
1410   Float_t pad[kPRFbin];
1411   Int_t   sPRFbin = kPRFbin;  
1412   Float_t sPRFwid = (fPRFhi - fPRFlo) / ((Float_t) sPRFbin);
1413   for (Int_t iPad = 0; iPad < sPRFbin; iPad++) {
1414     pad[iPad] = ((Float_t) iPad + 0.5) * sPRFwid + fPRFlo;
1415   }
1416   fPRFbin = 500;  
1417   fPRFwid = (fPRFhi - fPRFlo) / ((Float_t) fPRFbin);
1418   fPRFpad = ((Int_t) (1.0 / fPRFwid));
1419
1420   if (fPRFsmp) delete [] fPRFsmp;
1421   fPRFsmp = new Float_t[kNplan*fPRFbin];
1422
1423   Int_t   ipos1;
1424   Int_t   ipos2;
1425   Float_t diff;
1426
1427   for (Int_t iPla = 0; iPla < kNplan; iPla++) {
1428
1429     for (Int_t iBin = 0; iBin < fPRFbin; iBin++) {
1430
1431       Float_t bin = (((Float_t) iBin) + 0.5) * fPRFwid + fPRFlo;
1432       ipos1 = ipos2 = 0;
1433       diff  = 0;
1434       do {
1435         diff = bin - pad[ipos2++];
1436       } while ((diff > 0) && (ipos2 < kPRFbin));
1437       if      (ipos2 == kPRFbin) {
1438         fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2-1];
1439       }
1440       else if (ipos2 == 1) {
1441         fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2-1];
1442       }
1443       else {
1444         ipos2--;
1445         if (ipos2 >= kPRFbin) ipos2 = kPRFbin - 1;
1446         ipos1 = ipos2 - 1;
1447         fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2] 
1448                                    + diff * (prf[iPla][ipos2] - prf[iPla][ipos1]) 
1449                                           / sPRFwid;
1450       }
1451
1452     }
1453   } 
1454
1455 }
1456
1457 //_____________________________________________________________________________
1458 void AliTRDparameter::FillLUT()
1459 {
1460   //
1461   // Create the LUT
1462   //
1463
1464   const Int_t kNplan = AliTRDgeometry::kNplan;
1465   const Int_t kNlut  = 128;
1466
1467   fLUTbin = kNplan * kNlut;
1468
1469   // The lookup table from Bogdan
1470   Float_t lut[kNplan][kNlut] = {  
1471     {
1472       0.0070, 0.0150, 0.0224, 0.0298, 0.0374, 0.0454, 0.0533, 0.0611, 
1473       0.0684, 0.0755, 0.0827, 0.0900, 0.0975, 0.1049, 0.1120, 0.1187, 
1474       0.1253, 0.1318, 0.1385, 0.1453, 0.1519, 0.1584, 0.1646, 0.1704, 
1475       0.1762, 0.1821, 0.1879, 0.1938, 0.1996, 0.2053, 0.2108, 0.2160, 
1476       0.2210, 0.2260, 0.2310, 0.2361, 0.2411, 0.2461, 0.2509, 0.2557, 
1477       0.2602, 0.2646, 0.2689, 0.2732, 0.2774, 0.2816, 0.2859, 0.2901, 
1478       0.2942, 0.2983, 0.3022, 0.3061, 0.3099, 0.3136, 0.3172, 0.3207, 
1479       0.3242, 0.3278, 0.3312, 0.3347, 0.3382, 0.3416, 0.3450, 0.3483, 
1480       0.3515, 0.3547, 0.3579, 0.3609, 0.3639, 0.3669, 0.3698, 0.3727, 
1481       0.3756, 0.3785, 0.3813, 0.3842, 0.3870, 0.3898, 0.3926, 0.3952, 
1482       0.3979, 0.4005, 0.4032, 0.4057, 0.4082, 0.4108, 0.4132, 0.4157, 
1483       0.4181, 0.4205, 0.4228, 0.4252, 0.4275, 0.4299, 0.4322, 0.4345, 
1484       0.4367, 0.4390, 0.4412, 0.4434, 0.4456, 0.4478, 0.4499, 0.4520, 
1485       0.4541, 0.4562, 0.4583, 0.4603, 0.4623, 0.4643, 0.4663, 0.4683, 
1486       0.4702, 0.4722, 0.4741, 0.4758, 0.4774, 0.4790, 0.4805, 0.4824, 
1487       0.4844, 0.4863, 0.4883, 0.4902, 0.4921, 0.4940, 0.4959, 0.4978 
1488     },
1489     {
1490       0.0072, 0.0156, 0.0235, 0.0313, 0.0394, 0.0478, 0.0561, 0.0642, 
1491       0.0718, 0.0792, 0.0868, 0.0947, 0.1025, 0.1101, 0.1172, 0.1241, 
1492       0.1309, 0.1378, 0.1449, 0.1518, 0.1586, 0.1650, 0.1710, 0.1770, 
1493       0.1830, 0.1891, 0.1952, 0.2011, 0.2070, 0.2125, 0.2177, 0.2229, 
1494       0.2280, 0.2332, 0.2383, 0.2435, 0.2484, 0.2533, 0.2581, 0.2627, 
1495       0.2670, 0.2714, 0.2757, 0.2799, 0.2842, 0.2884, 0.2927, 0.2968, 
1496       0.3008, 0.3048, 0.3086, 0.3123, 0.3159, 0.3195, 0.3231, 0.3266, 
1497       0.3301, 0.3335, 0.3370, 0.3404, 0.3438, 0.3471, 0.3504, 0.3536, 
1498       0.3567, 0.3598, 0.3628, 0.3657, 0.3686, 0.3715, 0.3744, 0.3772, 
1499       0.3800, 0.3828, 0.3856, 0.3884, 0.3911, 0.3938, 0.3965, 0.3991, 
1500       0.4016, 0.4042, 0.4067, 0.4092, 0.4116, 0.4140, 0.4164, 0.4187, 
1501       0.4211, 0.4234, 0.4257, 0.4280, 0.4302, 0.4325, 0.4347, 0.4369, 
1502       0.4391, 0.4413, 0.4434, 0.4456, 0.4477, 0.4497, 0.4518, 0.4538, 
1503       0.4558, 0.4578, 0.4598, 0.4618, 0.4637, 0.4656, 0.4675, 0.4694, 
1504       0.4713, 0.4732, 0.4750, 0.4766, 0.4781, 0.4797, 0.4813, 0.4832, 
1505       0.4851, 0.4870, 0.4888, 0.4906, 0.4925, 0.4942, 0.4960, 0.4978
1506     },
1507     {
1508       0.0075, 0.0163, 0.0246, 0.0328, 0.0415, 0.0504, 0.0592, 0.0674, 
1509       0.0753, 0.0832, 0.0914, 0.0996, 0.1077, 0.1154, 0.1225, 0.1296, 
1510       0.1369, 0.1442, 0.1515, 0.1585, 0.1652, 0.1714, 0.1776, 0.1839, 
1511       0.1902, 0.1965, 0.2025, 0.2085, 0.2141, 0.2194, 0.2247, 0.2299, 
1512       0.2352, 0.2405, 0.2457, 0.2507, 0.2557, 0.2604, 0.2649, 0.2693, 
1513       0.2737, 0.2780, 0.2823, 0.2867, 0.2909, 0.2951, 0.2992, 0.3033, 
1514       0.3072, 0.3110, 0.3146, 0.3182, 0.3218, 0.3253, 0.3288, 0.3323, 
1515       0.3357, 0.3392, 0.3426, 0.3459, 0.3492, 0.3524, 0.3555, 0.3586, 
1516       0.3616, 0.3645, 0.3674, 0.3703, 0.3731, 0.3759, 0.3787, 0.3815, 
1517       0.3843, 0.3870, 0.3897, 0.3925, 0.3950, 0.3976, 0.4002, 0.4027, 
1518       0.4052, 0.4076, 0.4101, 0.4124, 0.4148, 0.4171, 0.4194, 0.4217, 
1519       0.4239, 0.4262, 0.4284, 0.4306, 0.4328, 0.4350, 0.4371, 0.4393, 
1520       0.4414, 0.4435, 0.4455, 0.4476, 0.4496, 0.4516, 0.4536, 0.4555, 
1521       0.4575, 0.4594, 0.4613, 0.4632, 0.4650, 0.4669, 0.4687, 0.4705, 
1522       0.4723, 0.4741, 0.4758, 0.4773, 0.4789, 0.4804, 0.4821, 0.4839, 
1523       0.4857, 0.4875, 0.4893, 0.4910, 0.4928, 0.4945, 0.4961, 0.4978
1524     },
1525     {
1526       0.0078, 0.0171, 0.0258, 0.0345, 0.0438, 0.0532, 0.0624, 0.0708, 
1527       0.0791, 0.0875, 0.0962, 0.1048, 0.1130, 0.1206, 0.1281, 0.1356, 
1528       0.1432, 0.1508, 0.1582, 0.1651, 0.1716, 0.1780, 0.1845, 0.1910, 
1529       0.1975, 0.2038, 0.2099, 0.2155, 0.2210, 0.2263, 0.2317, 0.2371, 
1530       0.2425, 0.2477, 0.2528, 0.2578, 0.2626, 0.2671, 0.2715, 0.2759, 
1531       0.2803, 0.2846, 0.2890, 0.2933, 0.2975, 0.3016, 0.3056, 0.3095, 
1532       0.3132, 0.3168, 0.3204, 0.3239, 0.3274, 0.3309, 0.3344, 0.3378, 
1533       0.3412, 0.3446, 0.3479, 0.3511, 0.3543, 0.3574, 0.3603, 0.3633, 
1534       0.3662, 0.3690, 0.3718, 0.3747, 0.3774, 0.3802, 0.3829, 0.3857, 
1535       0.3883, 0.3910, 0.3936, 0.3962, 0.3987, 0.4012, 0.4037, 0.4061, 
1536       0.4085, 0.4109, 0.4132, 0.4155, 0.4177, 0.4200, 0.4222, 0.4244, 
1537       0.4266, 0.4288, 0.4309, 0.4331, 0.4352, 0.4373, 0.4394, 0.4414, 
1538       0.4435, 0.4455, 0.4475, 0.4494, 0.4514, 0.4533, 0.4552, 0.4571, 
1539       0.4590, 0.4608, 0.4626, 0.4645, 0.4662, 0.4680, 0.4698, 0.4715, 
1540       0.4733, 0.4750, 0.4766, 0.4781, 0.4796, 0.4812, 0.4829, 0.4846, 
1541       0.4863, 0.4880, 0.4897, 0.4914, 0.4930, 0.4946, 0.4963, 0.4979
1542     },
1543     {
1544       0.0081, 0.0178, 0.0270, 0.0364, 0.0463, 0.0562, 0.0656, 0.0744, 
1545       0.0831, 0.0921, 0.1013, 0.1102, 0.1183, 0.1261, 0.1339, 0.1419, 
1546       0.1499, 0.1576, 0.1648, 0.1715, 0.1782, 0.1849, 0.1917, 0.1984, 
1547       0.2048, 0.2110, 0.2167, 0.2223, 0.2278, 0.2333, 0.2389, 0.2444, 
1548       0.2497, 0.2548, 0.2598, 0.2645, 0.2691, 0.2735, 0.2780, 0.2824, 
1549       0.2868, 0.2912, 0.2955, 0.2997, 0.3038, 0.3078, 0.3116, 0.3152, 
1550       0.3188, 0.3224, 0.3259, 0.3294, 0.3329, 0.3364, 0.3398, 0.3432, 
1551       0.3465, 0.3497, 0.3529, 0.3561, 0.3591, 0.3620, 0.3649, 0.3677, 
1552       0.3705, 0.3733, 0.3761, 0.3788, 0.3816, 0.3843, 0.3869, 0.3896, 
1553       0.3922, 0.3948, 0.3973, 0.3998, 0.4022, 0.4047, 0.4070, 0.4094, 
1554       0.4117, 0.4139, 0.4162, 0.4184, 0.4206, 0.4227, 0.4249, 0.4270, 
1555       0.4291, 0.4313, 0.4334, 0.4354, 0.4375, 0.4395, 0.4415, 0.4435, 
1556       0.4455, 0.4474, 0.4493, 0.4512, 0.4531, 0.4550, 0.4568, 0.4586, 
1557       0.4604, 0.4622, 0.4639, 0.4657, 0.4674, 0.4691, 0.4708, 0.4725, 
1558       0.4742, 0.4758, 0.4773, 0.4788, 0.4803, 0.4819, 0.4836, 0.4852, 
1559       0.4869, 0.4885, 0.4901, 0.4917, 0.4933, 0.4948, 0.4964, 0.4979
1560     },
1561     {
1562       0.0085, 0.0189, 0.0288, 0.0389, 0.0497, 0.0603, 0.0699, 0.0792, 
1563       0.0887, 0.0985, 0.1082, 0.1170, 0.1253, 0.1336, 0.1421, 0.1505, 
1564       0.1587, 0.1662, 0.1733, 0.1803, 0.1874, 0.1945, 0.2014, 0.2081, 
1565       0.2143, 0.2201, 0.2259, 0.2316, 0.2374, 0.2431, 0.2487, 0.2541, 
1566       0.2593, 0.2642, 0.2689, 0.2735, 0.2781, 0.2826, 0.2872, 0.2917, 
1567       0.2961, 0.3003, 0.3045, 0.3086, 0.3125, 0.3162, 0.3198, 0.3235, 
1568       0.3270, 0.3306, 0.3342, 0.3377, 0.3411, 0.3446, 0.3479, 0.3511, 
1569       0.3543, 0.3575, 0.3605, 0.3634, 0.3663, 0.3691, 0.3720, 0.3748, 
1570       0.3775, 0.3803, 0.3830, 0.3857, 0.3884, 0.3911, 0.3937, 0.3962, 
1571       0.3987, 0.4012, 0.4036, 0.4060, 0.4084, 0.4107, 0.4129, 0.4152, 
1572       0.4174, 0.4196, 0.4218, 0.4239, 0.4261, 0.4282, 0.4303, 0.4324, 
1573       0.4344, 0.4365, 0.4385, 0.4405, 0.4425, 0.4445, 0.4464, 0.4483, 
1574       0.4502, 0.4521, 0.4539, 0.4558, 0.4576, 0.4593, 0.4611, 0.4629, 
1575       0.4646, 0.4663, 0.4680, 0.4697, 0.4714, 0.4730, 0.4747, 0.4759, 
1576       0.4769, 0.4780, 0.4790, 0.4800, 0.4811, 0.4827, 0.4843, 0.4859, 
1577       0.4874, 0.4889, 0.4905, 0.4920, 0.4935, 0.4950, 0.4965, 0.4979
1578     }
1579   }; 
1580
1581   if (fLUT) delete [] fLUT;
1582   fLUT = new Float_t[fLUTbin];
1583
1584   for (Int_t iplan = 0; iplan < kNplan; iplan++) {
1585     for (Int_t ilut  = 0; ilut  < kNlut; ilut++) {
1586       fLUT[iplan*kNlut+ilut] = lut[iplan][ilut];
1587     }
1588   }
1589
1590 }
1591
1592 //_____________________________________________________________________________
1593 void AliTRDparameter::SetTiltingAngle(Float_t v)
1594 {
1595   //
1596   // Set the tilting angle for the readout pads
1597   //
1598
1599   fTiltingAngle = TMath::Tan(TMath::Pi()/180.0 * v);
1600
1601 }
1602
1603 //_____________________________________________________________________________
1604 Float_t AliTRDparameter::GetTiltingAngle() const
1605 {
1606   //
1607   // Get the tilting angle for the readout pads
1608   //
1609
1610   return 180.0 / TMath::Pi() * TMath::ATan(fTiltingAngle);
1611
1612 }
1613
1614 //_____________________________________________________________________________
1615 Float_t AliTRDparameter::GetDiffusionL(Float_t vd, Float_t b)
1616 {
1617   //
1618   // Returns the longitudinal diffusion coefficient for a given drift 
1619   // velocity <vd> and a B-field <b> for Xe/CO2 (15%).
1620   // The values are according to a GARFIELD simulation.
1621   //
1622
1623   const Int_t kNb = 5;
1624   Float_t p0[kNb] = {  0.007440,  0.007493,  0.007513,  0.007672,  0.007831 };
1625   Float_t p1[kNb] = {  0.019252,  0.018912,  0.018636,  0.018012,  0.017343 };
1626   Float_t p2[kNb] = { -0.005042, -0.004926, -0.004867, -0.004650, -0.004424 };
1627   Float_t p3[kNb] = {  0.000195,  0.000189,  0.000195,  0.000182,  0.000169 };
1628
1629   Int_t ib = ((Int_t) (10 * (b - 0.15)));
1630   ib       = TMath::Max(  0,ib);
1631   ib       = TMath::Min(kNb,ib);
1632
1633   Float_t diff = p0[ib] 
1634                + p1[ib] * vd
1635                + p2[ib] * vd*vd
1636                + p3[ib] * vd*vd*vd;
1637
1638   return diff;
1639
1640 }
1641
1642 //_____________________________________________________________________________
1643 Float_t AliTRDparameter::GetDiffusionT(Float_t vd, Float_t b)
1644 {
1645   //
1646   // Returns the transverse diffusion coefficient for a given drift 
1647   // velocity <vd> and a B-field <b> for Xe/CO2 (15%).
1648   // The values are according to a GARFIELD simulation.
1649   //
1650
1651   const Int_t kNb = 5;
1652   Float_t p0[kNb] = {  0.009550,  0.009599,  0.009674,  0.009757,  0.009850 };
1653   Float_t p1[kNb] = {  0.006667,  0.006539,  0.006359,  0.006153,  0.005925 };
1654   Float_t p2[kNb] = { -0.000853, -0.000798, -0.000721, -0.000635, -0.000541 };
1655   Float_t p3[kNb] = {  0.000131,  0.000122,  0.000111,  0.000098,  0.000085 };
1656
1657   Int_t ib = ((Int_t) (10 * (b - 0.15)));
1658   ib       = TMath::Max(  0,ib);
1659   ib       = TMath::Min(kNb,ib);
1660
1661   Float_t diff = p0[ib] 
1662                + p1[ib] * vd
1663                + p2[ib] * vd*vd
1664                + p3[ib] * vd*vd*vd;
1665
1666   return diff;
1667
1668 }
1669
1670 //_____________________________________________________________________________
1671 Float_t AliTRDparameter::GetOmegaTau(Float_t vd, Float_t b)
1672 {
1673   //
1674   // Returns omega*tau (tan(Lorentz-angle)) for a given drift velocity <vd> 
1675   // and a B-field <b> for Xe/CO2 (15%).
1676   // The values are according to a GARFIELD simulation.
1677   //
1678
1679   const Int_t kNb = 5;
1680   Float_t p0[kNb] = {  0.004810,  0.007412,  0.010252,  0.013409,  0.016888 };
1681   Float_t p1[kNb] = {  0.054875,  0.081534,  0.107333,  0.131983,  0.155455 };
1682   Float_t p2[kNb] = { -0.008682, -0.012896, -0.016987, -0.020880, -0.024623 };
1683   Float_t p3[kNb] = {  0.000155,  0.000238,  0.000330,  0.000428,  0.000541 };
1684
1685   Int_t ib = ((Int_t) (10 * (b - 0.15)));
1686   ib       = TMath::Max(  0,ib);
1687   ib       = TMath::Min(kNb,ib);
1688
1689   Float_t alphaL = p0[ib] 
1690                  + p1[ib] * vd
1691                  + p2[ib] * vd*vd
1692                  + p3[ib] * vd*vd*vd;
1693
1694   return TMath::Tan(alphaL);
1695
1696 }
1697
1698 //_____________________________________________________________________________
1699 Double_t AliTRDparameter::LUTposition(Int_t iplane, Double_t ampL 
1700                                                   , Double_t ampC
1701                                                   , Double_t ampR) const
1702 {
1703   //
1704   // Calculates the cluster position using the lookup table.
1705   // Method provided by Bogdan Vulpescu.
1706   //
1707
1708   const Int_t kNplan = AliTRDgeometry::kNplan;
1709   const Int_t kNlut  = 128;
1710
1711   Double_t pos;
1712   Double_t x = 0.0;
1713   Double_t xmin;
1714   Double_t xmax;
1715   Double_t xwid;
1716
1717   Int_t    side = 0;
1718   Int_t    ix;
1719
1720   Double_t xMin[kNplan] = { 0.006492, 0.006377, 0.006258, 0.006144, 0.006030, 0.005980 };
1721   Double_t xMax[kNplan] = { 0.960351, 0.965870, 0.970445, 0.974352, 0.977667, 0.996101 };
1722
1723   if      (ampL > ampR) {
1724     x    = (ampL - ampR) / ampC;
1725     side = -1;
1726   } 
1727   else if (ampL < ampR) {
1728     x    = (ampR - ampL) / ampC;
1729     side = +1;
1730   }
1731
1732   if (ampL != ampR) {
1733
1734     xmin = xMin[iplane] + 0.000005;
1735     xmax = xMax[iplane] - 0.000005;
1736     xwid = (xmax - xmin) / 127.0;
1737
1738     if      (x < xmin) {
1739       pos = 0.0000;
1740     } 
1741     else if (x > xmax) {
1742       pos = side * 0.5000;
1743     } 
1744     else {
1745       ix  = (Int_t) ((x - xmin) / xwid);
1746       pos = side * fLUT[iplane*kNlut+ix];
1747     }
1748        
1749   } 
1750   else {
1751
1752     pos = 0.0;
1753
1754   }
1755
1756   return pos;
1757
1758 }