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 //