]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/AliTPCBuffer160.h
Fix for transient fSDigits, AliITSRawStream classes adapted to changed AliRawReader...
[u/mrichter/AliRoot.git] / TPC / AliTPCBuffer160.h
CommitLineData
2e9f335b 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 AliTPCBUFFER160_H
18#define AliTPCBUFFER160_H
b62e2a95 19#ifdef __CINT__
20class fstream;
21#else
8569a2b0 22#include "Riostream.h"
b62e2a95 23#endif
24
8569a2b0 25
2e9f335b 26class AliTPCBuffer160:public TObject{
27public:
28 AliTPCBuffer160(){}//default constructor
29 AliTPCBuffer160(const char* fileName,Int_t flag);//constructor
30 virtual ~AliTPCBuffer160();//destructor
31 AliTPCBuffer160(const AliTPCBuffer160 &source); // copy constructor
32 AliTPCBuffer160& operator=(const AliTPCBuffer160 &source); // ass. op.
33 void FillBuffer(Int_t Val);
a79660fb 34 //this method store a word into the buffer
2e9f335b 35 Int_t GetFreeCellNumber()const{return fFreeCellBuffer;}
a79660fb 36 //this method return the number of free cells of the internal buffer
2e9f335b 37 Int_t GetNextBackWord();
a79660fb 38 //this method return the next word of 10 bit (reading the file backward) if it exists -1 otherwise
2e9f335b 39 Int_t GetNext();
a79660fb 40 //this method return the next word of 10 bit (reading the file forward) if it exists -1 otherwise
2e9f335b 41 void WriteTrailer(Int_t WordsNumber,Int_t PadNumber,Int_t RowNumber,Int_t SecNumber);
a79660fb 42 //this method is used to write the trailer
2e9f335b 43 void ReadTrailer(Int_t &WordsNumber,Int_t &PadNumber,Int_t &RowNumber,Int_t &SecNumber);
a79660fb 44 //this method is used to read the trailer when the file is read forward
2e9f335b 45 Int_t ReadTrailerBackward(Int_t &WordsNumber,Int_t &PadNumber,Int_t &RowNumber,Int_t &SecNumber);
a79660fb 46 //this method is used to read the trailer when the file is read backward
2e9f335b 47 void WriteMiniHeader(ULong_t Size,Int_t SecNumber,Int_t SubSector,Int_t Detector,Int_t Flag );
a79660fb 48 //this method is used to write the Mini header
49 void SetVerbose(Int_t val){fVerbose=val;}
50 //this method is used to set the verbose level
2e9f335b 51 //level 0 no output messages
52 //level !=0 some messages are displayed during the run
2e9f335b 53 void Flush();
a79660fb 54 //this method is used to fill the buffer with 2AA hexadecimal value and save it into the output file
55 Int_t GetFillWordsNum()const{return fEndingFillWords;}
2e9f335b 56private:
2e9f335b 57 void PackWord(ULong_t &BaseWord, ULong_t Word, Int_t StartBit, Int_t StopBit);
a79660fb 58 //this method is used to pack bits into a word of 32 bits
2e9f335b 59 void UnpackWord(ULong_t PackedWord, Int_t StartBit, Int_t StopBit, ULong_t &Word);
a79660fb 60 //this method is used to read a precise number of bits from a word of 32 bits
2e9f335b 61 ULong_t fBuffer[5]; //Buffer dimension is 32*5=160 bits and it contains 16 values
62 //A value is never splitted in two Buffer
63
64
a79660fb 65 Int_t fShift; //This variable contains the number of free bits in the current cell of
2e9f335b 66 //the Buffer after that the value Val is been inserted.
67 //size of Int_t is 32 bit that is the same size of a cell of Buffer so
a79660fb 68 //the shift operation are performed only on value Val.
2e9f335b 69 Int_t fCurrentCell; //This variable contains the cell number of the cell currently used
70 Int_t fFreeCellBuffer;//number of free cells of the buffer
71 Int_t fFlag; //0 read 1 write
72 Int_t fVerbose; //verbose level
73 fstream f; //logical name of the I/O file
7c27857f 74 Int_t fMaskBackward; //bit mask for backward reading of a file
2e9f335b 75 ULong_t fFilePosition;//'pointer' to the actual position in the file
76 ULong_t fFileEnd; //position of the last element of the file (File dimension)
77 ULong_t fMiniHeaderPos;//Mini header position
7c27857f 78 Int_t fEndingFillWords;//Few words at the end of the stream
2e9f335b 79 ClassDef(AliTPCBuffer160,1)
80};
81
82#endif