-
Notifications
You must be signed in to change notification settings - Fork 485
Implementation of the ITS Half Barrels #6584
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
Conversation
|
Hi @shahor02 @iouribelikov here it is the PR of the Half Barrels. Let me know in case of problems or if you need more info. Kind regards |
|
The fullCI is amazingly green, but the log shows quite some warnings and errors: The FST itself finishes w/o errors, but I am not sure if I should trust it given all these errrors. |
shahor02
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @mario6829
Thanks a lot! Looks fine but I have 1 doubt: naively I thought the half-barrel is lower level alignable than the layer (i.e. if the half-barrel contains all half-layers). But I see that in your implementation each layer is made of half-barrels, and those of different layers are independent.
Is this really supposed to be so or this is just an "effective" implementation?
Then, I am not sure a layer as alignable volume makes sense. Aren't top and bottom halves independent? If so, then I would suppress the
AliceO2/Detectors/ITSMFT/ITS/simulation/src/Detector.cxx
Lines 1049 to 1051 in 18b078c
| if (!gGeoManager->SetAlignableEntry(sname.Data(), path.Data())) { | |
| LOG(FATAL) << "Unable to set alignable entry ! " << sname << " : " << path; | |
| } |
Finally, I saw than during tests you've uploaded an ideal new alignment object to http://ccdb-test.cern.ch:8080/browse/ITS/Align. Since this creates a lot of error messages with current dev, I've masked it with empty object. If you play again with test ocdb, please clean it (before this PR is merged) by
root
.L $O2_ROOT/share/macro/UploadDummyAlignment.C+
UploadDummyAlignment("http://ccdb-test.cern.ch:8080",0,-1, o2::detectors::DetID::getMask("ITS"));
|
Many thanks @shahor02 for reviewing the code! |
@shahor02 : That is OK, the warnings seem to be during the codechecker. The codechecker always has a lot of false warnings / errors during compilation. Important is the at the end. |
@mario6829 @shahor02 As far as I understand, |
|
@mario6829 @iouribelikov OK, I would propose to suppress the whole layers as alignable DOF, because in this case I cannot apply a constraint on the movements of the half-layers of the same half-barrel (i.e. effectively consider e.g. MB half-barrel as an alignable). |
|
Ok @shahor02 I removed the alignement of Layer as you suggested. Then we can discuss how to properly re-arrange the whole volume tree. Thanks again. Cheers |
shahor02
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @mario6829 , should be fine now, with the half-layer being next to the full ITS coarse DOF I should be able to group them in global alignment (i.e. to constrain half-layers to move together).
| TString wrpV = | ||
| mWrapperLayerId[lr] != -1 ? Form("%s%d_1", GeometryTGeo::getITSWrapVolPattern(), mWrapperLayerId[lr]) : ""; | ||
| TString path = Form("%s/%s/%s%d_1", parent.Data(), wrpV.Data(), GeometryTGeo::getITSLayerPattern(), lr); | ||
| TString sname = GeometryTGeo::composeSymNameLayer(lr); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line should not be needed anymore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @shahor02 it was just a reminder that the layer was alignable and now it isn't anymore. But ok, I can remove it. Do you agree to do it in the next PR ? Otherwise I trigger again all the tests... :)
Many thanks. Cheers
| int getNumberOfModules(int lay) const { return mNumberOfModules[lay]; } | ||
| int getNumberOfHalfStaves(int lay) const { return mNumberOfHalfStaves[lay]; } | ||
| int getNumberOfStaves(int lay) const { return mNumberOfStaves[lay]; } | ||
| int getNumberOfHalfBarrels(int lay) const { return mNumberOfHalfBarrels[lay]; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mario6829 Do we need this function and the corresponding std::vector ? The number of half-barrels is always 2, is not it ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @iouribelikov I just wrote it like the other ones (pretty like the number of layers, which is actually fixed too but it has a member and a getter), but yes, I can change it into a constant (or in a single-valued member instead of a vector). @shahor02 do you agree ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done: I changed it to a single-valued member, the same for all layers.
|
Hi, I was not merging this PR since I understood @iouribelikov wants to discuss it at tomorrow meeting. |
iouribelikov
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mario6829 For me, everything works fine now. Thank you very much, Mario !
* Implementation of the ITS Half Barrels * Fixing ITSMisaligner macro for new method names with Half Barrels * Do not set Layer as alignable volume * Fixed number of half barrels * Revert "Fixed number of half barrels" This reverts commit 4f52866. * Fixed number of half barrels * Correctly add half barrel number to hit generation and chip index number Co-authored-by: Mario Sitta <Mario.Sitta@cern.ch>
The Half Barrels, an intermediate level of volumes between the Layer and the Stave, has been implemented in the ITS geometry tree. Now each Layer is composed by two Half Barrels, each one containing half of the Staves previously placed directly into the Layer volume. This structure is more realistic with respect to the real world and allow for a better misalignment of all involved elements. Anyway it should be noted that the Staves and all their subvolumes do not change their global position in the world reference system: simply they are now daughters of the Half Barrel volume which in turn is a daughter of the Layer volume.
New methods in the GeometryTGeo class were introduced to handle this new volume level, while where needed the existing methods in the GeometryTGeo and Detector classes were adapted to take into account this new level in the volume tree. The construction of the Layer geometry in the V3Layer class was changed too to actually implement the Half Barrel volumes.
In this implementation only the Staves and their own services are part of the Half Barrels. Work is in progress to include in the new volumes also those parts of the supporting structures which belong to the Half Barrels in the physical ITS.