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"),
21 // create an object to read STARTraw digits
26 AliSTARTRawReader::~AliSTARTRawReader ()
31 Bool_t AliSTARTRawReader::Next()
33 // read the next raw digit
34 // returns kFALSE if there is no digit left
37 UInt_t word, unpackword;
39 TArrayI *timeTDC1 = new TArrayI(24);
40 TArrayI * chargeTDC1 = new TArrayI(24);
41 TArrayI *timeTDC2 = new TArrayI(24);
42 TArrayI *chargeTDC2 = new TArrayI(24);
45 fRawReader->Select(13,0,1);
48 if (!fRawReader->ReadHeader()){
49 Error("ReadSTARTRaw","Couldn't read header");
52 if (fDigits == 0x0) fDigits = new AliSTARTdigit();
53 fTree->Branch("START","AliSTARTdigit",&fDigits,405,1);
54 if (!fRawReader->ReadNextInt(word)) return kFALSE;
56 for (Int_t i=0; i<24; i++) //time LED
60 fRawReader->ReadNextInt(word);
61 unpackword=pack->UnpackWord(word,0,8);
66 fRawReader->ReadNextInt(word);
67 unpackword=pack->UnpackWord(word,8,31);
69 timeTDC1->AddAt(time,i);
74 for (Int_t i=0; i<24; i++) //time CFD
78 fRawReader->ReadNextInt(word);
79 unpackword=pack->UnpackWord(word,0,8);
83 fRawReader->ReadNextInt(word);
84 unpackword=pack->UnpackWord(word,8,31);
86 timeTDC2->AddAt(time,pmt-24);
92 for (Int_t i=0; i<24; i++)
97 fRawReader->ReadNextInt(word);
98 unpackword=pack->UnpackWord(word,0,8);
102 fRawReader->ReadNextInt(word);
103 unpackword= pack->UnpackWord(word,8,31);
105 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);