32 return StatusCode::SUCCESS;
37 return StatusCode::SUCCESS;
43 getObject(TFile& a_file,
const std::string& path)
45 std::unique_ptr<T> obj(
dynamic_cast<T*
>(a_file.Get(path.c_str())));
47 std::stringstream
msg;
48 msg <<
"Failed object " << path <<
" from File " << a_file.GetName()
49 <<
" with type " <<
typeid(T).name();
50 throw std::runtime_error(
msg.str());
52 obj->SetDirectory(
nullptr);
61 std::vector<std::unique_ptr<TH1>> ownedRetrievedHistos;
62 const unsigned int layer_info = ownedRetrievedHistos.size();
64 ownedRetrievedHistos.push_back( getObject<TH1>(input_file, folder+
m_layerInfoHistogram.value()) );
68 ownedRetrievedHistos.push_back( getObject<TH2>(input_file, folder+
"InputsInfo") );
72 unsigned int n_hidden = ownedRetrievedHistos.at(layer_info)->GetNbinsX()-2;
73 ATH_MSG_VERBOSE(
" Retrieving calibration: " << folder <<
" for NN with: " << n_hidden <<
" hidden layers.");
75 ownedRetrievedHistos.reserve( ownedRetrievedHistos.size() + n_hidden*2 );
76 for (
unsigned int i=0; i<=n_hidden; ++i) {
77 std::stringstream folder_name;
79 ownedRetrievedHistos.push_back( getObject<TH2>(input_file, folder_name.str()+
m_weightIndicator.value() ) );
80 ownedRetrievedHistos.push_back( getObject<TH1>(input_file, folder_name.str()+
m_thresholdIndicator.value() ) );
84 std::vector<const TH1*> retrievedHistos;
85 retrievedHistos.reserve(ownedRetrievedHistos.size());
87for(
const auto &
h: ownedRetrievedHistos){
88 retrievedHistos.push_back(
h.get());
93 ATH_MSG_ERROR(
"Failed to create NN from " << retrievedHistos.size() <<
" histograms read from " << folder);
99 return a_nn.release();
108 return StatusCode::SUCCESS;
114 return StatusCode::FAILURE;
117 assert( atrcol !=
nullptr);
119 EventIDRange cdo_iov;
120 if(!readHandle.
range(cdo_iov)) {
121 ATH_MSG_ERROR(
"Failed to get valid validaty range from " << readHandle.
key());
122 return StatusCode::FAILURE;
125 unsigned int channel=1;
127 if (channel_iter==atrcol->
end()) {
128 ATH_MSG_ERROR(
"Conditions data " << readHandle.
key() <<
" misses channel " << channel);
129 return StatusCode::FAILURE;
133 const std::string coolguid=channel_iter->second[
"fileGUID"].data<std::string>();
135 std::unique_ptr<TTrainedNetworkCollection> writeCdo{std::make_unique<TTrainedNetworkCollection>()};
139 m_poolsvc->lookupBestPfn(coolguid, pfname, tech );
140 ATH_MSG_VERBOSE(
"Get NNs from file " << pfname.c_str() <<
" [" << coolguid <<
" <- " << readHandle.
key() <<
"]." );
141 std::unique_ptr<TFile> a_file( TFile::Open(pfname.c_str(),
"READ") );
142 if (!a_file || !a_file->IsOpen()) {
143 ATH_MSG_ERROR(
"Failed to open file " << pfname <<
" referenced by " << readHandle.
key() <<
" GUID " << coolguid);
144 return StatusCode::FAILURE;
148 for (
const std::string &folder:
m_nnOrder) {
149 ATH_MSG_VERBOSE(
"Retrieve NN " << writeCdo->size() <<
": " << folder );
150 writeCdo->push_back( std::unique_ptr<TTrainedNetwork>(
retrieveNetwork(*a_file, folder) ) );
155 if(NnWriteHandle.
record(cdo_iov,std::move(writeCdo)).isFailure()) {
156 ATH_MSG_ERROR(
"Failed to record Trained network collection to "
157 << NnWriteHandle.
key()
158 <<
" with IOV " << cdo_iov );
159 return StatusCode::FAILURE;
161 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
Base class for conditions algorithms.
Header file for AthHistogramAlgorithm.
This class is a collection of AttributeLists where each one is associated with a channel number.
const_iterator end() const
ChanAttrListMap::const_iterator const_iterator
const_iterator chanAttrListPair(ChanNum chanNum) const
Access to Chan/AttributeList pairs via channel number: returns map iterator.
Gaudi::Property< std::string > m_thresholdIndicator
StatusCode finalize() override final
StatusCode execute(const EventContext &ctx) const override final
ServiceHandle< IPoolSvc > m_poolsvc
Gaudi::Property< std::string > m_weightIndicator
StatusCode initialize() override final
Gaudi::Property< std::string > m_layerInfoHistogram
Gaudi::Property< std::string > m_layerPrefix
TTrainedNetwork * retrieveNetwork(TFile &input_file, const std::string &folder) const
TTrainedNetworkCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< std::vector< std::string > > m_nnOrder
SG::ReadCondHandleKey< CondAttrListCollection > m_readKey
Gaudi::Property< bool > m_getInputsInfo
SG::WriteCondHandleKey< TTrainedNetworkCollection > m_writeKey
bool range(EventIDRange &r)
const std::string & key() const
const std::string & key() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
const DataObjID & fullKey() const