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