]>
Commit | Line | Data |
---|---|---|
5ca4e0a0 | 1 | /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. * |
2 | * See cxx source for full Copyright notice */ | |
3 | ||
4 | ///////////////////////////////////////////////////// | |
5 | // Class used for read-write the ALTRO data format // | |
6 | ///////////////////////////////////////////////////// | |
7 | ||
8 | /*This class is an interface between the altro format file and the | |
9 | user, and can be used in write or read mode | |
10 | In the write mode a new altro file is created and filled using the method FillBuffer(). | |
11 | The name of the file is specified as parameter in the constructor as well as the type mode. | |
12 | In the Read mode the specified file is open and the values can be read using the | |
13 | methods GetNext() and GetNextBackWord(). | |
14 | The first method is used to read the file forward while the second is used to read backward | |
15 | */ | |
16 | ||
17 | #ifndef AliALTROBUFFERV3_H | |
18 | #define AliALTROBUFFERV3_H | |
19 | ||
20 | #include "AliAltroBuffer.h" | |
21 | ||
22 | class AliAltroBufferV3: public AliAltroBuffer { | |
23 | public: | |
24 | AliAltroBufferV3(const char* fileName, AliAltroMapping *mapping = NULL); | |
25 | virtual ~AliAltroBufferV3(); | |
26 | ||
27 | virtual void FillBuffer(Int_t val); | |
28 | //this method stores a word into the buffer | |
29 | ||
30 | virtual void WriteTrailer(Int_t wordsNumber, Short_t hwAddress); | |
31 | //this method is used to write the trailer | |
32 | ||
b73dbf18 | 33 | virtual UChar_t WriteRCUTrailer(Int_t rcuId); |
5ca4e0a0 | 34 | //this method is used to write the RCU trailer |
35 | ||
38f5da76 | 36 | void SetFECERRA(UInt_t v) { fFECERRA = v; } |
37 | void SetFECERRB(UInt_t v) { fFECERRB = v; } | |
38 | void SetERRREG2(UInt_t v) { fERRREG2 = v; } | |
39 | void SetERRREG3(UInt_t v) { fERRREG3 = v; } | |
40 | void SetActiveFECsA(UShort_t m) { fActiveFECsA = m; } | |
41 | void SetActiveFECsB(UShort_t m) { fActiveFECsB = m; } | |
42 | void SetALTROCFG1(UInt_t cfg1) { fALTROCFG1 = cfg1; } | |
43 | void SetALTROCFG2(UInt_t cfg2) { fALTROCFG2 = cfg2; } | |
44 | void SetTSample(Double_t v) { fTSample = v; } | |
45 | void SetL1Phase(Double_t v) { fL1Phase = v; } | |
46 | ||
47 | void SetNChAddrMismatch(UShort_t v) { SetField(fERRREG3, 0, 0xFFF, v); } | |
48 | void SetNChLengthMismatch(UShort_t v) { SetField(fERRREG3, 12, 0x1FFF, v); } | |
49 | ||
50 | void SetBaselineCorr(UChar_t v) { SetField(fALTROCFG1, 0, 0xF, v); } | |
51 | void SetPolarity(Bool_t v) { SetField(fALTROCFG1, 4, 0x1, v); } | |
52 | void SetNPresamples(UChar_t v) { SetField(fALTROCFG1, 5, 0x3, v); } | |
53 | void SetNPostsamples(UChar_t v) { SetField(fALTROCFG1, 7, 0xF, v); } | |
54 | void SetSecondBaselineCorr(Bool_t v) { SetField(fALTROCFG1, 11, 0x1, v); } | |
55 | void SetGlitchFilter(UChar_t v) { SetField(fALTROCFG1, 12, 0x3, v); } | |
56 | void SetNNonZSPostsamples(UChar_t v) { SetField(fALTROCFG1, 14, 0x7, v); } | |
57 | void SetNNonZSPresamples(UChar_t v) { SetField(fALTROCFG1, 17, 0x3, v); } | |
58 | void SetZeroSupp(Bool_t v) { SetField(fALTROCFG1, 19, 0x1, v); } | |
59 | void SetNAltroBuffers(Bool_t v) { SetField(fALTROCFG2, 24, 0x1, v); } | |
60 | void SetNPretriggerSamples(UChar_t v) { SetField(fALTROCFG2, 20, 0xF, v); } | |
61 | void SetNSamplesPerCh(UShort_t v) { SetField(fALTROCFG2, 10, 0x3FF, v); } | |
62 | void SetSparseRO(Bool_t v) { SetField(fALTROCFG2, 9, 0x1, v); } | |
63 | ||
64 | ||
5ca4e0a0 | 65 | enum { kMaxWords = 1024 }; |
66 | ||
67 | protected: | |
38f5da76 | 68 | UInt_t SetField(UInt_t& input, UShort_t start, UInt_t mask, UInt_t val) const; |
5ca4e0a0 | 69 | void ReverseAndWrite(); |
70 | //this method reverse the altro data order and write the buffer to the file | |
71 | ||
72 | AliAltroBufferV3(const AliAltroBufferV3& source); | |
73 | AliAltroBufferV3& operator = (const AliAltroBufferV3& source); | |
74 | ||
75 | UShort_t fArray[kMaxWords]; // Temporary array needed in reverting data order | |
76 | Int_t fN; // Size of the temporary array | |
38f5da76 | 77 | UInt_t fFECERRA; // FECERRA |
78 | UInt_t fFECERRB; // FECERRB | |
79 | UInt_t fERRREG2; // ERRREG2 | |
80 | UInt_t fERRREG3; // ERRREG3 | |
81 | UShort_t fActiveFECsA;// ActiveFECsA | |
82 | UShort_t fActiveFECsB;// ActiveFECsB | |
83 | UInt_t fALTROCFG1; // ALTROCFG1 | |
84 | UInt_t fALTROCFG2; // ALTROCFG2 | |
85 | Double_t fTSample; // TSample | |
86 | Double_t fL1Phase; // L1Phase | |
5ca4e0a0 | 87 | |
88 | ClassDef(AliAltroBufferV3,0) // Interface to the Altro format | |
89 | }; | |
90 | ||
91 | #endif |