Program Listing for File HLTJetRoIBuilder.cxx

Return to documentation for file (Root/HLTJetRoIBuilder.cxx)

/******************************************
 *
 * This class builds HLT jets and thier associated objects
 *
 * John Alison (john.alison@cern.ch)
 *
 *
 ******************************************/

//#include <iostream>
//#include <vector>
//
//#include <EventLoop/Job.h>
//#include <EventLoop/StatusCode.h>
//#include <EventLoop/Worker.h>
//
//#include "xAODEventInfo/EventInfo.h"
//#include "xAODJet/JetContainer.h"
//#include "xAODJet/JetAuxContainer.h"
//#include "xAODJet/Jet.h"
//#include "xAODBase/IParticleHelpers.h"
//#include "xAODBase/IParticleContainer.h"
//#include "xAODBase/IParticle.h"
//#include "AthContainers/ConstDataVector.h"
//#include "AthContainers/DataVector.h"
//#include "xAODCore/ShallowCopy.h"
//
//#include "xAODAnaHelpers/HelperFunctions.h"
//#include "xAODAnaHelpers/HLTJetRoIBuilder.h"
//
//#include "TrigConfxAOD/xAODConfigTool.h"
//#include "TrigDecisionTool/TrigDecisionTool.h"
//
//ClassImp(HLTJetRoIBuilder)
//
//HLTJetRoIBuilder :: HLTJetRoIBuilder () :
//  Algorithm("HLTJetRoIBuilder")
//{
//}
//
//
//EL::StatusCode HLTJetRoIBuilder :: setupJob (EL::Job& job)
//{
//  ANA_MSG_DEBUG( "Calling setupJob");
//  job.useXAOD ();
//  xAOD::Init( "HLTJetRoIBuilder" ).ignore(); // call before opening first file
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: histInitialize ()
//{
//  ANA_CHECK( xAH::Algorithm::algInitialize());
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: fileExecute ()
//{
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: changeInput (bool /*firstFile*/)
//{
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: initialize ()
//{
//
//  ANA_MSG_DEBUG( "Initializing HLTJetRoIBuilder Interface... ");
//
//  m_event = wk()->xaodEvent();
//  m_store = wk()->xaodStore();
//
//  // Grab the TrigDecTool from the ToolStore
//  if(!m_trigDecTool_handle.isUserConfigured()){
//    ANA_MSG_FATAL("A configured " << m_trigDecTool_handle.typeAndName() << " must have been previously created! Are you creating one in xAH::BasicEventSelection?" );
//    return EL::StatusCode::FAILURE;
//  }
//  ANA_CHECK( m_trigDecTool_handle.retrieve());
//  ANA_MSG_DEBUG("Retrieved tool: " << m_trigDecTool_handle);
//
//  if(m_trigItem.find("split") != std::string::npos){
//    m_jetName = "SplitJet";
//    m_vtxName = "xPrimVx";
//  }
//
//  if(m_trigItem.find("gsc") != std::string::npos){
//    m_jetName = "GSCJet";
//    m_vtxName = "xPrimVx";
//  }
//
//  if(m_trigItem.find("FTK") != std::string::npos){
//    m_trkName = "InDetTrigTrackingxAODCnv_Bjet_FTK";
//    m_vtxName = "";
//    //m_vtxName = "HLT_PrimVertexFTK";
//  }
//
//  if(m_trigItem.find("FTKRefit") != std::string::npos){
//    m_trkName = "InDetTrigTrackingxAODCnv_Bjet_FTKRefit";
//  }
//
//  if(m_trigItem.find("FTKVtx") != std::string::npos){
//    m_trkName = "InDetTrigTrackingxAODCnv_Bjet_IDTrig";
//  }
//
//  ANA_MSG_INFO("HLTJetRoIBuilder::Configured " << m_name << " with ");
//  ANA_MSG_INFO("\tm_trigItem: " << m_trigItem);
//  ANA_MSG_INFO("\tm_trigItemVeto: " << m_trigItemVeto);
//  ANA_MSG_INFO("\tm_trkName: " << m_trkName);
//  ANA_MSG_INFO("\tm_vtxName: " << m_vtxName);
//  ANA_MSG_INFO("\tm_jetName: " << m_jetName);
//
//  return EL::StatusCode::SUCCESS;
//}
//
//
//EL::StatusCode HLTJetRoIBuilder :: execute ()
//{
//  ANA_MSG_DEBUG( "Doing HLT JEt ROI Building... ");
//
//  if(m_doHLTBJet){
//    return buildHLTBJets();
//  }else if(m_doHLTJet){
//    return buildHLTJets();
//  }
//
//
//
//  if(msgLvl(MSG::VERBOSE)) m_store->print();
//
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: buildHLTBJets ()
//{
//  ANA_MSG_VERBOSE(" "  );
//  auto triggerChainGroup = m_trigDecTool_handle->getChainGroup(m_trigItem);
//
//  std::vector<std::string> triggersUsed = triggerChainGroup->getListOfTriggers();
//  std::vector<std::string> triggersAfterVeto;
//  for(std::string trig : triggersUsed){
//    if(trig.find("antimatchdr") != std::string::npos){
//      continue;
//    }
//
//    if((m_trigItemVeto != "") && (trig.find(m_trigItemVeto) != std::string::npos)){
//      continue;
//    }
//    triggersAfterVeto.push_back(trig);
//  }
//
//  std::string m_trigItemAfterVeto = "";
//  bool firstItem = true;
//  for(std::string trig : triggersAfterVeto){
//    if(firstItem) m_trigItemAfterVeto += trig;
//    else          m_trigItemAfterVeto += "||"+trig;
//    firstItem = false;
//  }
//
//  ANA_MSG_VERBOSE(m_name << " " << m_trigItem << " matches");
//  ANA_MSG_VERBOSE(m_trigItemAfterVeto);
//  auto triggerChainGroupAfterVeto = m_trigDecTool_handle->getChainGroup(m_trigItemAfterVeto);
//  std::vector<std::string> triggersUsedAfterVeto = triggerChainGroupAfterVeto->getListOfTriggers();
//  for(std::string trig : triggersUsedAfterVeto){
//    ANA_MSG_VERBOSE(" \t " << trig);
//    if(m_trigDecTool_handle->isPassed(trig))
//      ANA_MSG_VERBOSE(" \t " << trig << " Passed "  );
//  }
//
//
//  //
//  // Create the new container and its auxiliary store.
//  //
//  ANA_MSG_VERBOSE("Creating the new container ");
//  xAOD::JetContainer*     hltJets    = new xAOD::JetContainer();
//  xAOD::JetAuxContainer*  hltJetsAux = new xAOD::JetAuxContainer();
//  hltJets->setStore( hltJetsAux ); //< Connect the two
//
//  //
//  //  For Adding Tracks to the Jet
//  //
//  ANA_MSG_VERBOSE("Making the decorators ");
//  static xAOD::Jet::Decorator<std::vector<const xAOD::TrackParticle*> > m_track_decoration      ("HLTBJetTracks");
//  static xAOD::Jet::Decorator<const xAOD::Vertex*>                 m_vtx_decoration        ("HLTBJetTracks_vtx");
//  static xAOD::Jet::Decorator<const xAOD::Vertex*>                 m_vtx_decoration_bkg    ("HLTBJetTracks_vtx_bkg");
//  static xAOD::Jet::Decorator<char >                               m_vtx_hadDummyPV        ("hadDummyPV");
//  static xAOD::Jet::Decorator<const xAOD::Vertex*>                 m_offline_vtx_decoration("offline_vtx");
//
//  static xAOD::Jet::Decorator<float >                              m_bs_online_vz       ("bs_online_vz");
//  static xAOD::Jet::Decorator<float >                              m_bs_online_vy       ("bs_online_vy");
//  static xAOD::Jet::Decorator<float >                              m_bs_online_vx       ("bs_online_vx");
//
//
//  //
//  // get primary vertex
//  //
//  ANA_MSG_VERBOSE("Getting the PV ");
//  const xAOD::VertexContainer *offline_vertices(nullptr);
//  const xAOD::Vertex *offline_pvx(nullptr);
//  ANA_CHECK( HelperFunctions::retrieve(offline_vertices, m_vertexContainerName, m_event, m_store, msg()) );
//  offline_pvx = HelperFunctions::getPrimaryVertex(offline_vertices, msg());
//
//  //
//  // get event info
//  //
//  const xAOD::EventInfo* eventInfo(nullptr);
//  ANA_CHECK( HelperFunctions::retrieve(eventInfo, m_eventInfoContainerName, m_event, m_store, msg()) );
//
//
//  //
//  //  Make accessors/decorators
//  //
//  static SG::AuxElement::Decorator< const xAOD::BTagging* > hltBTagDecor( "HLTBTag" );
//
//  Trig::FeatureContainer fc = m_trigDecTool_handle->features(m_trigItemAfterVeto, TrigDefs::Physics );
//  Trig::FeatureContainer::combination_const_iterator comb   (fc.getCombinations().begin());
//  Trig::FeatureContainer::combination_const_iterator combEnd(fc.getCombinations().end());
//  ANA_MSG_VERBOSE( m_name << " New Event --------------- ");
//  ANA_MSG_VERBOSE( " Event Pass? " << m_trigDecTool_handle->isPassed(m_trigItemAfterVeto) );
//  ANA_MSG_VERBOSE( " comb size " << fc.getCombinations().size());
//  for( ; comb!=combEnd ; ++comb) {
//    std::vector< Trig::Feature<xAOD::JetContainer> >            jetCollections  = comb->containerFeature<xAOD::JetContainer>(m_jetName);
//    std::vector< Trig::Feature<xAOD::BTaggingContainer> >       bjetCollections = comb->containerFeature<xAOD::BTaggingContainer>("HLTBjetFex");
//    std::vector< Trig::Feature<xAOD::TrackParticleContainer> >  trkCollections;
//    if(m_readHLTTracks) trkCollections = comb->containerFeature<xAOD::TrackParticleContainer>(m_trkName);
//    //std::vector< Trig::Feature<xAOD::TrackParticleContainer> >  ftfCollections  = comb->containerFeature<xAOD::TrackParticleContainer>("InDetTrigTrackingxAODCnv_Bjet_FTF");
//
//    std::vector<Trig::Feature<xAOD::VertexContainer> > vtxCollections;
//    std::vector<Trig::Feature<xAOD::VertexContainer> > backupVtxCollections;
//    if(m_readHLTVtx){
//      backupVtxCollections = comb->containerFeature<xAOD::VertexContainer>("EFHistoPrmVtx");
//
//      if(m_vtxName.size()){
//  vtxCollections = comb->containerFeature<xAOD::VertexContainer>(m_vtxName);
//      }else{
//  vtxCollections = comb->containerFeature<xAOD::VertexContainer>();
//      }
//    }
//
//    //ANA_MSG_INFO(" Test Size ");
//    //ANA_MSG_INFO(" \tSplitJet: " << comb->containerFeature<xAOD::JetContainer>("SplitJet").size());
//    //ANA_MSG_INFO(" \tGSCJet: "   << comb->containerFeature<xAOD::JetContainer>("GSCJet")  .size());
//    //ANA_MSG_INFO(" \tEFJet:  "   << comb->containerFeature<xAOD::JetContainer>("EFJet")   .size());
//    //
//    //// FTK Vertex debugging
//    //ANA_MSG_INFO(" Test Size " << vtxCollections.size() << "  '" << m_vtxName << "'");
//    //ANA_MSG_INFO(" Test Size2 " << vtxCollections.size());
//    //ANA_MSG_INFO(" \tempty: " << comb->containerFeature<xAOD::VertexContainer>().size());
//    //ANA_MSG_INFO(" \tEFHistoPrmVtx: " << comb->containerFeature<xAOD::VertexContainer>("EFHistoPrmVtx").size();
//    //ANA_MSG_INFO(" \txPrimVx: " << comb->containerFeature<xAOD::VertexContainer>("xPrimVx").size());
//    //ANA_MSG_INFO(" \tPrimVertexFTK " << comb->containerFeature<xAOD::VertexContainer>("PrimVertexFTK").size());
//    //ANA_MSG_INFO(" \tPrimVertexFTKRaw " << comb->containerFeature<xAOD::VertexContainer>("PrimVertexFTKRaw").size());
//    //ANA_MSG_INFO(" \tPrimVertexFTKRefit " << comb->containerFeature<xAOD::VertexContainer>("PrimVertexFTKRefit").size();
//    //ANA_MSG_INFO(" \tHLT_PrimVertexFTK " << comb->containerFeature<xAOD::VertexContainer>("HLT_PrimVertexFTK").size());
//
//    //
//    //    std::vector<Trig::Feature<xAOD::VertexContainer> > EvtxCollections = comb->containerFeature<xAOD::VertexContainer>();
//    //    for ( unsigned ifeat=0 ; ifeat<EvtxCollections.size() ; ifeat++ ) {
//    //      ANA_MSG_INFO(EvtxCollections.at(ifeat).label());
//    //      for( auto vtx_itr : *(EvtxCollections.at(ifeat).cptr()) ){
//    //          ANA_MSG_INFO(vtx_itr->vertexType() << " ");
//    //      }
//    //    }
//
//    bool isValid = true;
//
//    ANA_MSG_VERBOSE("ncontainers  " << bjetCollections.size());
//
//    if(jetCollections.size() != bjetCollections.size()){
//      ANA_MSG_ERROR("Problem in container size: " << m_name << " jets: "<< jetCollections.size() << " bjets: "<< bjetCollections.size());
//      isValid = false;
//
//      auto triggerChainGroupAfterVeto = m_trigDecTool_handle->getChainGroup(m_trigItemAfterVeto);
//      std::vector<std::string> triggersUsedAfterVeto = triggerChainGroupAfterVeto->getListOfTriggers();
//      ANA_MSG_VERBOSE("Passed Triggers ");
//      for(std::string trig : triggersUsedAfterVeto){
//        auto trigChain = m_trigDecTool_handle->getChainGroup(trig);
//        if(trigChain->isPassed()) ANA_MSG_VERBOSE(" \t " << trig);
//      }
//
//    }
//
//    if(m_readHLTTracks && jetCollections.size() != trkCollections.size()){
//      ANA_MSG_ERROR("Problem in container size: " << m_name << " jets: "<< jetCollections.size() << " trks: "<< trkCollections.size());
//      ANA_MSG_ERROR(" Jet Collection " << m_jetName << " Trk Collection:  " << m_trkName);
//      isValid = false;
//    }
//
//    //if(jetCollections.size() != ftfCollections.size()){
//    //  ANA_MSG_ERROR("Problem in container size: " << m_name  << " jets: "<< jetCollections.size() << " ftfs: "<< ftfCollections.size());
//    //  isValid = false;
//    //}
//
//    if(m_readHLTVtx){
//      if(vtxCollections.size() < jetCollections.size()){
//  ANA_MSG_ERROR("Problem in container size: " << m_name
//                       << " jets: "<< jetCollections.size() << " " << m_jetName
//                       << " vtx: "<< vtxCollections.size()  << " " << m_vtxName);
//  for ( unsigned ifeat=0 ; ifeat<vtxCollections.size() ; ifeat++ ) {
//    ANA_MSG_INFO("Feture: " << ifeat);
//    for( auto vtx_itr : *(vtxCollections.at(ifeat).cptr()) ){
//      ANA_MSG_INFO(vtx_itr->vertexType());
//    }
//  }
//  isValid = false;
//      }
//    }
//
//    if(!isValid) continue;
//
//    //Loop over jets until a jet with track size > 0 is found
//
//    // Declare variables here as same bs for all jets
//    float var_bs_online_vx = m_onlineBSTool.getOnlineBSInfo(eventInfo, xAH::OnlineBeamSpotTool::BSData::BSx);
//    float var_bs_online_vy = m_onlineBSTool.getOnlineBSInfo(eventInfo, xAH::OnlineBeamSpotTool::BSData::BSy);
//    float var_bs_online_vz = m_onlineBSTool.getOnlineBSInfo(eventInfo, xAH::OnlineBeamSpotTool::BSData::BSz);
//
//    ANA_MSG_VERBOSE(" bs_online_vx " << var_bs_online_vx << " bs_online_vy " << var_bs_online_vy << " bs_online_vz " << var_bs_online_vz);
//
//
//    //ANA_MSG_INFO(" is Valid " << jetCollections.size() << " " << vtxCollections.size());
//    for ( unsigned ifeat=0 ; ifeat<jetCollections.size() ; ifeat++ ) {
//      const xAOD::Jet* hlt_jet = getTrigObject<xAOD::Jet, xAOD::JetContainer>(jetCollections.at(ifeat));
//      if(!hlt_jet) continue;
//
//      bool passOverlap = true;
//      for( const xAOD::Jet* previousJet : *hltJets){
//  if(previousJet->p4().DeltaR(hlt_jet->p4()) < 0.1){
//    const xAOD::BTagging *p_btag_info = previousJet->auxdata< const xAOD::BTagging* >("HLTBTag");
//    double p_mv2c10 = -99;
//    p_btag_info->MVx_discriminant("MV2c10", p_mv2c10);
//
//    double this_mv2c10 = -99;
//    const xAOD::BTagging* hlt_btag = getTrigObject<xAOD::BTagging, xAOD::BTaggingContainer>(bjetCollections.at(ifeat));
//    if(hlt_btag){
//      hlt_btag->MVx_discriminant("MV2c10", this_mv2c10);
//    }
//
//    if(fabs(p_mv2c10 - this_mv2c10) > 0.01){
//      std::cout << "ERROR:: Previous mv2c10 " << p_mv2c10 << " this mv2c10 "  << this_mv2c10 << std::endl;
//      std::cout << "Previous Jet: pt: " << previousJet->pt() << " eta: " << previousJet->eta() << " phi: " << previousJet->phi() << std::endl;;
//      std::cout << "This Jet: pt: " << hlt_jet->pt() << " eta: " << hlt_jet->eta() << " phi: " << hlt_jet->phi() << std::endl;;
//    }
//    passOverlap = false;
//  }
//      }
//
//      if(!passOverlap){
//  ANA_MSG_VERBOSE(" Jet Failed overlap " );
//  continue;
//      }
//      ANA_MSG_VERBOSE("New Jet: pt: " << hlt_jet->pt() << " eta: " << hlt_jet->eta() << " phi: " << hlt_jet->phi());
//
//      const xAOD::BTagging* hlt_btag = getTrigObject<xAOD::BTagging, xAOD::BTaggingContainer>(bjetCollections.at(ifeat));
//      if(!hlt_btag) continue;
//
//      const xAOD::TrackParticleContainer* hlt_tracks(nullptr);
//      if(m_readHLTTracks){
//  hlt_tracks = trkCollections.at(ifeat).cptr();
//  if(!hlt_tracks) continue;
//      }
//
//      xAOD::Jet* newHLTBJet = new xAOD::Jet();
//      newHLTBJet->makePrivateStore( hlt_jet );
//
//      //
//      // Add Link to BTagging Info
//      //
//      newHLTBJet->auxdecor< const xAOD::BTagging* >("HLTBTag") = hlt_btag;
//
//      //
//      // Add Tracks to BJet
//      //
//      if(m_readHLTTracks){
//
//        std::vector<const xAOD::TrackParticle*> matchedTracks;
//  ANA_MSG_VERBOSE("Trk Size" << hlt_tracks->size());
//
//  for(const xAOD::TrackParticle* thisHLTTrk: *hlt_tracks){
//    ANA_MSG_VERBOSE("\tAdding  track " << thisHLTTrk->pt()   << " " << thisHLTTrk->eta()  << " " << thisHLTTrk->phi());
//    matchedTracks.push_back(thisHLTTrk);
//  }
//
//  //
//  // Adding online beamspot information from online track
//  //
//
//  if(hlt_tracks->size()){
//    ANA_MSG_VERBOSE("Found a hlt_tracks   " << hlt_tracks->at(0)->vx() << " " << hlt_tracks->at(0)->vy() << " " << hlt_tracks->at(0)->vz());
//    ANA_MSG_VERBOSE("Compares to variable " << " " << var_bs_online_vx << " " << var_bs_online_vy << " " << var_bs_online_vz);
//  }
//
//  m_bs_online_vx (*newHLTBJet) = var_bs_online_vx;
//  m_bs_online_vy (*newHLTBJet) = var_bs_online_vy;
//  m_bs_online_vz (*newHLTBJet) = var_bs_online_vz;
//
//  ANA_MSG_VERBOSE("Adding tracks to jet ");
//  m_track_decoration(*newHLTBJet)         = matchedTracks;
//
//
//      }
//
//      ANA_MSG_VERBOSE("Doing it for:        " << m_trigItem);
//      ANA_MSG_VERBOSE("Check for m_jetName: " << m_jetName);
//      ANA_MSG_VERBOSE("Check for m_vtxName: " << m_vtxName);
//
//      //
//      // Check for dummy verticies
//      //
//      // hadDummyPV => class with three option
//      //               0 - IDTrig  Found Vertex
//      //               1 - EFHisto Found Vertex
//      //               2 - No Vertex found
//      if(m_readHLTVtx){
//  if(!HelperFunctions::getPrimaryVertex(vtxCollections.at(ifeat).cptr(), msg())){
//
//    ANA_MSG_VERBOSE("HAVE  No Online Vtx!!! m_vtxName is  " << m_vtxName);
//    for( auto vtx_itr : *(vtxCollections.at(ifeat).cptr()) ) ANA_MSG_VERBOSE(vtx_itr->vertexType());
//
//    //
//    //  Try the HistoPrmVtx
//    //
//    if(backupVtxCollections.size()){
//      ANA_MSG_VERBOSE("Have EFHistoPrmVtx.  ");
//      m_vtx_hadDummyPV  (*newHLTBJet)         = '1';
//      const xAOD::Vertex *backup_pvx = HelperFunctions::getPrimaryVertex(backupVtxCollections.at(ifeat).cptr(), msg());
//      ANA_MSG_VERBOSE("backup_pvx.  " << backup_pvx);
//      m_vtx_decoration  (*newHLTBJet)         = backup_pvx;
//      m_vtx_decoration_bkg(*newHLTBJet)       = backup_pvx;
//    }else{
//      ANA_MSG_INFO("No EFHistoPrmVtx....  ");
//      m_vtx_hadDummyPV  (*newHLTBJet)         = '2';
//      m_vtx_decoration  (*newHLTBJet)         = 0;
//      m_vtx_decoration_bkg(*newHLTBJet)       = 0;
//    }
//
//    //ANA_MSG_INFO("hadDummy and vtxType " << m_vtx_hadDummyPV (*newHLTBJet) << " " << m_vtxName);
//
//  }else{
//
//    m_vtx_decoration  (*newHLTBJet)         = HelperFunctions::getPrimaryVertex(vtxCollections.at(ifeat).cptr(), msg());
//    m_vtx_hadDummyPV  (*newHLTBJet)         = '0';
//
//    if(backupVtxCollections.size()){
//      m_vtx_decoration_bkg(*newHLTBJet)     = HelperFunctions::getPrimaryVertex(backupVtxCollections.at(ifeat).cptr(), msg());
//    }else{
//      m_vtx_decoration_bkg(*newHLTBJet)     = 0;
//    }
//
//  }
//
//  m_offline_vtx_decoration (*newHLTBJet)  = offline_pvx;
//
//  ANA_MSG_VERBOSE("hadDummy and vtxType" << m_vtx_hadDummyPV (*newHLTBJet) << " " << m_vtxName);
//  //if(m_vtx_hadDummyPV (*newHLTBJet) != '0' ){
//  //   ANA_MSG_INFO("hadDummy and vtxType and m_outContainerName  " << m_vtx_hadDummyPV (*newHLTBJet) << " "
//  //  << m_vtxName << ' '<< m_outContainerName);
//  //}
//      } else{ //m_readHLTVtx
//
//  m_vtx_decoration  (*newHLTBJet)         = 0;
//  m_vtx_hadDummyPV  (*newHLTBJet)         = '0';
//  m_vtx_decoration_bkg(*newHLTBJet)       = 0;
//  m_offline_vtx_decoration (*newHLTBJet)  = 0;
//      }
//
//      hltJets->push_back( newHLTBJet );
//      ANA_MSG_VERBOSE("pushed back ");
//
//    }//feature
//
//
//
//  }// Combinations
//
//  ANA_CHECK( m_store->record( hltJets,    m_outContainerName));
//  ANA_CHECK( m_store->record( hltJetsAux, m_outContainerName+"Aux."));
//
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: buildHLTJets ()
//{
//  ANA_MSG_VERBOSE("In buildHLTJets  ");
//  //
//  // Create the new container and its auxiliary store.
//  //
//  xAOD::JetContainer*     hltJets    = new xAOD::JetContainer();
//  xAOD::JetAuxContainer*  hltJetsAux = new xAOD::JetAuxContainer();
//  hltJets->setStore( hltJetsAux ); //< Connect the two
//
//  Trig::FeatureContainer fc = m_trigDecTool_handle->features(m_trigItem);
//  auto jetFeatureContainers = fc.containerFeature<xAOD::JetContainer>();
//
//  ANA_MSG_VERBOSE("ncontainers  " << jetFeatureContainers.size());
//
//  //DataModel_detail::const_iterator<JetContainer >::reference {aka const xAOD::Jet_v1*}
//
//  for(auto  jcont : jetFeatureContainers) {
//    for (const xAOD::Jet*  hlt_jet : *jcont.cptr()) {
//
//      xAOD::Jet* newHLTJet = new xAOD::Jet();
//      newHLTJet->makePrivateStore( hlt_jet );
//
//      hltJets->push_back( newHLTJet );
//    }
//  }
//
//  ANA_CHECK( m_store->record( hltJets,    m_outContainerName));
//  ANA_CHECK( m_store->record( hltJetsAux, m_outContainerName+"Aux."));
//  ANA_MSG_VERBOSE("Left buildHLTJets  ");
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: postExecute ()
//{
//  ANA_MSG_DEBUG( "Calling postExecute");
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: finalize ()
//{
//  ANA_MSG_DEBUG( "Deleting tool instances...");
//  return EL::StatusCode::SUCCESS;
//}
//
//
//
//EL::StatusCode HLTJetRoIBuilder :: histFinalize ()
//{
//  ANA_MSG_DEBUG( "Calling histFinalize");
//  ANA_CHECK( xAH::Algorithm::algFinalize());
//  return EL::StatusCode::SUCCESS;
//}