// and the sample rate should be set explicitly.
//
#include "AliFMDRawStream.h" // ALIFMDRAWSTREAM_H
-#include <AliRawReader.h> // ALIRAWREADER_H
+// #include <AliRawReader.h> // ALIRAWREADER_H
#include "AliFMDParameters.h"
-#include <AliLog.h>
-#include <iomanip>
-#include <iostream>
+// #include <AliLog.h>
+#include "AliFMDDebug.h" // Better debug macros
+// #include <iomanip>
+// #include <iostream>
+#include "AliRawReader.h"
//____________________________________________________________________
ClassImp(AliFMDRawStream)
AliFMDRawStream::AliFMDRawStream(AliRawReader* reader)
: AliAltroRawStream(reader)
{
+ // CTOR
+ reader->Reset();
fNoAltroMapping = kFALSE;
+ // Select FMD DDL's
+ SelectRawData("FMD");
}
//_____________________________________________________________________________
AliFMDRawStream::ReadChannel(UInt_t& ddl, UInt_t& addr,
UInt_t& len, UShort_t* data)
{
- UInt_t prevddl = 0;
+ // Read one channel and return. Returns 0 when there's no more
+ // data.
Int_t l = 0;
static Int_t last = 0xFFFF; // 0xFFFF means signal is used
Bool_t next = kTRUE;
do {
Int_t signal = last;
if (last > 0x3FF) {
- AliDebug(30, Form("Last is 0x%x, so reading a new word", last));
+ AliFMDDebug(30, ("Last is 0x%x, so reading a new word", last));
next = Next();
- if (!next) break;
+ if(!next){
+ AliFMDDebug(15, ("Read word # %d (!next)", l));
+ addr = GetPrevHWAddress();
+ ddl = GetPrevDDLNumber();
+ len = l+1; // Need to add one - l points to last valid index
+ last = signal;
+ break;
+ }
signal = GetSignal();
if (GetHWAddress() != GetPrevHWAddress() && GetPrevHWAddress() >= 0) {
- AliDebug(15, Form("New hardware address, was 0x%x, now 0x%x",
+ AliFMDDebug(15, ("New hardware address, was 0x%x, now 0x%x",
GetPrevHWAddress(), GetHWAddress()));
addr = GetPrevHWAddress();
- ddl = AliFMDParameters::kBaseDDL + prevddl;
- len = l+1;
+ ddl = GetPrevDDLNumber();
+ len = l+1; // Need to add one - l points to last valid index
last = signal;
break;
}
}
- prevddl = GetPrevDDLNumber();
Int_t t = GetTime();
l = TMath::Max(l, t);
data[t] = signal;