]> git.uio.no Git - u/mrichter/AliRoot.git/blob - RAW/AliAltroRawStreamFast.h
Script to create a random bad channel map.
[u/mrichter/AliRoot.git] / RAW / AliAltroRawStreamFast.h
1 #ifndef ALIALTRORAWSTREAMFAST_H
2 #define ALIALTRORAWSTREAMFAST_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 ///////////////////////////////////////////////////////////////////////////////
7 ///
8 /// This is a base class for reading raw data in Altro format.
9 /// It makes use of the fast altro decoder written by Per Thomas.
10 /// More information can be found in AliAltroDecoder class.
11 ///
12 ///////////////////////////////////////////////////////////////////////////////
13
14 #include <TObject.h>
15 #include <Riostream.h>
16
17 #include "AliRawReader.h"
18 #include "AliAltroDecoder.h"
19 #include "AliAltroData.h"
20 #include "AliAltroBunch.h"
21
22 class AliAltroRawStreamFast: public TObject {
23   public :
24     AliAltroRawStreamFast(AliRawReader* rawReader);
25     virtual ~AliAltroRawStreamFast();
26
27     void SelectRawData(Int_t detId);                           // Select raw data for specific detector id
28     void SelectRawData(const char *detName);                   // Select raw data for specific detector name
29
30     virtual void   Reset();
31     virtual Bool_t NextDDL();
32     virtual Bool_t NextChannel();
33     virtual Bool_t NextBunch();
34
35     Int_t  GetDDLNumberOld()   const { return fRawReader->GetDDLID();         } // Provide current DDL number
36     Int_t  GetDDLNumber()      const { return fDDLNumber;                     } // Provide current DDL number
37     Int_t  GetPrevDDLNumber()  const { return fPrevDDLNumber;                 } // Provide previous DDL number
38     Bool_t IsNewDDLNumber()    const { return (fDDLNumber != fPrevDDLNumber); }
39
40     Int_t  GetHWAddress()      const { return fData.GetHadd();                } // Provide current hardware address
41     Int_t  GetPrevHWAddress()  const { return fData.GetPrevHadd();            } // Provide previous hardware address
42     Bool_t IsNewHWAddress()    const { return fData.IsNewHadd() || IsNewDDLNumber(); }
43
44     UInt_t GetStartTimeBin()   const { return fBunch.GetStartTimeBin();       } // Provide the index if the first time-bin in current bunch
45     UInt_t GetEndTimeBin()     const { return fBunch.GetEndTimeBin();         } // Provide the index if the last time-bin in current bunch
46     const UInt_t* GetSignals() const { return fBunch.GetData();               } // Provide access to altro data itself
47
48
49   private :
50     AliAltroRawStreamFast& operator = (const AliAltroRawStreamFast& stream);
51     AliAltroRawStreamFast(const AliAltroRawStreamFast& stream);
52
53
54     Int_t            fDDLNumber;    // index of current DDL number
55     Int_t            fPrevDDLNumber;// index of previous DDL number
56
57     AliAltroDecoder  fDecoder;      // decoder for altro payload
58     AliAltroData     fData;         // container for altro payload
59     AliAltroBunch    fBunch;        // container for altro bunches
60
61     AliRawReader*    fRawReader;    // object for reading the raw data
62
63     ClassDef(AliAltroRawStreamFast, 0)  // base class for fast reading of Altro raw data
64 };
65
66 #endif