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"),
42 :
pt (columnarBase, prefix +
"_pt"),
43 eta (columnarBase, prefix +
"_eta"),
44 phi (columnarBase, prefix +
"_phi"),
45 m (columnarBase, prefix +
"_m")
59 return pt(
object) * std::cos(
phi(
object));}
61 return pt(
object) * std::sin(
phi(
object));}
71 template<ContainerIdConcept CI = ContainerId::particle,
typename CM = ColumnarModeDefault>
class OriginalObjectHandle;
90 if (tool.msgLvl(MSG::VERBOSE))
92 tool.msg(MSG::VERBOSE) <<
"const store = " <<
container.getXAODObject().front()->container()->getConstStore() <<
endmsg;
113 auto *originalObject = *acc_originalObject(
id.getXAODObject());
115 throw std::runtime_error (
"originalObjectLink not available for MET input");
116 return ObjectId<CI,CM> (
dynamic_cast<typename CI::xAODObjectIdType&
>(*originalObject));
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)};
130 std::ostringstream message;
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();
187 return container.getXAODObject().front()->type();
191 template<ContainerIdConcept CI>
202 :
typeAcc (columnBase, columnName) {}
bool isShallowCopy() const
OriginalObjectHandle(const asg::AsgTool &, ObjectRange< CI, CM >)
ObjectId< CI, CM > getNominalObject(const ObjectId< CI, CM > &) const
bool originalInputs() const
ObjectId< CI, CM > getOriginal(const ObjectId< CI, CM > &id) const
ObjectId< CI, CM > getNominalObject(const ObjectId< CI, CM > &jet) const
bool isShallowCopy() const
OriginalObjectHandle(const asg::AsgTool &tool, ObjectRange< CI, CM > container)
ObjectId< CI, CM > getOriginal(const ObjectId< CI, CM > &id) const
bool originalInputs() const
a class representing a single object (electron, muons, etc.)
a class representing a continuous sequence of objects (a.k.a. a container)
Class creating a shallow copy of an existing auxiliary container.
OriginalObjectHandle(const asg::AsgTool &, ObjectRange< CI, CM >) -> OriginalObjectHandle< CI, CM >
AccessorTemplate< CI, CT, ColumnAccessMode::input, CM > ColumnAccessor
ObjectType
Type of objects that have a representation in the xAOD EDM.
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
ColumnAccessor< CI, RetypeColumn< xAODType::ObjectType, std::uint16_t >, CM > typeAcc
ObjectTypeAccessor(ColumnarTool< CM > &columnBase, const std::string &columnName)
ObjectTypeAccessor(ColumnarTool< CM > &, const std::string &)
an accessor that allows to access the xAOD object type of an input object
std::map< std::string, HypoJetVector >::const_iterator CI