1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.5 2002/04/30 08:30:40 cblume
19 gAlice now only read by AliRunDigitizer. Therefore it is just deleted in AliTRDmerge.C
21 Revision 1.4 2002/04/12 12:13:23 cblume
24 Revision 1.3 2002/03/28 14:59:07 cblume
27 Revision 1.2 2002/03/28 10:00:36 hristov
28 Some additional initialisation
30 Revision 1.1 2002/03/25 20:01:18 cblume
31 Introduce parameter class
35 ///////////////////////////////////////////////////////////////////////////////
37 // TRD parameter class //
39 ///////////////////////////////////////////////////////////////////////////////
45 #include "AliTRDparameter.h"
46 #include "AliTRDgeometryFull.h"
48 ClassImp(AliTRDparameter)
50 //_____________________________________________________________________________
51 AliTRDparameter::AliTRDparameter():TNamed()
54 // AliTRDparameter default constructor
102 //_____________________________________________________________________________
103 AliTRDparameter::AliTRDparameter(const Text_t *name, const Text_t *title)
107 // AliTRDparameter constructor
110 fGeo = new AliTRDgeometryFull();
131 fDriftVelocity = 0.0;
158 //_____________________________________________________________________________
159 AliTRDparameter::AliTRDparameter(const AliTRDparameter &p)
162 // AliTRDparameter copy constructor
165 ((AliTRDparameter &) p).Copy(*this);
169 ///_____________________________________________________________________________
170 AliTRDparameter::~AliTRDparameter()
173 // AliTRDparameter destructor
203 //_____________________________________________________________________________
204 AliTRDparameter &AliTRDparameter::operator=(const AliTRDparameter &p)
207 // Assignment operator
210 if (this != &p) ((AliTRDparameter &) p).Copy(*this);
215 //_____________________________________________________________________________
216 void AliTRDparameter::Copy(TObject &p)
224 ((AliTRDparameter &) p).fGasGain = fGasGain;
225 ((AliTRDparameter &) p).fNoise = fNoise;
226 ((AliTRDparameter &) p).fChipGain = fChipGain;
227 ((AliTRDparameter &) p).fADCoutRange = fADCoutRange;
228 ((AliTRDparameter &) p).fADCinRange = fADCinRange;
229 ((AliTRDparameter &) p).fADCthreshold = fADCthreshold;
230 ((AliTRDparameter &) p).fDiffusionOn = fDiffusionOn;
231 ((AliTRDparameter &) p).fDiffusionT = fDiffusionT;
232 ((AliTRDparameter &) p).fDiffusionL = fDiffusionL;
233 ((AliTRDparameter &) p).fElAttachOn = fElAttachOn;
234 ((AliTRDparameter &) p).fElAttachProp = fElAttachProp;
235 ((AliTRDparameter &) p).fExBOn = fExBOn;
236 ((AliTRDparameter &) p).fOmegaTau = fOmegaTau;
237 ((AliTRDparameter &) p).fLorentzFactor = fLorentzFactor;
238 ((AliTRDparameter &) p).fDriftVelocity = fDriftVelocity;
239 ((AliTRDparameter &) p).fPadCoupling = fPadCoupling;
240 ((AliTRDparameter &) p).fTimeCoupling = fTimeCoupling;
241 ((AliTRDparameter &) p).fTimeBinWidth = fTimeBinWidth;
242 ((AliTRDparameter &) p).fField = fField;
243 ((AliTRDparameter &) p).fPRFOn = fPRFOn;
244 ((AliTRDparameter &) p).fTRFOn = fTRFOn;
245 ((AliTRDparameter &) p).fCTOn = fCTOn;
246 ((AliTRDparameter &) p).fTCOn = fTCOn;
247 ((AliTRDparameter &) p).fTiltingAngle = fTiltingAngle;
248 ((AliTRDparameter &) p).fPRFbin = fPRFbin;
249 ((AliTRDparameter &) p).fPRFlo = fPRFlo;
250 ((AliTRDparameter &) p).fPRFhi = fPRFhi;
251 ((AliTRDparameter &) p).fPRFwid = fPRFwid;
252 ((AliTRDparameter &) p).fPRFpad = fPRFpad;
253 if (((AliTRDparameter &) p).fPRFsmp) delete [] ((AliTRDparameter &) p).fPRFsmp;
254 ((AliTRDparameter &) p).fPRFsmp = new Float_t[fPRFbin];
255 for (iBin = 0; iBin < fPRFbin; iBin++) {
256 ((AliTRDparameter &) p).fPRFsmp[iBin] = fPRFsmp[iBin];
258 ((AliTRDparameter &) p).fTRFbin = fTRFbin;
259 ((AliTRDparameter &) p).fTRFlo = fTRFlo;
260 ((AliTRDparameter &) p).fTRFhi = fTRFhi;
261 ((AliTRDparameter &) p).fTRFwid = fTRFwid;
262 if (((AliTRDparameter &) p).fTRFsmp) delete [] ((AliTRDparameter &) p).fTRFsmp;
263 ((AliTRDparameter &) p).fTRFsmp = new Float_t[fTRFbin];
264 for (iBin = 0; iBin < fTRFbin; iBin++) {
265 ((AliTRDparameter &) p).fTRFsmp[iBin] = fTRFsmp[iBin];
267 if (((AliTRDparameter &) p).fCTsmp) delete [] ((AliTRDparameter &) p).fCTsmp;
268 ((AliTRDparameter &) p).fCTsmp = new Float_t[fTRFbin];
269 for (iBin = 0; iBin < fTRFbin; iBin++) {
270 ((AliTRDparameter &) p).fCTsmp[iBin] = fCTsmp[iBin];
272 ((AliTRDparameter &) p).fTCnexp = fTCnexp;
274 ((AliTRDparameter &) p).fLUTOn = fLUTOn;
275 ((AliTRDparameter &) p).fLUTbin = fLUTbin;
276 if (((AliTRDparameter &) p).fLUT) delete [] ((AliTRDparameter &) p).fLUT;
277 ((AliTRDparameter &) p).fLUT = new Float_t[fLUTbin];
278 for (iBin = 0; iBin < fLUTbin; iBin++) {
279 ((AliTRDparameter &) p).fLUT[iBin] = fLUT[iBin];
281 ((AliTRDparameter &) p).fClusMaxThresh = fClusMaxThresh;
282 ((AliTRDparameter &) p).fClusSigThresh = fClusSigThresh;
286 //_____________________________________________________________________________
287 void AliTRDparameter::Init()
290 // Initializes the parameter
292 // The maximum number of pads
293 // and the position of pad 0,0,0
295 // chambers seen from the top:
296 // +----------------------------+
302 // +----------------------------+ +------>
304 // chambers seen from the side: ^
305 // +----------------------------+ drift|
308 // +----------------------------+ +------>
311 // IMPORTANT: time bin 0 is now the first one in the drift region
312 // closest to the readout !!!
316 // ----------------------------------------------------------------------------
317 // The pad definition
318 // ----------------------------------------------------------------------------
321 // The pad size in column direction (rphi-direction)
322 SetColPadSize(0,0.65);
323 SetColPadSize(1,0.68);
324 SetColPadSize(2,0.71);
325 SetColPadSize(3,0.74);
326 SetColPadSize(4,0.77);
327 SetColPadSize(5,0.80);
329 // The pad row (z-direction)
332 // The number of time bins. Default is 100 ns timbin size
335 // Additional time bins before and after the drift region.
336 // Default is to only sample the drift region
337 SetExpandTimeBin(0,0);
340 // ----------------------------------------------------------------------------
341 // The digitization parameter
342 // ----------------------------------------------------------------------------
345 // The default parameter for the digitization
349 fADCoutRange = 1023.; // 10-bit ADC
350 fADCinRange = 1000.; // 1V input range
353 // The drift velocity (cm / mus)
354 fDriftVelocity = 1.5;
362 // Propability for electron attachment
366 // The pad response function
369 // The time response function
375 // The tail cancelation
378 // The number of exponentials
381 // The pad coupling factor (same number as for the TPC)
384 // The time coupling factor (same number as for the TPC)
387 // The tilting angle for the readout pads
388 //SetTiltingAngle(5.0);
389 SetTiltingAngle(0.0);
391 // The magnetic field strength in Tesla
392 //fField = 0.2 * gAlice->Field()->Factor();
396 // ----------------------------------------------------------------------------
397 // The clusterization parameter
398 // ----------------------------------------------------------------------------
401 // The default parameter for the clustering
412 //_____________________________________________________________________________
413 void AliTRDparameter::ReInit()
416 // Reinitializes the parameter class after a change
419 // Calculate the time bin width in ns
420 fTimeBinWidth = fTimeBinSize / fDriftVelocity * 1000.0;
422 // The range and the binwidth for the sampled TRF
424 // Start 0.2 mus before the signal
425 fTRFlo = -0.2 * fDriftVelocity;
426 // End the maximum driftlength after the signal
427 fTRFhi = AliTRDgeometry::DrThick()
428 + fTimeAfter * fTimeBinSize;
429 fTRFwid = (fTRFhi - fTRFlo) / ((Float_t) fTRFbin);
431 // Transverse and longitudinal diffusion coefficients (Xe/CO2)
432 fDiffusionT = GetDiffusionT(fDriftVelocity,fField);
433 fDiffusionL = GetDiffusionL(fDriftVelocity,fField);
435 // omega * tau.= tan(Lorentz-angle)
436 fOmegaTau = GetOmegaTau(fDriftVelocity,fField);
438 // The Lorentz factor
440 fLorentzFactor = 1.0 / (1.0 + fOmegaTau*fOmegaTau);
443 fLorentzFactor = 1.0;
446 // Create the sampled PRF
449 // Create the sampled TRF
457 //_____________________________________________________________________________
458 void AliTRDparameter::SetNRowPad(const Int_t p, const Int_t c, const Int_t npad)
461 // Redefines the number of pads in raw direction for
462 // a given plane and chamber number
465 for (Int_t isect = 0; isect < AliTRDgeometry::Nsect(); isect++) {
467 fRowMax[p][c][isect] = npad;
469 fRowPadSize[p][c][isect] = (fGeo->GetChamberLength(p,c)
470 - 2.* AliTRDgeometry::RpadW())
477 //_____________________________________________________________________________
478 void AliTRDparameter::SetNRowPad()
481 // Defines the number of pads in row direction
488 Int_t rowMax[kNplan][kNcham] = { { 16, 16, 12, 16, 16 }
489 , { 16, 16, 12, 16, 16 }
490 , { 16, 16, 12, 16, 16 }
491 , { 16, 16, 12, 16, 16 }
492 , { 14, 16, 12, 16, 14 }
493 , { 13, 16, 12, 16, 13 } };
495 Float_t rpadW = AliTRDgeometry::RpadW();
497 for (isect = 0; isect < kNsect; isect++) {
498 for (icham = 0; icham < kNcham; icham++) {
499 for (iplan = 0; iplan < kNplan; iplan++) {
501 fRowMax[iplan][icham][isect] = rowMax[iplan][icham];
503 fRowPadSize[iplan][icham][isect] = (fGeo->GetChamberLength(iplan,icham)
505 / ((Float_t) rowMax[iplan][icham]);
507 Float_t row0 = rpadW - fGeo->GetChamberLength(iplan,0)
508 - fGeo->GetChamberLength(iplan,1)
509 - fGeo->GetChamberLength(iplan,2) / 2.;
510 for (Int_t ic = 0; ic < icham; ic++) {
511 row0 += fGeo->GetChamberLength(iplan,icham);
513 fRow0[iplan][icham][isect] = row0;
521 //_____________________________________________________________________________
522 void AliTRDparameter::SetColPadSize(const Int_t p, const Float_t s)
525 // Redefines the pad size in column direction
528 Float_t cpadW = AliTRDgeometry::CpadW();
531 fCol0[p] = - fGeo->GetChamberWidth(p)/2. + cpadW;
532 fColMax[p] = ((Int_t) ((fGeo->GetChamberWidth(p) - 2.*cpadW) / s));
536 //_____________________________________________________________________________
537 void AliTRDparameter::SetNTimeBin(const Int_t nbin)
540 // Redefines the number of time bins in the drift region.
541 // The time bin width is defined by the length of the
542 // drift region divided by <nbin>.
546 fTimeBinSize = AliTRDgeometry::DrThick() / ((Float_t) fTimeMax);
547 for (Int_t iplan = 0; iplan < AliTRDgeometry::Nplan(); iplan++) {
548 fTime0[iplan] = AliTRDgeometry::Rmin()
549 + AliTRDgeometry::CraHght()
550 + AliTRDgeometry::CdrHght()
551 + iplan * (AliTRDgeometry::Cheight()
552 + AliTRDgeometry::Cspace());
557 //_____________________________________________________________________________
558 Float_t AliTRDparameter::CrossTalk(Float_t time) const
561 // Applies the pad-pad capacitive cross talk
564 Int_t iBin = ((Int_t) ((time - fTRFlo) / fTRFwid));
565 if ((iBin >= 0) && (iBin < fTRFbin)) {
574 //_____________________________________________________________________________
575 Int_t AliTRDparameter::Diffusion(Float_t driftlength, Float_t *xyz)
578 // Applies the diffusion smearing to the position of a single electron
581 Float_t driftSqrt = TMath::Sqrt(driftlength);
582 Float_t sigmaT = driftSqrt * fDiffusionT;
583 Float_t sigmaL = driftSqrt * fDiffusionL;
584 xyz[0] = gRandom->Gaus(xyz[0], sigmaL * fLorentzFactor);
585 xyz[1] = gRandom->Gaus(xyz[1], sigmaT * fLorentzFactor);
586 xyz[2] = gRandom->Gaus(xyz[2], sigmaT);
592 //_____________________________________________________________________________
593 Int_t AliTRDparameter::ExB(Float_t driftlength, Float_t *xyz) const
596 // Applies E x B effects to the position of a single electron
600 xyz[1] = xyz[1] + fOmegaTau * driftlength;
607 //_____________________________________________________________________________
608 Int_t AliTRDparameter::PadResponse(Float_t signal, Float_t dist
609 , Int_t plane, Float_t *pad) const
612 // Applies the pad response
615 const Int_t kNplan = AliTRDgeometry::kNplan;
617 Int_t iBin = ((Int_t) (( - dist - fPRFlo) / fPRFwid));
618 Int_t iOff = plane * fPRFbin;
620 Int_t iBin0 = iBin - fPRFpad + iOff;
621 Int_t iBin1 = iBin + iOff;
622 Int_t iBin2 = iBin + fPRFpad + iOff;
627 if ((iBin1 >= 0) && (iBin1 < (fPRFbin*kNplan))) {
630 pad[0] = signal * fPRFsmp[iBin0];
632 pad[1] = signal * fPRFsmp[iBin1];
633 if (iBin2 < (fPRFbin*kNplan)) {
634 pad[2] = signal * fPRFsmp[iBin2];
648 //_____________________________________________________________________________
649 Float_t AliTRDparameter::TimeResponse(Float_t time) const
652 // Applies the preamp shaper time response
655 Int_t iBin = ((Int_t) ((time - fTRFlo) / fTRFwid));
656 if ((iBin >= 0) && (iBin < fTRFbin)) {
657 return fTRFsmp[iBin];
665 //_____________________________________________________________________________
666 Float_t AliTRDparameter::Col0Tilted(Float_t col0, Float_t rowOffset
670 // Calculates col0 for tilted pads
673 Float_t diff = fTiltingAngle * rowOffset;
674 return (col0 + TMath::Power(-1.0,plane) * diff);
678 //_____________________________________________________________________________
679 void AliTRDparameter::SampleTRF()
682 // Samples the time response function
684 // New TRF from Venelin Angelov, simulated with CADENCE
685 // Pad-ground capacitance = 25 pF
686 // Pad-pad cross talk capacitance = 6 pF
693 const Int_t kNpasa = 252;
695 Float_t time[kNpasa] = { -0.220000, -0.210000, -0.200000, -0.190000
696 , -0.180000, -0.170000, -0.160000, -0.150000
697 , -0.140000, -0.130000, -0.120000, -0.110000
698 , -0.100000, -0.090000, -0.080000, -0.070000
699 , -0.060000, -0.050000, -0.040000, -0.030000
700 , -0.020000, -0.010000, -0.000000, 0.010000
701 , 0.020000, 0.030000, 0.040000, 0.050000
702 , 0.060000, 0.070000, 0.080000, 0.090000
703 , 0.100000, 0.110000, 0.120000, 0.130000
704 , 0.140000, 0.150000, 0.160000, 0.170000
705 , 0.180000, 0.190000, 0.200000, 0.210000
706 , 0.220000, 0.230000, 0.240000, 0.250000
707 , 0.260000, 0.270000, 0.280000, 0.290000
708 , 0.300000, 0.310000, 0.320000, 0.330000
709 , 0.340000, 0.350000, 0.360000, 0.370000
710 , 0.380000, 0.390000, 0.400000, 0.410000
711 , 0.420000, 0.430000, 0.440000, 0.450000
712 , 0.460000, 0.470000, 0.480000, 0.490000
713 , 0.500000, 0.510000, 0.520000, 0.530000
714 , 0.540000, 0.550000, 0.560000, 0.570000
715 , 0.580000, 0.590000, 0.600000, 0.610000
716 , 0.620000, 0.630000, 0.640000, 0.650000
717 , 0.660000, 0.670000, 0.680000, 0.690000
718 , 0.700000, 0.710000, 0.720000, 0.730000
719 , 0.740000, 0.750000, 0.760000, 0.770000
720 , 0.780000, 0.790000, 0.800000, 0.810000
721 , 0.820000, 0.830000, 0.840000, 0.850000
722 , 0.860000, 0.870000, 0.880000, 0.890000
723 , 0.900000, 0.910000, 0.920000, 0.930000
724 , 0.940000, 0.950000, 0.960000, 0.970000
725 , 0.980000, 0.990000, 1.000000, 1.010000
726 , 1.020000, 1.030000, 1.040000, 1.050000
727 , 1.060000, 1.070000, 1.080000, 1.090000
728 , 1.100000, 1.110000, 1.120000, 1.130000
729 , 1.140000, 1.150000, 1.160000, 1.170000
730 , 1.180000, 1.190000, 1.200000, 1.210000
731 , 1.220000, 1.230000, 1.240000, 1.250000
732 , 1.260000, 1.270000, 1.280000, 1.290000
733 , 1.300000, 1.310000, 1.320000, 1.330000
734 , 1.340000, 1.350000, 1.360000, 1.370000
735 , 1.380000, 1.390000, 1.400000, 1.410000
736 , 1.420000, 1.430000, 1.440000, 1.450000
737 , 1.460000, 1.470000, 1.480000, 1.490000
738 , 1.500000, 1.510000, 1.520000, 1.530000
739 , 1.540000, 1.550000, 1.560000, 1.570000
740 , 1.580000, 1.590000, 1.600000, 1.610000
741 , 1.620000, 1.630000, 1.640000, 1.650000
742 , 1.660000, 1.670000, 1.680000, 1.690000
743 , 1.700000, 1.710000, 1.720000, 1.730000
744 , 1.740000, 1.750000, 1.760000, 1.770000
745 , 1.780000, 1.790000, 1.800000, 1.810000
746 , 1.820000, 1.830000, 1.840000, 1.850000
747 , 1.860000, 1.870000, 1.880000, 1.890000
748 , 1.900000, 1.910000, 1.920000, 1.930000
749 , 1.940000, 1.950000, 1.960000, 1.970000
750 , 1.980000, 1.990000, 2.000000, 2.010000
751 , 2.020000, 2.030000, 2.040000, 2.050000
752 , 2.060000, 2.070000, 2.080000, 2.090000
753 , 2.100000, 2.110000, 2.120000, 2.130000
754 , 2.140000, 2.150000, 2.160000, 2.170000
755 , 2.180000, 2.190000, 2.200000, 2.210000
756 , 2.220000, 2.230000, 2.240000, 2.250000
757 , 2.260000, 2.270000, 2.280000, 2.290000 };
759 Float_t signal[kNpasa] = { 0.000000, 0.000000, 0.000000, 0.000000
760 , 0.000000, 0.000000, 0.000000, 0.000396
761 , 0.005096, 0.022877, 0.061891, 0.126614
762 , 0.215798, 0.324406, 0.444507, 0.566817
763 , 0.683465, 0.787089, 0.873159, 0.937146
764 , 0.979049, 0.999434, 1.000000, 0.983579
765 , 0.954134, 0.913364, 0.866365, 0.813703
766 , 0.759910, 0.706116, 0.653454, 0.603624
767 , 0.556625, 0.514156, 0.475085, 0.439977
768 , 0.408834, 0.380578, 0.355549, 0.333352
769 , 0.313647, 0.296093, 0.280351, 0.266195
770 , 0.253397, 0.241789, 0.231257, 0.221574
771 , 0.212627, 0.204417, 0.196772, 0.189581
772 , 0.182956, 0.176784, 0.171008, 0.165515
773 , 0.160419, 0.155606, 0.151076, 0.146716
774 , 0.142639, 0.138845, 0.135221, 0.131767
775 , 0.128482, 0.125368, 0.122424, 0.119592
776 , 0.116931, 0.114326, 0.111891, 0.109513
777 , 0.107248, 0.105096, 0.103058, 0.101019
778 , 0.099151, 0.097282, 0.095527, 0.093715
779 , 0.092129, 0.090544, 0.088958, 0.087429
780 , 0.086014, 0.084598, 0.083239, 0.081880
781 , 0.080634, 0.079388, 0.078143, 0.077010
782 , 0.075878, 0.074745, 0.073669, 0.072593
783 , 0.071574, 0.070612, 0.069649, 0.068686
784 , 0.067780, 0.066874, 0.066025, 0.065176
785 , 0.064326, 0.063533, 0.062684, 0.061948
786 , 0.061212, 0.060419, 0.059740, 0.059003
787 , 0.058324, 0.057644, 0.057022, 0.056342
788 , 0.055663, 0.055096, 0.054473, 0.053851
789 , 0.053284, 0.052718, 0.052152, 0.051585
790 , 0.051019, 0.050566, 0.050000, 0.049490
791 , 0.048981, 0.048528, 0.048018, 0.047508
792 , 0.047055, 0.046602, 0.046149, 0.045696
793 , 0.045300, 0.044904, 0.044451, 0.044054
794 , 0.043658, 0.043205, 0.042865, 0.042469
795 , 0.042072, 0.041733, 0.041336, 0.040997
796 , 0.040657, 0.040260, 0.039921, 0.039581
797 , 0.039241, 0.038958, 0.038618, 0.038335
798 , 0.037995, 0.037656, 0.037373, 0.037089
799 , 0.036806, 0.036467, 0.036183, 0.035900
800 , 0.035617, 0.035334, 0.035108, 0.034824
801 , 0.034541, 0.034315, 0.034032, 0.033805
802 , 0.033522, 0.033296, 0.033069, 0.032786
803 , 0.032559, 0.032333, 0.032106, 0.031880
804 , 0.031653, 0.031427, 0.031200, 0.030974
805 , 0.030804, 0.030578, 0.030351, 0.030125
806 , 0.029955, 0.029785, 0.029558, 0.029332
807 , 0.029162, 0.028992, 0.028766, 0.028596
808 , 0.028426, 0.028199, 0.028086, 0.027860
809 , 0.027746, 0.027633, 0.027463, 0.027293
810 , 0.027180, 0.027067, 0.026954, 0.026954
811 , 0.026840, 0.026727, 0.026727, 0.026614
812 , 0.026614, 0.026614, 0.026557, 0.026501
813 , 0.026501, 0.026501, 0.026501, 0.026501
814 , 0.026501, 0.026501, 0.026501, 0.026387
815 , 0.026387, 0.026387, 0.026387, 0.026387
816 , 0.026387, 0.026387, 0.026387, 0.026387
817 , 0.026387, 0.026387, 0.026387, 0.026387
818 , 0.026387, 0.026274, 0.026274, 0.026274
819 , 0.026274, 0.026274, 0.026274, 0.026274
820 , 0.026274, 0.026274, 0.026274, 0.026274
821 , 0.026274, 0.026274, 0.026274, 0.026161 };
823 Float_t xtalk[kNpasa] = { 0.000000, 0.000000, 0.000000, 0.000000
824 , 0.000000, 0.000000, 0.000000, 0.000113
825 , 0.000793, 0.003058, 0.007305, 0.013194
826 , 0.019706, 0.025821, 0.030634, 0.033465
827 , 0.034145, 0.032729, 0.029615, 0.025198
828 , 0.019989, 0.014496, 0.009003, 0.003964
829 , -0.000510, -0.004190, -0.007191, -0.009400
830 , -0.010872, -0.011835, -0.012288, -0.012288
831 , -0.012005, -0.011495, -0.010872, -0.010136
832 , -0.009343, -0.008607, -0.007871, -0.007191
833 , -0.006512, -0.005946, -0.005379, -0.004926
834 , -0.004473, -0.004077, -0.003737, -0.003398
835 , -0.003114, -0.002831, -0.002605, -0.002378
836 , -0.002208, -0.002039, -0.001869, -0.001699
837 , -0.001585, -0.001472, -0.001359, -0.001246
838 , -0.001132, -0.001019, -0.001019, -0.000906
839 , -0.000906, -0.000793, -0.000793, -0.000680
840 , -0.000680, -0.000680, -0.000566, -0.000566
841 , -0.000566, -0.000566, -0.000453, -0.000453
842 , -0.000453, -0.000453, -0.000453, -0.000453
843 , -0.000340, -0.000340, -0.000340, -0.000340
844 , -0.000340, -0.000340, -0.000340, -0.000340
845 , -0.000340, -0.000340, -0.000340, -0.000340
846 , -0.000340, -0.000227, -0.000227, -0.000227
847 , -0.000227, -0.000227, -0.000227, -0.000227
848 , -0.000227, -0.000227, -0.000227, -0.000227
849 , -0.000227, -0.000227, -0.000227, -0.000227
850 , -0.000227, -0.000227, -0.000227, -0.000227
851 , -0.000227, -0.000227, -0.000227, -0.000227
852 , -0.000227, -0.000227, -0.000227, -0.000227
853 , -0.000227, -0.000227, -0.000227, -0.000227
854 , -0.000227, -0.000227, -0.000227, -0.000227
855 , -0.000227, -0.000227, -0.000227, -0.000113
856 , -0.000113, -0.000113, -0.000113, -0.000113
857 , -0.000113, -0.000113, -0.000113, -0.000113
858 , -0.000113, -0.000113, -0.000113, -0.000113
859 , -0.000113, -0.000113, -0.000113, -0.000113
860 , -0.000113, -0.000113, -0.000113, -0.000113
861 , -0.000113, -0.000113, -0.000113, -0.000113
862 , -0.000113, -0.000113, -0.000113, -0.000113
863 , -0.000113, -0.000113, -0.000113, -0.000113
864 , -0.000113, -0.000113, -0.000113, -0.000113
865 , -0.000113, -0.000113, -0.000113, -0.000113
866 , -0.000113, -0.000113, -0.000113, -0.000113
867 , -0.000113, -0.000113, -0.000113, -0.000113
868 , -0.000113, -0.000113, -0.000113, -0.000113
869 , -0.000113, -0.000113, -0.000113, -0.000113
870 , -0.000113, -0.000113, -0.000113, -0.000113
871 , -0.000113, -0.000113, -0.000113, -0.000113
872 , -0.000113, -0.000113, -0.000113, -0.000113
873 , -0.000113, -0.000113, -0.000113, -0.000113
874 , -0.000113, -0.000113, -0.000113, -0.000113
875 , -0.000113, -0.000113, -0.000113, 0.000000
876 , 0.000000, 0.000000, 0.000000, 0.000000
877 , 0.000000, 0.000000, 0.000000, 0.000000
878 , 0.000000, 0.000000, 0.000000, 0.000000
879 , 0.000000, 0.000000, 0.000000, 0.000000
880 , 0.000000, 0.000000, 0.000000, 0.000000
881 , 0.000000, 0.000000, 0.000000, 0.000000
882 , 0.000000, 0.000000, 0.000000, 0.000000
883 , 0.000000, 0.000000, 0.000000, 0.000000
884 , 0.000000, 0.000000, 0.000000, 0.000000
885 , 0.000000, 0.000000, 0.000000, 0.000000 };
887 // increase CrossTalk to measurements
888 for (Int_t ipasa = 0; ipasa < kNpasa; ipasa++) {
889 xtalk[ipasa] *= 1.75;
892 if (fTRFsmp) delete [] fTRFsmp;
893 fTRFsmp = new Float_t[fTRFbin];
894 if (fCTsmp) delete [] fCTsmp;
895 fCTsmp = new Float_t[fTRFbin];
897 Float_t loTRF = TMath::Max(fTRFlo / fDriftVelocity,time[0]);
898 Float_t hiTRF = TMath::Min(fTRFhi / fDriftVelocity,time[kNpasa-1]);
899 Float_t binWidth = (hiTRF - loTRF) / ((Float_t) fTRFbin);
901 // Take the linear interpolation
902 for (Int_t iBin = 0; iBin < fTRFbin; iBin++) {
904 Float_t bin = (((Float_t) iBin) + 0.5) * binWidth + loTRF;
908 diff = bin - time[ipos2++];
911 if (ipos2 >= kNpasa) ipos2 = kNpasa - 1;
914 fTRFsmp[iBin] = signal[ipos2]
915 + diff * (signal[ipos2] - signal[ipos1])
916 / ( time[ipos2] - time[ipos1]);
918 fCTsmp[iBin] = xtalk[ipos2]
919 + diff * (xtalk[ipos2] - xtalk[ipos1])
920 / ( time[ipos2] - time[ipos1]);
926 //_____________________________________________________________________________
927 void AliTRDparameter::SamplePRF()
930 // Samples the pad response function
933 const Int_t kNplan = AliTRDgeometry::kNplan;
934 const Int_t kPRFbin = 61;
936 Float_t prf[kNplan][kPRFbin] = { { 0.018570, 0.022270, 0.026710, 0.032010
937 , 0.038350, 0.045920, 0.054930, 0.065650
938 , 0.078370, 0.093420, 0.111150, 0.131940
939 , 0.156160, 0.184160, 0.216220, 0.252470
940 , 0.292860, 0.337030, 0.384330, 0.433750
941 , 0.484010, 0.533630, 0.581150, 0.625200
942 , 0.664710, 0.698860, 0.727130, 0.749230
943 , 0.765050, 0.774540, 0.777700, 0.774540
944 , 0.765050, 0.749230, 0.727130, 0.698860
945 , 0.664710, 0.625200, 0.581150, 0.533630
946 , 0.484010, 0.433750, 0.384330, 0.337030
947 , 0.292860, 0.252470, 0.216220, 0.184160
948 , 0.156160, 0.131940, 0.111150, 0.093420
949 , 0.078370, 0.065650, 0.054930, 0.045920
950 , 0.038350, 0.032010, 0.026710, 0.022270
952 , { 0.015730, 0.019040, 0.023030, 0.027840
953 , 0.033650, 0.040650, 0.049060, 0.059160
954 , 0.071260, 0.085710, 0.102910, 0.123270
955 , 0.147240, 0.175220, 0.207590, 0.244540
956 , 0.286090, 0.331920, 0.381350, 0.433290
957 , 0.486290, 0.538710, 0.588870, 0.635280
958 , 0.676760, 0.712460, 0.741890, 0.764810
959 , 0.781150, 0.790930, 0.794180, 0.790930
960 , 0.781150, 0.764810, 0.741890, 0.712460
961 , 0.676760, 0.635280, 0.588870, 0.538710
962 , 0.486290, 0.433290, 0.381350, 0.331920
963 , 0.286090, 0.244540, 0.207590, 0.175220
964 , 0.147240, 0.123270, 0.102910, 0.085710
965 , 0.071260, 0.059160, 0.049060, 0.040650
966 , 0.033650, 0.027840, 0.023030, 0.019040
968 , { 0.013330, 0.016270, 0.019850, 0.024210
969 , 0.029510, 0.035960, 0.043790, 0.053280
970 , 0.064740, 0.078580, 0.095190, 0.115070
971 , 0.138700, 0.166570, 0.199120, 0.236660
972 , 0.279260, 0.326660, 0.378140, 0.432540
973 , 0.488260, 0.543440, 0.596200, 0.644900
974 , 0.688240, 0.725380, 0.755840, 0.779470
975 , 0.796260, 0.806280, 0.809610, 0.806280
976 , 0.796260, 0.779470, 0.755840, 0.725380
977 , 0.688240, 0.644900, 0.596200, 0.543440
978 , 0.488260, 0.432540, 0.378140, 0.326660
979 , 0.279260, 0.236660, 0.199120, 0.166570
980 , 0.138700, 0.115070, 0.095190, 0.078580
981 , 0.064740, 0.053280, 0.043790, 0.035960
982 , 0.029510, 0.024210, 0.019850, 0.016270
984 , { 0.011280, 0.013890, 0.017090, 0.021030
985 , 0.025870, 0.031800, 0.039060, 0.047940
986 , 0.058790, 0.071980, 0.087990, 0.107330
987 , 0.130550, 0.158220, 0.190850, 0.228870
988 , 0.272410, 0.321270, 0.374740, 0.431560
989 , 0.489960, 0.547870, 0.603180, 0.654080
990 , 0.699190, 0.737640, 0.769030, 0.793260
991 , 0.810410, 0.820620, 0.824010, 0.820620
992 , 0.810410, 0.793260, 0.769030, 0.737640
993 , 0.699190, 0.654080, 0.603180, 0.547870
994 , 0.489960, 0.431560, 0.374740, 0.321270
995 , 0.272410, 0.228870, 0.190850, 0.158220
996 , 0.130550, 0.107330, 0.087990, 0.071980
997 , 0.058790, 0.047940, 0.039060, 0.031800
998 , 0.025870, 0.021030, 0.017090, 0.013890
1000 , { 0.009550, 0.011860, 0.014720, 0.018270
1001 , 0.022660, 0.028100, 0.034820, 0.043120
1002 , 0.053340, 0.065900, 0.081280, 0.100040
1003 , 0.122800, 0.150180, 0.182800, 0.221170
1004 , 0.265550, 0.315790, 0.371180, 0.430370
1005 , 0.491430, 0.552030, 0.609840, 0.662860
1006 , 0.709630, 0.749290, 0.781490, 0.806220
1007 , 0.823650, 0.834000, 0.837430, 0.834000
1008 , 0.823650, 0.806220, 0.781490, 0.749290
1009 , 0.709630, 0.662860, 0.609840, 0.552030
1010 , 0.491430, 0.430370, 0.371180, 0.315790
1011 , 0.265550, 0.221170, 0.182800, 0.150180
1012 , 0.122800, 0.100040, 0.081280, 0.065900
1013 , 0.053340, 0.043120, 0.034820, 0.028100
1014 , 0.022660, 0.018270, 0.014720, 0.011860
1016 , { 0.008080, 0.010120, 0.012670, 0.015860
1017 , 0.019840, 0.024820, 0.031030, 0.038760
1018 , 0.048370, 0.060300, 0.075040, 0.093200
1019 , 0.115430, 0.142450, 0.174980, 0.213610
1020 , 0.258720, 0.310250, 0.367480, 0.429010
1021 , 0.492690, 0.555950, 0.616210, 0.671280
1022 , 0.719600, 0.760350, 0.793250, 0.818380
1023 , 0.836020, 0.846460, 0.849920, 0.846460
1024 , 0.836020, 0.818380, 0.793250, 0.760350
1025 , 0.719600, 0.671280, 0.616210, 0.555950
1026 , 0.492690, 0.429010, 0.367480, 0.310250
1027 , 0.258720, 0.213610, 0.174980, 0.142450
1028 , 0.115430, 0.093200, 0.075040, 0.060300
1029 , 0.048370, 0.038760, 0.031030, 0.024820
1030 , 0.019840, 0.015860, 0.012670, 0.010120
1033 // More sampling precision with linear interpolation
1036 Float_t pad[kPRFbin];
1037 Int_t sPRFbin = kPRFbin;
1038 Float_t sPRFwid = (fPRFhi - fPRFlo) / ((Float_t) sPRFbin);
1039 for (Int_t iPad = 0; iPad < sPRFbin; iPad++) {
1040 pad[iPad] = ((Float_t) iPad + 0.5) * sPRFwid + fPRFlo;
1043 fPRFwid = (fPRFhi - fPRFlo) / ((Float_t) fPRFbin);
1044 fPRFpad = ((Int_t) (1.0 / fPRFwid));
1046 if (fPRFsmp) delete [] fPRFsmp;
1047 fPRFsmp = new Float_t[kNplan*fPRFbin];
1053 for (Int_t iPla = 0; iPla < kNplan; iPla++) {
1055 for (Int_t iBin = 0; iBin < fPRFbin; iBin++) {
1057 Float_t bin = (((Float_t) iBin) + 0.5) * fPRFwid + fPRFlo;
1061 diff = bin - pad[ipos2++];
1062 } while ((diff > 0) && (ipos2 < kPRFbin));
1063 if (ipos2 == kPRFbin) {
1064 fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2-1];
1066 else if (ipos2 == 1) {
1067 fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2-1];
1071 if (ipos2 >= kPRFbin) ipos2 = kPRFbin - 1;
1073 fPRFsmp[iPla*fPRFbin+iBin] = prf[iPla][ipos2]
1074 + diff * (prf[iPla][ipos2] - prf[iPla][ipos1])
1083 //_____________________________________________________________________________
1084 void AliTRDparameter::FillLUT()
1090 const Int_t kNplan = AliTRDgeometry::kNplan;
1091 const Int_t kNlut = 128;
1093 fLUTbin = kNplan * kNlut;
1095 // The lookup table from Bogdan
1096 Float_t lut[kNplan][kNlut] = {
1098 0.0070, 0.0150, 0.0224, 0.0298, 0.0374, 0.0454, 0.0533, 0.0611,
1099 0.0684, 0.0755, 0.0827, 0.0900, 0.0975, 0.1049, 0.1120, 0.1187,
1100 0.1253, 0.1318, 0.1385, 0.1453, 0.1519, 0.1584, 0.1646, 0.1704,
1101 0.1762, 0.1821, 0.1879, 0.1938, 0.1996, 0.2053, 0.2108, 0.2160,
1102 0.2210, 0.2260, 0.2310, 0.2361, 0.2411, 0.2461, 0.2509, 0.2557,
1103 0.2602, 0.2646, 0.2689, 0.2732, 0.2774, 0.2816, 0.2859, 0.2901,
1104 0.2942, 0.2983, 0.3022, 0.3061, 0.3099, 0.3136, 0.3172, 0.3207,
1105 0.3242, 0.3278, 0.3312, 0.3347, 0.3382, 0.3416, 0.3450, 0.3483,
1106 0.3515, 0.3547, 0.3579, 0.3609, 0.3639, 0.3669, 0.3698, 0.3727,
1107 0.3756, 0.3785, 0.3813, 0.3842, 0.3870, 0.3898, 0.3926, 0.3952,
1108 0.3979, 0.4005, 0.4032, 0.4057, 0.4082, 0.4108, 0.4132, 0.4157,
1109 0.4181, 0.4205, 0.4228, 0.4252, 0.4275, 0.4299, 0.4322, 0.4345,
1110 0.4367, 0.4390, 0.4412, 0.4434, 0.4456, 0.4478, 0.4499, 0.4520,
1111 0.4541, 0.4562, 0.4583, 0.4603, 0.4623, 0.4643, 0.4663, 0.4683,
1112 0.4702, 0.4722, 0.4741, 0.4758, 0.4774, 0.4790, 0.4805, 0.4824,
1113 0.4844, 0.4863, 0.4883, 0.4902, 0.4921, 0.4940, 0.4959, 0.4978
1116 0.0072, 0.0156, 0.0235, 0.0313, 0.0394, 0.0478, 0.0561, 0.0642,
1117 0.0718, 0.0792, 0.0868, 0.0947, 0.1025, 0.1101, 0.1172, 0.1241,
1118 0.1309, 0.1378, 0.1449, 0.1518, 0.1586, 0.1650, 0.1710, 0.1770,
1119 0.1830, 0.1891, 0.1952, 0.2011, 0.2070, 0.2125, 0.2177, 0.2229,
1120 0.2280, 0.2332, 0.2383, 0.2435, 0.2484, 0.2533, 0.2581, 0.2627,
1121 0.2670, 0.2714, 0.2757, 0.2799, 0.2842, 0.2884, 0.2927, 0.2968,
1122 0.3008, 0.3048, 0.3086, 0.3123, 0.3159, 0.3195, 0.3231, 0.3266,
1123 0.3301, 0.3335, 0.3370, 0.3404, 0.3438, 0.3471, 0.3504, 0.3536,
1124 0.3567, 0.3598, 0.3628, 0.3657, 0.3686, 0.3715, 0.3744, 0.3772,
1125 0.3800, 0.3828, 0.3856, 0.3884, 0.3911, 0.3938, 0.3965, 0.3991,
1126 0.4016, 0.4042, 0.4067, 0.4092, 0.4116, 0.4140, 0.4164, 0.4187,
1127 0.4211, 0.4234, 0.4257, 0.4280, 0.4302, 0.4325, 0.4347, 0.4369,
1128 0.4391, 0.4413, 0.4434, 0.4456, 0.4477, 0.4497, 0.4518, 0.4538,
1129 0.4558, 0.4578, 0.4598, 0.4618, 0.4637, 0.4656, 0.4675, 0.4694,
1130 0.4713, 0.4732, 0.4750, 0.4766, 0.4781, 0.4797, 0.4813, 0.4832,
1131 0.4851, 0.4870, 0.4888, 0.4906, 0.4925, 0.4942, 0.4960, 0.4978
1134 0.0075, 0.0163, 0.0246, 0.0328, 0.0415, 0.0504, 0.0592, 0.0674,
1135 0.0753, 0.0832, 0.0914, 0.0996, 0.1077, 0.1154, 0.1225, 0.1296,
1136 0.1369, 0.1442, 0.1515, 0.1585, 0.1652, 0.1714, 0.1776, 0.1839,
1137 0.1902, 0.1965, 0.2025, 0.2085, 0.2141, 0.2194, 0.2247, 0.2299,
1138 0.2352, 0.2405, 0.2457, 0.2507, 0.2557, 0.2604, 0.2649, 0.2693,
1139 0.2737, 0.2780, 0.2823, 0.2867, 0.2909, 0.2951, 0.2992, 0.3033,
1140 0.3072, 0.3110, 0.3146, 0.3182, 0.3218, 0.3253, 0.3288, 0.3323,
1141 0.3357, 0.3392, 0.3426, 0.3459, 0.3492, 0.3524, 0.3555, 0.3586,
1142 0.3616, 0.3645, 0.3674, 0.3703, 0.3731, 0.3759, 0.3787, 0.3815,
1143 0.3843, 0.3870, 0.3897, 0.3925, 0.3950, 0.3976, 0.4002, 0.4027,
1144 0.4052, 0.4076, 0.4101, 0.4124, 0.4148, 0.4171, 0.4194, 0.4217,
1145 0.4239, 0.4262, 0.4284, 0.4306, 0.4328, 0.4350, 0.4371, 0.4393,
1146 0.4414, 0.4435, 0.4455, 0.4476, 0.4496, 0.4516, 0.4536, 0.4555,
1147 0.4575, 0.4594, 0.4613, 0.4632, 0.4650, 0.4669, 0.4687, 0.4705,
1148 0.4723, 0.4741, 0.4758, 0.4773, 0.4789, 0.4804, 0.4821, 0.4839,
1149 0.4857, 0.4875, 0.4893, 0.4910, 0.4928, 0.4945, 0.4961, 0.4978
1152 0.0078, 0.0171, 0.0258, 0.0345, 0.0438, 0.0532, 0.0624, 0.0708,
1153 0.0791, 0.0875, 0.0962, 0.1048, 0.1130, 0.1206, 0.1281, 0.1356,
1154 0.1432, 0.1508, 0.1582, 0.1651, 0.1716, 0.1780, 0.1845, 0.1910,
1155 0.1975, 0.2038, 0.2099, 0.2155, 0.2210, 0.2263, 0.2317, 0.2371,
1156 0.2425, 0.2477, 0.2528, 0.2578, 0.2626, 0.2671, 0.2715, 0.2759,
1157 0.2803, 0.2846, 0.2890, 0.2933, 0.2975, 0.3016, 0.3056, 0.3095,
1158 0.3132, 0.3168, 0.3204, 0.3239, 0.3274, 0.3309, 0.3344, 0.3378,
1159 0.3412, 0.3446, 0.3479, 0.3511, 0.3543, 0.3574, 0.3603, 0.3633,
1160 0.3662, 0.3690, 0.3718, 0.3747, 0.3774, 0.3802, 0.3829, 0.3857,
1161 0.3883, 0.3910, 0.3936, 0.3962, 0.3987, 0.4012, 0.4037, 0.4061,
1162 0.4085, 0.4109, 0.4132, 0.4155, 0.4177, 0.4200, 0.4222, 0.4244,
1163 0.4266, 0.4288, 0.4309, 0.4331, 0.4352, 0.4373, 0.4394, 0.4414,
1164 0.4435, 0.4455, 0.4475, 0.4494, 0.4514, 0.4533, 0.4552, 0.4571,
1165 0.4590, 0.4608, 0.4626, 0.4645, 0.4662, 0.4680, 0.4698, 0.4715,
1166 0.4733, 0.4750, 0.4766, 0.4781, 0.4796, 0.4812, 0.4829, 0.4846,
1167 0.4863, 0.4880, 0.4897, 0.4914, 0.4930, 0.4946, 0.4963, 0.4979
1170 0.0081, 0.0178, 0.0270, 0.0364, 0.0463, 0.0562, 0.0656, 0.0744,
1171 0.0831, 0.0921, 0.1013, 0.1102, 0.1183, 0.1261, 0.1339, 0.1419,
1172 0.1499, 0.1576, 0.1648, 0.1715, 0.1782, 0.1849, 0.1917, 0.1984,
1173 0.2048, 0.2110, 0.2167, 0.2223, 0.2278, 0.2333, 0.2389, 0.2444,
1174 0.2497, 0.2548, 0.2598, 0.2645, 0.2691, 0.2735, 0.2780, 0.2824,
1175 0.2868, 0.2912, 0.2955, 0.2997, 0.3038, 0.3078, 0.3116, 0.3152,
1176 0.3188, 0.3224, 0.3259, 0.3294, 0.3329, 0.3364, 0.3398, 0.3432,
1177 0.3465, 0.3497, 0.3529, 0.3561, 0.3591, 0.3620, 0.3649, 0.3677,
1178 0.3705, 0.3733, 0.3761, 0.3788, 0.3816, 0.3843, 0.3869, 0.3896,
1179 0.3922, 0.3948, 0.3973, 0.3998, 0.4022, 0.4047, 0.4070, 0.4094,
1180 0.4117, 0.4139, 0.4162, 0.4184, 0.4206, 0.4227, 0.4249, 0.4270,
1181 0.4291, 0.4313, 0.4334, 0.4354, 0.4375, 0.4395, 0.4415, 0.4435,
1182 0.4455, 0.4474, 0.4493, 0.4512, 0.4531, 0.4550, 0.4568, 0.4586,
1183 0.4604, 0.4622, 0.4639, 0.4657, 0.4674, 0.4691, 0.4708, 0.4725,
1184 0.4742, 0.4758, 0.4773, 0.4788, 0.4803, 0.4819, 0.4836, 0.4852,
1185 0.4869, 0.4885, 0.4901, 0.4917, 0.4933, 0.4948, 0.4964, 0.4979
1188 0.0085, 0.0189, 0.0288, 0.0389, 0.0497, 0.0603, 0.0699, 0.0792,
1189 0.0887, 0.0985, 0.1082, 0.1170, 0.1253, 0.1336, 0.1421, 0.1505,
1190 0.1587, 0.1662, 0.1733, 0.1803, 0.1874, 0.1945, 0.2014, 0.2081,
1191 0.2143, 0.2201, 0.2259, 0.2316, 0.2374, 0.2431, 0.2487, 0.2541,
1192 0.2593, 0.2642, 0.2689, 0.2735, 0.2781, 0.2826, 0.2872, 0.2917,
1193 0.2961, 0.3003, 0.3045, 0.3086, 0.3125, 0.3162, 0.3198, 0.3235,
1194 0.3270, 0.3306, 0.3342, 0.3377, 0.3411, 0.3446, 0.3479, 0.3511,
1195 0.3543, 0.3575, 0.3605, 0.3634, 0.3663, 0.3691, 0.3720, 0.3748,
1196 0.3775, 0.3803, 0.3830, 0.3857, 0.3884, 0.3911, 0.3937, 0.3962,
1197 0.3987, 0.4012, 0.4036, 0.4060, 0.4084, 0.4107, 0.4129, 0.4152,
1198 0.4174, 0.4196, 0.4218, 0.4239, 0.4261, 0.4282, 0.4303, 0.4324,
1199 0.4344, 0.4365, 0.4385, 0.4405, 0.4425, 0.4445, 0.4464, 0.4483,
1200 0.4502, 0.4521, 0.4539, 0.4558, 0.4576, 0.4593, 0.4611, 0.4629,
1201 0.4646, 0.4663, 0.4680, 0.4697, 0.4714, 0.4730, 0.4747, 0.4759,
1202 0.4769, 0.4780, 0.4790, 0.4800, 0.4811, 0.4827, 0.4843, 0.4859,
1203 0.4874, 0.4889, 0.4905, 0.4920, 0.4935, 0.4950, 0.4965, 0.4979
1207 if (fLUT) delete [] fLUT;
1208 fLUT = new Float_t[fLUTbin];
1210 for (Int_t iplan = 0; iplan < kNplan; iplan++) {
1211 for (Int_t ilut = 0; ilut < kNlut; ilut++) {
1212 fLUT[iplan*kNplan+ilut] = lut[iplan][ilut];
1218 //_____________________________________________________________________________
1219 void AliTRDparameter::SetTiltingAngle(Float_t v)
1222 // Set the tilting angle for the readout pads
1225 fTiltingAngle = TMath::Tan(TMath::Pi()/180.0 * v);
1229 //_____________________________________________________________________________
1230 Float_t AliTRDparameter::GetTiltingAngle() const
1233 // Get the tilting angle for the readout pads
1236 return TMath::ATan(180.0/TMath::Pi() * fTiltingAngle);
1240 //_____________________________________________________________________________
1241 Float_t AliTRDparameter::GetDiffusionL(Float_t vd, Float_t b)
1244 // Returns the longitudinal diffusion coefficient for a given drift
1245 // velocity <vd> and a B-field <b> for Xe/CO2 (15%).
1246 // The values are according to a GARFIELD simulation.
1249 const Int_t kNb = 5;
1250 Float_t p0[kNb] = { 0.007440, 0.007493, 0.007513, 0.007672, 0.007831 };
1251 Float_t p1[kNb] = { 0.019252, 0.018912, 0.018636, 0.018012, 0.017343 };
1252 Float_t p2[kNb] = { -0.005042, -0.004926, -0.004867, -0.004650, -0.004424 };
1253 Float_t p3[kNb] = { 0.000195, 0.000189, 0.000195, 0.000182, 0.000169 };
1255 Int_t ib = ((Int_t) (10 * (b - 0.15)));
1256 ib = TMath::Max( 0,ib);
1257 ib = TMath::Min(kNb,ib);
1259 Float_t diff = p0[ib]
1262 + p3[ib] * vd*vd*vd;
1268 //_____________________________________________________________________________
1269 Float_t AliTRDparameter::GetDiffusionT(Float_t vd, Float_t b)
1272 // Returns the transverse diffusion coefficient for a given drift
1273 // velocity <vd> and a B-field <b> for Xe/CO2 (15%).
1274 // The values are according to a GARFIELD simulation.
1277 const Int_t kNb = 5;
1278 Float_t p0[kNb] = { 0.009550, 0.009599, 0.009674, 0.009757, 0.009850 };
1279 Float_t p1[kNb] = { 0.006667, 0.006539, 0.006359, 0.006153, 0.005925 };
1280 Float_t p2[kNb] = { -0.000853, -0.000798, -0.000721, -0.000635, -0.000541 };
1281 Float_t p3[kNb] = { 0.000131, 0.000122, 0.000111, 0.000098, 0.000085 };
1283 Int_t ib = ((Int_t) (10 * (b - 0.15)));
1284 ib = TMath::Max( 0,ib);
1285 ib = TMath::Min(kNb,ib);
1287 Float_t diff = p0[ib]
1290 + p3[ib] * vd*vd*vd;
1296 //_____________________________________________________________________________
1297 Float_t AliTRDparameter::GetOmegaTau(Float_t vd, Float_t b)
1300 // Returns omega*tau (tan(Lorentz-angle)) for a given drift velocity <vd>
1301 // and a B-field <b> for Xe/CO2 (15%).
1302 // The values are according to a GARFIELD simulation.
1305 const Int_t kNb = 5;
1306 Float_t p0[kNb] = { 0.004810, 0.007412, 0.010252, 0.013409, 0.016888 };
1307 Float_t p1[kNb] = { 0.054875, 0.081534, 0.107333, 0.131983, 0.155455 };
1308 Float_t p2[kNb] = { -0.008682, -0.012896, -0.016987, -0.020880, -0.024623 };
1309 Float_t p3[kNb] = { 0.000155, 0.000238, 0.000330, 0.000428, 0.000541 };
1311 Int_t ib = ((Int_t) (10 * (b - 0.15)));
1312 ib = TMath::Max( 0,ib);
1313 ib = TMath::Min(kNb,ib);
1315 Float_t alphaL = p0[ib]
1318 + p3[ib] * vd*vd*vd;
1320 return TMath::Tan(alphaL);
1324 //_____________________________________________________________________________
1325 Double_t AliTRDparameter::LUTposition(Int_t iplane, Double_t ampL
1327 , Double_t ampR) const
1330 // Calculates the cluster position using the lookup table.
1331 // Method provided by Bogdan Vulpescu.
1334 const Int_t kNplan = AliTRDgeometry::kNplan;
1345 Double_t xMin[kNplan] = { 0.006492, 0.006377, 0.006258, 0.006144, 0.006030, 0.005980 };
1346 Double_t xMax[kNplan] = { 0.960351, 0.965870, 0.970445, 0.974352, 0.977667, 0.996101 };
1349 x = (ampL - ampR) / ampC;
1352 else if (ampL < ampR) {
1353 x = (ampR - ampL) / ampC;
1359 xmin = xMin[iplane] + 0.000005;
1360 xmax = xMax[iplane] - 0.000005;
1361 xwid = (xmax - xmin) / 127.0;
1366 else if (x > xmax) {
1367 pos = side * 0.5000;
1370 ix = (Int_t) ((x - xmin) / xwid);
1371 pos = side * fLUT[iplane*kNplan+ix];