- data = 0;
- // Information about following 10 interaction
- // Not available in the simulation...
- for(Int_t i = 0; i < 5; i++)
+}
+
+//_____________________________________________________________________________
+void AliVZEROBuffer::WriteChannel(Int_t channel, Short_t *adc, Bool_t integrator){
+ // It writes VZERO charge information into a raw data file.
+ // Being called by Digits2Raw
+
+ UInt_t data = 0;
+ for(Int_t i = 0; i < AliVZEROdigit::kNClocks; ++i) {
+ if (adc[i] > 1023) {
+ AliWarning(Form("ADC (channel=%d) saturated: %d. Truncating to 1023",channel,adc[i]));
+ adc[i] = 1023;
+ }
+ }
+
+ if(channel%2 == 0) {
+ for(Int_t i = 0; i < (AliVZEROdigit::kNClocks/2); ++i) {
+ data = (adc[2*i] & 0x3ff);
+ data |= ((integrator & 0x1) << 10);
+
+ data |= ((adc[2*i+1] & 0x3ff) << 16);
+ data |= ((!integrator & 0x1) << 26);
+
+ f->WriteBuffer((char*)&data,sizeof(data));
+ }
+ fRemainingWord = (adc[AliVZEROdigit::kNClocks-1] & 0x3ff);
+ fRemainingWord |= ((integrator & 0x1) << 10);
+ }
+ else {
+ data = fRemainingWord;
+ data |= ((adc[0] & 0x3ff) << 16);
+ data |= ((integrator & 0x1) << 26);