Universita' di GenovaINFN Sezione di Genova  
AIRWATCH / EUSO Genova

PersistencyTriggerEngine - source file

// ESAF : Euso Simulation and Analysis Framework
// $Id: PersistencyTriggerEngine.cc,v 1.11 2005/11/10 10:36:18 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_t NConsGtu = pData->Cell()->TriggerThreshold(); 

    // check if there is enough activity
    if ( ( pData->GtuEnd() - pData->GtuStart() + 1 ) <= NConsGtu ) return;  

    // loop over relevant GTUs
    for( Int_t gtu = pData->GtuStart(); gtu < pData->GtuEnd(); gtu++) {

        Bool_t trigger = kTRUE;

        for(Int_t i=0; i < NConsGtu; i++) {

            vector<MacroCellHit*>* hits = pData->Hits(gtu+i);
            if ( hits ) {
                if ( hits->size() ) {
                    MacroCellHit *hit = (*hits)[0];
                    if ( !hit ) {
                        trigger = kFALSE;
                    }
                } 
                else {
                    trigger = kFALSE;
                }
            } 
            else {
                trigger = kFALSE;
            }
        }

        if ( trigger ) {
            SetTrigger();
            SetGtuTrigger( gtu );
            Msg(EsafMsg::Info) << "=== TRIGGER! Cell:" << pData->Cell()->Id() 
                 << " Gtu:" << gtu << " Engine:" << GetName() << MsgDispatch;
            return;
        }
    }
}
About Us | EUSO Official Website | Web pages created by Roberto Pesce and Alessandro Thea - Last Update Wed Nov 16 16:57:39 2005 Wed Nov 16 16:29:22 2005