M AliTPCcalibCalib.cxx - start refit form TPC out instead of track...
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 1 May 2010 10:30:03 +0000 (10:30 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 1 May 2010 10:30:03 +0000 (10:30 +0000)
M      AliTPCComposedCorrection.h    - All other - init functions
M      AliTPCCorrection.h
M      AliTPCExBBShape.h
M      AliTPCExBTwist.h
M      AliTPCGGVoltError.h
M      AliTPCInverseCorrection.h
M      AliTPCComposedCorrection.cxx
M      AliTPCCorrection.cxx
M      AliTPCExBBShape.cxx
M      AliTPCExBTwist.cxx
M      AliTPCGGVoltError.cxx
M      AliTPCInverseCorrection.cxx

(Stefan)

13 files changed:
TPC/AliTPCComposedCorrection.cxx
TPC/AliTPCComposedCorrection.h
TPC/AliTPCCorrection.cxx
TPC/AliTPCCorrection.h
TPC/AliTPCExBBShape.cxx
TPC/AliTPCExBBShape.h
TPC/AliTPCExBTwist.cxx
TPC/AliTPCExBTwist.h
TPC/AliTPCGGVoltError.cxx
TPC/AliTPCGGVoltError.h
TPC/AliTPCInverseCorrection.cxx
TPC/AliTPCInverseCorrection.h
TPC/AliTPCcalibCalib.cxx

index 454f88180e2643bb88f6f093a5540aac29515065..1268b382323a88acd3cc64f67dc68730aa589166 100644 (file)
@@ -56,6 +56,7 @@
 
 #include <TCollection.h>
 #include <TIterator.h>
+#include <TTimeStamp.h>
 
 #include "AliTPCComposedCorrection.h"
 
@@ -171,10 +172,39 @@ void AliTPCComposedCorrection::Print(Option_t* option) const {
     }
     ++in;
   }
+  if (in==1) printf("  Info: The correction compound is empty: No corrections set\n");
   delete i;
 }
 
 
+void AliTPCComposedCorrection::Init() {
+  //
+  // Initialization funtion (not used at the moment)
+  //
+  
+  TIterator *i=fCorrections->MakeIterator();
+  AliTPCCorrection *c;
+  while (0!=(c=dynamic_cast<AliTPCCorrection*>(i->Next()))) 
+    c->Init();
+  delete i;
+  
+}
+
+void AliTPCComposedCorrection::Update(const TTimeStamp &timeStamp) {
+  //
+  // Update function 
+  //
+
+  TIterator *i=fCorrections->MakeIterator();
+  AliTPCCorrection *c;
+  while (0!=(c=dynamic_cast<AliTPCCorrection*>(i->Next()))) 
+    c->Update(timeStamp);
+  delete i;
+}
+
+
+
 void AliTPCComposedCorrection::SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
   //
   // Gives the possibility to set the OmegaTau plus Tensor corrections T1 and T2 (effective omega Tau)
index f89d985b51acc27319eb0db902ea55a4bf32d5aa..c4e6fe9eebb2dc484726f22484ae189bfd904b52 100644 (file)
@@ -50,6 +50,11 @@ public:
 
   virtual void Print(Option_t* option="") const;
 
+  // initialization and update functions
+  virtual void Init();
+  virtual void Update(const TTimeStamp &timeStamp);
+
+
 private:
   TCollection *fCorrections; // The corrections this one is composed of.
   CompositionType fMode;     // The way to apply the corrections (see general class documentation)
index 81c38127813d4041706e8bdb9c024335f3897b47..112a14fd18f1635f08cbf72689d1a3e5f756f779 100644 (file)
@@ -43,6 +43,7 @@
 #include <TMath.h>
 #include <TROOT.h>
 #include <TTreeStream.h>
+#include <TTimeStamp.h>
 
 #include  "AliExternalTrackParam.h"
 #include  "AliTrackPointArray.h"
@@ -198,6 +199,12 @@ void AliTPCCorrection::Init() {
   //
 }
 
+void AliTPCCorrection::Update(const TTimeStamp &/*timeStamp*/) {
+  //
+  // Update function 
+  //
+}
+
 void AliTPCCorrection::Print(Option_t* /*option*/) const {
   //
   // Print function to check which correction classes are used 
index cc79df9fd4290a68e0620218c6e76d32f5129847..33d99db845e408fd08e228e958ac66fc9c96bbf5 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <TNamed.h>
 class TH2F;
+class TTimeStamp;
 class TCollection;
 class TTreeSRedirector;
 class AliExternalTrackParam;
@@ -56,8 +57,9 @@ public:
           void DistortPoint (const Float_t x[],const Short_t roc,Float_t xp[]);
   virtual void GetDistortion(const Float_t x[],const Short_t roc,Float_t dx[]);
 
-  // initialization
+  // initialization and update functions
   virtual void Init();
+  virtual void Update(const TTimeStamp &timeStamp);
 
   // convenience functions
   virtual void Print(Option_t* option="") const;
index deed3330482e7541bf1945a9df9d50ee985ef4a8..09ffbd5bad69967dd248108927884a43d4fcd105 100644 (file)
@@ -53,6 +53,55 @@ AliTPCExBBShape::~AliTPCExBBShape() {
   //
 }
 
+void AliTPCExBBShape::Init() {
+  //
+  // Initialization funtion (not used at the moment)
+  //
+  
+  // 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
+
+  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);
+
+
+}
+
+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
+
+  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);
+
+
+}
+
+
+
 void AliTPCExBBShape::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
   //
   // Calculates the space point corrections of the B field inperfections (B field shape) 
index 9f8ed02637598336bd324d0ed8bdd21f4554a147..62c627df4e1c786a9598f9ca3b494d8b7b22445a 100644 (file)
@@ -25,6 +25,10 @@ public:
   AliTPCExBBShape();
   virtual ~AliTPCExBBShape();
 
+ // initialization and update functions
+  virtual void Init();
+  virtual void Update(const TTimeStamp &timeStamp);
+
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
     const Float_t wt1=t1*omegaTau;
index 04d259d13f86d63c73df91ce7fb70fbb700ea6ea..6dbc5f818f88d4c958f2566b81abc9a1be869775 100644 (file)
@@ -49,6 +49,50 @@ AliTPCExBTwist::~AliTPCExBTwist() {
   //
 }
 
+void AliTPCExBTwist::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
+
+  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);
+
+  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
+
+  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); 
+}
+
+
+
 void AliTPCExBTwist::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
   //
   // Calculates the correction of a mismatch between the E and B field axis
index 5cbf248b6ea02a97c140d349f8eee1ecf97e7113..d722ed30b9d27e393618617ee231f5881196537a 100644 (file)
@@ -22,6 +22,11 @@ public:
   AliTPCExBTwist();
   virtual ~AliTPCExBTwist();
 
+  // initialization and update functions
+  virtual void Init();
+  virtual void Update(const TTimeStamp &timeStamp);
+
+
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
     const Float_t wt1=t1*omegaTau;
index 3444485e8bc10667b9c61cc8c3891d4a6466e3c2..bc679a6fc6475d5b3d2d252dee20f76238501cfc 100644 (file)
@@ -55,6 +55,50 @@ 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
+
+  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);
+
+  SetDeltaVGGA(0.0);//  ideally from the database
+  SetDeltaVGGC(0.0);//  ideally from the database
+}
+
+void AliTPCGGVoltError::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
+
+  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);
+}
+
+
+
 void AliTPCGGVoltError::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
 
   //
index b02854c309e5ce06bd6b554b290ad14a0f3075ce..2627f3d3c1744992d6f1e1479badcaec6fc9a642 100644 (file)
@@ -23,6 +23,10 @@ public:
   AliTPCGGVoltError();
   virtual ~AliTPCGGVoltError();
 
+  // initialization and update functions
+  virtual void Init();
+  virtual void Update(const TTimeStamp &timeStamp);
+
   // common setters and getters for ExB
   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
     const Double_t wt0=t2*omegaTau;
index 4a07df20803e05b7e23aaf27dd86e5ca36c47a57..ad5b008a5fb7ceb780f8a589788b59ab0d7edaa6 100644 (file)
@@ -30,6 +30,8 @@
 
 #include <TString.h>
 #include "AliTPCInverseCorrection.h"
+#include <TTimeStamp.h>
+
 
 AliTPCInverseCorrection::AliTPCInverseCorrection()
   : fCorrection(0) {
@@ -61,6 +63,23 @@ AliTPCInverseCorrection::~AliTPCInverseCorrection() {
   //
 }
 
+
+void AliTPCInverseCorrection::Init() {
+  //
+  // Initialization funtion (not used at the moment)
+  //
+  if (fCorrection) fCorrection->Init();
+
+}
+
+void AliTPCInverseCorrection::Update(const TTimeStamp &timeStamp) {
+  //
+  // Update function 
+  //
+  if (fCorrection) fCorrection->Update(timeStamp);
+
+}
+
 void AliTPCInverseCorrection::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
   //
   // This is just calling the CalculateInverseCorrection of the wrapped
index c38ae31ab179ca109541b5440db94f8f074bf67f..21d10890886cad89f772825b42878a81baded3df 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "AliTPCCorrection.h"
 
+
 class AliTPCInverseCorrection : public AliTPCCorrection {
 public:
   AliTPCInverseCorrection();
@@ -31,6 +32,12 @@ public:
   AliTPCCorrection* GetCorrection() const {return fCorrection;}
   virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
   virtual void GetDistortion(const Float_t x[],const Short_t roc,Float_t dx[]);
+
+  // initialization and update functions
+  virtual void Init();
+  virtual void Update(const TTimeStamp &timeStamp);
+
+
 private:
   AliTPCCorrection *fCorrection; // The correction to be inverted.
 
index 63edd3340d47316370c6d7071b739f71f69a60c1..db4544942e8db54ade623fb32488ffa2a20341b3 100644 (file)
@@ -151,8 +151,9 @@ void     AliTPCcalibCalib::Process(AliESDEvent *event){
 
   for (Int_t i=0;i<ntracks;++i) {
     AliESDtrack *track = event->GetTrack(i);     
-    AliESDfriendTrack *friendTrack = ESDfriend->GetTrack(i);
+    AliESDfriendTrack *friendTrack = (AliESDfriendTrack*) ESDfriend->GetTrack(i);
+    if (!friendTrack) continue;
+    track->SetFriendTrack(friendTrack);
     const AliExternalTrackParam * trackIn  = track->GetInnerParam();
     const AliExternalTrackParam * trackOut = track->GetOuterParam();
     AliExternalTrackParam * tpcOut   = (AliExternalTrackParam *)friendTrack->GetTPCOut();
@@ -165,7 +166,7 @@ void     AliTPCcalibCalib::Process(AliESDEvent *event){
       if ((seed=dynamic_cast<AliTPCseed*>(calibObject))) break;
     }
     if (!seed) continue;
-    RefitTrack(track, seed,event->GetMagneticField());
+    RefitTrack(track, seed, event->GetMagneticField());
     (*tpcOut)=*(track->GetOuterParam());  
   }
   return;
@@ -179,6 +180,8 @@ Bool_t  AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa
   //
   // 0 - Setup transform object
   //
+  AliESDfriendTrack *friendTrack = (AliESDfriendTrack *)track->GetFriendTrack();
+
   AliTPCTransform *transform = AliTPCcalibDB::Instance()->GetTransform() ;
   AliTPCParam     *param     = AliTPCcalibDB::Instance()->GetParameters();
   transform->SetCurrentRun(fRun);
@@ -316,8 +319,9 @@ Bool_t  AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa
   // And now do refit
   //
   AliExternalTrackParam * trackInOld  = (AliExternalTrackParam*)track->GetInnerParam();
-  AliExternalTrackParam * trackOutOld = (AliExternalTrackParam*)track->GetOuterParam();
-
+  AliExternalTrackParam * trackOuter = (AliExternalTrackParam*)track->GetOuterParam();
+  AliExternalTrackParam * trackOutOld   = (AliExternalTrackParam *)friendTrack->GetTPCOut();
+    
 
   AliExternalTrackParam trackIn  = *trackOutOld;
   trackIn.ResetCovariance(kResetCov);
@@ -468,6 +472,7 @@ Bool_t  AliTPCcalibCalib::RefitTrack(AliESDtrack * track, AliTPCseed *seed, Floa
  
   (*trackInOld)  = trackIn;
   (*trackOutOld) = trackOut;
+  (*trackOuter) = trackOut;
   AliExternalTrackParam *t = &trackIn;
   track->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());
   seed->Set(t->GetX(),t->GetAlpha(),t->GetParameter(),t->GetCovariance());