![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
algorithm that marks for write data objects in SG
More...
#include <AthenaOutputStream.h>
|
| AthenaOutputStream (const std::string &name, ISvcLocator *pSvcLocator) |
| Standard algorithm Constructor. More...
|
|
virtual | ~AthenaOutputStream () |
| Standard Destructor. More...
|
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
ServiceHandle< StoreGateSvc > | m_dataStore |
| handle to the StoreGateSvc store where the data we want to write out resides More...
|
|
ServiceHandle< StoreGateSvc > | m_metadataStore |
|
ServiceHandle< StoreGateSvc > * | m_currentStore |
|
ServiceHandle< IItemListSvc > | m_itemSvc |
|
ServiceHandle< MetaDataSvc > | m_metaDataSvc |
|
ServiceHandle< IDictLoaderSvc > | m_dictLoader |
|
ServiceHandle< ITPCnvSvc > | m_tpCnvSvc |
|
std::string | m_persName |
| Name of the persistency service capable to write data from the store. More...
|
|
StringProperty | m_writingTool |
| Name of the OutputStreamTool used for writing. More...
|
|
std::string | m_outputName |
| Name of the output file. More...
|
|
std::string | m_outputAttributes |
|
IClassIDSvc_t | m_pCLIDSvc |
|
ServiceHandle< OutputStreamSequencerSvc > | m_outSeqSvc |
|
StringProperty | m_streamName {this, "StreamName", "", "name of the output stream"} |
| Stream name (defaults to algorithm name) More...
|
|
StringArrayProperty | m_itemList {this,"ItemList",{},"List of items to write","OutputStreamItemList"} |
| Vector of item names. More...
|
|
StringArrayProperty | m_metadataItemList {this,"MetadataItemList",{},"List of metadata items to write","OutputStreamItemList"} |
| Vector of item names. More...
|
|
StringArrayProperty | m_excludeList {this,"ExcludeList",{},"List of metadata items to write","OrderedSet<std::string>"} |
| Vector of item names. More...
|
|
StringArrayProperty | m_compressionListHigh |
| Vector of item names. More...
|
|
StringArrayProperty | m_compressionListLow |
| Vector of item names. More...
|
|
unsigned int | m_compressionBitsHigh |
| Number of mantissa bits in the float compression. More...
|
|
unsigned int | m_compressionBitsLow |
| Number of mantissa bits in the float compression. More...
|
|
StringArrayProperty | m_transientItems |
| List of items that are known to be present in the transient store (and hence we can make input dependencies on them). More...
|
|
ToolHandle< SG::IFolder > | m_p2BWritten |
| the top-level folder with items to be written More...
|
|
ToolHandle< SG::IFolder > | m_decoder |
| the top-level folder with items to be written More...
|
|
ToolHandle< SG::IFolder > | m_compressionDecoderHigh |
| the top-level folder with items to be compressed high More...
|
|
ToolHandle< SG::IFolder > | m_compressionDecoderLow |
| the top-level folder with items to be compressed low More...
|
|
ToolHandle< SG::IFolder > | m_transient |
| Decoded list of transient ids. More...
|
|
std::multimap< CLID, std::string > | m_CLIDKeyPairs |
| map of (clid,key) pairs to be excluded (comes from m_excludeList) More...
|
|
IDataSelector | m_objects |
| Collection of objects being selected. More...
|
|
IDataSelector | m_altObjects |
| Objects overridden by ‘exact’ handling. More...
|
|
std::vector< std::unique_ptr< DataObject > > | m_ownedObjects |
| Collection of DataObject instances owned by this service. More...
|
|
std::atomic< int > | m_events |
| Number of events written to this output stream. More...
|
|
bool | m_forceRead |
| set to true to force read of data objects in item list More...
|
|
bool | m_extendProvenanceRecord |
| set to false to omit adding the current DataHeader into the DataHeader history this will cause the input file to be neglected for back navigation (replace mode). More...
|
|
bool | m_writeOnExecute |
| set to true to trigger streaming of data on execute() More...
|
|
bool | m_writeOnFinalize |
| set to true to trigger streaming of data on finalize() More...
|
|
bool | m_itemListFromTool |
| set to write out everything in input DataHeader More...
|
|
bool | m_checkNumberOfWrites |
| set to true to check for number of times each object is written More...
|
|
CounterMapType | m_objectWriteCounter |
|
ToolHandle< IAthenaOutputStreamTool > | m_streamer |
| pointer to AthenaOutputStreamTool More...
|
|
ToolHandleArray< IAthenaOutputTool > | m_helperTools |
| vector of AlgTools that that are executed by this stream More...
|
|
bool | m_writeMetadataAndDisconnect = false |
|
std::map< unsigned, std::string > | m_slotRangeMap |
| map of filenames assigned to active slots More...
|
|
std::map< std::string, std::string > | m_rangeIDforRangeFN |
| map of RangeIDs (as used by the Sequencer) for each Range filename generated More...
|
|
std::map< std::string, std::unique_ptr< IAthenaOutputStreamTool > > | m_streamerMap |
| map of streamerTools handling event ranges in MT More...
|
|
mutex_t | m_mutex |
|
StringArrayProperty | m_acceptNames |
| Vector of names of Algorithms that this stream accepts. More...
|
|
StringArrayProperty | m_requireNames |
| Vector of names of Algorithms that this stream requires. More...
|
|
StringArrayProperty | m_vetoNames |
| Vector of names of Algorithms that this stream is vetoed by. More...
|
|
ServiceHandle< IDecisionSvc > | m_decSvc |
|
|
virtual StatusCode | initialize () override |
|
virtual StatusCode | finalize () override |
|
virtual StatusCode | execute () override |
|
virtual StatusCode | stop () override |
|
virtual StatusCode | write () |
| Stream the data. More...
|
|
void | clearSelection () |
| Clear list of selected objects. More...
|
|
StatusCode | collectAllObjects () |
| Collect data objects for output streamer list. More...
|
|
IDataSelector * | selectedObjects () |
| Return the list of selected objects. More...
|
|
virtual void | handle (const Incident &incident) override |
| Incident service handle listening for MetaDataStop. More...
|
|
virtual StatusCode | io_reinit () override |
| Callback method to reinitialize the internal state of the component for I/O purposes (e.g. upon fork(2) ) More...
|
|
virtual StatusCode | io_finalize () override |
|
StatusCode | addItemObjects (const SG::FolderItem &, SG::SelectionVetoes &vetoes, SG::CompressionInfo &compInfo) |
| Add item data objects to output streamer list. More...
|
|
void | handleVariableSelection (const SG::IConstAuxStore &auxstore, SG::DataProxy &itemProxy, const std::string &tns, const std::string &aux_attr, SG::SelectionVetoes &vetoes) const |
|
void | tokenizeAtSep (std::vector< std::string > &, const std::string &, const std::string &) const |
| tokenize a string based on a substring More...
|
|
bool | matchKey (const std::vector< std::string > &key, const std::string &proxyName) const |
| Try to match a DataProxy name to a vector of strings. More...
|
|
void | writeMetaData (const std::string &outputFN="") |
| Write MetaData for this stream (by default) or for a substream outputFN (in ES mode) More...
|
|
std::set< std::string > | buildCompressionSet (const ToolHandle< SG::IFolder > &handle, const CLID &item_id, const std::string &item_key) const |
| Helper function for building the compression lists. More...
|
|
void | finalizeRange (const std::string &rangeFN) |
|
void | loadDict (CLID clid) |
| Helper function to load dictionaries (both transient and persistent) for a given type. More...
|
|
algorithm that marks for write data objects in SG
- Author
- srini.nosp@m.r@bn.nosp@m.l.gov
- Id
- AthenaOutputStream.h,v 1.12 2008-12-15 19:14:58 binet Exp
Definition at line 56 of file AthenaOutputStream.h.
◆ CounterMapType
◆ IClassIDSvc_t
◆ Items
◆ mutex_t
◆ StoreGateSvc_t
◆ TypeKeyPairs
◆ AthenaOutputStream()
AthenaOutputStream::AthenaOutputStream |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ ~AthenaOutputStream()
AthenaOutputStream::~AthenaOutputStream |
( |
| ) |
|
|
virtual |
◆ addItemObjects()
Add item data objects to output streamer list.
Handle variable selections. Both variable selection and lossy float compression are limited to event data for the time being
Definition at line 765 of file AthenaOutputStream.cxx.
770 size_t dotpos =
item.key().find(
'.');
771 string item_key, aux_attr;
772 if( dotpos != string::npos ) {
773 item_key =
item.key().substr(0, dotpos+1);
774 aux_attr =
item.key().substr(dotpos+1);
776 item_key =
item.key();
779 ATH_MSG_DEBUG(
"addItemObjects(" << item_id <<
",\"" << item_key <<
"\") called");
781 if( aux_attr.size() ) {
784 static const std::string wildCard =
"*";
785 std::set<std::string> clidKeys;
787 iter != iterEnd; ++iter) {
788 if (iter->id() == item_id) {
789 clidKeys.insert(iter->key());
796 std::map< unsigned int, std::set< std::string > > comp_attr_map;
801 for(
const auto&
it : comp_attr_map ) {
802 ATH_MSG_DEBUG(
" Comp Attr " <<
it.second.size() <<
" with " <<
it.first <<
" mantissa bits.");
803 if (
it.second.size() > 0 ) {
804 for(
const auto& attr :
it.second ) {
814 bool gotProxies =
false;
817 if (
match !=
nullptr) {
818 map.insert({item_key,
match});
824 if (!gotProxies && ((*m_currentStore)->proxyRange(remapped_item_id, iter,
end)).isSuccess()) {
828 bool added =
false, removed =
false;
831 std::vector<std::string> keyTokens;
832 keyTokens.reserve(2);
833 std::vector<std::string> xkeyTokens;
834 xkeyTokens.reserve(2);
835 ATH_MSG_VERBOSE(
"Calling tokenizeAtStep( " << keyTokens <<
", " << item_key <<
", " << wildCard <<
")" );
837 ATH_MSG_VERBOSE(
"Done calling tokenizeAtStep( " << keyTokens <<
", " << item_key <<
", " << wildCard <<
")" );
839 for (; iter !=
end; ++iter) {
841 string proxyName = itemProxy->name();
848 bool keyMatch = ( item_key ==
"*" ||
849 item_key == proxyName ||
850 itemProxy->hasAlias(item_key) );
852 ATH_MSG_VERBOSE(
"Calling matchKey( " << keyTokens <<
", " << proxyName <<
")" );
853 keyMatch =
matchKey(keyTokens, proxyName);
854 ATH_MSG_VERBOSE(
"Done calling matchKey( " << keyTokens <<
", " << proxyName <<
") with result: " << keyMatch );
858 bool xkeyMatch =
false;
859 for (std::set<std::string>::const_iterator c2k_it = clidKeys.begin(), c2k_itEnd = clidKeys.end();
860 keyMatch && c2k_it != c2k_itEnd; ++c2k_it) {
861 if (*c2k_it == wildCard) {
865 std::string::size_type xsep = c2k_it->find(wildCard);
867 if (xsep == std::string::npos) {
868 if (*c2k_it == proxyName) {
874 xkeyMatch =
matchKey(xkeyTokens, proxyName);
884 if (keyMatch && !xkeyMatch) {
886 if (
nullptr == itemProxy->accessData()) {
887 ATH_MSG_ERROR(
" Could not get data object for id " << remapped_item_id <<
",\"" << proxyName);
890 if (
nullptr != itemProxy->object()) {
894 if( item_id != remapped_item_id ) {
901 auto altbucket = std::make_unique<AltDataBucket>(
907 ATH_MSG_ERROR(
"Failed to retrieve object from MetaCont with key=" << item_key <<
", for EventRangeID=" <<
m_outSeqSvc->currentRangeID() );
908 return StatusCode::FAILURE;
910 }
else if (
item.exact()) {
914 if (!dbb) std::abort();
915 void* ptr = dbb->
cast (item_id);
921 std::make_unique<AltDataBucket>
930 m_objects.push_back(itemProxy->object());
931 ATH_MSG_DEBUG(
" Added object " << item_id <<
",\"" << proxyName <<
"\"");
936 std::stringstream tns;
937 if (!
m_pCLIDSvc->getTypeNameOfID(item_id, tn).isSuccess()) {
939 << item_id <<
",\"" << proxyName);
940 tns << item_id <<
'_' << proxyName;
942 tn +=
'_' + proxyName;
957 << itemProxy->clID() <<
" to SG::IConstAuxStore*" );
971 std::string
key = item_key;
972 key.erase (
key.size()-4, 4);
979 for(
const auto&
it :
compression.getCompressedAuxIDs( allVars ) ) {
980 if(
it.second.size() > 0 ) {
981 compInfo[
key ][
it.first ] =
it.second;
983 " variables that'll be lossy float compressed"
984 " with " <<
it.first <<
" mantissa bits" );
1003 if (
m_itemSvc->addStreamItem(this->name(),tns.str()).isFailure()) {
1007 }
else if (keyMatch && xkeyMatch) {
1011 if (!added && !removed) {
1012 ATH_MSG_DEBUG(
" No object matching " << item_id <<
",\"" << item_key <<
"\" found");
1013 }
else if (removed) {
1014 ATH_MSG_DEBUG(
" Object being excluded based on property setting "
1015 << item_id <<
",\"" << item_key <<
"\". Skipping");
1018 ATH_MSG_DEBUG(
" Failed to receive proxy iterators from StoreGate for "
1019 << item_id <<
",\"" << item_key <<
"\". Skipping");
1021 return StatusCode::SUCCESS;
◆ buildCompressionSet()
std::set< std::string > AthenaOutputStream::buildCompressionSet |
( |
const ToolHandle< SG::IFolder > & |
handle, |
|
|
const CLID & |
item_id, |
|
|
const std::string & |
item_key |
|
) |
| const |
|
private |
Helper function for building the compression lists.
Here we build the list of attributes for the float compression CompressionList follows the same logic as the ItemList We find the matching keys, read the string after "Aux.", tokenize by "." and build an std::set of these to be communicated to ThinningInfo elsewhere in the code.
Definition at line 1030 of file AthenaOutputStream.cxx.
1035 std::set<std::string>
result;
1038 if(item_key.find(
"Aux.") == string::npos) {
1044 iter != iterEnd; ++iter) {
1046 if (iter->id() != item_id) {
1050 size_t seppos = iter->key().find(
'.');
1051 string comp_item_key{
""}, comp_str{
""};
1052 if(seppos != string::npos) {
1053 comp_item_key = iter->key().substr(0, seppos+1);
1054 comp_str = iter->key().substr(seppos+1);
1056 comp_item_key = iter->key();
1060 if (!comp_str.empty() && comp_item_key == item_key) {
1061 std::stringstream
ss(comp_str);
1063 while( std::getline(
ss, attr,
'.') ) {
◆ clearSelection()
void AthenaOutputStream::clearSelection |
( |
| ) |
|
◆ collectAllObjects()
StatusCode AthenaOutputStream::collectAllObjects |
( |
| ) |
|
Collect data objects for output streamer list.
Definition at line 703 of file AthenaOutputStream.cxx.
706 ATH_MSG_WARNING(
"collectAllObjects() could not get ItemList from Tool.");
710 auto vetoes = std::make_unique<SG::SelectionVetoes>();
711 auto compInfo = std::make_unique<SG::CompressionInfo>();
714 std::vector<CLID> folderclids;
719 folderclids.push_back(
i->id());
724 IDataSelector prunedList;
726 if (
std::find(folderclids.begin(),folderclids.end(),(*it)->clID())!=folderclids.end()) {
729 (*it)->name() <<
" ignored");
732 prunedList.push_back(*
it);
736 ATH_MSG_DEBUG(
"Object " << (*it)->clID() <<
","<< (*it)->name() <<
" found that was not in itemlist");
740 for (
auto it = prunedList.begin();
it != prunedList.end(); ++
it) {
741 if ((*it)->name().length() > 4 && (*it)->name().substr((*it)->name().length() - 4) ==
"Aux.") {
745 for (
auto it = prunedList.begin();
it != prunedList.end(); ++
it) {
746 if ((*it)->name().length() <= 4 || (*it)->name().substr((*it)->name().length() - 4) !=
"Aux.") {
752 if (!vetoes->empty()) {
757 if (!compInfo->empty()) {
761 return StatusCode::SUCCESS;
◆ compressionListHandlerHigh()
void AthenaOutputStream::compressionListHandlerHigh |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
protected |
◆ compressionListHandlerLow()
void AthenaOutputStream::compressionListHandlerLow |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
protected |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ excludeListHandler()
void AthenaOutputStream::excludeListHandler |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
protected |
Handler for ItemNames Property.
Definition at line 1135 of file AthenaOutputStream.cxx.
1136 IProperty *pAsIProp(
nullptr);
1137 if ((
m_decoder.retrieve()).isFailure() ||
1138 nullptr == (pAsIProp =
dynamic_cast<IProperty*
>(&*
m_decoder)) ||
1139 (pAsIProp->setProperty(
"ItemList",
m_excludeList.toString())).isFailure()) {
1140 throw GaudiException(
"Folder property [itemList] not found",
name(), StatusCode::FAILURE);
◆ execute()
StatusCode AthenaOutputStream::execute |
( |
| ) |
|
|
overridevirtual |
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode AthenaOutputStream::finalize |
( |
| ) |
|
|
overridevirtual |
◆ finalizeRange()
void AthenaOutputStream::finalizeRange |
( |
const std::string & |
rangeFN | ) |
|
|
private |
Definition at line 446 of file AthenaOutputStream.cxx.
455 ATH_MSG_INFO(
"Finished writing Event Sequence to " << rangeFN);
457 strm_iter->second->finalizeOutput().ignore();
458 strm_iter->second->finalize().ignore();
◆ handle()
void AthenaOutputStream::handle |
( |
const Incident & |
incident | ) |
|
|
overridevirtual |
Incident service handle listening for MetaDataStop.
Definition at line 370 of file AthenaOutputStream.cxx.
374 std::unique_lock<mutex_t> lock(
m_mutex);
376 if( inc.type() ==
"MetaDataStop" ) {
397 EventContext::ContextID_t slot = inc.context().slot();
398 if( slot == EventContext::INVALID_CONTEXT_ID ) {
399 throw GaudiException(
"Received Incident with invalid slot in ES mode",
name(), StatusCode::FAILURE);
401 auto count_events_in_range = [&](
const std::string&
range) {
403 [&](
auto&
el){return el.second == range;} );
405 if( inc.type() == IncidentType::BeginProcessing ) {
410 if( !rangeFN.empty() and rangeFN != newRangeFN ) {
411 ATH_MSG_INFO(
"Slot range change: '" << rangeFN <<
"' -> '" << newRangeFN <<
"'");
416 if( count_events_in_range(rangeFN) == 1 ) {
420 ATH_MSG_INFO(
"slot " << slot <<
" processing event in range: " << newRangeFN);
425 else if( inc.type() == IncidentType::EndProcessing ) {
434 if( count_events_in_range(rangeFN) == 1 ) {
441 ATH_MSG_DEBUG(
"Leaving incident handler for " << inc.type());
◆ handleVariableSelection()
Definition at line 1073 of file AthenaOutputStream.cxx.
1081 if( aux_attr.size() ) {
1082 std::stringstream
ss(aux_attr);
1084 while( std::getline(
ss, attr,
'.') ) {
1086 std::stringstream temp;
1087 temp << tns << attr;
1088 if (
m_itemSvc->addStreamItem(this->name(),temp.str()).isFailure()) {
1099 std::string
key = itemProxy.
name();
1100 if (
key.size() >= 4 &&
key.compare (
key.size()-4, 4,
"Aux.")==0)
1102 key.erase (
key.size()-4, 4);
1118 if ( !selected.
test( auxid ) ) {
◆ initialize()
StatusCode AthenaOutputStream::initialize |
( |
| ) |
|
|
overridevirtual |
Reimplemented from FilteredAlgorithm.
Definition at line 209 of file AthenaOutputStream.cxx.
265 IProperty *pAsIProp =
dynamic_cast<IProperty*
> (&*
m_transient);
268 return StatusCode::FAILURE;
276 const std::string&
k =
item.key();
277 if (
k.find(
'*') != std::string::npos)
continue;
278 if (
k.find(
'.') != std::string::npos)
continue;
280 if (titem.id() ==
item.id() && titem.key() ==
k) {
292 IProperty *pAsIProp =
dynamic_cast<IProperty*
> (&*
m_transient);
295 return StatusCode::FAILURE;
310 if (!incsvc.retrieve().isSuccess()) {
312 return(StatusCode::FAILURE);
315 incsvc->addListener(
this, IncidentType::BeginProcessing, 95);
316 incsvc->addListener(
this, IncidentType::EndProcessing, 95);
321 if(m_compressionBitsHigh < 5 || m_compressionBitsHigh > 23) {
322 ATH_MSG_INFO(
"Float compression mantissa bits for high compression " <<
327 if(m_compressionBitsLow < 5 || m_compressionBitsLow > 23) {
328 ATH_MSG_INFO(
"Float compression mantissa bits for low compression " <<
334 ATH_MSG_ERROR(
"Float compression mantissa bits for low compression " <<
337 return StatusCode::FAILURE;
340 ATH_MSG_VERBOSE(
"Both high and low float compression lists are empty. Float compression will NOT be applied.");
342 ATH_MSG_INFO(
"Either high or low (or both) float compression lists are defined. Float compression will be applied.");
360 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ io_finalize()
StatusCode AthenaOutputStream::io_finalize |
( |
| ) |
|
|
overridevirtual |
Definition at line 1249 of file AthenaOutputStream.cxx.
1252 if (!
tool->preFinalize().isSuccess()) {
1256 const Incident metaDataStopIncident(
name(),
"MetaDataStop");
1257 this->
handle(metaDataStopIncident);
1259 if (!incSvc.retrieve().isSuccess()) {
1261 return StatusCode::FAILURE;
1263 incSvc->removeListener(
this,
"MetaDataStop");
1267 return StatusCode::SUCCESS;
◆ io_reinit()
StatusCode AthenaOutputStream::io_reinit |
( |
| ) |
|
|
overridevirtual |
Callback method to reinitialize the internal state of the component for I/O purposes (e.g. upon fork(2)
)
Definition at line 1227 of file AthenaOutputStream.cxx.
1234 if (!incSvc.retrieve().isSuccess()) {
1236 return StatusCode::FAILURE;
1238 incSvc->removeListener(
this,
"MetaDataStop");
1239 incSvc->addListener(
this,
"MetaDataStop", 50);
1241 if (!
tool->postInitialize().isSuccess()) {
1245 return StatusCode::SUCCESS;
◆ isEventAccepted()
bool FilteredAlgorithm::isEventAccepted |
( |
| ) |
const |
|
inherited |
Test whether this event should be output.
Definition at line 128 of file FilteredAlgorithm.cxx.
131 const EventContext& ctx = this->getContext();
◆ itemListHandler()
void AthenaOutputStream::itemListHandler |
( |
Gaudi::Details::PropertyBase & |
| ) |
|
|
protected |
Handler for ItemNames Property.
Definition at line 1125 of file AthenaOutputStream.cxx.
1127 IProperty *pAsIProp(
nullptr);
1129 nullptr == (pAsIProp =
dynamic_cast<IProperty*
>(&*
m_p2BWritten)) ||
1130 (pAsIProp->setProperty(
m_itemList)).isFailure()) {
1131 throw GaudiException(
"Folder property [itemList] not found",
name(), StatusCode::FAILURE);
◆ loadDict()
void AthenaOutputStream::loadDict |
( |
CLID |
clid | ) |
|
|
private |
Helper function to load dictionaries (both transient and persistent) for a given type.
We want to to this explicitly during initialization to avoid sporadic failures seen loading dictionaries while multiple threads are running. See ATEAM-697 and ATEAM-749.
Definition at line 1276 of file AthenaOutputStream.cxx.
1281 std::unique_ptr<ITPCnvBase> tpcnv =
m_tpCnvSvc->t2p_cnv_unique (clid);
◆ matchKey()
bool AthenaOutputStream::matchKey |
( |
const std::vector< std::string > & |
key, |
|
|
const std::string & |
proxyName |
|
) |
| const |
|
private |
Try to match a DataProxy name to a vector of strings.
Definition at line 1184 of file AthenaOutputStream.cxx.
1186 bool keyMatch =
true;
1189 std::vector<std::string>::const_iterator itrEnd =
key.cend();
1190 std::vector<std::string>::const_iterator itr =
key.cbegin();
1194 std::string::size_type proxyNamePos=0;
1195 while ( itr != itrEnd &&
1196 std::string::npos != ( proxyNamePos = proxyName.find(*itr, proxyNamePos) )
1199 ATH_MSG_VERBOSE(
"If we are at the begin iterator and the first element is Not an empty string");
1200 if ( !(
key.front().empty()) && itr ==
key.cbegin() && proxyNamePos != 0 ) {
1202 ATH_MSG_VERBOSE(
"We had to match a precise name at the beginning, but didn't find it at the beginning");
1206 if ( !(
key.back().empty()) && itr == --(
key.cend()) && (proxyNamePos+itr->size()!=proxyName.size()) ) {
1208 ATH_MSG_VERBOSE(
"We had to match a precise name at the end, but didn't find it at the end");
1211 ATH_MSG_VERBOSE(
"Found a match of subkey: " << *itr <<
" in string: " << proxyName
1212 <<
" at position: " << proxyNamePos );
1214 proxyNamePos += itr->size();
1218 if ( itr != itrEnd ) {
1220 ATH_MSG_VERBOSE(
"Couldn't match every sub-string... return: " << keyMatch);
1222 else {
ATH_MSG_VERBOSE(
"Did match every sub-string... return: " << keyMatch); }
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ selectedObjects()
IDataSelector* AthenaOutputStream::selectedObjects |
( |
| ) |
|
|
inline |
◆ stop()
StatusCode AthenaOutputStream::stop |
( |
| ) |
|
|
overridevirtual |
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ tokenizeAtSep()
void AthenaOutputStream::tokenizeAtSep |
( |
std::vector< std::string > & |
subStrings, |
|
|
const std::string & |
portia, |
|
|
const std::string & |
sepstr |
|
) |
| const |
|
private |
tokenize a string based on a substring
Definition at line 1162 of file AthenaOutputStream.cxx.
1167 if (portia.starts_with( sepstr )) {
1168 subStrings.push_back(
"");
1170 boost::char_separator<char> csep(sepstr.c_str());
1171 boost::tokenizer<char_separator<char>>
tokens(portia, csep);
1172 for (
const std::string&
t :
tokens) {
1174 subStrings.push_back(
t);
1177 if ( portia.size() >= sepstr.size() &&
1178 portia.compare( portia.size() - sepstr.size(), sepstr.size(), sepstr) == 0 ) {
1179 subStrings.push_back(
"");
◆ updateVHKA()
◆ write()
StatusCode AthenaOutputStream::write |
( |
| ) |
|
|
virtual |
Stream the data.
Definition at line 585 of file AthenaOutputStream.cxx.
590 std::unique_lock<mutex_t> lock(
m_mutex);
603 IProperty *mstreamer_props =
dynamic_cast<IProperty*
> (&*
m_streamer);
604 IProperty *streamer_props =
dynamic_cast<IProperty*
> (&*streamer);
605 for (
const auto& prop : mstreamer_props->getProperties() ) {
606 ATH_CHECK( streamer_props->setProperty( *prop ) );
608 if( !streamer or streamer->initialize().isFailure()
611 return StatusCode::FAILURE;
626 std::vector<std::unique_ptr<DataObject> > ownedObjects = std::move(
m_ownedObjects );
630 bool checkCountError =
false;
633 unsigned int lastCount = 0;
636 bool isError =
false;
638 lastCount = (*cit).second;
640 }
else if (lastCount != (*cit).second) {
643 checkCountError =
true;
647 << (*cit).first <<
", " << (*cit).second <<
" should be: " << lastCount);
649 ATH_MSG_DEBUG(
" Object/count: " << (*cit).first <<
", " << (*cit).second);
652 if (checkCountError) {
653 ATH_MSG_FATAL(
"Check number of writes failed. See messages above "
654 "to identify which container is not always written");
655 return(StatusCode::FAILURE);
671 return StatusCode::FAILURE;
676 if (!currentStatus.isSuccess()) {
677 if (!currentStatus.isRecoverable()) {
684 bool doCommit =
false;
690 return(StatusCode::FAILURE);
693 return(StatusCode::SUCCESS);
◆ writeMetaData()
void AthenaOutputStream::writeMetaData |
( |
const std::string & |
outputFN = "" | ) |
|
|
private |
Write MetaData for this stream (by default) or for a substream outputFN (in ES mode)
Definition at line 467 of file AthenaOutputStream.cxx.
475 if (!
tool->preFinalize().isSuccess()) {
476 throw GaudiException(
"Cannot finalize helper tool",
name(), StatusCode::FAILURE);
480 throw GaudiException(
"Failed on MetaDataSvc prepareOutput",
name(), StatusCode::FAILURE);
487 if (
write().isFailure()) {
488 throw GaudiException(
"Cannot write on finalize",
name(), StatusCode::FAILURE);
497 throw GaudiException(
"Unable to connect metadata services",
name(), StatusCode::FAILURE);
500 m_outputAttributes =
"[OutputCollection=MetaDataHdr][PoolContainerPrefix=MetaData][AttributeListKey=]";
502 IProperty *pAsIProp(
nullptr);
504 nullptr == (pAsIProp =
dynamic_cast<IProperty*
>(&*
m_p2BWritten)) ||
506 throw GaudiException(
"Folder property [metadataItemList] not found",
name(), StatusCode::FAILURE);
508 if (
write().isFailure()) {
509 throw GaudiException(
"Cannot write metadata",
name(), StatusCode::FAILURE);
515 throw GaudiException(
"Unable to re-connect services",
name(), StatusCode::FAILURE);
518 if ((pAsIProp->setProperty(
m_itemList)).isFailure()) {
519 throw GaudiException(
"Folder property [itemList] not found",
name(), StatusCode::FAILURE);
◆ m_acceptNames
StringArrayProperty FilteredAlgorithm::m_acceptNames |
|
protectedinherited |
Vector of names of Algorithms that this stream accepts.
Definition at line 38 of file FilteredAlgorithm.h.
◆ m_altObjects
IDataSelector AthenaOutputStream::m_altObjects |
|
protected |
◆ m_checkNumberOfWrites
bool AthenaOutputStream::m_checkNumberOfWrites |
|
protected |
set to true to check for number of times each object is written
Definition at line 141 of file AthenaOutputStream.h.
◆ m_CLIDKeyPairs
std::multimap<CLID,std::string> AthenaOutputStream::m_CLIDKeyPairs |
|
protected |
map of (clid,key) pairs to be excluded (comes from m_excludeList)
Definition at line 118 of file AthenaOutputStream.h.
◆ m_compInfoKey
Key used for recording lossy float compressed variable information to the event store.
Definition at line 175 of file AthenaOutputStream.h.
◆ m_compressionBitsHigh
unsigned int AthenaOutputStream::m_compressionBitsHigh |
|
protected |
◆ m_compressionBitsLow
unsigned int AthenaOutputStream::m_compressionBitsLow |
|
protected |
◆ m_compressionDecoderHigh
ToolHandle<SG::IFolder> AthenaOutputStream::m_compressionDecoderHigh |
|
protected |
◆ m_compressionDecoderLow
ToolHandle<SG::IFolder> AthenaOutputStream::m_compressionDecoderLow |
|
protected |
◆ m_compressionListHigh
StringArrayProperty AthenaOutputStream::m_compressionListHigh |
|
protected |
◆ m_compressionListLow
StringArrayProperty AthenaOutputStream::m_compressionListLow |
|
protected |
◆ m_currentStore
◆ m_dataStore
◆ m_decoder
◆ m_decSvc
◆ m_detStore
◆ m_dictLoader
◆ m_events
std::atomic<int> AthenaOutputStream::m_events |
|
protected |
◆ m_evtStore
◆ m_excludeList
StringArrayProperty AthenaOutputStream::m_excludeList {this,"ExcludeList",{},"List of metadata items to write","OrderedSet<std::string>"} |
|
protected |
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_extendProvenanceRecord
bool AthenaOutputStream::m_extendProvenanceRecord |
|
protected |
◆ m_forceRead
bool AthenaOutputStream::m_forceRead |
|
protected |
◆ m_helperTools
◆ m_itemList
StringArrayProperty AthenaOutputStream::m_itemList {this,"ItemList",{},"List of items to write","OutputStreamItemList"} |
|
protected |
◆ m_itemListFromTool
bool AthenaOutputStream::m_itemListFromTool |
|
protected |
◆ m_itemSvc
◆ m_metadataItemList
StringArrayProperty AthenaOutputStream::m_metadataItemList {this,"MetadataItemList",{},"List of metadata items to write","OutputStreamItemList"} |
|
protected |
◆ m_metadataStore
◆ m_metaDataSvc
◆ m_mutex
mutex_t AthenaOutputStream::m_mutex |
|
protected |
◆ m_objects
IDataSelector AthenaOutputStream::m_objects |
|
protected |
◆ m_objectWriteCounter
◆ m_outputAttributes
std::string AthenaOutputStream::m_outputAttributes |
|
protected |
◆ m_outputName
std::string AthenaOutputStream::m_outputName |
|
protected |
◆ m_outSeqSvc
◆ m_ownedObjects
std::vector<std::unique_ptr<DataObject> > AthenaOutputStream::m_ownedObjects |
|
protected |
Collection of DataObject instances owned by this service.
FIXME: it would be simpler to just have m_objects be a vector of DataObjectSharedPtr<DataObject>, but that implies interface changes.
Definition at line 126 of file AthenaOutputStream.h.
◆ m_p2BWritten
ToolHandle<SG::IFolder> AthenaOutputStream::m_p2BWritten |
|
protected |
◆ m_pCLIDSvc
◆ m_persName
std::string AthenaOutputStream::m_persName |
|
protected |
Name of the persistency service capable to write data from the store.
Definition at line 77 of file AthenaOutputStream.h.
◆ m_rangeIDforRangeFN
std::map< std::string, std::string > AthenaOutputStream::m_rangeIDforRangeFN |
|
protected |
◆ m_requireNames
StringArrayProperty FilteredAlgorithm::m_requireNames |
|
protectedinherited |
Vector of names of Algorithms that this stream requires.
Definition at line 40 of file FilteredAlgorithm.h.
◆ m_selVetoesKey
Key used for recording selected dynamic variable information to the event store.
Definition at line 170 of file AthenaOutputStream.h.
◆ m_slotRangeMap
std::map< unsigned, std::string > AthenaOutputStream::m_slotRangeMap |
|
protected |
◆ m_streamer
◆ m_streamerMap
◆ m_streamName
StringProperty AthenaOutputStream::m_streamName {this, "StreamName", "", "name of the output stream"} |
|
protected |
◆ m_tpCnvSvc
◆ m_transient
ToolHandle<SG::IFolder> AthenaOutputStream::m_transient |
|
protected |
◆ m_transientItems
StringArrayProperty AthenaOutputStream::m_transientItems |
|
protected |
List of items that are known to be present in the transient store (and hence we can make input dependencies on them).
Definition at line 106 of file AthenaOutputStream.h.
◆ m_varHandleArraysDeclared
◆ m_vetoNames
StringArrayProperty FilteredAlgorithm::m_vetoNames |
|
protectedinherited |
Vector of names of Algorithms that this stream is vetoed by.
Definition at line 42 of file FilteredAlgorithm.h.
◆ m_vhka
◆ m_writeMetadataAndDisconnect
bool AthenaOutputStream::m_writeMetadataAndDisconnect = false |
|
protected |
◆ m_writeOnExecute
bool AthenaOutputStream::m_writeOnExecute |
|
protected |
◆ m_writeOnFinalize
bool AthenaOutputStream::m_writeOnFinalize |
|
protected |
◆ m_writingTool
StringProperty AthenaOutputStream::m_writingTool |
|
protected |
The documentation for this class was generated from the following files:
JetConstituentVector::iterator iterator
virtual StatusCode finalize() override
std::map< std::string, std::string > m_rangeIDforRangeFN
map of RangeIDs (as used by the Sequencer) for each Range filename generated
void writeMetaData(const std::string &outputFN="")
Write MetaData for this stream (by default) or for a substream outputFN (in ES mode)
std::string m_outputAttributes
constexpr char AUX_POSTFIX[]
Common post-fix for the names of auxiliary containers in StoreGate.
std::string find(const std::string &s)
return a remapped string
StatusCode addItemObjects(const SG::FolderItem &, SG::SelectionVetoes &vetoes, SG::CompressionInfo &compInfo)
Add item data objects to output streamer list.
unsigned int m_compressionBitsHigh
Number of mantissa bits in the float compression.
A non-templated base class for DataBucket, allows to access the transient object address as a void*.
bool isTransientKey(const std::string &key)
Test to see if a key is transoent.
void tokenizeAtSep(std::vector< std::string > &, const std::string &, const std::string &) const
tokenize a string based on a substring
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
ToolHandle< SG::IFolder > m_decoder
the top-level folder with items to be written
StringArrayProperty m_itemList
Vector of item names.
std::set< std::string > buildCompressionSet(const ToolHandle< SG::IFolder > &handle, const CLID &item_id, const std::string &item_key) const
Helper function for building the compression lists.
ServiceHandle< StoreGateSvc > m_dataStore
handle to the StoreGateSvc store where the data we want to write out resides
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StringArrayProperty m_compressionListLow
Vector of item names.
virtual void * object()=0
std::string m_persName
Name of the persistency service capable to write data from the store.
bool matchKey(const std::vector< std::string > &key, const std::string &proxyName) const
Try to match a DataProxy name to a vector of strings.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
static const std::type_info * CLIDToTypeinfo(CLID clid)
Translate between CLID and type_info.
ItemList::const_iterator const_iterator
void loadDict(CLID clid)
Helper function to load dictionaries (both transient and persistent) for a given type.
#define ATH_MSG_VERBOSE(x)
virtual StatusCode initialize()
T * cast(SG::IRegisterTransient *irt=0, bool isConst=true)
Return the contents of the DataBucket, converted to type T.
StringArrayProperty m_transientItems
List of items that are known to be present in the transient store (and hence we can make input depend...
IDataSelector m_objects
Collection of objects being selected.
StringArrayProperty m_metadataItemList
Vector of item names.
ServiceHandle< StoreGateSvc > * m_currentStore
std::map< std::string, DataProxy * > ProxyMap
StatusCode collectAllObjects()
Collect data objects for output streamer list.
virtual void setOwner(IDataHandleHolder *o)=0
bool m_checkNumberOfWrites
set to true to check for number of times each object is written
bool isEventAccepted() const
Test whether this event should be output.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
StringArrayProperty m_compressionListHigh
Vector of item names.
bool m_forceRead
set to true to force read of data objects in item list
bool m_writeOnExecute
set to true to trigger streaming of data on execute()
ToolHandle< IAthenaOutputStreamTool > m_streamer
pointer to AthenaOutputStreamTool
ServiceHandle< OutputStreamSequencerSvc > m_outSeqSvc
unsigned int m_compressionBitsLow
Number of mantissa bits in the float compression.
size_t auxid_t
Identifier for a particular aux data item.
virtual StatusCode sysInitialize() override
Override sysInitialize.
bool m_extendProvenanceRecord
set to false to omit adding the current DataHeader into the DataHeader history this will cause the in...
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
ServiceHandle< IItemListSvc > m_itemSvc
ConcurrentBitset & insert(bit_t bit, bit_t new_nbits=0)
Set a bit to 1.
std::map< unsigned, std::string > m_slotRangeMap
map of filenames assigned to active slots
::StatusCode StatusCode
StatusCode definition for legacy code.
void compressionListHandlerLow(Gaudi::Details::PropertyBase &)
Handler for ItemNames Property.
Default, invalid implementation of ClassID_traits.
bool m_itemListFromTool
set to write out everything in input DataHeader
ToolHandleArray< IAthenaOutputTool > m_helperTools
vector of AlgTools that that are executed by this stream
std::vector< std::unique_ptr< DataObject > > m_ownedObjects
Collection of DataObject instances owned by this service.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
void excludeListHandler(Gaudi::Details::PropertyBase &)
Handler for ItemNames Property.
void compressionListHandlerHigh(Gaudi::Details::PropertyBase &)
Handler for ItemNames Property.
void handleVariableSelection(const SG::IConstAuxStore &auxstore, SG::DataProxy &itemProxy, const std::string &tns, const std::string &aux_attr, SG::SelectionVetoes &vetoes) const
uint32_t CLID
The Class ID type.
bool m_writeMetadataAndDisconnect
ToolHandle< SG::IFolder > m_transient
Decoded list of transient ids.
void finalizeRange(const std::string &rangeFN)
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
std::string m_outputName
Name of the output file.
void itemListHandler(Gaudi::Details::PropertyBase &)
Handler for ItemNames Property.
Class helping in dealing with dynamic branch selection.
ServiceHandle< StoreGateSvc > m_metadataStore
virtual StatusCode io_reinit() override
Callback method to reinitialize the internal state of the component for I/O purposes (e....
ServiceHandle< ITPCnvSvc > m_tpCnvSvc
virtual const name_type & name() const override final
Retrieve data object key == string.
StringProperty m_streamName
Stream name (defaults to algorithm name)
IDataSelector m_altObjects
Objects overridden by ‘exact’ handling.
ServiceHandle< IDictLoaderSvc > m_dictLoader
ServiceHandle< MetaDataSvc > m_metaDataSvc
DataObjIDColl m_extendedExtraObjects
std::atomic< int > m_events
Number of events written to this output stream.
ToolHandle< SG::IFolder > m_compressionDecoderHigh
the top-level folder with items to be compressed high
#define ATH_MSG_WARNING(x)
virtual const std::type_info & persistentTInfo() const =0
return C++ type id of the persistent class this converter is for
std::map< std::string, std::unique_ptr< IAthenaOutputStreamTool > > m_streamerMap
map of streamerTools handling event ranges in MT
CounterMapType m_objectWriteCounter
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
A set of aux data identifiers.
virtual StatusCode write()
Stream the data.
SG::WriteHandleKey< SG::SelectionVetoes > m_selVetoesKey
Key used for recording selected dynamic variable information to the event store.
Interface for const operations on an auxiliary store.
bool m_writeOnFinalize
set to true to trigger streaming of data on finalize()
ServiceHandle< IDecisionSvc > m_decSvc
a Folder item (data object) is identified by the clid/key pair
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
StringArrayProperty m_excludeList
Vector of item names.
virtual const SG::auxid_set_t & getAuxIDs() const =0
Return a set of identifiers for existing data items in this store.
ProxyMap::const_iterator ConstProxyIterator
bool match(std::string s1, std::string s2)
match the individual directories of two strings
virtual void handle(const Incident &incident) override
Incident service handle listening for MetaDataStop.
ToolHandle< SG::IFolder > m_p2BWritten
the top-level folder with items to be written
void clearSelection()
Clear list of selected objects.
ToolHandle< SG::IFolder > m_compressionDecoderLow
the top-level folder with items to be compressed low
bool test(bit_t bit) const
Test to see if a bit is set.
SG::WriteHandleKey< SG::CompressionInfo > m_compInfoKey
Key used for recording lossy float compressed variable information to the event store.