Would like ability to query branch ID numbers in a file
NOvA has produced several MC files with identical run and subrun values. However, a subset of these files created a data product that the others did not. When attempting to run them all in a job together, there is a warning about a branch mismatch despite the offending data products being dropped from derived files.
I would like the ability to query the branch ID values in a file so that I can identify which files have a history with the extra data products.
#1 Updated by Rob Kutschke over 4 years ago
By branch ID do you mean the art::ProductID or the fully qualified branch name? Or something else? You can get both from the Provenance, which you can get from the Handle.
If you mean art::ProductID, we could ask the art team to extend the function of FileDumperOutput to provide the art::ProductID as part of it's output. I think it should be an optional part of the output - not sure if I want it on or off by default. This is something that I have thought about asking for before but never pulled the trigger.
#2 Updated by Brian Rebel over 4 years ago
Hi Rob - the error I saw was the following:
%MSG-s ArtException: PostCloseFile 31-Aug-2016 12:49:07 CDT PostEndRun
cet::exception caught in art
---- MismatchedInputFiles BEGIN
Cannot merge file '/nova/ana/users/lcremone/skimming/nd/genie_nonswap/individual_skim_files/skim_r00010377_s08-r00010377_s08_20160824T094247.root' due to inconsistent process histories:
Previous File File to merge ==============================
3377980795 1582834226 <——— mismatch is here for 2 lines
and Kyle tells me those numbers are the BranchIDs. I am afraid I don't know enough to answer how that fits into a ProductID. I will say that at run time in an art process it is too late as evidenced by my error above. Additionally, the files are perfectly good to use, just not in combination with each other.
#3 Updated by Kyle Knoepfel over 4 years ago
BranchID is a checksum created from the product's
ROOT branch name. It is different from a
ProductID in that the
ProductID is a pair of numbers, which compresses more tightly than the checksum. Both classes are used in the implementation of resolving
art::Ptrs, the details of which are not worth getting into.
The set of
BranchIDs per file is what determines if two input files can serve as inputs to the same
art process. For more details, see the BranchID documentation.
#4 Updated by Kyle Knoepfel over 4 years ago
- Category set to Application
- Status changed from New to Resolved
- Assignee set to Kyle Knoepfel
- % Done changed from 0 to 100
- SSI Package art added
- SSI Package deleted (
This feature is provided through an additional option to
Implemented with commit art:a9fb20ce.