reconstruction from RAWData added
[u/mrichter/AliRoot.git] / START / AliSTARTRawReader.cxx
1 #include "AliSTARTRawReader.h"
2 #include "AliSTARTRawData.h"
3 #include "AliRawReaderFile.h" 
4
5
6 #include <Riostream.h>
7 #include "TMath.h"
8 #include "TH1F.h"
9 #include "TArrayI.h"
10 #include "AliLog.h"
11  
12 ClassImp(AliSTARTRawReader)
13
14   AliSTARTRawReader::AliSTARTRawReader (): TTask("STARTRawReader","read raw data"),
15                                            fPMTId(-1),
16                                            fTimeTDC1(0),
17                                            fChargeADC1(0),
18                                            fTimeTDC2(0),
19                                            fChargeADC2(0)
20 {
21   //
22 // create an object to read STARTraw digits
23   AliDebug(1,"Start ");
24   fTimeTDC1 = new TArrayI(24); 
25   fChargeADC1 = new TArrayI(24); 
26   fTimeTDC2 = new TArrayI(24); 
27   fChargeADC2 = new TArrayI(24); 
28  
29 }
30  AliSTARTRawReader::~AliSTARTRawReader ()
31 {
32   delete fTimeTDC1;
33   delete fTimeTDC2;
34   delete fChargeADC1 ; 
35   delete fChargeADC2; 
36  
37 }
38 //------------------------------------------------------------------------------------------------
39
40 UInt_t AliSTARTRawReader::UnpackWord(UInt_t packedWord, Int_t startBit, Int_t stopBit)
41 {
42   //This method unpacks a words of StopBit-StartBit+1 bits starting from "StopBits"  
43   UInt_t word;
44   UInt_t offSet;
45   Int_t length;
46   length=stopBit-startBit+1;
47   offSet=(UInt_t)TMath::Power(2,length)-1;
48   offSet<<=startBit;
49   word=packedWord&offSet;
50   word>>=startBit;
51   return word;
52 }
53 //---------------------------------------------------------------------------------------
54 Bool_t AliSTARTRawReader::NextThing( AliRawReader *fRawReader)
55 {
56 // read the next raw digit
57 // returns kFALSE if there is no digit left
58
59   UInt_t word, unpackword; 
60   UInt_t fADC, fTime;
61   fRawReader->Select(13);
62  
63   if (!fRawReader->ReadNextInt(fData)) return kFALSE;
64    
65
66   Int_t size=fRawReader->GetDataSize();
67   for (Int_t i=0; i<size/32; i++)
68     {
69       word=0;
70       unpackword=0;
71       fRawReader->ReadNextInt(word);
72       unpackword=UnpackWord(word,0,5);
73       fPMTId=unpackword;
74       word=0;
75       unpackword=0;
76
77       fRawReader->ReadNextInt(word);
78       unpackword=UnpackWord(word,8,31);
79       fTime=unpackword;
80       fTimeTDC1->AddAt(fTime,fPMTId);
81       word=0;
82       unpackword=0;
83
84       fRawReader->ReadNextInt(word);
85       unpackword=UnpackWord(word,0,5);
86       fPMTId=unpackword;
87       word=0;
88       unpackword=0;
89
90       fRawReader->ReadNextInt(word);
91   
92       unpackword=UnpackWord(word,8,31);
93       fTime=unpackword;
94       fTimeTDC2->AddAt(fTime,fPMTId);
95
96       word=0;
97       unpackword=0;
98       fRawReader->ReadNextInt(word);
99       unpackword=UnpackWord(word,0,5);
100       fPMTId=unpackword;
101       word=0;
102       unpackword=0;
103
104       fRawReader->ReadNextInt(word);
105       unpackword= UnpackWord(word,8,31);
106       fADC=unpackword;
107       fChargeADC1 -> AddAt(fADC, fPMTId); 
108  
109       word=0;
110       unpackword=0;
111
112       fRawReader->ReadNextInt(word);
113       unpackword=UnpackWord(word,0,5);
114       fPMTId=unpackword;
115
116       word=0;
117       unpackword=0;
118       fRawReader->ReadNextInt(word);
119   
120       unpackword= UnpackWord(word,8,31);
121       fADC=unpackword;
122       fChargeADC2 -> AddAt(fADC, fPMTId); 
123       }
124   return kTRUE;
125
126 }
127  
128 //--------------------------------------------
129 void AliSTARTRawReader::GetTime (TArrayI &o)
130 {
131   //
132   Int_t i;
133   for (i=0; i<24; i++)
134     {
135       o[i]=fTimeTDC1->At(i);
136     }
137 }
138 //--------------------------------------------
139 //--------------------------------------------
140 void AliSTARTRawReader::GetADC (TArrayI &o)
141 {
142   //
143   Int_t i;
144   for (i=0; i<24; i++)
145     {
146       o[i]=fChargeADC1->At(i);
147     }
148 }