#include "AliTRDgeometry.h"
#include "AliTRDdataArrayI.h"
#include "AliTRDdataArrayS.h"
+#include "AliTRDrawStreamBase.h"
#include "AliTRDRawStream.h"
#include "AliTRDRawStreamV2.h"
#include "AliTRDcalibDB.h"
// Get the digits array
AliTRDdataArrayS *digits = (AliTRDdataArrayS *) digitsManager->GetDigits(iDet);
- digits->Expand();
+ if (digits->HasData()) {
- Int_t hcwords = 0;
- Int_t rv = fFee->GetRAWversion();
+ digits->Expand();
- // Process A side of the chamber
- if ( rv >= 1 && rv <= 2 ) hcwords = ProduceHcDataV1andV2(digits,0,iDet,hcBuffer,kMaxHcWords);
- if ( rv == 3 ) hcwords = ProduceHcDataV3 (digits,0,iDet,hcBuffer,kMaxHcWords);
+ Int_t hcwords = 0;
+ Int_t rv = fFee->GetRAWversion();
- of->WriteBuffer((char *) hcBuffer, hcwords*4);
- npayloadbyte += hcwords*4;
+ // Process A side of the chamber
+ if ( rv >= 1 && rv <= 2 ) {
+ hcwords = ProduceHcDataV1andV2(digits,0,iDet,hcBuffer,kMaxHcWords);
+ }
+ if ( rv == 3 ) {
+ hcwords = ProduceHcDataV3 (digits,0,iDet,hcBuffer,kMaxHcWords);
+ }
+
+ of->WriteBuffer((char *) hcBuffer, hcwords*4);
+ npayloadbyte += hcwords*4;
+
+ // Process B side of the chamber
+ if ( rv >= 1 && rv <= 2 ) {
+ hcwords = ProduceHcDataV1andV2(digits,1,iDet,hcBuffer,kMaxHcWords);
+ }
+ if ( rv >= 3 ) {
+ hcwords = ProduceHcDataV3 (digits,1,iDet,hcBuffer,kMaxHcWords);
+ }
- // Process B side of the chamber
- if ( rv >= 1 && rv <= 2 ) hcwords = ProduceHcDataV1andV2(digits,1,iDet,hcBuffer,kMaxHcWords);
- if ( rv >= 3 ) hcwords = ProduceHcDataV3 (digits,1,iDet,hcBuffer,kMaxHcWords);
+ of->WriteBuffer((char *) hcBuffer, hcwords*4);
+ npayloadbyte += hcwords*4;
+
+ }
- of->WriteBuffer((char *) hcBuffer, hcwords*4);
- npayloadbyte += hcwords*4;
}
}
AliTRDdataArrayI *track1 = 0;
AliTRDdataArrayI *track2 = 0;
+ //AliTRDSignalIndex *indexes = 0;
+ // Create the digits manager
+ AliTRDdigitsManager* digitsManager = new AliTRDdigitsManager();
+ digitsManager->CreateArrays();
+
+ //AliTRDRawStream input(rawReader);
+ // AliTRDRawStreamV2 input(rawReader);
+ // input.SetRawVersion( fFee->GetRAWversion() );
+ // input.Init();
+
+ AliTRDrawStreamBase *pinput = AliTRDrawStreamBase::GetRawStream(rawReader);
+ AliTRDrawStreamBase &input = *pinput;
+
+ AliInfo(Form("Stream version: %s", input.IsA()->GetName()));
+
+ // Loop through the digits
+ Int_t det = 0;
+
+ while (det >= 0)
+ {
+ det = input.NextChamber(digitsManager);
+ if (det >= 0)
+ {
+ // get...
+ digits = (AliTRDdataArrayS *) digitsManager->GetDigits(det);
+ track0 = (AliTRDdataArrayI *) digitsManager->GetDictionary(det,0);
+ track1 = (AliTRDdataArrayI *) digitsManager->GetDictionary(det,1);
+ track2 = (AliTRDdataArrayI *) digitsManager->GetDictionary(det,2);
+ // and compress
+ if (digits) digits->Compress(1,0);
+ if (track0) track0->Compress(1,0);
+ if (track1) track1->Compress(1,0);
+ if (track2) track2->Compress(1,0);
+ }
+ }
+
+ delete pinput;
+ pinput = NULL;
+
+ return digitsManager;
+}
+
+//_____________________________________________________________________________
+AliTRDdigitsManager *AliTRDrawData::Raw2DigitsOLD(AliRawReader *rawReader)
+{
+ //
+ // Vx of the raw data reading
+ //
+
+ AliTRDdataArrayS *digits = 0;
+ AliTRDdataArrayI *track0 = 0;
+ AliTRDdataArrayI *track1 = 0;
+ AliTRDdataArrayI *track2 = 0;
+
AliTRDSignalIndex *indexes = 0;
// Create the digits manager
AliTRDdigitsManager* digitsManager = new AliTRDdigitsManager();