1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 ////////////////////////////////////////////////////////////////////////////////
18 // AliTPCInverseCorrection class //
20 // This is a wrapper that inverts an AliTPCCorrection. This is done by //
21 // swapping the CalculateCorrection and CalculateInverseCorrection functions. //
22 // The wrapped correction is supplied as a pointer and the class relies //
23 // on the fact, that this pointer keeps pointing to the right object. //
24 // However, the ownership is not changed, i.e. the wrapped correction //
25 // will not be deleted when this correction is destructed. //
27 // date: 27/04/2010 //
28 // Authors: Magnus Mager, Stefan Rossegger, Jim Thomas //
29 ////////////////////////////////////////////////////////////////////////////////
32 #include "AliTPCInverseCorrection.h"
33 #include <TTimeStamp.h>
36 AliTPCInverseCorrection::AliTPCInverseCorrection()
39 // default constructor
40 // (only meant for ROOT I/O)
44 AliTPCInverseCorrection::AliTPCInverseCorrection(AliTPCCorrection *correction)
45 : fCorrection(correction) {
47 // Constructor that is creating the inverse of the supplied correction.
48 // It automatically sets the name ("inv_[correction name]") and tile
49 // ("Inverse of [correction title]").
53 name +=correction->GetName();
55 title+=correction->GetTitle();
57 SetTitle(title.Data());
60 AliTPCInverseCorrection::~AliTPCInverseCorrection() {
64 if (fCorrection) delete fCorrection;
68 void AliTPCInverseCorrection::Init() {
70 // Initialization funtion (not used at the moment)
72 if (fCorrection) fCorrection->Init();
76 void AliTPCInverseCorrection::Update(const TTimeStamp &timeStamp) {
80 if (fCorrection) fCorrection->Update(timeStamp);
84 void AliTPCInverseCorrection::Print(Option_t* option) const {
86 // Print function to check which correction classes are used
87 // option=="d" prints details regarding the setted magnitude
88 // option=="a" prints the C0 and C1 coefficents for calibration purposes
91 printf("Inverse of ");
92 if (fCorrection) fCorrection->Print(option);
95 void AliTPCInverseCorrection::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
97 // This is just calling the CalculateInverseCorrection of the wrapped
98 // correction -- or puts dr=0 if the latter is 0.
101 fCorrection->GetDistortion(x,roc,dx);
103 for (Int_t j=0;j<3;++j) dx[j]=0.;
106 void AliTPCInverseCorrection:: SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
108 // Virtual funtion to pass the wt values (might become event dependent) to the inherited classes
109 // t1 and t2 represent the "effective omegaTau" corrections and were measured in a dedicated
112 if (fCorrection) fCorrection->SetOmegaTauT1T2(omegaTau, t1, t2);
115 void AliTPCInverseCorrection::GetDistortion(const Float_t x[],const Short_t roc,Float_t dx[]) {
117 // This is just calling the CalculateCorrection of the wrapped
118 // correction -- or puts dr=0 if the latter is 0.
121 fCorrection->GetCorrection(x,roc,dx);
123 for (Int_t j=0;j<3;++j) dx[j]=0.;
126 ClassImp(AliTPCInverseCorrection)