#include "AliMUONPayloadTrigger.h"
#include "AliMUONDarcHeader.h"
#include "AliMUONRegHeader.h"
#include "AliMUONLocalStruct.h"
#include "AliMUONDDLTrigger.h"
#include "AliMUONLogger.h"
#include "AliLog.h"
ClassImp(AliMUONPayloadTrigger)
AliMUONPayloadTrigger::AliMUONPayloadTrigger()
: TObject(),
fMaxReg(8),
fMaxLoc(16),
fDDLTrigger(new AliMUONDDLTrigger()),
fRegHeader(new AliMUONRegHeader()),
fLocalStruct(new AliMUONLocalStruct()),
fLog(new AliMUONLogger(1000)),
fDarcEoWErrors(0),
fGlobalEoWErrors(0),
fRegEoWErrors(0),
fLocalEoWErrors(0),
fWarnings(kTRUE),
fNofRegSet(kFALSE)
{
}
AliMUONPayloadTrigger::~AliMUONPayloadTrigger()
{
delete fDDLTrigger;
delete fLocalStruct;
delete fRegHeader;
delete fLog;
}
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 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;
if (darcHeader->GetDarcType() == darcHeader->GetDarcVadohrType())
fMaxReg = 1;
if (darcHeader->GetDarcType() == darcHeader->GetDarcDefaultType())
fMaxReg = 8;
if(darcHeader->GetEventType() == scalerEvent)
if (fWarnings) AliWarning("Wrong event type obtained from the Darc header, take the one of CDH");
if(scalerEvent) {
memcpy(darcHeader->GetDarcScalers(), &buffer[index], darcHeader->GetDarcScalerLength()*4);
index += darcHeader->GetDarcScalerLength();
}
if (buffer[index++] != darcHeader->GetEndOfDarc()) {
const Char_t* msg = Form("Wrong end of Darc word %x instead of %x\n",
buffer[index-1], darcHeader->GetEndOfDarc());
if (fWarnings) AliWarning(msg);
AddErrorMessage(msg);
fDarcEoWErrors++;
}
memcpy(darcHeader->GetGlobalInput(), &buffer[index], (kGlobalHeaderSize)*4);
index += kGlobalHeaderSize;
if(scalerEvent) {
memcpy(darcHeader->GetGlobalScalers(), &buffer[index], darcHeader->GetGlobalScalerLength()*4);
index += darcHeader->GetGlobalScalerLength();
}
if (buffer[index++] != darcHeader->GetEndOfGlobal()) {
const Char_t* msg = Form("Wrong end of Global word %x instead of %x\n",
buffer[index-1], darcHeader->GetEndOfGlobal());
if (fWarnings) AliWarning(msg);
AddErrorMessage(msg);
fGlobalEoWErrors++;
}
for (Int_t iReg = 0; iReg < fMaxReg; iReg++) {
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;
fDDLTrigger->AddRegHeader(*fRegHeader);
if(scalerEvent) {
memcpy(fRegHeader->GetScalers(), &buffer[index], fRegHeader->GetScalerLength()*4);
index += fRegHeader->GetScalerLength();
}
if (buffer[index++] != fRegHeader->GetEndOfReg()) {
const Char_t* msg = Form("Wrong end of Regional word %x instead of %x\n",
buffer[index-1], fRegHeader->GetEndOfReg());
if (fWarnings) AliWarning(msg);
AddErrorMessage(msg);
fRegEoWErrors++;
}
for (Int_t iLoc = 0; iLoc < fMaxLoc; iLoc++) {
Int_t dataSize = fLocalStruct->GetLength();;
memcpy(fLocalStruct->GetData(), &buffer[index], dataSize*4);
index += dataSize;
if(scalerEvent) {
memcpy(fLocalStruct->GetScalers(), &buffer[index], fLocalStruct->GetScalerLength()*4);
index += fLocalStruct->GetScalerLength();
}
if (buffer[index++] != fLocalStruct->GetEndOfLocal()) {
const Char_t* msg = Form("Wrong end of Local word %x instead of %x\n",
buffer[index-1], fLocalStruct->GetEndOfLocal());
if (fWarnings) AliWarning(msg);
AddErrorMessage(msg);
fLocalEoWErrors++;
}
if (fLocalStruct->GetData(0) == fLocalStruct->GetDisableWord())
continue;
fDDLTrigger->AddLocStruct(*fLocalStruct, iReg);
}
}
return kTRUE;
}
void AliMUONPayloadTrigger::ResetDDL()
{
AliMUONDarcHeader* darcHeader = fDDLTrigger->GetDarcHeader();
darcHeader->GetRegHeaderArray()->Delete();
fDarcEoWErrors = 0;
fGlobalEoWErrors = 0;
fRegEoWErrors = 0;
fLocalEoWErrors = 0;
}
void AliMUONPayloadTrigger::SetMaxReg(Int_t reg)
{
if (reg > 8) reg = 8;
fMaxReg = reg;
fNofRegSet = kTRUE;
}
void AliMUONPayloadTrigger::SetMaxLoc(Int_t loc)
{
if (loc > 16) loc = 16;
fMaxLoc = loc;
}
void AliMUONPayloadTrigger::AddErrorMessage(const Char_t* msg)
{
TString tmp(msg);
Int_t pos = tmp.First("\n");
tmp[pos] = 0;
fLog->Log(tmp.Data());
}
AliMUONPayloadTrigger.cxx:1 AliMUONPayloadTrigger.cxx:2 AliMUONPayloadTrigger.cxx:3 AliMUONPayloadTrigger.cxx:4 AliMUONPayloadTrigger.cxx:5 AliMUONPayloadTrigger.cxx:6 AliMUONPayloadTrigger.cxx:7 AliMUONPayloadTrigger.cxx:8 AliMUONPayloadTrigger.cxx:9 AliMUONPayloadTrigger.cxx:10 AliMUONPayloadTrigger.cxx:11 AliMUONPayloadTrigger.cxx:12 AliMUONPayloadTrigger.cxx:13 AliMUONPayloadTrigger.cxx:14 AliMUONPayloadTrigger.cxx:15 AliMUONPayloadTrigger.cxx:16 AliMUONPayloadTrigger.cxx:17 AliMUONPayloadTrigger.cxx:18 AliMUONPayloadTrigger.cxx:19 AliMUONPayloadTrigger.cxx:20 AliMUONPayloadTrigger.cxx:21 AliMUONPayloadTrigger.cxx:22 AliMUONPayloadTrigger.cxx:23 AliMUONPayloadTrigger.cxx:24 AliMUONPayloadTrigger.cxx:25 AliMUONPayloadTrigger.cxx:26 AliMUONPayloadTrigger.cxx:27 AliMUONPayloadTrigger.cxx:28 AliMUONPayloadTrigger.cxx:29 AliMUONPayloadTrigger.cxx:30 AliMUONPayloadTrigger.cxx:31 AliMUONPayloadTrigger.cxx:32 AliMUONPayloadTrigger.cxx:33 AliMUONPayloadTrigger.cxx:34 AliMUONPayloadTrigger.cxx:35 AliMUONPayloadTrigger.cxx:36 AliMUONPayloadTrigger.cxx:37 AliMUONPayloadTrigger.cxx:38 AliMUONPayloadTrigger.cxx:39 AliMUONPayloadTrigger.cxx:40 AliMUONPayloadTrigger.cxx:41 AliMUONPayloadTrigger.cxx:42 AliMUONPayloadTrigger.cxx:43 AliMUONPayloadTrigger.cxx:44 AliMUONPayloadTrigger.cxx:45 AliMUONPayloadTrigger.cxx:46 AliMUONPayloadTrigger.cxx:47 AliMUONPayloadTrigger.cxx:48 AliMUONPayloadTrigger.cxx:49 AliMUONPayloadTrigger.cxx:50 AliMUONPayloadTrigger.cxx:51 AliMUONPayloadTrigger.cxx:52 AliMUONPayloadTrigger.cxx:53 AliMUONPayloadTrigger.cxx:54 AliMUONPayloadTrigger.cxx:55 AliMUONPayloadTrigger.cxx:56 AliMUONPayloadTrigger.cxx:57 AliMUONPayloadTrigger.cxx:58 AliMUONPayloadTrigger.cxx:59 AliMUONPayloadTrigger.cxx:60 AliMUONPayloadTrigger.cxx:61 AliMUONPayloadTrigger.cxx:62 AliMUONPayloadTrigger.cxx:63 AliMUONPayloadTrigger.cxx:64 AliMUONPayloadTrigger.cxx:65 AliMUONPayloadTrigger.cxx:66 AliMUONPayloadTrigger.cxx:67 AliMUONPayloadTrigger.cxx:68 AliMUONPayloadTrigger.cxx:69 AliMUONPayloadTrigger.cxx:70 AliMUONPayloadTrigger.cxx:71 AliMUONPayloadTrigger.cxx:72 AliMUONPayloadTrigger.cxx:73 AliMUONPayloadTrigger.cxx:74 AliMUONPayloadTrigger.cxx:75 AliMUONPayloadTrigger.cxx:76 AliMUONPayloadTrigger.cxx:77 AliMUONPayloadTrigger.cxx:78 AliMUONPayloadTrigger.cxx:79 AliMUONPayloadTrigger.cxx:80 AliMUONPayloadTrigger.cxx:81 AliMUONPayloadTrigger.cxx:82 AliMUONPayloadTrigger.cxx:83 AliMUONPayloadTrigger.cxx:84 AliMUONPayloadTrigger.cxx:85 AliMUONPayloadTrigger.cxx:86 AliMUONPayloadTrigger.cxx:87 AliMUONPayloadTrigger.cxx:88 AliMUONPayloadTrigger.cxx:89 AliMUONPayloadTrigger.cxx:90 AliMUONPayloadTrigger.cxx:91 AliMUONPayloadTrigger.cxx:92 AliMUONPayloadTrigger.cxx:93 AliMUONPayloadTrigger.cxx:94 AliMUONPayloadTrigger.cxx:95 AliMUONPayloadTrigger.cxx:96 AliMUONPayloadTrigger.cxx:97 AliMUONPayloadTrigger.cxx:98 AliMUONPayloadTrigger.cxx:99 AliMUONPayloadTrigger.cxx:100 AliMUONPayloadTrigger.cxx:101 AliMUONPayloadTrigger.cxx:102 AliMUONPayloadTrigger.cxx:103 AliMUONPayloadTrigger.cxx:104 AliMUONPayloadTrigger.cxx:105 AliMUONPayloadTrigger.cxx:106 AliMUONPayloadTrigger.cxx:107 AliMUONPayloadTrigger.cxx:108 AliMUONPayloadTrigger.cxx:109 AliMUONPayloadTrigger.cxx:110 AliMUONPayloadTrigger.cxx:111 AliMUONPayloadTrigger.cxx:112 AliMUONPayloadTrigger.cxx:113 AliMUONPayloadTrigger.cxx:114 AliMUONPayloadTrigger.cxx:115 AliMUONPayloadTrigger.cxx:116 AliMUONPayloadTrigger.cxx:117 AliMUONPayloadTrigger.cxx:118 AliMUONPayloadTrigger.cxx:119 AliMUONPayloadTrigger.cxx:120 AliMUONPayloadTrigger.cxx:121 AliMUONPayloadTrigger.cxx:122 AliMUONPayloadTrigger.cxx:123 AliMUONPayloadTrigger.cxx:124 AliMUONPayloadTrigger.cxx:125 AliMUONPayloadTrigger.cxx:126 AliMUONPayloadTrigger.cxx:127 AliMUONPayloadTrigger.cxx:128 AliMUONPayloadTrigger.cxx:129 AliMUONPayloadTrigger.cxx:130 AliMUONPayloadTrigger.cxx:131 AliMUONPayloadTrigger.cxx:132 AliMUONPayloadTrigger.cxx:133 AliMUONPayloadTrigger.cxx:134 AliMUONPayloadTrigger.cxx:135 AliMUONPayloadTrigger.cxx:136 AliMUONPayloadTrigger.cxx:137 AliMUONPayloadTrigger.cxx:138 AliMUONPayloadTrigger.cxx:139 AliMUONPayloadTrigger.cxx:140 AliMUONPayloadTrigger.cxx:141 AliMUONPayloadTrigger.cxx:142 AliMUONPayloadTrigger.cxx:143 AliMUONPayloadTrigger.cxx:144 AliMUONPayloadTrigger.cxx:145 AliMUONPayloadTrigger.cxx:146 AliMUONPayloadTrigger.cxx:147 AliMUONPayloadTrigger.cxx:148 AliMUONPayloadTrigger.cxx:149 AliMUONPayloadTrigger.cxx:150 AliMUONPayloadTrigger.cxx:151 AliMUONPayloadTrigger.cxx:152 AliMUONPayloadTrigger.cxx:153 AliMUONPayloadTrigger.cxx:154 AliMUONPayloadTrigger.cxx:155 AliMUONPayloadTrigger.cxx:156 AliMUONPayloadTrigger.cxx:157 AliMUONPayloadTrigger.cxx:158 AliMUONPayloadTrigger.cxx:159 AliMUONPayloadTrigger.cxx:160 AliMUONPayloadTrigger.cxx:161 AliMUONPayloadTrigger.cxx:162 AliMUONPayloadTrigger.cxx:163 AliMUONPayloadTrigger.cxx:164 AliMUONPayloadTrigger.cxx:165 AliMUONPayloadTrigger.cxx:166 AliMUONPayloadTrigger.cxx:167 AliMUONPayloadTrigger.cxx:168 AliMUONPayloadTrigger.cxx:169 AliMUONPayloadTrigger.cxx:170 AliMUONPayloadTrigger.cxx:171 AliMUONPayloadTrigger.cxx:172 AliMUONPayloadTrigger.cxx:173 AliMUONPayloadTrigger.cxx:174 AliMUONPayloadTrigger.cxx:175 AliMUONPayloadTrigger.cxx:176 AliMUONPayloadTrigger.cxx:177 AliMUONPayloadTrigger.cxx:178 AliMUONPayloadTrigger.cxx:179 AliMUONPayloadTrigger.cxx:180 AliMUONPayloadTrigger.cxx:181 AliMUONPayloadTrigger.cxx:182 AliMUONPayloadTrigger.cxx:183 AliMUONPayloadTrigger.cxx:184 AliMUONPayloadTrigger.cxx:185 AliMUONPayloadTrigger.cxx:186 AliMUONPayloadTrigger.cxx:187 AliMUONPayloadTrigger.cxx:188 AliMUONPayloadTrigger.cxx:189 AliMUONPayloadTrigger.cxx:190 AliMUONPayloadTrigger.cxx:191 AliMUONPayloadTrigger.cxx:192 AliMUONPayloadTrigger.cxx:193 AliMUONPayloadTrigger.cxx:194 AliMUONPayloadTrigger.cxx:195 AliMUONPayloadTrigger.cxx:196 AliMUONPayloadTrigger.cxx:197 AliMUONPayloadTrigger.cxx:198 AliMUONPayloadTrigger.cxx:199 AliMUONPayloadTrigger.cxx:200 AliMUONPayloadTrigger.cxx:201 AliMUONPayloadTrigger.cxx:202 AliMUONPayloadTrigger.cxx:203 AliMUONPayloadTrigger.cxx:204 AliMUONPayloadTrigger.cxx:205 AliMUONPayloadTrigger.cxx:206 AliMUONPayloadTrigger.cxx:207 AliMUONPayloadTrigger.cxx:208 AliMUONPayloadTrigger.cxx:209 AliMUONPayloadTrigger.cxx:210 AliMUONPayloadTrigger.cxx:211 AliMUONPayloadTrigger.cxx:212 AliMUONPayloadTrigger.cxx:213 AliMUONPayloadTrigger.cxx:214 AliMUONPayloadTrigger.cxx:215 AliMUONPayloadTrigger.cxx:216 AliMUONPayloadTrigger.cxx:217 AliMUONPayloadTrigger.cxx:218 AliMUONPayloadTrigger.cxx:219 AliMUONPayloadTrigger.cxx:220 AliMUONPayloadTrigger.cxx:221 AliMUONPayloadTrigger.cxx:222 AliMUONPayloadTrigger.cxx:223 AliMUONPayloadTrigger.cxx:224 AliMUONPayloadTrigger.cxx:225 AliMUONPayloadTrigger.cxx:226 AliMUONPayloadTrigger.cxx:227 AliMUONPayloadTrigger.cxx:228 AliMUONPayloadTrigger.cxx:229 AliMUONPayloadTrigger.cxx:230 AliMUONPayloadTrigger.cxx:231 AliMUONPayloadTrigger.cxx:232 AliMUONPayloadTrigger.cxx:233 AliMUONPayloadTrigger.cxx:234 AliMUONPayloadTrigger.cxx:235 AliMUONPayloadTrigger.cxx:236 AliMUONPayloadTrigger.cxx:237 AliMUONPayloadTrigger.cxx:238 AliMUONPayloadTrigger.cxx:239 AliMUONPayloadTrigger.cxx:240 AliMUONPayloadTrigger.cxx:241 AliMUONPayloadTrigger.cxx:242 AliMUONPayloadTrigger.cxx:243 AliMUONPayloadTrigger.cxx:244 AliMUONPayloadTrigger.cxx:245 AliMUONPayloadTrigger.cxx:246 AliMUONPayloadTrigger.cxx:247 AliMUONPayloadTrigger.cxx:248 AliMUONPayloadTrigger.cxx:249 AliMUONPayloadTrigger.cxx:250 AliMUONPayloadTrigger.cxx:251 AliMUONPayloadTrigger.cxx:252 AliMUONPayloadTrigger.cxx:253 AliMUONPayloadTrigger.cxx:254 AliMUONPayloadTrigger.cxx:255 AliMUONPayloadTrigger.cxx:256 AliMUONPayloadTrigger.cxx:257