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