#include <TTree.h>
#include "AliMUONTrigger.h"
#include "AliLog.h"
#include "AliMUONGlobalTrigger.h"
#include "AliMUONVTriggerStore.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliTriggerInput.h"
ClassImp(AliMUONTrigger)
AliMUONTrigger::AliMUONTrigger()
: AliTriggerDetector(), fTriggerStore(0x0)
{
SetName("MUON");
CreateInputs();
}
AliMUONTrigger::~AliMUONTrigger()
{
delete fTriggerStore;
}
void AliMUONTrigger::CreateInputs()
{
if( fInputs.GetEntriesFast() > 0 ) return;
fInputs.AddLast( new AliTriggerInput( "0MSL", "MUONTRG", 0 ) );
fInputs.AddLast( new AliTriggerInput( "0MSH", "MUONTRG", 0 ) );
fInputs.AddLast( new AliTriggerInput( "0MUL", "MUONTRG", 0 ) );
fInputs.AddLast( new AliTriggerInput( "0MUH", "MUONTRG", 0 ) );
fInputs.AddLast( new AliTriggerInput( "0MLL", "MUONTRG", 0 ) );
fInputs.AddLast( new AliTriggerInput( "0MLH", "MUONTRG", 0 ) );
}
void AliMUONTrigger::Trigger()
{
AliRunLoader* runLoader = AliRunLoader::Instance();
AliLoader * muonLoader = runLoader->GetDetectorLoader("MUON");
muonLoader->LoadDigits("READ");
TTree* treeD = muonLoader->TreeD();
if (!treeD)
{
AliError("No TreeD available. Cannot make trigger");
return;
}
if (!fTriggerStore)
{
fTriggerStore = AliMUONVTriggerStore::Create(*treeD);
if (!fTriggerStore)
{
AliError("Could not create triggerStore from treeD");
return;
}
}
Bool_t ok = fTriggerStore->Connect(*treeD,kTRUE);
if (!ok)
{
AliError("Could not read trigger from TreeD !");
return;
}
treeD->GetEvent(0);
AliMUONGlobalTrigger* globalTrigger = fTriggerStore->Global();
if (globalTrigger == 0x0)
{
AliWarning("No Global Trigger available");
}
else
{
if (globalTrigger->SingleLpt()) SetInput("0MSL");
if (globalTrigger->SingleHpt()) SetInput("0MSH");
if (globalTrigger->PairUnlikeLpt()) SetInput("0MUL");
if (globalTrigger->PairUnlikeHpt()) SetInput("0MUH");
if (globalTrigger->PairLikeLpt()) SetInput("0MLL");
if (globalTrigger->PairLikeHpt()) SetInput("0MLH");
}
muonLoader->UnloadDigits();
fTriggerStore->Clear();
}