//____________________________________________________________________
//
// Matching of trigger objects to offline reconstructed objects
// 

//  
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlTriggerMatch.cxx,v 1.3 2011/03/08 16:06:54 fthomas Exp $
// Copyright: 2010 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlTriggerMatch
#include <AtlTriggerMatch.h>
#endif
#include <AtlTrigger.h>

#ifndef __CINT__
ClassImp(AtlTriggerMatch);
#endif

//____________________________________________________________________

AtlTriggerMatch::AtlTriggerMatch() {
    //
    // Default constructor
    //
    fL1Items = new TRefArray;
    fHLTItems = new TRefArray;
}

//____________________________________________________________________

AtlTriggerMatch::~AtlTriggerMatch() {
    //
    // Default destructor
    //
    delete fL1Items;  fL1Items  = 0;
    delete fHLTItems; fHLTItems = 0;
}

//____________________________________________________________________


void AtlTriggerMatch::Clear(Option_t *option) {
    //
    // Clear this object
    //
    delete fL1Items;  fL1Items  = 0;
    delete fHLTItems; fHLTItems = 0;

    
}

//____________________________________________________________________

Bool_t AtlTriggerMatch::HasMatchedL1(const char* L1ItemName, Int_t RunNr,
				     AtlTrigger *trigger) const {
    //
    // Test if this object has matched the given L1 trigger item
    //
    AtlTriggerItem *probe = trigger->GetL1Item(L1ItemName, RunNr, kFALSE);
    
    TIter next(fL1Items);
    AtlTriggerItem *item = 0;
    while ( (item = (AtlTriggerItem*)next()) ) {
	if ( item == probe ) return kTRUE;
    }
    return kFALSE;
}

//____________________________________________________________________

Bool_t AtlTriggerMatch::HasMatchedHLT(const char* HLTItemName, Int_t RunNr,
				      AtlTrigger *trigger) const {
    //
    // Test if this object has matched the given HLT trigger item
    //
    AtlTriggerItem *probe = trigger->GetHLTItem(HLTItemName, RunNr, kFALSE);
    
    TIter next(fHLTItems);
    AtlTriggerItem *item = 0;
    while ( (item = (AtlTriggerItem*)next()) ) {
	if ( item == probe ) return kTRUE;
    }
    return kFALSE;
}

//____________________________________________________________________

void AtlTriggerMatch::AddL1Match(AtlTriggerItem *item) {
    //
    // Add matched L1 trigger item.
    // The method ensures that a given item is stored only once.
    //
    if ( fL1Items->FindObject(item) == 0 ) fL1Items->Add(item);
}

//____________________________________________________________________

void AtlTriggerMatch::AddHLTMatch(AtlTriggerItem *item) {
    //
    // Add matched HLT trigger item.
    // The method ensures that a given item is stored only once.
    //
    if ( fHLTItems->FindObject(item) == 0 ) fHLTItems->Add(item);
}
 AtlTriggerMatch.cxx:1
 AtlTriggerMatch.cxx:2
 AtlTriggerMatch.cxx:3
 AtlTriggerMatch.cxx:4
 AtlTriggerMatch.cxx:5
 AtlTriggerMatch.cxx:6
 AtlTriggerMatch.cxx:7
 AtlTriggerMatch.cxx:8
 AtlTriggerMatch.cxx:9
 AtlTriggerMatch.cxx:10
 AtlTriggerMatch.cxx:11
 AtlTriggerMatch.cxx:12
 AtlTriggerMatch.cxx:13
 AtlTriggerMatch.cxx:14
 AtlTriggerMatch.cxx:15
 AtlTriggerMatch.cxx:16
 AtlTriggerMatch.cxx:17
 AtlTriggerMatch.cxx:18
 AtlTriggerMatch.cxx:19
 AtlTriggerMatch.cxx:20
 AtlTriggerMatch.cxx:21
 AtlTriggerMatch.cxx:22
 AtlTriggerMatch.cxx:23
 AtlTriggerMatch.cxx:24
 AtlTriggerMatch.cxx:25
 AtlTriggerMatch.cxx:26
 AtlTriggerMatch.cxx:27
 AtlTriggerMatch.cxx:28
 AtlTriggerMatch.cxx:29
 AtlTriggerMatch.cxx:30
 AtlTriggerMatch.cxx:31
 AtlTriggerMatch.cxx:32
 AtlTriggerMatch.cxx:33
 AtlTriggerMatch.cxx:34
 AtlTriggerMatch.cxx:35
 AtlTriggerMatch.cxx:36
 AtlTriggerMatch.cxx:37
 AtlTriggerMatch.cxx:38
 AtlTriggerMatch.cxx:39
 AtlTriggerMatch.cxx:40
 AtlTriggerMatch.cxx:41
 AtlTriggerMatch.cxx:42
 AtlTriggerMatch.cxx:43
 AtlTriggerMatch.cxx:44
 AtlTriggerMatch.cxx:45
 AtlTriggerMatch.cxx:46
 AtlTriggerMatch.cxx:47
 AtlTriggerMatch.cxx:48
 AtlTriggerMatch.cxx:49
 AtlTriggerMatch.cxx:50
 AtlTriggerMatch.cxx:51
 AtlTriggerMatch.cxx:52
 AtlTriggerMatch.cxx:53
 AtlTriggerMatch.cxx:54
 AtlTriggerMatch.cxx:55
 AtlTriggerMatch.cxx:56
 AtlTriggerMatch.cxx:57
 AtlTriggerMatch.cxx:58
 AtlTriggerMatch.cxx:59
 AtlTriggerMatch.cxx:60
 AtlTriggerMatch.cxx:61
 AtlTriggerMatch.cxx:62
 AtlTriggerMatch.cxx:63
 AtlTriggerMatch.cxx:64
 AtlTriggerMatch.cxx:65
 AtlTriggerMatch.cxx:66
 AtlTriggerMatch.cxx:67
 AtlTriggerMatch.cxx:68
 AtlTriggerMatch.cxx:69
 AtlTriggerMatch.cxx:70
 AtlTriggerMatch.cxx:71
 AtlTriggerMatch.cxx:72
 AtlTriggerMatch.cxx:73
 AtlTriggerMatch.cxx:74
 AtlTriggerMatch.cxx:75
 AtlTriggerMatch.cxx:76
 AtlTriggerMatch.cxx:77
 AtlTriggerMatch.cxx:78
 AtlTriggerMatch.cxx:79
 AtlTriggerMatch.cxx:80
 AtlTriggerMatch.cxx:81
 AtlTriggerMatch.cxx:82
 AtlTriggerMatch.cxx:83
 AtlTriggerMatch.cxx:84
 AtlTriggerMatch.cxx:85
 AtlTriggerMatch.cxx:86
 AtlTriggerMatch.cxx:87
 AtlTriggerMatch.cxx:88
 AtlTriggerMatch.cxx:89
 AtlTriggerMatch.cxx:90
 AtlTriggerMatch.cxx:91
 AtlTriggerMatch.cxx:92
 AtlTriggerMatch.cxx:93
 AtlTriggerMatch.cxx:94
 AtlTriggerMatch.cxx:95
 AtlTriggerMatch.cxx:96
 AtlTriggerMatch.cxx:97
 AtlTriggerMatch.cxx:98
 AtlTriggerMatch.cxx:99
 AtlTriggerMatch.cxx:100
 AtlTriggerMatch.cxx:101
 AtlTriggerMatch.cxx:102
 AtlTriggerMatch.cxx:103
 AtlTriggerMatch.cxx:104
 AtlTriggerMatch.cxx:105