AliITSRawStreamSDD& operator=(const AliITSRawStreamSDD& rs);
virtual ~AliITSRawStreamSDD();
+ static UChar_t ReadBlockAttributes(AliRawReader* rawReader);
+ static UInt_t ReadAMSamplFreqFromCDH(UChar_t cdhAttr){
+ if(cdhAttr&0x10) return 40;
+ else return 20;
+ }
+ static AliITSRawStream* CreateRawStreamSDD(AliRawReader* rawReader, UChar_t attributes);
+ static AliITSRawStream* CreateRawStreamSDD(AliRawReader* rawReader);
+
virtual Bool_t Next();
virtual Int_t GetAnode() const {return fCoord1;}
virtual Int_t GetTime() const {return fCoord2;}
virtual Int_t GetChannel() const {return fChannel;}
- virtual Int_t ReadJitter() const {return 0;}
+ virtual Int_t GetEightBitSignal() const {return fEightBitSignal;}
virtual Int_t GetCarlosId() const {return fCarlosId;}
virtual Int_t GetEventId() const {return fEventId;}
+ virtual Int_t GetJitter() const {return fJitter;}
- virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){fDDLModuleMap->SetDDLMap(ddlsdd);}
- virtual void SetLowCarlosThreshold(Int_t th, Int_t i)
- {fLowThreshold[i]=th;}
+
+ virtual void SetDecompressAmbra(Bool_t deco=kTRUE){
+ fDecompressAmbra=deco;
+ }
+ virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
+ if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
+ fDDLModuleMap->SetDDLMap(ddlsdd);
+ }
virtual void SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th)
{fLowThresholdArray[iMod][iSid]=th;}
- virtual void SetNCarlos(Int_t nC=12){fNCarlos=nC;}
Int_t GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
+ if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
}
virtual void Reset();
AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number
UInt_t fData; // data read for file
- Int_t fSkip[kDDLsNumber];// obsolete -- needed to compile AliITSRawStreamSDDv2
+ Bool_t fResetSkip; // flag for end of DDL data
+
Int_t fEventId; // event ID from header
Int_t fCarlosId; // carlos ID
Int_t fChannel; // current channel
Bool_t fReadCode[kModulesPerDDL][2]; // next bits are code or data
UInt_t fReadBits[kModulesPerDDL][2]; // number of bits to read
Int_t fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules
- Int_t fLowThreshold[2]; // obsolete -- needed to compile AliITSRawStreamSDDv2
- Int_t fNCarlos; // number of Carlos
+
Int_t fNfifo[kFifoWords]; // FIFO number
Int_t fTimeBin[kModulesPerDDL][2]; // current timebin [ncarlos][nchannels]
Int_t fAnode[kModulesPerDDL][2]; // current anode [ncarlos][nchannels]
- Int_t fDDL; //current ddl number
UInt_t fICarlosWord[kCarlosWords]; // Carlos words
UInt_t fIFifoWord[kFifoWords]; // FIFO words
Int_t fICountFoot[kModulesPerDDL]; // counter for carlos footer words
- Int_t fEndWords; //number of 3f1f1f1f
- Int_t fResetSkip; //if it is 0, the ResetSkip Funcion is called
- ClassDef(AliITSRawStreamSDD, 8) // class for reading ITS SDD raw digits
+ Int_t fEightBitSignal; // signal at 8 bit
+ Bool_t fDecompressAmbra; //flag to switch off decompression
+
+ ClassDef(AliITSRawStreamSDD, 14) // class for reading ITS SDD raw digits
};
#endif