Skip to content

Conversation

@matthias-kleiner
Copy link
Contributor

  • scaling of the VDrift is automatically enabled
  • the reference T/P is extracted for VDrift objects without stored T/P if firstTime and lastTime of VDrift object is in the range +-20 minutes of available temperature and pressure
  • scaling with T/P can be disabled by setting 'TPCGasParam.Temperature=0;TPCGasParam.Pressure=0'
  • reference T/P is extracted automatically for online created VDrift with ITSTgl and laser method
  • add storing of temperature, pressure and used VDrift in timeseries

- scaling of the VDrift is automatically enabled
- the reference T/P is extracted for VDrift objects without stored T/P if firstTime and
lastTime of VDrift object is in the range +-20 minutes of available temperature and pressure
- scaling with T/P can be disabled by setting 'TPCGasParam.Temperature=0;TPCGasParam.Pressure=0'
- reference T/P is extracted automatically for online created VDrift
with ITSTgl and laser method
- add storing of temperature. pressure and used VDrift in timeseries
@github-actions
Copy link
Contributor

REQUEST FOR PRODUCTION RELEASES:
To request your PR to be included in production software, please add the corresponding labels called "async-" to your PR. Add the labels directly (if you have the permissions) or add a comment of the form (note that labels are separated by a ",")

+async-label <label1>, <label2>, !<label3> ...

This will add <label1> and <label2> and removes <label3>.

The following labels are available
async-2023-pbpb-apass4
async-2023-pp-apass4
async-2024-pp-apass1
async-2022-pp-apass7
async-2024-pp-cpass0
async-2024-PbPb-apass1
async-2024-ppRef-apass1
async-2024-PbPb-apass2
async-2023-PbPb-apass5

newVRef = normVDrift; // no T/P scaling applied
} else {
// linear scaling based on relative change of T/P
newVRef = normVDrift * (1 + (tp - refTP) / refTP);
Copy link
Collaborator

Choose a reason for hiding this comment

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

@matthias-kleiner I am wondering if this is what we want. The original reason behind this complicated normalizations was to have
a reasonable refVDrift constant over the whole, so that the residuals extraction calibration, which have granularity different from that of VDrift, would use the same refVDrift value, see

// Attention! For the refit we are using reference VDrift and TDriftOffest rather than high-rate calibrated, since we want to have fixed reference over the run
if (v.refVDrift != mTPCVDriftRef) {
mTPCVDriftRef = v.refVDrift;
mTPCDriftTimeOffsetRef = v.refTimeOffset;
LOGP(info, "Imposing reference VDrift={}/TDrift={} for TPC residuals extraction", mTPCVDriftRef, mTPCDriftTimeOffsetRef);
o2::tpc::TPCFastTransformHelperO2::instance()->updateCalibration(*mFastTransform, 0, 1.0, mTPCVDriftRef, mTPCDriftTimeOffsetRef);
}
.
Therefore, the variation of the full VDrift was provided via time-dependent corrFact.

In the current code, the normalize method does not modify the result of getVDrift(), it is just

  1. setting the refVDrift to the requested newVRef if it is non-0 and readjusts the corrFact to have the full VDrift unchanged (used to make sure that the next calibration slot creates VDrift with the same reference),
    or
  2. at the 1st call w/o argument normalizes refVDrift to full VDrift and therefore sets the corrections to 1 (to have the refVDrift as correct as possible).

This change will not only scale the final getVDrift() value by the relative T/P change (which is OK) but will also modify the refVDrift according to the current meteo condition. Should not instead just corrFact (and refTP) adjusted to account for changed T/P?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi @shahor02 , thanks for the comment and information. I was not aware of that specific reason why we wanted to have a constant refVDrift. In that case, we should indeed simply adjust the corrFact to account for changes in the T/P.

Copy link
Collaborator

@wiechula wiechula left a comment

Choose a reason for hiding this comment

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

Looks fine for me. @shahor02 if you also agree, this can be merged.

@shahor02
Copy link
Collaborator

Before we merge it: was it tested with real data?

@matthias-kleiner
Copy link
Contributor Author

Hello @shahor02 ,
I tested it with local reconstruction of real data and checking the DCAz. You can see the DCAz is indeed more flat after the correction and the slope of the VDrift as a function of T/P is 1 as expected. The jump in the second plot is because two different VDrift objects are uploaded for that run. The remaining bias of the DCAz is probably due to something else like change in the gas mixture or something else

DCAz_VDrift_TP_scaling VDrift_TP_scaling

@shahor02
Copy link
Collaborator

Thanks @matthias-kleiner !

@shahor02 shahor02 merged commit 9b8fb23 into AliceO2Group:dev Aug 21, 2025
13 checks passed
mhemmer-cern pushed a commit to mhemmer-cern/AliceO2 that referenced this pull request Sep 9, 2025
* TPC: Add scaling of VDrift with T/P

- scaling of the VDrift is automatically enabled
- the reference T/P is extracted for VDrift objects without stored T/P if firstTime and
lastTime of VDrift object is in the range +-20 minutes of available temperature and pressure
- scaling with T/P can be disabled by setting 'TPCGasParam.Temperature=0;TPCGasParam.Pressure=0'
- reference T/P is extracted automatically for online created VDrift
with ITSTgl and laser method
- add storing of temperature. pressure and used VDrift in timeseries

* VDrift: Keep refVDrift constant by changing corrFact with T/P
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.

3 participants