1 #include "AliSTARTRawReader.h"
2 #include "AliSTARTRawData.h"
3 #include "AliSTARTdigit.h"
4 #include "AliBitPacking.h"
12 ClassImp(AliSTARTRawReader)
14 AliSTARTRawReader::AliSTARTRawReader (AliRawReader *rawReader, TTree* tree)
15 : TTask("STARTRawReader","read raw START data"),
20 // create an object to read STARTraw digits
25 AliSTARTRawReader::~AliSTARTRawReader ()
30 Bool_t AliSTARTRawReader::Next()
32 // read the next raw digit
33 // returns kFALSE if there is no digit left
36 UInt_t word, unpackword;
38 TArrayI *timeTDC1 = new TArrayI(24);
39 TArrayI * chargeTDC1 = new TArrayI(24);
40 TArrayI *timeTDC2 = new TArrayI(24);
41 TArrayI *chargeTDC2 = new TArrayI(24);
44 fRawReader->Select(13,0,1);
47 if (!fRawReader->ReadHeader()){
48 Error("ReadSTARTRaw","Couldn't read header");
51 AliSTARTdigit *fDigits = new AliSTARTdigit();
52 fTree->Branch("START","AliSTARTdigit",&fDigits,400,1);
53 if (!fRawReader->ReadNextInt(word)) return kFALSE;
55 for (Int_t i=0; i<24; i++) //time LED
59 fRawReader->ReadNextInt(word);
60 unpackword=pack->UnpackWord(word,0,8);
65 fRawReader->ReadNextInt(word);
66 unpackword=pack->UnpackWord(word,8,31);
68 timeTDC1->AddAt(time,i);
73 for (Int_t i=0; i<24; i++) //time CFD
77 fRawReader->ReadNextInt(word);
78 unpackword=pack->UnpackWord(word,0,8);
82 fRawReader->ReadNextInt(word);
83 unpackword=pack->UnpackWord(word,8,31);
85 timeTDC2->AddAt(time,pmt-24);
91 for (Int_t i=0; i<24; i++)
96 fRawReader->ReadNextInt(word);
97 unpackword=pack->UnpackWord(word,0,8);
101 fRawReader->ReadNextInt(word);
102 unpackword= pack->UnpackWord(word,8,31);
104 chargeTDC1->AddAt(adc,pmt-48);
111 for (Int_t i=0; i<24; i++) //QTC amplified
116 fRawReader->ReadNextInt(word);
117 unpackword=pack->UnpackWord(word,0,8);
121 fRawReader->ReadNextInt(word);
122 unpackword= pack->UnpackWord(word,8,31);
124 chargeTDC2->AddAt(adc,pmt-72);
127 fDigits->SetTime(*timeTDC2);
128 fDigits->SetADC(*chargeTDC1);
130 fDigits->SetTimeAmp(*timeTDC1);
131 fDigits->SetADCAmp(*chargeTDC2);
136 fRawReader->ReadNextInt(word);
137 unpackword=pack->UnpackWord(word,0,8);
143 fRawReader->ReadNextInt(word);
144 unpackword=pack->UnpackWord(word,8,31);
146 fDigits->SetMeanTime(time);
148 // Best time right &left
152 fRawReader->ReadNextInt(word);
153 unpackword=pack->UnpackWord(word,0,8);
159 fRawReader->ReadNextInt(word);
160 unpackword=pack->UnpackWord(word,8,31);
162 fDigits->SetTimeBestRight(time);
169 fRawReader->ReadNextInt(word);
170 unpackword=pack->UnpackWord(word,0,8);
176 fRawReader->ReadNextInt(word);
177 unpackword=pack->UnpackWord(word,8,31);
179 fDigits->SetTimeBestLeft(time);
182 // best time differece
186 fRawReader->ReadNextInt(word);
187 unpackword=pack->UnpackWord(word,0,8);
193 fRawReader->ReadNextInt(word);
194 unpackword=pack->UnpackWord(word,8,31);
196 fDigits->SetDiffTime(time);
201 fRawReader->ReadNextInt(word);
202 unpackword=pack->UnpackWord(word,0,8);
206 fRawReader->ReadNextInt(word);
207 unpackword=pack->UnpackWord(word,8,31);
209 fDigits->SetSumMult(time);