-
Notifications
You must be signed in to change notification settings - Fork 442
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
Qatable #13633
base: dev
Are you sure you want to change the base?
Qatable #13633
Conversation
REQUEST FOR PRODUCTION RELEASES:
This will add The following labels are available |
Hello @f3sch Thank you for the pull request. Here is the link to the corresponding material: github issue:
|
undrafting to check CI |
Thank you for following. |
Internal information - test at GSI using debug streamer:
|
Hello @f3sch, Thank you for implementing the changes. I have identified two major issues so far:
Additionally, I would recommend using consistent variable names in both the source code and the debug stream to make it easier to test and ensure code consistency. The code for testing I committed to the tpc gitlab, I am not sure if we have some code for the O2 testing. I produced QA plots with that. Thank you for your help Marian |
Track Residual Coding:
After the fix, the pulls—normalized errors—are now close to one (as should be) as shown in the slide. Test code used in slide: |
Signed-off-by: Felix Schlepper <[email protected]>
@miranov25 at your leisure, I updated the code and uploaded updated files for you to test at the path posted above. |
Hello @f3sch, Thank you very much for making the changes. I see you have modified the Beta0 estimator as we discussed and agreed upon. However, there is another adjustment needed related to the sampling. In the current code, you are using sampling with 1 sigma resolution, but we need to sample it with 5 bins per sigma (to be able to correct later) I will add the proposed modification directly to the code, temporarily as a hardcoded number. Additional modifications needed
For the sampling of sigma/5, we should see approximately 5 bins in Best regards
|
For now, I suggest modifying the A more elegant approach would be to create |
@miranov25 I do not understand, please send me the code you want to have changed, or add it here as a commit. |
Hello @f3sch, To minimize the scope of changes while maintaining the desired functionality and improving the precision of residual coding, I propose adding a new parameter: constexpr float trackQAScaleBins{5.f}; I assume 5 bins will be a reasonable compromise between the disc size/entropy and precision, such we can use that later for corrections. This parameter can then be used in the calculation of residuals as shown below: // Calculate deltas for contributors
trackQAHolder.dRefContY = safeInt8Clamp((itsCopy.getY() - tpcCopy.getY()) * scaleGlo(0) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefContZ = safeInt8Clamp((itsCopy.getZ() - tpcCopy.getZ()) * scaleGlo(1) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefContSnp = safeInt8Clamp((itsCopy.getSnp() - tpcCopy.getSnp()) * scaleGlo(2) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefContTgl = safeInt8Clamp((itsCopy.getTgl() - tpcCopy.getTgl()) * scaleGlo(3) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefContQ2Pt = safeInt8Clamp((itsCopy.getQ2Pt() - tpcCopy.getQ2Pt()) * scaleGlo(4) * o2::aod::track::trackQAScaleBins);
// Calculate deltas for global track against averaged contributors
trackQAHolder.dRefGloY = safeInt8Clamp(((itsCopy.getY() + tpcCopy.getY()) * 0.5f - gloCopy.getY()) * scaleGlo(0) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefGloZ = safeInt8Clamp(((itsCopy.getZ() + tpcCopy.getZ()) * 0.5f - gloCopy.getZ()) * scaleGlo(1) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefGloSnp = safeInt8Clamp(((itsCopy.getSnp() + tpcCopy.getSnp()) * 0.5f - gloCopy.getSnp()) * scaleGlo(2) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefGloTgl = safeInt8Clamp(((itsCopy.getTgl() + tpcCopy.getTgl()) * 0.5f - gloCopy.getTgl()) * scaleGlo(3) * o2::aod::track::trackQAScaleBins);
trackQAHolder.dRefGloQ2Pt = safeInt8Clamp(((itsCopy.getQ2Pt() + tpcCopy.getQ2Pt()) * 0.5f - gloCopy.getQ2Pt()) * scaleGlo(4) * o2::aod::track::trackQAScaleBins); This approach keeps the changes minimal while providing better control over the scaling and precision of the residual coding. Best regards, |
@miranov25 thank you, find the updated code and the updated file uploaded for you to check. |
Thank you for your input. It seems there’s still an issue. On average, the results look fine, but the unit test is failing. The coding appears to be less precise than expected. One problem is that we should be using the nearest integer for rounding, but currently, that’s not the case. Additionally, I’m noticing tails in the data, which could indicate another issue. At the moment, I haven’t pinpointed the exact cause of tail. I’m reviewing both the unit test and the code, and both seem fine on the surface. I will find the last problem. I plan to present pull request tomorrow, as we need this code urgently for the PbPb processing. @f3sch, in the meantime, could you prepare a data volume estimator that is officially recognized by the OFFLINE team? I typically use tree->Print() for quick checks, but I recall there’s a “standard tool” available that we can utilize. Thank you for your assistance! |
Support material for statement above: Tail and rounding error (nint) - Unit testDefinition in unit test: tree->SetAlias("qpt","trackITSTPCProp.mP[4]");
tree->SetAlias("beta","sqrt(min(50./mdEdx.dEdxMaxTPC, 1.))");
tree->SetAlias("x","qpt/beta");
for (int i=0; i<5; i++){
tree->SetAlias(Form("scaleCont%d",i),Form("scaleBins/sqrt(%f**2 + (%f*x)**2)",trackQAScaleContP0[i],trackQAScaleContP1[i]));
tree->SetAlias(Form("scaleGlo%d",i),Form("scaleBins/sqrt(%f**2 + (%f*x)**2)",trackQAScaleGloP0[i],trackQAScaleGloP1[i]));
}
tree->SetAlias("itstpc_dP0","(trackITSProp.mP[0]-trackTPCProp.mP[0])");
tree->SetAlias("itstpc_dP0QA","(trackQAHolder.dRefContY)/scaleCont0");
tree->SetAlias("itstpc_Delta0","(itstpc_dP0-itstpc_dP0QA)");
tree->SetAlias("itstpc_Delta0Norm","(itstpc_dP0-itstpc_dP0QA)*scaleCont0"); |
Fix Scaling Issue for
|
In case I used the same "buggy" value for decoding of delta everything is like expected and Unit test is OK. Plot above should be compared to plot in comment above: |
Also, other tests with the deltaGlobal P0 and deltaCont P4 are working as expected - after local fix As an example unit test for the Glo deltaY:
|
Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h
Outdated
Show resolved
Hide resolved
Subject: Delta Coding: Disk Size Impact and Full Data Size Report -Using the Below is the full output of the root [6] O2trackqa_001->GetListOfBranches()->Print("", "fDeltaRef*")
Collection name='TObjArray', class='TObjArray', size=23
*Br 0 :fDeltaRefContParamY : fDeltaRefContParamY/B *
*Entries : 138216 : Total Size= 138846 bytes File Size = 27159 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 5.09 *
..............................................................................
*Br 1 :fDeltaRefContParamZ : fDeltaRefContParamZ/B *
*Entries : 138216 : Total Size= 138846 bytes File Size = 35413 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 3.91 *
..............................................................................
*Br 2 :fDeltaRefContParamSnp : fDeltaRefContParamSnp/B *
*Entries : 138216 : Total Size= 138856 bytes File Size = 27635 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 5.00 *
..............................................................................
*Br 3 :fDeltaRefContParamTgl : fDeltaRefContParamTgl/B *
*Entries : 138216 : Total Size= 138856 bytes File Size = 28595 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 4.84 *
..............................................................................
*Br 4 :fDeltaRefContParamQ2Pt : fDeltaRefContParamQ2Pt/B *
*Entries : 138216 : Total Size= 138861 bytes File Size = 30003 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 4.61 *
..............................................................................
*Br 5 :fDeltaRefGloParamY : fDeltaRefGloParamY/B *
*Entries : 138216 : Total Size= 138841 bytes File Size = 25885 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 5.34 *
..............................................................................
*Br 6 :fDeltaRefGloParamZ : fDeltaRefGloParamZ/B *
*Entries : 138216 : Total Size= 138841 bytes File Size = 32123 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 4.31 *
..............................................................................
*Br 7 :fDeltaRefGloParamSnp : fDeltaRefGloParamSnp/B *
*Entries : 138216 : Total Size= 138851 bytes File Size = 26160 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 5.29 *
..............................................................................
*Br 8 :fDeltaRefGloParamTgl : fDeltaRefGloParamTgl/B *
*Entries : 138216 : Total Size= 138851 bytes File Size = 25496 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 5.42 *
..............................................................................
*Br 9 :fDeltaRefGloParamQ2Pt : fDeltaRefGloParamQ2Pt/B *
*Entries : 138216 : Total Size= 138856 bytes File Size = 26742 *
*Baskets : 1 : Basket Size= 139240 bytes Compression= 5.17 *
.............................................................................. |
@miranov25
Produced for LHC23zzk 544508 40kHz pb-pb in 1 AO2D with:
|
@f3sch |
Subject: Feedback on Modifications and tpcTime0 Compression Hello @f3sch, Thank you for the modifications. The new file has passed the unit test, and the ITS+TPC deltas are now stored correctly. I have a comment regarding the tree->Draw("trackQAHolder.tpcTime0:trackTPCOrig.mTime0") Currently, the We could improve the compression of Given the upcoming deadline next week, I won’t make this a blocker. I suggest proceeding with the pull request as is and testing the option for relative coding in parallel. Marian
|
Hello @sawenzel and @AliceO2Group/framework-admins, Could you please review and approve the pull request? There are two approvals still missing, and I’m unsure who the current admins are. The deadline for the Release Validation is next Monday, but I’ll be attending Physics Week, so it would be ideal to have everything finalized this week. Thank you |
Hello @pzhristov, @ddobrigk, & other @AliceO2Group/framework-admins Could you please approve the pull request? Felix has provided an estimate of the data volume in the comment above: Regarding the fractional usage of the trackQA table within APass1, I will discuss this during the ALICE Physics Week and will send you additional material via chat. Since approximately 50% of the statistics are impacted by significant distortion fluctuations that we won't be able to resolve in APass1, I believe we can afford to store this information for now (as we reconstruct only a fraction of the data). If we restrict the reconstruction to only "good CTFs" (as agreed last week) the output data volume should not pose an issue for APass1. For APass2, which will follow once we resolve the fluctuation problem, we can revisit and adjust the fraction as needed. I will be flying to Salerno in 2 hours and will be offline for some time, with very limited connectivity. |
@miranov25