Updates for the TPC calibration using laser:
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 2 Jul 2009 16:49:21 +0000 (16:49 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 2 Jul 2009 16:49:21 +0000 (16:49 +0000)
commit7af539c66dfa3a4a5cc2360faed22d787e2335ae
treec930f2611fc8ddceed88e985b7001bf5d650bfd3
parent3ce45991bc3183cf4c96489c483e0899868a0f7c
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.
TPC/AliTPCcalibCalib.cxx
TPC/AliTPCcalibCalib.h
TPC/AliTPCcalibLaser.cxx
TPC/AliTPCcalibLaser.h