#include "TObjArray.h"
#include "AliLog.h"
#include "AliTriggerInput.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliTRDptrgParam.h"
#include "AliTRDptrgCBB.h"
#include "AliTRDTriggerL0.h"
AliTRDTriggerL0::AliTRDTriggerL0()
{
SetName("TRD");
}
AliTRDTriggerL0::~AliTRDTriggerL0()
{
}
void AliTRDTriggerL0::CreateInputs()
{
if (fInputs.GetEntriesFast() > 0)
return;
fInputs.AddLast(new AliTriggerInput("0HWU", "TRD", 1));
fInputs.AddLast(new AliTriggerInput("0HSG", "TRD", 1));
fInputs.AddLast(new AliTriggerInput("0HDG", "TRD", 1));
}
void AliTRDTriggerL0::Trigger()
{
AliRunLoader *runLoader = AliRunLoader::Instance();
if (!runLoader)
return;
AliLoader *trdLoader = runLoader->GetLoader("TRDLoader");
if (!trdLoader)
return;
AliTRDptrgParam* param = AliTRDptrgParam::Instance();
AliTRDptrgCBB* ptrgCBB = new AliTRDptrgCBB(runLoader, param, AliTRDptrgParam::kDigits);
Int_t* simulationResult;
simulationResult = ptrgCBB->Simulate();
if (!simulationResult) {
return;
}
for (Int_t iResult = 1; iResult <= simulationResult[0]; iResult++) {
AliDebug(5, Form("Result[%d]=0x%x\n",iResult,simulationResult[iResult]));
}
if ((simulationResult[0] > 0) || (simulationResult[1] > 0)) {
AliInfo("Fired single gap trigger");
SetInput("0HSG");
}
if (simulationResult[2] > 0) {
AliInfo("Fired double gap trigger");
SetInput("0HDG");
}
if (simulationResult[3] > 0) {
AliInfo("Fired TRD wake up call trigger");
SetInput("0HWU");
}
delete ptrgCBB;
delete[] simulationResult;
simulationResult = 0x0;
AliDebug(5, Form("memory state: %d", param->CheckVariables()));
}