Updates for the TPC calibration using laser:
(Peter Christiansen)
I made some modification to the laser/TPC code to have
1) absolute residuals in AliTPCcalibLaser
2) be able to switch on/off the corrections I want.
The modified files are:
M AliTPCcalibLaser.h (for 1)
M AliTPCcalibLaser.cxx (for 1)
M AliTPCcalibCalib.h (for 2)
M AliTPCcalibCalib.cxx (for 2)
M AliTPCRecoParam.h (for 2)
M AliTPCRecoParam.cxx (for 2)
M AliTPCTransform.h (for 2)
M AliTPCTransform.cxx (for 2)
As can be seen most of the modifications are for 2 (but they are of
course small).
There is no dependence between the two so the files for 1 (most
important changes) can be committed without 2.
Here follows some more details about the modifications:
*******************************************************************
1) To have histograms with absolute residuals in the laser calibration
output:
AliTPCcalibLaser
Added 2 array of histograms and 1 method to calculate the linear
parametrisations based on the database.
1 problem was solved in a bit non-optimal way. In the laser database the
slopes in z are inverted, so I now as default invert them and has a flag
that can be set not to invert them for comparison with the simulated
data. Ideal solution is to update laser data base and remove this fix
(and regenerate the laser simulation).
I only added functionality. I did not remove any. (this also means that
I do not cut away rows where I know from the simulation that the beams
are overlapping as I have done in my previous presentations).
********************************************************************
2) Give the possibility to switch on and off corrections.
- AliTPCRecoParam.h
Added the variable
Int_t fUseExBCorrection; // use ExB correction
to be able to not apply ExB correction to the data
default is 1 = on
NB!!! I do not know if AliTPCRecoParam is in the database as an object?
Could it cause problems that I added a variable? In principle it should
be set correctly to 1 since I bumped the version number....
In AliTPCTransform.cxx I made something similar to what was done for the
time correction:
+ if(fCurrentRecoParam&&fCurrentRecoParam->GetUseExBCorrection()) {
+
+ calib->GetExB()->Correct(x,xx);
+
+ } else {
+
+ xx[0] = x[0];
+ xx[1] = x[1];
+ xx[2] = x[2];
+ }
NB! This could cause trouble in the reconstruction in the case where no
fCurrentRecoParam is there because then no ExB correction will be done.
But as this is the same situation for the time correction I assumed that
the aim is that there will always be a fCurrentRecoParam set.
To control all the corrections done in AliTPCcalibCalib I made a flag
for each correction that can be set. For the ExB correction I had to add
a method to AliTPCTransform.h
AliTPCRecoParam * GetCurrentRecoParamNonConst() const {return
fCurrentRecoParam;}
so that I can set the flag to not use ExB corrections.
This means that I can do what I want to do:
Run laser calibrations with my choice of calibrations applied
Get the absolute residuals in the output.
Here is a short presentation with the results I get:
http://www.hep.lu.se/staff/christiansen/laser_absres_in_alitpccaliblaser.pdf
http://www.hep.lu.se/staff/christiansen/laser_absres_in_alitpccaliblaser.odp
********************************************************************
I hope that part 1 can be committed to AliRoot. I would however hope
that if part 2 is not committed that in some other way these switches
are added that the standard AliRoot can be configured to apply only
certain corrections.