-
Notifications
You must be signed in to change notification settings - Fork 60
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
Merge EventStore #331
Comments
So this turns out to expose a very significant issue. At this point, we cannot write events to a podio file faster than about 0.1Hz. Thus, even our basic reconstruction code is completely hobbled from using podio as the output at the moment. We have burned a lot of time on trying to get this to work so really need so help figuring out what we are doing wrong. The code attached to the original post should illustrate the issue well. |
If I understand correctly your goal is to essentially merge several files (with the "same" contents). In that case the simplest solution should be ROOTReader reader;
reader.openFiles(<filenames>); // The ROOTReader can handle several files
EventStore store;
store.setReader(&reader);
ROOTWriter writer("output.root", &store);
// register all collections for writing here via their name like you do currently with the collection ID table
for (int i = 0; i < reader.getEntries(); ++i) {
writer.writeEvent();
store.clear();
reader.endOfEvent();
}
writer.finish();
reader.closeFile(); Did you try this already and run into issues? If yes, what were the issues you ran into? Alternatively, the |
Thanks for this. I'm not quite sure if I understand how the reader gets connected with the EventStore used for writing above. Are you missing a This may be getting a little bit off track though since the primary issue is actually the same one brought up during our e-mail exchange that started back on July 24th. We never followed through on a meeting since I had to move on to other pressing issues with setting up EIC reconstruction and decided to defer this until later. Here is recap of the issue: In our reconstruction framework, we deal with individual objects. Objects are managed internally via It seems the only supported mechanism is to clone them and add the clones to a
The process of cloning seems to be where the real problem lies. This process is incredibly slow and the number of references that end up in the output file balloons compared to what was in the input file. Even if we just do a straight copy using the above clone() mechanism. (File size blows up by order of magnitude). Note that some of the If you want to look at the latest iteration we have of the code you can see it at this link. There is a lot of noise that may be a bit confusing, but Line 27 is where the real issue lies. (n.b. |
I most certainly am. Sorry about that. I will edit the above snippet to also include that.
IIUC here, you do not want to merge these 4 events into one event, but rather have them stil as separate events, but with the sequence
I have put this onto the list of items to discuss at our joint meeting later today. Brief introduction to
|
Closing this as it seems to be no longer relevant with the introduction of the |
!!!IMPORTANT!!!: To facilitate faster and easier response to your issue please provide in addition to the description of the issue also the following information
The attached code sort of works. It will produce the output file with merged sets of objects from all collections. However, it also blows up the number of references (branches with "#" in their names). Whatever it is doing there, is causing the program to run VERY slow (~1Hz) and produce a file that is about x10 larger than expected.
I realize handling the references properly is probably not trivial. It would be great if this could be done. If not, another alternative might be to have a way to drop all the references altogether.
Or, if you have a quicker way to achieve this ...
tmp.tgz
The text was updated successfully, but these errors were encountered: