Update and Init function of correction
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 6 May 2010 12:34:19 +0000 (12:34 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 6 May 2010 12:34:19 +0000 (12:34 +0000)
Parameters are taken form the OCDB

AliTPCcalibDB.cxx              - copy paste error
AliTPCCorrection.h             - adding fT1, and fT2 as a data member to enable Update
AliTPCExBBShape.h              - Set fT1 and fT2
AliTPCExBConical.h             - Set fT1 and fT2
AliTPCExBTwist.h               - Set fT1 and fT2
AliTPCGGVoltError.h            - Set fT1 and fT2
AliTPCCorrection.cxx           - Set fT1 and fT2
AliTPCExBBShape.cxx            - Update and Init function
AliTPCExBConical.cxx           - Update and Init function
AliTPCExBTwist.cxx             - Update and Init function
AliTPCGGVoltError.cxx          - Update and Init function

TPC/AliTPCCorrection.cxx
TPC/AliTPCCorrection.h
TPC/AliTPCExBBShape.cxx
TPC/AliTPCExBBShape.h
TPC/AliTPCExBConical.cxx
TPC/AliTPCExBConical.h
TPC/AliTPCExBTwist.cxx
TPC/AliTPCExBTwist.h
TPC/AliTPCGGVoltError.cxx
TPC/AliTPCGGVoltError.h
TPC/AliTPCcalibDB.cxx

index 2ba9416..a88eb2a 100644 (file)
@@ -116,7 +116,7 @@ const Double_t AliTPCCorrection::fgkZList[AliTPCCorrection::kNZ]     =   {
 
 
 AliTPCCorrection::AliTPCCorrection() 
-  : TNamed("correction_unity","unity"),fJLow(0),fKLow(0)
+  : TNamed("correction_unity","unity"),fJLow(0),fKLow(0), fT1(1), fT2(1)
 {
   //
   // default constructor
@@ -124,7 +124,7 @@ AliTPCCorrection::AliTPCCorrection()
 }
 
 AliTPCCorrection::AliTPCCorrection(const char *name,const char *title)
-  : TNamed(name,title),fJLow(0),fKLow(0)
+: TNamed(name,title),fJLow(0),fKLow(0), fT1(1), fT2(1)
 {
   //
   // default constructor, that set the name and title
@@ -220,13 +220,15 @@ void AliTPCCorrection::Print(Option_t* /*option*/) const {
   printf("TPC spacepoint correction: \"%s\"\n",GetTitle());
 }
 
-void AliTPCCorrection:: SetOmegaTauT1T2(Float_t /*omegaTau*/,Float_t /*t1*/,Float_t /*t2*/) {
+void AliTPCCorrection:: SetOmegaTauT1T2(Float_t /*omegaTau*/,Float_t t1,Float_t t2) {
   //
   // Virtual funtion to pass the wt values (might become event dependent) to the inherited classes
   // t1 and t2 represent the "effective omegaTau" corrections and were measured in a dedicated
   // calibration run
   //
-  // SetOmegaTauT1T2(omegaTau, t1, t2);
+  fT1=t1;
+  fT2=t2;
+  //SetOmegaTauT1T2(omegaTau, t1, t2);
 }
 
 TH2F* AliTPCCorrection::CreateHistoDRinXY(Float_t z,Int_t nx,Int_t ny) {
index d5fbfa9..44ad4aa 100644 (file)
@@ -103,9 +103,11 @@ protected:
                        const Int_t order, const Double_t x );
   void Search( const Int_t n, const Double_t xArray[], const Double_t x, Int_t &low );
   
+protected:
+  Double_t fT1;         // tensor term of wt - T1
+  Double_t fT2;         // tensor term of wt - T2
 
-
-  ClassDef(AliTPCCorrection,1);
+  ClassDef(AliTPCCorrection,2);
 };
 
 #endif
index 09ffbd5..1df9c20 100644 (file)
 ////////////////////////////////////////////////////////////////////////////
 
 #include <AliMagF.h>
+#include "TGeoGlobalMagField.h"
+#include "AliTPCcalibDB.h"
+#include "AliTPCParam.h"
+#include "AliLog.h"
 
 #include "AliTPCExBBShape.h"
 
@@ -55,27 +59,20 @@ AliTPCExBBShape::~AliTPCExBBShape() {
 
 void AliTPCExBBShape::Init() {
   //
-  // Initialization funtion (not used at the moment)
+  // Initialization funtion
   //
   
-  // Set default parameters
-  // FIXME: Ask the database for these entries
-  
-
-  AliMagF * mag = new AliMagF("mag","mag"); // from database (GRP?)
-  SetBField(mag);
-
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  SetBField(magF);
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
-
   // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
-
-  SetOmegaTauT1T2(wt,t1,t2);
+  SetOmegaTauT1T2(wt,fT1,fT2);
 
 
 }
@@ -84,18 +81,17 @@ void AliTPCExBBShape::Update(const TTimeStamp &/*timeStamp*/) {
   //
   // Update function 
   //
-
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  SetBField(magF);
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
-
   // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
-
-  SetOmegaTauT1T2(wt,t1,t2);
+  SetOmegaTauT1T2(wt,fT1,fT2);
 
 
 }
@@ -166,11 +162,11 @@ void AliTPCExBBShape::Print(Option_t* option) const {
   // C0 and C1 coefficents (for calibration purposes)
   //
   TString opt = option; opt.ToLower();
-  printf("%s\n - B field settings:\n",GetTitle());
+  printf("%s\t%s\n - B field settings:\n",GetTitle(),GetName());
   fBField->Print(option);
   //  printf(" - B field: X-Twist: %1.5lf rad, Y-Twist: %1.5lf rad \n",fBField->Print(option));
-  if (opt.Contains("a")) { // Print all details
+  if (opt.Contains("a")) { // Print all details  
+    printf(" - T1: %1.4f, T2: %1.4f \n",fT1,fT2);
     printf(" - C1: %1.4f, C2: %1.4f \n",fC1,fC2);
   }    
 }
index 62c627d..980284c 100644 (file)
@@ -31,6 +31,7 @@ public:
 
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
+    fT1=t1; fT2=t2;
     const Float_t wt1=t1*omegaTau;
     fC1=wt1/(1.+wt1*wt1);
     const Float_t wt2=t2*omegaTau;
@@ -58,7 +59,7 @@ private:
   AliTPCExBBShape & operator =(const AliTPCExBBShape);
   AliTPCExBBShape(const AliTPCExBBShape&); //dummy copy contructor
 
-  ClassDef(AliTPCExBBShape,1);
+  ClassDef(AliTPCExBBShape,2);
 };
 
 #endif
index 4d89ac9..f23e0c9 100644 (file)
 //  // plot dRPhi distortions ...                                            //
 //  conical.CreateHistoDRPhiinZR(1.,100,100)->Draw("surf2");                //
 ////////////////////////////////////////////////////////////////////////////
+#include "AliMagF.h"
+#include "TGeoGlobalMagField.h"
+#include "AliTPCcalibDB.h"
+#include "AliTPCParam.h"
+#include "AliLog.h"
 
 #include "TMath.h"
 #include "AliTPCROC.h"
@@ -63,25 +68,24 @@ AliTPCExBConical::~AliTPCExBConical() {
   //
 }
 
+
+
 void AliTPCExBConical::Init() {
   //
-  // Initialization funtion (not used at the moment)
+  // Initialization funtion
   //
   
-  // Set default parameters
-  // FIXME: Ask the database for these entries
-  
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
-
   // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
+  SetOmegaTauT1T2(wt,fT1,fT2);
 
-  SetOmegaTauT1T2(wt,t1,t2);
 
 }
 
@@ -89,18 +93,18 @@ void AliTPCExBConical::Update(const TTimeStamp &/*timeStamp*/) {
   //
   // Update function 
   //
-
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
-
   // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
+  SetOmegaTauT1T2(wt,fT1,fT2);
+
 
- SetOmegaTauT1T2(wt,t1,t2); 
 }
 
 
@@ -138,8 +142,8 @@ void AliTPCExBConical::Print(Option_t* option) const {
   //
 
   TString opt = option; opt.ToLower();
-  printf("%s\n",GetTitle());
-  
+  printf("%s:%s\n",GetTitle(), GetName());
+  printf(" - T1: %1.4f, T2: %1.4f \n",fT1,fT2);  
   printf("Conical settings: Empirical: %1.5f mm/mrad\n",fConicalFactor);
   printf("Conical settings: A-Conical: %1.5f mrad:%1.5f mrad:%1.5f mrad \n",fConicalA[0],fConicalA[1],fConicalA[2]);
   printf("Conical settings: C-Conical: %1.5f mrad:%1.5f mrad:%1.5f mrad \n",fConicalC[0],fConicalC[1],fConicalC[2]);
index 86660f1..38d68a7 100644 (file)
@@ -25,6 +25,7 @@ public:
 
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
+    fT1=t1; fT2=t2;
     const Float_t wt1=t1*omegaTau;
     fC1=wt1/(1.+wt1*wt1);
     const Float_t wt2=t2*omegaTau;
index 6dbc5f8..f9e2dd2 100644 (file)
 //  // plot dRPhi distortions ...                                         //
 //  twist.CreateHistoDRPhiinZR(1.,100,100)->Draw("surf2");                //
 ////////////////////////////////////////////////////////////////////////////
+#include "AliMagF.h"
+#include "TGeoGlobalMagField.h"
+#include "AliTPCcalibDB.h"
+#include "AliTPCParam.h"
+#include "AliLog.h"
 
 #include "AliTPCExBTwist.h"
 
@@ -49,46 +54,43 @@ AliTPCExBTwist::~AliTPCExBTwist() {
   //
 }
 
+
+
 void AliTPCExBTwist::Init() {
   //
-  // Initialization funtion (not used at the moment)
+  // Initialization funtion
   //
   
-  // Set default parameters
-  // FIXME: Ask the database for these entries
-  
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
-
   // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
+  SetOmegaTauT1T2(wt,fT1,fT2);
 
-  SetOmegaTauT1T2(wt,t1,t2);
 
-  SetXTwist(0.0);//  ideally from the database
-  SetYTwist(0.0);//  ideally from the database
 }
 
 void AliTPCExBTwist::Update(const TTimeStamp &/*timeStamp*/) {
   //
   // Update function 
   //
-
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
-
   // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
+  SetOmegaTauT1T2(wt,fT1,fT2);
+
 
- SetOmegaTauT1T2(wt,t1,t2); 
 }
 
 
@@ -118,6 +120,7 @@ void AliTPCExBTwist::Print(Option_t* option) const {
   
   printf(" - Twist settings: X-Twist: %1.5f rad, Y-Twist: %1.5f rad \n",fXTwist,fYTwist);
   if (opt.Contains("a")) { // Print all details
+    printf(" - T1: %1.4f, T2: %1.4f \n",fT1,fT2);
     printf(" - C1: %1.4f, C2: %1.4f \n",fC1,fC2);
   }    
  
index d722ed3..33acd88 100644 (file)
@@ -29,6 +29,7 @@ public:
 
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
+    fT1=t1; fT2=t2;
     const Float_t wt1=t1*omegaTau;
     fC1=wt1/(1.+wt1*wt1);
     const Float_t wt2=t2*omegaTau;
index bc679a6..a2f0a0f 100644 (file)
 ////////////////////////////////////////////////////////////////////////////
 
 
+#include "AliMagF.h"
+#include "TGeoGlobalMagField.h"
+#include "AliTPCcalibDB.h"
+#include "AliTPCParam.h"
+#include "AliLog.h"
 
 #include "AliTPCGGVoltError.h"
 #include <TMath.h>
@@ -57,44 +62,38 @@ AliTPCGGVoltError::~AliTPCGGVoltError() {
 
 void AliTPCGGVoltError::Init() {
   //
-  // Initialization funtion (not used at the moment)
   //
-  
-  // Set default parameters
-  // FIXME: Ask the database for these entries
-  
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  //
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
+  //
+  SetOmegaTauT1T2(wt,fT1,fT2);
 
-  // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
-
-  SetOmegaTauT1T2(wt,t1,t2);
-
-  SetDeltaVGGA(0.0);//  ideally from the database
-  SetDeltaVGGC(0.0);//  ideally from the database
+  //SetDeltaVGGA(0.0);//  ideally from the database
+  //SetDeltaVGGC(0.0);//  ideally from the database
 }
 
 void AliTPCGGVoltError::Update(const TTimeStamp &/*timeStamp*/) {
   //
-  // Update function 
+  // Update function
   //
-
-  Double_t vdrift = 2.6; // [cm/us]   // From dataBase: to be updated: per second (ideally)
-  Double_t bzField = -0.5; // [Tesla] // From dataBase: to be updated: per run
-
+  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  if (!magF) AliError("Magneticd field - not initialized");
+  Double_t bzField = magF->SolenoidField()/10.; //field in T
+  AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+  if (!param) AliError("Parameters - not initialized");
+  Double_t vdrift = param->GetDriftV()/1000000.; // [cm/us]   // From dataBase: to be updated: per second (ideally)
   Double_t ezField = 400; // [V/cm]   // to be updated: never (hopefully)
   Double_t wt = -10.0 * (bzField*10) * vdrift / ezField ; 
 
-  // Correction Terms for effective omegaTau; obtained by a laser calibration run
-  Double_t t1 = 0.9;   // ideally from database
-  Double_t t2 = 1.5;   // ideally from database
-
-  SetOmegaTauT1T2(wt,t1,t2);
+  SetOmegaTauT1T2(wt,fT1,fT2);
 }
 
 
@@ -242,6 +241,7 @@ void AliTPCGGVoltError::Print(Option_t* option) const {
   printf("%s\n",GetTitle());
   printf(" - GG Voltage offset: A-side: %3.1f V, C-side: %3.1f V \n",fDeltaVGGA,fDeltaVGGC);  
   if (opt.Contains("a")) { // Print all details
+    printf(" - T1: %1.4f, T2: %1.4f \n",fT1,fT2);
     printf(" - C1: %1.4f, C0: %1.4f \n",fC1,fC0);
   }    
 
index 2627f3d..46f00ab 100644 (file)
@@ -29,6 +29,7 @@ public:
 
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
+    fT1=t1; fT2=t2;
     const Double_t wt0=t2*omegaTau;
     fC0=1./(1.+wt0*wt0);
     const Double_t wt1=t1*omegaTau;
index b134398..8bc8811 100644 (file)
@@ -208,6 +208,7 @@ AliTPCcalibDB::AliTPCcalibDB():
   // constructor
   //  
   //
+  fgInstance=this;
   Update();    // temporary
 }
 
@@ -350,7 +351,7 @@ void AliTPCcalibDB::Update(){
     AliFatal("TPC - Missing calibration entry")
   }
 
-  entry          = GetCDBEntry("TPC/Calib/Distortion TPC/Calib/PadTime0");
+  entry          = GetCDBEntry("TPC/Calib/PadTime0");
   if (entry){
     //if (fPadTime0) delete fPadTime0;
     entry->SetOwner(kTRUE);