+ //AliTRDrawStreamTB *data = (AliTRDrawStreamTB*)AliTRDrawStreamBase::GetRawStream(rawReader);
+ AliTRDrawStreamBase::SetRawStreamVersion ("REAL") ;
+ AliTRDrawStream *data = (AliTRDrawStream *)AliTRDrawStreamBase::GetRawStream(rawReader);
+
+ //if (raw->IsA()->GetName())
+
+
+ // import the histograms
+ TH2D *fSMLink[3];
+ for(Int_t i=0; i<3; i++) {
+ fSMLink[i] = (TH2D*)GetRawsData(i);
+ //printf("address = %d\n", fSMLink[i]);
+ }
+
+ TH1D *fErrorHC = (TH1D*)GetRawsData(3);
+ TH1D *fErrorMCM = (TH1D*)GetRawsData(4);
+ TH1D *fErrorADC = (TH1D*)GetRawsData(5);
+
+
+ // loop over super-modules
+ while (data->NextBuffer()>0) {
+
+ //printf("processing next buffer\n");
+ // check sm
+ Int_t sm = rawReader->GetEquipmentId() - 1024;
+ if (sm < 0 || sm > 18) return;
+
+ // loop over links
+ for (Int_t istack = 0; istack < 5; istack++) {
+ for (Int_t ilink = 0; ilink < 12; ilink++) {
+
+ //Int_t det = sm * 30 + istack * 6 + ilink/2;
+
+ // check if data delivered
+ if (!(data->IsLinkActiveInStack(istack, ilink))) continue;
+ fSMLink[0]->Fill(sm, istack * 12 + ilink);
+
+ // check if beaf-beaf
+ if (data->GetLinkMonitorError(istack, ilink)) {
+ fSMLink[1]->Fill(sm, istack * 12 + ilink);
+ continue;
+ }
+
+ // fill histogram with HC header errors
+ Int_t nErrHc = 0;
+
+ nErrHc = FillBits(fErrorHC, data->GetH0ErrorCode(istack, ilink), 0);
+ if (!nErrHc) fErrorHC->Fill(-3);
+
+ nErrHc = FillBits(fErrorHC, data->GetH1ErrorCode(istack, ilink), 2);
+ if (!nErrHc) fErrorHC->Fill(-2);
+
+ nErrHc = FillBits(fErrorHC, data->GetHCErrorCode(istack, ilink), 4);
+ if (!nErrHc) fErrorHC->Fill(-1);
+
+ // data integrity protection
+ if (data->GetH0ErrorCode(istack, ilink) > 0) continue;
+ if (data->GetH1ErrorCode(istack, ilink) > 0) continue;
+
+ fSMLink[2]->Fill(sm, istack * 12 + ilink);
+
+ // loop over MCMs
+ for (Int_t imcm = 0; imcm < data->GetHCMCMmax(istack, ilink); imcm++ ){
+
+ Int_t nErrMcm = 0;
+
+ nErrMcm = FillBits(fErrorMCM, data->GetMCMhdErrorCode(istack, ilink, imcm), 0);
+ if (!nErrMcm) fErrorMCM->Fill(-3);
+
+ nErrMcm = FillBits(fErrorMCM, data->GetMCMADCMaskErrorCode(istack, ilink, imcm), 5);
+ if (!nErrMcm) fErrorMCM->Fill(-2);
+
+ nErrMcm = FillBits(fErrorMCM, data->GetMCMErrorCode(istack, ilink, imcm), 10);
+ if (!nErrMcm) fErrorMCM->Fill(-1);
+
+ // MCM protection
+ if ( (data->GetMCMhdErrorCode(istack,ilink,imcm)) & 2 ) continue;
+
+ // loop over ADC chanels
+ for (Int_t iadc=0; iadc < data->GetADCcount(istack, ilink, imcm); iadc++) {
+
+ // fill ADC error bits
+ Int_t nErrAdc = FillBits(fErrorADC, data->GetADCErrorCode(), 0);
+ if (!nErrAdc) fErrorADC->Fill(-1);
+ }
+ } // mcm
+ }
+ } // link
+
+ //printf("buffer analyzed\n");
+ }
+
+ // clean up
+
+ delete data;
+ AliInfo("sucessfull execution of QA for TRD raw data");
+ //printf("sucessfull execution of QA for TRD raw data\n");
+
+
+ /*