Adding some further mother volumes to speed-up the overlap checking and particle...
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSDDBeamTest.h
1 #ifndef ALIITSRAWSTREAMSDDBEAMTEST_H
2 #define ALIITSRAWSTREAMSDDBEAMTEST_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 ///
10 /// This class provides access to ITS SDD digits in raw data 
11 /// (default=simulated data).
12 ///////////////////////////////////////////////////////////////////////////////
13
14 #include "AliITSRawStream.h"
15
16 class AliRawReader;
17
18
19 class AliITSRawStreamSDDBeamTest: public AliITSRawStream {
20   public :
21     AliITSRawStreamSDDBeamTest(AliRawReader* rawReader);
22
23     virtual ~AliITSRawStreamSDDBeamTest(){};
24
25     virtual Bool_t   Next();
26
27     virtual Int_t    GetAnode() const {return fCoord1;}
28     virtual Int_t    GetTime() const {return fCoord2;}
29     virtual Int_t    GetChannel() const {return fChannel;}
30     virtual Int_t    GetCarlosId() const {return fCarlosId;}
31     virtual Int_t    GetEventId() const {return fEventId;}
32
33     virtual Int_t    ReadJitter(){
34       AliError("Method implemented in only for Nov04 beam test");
35       fJitter=0;
36       return fJitter;
37     }
38     virtual void     SetLowCarlosThreshold(Int_t th, Int_t i)
39       {fLowThreshold[i]=th;}
40
41   protected:
42     virtual UInt_t   ReadBits();
43     virtual Int_t    DecompAmbra(Int_t value) const;
44
45     enum {kModulesPerDDL = 12};    // number of modules in each DDL 
46
47     static const UInt_t fgkCodeLength[8]; //code length
48
49     UInt_t           fData;         // data read for file
50     Int_t            fSkip;     // counter of header words to be skipped
51     Int_t            fEventId;      // event ID from header
52     Int_t            fCarlosId;     // carlos ID
53     Int_t            fChannel;      // current channel
54     Int_t            fJitter;          // jitter between L0 and pascal stop (x25ns)
55     ULong64_t        fChannelData[kModulesPerDDL][2];// packed data for the 2 channels
56     UInt_t           fLastBit[kModulesPerDDL][2];    // last filled bit in fChannelData
57     UInt_t           fChannelCode[kModulesPerDDL][2];// current channel code
58     Bool_t           fReadCode[kModulesPerDDL][2];   // next bits are code or data
59     UInt_t           fReadBits[kModulesPerDDL][2];   // number of bits to read
60
61     Int_t            fLowThreshold[2];    // carlos low threshold
62     Int_t            fTimeBin[kModulesPerDDL][2];  // current timebin [ncarlos][nchannels]
63     Int_t            fAnode[kModulesPerDDL][2]; // current anode [ncarlos][nchannels]
64
65     ClassDef(AliITSRawStreamSDDBeamTest, 1) // class for reading ITS SDD raw digits from beam tests
66 };
67
68 #endif