|  | ATLAS Offline Software
    | 
 
 
 
Go to the documentation of this file.
    8 #ifndef COLUMNAR_MET_MET_INPUT_H 
    9 #define COLUMNAR_MET_MET_INPUT_H 
   31     template<ContainerIdConcept CI = ContainerId::particle,
typename CM=ColumnarModeDefault>
 
   35         : 
pt (columnarBase, 
"pt"),
 
   36           eta (columnarBase, 
"eta"),
 
   37           phi (columnarBase, 
"phi"),
 
   71     template<ContainerIdConcept CI = ContainerId::particle,
typename CM = ColumnarModeDefault> 
class OriginalObjectHandle;
 
   76       bool m_originalInputs = 
false;
 
   77       bool m_isShallowCopy = 
false;
 
   85         if (!container.empty())
 
   87           using namespace MetDef;
 
   88           m_originalInputs = !acc_originalObject.isAvailable(*container.getXAODObject().front());
 
   89           m_isShallowCopy = 
dynamic_cast<const xAOD::ShallowAuxContainer*
>(container.getXAODObject().front()->container()->getConstStore());
 
   92             tool.msg(
MSG::VERBOSE) << 
"const store = " << container.getXAODObject().front()->container()->getConstStore() << 
endmsg;
 
   98         return m_originalInputs;
 
  102         return m_isShallowCopy;
 
  107         if (m_originalInputs)
 
  112           using namespace MetDef;
 
  113           auto *originalObject = *acc_originalObject(
id.
getXAODObject());
 
  115             throw std::runtime_error (
"originalObjectLink not available for MET input");
 
  122         using namespace MetDef;
 
  123         if (acc_nominalObject.isAvailable(
jet.getXAODObject())) {
 
  124           auto nominal = acc_nominalObject(
jet.getXAODObject());
 
  125           if (nominal && *nominal)
 
  127             return ObjectId<CI,CM> {
static_cast<CI::xAODObjectIdType&
>(**nominal)};
 
  131         message << 
"No nominal calibrated jet available for jet " << 
jet << 
". Cannot simplify overlap removal!";
 
  132         throw std::runtime_error (
message.str());
 
  160         throw std::runtime_error (
"no nominal object available in columnar mode");
 
  168     template<ContainerIdConcept CI,
typename CM=ColumnarModeDefault>
 
  171     template<ContainerIdConcept CI>
 
  180         return object.getXAODObject().type();
 
  185         if (container.empty())
 
  187         return container.getXAODObject().front()->type();
 
  191     template<ContainerIdConcept CI>
 
  202         : typeAcc (columnBase, columnName) {}
 
  206         return typeAcc(
object);
 
  214         if (container.empty())
 
  216         return typeAcc(container[0]);
 
  
OriginalObjectHandle(const asg::AsgTool &, ObjectRange< CI, CM >) -> OriginalObjectHandle< CI, CM >
ObjectId< CI, CM > getNominalObject(const ObjectId< CI, CM > &jet) const
ObjectId< CI, CM > getOriginal(const ObjectId< CI, CM > &id) const
xAODContainer & getXAODObject() const noexcept
bool originalInputs() const
Class creating a shallow copy of an existing auxiliary container.
bool isShallowCopy() const
ObjectTypeAccessor(ColumnarTool< CM > &, const std::string &)
a class representing a continuous sequence of objects (a.k.a. a container)
std::map< std::string, HypoJetVector >::const_iterator CI
ObjectId< CI, CM > getNominalObject(const ObjectId< CI, CM > &) const
OriginalObjectHandle(const asg::AsgTool &tool, ObjectRange< CI, CM > container)
OriginalObjectHandle(const asg::AsgTool &, ObjectRange< CI, CM >)
bool originalInputs() const
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
a class representing a single object (electron, muons, etc.)
bool isShallowCopy() const
ObjectId< CI, CM > getOriginal(const ObjectId< CI, CM > &id) const
the raw column accessor template class
ObjectType
Type of objects that have a representation in the xAOD EDM.
decltype(auto) operator()(ObjectId< CI, CM > id) const noexcept
ColumnAccessor< CI, RetypeColumn< xAODType::ObjectType, std::uint16_t >, CM > typeAcc
an accessor that allows to access the xAOD object type of an input object
ObjectTypeAccessor(ColumnarTool< CM > &columnBase, const std::string &columnName)