  | 
  
    ATLAS Offline Software
    
   | 
 
 
 
 
Go to the documentation of this file.
    7 #ifndef TRIGGER_DECISION_TOOL_FeatureCollectStandalone_H 
    8 #define TRIGGER_DECISION_TOOL_FeatureCollectStandalone_H 
   24 #include <type_traits> 
   49   class TrigNavStructure;
 
   60   namespace FeatureAccessImpl{
 
   67     template<
typename REQUESTED,
typename STORED, 
typename CONTAINER>
 
   74     template<
typename STORED, 
typename REQUESTED>
 
   77     template<
typename REQUESTED>
 
   83     template<
typename STORED>
 
   88     template<
typename REQUESTED, 
typename STORED>
 
   90       for(
auto element : *newfeature){
 
   96     template<
typename STORED>
 
   97     std::shared_ptr<const STORED> 
filter_if(std::true_type is_same, std::shared_ptr<const STORED>& original,
const TrigPassBits* bits){ 
 
  102         std::cerr << 
"WARNING: nullptr TrigPassBits" << std::endl;
 
  105       if(original->size() != bits->
size()){
 
  106         std::cerr << 
"WARNING: bits size and owned size" << std::endl;
 
  111       for(
auto obj : *original){
 
  117       std::shared_ptr<const STORED> filtered(
f->asDataVector());
 
  121     template<
typename STORED>
 
  122     std::shared_ptr<const STORED> 
filter_if(std::false_type , std::shared_ptr<const STORED>& original,
const TrigPassBits* ){
 
  127     template<
typename REQUESTED,
typename STORED, 
typename CONTAINER>
 
  129       std::vector<Trig::Feature<REQUESTED> > typedvec;
 
  131       for(
auto feature : features){
 
  132     auto typelessholder = navigation->
getHolder(feature.accessHelper());
 
  134       std::cerr << 
"ERROR, holder not present" << std::endl;
 
  138     const STORED* 
dest = 0;
 
  142       std::cerr << 
"TrigDecisionTool WARNING: Feature access failed for feature: " << feature.accessHelper() << std::endl;
 
  148       std::shared_ptr<const STORED> owned(
dest);
 
  151       if(passbitsFeatureAccessHelper.valid()){
 
  153         auto passbitsHolder = navigation->
getHolder(passbitsFeatureAccessHelper);
 
  156         if(typedBits.
get(bits,passbitsFeatureAccessHelper.getIndex()).isFailure()){
 
  157           std::cerr << 
"WARNING: couldn't get passbits from Holder" << std::endl;
 
  159         owned = 
filter_if(std::is_same<STORED, CONTAINER>(),owned,bits);
 
  168          std::shared_ptr<const STORED> owned(
dest);
 
  191     asg::AsgMessaging(
"TypedHolder"),
 
  210       std::vector<const IRoiDescriptor*> 
rois;
 
  212       if((
idx.objectsEnd() - 
idx.objectsBegin())!=1){
 
  213     ATH_MSG_ERROR(
"accessing RoI holder with key: is not single element: ");
 
  214     return StatusCode::FAILURE;
 
  217       if(
rois.size() < 
idx.objectsBegin()){
 
  219     return StatusCode::FAILURE;
 
  229       return StatusCode::SUCCESS;    
 
  
TypedHolder(const BaseHolder &baseholder, const asg::EventStoreType *store, const std::string &="")
 
Helper class for conversion from/to int stored in TE and pair of ints used in Navigation Object point...
 
HLT::TriggerElement::FeatureAccessHelper getTypelessBits(const HLT::TriggerElement *te, const HLT::TrigNavStructure *navigation)
 
char data[hepevt_bytes_allocation_ATLAS]
 
#define ASG_CHECK(...)
Helper macro for checking the status code returned by a function call.
 
void insert_element(std::vector< Trig::Feature< REQUESTED > > &, Trig::TypelessFeature &, const STORED *)
 
The common trigger namespace for trigger analysis tools.
 
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
 
DataVector adapter that acts like it holds const pointers.
 
unsigned int size() const
gets size of the bits array
 
nope - should be used for standalone also, perhaps need to protect the class def bits #ifndef XAOD_AN...
 
std::string formatSGkey(const std::string &prefix, const std::string &containername, const std::string &label)
declaration of formatting function.
 
const asg::EventStoreType * m_store
 
std::shared_ptr< const STORED > filter_if(std::true_type is_same, std::shared_ptr< const STORED > &original, const TrigPassBits *bits)
 
std::vector< Trig::Feature< REQUESTED > > typedGet(const std::vector< TypelessFeature > &features, const HLT::TrigNavStructure *navigation, const asg::EventStoreType *store, const std::string &container_name=ClassID_traits< CONTAINER >::typeName())
 
StatusCode retrieve(const T *&ptr) const
Retrieve the default object into a const T*.
 
The Athena Transient Store API.
 
Feature class, holding information on Feature attached to navigation.
 
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
 
const std::vector< std::vector< uint32_t > > & serialised() const
expose the navigation information (in serialised form)
 
::StatusCode StatusCode
StatusCode definition for legacy code.
 
TriggerElement is the basic ingreedient of the interface between HLT algorithms and the navigation It...
 
Default, invalid implementation of ClassID_traits.
 
void deserialise(const roiserial_type &s, std::vector< const IRoiDescriptor * > &rois)
deserialise uint32_t vector into a full vector of IRoiDescriptors
 
const std::string & key() const
key used to access EventStore
 
bool isPassing(const TrigPassBits *bits, const T *obj, const CONTAINER *container)
Check the bit for the object in the associated bits object.
 
Class mimicking the AthMessaging class from the offline software.
 
StatusCode get(const TrigRoiDescriptor *&destination, HLT::TriggerElement::ObjectIndex idx)
 
the FeatureAccessHelper is a class used to keep track of features attached to this TE.
 
DataVector adapter that acts like it holds const pointers.
 
StatusCode_if< T, true > get(const T *&destination, HLT::TriggerElement::ObjectIndex idx)
method creates a new VIEW container containing pointers to the elements pointed to by the ObjectIndex...
 
const asg::EventStoreType * m_store
 
doubly templated class interfacing access to feature containers in StoreGate.
 
const BaseHolder * getHolder(const TriggerElement::FeatureAccessHelper &fea) const
 
void typelessCollect(const HLT::TriggerElement *te, HLT::class_id_type clid, std::vector< Trig::TypelessFeature > &data, const std::string &label, unsigned int condition, const HLT::TrigNavStructure *navigation)
 
void insert_flatten_if(std::vector< Trig::Feature< STORED > > &result, const Trig::TypelessFeature &feature, const std::shared_ptr< const STORED > &newfeature)