Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#if defined(__CINT__) && !defined(__MAKECINT__)
class loadFWLite {
  public:
    loadFWLite() {
      gSystem->Load("libFWCoreFWLite");
      FWLiteEnabler::enable();
    }
};

static loadFWLite lfw;
#endif

#include "DataFormats/FWLite/interface/Handle.h"

#include <string>
#include <vector>
#include <iostream>

void triggerResultsByName_multi_cint()
{
  std::vector<std::string> files1;
  files1.push_back(std::string("prodmerge.root"));

  std::vector<std::string> files2;
  files2.push_back(std::string("prod1.root"));
  files2.push_back(std::string("prod2.root"));

  fwlite::MultiChainEvent ev(files1, files2);
  fwlite::Handle<edm::TriggerResults> hTriggerResults;
  
  bool expectedValue[4] = { true, false, true, true };
  int iEvent = 0;
  for (ev.toBegin(); ! ev.atEnd(); ++ev) {
    bool accept = false;

    hTriggerResults.getByLabel(ev, "TriggerResults", "", "TEST");

    if (hTriggerResults.isValid()) {

      edm::TriggerResultsByName resultsByName = ev.triggerResultsByName(*hTriggerResults);
      std::cout << "From TriggerResultsByName, accept = "
                << resultsByName.accept("p") << "\n";
      accept = resultsByName.accept("p");
    } else {
      std::cerr << "triggerResultsByName_multi_cint.C, invalid TriggerResults handle" << std::endl;
      abort();
    }
    if (iEvent < 4 && expectedValue[iEvent] != accept) {
      std::cerr << "triggerResultsByName_cint.C, trigger results do not match expected values" << std::endl;
      abort();
    }
    ++iEvent;
  }
}