]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDRawStream.h
Complete rewrite of the FMD code.
[u/mrichter/AliRoot.git] / FMD / AliFMDRawStream.h
1 // -*- mode: c++ -*- 
2 //
3 // 
4 #ifndef ALIFMDRAWSTREAM_H
5 #define ALIFMDRAWSTREAM_H
6
7 #ifndef ALIALTRORAWSTREAM_H
8 # include <AliAltroRawStream.h>
9 #endif 
10
11
12 // TPC to FMD translations 
13 // 
14 //    TPC                FMD
15 //    ----------+-----------
16 //    pad+time  |      strip
17 //    row       |     sector
18 //    sector    |       ring
19 // 
20 class AliFMDRawStream : public AliAltroRawStream 
21 {
22 private:
23   UShort_t fSampleRate; // # of ALTRO samples per VA1_ALICE clock
24   // UChar_t* fMyData;
25   // Int_t    fMyPosition;
26   // Int_t    fMyCount;
27   // Int_t    fMyBunchLength;
28   Int_t    fPrevTime;
29 protected:
30   // UShort_t Get10BitWord(UChar_t* buffer, Int_t position) const;
31 public:
32   AliFMDRawStream(AliRawReader* reader);
33
34   Short_t Sector()      const { return fRow; }
35   Char_t  Ring()        const { return (fSector == 0 ? 'I' : 'O'); }
36   Short_t Strip()       const { return fPad + fTime / fSampleRate; }
37   Short_t PrevSector()  const { return fPrevRow; }
38   Char_t  PrevRing()    const { return (fPrevSector == 0 ? 'I' : 'O'); }
39   Short_t PrevStrip()   const { return fPrevPad + fPrevTime/fSampleRate; }
40
41   Bool_t  IsNewRing()   const { return (fSector != fPrevSector); }
42   Bool_t  IsNewSector() const { return (fRow != fPrevRow) || IsNewRing(); }
43   Bool_t  IsNewStrip()  const { return(Strip() != PrevStrip())||IsNewSector();}
44     
45   Short_t Count()      const { return fSignal; }
46   Short_t SampleRate() const { return fSampleRate; }
47   
48   virtual Bool_t   Next();
49   
50   ClassDef(AliFMDRawStream, 0) // Read raw FMD Altro data 
51 };
52
53 #endif