X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONPayloadTrigger.cxx;h=5712694d8f3e0ecd92214dc10827e7cda26c14ca;hb=29cdb6fe3e05c0d8a20a765f60ff8c4a51386b7d;hp=89f125f4ad3b0962bd6c49d1b02f125c75174074;hpb=f4ee80d22355a8987ed45d564ec8cccc375de0a3;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONPayloadTrigger.cxx b/MUON/AliMUONPayloadTrigger.cxx index 89f125f4ad3..5712694d8f3 100644 --- a/MUON/AliMUONPayloadTrigger.cxx +++ b/MUON/AliMUONPayloadTrigger.cxx @@ -85,22 +85,25 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer, Bool_t scalerEvent) AliMUONDarcHeader* darcHeader = fDDLTrigger->GetDarcHeader(); - static Int_t kGlobalHeaderSize = darcHeader->GetGlobalHeaderLength(); - static Int_t kDarcHeaderSize = darcHeader->GetDarcHeaderLength(); - static Int_t kRegHeaderSize = fRegHeader->GetHeaderLength(); - + static Int_t kGlobalHeaderSize = darcHeader->GetGlobalHeaderLength(); + static Int_t kDarcHeaderSize = darcHeader->GetDarcHeaderLength(); + static Int_t kRegHeaderSize = fRegHeader->GetHeaderLength(); + static Int_t kRegEmptySize = fRegHeader->GetHeaderLength()+1 + 16*(fLocalStruct->GetLength()+1); + static Int_t kRegEmptyScalerSize = fRegHeader->GetHeaderLength() + fRegHeader->GetScalerLength() + 1 + + 16*(fLocalStruct->GetLength() + fLocalStruct->GetScalerLength() + 1); + Int_t index = 0; memcpy(darcHeader->GetHeader(), &buffer[index], (kDarcHeaderSize)*4); index += kDarcHeaderSize; - // darc type vardorh - if (darcHeader->GetDarcType() == 4) + // darc type vadorh + if (darcHeader->GetDarcType() == darcHeader->GetDarcVadohrType()) fMaxReg = 1; // darc type def. - if (darcHeader->GetDarcType() == 6) + if (darcHeader->GetDarcType() == darcHeader->GetDarcDefaultType()) fMaxReg = 8; if(darcHeader->GetEventType() == scalerEvent) @@ -142,6 +145,15 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer, Bool_t scalerEvent) // 8 regional boards for (Int_t iReg = 0; iReg < fMaxReg; iReg++) { //loop over regeonal card + // skip empty regaional board (not connected or with error reading) + if (buffer[index] == fRegHeader->GetErrorWord()) { + fDDLTrigger->AddRegHeader(*fRegHeader); + if (scalerEvent) + index += kRegEmptyScalerSize; + else + index += kRegEmptySize; + continue; + } memcpy(fRegHeader->GetHeader(), &buffer[index], kRegHeaderSize*4); index += kRegHeaderSize;