-
Notifications
You must be signed in to change notification settings - Fork 19
[WiP] Make sure to always only have valid collection names #236
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
base: main
Are you sure you want to change the base?
Conversation
Lol, now it gets further than before, but still fails in the same line, this time hitting this exception: |
I have switched the name lookup away from requiring the collection ID, so I think we should no longer mix up collections during the conversion. I didn't fully test this yet, but it should in principle fix the issue. @Zehvogel can you run some quick checks with this? Or alternatively let me know which branch of CLDConfig to use to test myself. |
@tmadlener you can check it with the I can probably take a look this afternoon, but maybe you are faster ;) |
Now I am suspicious about:
In the LCIO world, |
Hmm... Looks like some of the ParticleID collections now escape their enclosure somehow. Let me investigate why. |
OK. I found the issue with the current version. Before my "fix" of not using the collection IDs, we were actually getting the name of the reconstructed particle collection from the first element of the particle id collection. With the changes in place we skip that lookup and rather use the collection name of the particle id, which is obviously wrong. This also means that the work around for not having to use the object id doesn't work as easily as I had thought and we probably need to address key4hep/k4FWCore#311 first. |
I have switched back to using the collection ID to identify collections to which ParticleID information should be attached. This means that we need the changes in key4hep/k4FWCore#312, especially since we make direct use of one of the newly introduced methods there. With the latest changes this also switches the storage of converted EDM4hep collections (from EDM4hep) to the TES over from the (to be deprecated) This does still not fix all the issues with CLD reconstruction. There is a mixup / duplication of PID algorithms now:
|
Oh, is there just no check if a PID already exists before converting it to LCIO? Indeed, I think here we need to make another distinction, as the PID is in collections in edm4hep that never will be in lcio because there PID info is not stored as a collection: debug() << "Converting collection " << edm4hepName << " (storing it as " << lcioName << ")" << endmsg;
if (!EDM4hep2LCIOConv::collectionExist(lcioName, lcio_event)) {
convertAdd(edm4hepName, lcioName, lcio_event, collection_pairs, pidCollections, dQdxCollections);
} else {
|
Probably, we want to make that distinction already earlier, were we just add all the collections to be converted here |
The problem here is different, I think. We split PIDs into different collections on a "PID algorithm" base. Hence, there will be several PIDs with the same algorithm but different reco collections. I would guess that we mix up things here somewhere and then try to assign to the wrong reco collection. |
I seem to have solved all issues locally to make key4hep/CLDConfig#78 work (with some minor adaptions to that). I will have to check what I broke in the process and looking at the |
864bcfd
to
4592dde
Compare
Don't use the to be deprecated DataHandle for the PodioDataSvc and instead store directly into format that is understood and usable via Functionals and IOSvc. Use new k4FWCore functionality to assign an id on the fly.
Easier to keep collectionID assignment
BEGINRELEASENOTES
ENDRELEASENOTES
Fixes #235
@Zehvogel can you give this a go to see if it doesn't break other things?