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