-
Notifications
You must be signed in to change notification settings - Fork 13
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
Make topoclustering work with the new theta-module readout for the FCC-ee calorimeter #13
Make topoclustering work with the new theta-module readout for the FCC-ee calorimeter #13
Conversation
…t for latest detector with 1545 modules
…ilefor EVE display
Hi @BrieucF I think this PR and the related ones are now good for review. A little remaining thing for this package as we discussed one week ago is for you to check the nmult and nmult_trace values to use in various places in create_capacitance_file_theta.py (and perhaps update the maybe misleading comment about the value of nmult) |
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 Giovanni! Can you also reflect the new workflow in the README.md?
# latest | ||
activeTotal = 400.5 | ||
inclinedTotal = 565.86 | ||
tracesPerLayer = [6, 1, 1, 0, 0, 1, 2, 3, 4, 5, 6, 7] # only one trace for strip layer because 4 cells instead of one |
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.
I propose to move to the version where we extract all channels from the back
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.
how should I modify this part then?
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.
[0, 1, 5, 6, 7, 8, ...] (For the "1" in the strip layer this could be discussed but I think we can start with this)
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.
ok, fixed in latest commit
08c4b8d
capa_per_mm = 0.123 # pF/mm | ||
capa_per_mm_stripLayer = 0.062 # pF/mm | ||
# multiplicative factor | ||
# factor two because we merge two phi cells together, another factor 2 because we have two 1) signal pad / shield capa 2) HV plate / absorber capa per cell |
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.
It looks like there is indeed a small mistake here, I had changed this to a factor 2 instead of 4 because I moved to capacitance derived from ANSYS Maxwell which already takes into account the "factor 2 because we have two signal pad / shield capa". But for the part "HV plate / absorber capa per cell" this factor 2 should be there. It won't make a big difference but it seems not correct per se.
I propose to refactor this a bit: apply the factor 2 for the "HV plate / absorber capa per cell", then apply the factor "numberOfMergedCellsInPhi" which now depends on the layer to all capacitances. The trace capacitance is in principle already taken into account in the noise estimation.
That being said, this very detailed treatment is probably an overkill now that we now that the noise is not a big deal. Let's discuss it when possible.
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.
Do I understand correctly that the factors to apply are:
- shield: x2 (extra factor 2 already included from ANSYS)
- trace: x4
- detector: x2
?
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 Giovanni, not exactly. I am afraid we have to refactor this code a bit if we want to have a proper treatment for an arbitrary cell merging strategy. One way to do is to have lists of multiplicative factors n_cells_merged_phi
and n_cells_merged_theta
which should be applied (both) to the 'final cell capacitance'. To get the final cell capacitance, just sum the detector capacitance (2 * epsilon0 * epsilonRLAr * area / distance
, explicitly adding here the missing factor 2 for the fact that we have two singal pad/absorber capa per cell) and the capacitance from the shields (the value for the "shield capacitance per mm" from Maxwell should be cross-checked and re-computed with the upcoming new PCB design but you can certainly start with what is there). The contribution from the "trace" (understand here the transmission line itself) is in principle already included in Martin's noise computation.
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.
changed in latest commit, please have a look. I have some doubt about the shield capacitance which is quite bigger than before due to the factor n_cells_merged_theta = 4 which was missing previously
README.md updated in latest commit |
Can you add
to avoid breaking those config files? e.g. in runTopoAndSlidingWindowAndCaloSim.py and runClueAndTopoAndSlidingWindowAndCaloSim.py |
…heta-module readout
Done in latest commit |
#distance = (radius[i+1] + radius[i]) / 2. * pi / Nplanes * cos (angle) - pcbThickness / 2. - passiveThickness / 2. | ||
|
||
#Detector area (C = epsilon*A/d) | ||
area = abs( real_radial_separation[i] * ( 1 / tan(thetaNext) - 1 / tan(theta) ) |
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.
If we go for the treatment proposed above, the area should be the smallest cell from the simulation, before merging, which will probably be the "strip cell size" (here it was the 'nominal cell' area and a division was applied for the strip layer).
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.
changed
# analytical formula (nmultShield = 2) | ||
#capacitanceShield = nmultShield * nMergedModules[i] * cellLength * tracesPerLayer[i] * 1 / inch2mm * 0.67 * (epsilonR + 1.41) / logMicrostrip | ||
# from maxwell (nmultShield = 1) | ||
capacitanceShield = nmultShield * nMergedModules[i] * nMergedThetaCells[i] * cellLength * tracesPerLayer[i] * capa_per_mm[i] |
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 Giovanni, nice! I think there is indeed some double counting here: the number of merged module in theta here account for the fact that we simulate the strip size everywhere, then merge them to get the nominal cells. But the shield/pad capa is reasonably independent of the cell size and this part of the merging is already taken into account by the tracesPerLayer
.
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 for spotting this, so the bottom line is that the nMergedThetaCells[i]
should actually not be applied for the shield/pad capacitance
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.
fixed in latest commit
Very nice! Thanks! |
This PR and related ones for FCCDetectors and LAr_scripts make topoclustering work with the new theta-module readout for the FCC-ee calorimeter.
This one in particular contains the new python scripts to create noise vs theta histograms, neighbour maps and noise maps. It also includes a couple of ROOT macros for printing the neighbours of the cells and to display events with hits/cells/topoclusters in the ECal barrel.
Tagging @BrieucF @gartrog @dasphy
Related PRs
HEP-FCC/k4RecCalorimeter#51
HEP-FCC/FCCDetectors#63