]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSRawStreamSDD.h
Enlarged histogram ranges in x and y. Skipping the vertices found by the vertexerZ.
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSDD.h
CommitLineData
2906f4c2 1#ifndef ALIITSRAWSTREAMSDD_H
2#define ALIITSRAWSTREAMSDD_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8///////////////////////////////////////////////////////////////////////////////
9///
1ba0280f 10/// This class provides access to ITS SDD digits in raw data
11/// (default=simulated data).
2906f4c2 12///////////////////////////////////////////////////////////////////////////////
13
14#include "AliITSRawStream.h"
979b5a5f 15#include "AliITSDDLModuleMapSDD.h"
2906f4c2 16
17class AliRawReader;
18
19
20class AliITSRawStreamSDD: public AliITSRawStream {
21 public :
22 AliITSRawStreamSDD(AliRawReader* rawReader);
979b5a5f 23 AliITSRawStreamSDD(const AliITSRawStreamSDD& rs);
24 AliITSRawStreamSDD& operator=(const AliITSRawStreamSDD& rs);
25 virtual ~AliITSRawStreamSDD();
2906f4c2 26
27 virtual Bool_t Next();
28
1ba0280f 29 virtual Int_t GetAnode() const {return fCoord1;}
30 virtual Int_t GetTime() const {return fCoord2;}
31 virtual Int_t GetChannel() const {return fChannel;}
6297cc01 32 virtual Int_t GetEightBitSignal() const {return fEightBitSignal;}
a97b3678 33 virtual Int_t ReadJitter() const {return 0;}
34 virtual Int_t GetCarlosId() const {return fCarlosId;}
979b5a5f 35 virtual Int_t GetEventId() const {return fEventId;}
5dfa68c5 36
6297cc01 37 virtual void SetDecompressAmbra(Bool_t deco=kTRUE){
38 fDecompressAmbra=deco;
39 }
720d923a 40 virtual void SetDDLModuleMap(AliITSDDLModuleMapSDD* ddlsdd){
41 if(!fDDLModuleMap) fDDLModuleMap=new AliITSDDLModuleMapSDD();
42 fDDLModuleMap->SetDDLMap(ddlsdd);}
83ec5e27 43 virtual void SetLowCarlosThreshold(Int_t th, Int_t i)
a97b3678 44 {fLowThreshold[i]=th;}
83ec5e27 45 virtual void SetZeroSuppLowThreshold(Int_t iMod, Int_t iSid, Int_t th)
46 {fLowThresholdArray[iMod][iSid]=th;}
979b5a5f 47 Int_t GetModuleNumber(UInt_t iDDL, UInt_t iModule) const {
720d923a 48 if(!fDDLModuleMap) return kSPDModules+1; // dummy module number if the DDL map is not set (case of DAs)
979b5a5f 49 return fDDLModuleMap->GetModuleNumber(iDDL,iModule);
50 }
a97b3678 51 virtual void Reset();
2906f4c2 52
83ec5e27 53 enum {kSDDModules = 260}; // number of SDD modules
54 enum {kSPDModules = 240}; // number of SPD modules (used as offset)
55 enum {kDDLsNumber = 24}; // number of DDLs in SDD
56 enum {kModulesPerDDL = 12}; // number of modules in each DDL
765a9f95 57 enum {kCarlosWords = 12}; // number of FIFOCARLOS Words
83ec5e27 58 enum {kFifoWords = 4}; // number of FIFO Words
765a9f95 59 enum ESDDRawStreamError {
39a7c5cc 60 kDataError = 1,
61 kDataFormatErr = 2
62 };
1ba0280f 63 protected:
83ec5e27 64 virtual Bool_t SkipHeaderWord();
1ba0280f 65 virtual UInt_t ReadBits();
66 virtual Int_t DecompAmbra(Int_t value) const;
2906f4c2 67
38300302 68 static const UInt_t fgkCodeLength[8]; //code length
2906f4c2 69
979b5a5f 70 AliITSDDLModuleMapSDD* fDDLModuleMap; // mapping DDL/module -> module number
2906f4c2 71 UInt_t fData; // data read for file
83ec5e27 72 Int_t fSkip[kDDLsNumber];// obsolete -- needed to compile AliITSRawStreamSDDv2
a97b3678 73 Int_t fEventId; // event ID from header
14dceddf 74 Int_t fCarlosId; // carlos ID
1ba0280f 75 Int_t fChannel; // current channel
76 Int_t fJitter; // jitter between L0 and pascal stop (x25ns)
a97b3678 77 ULong64_t fChannelData[kModulesPerDDL][2];// packed data for the 2 channels
78 UInt_t fLastBit[kModulesPerDDL][2]; // last filled bit in fChannelData
79 UInt_t fChannelCode[kModulesPerDDL][2];// current channel code
80 Bool_t fReadCode[kModulesPerDDL][2]; // next bits are code or data
81 UInt_t fReadBits[kModulesPerDDL][2]; // number of bits to read
83ec5e27 82 Int_t fLowThresholdArray[kSDDModules][2]; // array with low thresholds for all modules
83 Int_t fLowThreshold[2]; // obsolete -- needed to compile AliITSRawStreamSDDv2
14dceddf 84 Int_t fNfifo[kFifoWords]; // FIFO number
a97b3678 85 Int_t fTimeBin[kModulesPerDDL][2]; // current timebin [ncarlos][nchannels]
86 Int_t fAnode[kModulesPerDDL][2]; // current anode [ncarlos][nchannels]
14dceddf 87 UInt_t fICarlosWord[kCarlosWords]; // Carlos words
88 UInt_t fIFifoWord[kFifoWords]; // FIFO words
89 Int_t fICountFoot[kModulesPerDDL]; // counter for carlos footer words
6297cc01 90 Int_t fEightBitSignal; // signal at 8 bit
91 Bool_t fDecompressAmbra; //flag to switch off decompression
92
b24ea968 93 ClassDef(AliITSRawStreamSDD, 13) // class for reading ITS SDD raw digits
2906f4c2 94};
95
96#endif