Unable to retrieve objects stored in SubRun from analyzer module
I have created a file with data products stored in the SubRun. I can verify that those products exist and are in the SubRun by using the FileOutputDumper module. However, when I try to access the products from an EDAnalyzer module I wrote, it tells me that it cannot find them.
The relevant file with the objects in the SubRun is attached to this issue.
I am using the trunk of novasoft, except I have changed the art version to 1_17_03. You can find the necessary ups/product_deps file to build against v1_17_03 at /nova/app/users/brebel/mrb/srcs/novasoft/ups/product_deps.
The module I am running is found in AnalysisSkimmer/SkimmerAna_module.cc and the method where I am trying to access the data products is beginSubRun. The module can be run by doing
nova -c skimmeranajob.fcl numu_skim_run_00018417_43.root
and the output text to the screen will claim that it cannot find either type of data product being requested.
#4 Updated by Kyle Knoepfel about 5 years ago
I am having trouble running the current job:
[knoepfel@woof build-novasoft]$ nova -c skimmeranajob.fcl numu_skim_run_00018417_43.root %MSG-i MF_INIT_OK: nova 18-Nov-2015 13:10:36 CST JobSetup Messagelogger initialization complete. %MSG %MSG-i path: nova 18-Nov-2015 13:10:38 CST JobSetup The following module label is not assigned to any path: 'nueskimmerana' %MSG nova: /home/knoepfel/scratch/novasoft/Calibrator/art/Calibrator_service.cc:92: void calib::Calibrator::reconfigure(const fhicl::ParameterSet&): Assertion `!fShapeTableFilenameFDMC.empty()' failed. Aborted
#7 Updated by Kyle Knoepfel about 5 years ago
- Tracker changed from Bug to Support
- Status changed from Assigned to Resolved
- % Done changed from 0 to 100
We understand the problem -- you need to reverse the default module labels in your
fCosmicExposureLabel = p.get<std::string>("CosmicExposureLabel", "ifdbspillinfo" ); // should be "exposure" fPOTSumLabel = p.get<std::string>("POTSumLabel" , "exposure" ); // should be "ifdbspillinfo"
#10 Updated by Kyle Knoepfel about 5 years ago
Unfortunately, we do not have a
Sub(Run)::getValidHandle function, which would provide the behavior you desire--i.e. if there is no match for the requested product, an exception is thrown. This looks to me like it would be straightforward to add, so feel free to add a feature request. There are experiments, however, that build
art::Handle<T>::isValid() calls into their workflow.