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