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

Lightweight implementation of IDEA drift chamber #330

Merged
merged 95 commits into from
May 15, 2024

Conversation

atolosadelgado
Copy link
Collaborator

@atolosadelgado atolosadelgado commented Mar 20, 2024

Hi,

I have implemented the IDEA drift chamber with a minimal (hopefully better structured) geometry that follows the prescription summarized in an excel table.

This geometry uses a shape called "twisted tube". There is a pending PR in DD4hep, AIDASoft/DD4hep#1243, that is needed to solve a bug and run this sub-detector.

This pull request includes:

  • Detector constructor of this new implementation, named DriftChamber_o1_v02_T, placed under detector/tracker
  • Dedicated overlap test. New compact file was added under lcgeo/compact for that.
  • New IDEA detector version (o1_v03), evolved from o1_v02, replacing the drift chamber

I would say it is better to squash the git history when merging the PR.

Please let me know if there is something to be added or modified :)

BEGINRELEASENOTES

  • Implementation of IDEA drift chamber, o1_v02. It is based on an original description. The code was redesign to be light. Standalone overlap ctest added.

ENDRELEASENOTES

@atolosadelgado atolosadelgado marked this pull request as draft April 11, 2024 09:32
@atolosadelgado atolosadelgado changed the title Lightweight implementation of IDEA drift chamber Draft: Lightweight implementation of IDEA drift chamber Apr 11, 2024
Copy link
Contributor

@BrieucF BrieucF left a comment

Choose a reason for hiding this comment

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

Thanks a lot Alvaro, this is very very nice!

@atolosadelgado
Copy link
Collaborator Author

Hi @BrieucF , thank you very much for reviewing the code! To follow up some of the issues:

  • Why guard wire radius are given at z=0 o z=L/2? No clue, I suspect because those are limits that should be crosschecked. This is useful to implement an exception in case dimensions of the detector and such radial positions overlap.
  • I have changed the name of variables in a similar way as proposed here, I hope this gives clear understanding of the purpose of variable :)
  • The notation IDEA Drift Chamber collaboration use is not consistent with the seminal paper of the Drift Chamber geometry [1], so any other name than the one in the paper is going to be confusing anyway. I followed the excel spreadsheet naming convention as much as I could, in case of the (half) twisting angle I would leave alpha because is the name in the excel spreadsheet, and keep a comment everywhere that is half the twisted angle. If you think it is not clear enough in this PR, we can discuss how to proceed.
  • Thanks for the details about the coating, the values in the previous implementation were wrong by 30nm haha. Because simulating 30nm thickness is a bit on the edge, I would propose to define a mixed material for the wires, made of the materials of the core+coating, in the proper proportion, just in case there is a nasty effect caused by the coating material.

@andresailer thanks for the comment about pi in DD4hep :D

[1] https://arxiv.org/pdf/hep-ex/0303014.pdf

@atolosadelgado
Copy link
Collaborator Author

I have refactored the class that holds the information of the drift chamber geometry and provides some functionality.
Now it is independent from the dsc file and there are no static members, one object contains all the information for one drift chamber.
Once the DD4hep data extension feature works, I will upstream it to DD4hep, so it can be removed from the detector constructor

Copy link
Contributor

@andresailer andresailer left a comment

Choose a reason for hiding this comment

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

Random observations

@atolosadelgado
Copy link
Collaborator Author

Random observations

Thank you very much for your thorough revision of the code!

@atolosadelgado atolosadelgado marked this pull request as ready for review April 30, 2024 17:22
@atolosadelgado atolosadelgado changed the title Draft: Lightweight implementation of IDEA drift chamber Lightweight implementation of IDEA drift chamber Apr 30, 2024
@atolosadelgado
Copy link
Collaborator Author

Ready for review and merge. Please squash the commit history when merging.

@BrieucF
Copy link
Contributor

BrieucF commented May 3, 2024

Hi Alvaro, thanks, I believe you further need to add the following compact files to the IDEA_o1_v03 folder: Solenoid_o1_v01.xml, EndPlateAbsorber_o1_v01.xml

@atolosadelgado
Copy link
Collaborator Author

Hi Alvaro, thanks, I believe you further need to add the following compact files to the IDEA_o1_v03 folder: Solenoid_o1_v01.xml, EndPlateAbsorber_o1_v01.xml

Thanks for spotting the error!

Copy link
Contributor

@andresailer andresailer left a comment

Choose a reason for hiding this comment

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

Why are the tests failing?

@atolosadelgado
Copy link
Collaborator Author

Hi,
wire materials were moved to IDEA material dedicated file. I removed materials that were not in use for the drift chamber.

Data extension is now picked up from DD4hep. With my local installation (using master from DD4hep), the tests t_test_DCH_o1_v02_overlap and t_test_IDEA_o1_v03 pass, lets see the CI.

If you have further suggestions, please let me know :)

@atolosadelgado
Copy link
Collaborator Author

atolosadelgado commented May 14, 2024

sorry, I just remembered what @andresailer told me about excluding this subdetector while building the library and in the tests in case the data extension header file is missing

The main CMakeList now checks if the header file exist by using the macro find_file

@atolosadelgado
Copy link
Collaborator Author

The tests that are failing are the following:

  A runtime error occured - (uncaught exception):
      lcio::IOException: [LCReader::open()] File(s) not found:  testFCCee_o1_v04.slcio  
 Marlin will have to be terminated, sorry.
 ***********************************************

corrupted double-linked list

4/5 Test #1: t_test_CLIC_o3_v14_sim ...............   Passed  213.05 sec
5/5 Test #4: t_test_FCCee_o1_v04_sim ..............   Passed  218.85 sec

40% tests passed, 3 tests failed out of 5

Total Test time (real) = 218.86 sec

Errors while running CTest
The following tests FAILED:
	  2 - t_test_CLIC_o3_v14_reco_conformal (Subprocess aborted)
	  3 - t_test_CLIC_o3_v14_vtx_makentp (Failed)
	  5 - t_test_FCCee_o1_v04_reco_conformal (Subprocess aborted)
Error: Process completed with exit code 8.

@BrieucF
Copy link
Contributor

BrieucF commented May 14, 2024

It seems unrelated to this PR, can we merge @andresailer ?

@andresailer andresailer enabled auto-merge (rebase) May 15, 2024 11:57
@andresailer andresailer disabled auto-merge May 15, 2024 12:09
@andresailer andresailer enabled auto-merge (squash) May 15, 2024 12:11
@andresailer andresailer merged commit 0998713 into key4hep:main May 15, 2024
8 of 9 checks passed
jmcarcell added a commit that referenced this pull request May 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants