AliFMDRawStream.h

Go to the documentation of this file.
00001 #ifndef ALIFMDRAWSTREAM_H
00002 #define ALIFMDRAWSTREAM_H
00003 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
00004  * reserved. 
00005  *
00006  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
00007  *
00008  * See cxx source for full Copyright notice                               
00009  */
00010 #ifndef ALIALTRORAWSTREAM_H
00011 # include <AliAltroRawStream.h>
00012 #endif 
00013 
00014 
00015 // TPC to FMD translations 
00016 // 
00017 //    TPC                FMD
00018 //    ----------+-----------
00019 //    pad+time  |      strip
00020 //    row       |     sector
00021 //    sector    |       ring
00022 // 
00023 class AliFMDRawStream : public AliAltroRawStream 
00024 {
00025 public:
00026   AliFMDRawStream(AliRawReader* reader, UShort_t sampleRate=0);
00027   virtual ~AliFMDRawStream() {}
00028 
00029   Short_t Sector()      const { return fRow; }
00030   Char_t  Ring()        const { return (fSector == 0 ? 'I' : 'O'); }
00031   Short_t Strip()       const { return fPad + fTime / fSampleRate; }
00032   Short_t Sample()      const { return fTime % fSampleRate; }
00033   Short_t PrevSector()  const { return fPrevRow; }
00034   Char_t  PrevRing()    const { return (fPrevSector == 0 ? 'I' : 'O'); }
00035   Short_t PrevStrip()   const { return fPrevPad + fPrevTime/fSampleRate; }
00036     
00037   Bool_t  IsNewRing()   const { return (fSector != fPrevSector); }
00038   Bool_t  IsNewSector() const { return (fRow != fPrevRow) || IsNewRing(); }
00039   Bool_t  IsNewStrip()  const { return(Strip() != PrevStrip())||IsNewSector();}
00040     
00041   Short_t Count()       const { return fSignal; }
00042   Short_t SampleRate()  const { return fSampleRate; }
00043   
00044   virtual Bool_t Next();
00045   virtual Bool_t ReadChannel(UInt_t& addr, UInt_t& len, UShort_t* data);
00046   virtual Bool_t DumpData();
00047 protected:
00048   virtual Int_t    ReadIntoBuffer();
00049   virtual Int_t    ReadTrailer(UInt_t& head, UInt_t& len);
00050   virtual Int_t    ReadFillWords(UInt_t len);
00051   virtual Int_t    ReadBunch(UShort_t* data);
00052   virtual UShort_t Get10BitWord();
00053   
00054   UShort_t  fSampleRate;         // # of ALTRO samples per VA1_ALICE clock
00055   Int_t     fPrevTime;           // Last time bin
00056   Bool_t    fExplicitSampleRate; // True if the sample rate was set externally
00057   Int_t     fPos;
00058   Int_t     fCur;
00059   UChar_t*  fRead;
00060   ClassDef(AliFMDRawStream, 0) // Read raw FMD Altro data 
00061 };
00062 
00063 #endif
00064 //____________________________________________________________________
00065 //
00066 // Local Variables:
00067 //   mode: C++
00068 // End:
00069 //
00070 // EOF
00071 //

Generated on Fri Mar 24 17:11:21 2006 for ALICE FMD Off-line by  doxygen 1.4.6