Program Listing for File HLTJetRoIBuilder.h

Return to documentation for file (xAODAnaHelpers/HLTJetRoIBuilder.h)

#ifndef xAODAnaHelpers_HLTJetRoIBuilder_H
#define xAODAnaHelpers_HLTJetRoIBuilder_H


// algorithm wrapper
#include "xAODAnaHelpers/Algorithm.h"

// tools
#include "AsgTools/AnaToolHandle.h"
#include "xAODAnaHelpers/OnlineBeamSpotTool.h"
#include "TrigDecisionTool/TrigDecisionTool.h"

class HLTJetRoIBuilder : public xAH::Algorithm
{

  public:

    // configuration variables

    std::string m_trigItem = "";
    std::string m_trigItemVeto = "";

    bool        m_doHLTBJet = true;

    bool        m_doHLTJet = false;

    bool        m_readHLTTracks = true;


    bool        m_readHLTVtx = true;


    std::string m_outContainerName = "";

  private:

    asg::AnaToolHandle<Trig::TrigDecisionTool> m_trigDecTool_handle{"Trig::TrigDecisionTool/TrigDecisionTool"};

    std::string                  m_jetName = "EFJet";
    std::string                  m_trkName = "InDetTrigTrackingxAODCnv_Bjet_IDTrig";
    std::string                  m_vtxName = "EFHistoPrmVtx";
    xAH::OnlineBeamSpotTool      m_onlineBSTool;

    EL::StatusCode buildHLTBJets ();
    EL::StatusCode buildHLTJets  ();

  public:

    // this is a standard constructor
    HLTJetRoIBuilder ();

    // these are the functions inherited from Algorithm
    virtual EL::StatusCode setupJob (EL::Job& job);
    virtual EL::StatusCode fileExecute ();
    virtual EL::StatusCode histInitialize ();
    virtual EL::StatusCode changeInput (bool firstFile);
    virtual EL::StatusCode initialize ();
    virtual EL::StatusCode execute ();
    virtual EL::StatusCode postExecute ();
    virtual EL::StatusCode finalize ();
    virtual EL::StatusCode histFinalize ();


    // this is needed to distribute the algorithm to the workers
    ClassDef(HLTJetRoIBuilder, 1);

    template<class Object, class Collection>
      const Object* getTrigObject(Trig::Feature<Collection>& feature){

      const Collection* trigCol = feature.cptr();
      if ( !trigCol ) {
        ANA_MSG_ERROR("ERROR: No Trig Collection pointer");
        return 0;
      }

      if(trigCol->size() != 1){
        ANA_MSG_ERROR("ERROR Trig Collection size " << trigCol->size());
        return 0;;
      }

      return trigCol->at(0);
    }

};


#endif