Skip to content
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

Remove fake IB HalfStave and Module volumes #6011

Merged
merged 5 commits into from
May 24, 2021

Conversation

mario6829
Copy link
Contributor

The fake volumes HalfStave and Module were removed from the Inner Barrel geometry tree. Now the Chip volume is directly placed in the Stave volume (i.e. the Chip volume is a direct daughter of the Stave). All other (passive) elements (glue, FPC, capacitors) are still together in a physical volume to speed up traversing the volume tree (since the Stave is an Assembly). Only the Chip is an alignable volume.

@mario6829
Copy link
Contributor Author

Dear @iouribelikov @shahor02 here it is the removal of the fake HalfStave and Module from the IB geometry. Please let me know if it is ok or if there are problems. Many thanks and kind regards

@iouribelikov
Copy link
Collaborator

@mario6829 @shahor02 Unfortunately, this PR breaks the track finding. Probably, this happens because the "Module" volume is not present anymore for the Inner Barrel.

A quick way to reproduce the potential problem:
o2::base::GeometryManager::loadGeometry();
o2::its::GeometryTGeo* geom = o2::its::GeometryTGeo::Instance();

And this gives:
[ERROR] Inconsistency between Nchips=0 and Nrow*Ncol=2000000001*2000000001->-1946474495
Extracted chip dimensions (x,z): -1 -1 Module Span: -2e+09 -2e+09
( The message comes from GeometryTGeo::extractNumberOfChipsPerModule(...) )

@mario6829
Copy link
Contributor Author

@iouribelikov many thanks for spotting the source of the error! I'll check and adapt the code for getting the number of chips to the new geometry tree. Cheers.

@mario6829 mario6829 requested a review from rpezzi as a code owner May 7, 2021 10:49
@mario6829
Copy link
Contributor Author

@iouribelikov I changed the name of the IB services container to avoid the string "Module" which made confusion in GeometryTGeo routines. It should work now. Many thansk again. Cheers

@iouribelikov
Copy link
Collaborator

@mario6829 OK. Now it works. Thanks a lot.

iouribelikov
iouribelikov previously approved these changes May 7, 2021
@shahor02
Copy link
Collaborator

@mario6829 I've added one more fix since the TPC-ITS matching was failing in fullCI.

Still, the fullCI fails due producing in ITS primary vertexing for seeding:

**** FATAL: not enough memory in the CellsLookupTable, increase the tracklet memory coefficients ****

@mconcas, substituting this cout by more informative message (see #6156) I get

[ERROR] Exception caught: not enough memory in the CellsLookupTable, increase the tracklet memory coefficients: 900 tracklets on L1, lookup table size 829 on L0

Any hint why? In principle, the geometry is not supposed to change after this PR, just some fake volumes are removed and alignables definition was changed.

@mconcas
Copy link
Collaborator

mconcas commented May 14, 2021

Hi, this is actually the tracker part. It tells us that allocated memory (configurable in params) is not enough wrt estimation of the needed memory for cell finding. I frankly don't know why we see this at this point, I assume the tracker is running always on the same data in this tests. Is this out of the workflow? Or some kind of test on macro?

@shahor02
Copy link
Collaborator

@mconcas ok, thanks. The sample is statistically random, always 5pbpb events.
I've just tried to reconstruct the same data with dev, and again get this error. In principle, I would not expect the number of hits to change with this geometry fix.

@mpuccio I put the ITS data + needed files in https://cernbox.cern.ch/index.php/s/E1cCscdo6Zkjtu4
the problem can be reproduced with

o2-raw-file-reader-workflow --input-conf raw/ITS/ITSraw.cfg | o2-itsmft-stf-decoder-workflow | o2-its-reco-workflow --trackerCA --tracking-mode sync --clusters-from-upstream --disable-mc

Could you check, and if the buffers allocation parameters indeed need to be changed, do this?

@mpuccio
Copy link
Contributor

mpuccio commented May 14, 2021

Hi @shahor02, how urgent is this? With the timeframe approach I removed this static allocation and thus the need of adjusting this parameters on CPU (it will need to be then adjusted for the GPU part...). If super urgent I will tune the parameter otherwise I would use the new tracker.

@shahor02
Copy link
Collaborator

Actually, I see that the ITS hit generation is wrong, on IB layers they are all assigned to stave #1 of corresponding layer.
@mario6829 looks like a problem with volumes definition, could you check?

chipIndex

@shahor02
Copy link
Collaborator

Hi @shahor02, how urgent is this? With the timeframe approach I removed this static allocation and thus the need of adjusting this parameters on CPU (it will need to be then adjusted for the GPU part...). If super urgent I will tune the parameter otherwise I would use the new tracker.

I would say urgent but on the geometry side, not the tracker :)

@mconcas
Copy link
Collaborator

mconcas commented May 15, 2021

Actually, I see that the ITS hit generation is wrong, on IB layers they are all assigned to stave #1 of corresponding layer.
@mario6829 looks like a problem with volumes definition, could you check?

chipIndex

It could then be that, being all the clusters on the same stave, we just compute too many tracklets on the same phi/zed bin interval, exceeding the parameter made projecting the average.

@shahor02
Copy link
Collaborator

It could then be that, being all the clusters on the same stave, we just compute too many tracklets on the same phi/zed bin interval

Sure, so far it is only geometry building problem, no need for your or Max's intervention.

@iouribelikov
Copy link
Collaborator

@mario6829 , @shahor02 ,
Now, it looks like we have got a problem here:

int chipindex = mGeometryTGeo->getChipIndex(lay, stave, halfstave, module, chipinmodule);

An extremely dirty fix could be just adding (below that line 350):
if (lay<3) { chipindex = mGeometryTGeo->getChipIndex(lay, /*stave*/module, chipinmodule); }
( Because effectively, for the IB, what used to be "module" becomes now "stave"... )

@shahor02
Copy link
Collaborator

@iouribelikov thanks, I would prefer bit cleaner fix mario6829#1
@mario6829 could you please merge it, rebase your branch to dev and forcepush?

@mario6829
Copy link
Contributor Author

@shahor02 done (merge, rebase, forcepush): now I am recompiling locally, hopes it works...

Copy link
Collaborator

@iouribelikov iouribelikov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mario6829 @shahor02
For me, it seems to work.

@shahor02
Copy link
Collaborator

yes, some CI tests are broken for other reasons, thanks for testing, merging.

@shahor02 shahor02 merged commit e8e8302 into AliceO2Group:dev May 24, 2021
cortesep pushed a commit to cortesep/AliceO2 that referenced this pull request Jun 11, 2021
* Remove fake IB HalfStave and Module volumes

* Change IB service container name (to avoid "Module")

* Adding dummy commit to trigger anothe CI check

* RecoGeomHelper: Fix calculation of nLadders on inner layers

* Fix getChipIndex for inner layers

Co-authored-by: Mario Sitta <Mario.Sitta@cern.ch>
Co-authored-by: Ruben Shahoyan <shahor02@users.noreply.github.com>
Co-authored-by: shahoian <ruben.shahoyan@cern.ch>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants