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