// ESAF : Euso Simulation and Analysis Framework
// $Id: PersistencyTriggerEngine.cc,v 1.10 2005/04/11 10:48:39 pesce Exp $
// M. Pallavicini - created Oct, 24 2003
#include "PersistencyTriggerEngine.hh"
#include "MacroCellData.hh"
#include "MacroCell.hh"
ClassImp(PersistencyTriggerEngine)
//______________________________________________________________________________
PersistencyTriggerEngine::PersistencyTriggerEngine() :
// constructor
TriggerEngine(string("PersistencyTriggerEngine"), kPersistencyTrigger ) {
}
// destructor
//______________________________________________________________________________
PersistencyTriggerEngine::~PersistencyTriggerEngine() {
}
//______________________________________________________________________________
void PersistencyTriggerEngine::Simulate( MacroCellData* pData ) {
// simulate trigger with only persistency included
int NConsGtu = pData->Cell()->TriggerThreshold();
// check if there is enough activity
if ( ( pData->GtuEnd() - pData->GtuStart() + 1 ) <= NConsGtu ) return;
// loop over relevant GTUs
for( int gtu = pData->GtuStart(); gtu < pData->GtuEnd(); gtu++) {
bool trigger = true;
for(int i=0; i < NConsGtu; i++) {
vector<MacroCellHit*>* hits = pData->Hits(gtu+i);
if ( hits ) {
if ( hits->size() ) {
MacroCellHit *hit = (*hits)[0];
if ( !hit ) {
trigger = false;
}
}
else {
trigger = false;
}
}
else {
trigger = false;
}
}
if ( trigger ) {
SetTrigger();
SetGtuTrigger( gtu );
Msg(EsafMsg::Info) << "=== TRIGGER! Cell:" << pData->Cell()->Id()
<< " Gtu:" << gtu << " Engine:" << GetName() << MsgDispatch;
return;
}
}
}