125 mout.
debug(
"start" );
127 mout.
debug2(
"DataSelector: " , this->dataSelector );
133 mout.debug3(
"collect the applicable paths" );
134 ODIMPathList dataPaths;
137 this->dataSelector.getPaths(srcRoot, dataPaths);
139 if (dataPaths.empty()){
140 mout.
warn(
"no dataset's selected" );
143 mout.debug3(
"populate the dataset map, paths=" , dataPaths.size() );
150 if (!path.front().is(ODIMPathElem::DATASET)){
153 mout.
warn(
"odd 1st path elem (..), with selector: ", this->dataSelector);
160 if (!parentElem.
is(ODIMPathElem::DATASET)){
161 mout.
warn(
"path does not start with /dataset.. :", path,
", with selector: ", this->dataSelector);
166 const Hi5Tree & srcDataSet = srcRoot(parentElem);
172 const ODIM srcODIM(srcDataSet.data.image);
173 std::string datetime = srcODIM.startdate + srcODIM.starttime;
176 mout.
attention<LOG_DEBUG>(dstODIM.startdate,
'+', dstODIM.starttime,
" ?== ", datetime,
" < ", dstODIM.enddate,
'+', dstODIM.endtime);
178 if (sweeps.find(datetime) == sweeps.end()){
179 mout.
debug2(
"adding time=", datetime,
':', parentElem);
208 if (ProductBase::appendResults.is(ODIMPathElem::DATASET)){
209 if (ProductBase::appendResults.getIndex()){
210 dataSetPathElem.index = ProductBase::appendResults.getIndex();
213 ODIMPathTools::getNextChild(dstRoot, dataSetPathElem);
216 else if (ProductBase::appendResults.is(ODIMPathElem::DATA)){
219 else if (ProductBase::appendResults.is(ODIMPathElem::ROOT)){
220 if (!dstRoot.empty() && (&srcRoot != &dstRoot)){
221 mout.info(
"clearing previous result, use --append [data|dataset] to avoid");
226 dataSetPathElem = ProductBase::appendResults;
227 mout.
warn(
"non-standard path location '", dataSetPathElem,
"', consider --help append ");
234 mout.
debug(
"storing product in path: ", dataSetPathElem);
246 Hi5Tree & dstDataSet = dstRoot[dataSetPathElem];
249 this->computeSingleProduct(sweeps, dstProductDataset);
252 ProductBase::setRackVersion(how);
253 if (!dstProductDataset.empty()){
255 how[
"angles"] = dstProductDataset.getFirstData().odim.angles;
267 mout.revised<LOG_DEBUG>(
"check DataSet metadata");
271 for (
const ODIMPathElem::group_t group: {ODIMPathElem::WHAT, ODIMPathElem::WHERE, ODIMPathElem::HOW}){
272 dstRoot[group].data.attributes = srcRoot[group].data.attributes;
276 rootWhat[
"object"] = this->odim.object;
277 rootWhat[
"version"] = this->odim.version;
279 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"product"] = this->odim.product;
280 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"startdate"] = dstODIM.startdate;
281 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"starttime"] = dstODIM.starttime;
282 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"enddate"] = dstODIM.enddate;
283 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"endtime"] = dstODIM.endtime;
286 if (ODIM::versionFlagger.isSet(ODIM::RACK_EXTENSIONS)){
288 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"product2"] = dstODIM.product;
291 std::stringstream sstr;
294 for (
const std::string & key: params.
getKeyList()){
301 sstr << key <<
'=' << params[key];
303 dstDataSet[ODIMPathElem::WHAT].data.attributes[
"rack_prodpar"] = sstr.str();