3 // Author: Anders Vestbo <mailto:vestbo@fi.uib.no>
4 //*-- Copyright © ALICE HLT Group
6 #include "AliL3StandardIncludes.h"
8 #include "AliL3RootTypes.h"
9 #include "AliL3Transform.h"
11 #include "AliL3DataCompressorHelper.h"
17 //_____________________________________________________________
19 // AliL3DataCompression
21 // Interface class; binary <-> AliROOT handling of TPC data compression classes.
25 ClassImp(AliL3DataCompressorHelper)
28 Int_t AliL3DataCompressorHelper::fNumTimeBits = 12;
29 Int_t AliL3DataCompressorHelper::fNumPadBits = 12;
30 Int_t AliL3DataCompressorHelper::fNumChargeBits = 14;
31 Int_t AliL3DataCompressorHelper::fNumShapeBits = 14;
32 Float_t AliL3DataCompressorHelper::fXYResidualStep1 = 0.03;
33 Float_t AliL3DataCompressorHelper::fXYResidualStep2 = 0.03;
34 Float_t AliL3DataCompressorHelper::fXYResidualStep3 = 0.03;
35 Float_t AliL3DataCompressorHelper::fZResidualStep1 = 0.05;
36 Float_t AliL3DataCompressorHelper::fZResidualStep2 = 0.05;
37 Float_t AliL3DataCompressorHelper::fZResidualStep3 = 0.05;
38 Float_t AliL3DataCompressorHelper::fXYWidthStep = 0.005;
39 Float_t AliL3DataCompressorHelper::fZWidthStep = 0.005;
40 Int_t AliL3DataCompressorHelper::fClusterCharge = 100;
41 Int_t AliL3DataCompressorHelper::fNumPadBitsRemaining = 18;
42 Int_t AliL3DataCompressorHelper::fNumTimeBitsRemaining = 19;
43 Int_t AliL3DataCompressorHelper::fNumShapeBitsRemaining = 11;
45 void AliL3DataCompressorHelper::SetBitNumbers(Int_t pad,Int_t time,Int_t charge,Int_t shape)
49 fNumChargeBits = charge;
50 fNumShapeBits = shape;
53 void AliL3DataCompressorHelper::SetTransverseResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width)
55 fXYResidualStep1 = res1;
56 fXYResidualStep2 = res2;
57 fXYResidualStep3 = res3;
61 void AliL3DataCompressorHelper::SetLongitudinalResolutions(Float_t res1,Float_t res2,Float_t res3,Float_t width)
63 fZResidualStep1 = res1;
64 fZResidualStep2 = res2;
65 fZResidualStep3 = res3;
69 void AliL3DataCompressorHelper::SetRemainingBitNumbers(Int_t pad,Int_t time,Int_t shape)
71 fNumPadBitsRemaining = pad;
72 fNumTimeBitsRemaining = time;
73 fNumShapeBitsRemaining = shape;
76 const Float_t AliL3DataCompressorHelper::GetXYResidualStep(Int_t row)
78 if(row < AliL3Transform::GetNRowLow())
79 return fXYResidualStep1;
80 else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1())
81 return fXYResidualStep2;
82 else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1() + AliL3Transform::GetNRowUp2())
83 return fXYResidualStep3;
86 cerr<<"AliL3DataCompressorHelper::GetXYResidualStep : Wrong row number "<<row<<endl;
91 const Float_t AliL3DataCompressorHelper::GetZResidualStep(Int_t row)
93 if(row < AliL3Transform::GetNRowLow())
94 return fZResidualStep1;
95 else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1())
96 return fZResidualStep2;
97 else if(row < AliL3Transform::GetNRowLow() + AliL3Transform::GetNRowUp1() + AliL3Transform::GetNRowUp2())
98 return fZResidualStep3;
101 cerr<<"AliL3DataCompressorHelper::GetXYResidualStep : Wrong row number "<<row<<endl;
106 const Float_t AliL3DataCompressorHelper::GetPadPrecisionFactor()
108 Int_t nbits = fNumPadBitsRemaining;
121 cerr<<"AliL3DataCompressorHelper::GetRemainingPadFactor : Too few bits for the pad direction: "<<nbits<<endl;
126 const Float_t AliL3DataCompressorHelper::GetTimePrecisionFactor()
128 Int_t nbits = fNumTimeBitsRemaining;
141 cerr<<"AliL3DataCompressorHelper::GetRemainingPadFactor : Too few bits for the pad direction: "<<nbits<<endl;