|  | ATLAS Offline Software
    | 
 
 
 
Go to the documentation of this file.
    8 #include "fastjet/PseudoJet.hh" 
    9 #include "fastjet/ClusterSequence.hh" 
   10 #include "fastjet/ClusterSequenceArea.hh" 
   11 #include "fastjet/config.h" 
   12 #include "fastjet/contrib/VariableRPlugin.hh" 
   34   return StatusCode::SUCCESS;
 
   40   auto nullreturn = std::make_pair(std::unique_ptr<xAOD::JetContainer>(
nullptr), std::unique_ptr<SG::IAuxStore>(
nullptr));
 
   54   unsigned numVertices = vertices->
size();
 
   55   ATH_MSG_DEBUG(
"Retrieved vertex container for by-vertex clustering");
 
   59   auto jets = std::make_unique<xAOD::JetContainer>();
 
   60   auto auxCont = std::make_unique<xAOD::JetAuxContainer>();
 
   61   jets->setStore(auxCont.get());
 
   73   ATH_MSG_DEBUG(
"Pseudojet input container has size " << inputPseudoJetVector->size());
 
   75   std::unique_ptr<fastjet::ClusterSequence> clSequence = std::make_unique<fastjet::ClusterSequence>();
 
   77   std::unique_ptr<PseudoJetVector> outputPseudoJetVector = std::make_unique<PseudoJetVector>();
 
   79   for (
unsigned int iVertex{0}; iVertex < numVertices; iVertex++)
 
   83     for (
unsigned int iJet{0}; iJet < inputPseudoJetVector->size(); iJet++)
 
   85       fastjet::PseudoJet &pseudoJet = inputPseudoJetVector->at(iJet);
 
   92         pseudoJet = cachedPseudoJetVector.at(iJet);
 
   93         if (originVertex != 
vertex)
 
  102           ATH_MSG_VERBOSE(
"Constituent found with pT = " << pseudoJet.pt() << 
" belonging to vertex index: " << userInfo.
vertex()->
index());
 
  107     std::unique_ptr<fastjet::ClusterSequence> clSequenceByVertex = 
buildClusterSequence(inputPseudoJetVector);
 
  108     if (!clSequenceByVertex)
 
  116     auto outputPseudoJetVectorByVertex = std::make_unique<PseudoJetVector>(fastjet::sorted_by_pt(clSequenceByVertex->inclusive_jets(
m_ptmin)));
 
  119       for (
const auto &pj : *outputPseudoJetVectorByVertex)
 
  121         msg() << 
"  Pseudojet with pt " << std::setprecision(4) << pj.Et() * 1
e-3 << 
" has " << pj.constituents().size() << 
" constituents" << 
endmsg;
 
  127     if (!outputPseudoJetVectorByVertex->empty())
 
  129       for (
const fastjet::PseudoJet &pj : *outputPseudoJetVectorByVertex)
 
  138     ATH_MSG_DEBUG(
"For vertex index " << iVertex << 
", total reconstructed jet count so far: " << 
jets->size() << 
"  clusterseq=" << clSequenceByVertex.get());
 
  141     for (
const fastjet::PseudoJet &pj : *outputPseudoJetVectorByVertex)
 
  143       outputPseudoJetVector->emplace_back(pj);
 
  152   if (!outputPseudoJetVector->empty())
 
  157     if (!pjVectorHandle.
record(std::move(outputPseudoJetVector)))
 
  165     if (!clusterSeqHandle.
record(std::move(clSequence)))
 
  174   return std::make_pair(std::move(
jets), std::move(auxCont));
 
  
const xAOD::Vertex * vertex() const
Returns the associated vertex if this constit is a track. Else returns null. */.
const_pointer_type cptr()
Dereference the pointer.
Helper class to provide type-safe access to aux data.
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainer_key
bool msgLvl(const MSG::Level lvl) const
SG::WriteHandleKey< jet::ClusterSequence > m_clusterSequence
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
StatusCode initialize() override
Dummy implementation of the initialisation function.
SG::ReadHandleKey< PseudoJetContainer > m_inputPseudoJets
Handle Input PseudoJetContainer.
::StatusCode StatusCode
StatusCode definition for legacy code.
std::unique_ptr< fastjet::ClusterSequence > buildClusterSequence(const PseudoJetVector *pseudoJetvector) const
Used to create the cluster sequence.
size_t index() const
Return the index of this element within its container.
void append(const PseudoJetContainer *)
virtual bool isValid() override final
Can the handle be successfully dereferenced?
SG::AuxElement::Accessor< int > m_jetRankAccessor
std::pair< std::unique_ptr< xAOD::JetContainer >, std::unique_ptr< SG::IAuxStore > > getJets() const override
Return the final jets with their aux store.
StatusCode initialize() override
Dummy implementation of the initialisation function.
std::vector< fastjet::PseudoJet > PseudoJetVector
Class describing a Vertex.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
SG::WriteHandleKey< PseudoJetVector > m_finalPseudoJets
used to build the key under which the final PJ will be stored in evtStore()
JetClustererByVertex(const std::string &name)
Gaudi::Property< float > m_ptmin
const std::vector< PseudoJet > * casVectorPseudoJet() const
const T * at(size_type n) const
Access an element, as an rvalue.
Gaudi::Property< std::string > m_jetRank
size_type size() const noexcept
Returns the number of elements in the collection.
void processPseudoJet(const fastjet::PseudoJet &pj, const PseudoJetContainer &pjCont, xAOD::JetContainer *jets, const xAOD::Vertex *vertex) const
translate to xAOD::Jet