-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ROOT IORule for std::auto_ptr -> std::unique_ptr does not work with high split level [ROOT] #43923
Comments
assign core, root |
New categories assigned: core @Dr15Jones,@makortel,@smuzaffar you have been requested to review this Pull request/Issue and eventually sign? Thanks |
cms-bot internal usage |
A new Issue was created by @Dr15Jones Chris Jones. @Dr15Jones, @rappoccio, @smuzaffar, @makortel, @sextonkennedy, @antoniovilela can you please review it and eventually sign/assign? Thanks. cms-bot commands are listed here |
The iorule in question are cmssw/SimDataFormats/GeneratorProducts/src/classes_def.xml Lines 177 to 179 in 4a6d7e8
cmssw/SimDataFormats/GeneratorProducts/src/classes_def.xml Lines 220 to 222 in 4a6d7e8
|
@pcanal FYI |
type root |
assign xpog |
in the context of EOY24 reprocessing, this needs some attention. what are cms options on this matter ? |
Ideally we'd have the iorule behavior fixed in ROOT. Thinking about workarounds, I guess in principle we could run a simple conversion job using 10_6_X first that reads the high-split-level AODSIM file and produces a splitlevel-0 file, that is then read by the first 15_0_X processing step. |
Hi @makortel , can you please test and share one such configuration ? |
I'd expect something along the following to do the job import FWCore.ParameterSet.Config as cms
process = cms.Process("ConvertToNonsplit")
process.source = cms.Source("PoolSource",
fileNames = cms.untracked.vstring("<inputfile>")
)
process.out = cms.OutputModule("PoolOutputModule",
fileName = cms.untracked.string("<outputfile>"),
splitLevel = cms.untracked.int32(0),
overrideInputFileSplitLevels = cms.untracked.bool(True)
)
process.ep = cms.EndPath(process.out) but I'd leave the testing to others. |
I could also rephrase: if someone crafts a test (that gets run in IBs) that checks the |
so you'd like a test, that reads the old file with the old release, dumps the value somehow. reads the old file with the new release (and the workaround), dumps the value ; and make a comparison of the two. I don't think we really need this to run in the IB, but rather a one-of test that #43923 (comment) would do |
looks like there is no issue in the end : #43422 (comment) |
I checked the file
is not split (i.e. split level is 0), which then explains why the read rule works. We were probably interpreting the statement "AOD and MiniAOD are stored with split level 99" too literally. What the statement really means is that the data products created by the job writing AOD/MiniAOD are written with split level 99, but the If all relevant 10_6_X AODSIM and MiniAODSIM datasets have the same property (i.e. |
Unfortunately one-off test is not sufficient to guarantee the present functionality stays functional with new code changes (I'm mostly worried about ROOT). Even if the reading seems to work in practice with the 10_6_X files, I'd recommend to craft a test that ensures that capability. |
thanks @makortel . We would need to find a file with that branch with high split level, than use it as input. Not sure how to find one such 10.6 AODSIM dataset ; chances are they are all with |
So how worried are we about a 10.6 AODSIM dataset where the GEN information was stored with non-zero split level? In the leading order I'd also guess they would have all been produced with the same output settings, but who knows. |
@cms-sw/xpog-l2 are less worried about this indeed |
The iorule in SimDataFormats/GeneratorProducts which deals with converting files written using
std::auto_ptr<gen::PdfInfo>
but read with releases usingstd::unique_ptr<gen::PdfInfo>
does not work if the file was written using split level of 99. It does work if the file was written using split level 0.In both cases, the iorule is executed, but in the high split level case the address returned from
std::auto_ptr<>::get
is always null.The text was updated successfully, but these errors were encountered: