CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes

stor::TriggerSelector Class Reference

#include <TriggerSelector.h>

List of all members.

Classes

class  TreeElement

Public Types

typedef std::vector< std::string > Strings

Public Member Functions

bool acceptEvent (edm::TriggerResults const &) const
bool acceptEvent (unsigned char const *, int) const
bool returnStatus (edm::HLTGlobalStatus const &trStatus) const
 TriggerSelector (Strings const &pathspecs, Strings const &names)
 TriggerSelector (edm::ParameterSet const &pset, Strings const &triggernames, bool old_=false)
 TriggerSelector (std::string const &expression, Strings const &triggernames)
bool wantAll () const
 ~TriggerSelector ()

Static Public Member Functions

static std::vector< std::string > getEventSelectionVString (edm::ParameterSet const &pset)
static std::string makeXMLString (std::string const &input)

Private Member Functions

void init (std::string const &path, Strings const &triggernames)

Static Private Member Functions

static std::string trim (std::string input)

Private Attributes

bool acceptAll_
boost::shared_ptr
< edm::EventSelector
eventSelector_
std::string expression_
boost::shared_ptr< TreeElementmasterElement_
bool useOld_

Static Private Attributes

static const bool debug_ = false

Detailed Description

Event selector allowing for and/not combination of triggers/paths

Author:
mommsen
Revision:
1.7
Date:
2011/03/07 15:31:32

Definition at line 29 of file TriggerSelector.h.


Member Typedef Documentation

typedef std::vector<std::string> stor::TriggerSelector::Strings

Definition at line 33 of file TriggerSelector.h.


Constructor & Destructor Documentation

stor::TriggerSelector::TriggerSelector ( Strings const &  pathspecs,
Strings const &  names 
)

Obsolete: Initializes TriggerSelector to use edm::EventSelector for selection.

Definition at line 21 of file TriggerSelector.cc.

   :
  useOld_(true)
  {
    acceptAll_=false;
    eventSelector_.reset( new edm::EventSelector(pathspecs,names));
  }
stor::TriggerSelector::TriggerSelector ( edm::ParameterSet const &  pset,
Strings const &  triggernames,
bool  old_ = false 
)

Takes ParameterSet wth TriggerSelector string or EventSelection list, and a list of triggers. if old_ is true, it is forced to use EventSelection.

Definition at line 32 of file TriggerSelector.cc.

References edm::ParameterSet::empty(), edm::ParameterSet::getParameter(), init, and EgammaValidation_cff::paths.

   :
  useOld_(old_)
  {
    acceptAll_=false;
    if (old_) {
      //old mode forced
      eventSelector_.reset( new edm::EventSelector(config, triggernames));
      return;
    }
    if (!config.empty()) {

      //let's see if non empty TriggerSelector is present
      try {
        std::string myPath = trim(config.getParameter<std::string>("TriggerSelector"));
        if (!myPath.empty()) { 
          init(myPath, triggernames);
          return;
        }
      }
      catch(...) {}

      //now try with the SelectEvents 
      try {
        Strings paths;
        paths = config.getParameter<Strings>("SelectEvents");
        if (!paths.empty()) {
          useOld_=true;
          eventSelector_.reset( new edm::EventSelector(config, triggernames));
          return;
        }     
      }
      catch(...) {}
    }
    //if selection parameters aren't present, don't do selection
    //log
    acceptAll_=true;
  }
stor::TriggerSelector::TriggerSelector ( std::string const &  expression,
Strings const &  triggernames 
)

Takes selection string and list of triggers

Definition at line 75 of file TriggerSelector.cc.

References init.

   :
  useOld_(false)
  {
    init (trim(expression),triggernames);
  }
stor::TriggerSelector::~TriggerSelector ( ) [inline]

Definition at line 53 of file TriggerSelector.h.

{};

Member Function Documentation

bool stor::TriggerSelector::acceptEvent ( edm::TriggerResults const &  tr) const

Evaluates if trigger results pass selection

Definition at line 123 of file TriggerSelector.cc.

References acceptAll_, eventSelector_, masterElement_, and useOld_.

  {
    if (useOld_) {
      return eventSelector_->acceptEvent(tr);
    }

    if (acceptAll_) return true;
    
    return masterElement_->returnStatus(tr);
  }
bool stor::TriggerSelector::acceptEvent ( unsigned char const *  array_of_trigger_results,
int  number_of_trigger_paths 
) const

Definition at line 136 of file TriggerSelector.cc.

  {

    if (useOld_)
      return eventSelector_->acceptEvent(array_of_trigger_results,number_of_trigger_paths);

    if (acceptAll_) return true;

    // Form HLTGlobalStatus object to represent the array_of_trigger_results
    edm::HLTGlobalStatus tr(number_of_trigger_paths);
    int byteIndex = 0;
    int subIndex  = 0;
    for (int pathIndex = 0; pathIndex < number_of_trigger_paths; ++pathIndex)
    {
      int state = array_of_trigger_results[byteIndex] >> (subIndex * 2);
      state &= 0x3;
      edm::HLTPathStatus pathStatus(static_cast<edm::hlt::HLTState>(state));
      tr[pathIndex] = pathStatus;
      ++subIndex;
      if (subIndex == 4)
      { ++byteIndex;
        subIndex = 0;
      }
    }
    // Now make the decision, based on the HLTGlobalStatus tr,
    // which we have created from the supplied array of results
    return masterElement_->returnStatus(tr);
  }
std::vector< std::string > stor::TriggerSelector::getEventSelectionVString ( edm::ParameterSet const &  pset) [static]

Definition at line 118 of file TriggerSelector.cc.

void stor::TriggerSelector::init ( std::string const &  path,
Strings const &  triggernames 
) [private]

Definition at line 86 of file TriggerSelector.cc.

References groupFilesInBlocks::temp.

  {
    //debug_ = true;
    if (expression.empty())
    {
      acceptAll_ = true;
      return;
    }
    if (expression.size()==1 && expression.at(0)=='*') acceptAll_=true;
    else acceptAll_=false;

    //replace all possible alternate operators (.AND. and .OR.)
    {
      using namespace boost;
      std::string temp;
      temp = regex_replace( expression , regex(".AND."), "&&");
      expression_ = regex_replace( temp, regex(".and."), "&&");
      temp = regex_replace( expression_, regex(".OR."), "||"); 
      expression_ = regex_replace( temp, regex(".or."), "||");
    }

    //build decision tree
    masterElement_.reset( new TreeElement(expression_,triggernames));
  }
std::string stor::TriggerSelector::makeXMLString ( std::string const &  input) [static]

Definition at line 397 of file TriggerSelector.cc.

References convertSQLitetoXML_cfg::output, and pos.

  {
    std::string output;
    if (!input.empty()) {
      for (size_t pos=0;pos<input.size();pos++) {
        char ch = input.at(pos);
        if (ch=='&') output.append("&amp;");
        else output.append(1,ch);
      }
    }
    return output;
  }
bool stor::TriggerSelector::returnStatus ( edm::HLTGlobalStatus const &  trStatus) const [inline]

Definition at line 77 of file TriggerSelector.h.

References masterElement_.

                                                                  {
        return masterElement_->returnStatus(trStatus);
      }
std::string stor::TriggerSelector::trim ( std::string  input) [static, private]

Definition at line 382 of file TriggerSelector.cc.

References LaserDQM_cfg::input, and pos.

  {
    if (!input.empty())
    {
      std::string::size_type pos = input.find_first_not_of(" ");
      if (pos != std::string::npos)
        input.erase(0,pos);

      pos = input.find_last_not_of(" ");
      if (pos != std::string::npos)
        input.erase(pos+1);
    }
    return input;
  } 
bool stor::TriggerSelector::wantAll ( ) const [inline]

Returns status of always positive bit

Definition at line 58 of file TriggerSelector.h.

References acceptAll_.

                           { 
        //if (useOld_) return eventSelector_->wantAll();
        return acceptAll_; 
      }

Member Data Documentation

Definition at line 94 of file TriggerSelector.h.

Referenced by acceptEvent(), and wantAll().

const bool stor::TriggerSelector::debug_ = false [static, private]

Definition at line 158 of file TriggerSelector.h.

Definition at line 155 of file TriggerSelector.h.

Referenced by acceptEvent().

std::string stor::TriggerSelector::expression_ [private]

Definition at line 153 of file TriggerSelector.h.

boost::shared_ptr<TreeElement> stor::TriggerSelector::masterElement_ [private]

Definition at line 150 of file TriggerSelector.h.

Referenced by acceptEvent(), and returnStatus().

Definition at line 156 of file TriggerSelector.h.

Referenced by acceptEvent().