Consistent usage of the magnetic field interface (Yu.Belikov)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 23 Feb 2006 10:06:25 +0000 (10:06 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 23 Feb 2006 10:06:25 +0000 (10:06 +0000)
12 files changed:
ANALYSIS/AliD0toKpiAnalysis.h
ANALYSIS/AliTrackPoints.cxx
ITS/AliITSVertexerTracks.cxx
ITS/AliITSVertexerTracks.h
ITS/AliITSVertexerTracksTest.C
STEER/AliKalmanTrack.cxx
STEER/AliKalmanTrack.h
STEER/AliTracker.cxx
STEER/AliTracker.h
TPC/AliTPCtrackerParam.cxx
TRD/AliTRDtrack.cxx
TRD/AliTRDtrack.h

index 397c0528e3719c95dd45b05f3bc8ac98afbc7ddd..f906d901b67bd4d40e27ef5a1cb652ed6baf8a01 100644 (file)
@@ -14,6 +14,7 @@
 #include <TNamed.h>
 #include "AliESD.h"
 #include "AliMagF.h"
+#include "AliTracker.h"
 #include "AliITStrackV2.h"
 
 //-----------------------------------------------------------------------------
@@ -31,7 +32,7 @@ class AliD0toKpiAnalysis : public TNamed {
                         const Char_t *outName="AliD0toKpi.root");
   void PrintStatus() const;
   void SetBz(const AliMagF *map) { 
-     AliKalmanTrack::SetFieldMap(map); fBz=map->SolenoidField()/10.; 
+    AliTracker::SetFieldMap(map,kTRUE); fBz=map->SolenoidField()/10.; 
   }
   void SetVertexOnTheFly() { fVertexOnTheFly=kTRUE; }
   void SetSimulation() { fSim=kTRUE; }
index deb45e034d5b922f83b950e474e5a123290d8356..000709f0cb4523753d05e09c870840774b2cb1cb 100644 (file)
@@ -41,6 +41,8 @@
 #include "AliITStrackV2.h"
 
 #include "AliRun.h"
+#include "AliMagF.h"
+#include "AliTracker.h"
 #include "AliESD.h"
 #include "AliRunLoader.h"
 #include "AliTPCtrack.h"
@@ -579,7 +581,7 @@ void AliTrackPoints::Testtpc(Int_t entr)
   AliRunLoader* rl = AliRunLoader::Open();
   AliLoader* l = rl->GetLoader("TPCLoader");
   rl->LoadgAlice();
-  AliKalmanTrack::SetFieldMap(rl->GetAliRun()->Field());
+  AliTracker::SetFieldMap(rl->GetAliRun()->Field(),kTRUE);
   l->LoadTracks();
   AliTPCtrack* t = new AliTPCtrack();
   TBranch* b=l->TreeT()->GetBranch("tracks");
index 7816e6b1f12ed86c61bd1a633679cb9479cbdff8..91520e9eff9c82aebe0b739afc227cf22112cab3 100644 (file)
@@ -57,7 +57,6 @@ AliITSVertexerTracks::AliITSVertexerTracks():AliITSVertexer() {
 }
 //----------------------------------------------------------------------------
 AliITSVertexerTracks::AliITSVertexerTracks(TFile *inFile,TFile *outFile,
-                                           const AliMagF *map,
                                            Int_t fEv,Int_t lEv,
                                            Double_t xStart,Double_t yStart) {
 //
@@ -68,7 +67,6 @@ AliITSVertexerTracks::AliITSVertexerTracks(TFile *inFile,TFile *outFile,
   fOutFile = outFile;
   SetFirstEvent(fEv);
   SetLastEvent(lEv);
-  SetFieldMap(map);
   SetVtxStart(xStart,yStart);
   SetMinTracks();
   fTrksToSkip = 0;
@@ -77,7 +75,7 @@ AliITSVertexerTracks::AliITSVertexerTracks(TFile *inFile,TFile *outFile,
   SetDebug();
 }
 //----------------------------------------------------------------------------
-AliITSVertexerTracks::AliITSVertexerTracks(const AliMagF *map, TString fn,
+AliITSVertexerTracks::AliITSVertexerTracks(TString fn,
                                           Double_t xStart,Double_t yStart)
                                           :AliITSVertexer(fn) {
 //
@@ -85,7 +83,6 @@ AliITSVertexerTracks::AliITSVertexerTracks(const AliMagF *map, TString fn,
 //
   fInFile  = 0;
   fOutFile = 0;
-  SetFieldMap(map);
   SetVtxStart(xStart,yStart);
   SetMinTracks();
   fTrksToSkip = 0;
index 3f8e5b61237f6e5a6aabad90b69b9ddcb7a28ca5..fdb5772684a9b34de9a080384c6796478c09da70 100644 (file)
@@ -24,8 +24,6 @@
  *    matrix and a chi2 for the vertex are given.                            *
  *                                                                           *
  *****************************************************************************/
-
-#include "AliKalmanTrack.h"
 #include "AliITSVertexer.h"
 #include "AliITSSimpleVertex.h"
 
@@ -41,14 +39,13 @@ class AliITSVertexerTracks : public AliITSVertexer {
   
  public:
   // default constructor
-  AliITSVertexerTracks();  
+  AliITSVertexerTracks(); 
   // standard constructor     
   AliITSVertexerTracks(TFile *inFile,TFile *outFile,
-               const AliMagF *map,Int_t fEv=0,Int_t lEv=0,
+                      Int_t fEv=0,Int_t lEv=0,
                       Double_t xStart=0.,Double_t yStart=0.);
   // alternative constructor
-  AliITSVertexerTracks(const AliMagF *map, TString fn,
-                      Double_t xStart=0,Double_t yStart=0); 
+  AliITSVertexerTracks(TString fn,Double_t xStart=0,Double_t yStart=0); 
   // destructor
   virtual ~AliITSVertexerTracks();
   // return vertex from the set of tracks in the tree
@@ -88,7 +85,6 @@ class AliITSVertexerTracks : public AliITSVertexer {
 
 
   virtual void  PrintStatus() const;
-  void  SetFieldMap(const AliMagF *map)const{AliKalmanTrack::SetFieldMap(map);}
   void  SetMinTracks(Int_t n=2) { fMinTracks = n; return; }
   void  SetSkipTracks(Int_t n,Int_t *skipped); 
   void  SetVtxStart(Double_t x=0,Double_t y=0) 
index 22d8c5dbd07ea40162584aa6844272fef49e5fa2..db469dd2b16eaf684a899545ce0d12edc8458b0c 100644 (file)
@@ -66,7 +66,7 @@ void AliITSVertexerTracksTest(Int_t evFirst=0,Int_t evLast=0,Bool_t esd=kTRUE,
 
   // Create vertexer
   AliITSVertexerTracks *vertexer = 
-    new AliITSVertexerTracks(inFile,outFile,field,evFirst,evLast);
+    new AliITSVertexerTracks(inFile,outFile,evFirst,evLast);
   // Find vertices
   if(esd) {
     vertexer->FindVerticesESD();
index 7e18d5bf0f75d0ec7ed47592e442fc2c64f138c8..90e6730416d51f4beb3571b68c38b08bff1c4a39 100644 (file)
 //   that is the base for AliTPCtrack, AliITStrackV2 and AliTRDtrack
 //        Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
 //-------------------------------------------------------------------------
-
+#include "AliTracker.h"
 #include "AliKalmanTrack.h"
 #include "TGeoManager.h"
 
 ClassImp(AliKalmanTrack)
 
-const AliMagF *AliKalmanTrack::fgkFieldMap=0;
-Double_t AliKalmanTrack::fgConvConst=0.;
-
 //_______________________________________________________________________
 AliKalmanTrack::AliKalmanTrack():
   fLab(-3141593),
@@ -43,11 +40,11 @@ AliKalmanTrack::AliKalmanTrack():
   //
   // Default constructor
   //
-    if (fgkFieldMap==0) {
+  if (AliTracker::GetFieldMap()==0) {
       AliFatal("The magnetic field has not been set!");
-    }
+  }
 
-    for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntegratedTime[i] = 0;
+  for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntegratedTime[i] = 0;
 }
 
 //_______________________________________________________________________
@@ -65,7 +62,7 @@ AliKalmanTrack::AliKalmanTrack(const AliKalmanTrack &t):
   //
   // Copy constructor
   //
-  if (fgkFieldMap==0) {
+  if (AliTracker::GetFieldMap()==0) {
     AliFatal("The magnetic field has not been set!");
   }
   
@@ -90,6 +87,7 @@ void AliKalmanTrack::StartTimeIntegral()
   for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntegratedTime[i] = 0;  
   fIntegratedLength = 0;
 }
+
 //_______________________________________________________________________
 void AliKalmanTrack:: AddTimeStep(Double_t length) 
 {
@@ -141,7 +139,6 @@ void AliKalmanTrack:: AddTimeStep(Double_t length)
 }
 
 //_______________________________________________________________________
-
 Double_t AliKalmanTrack::GetIntegratedTime(Int_t pdg) const 
 {
   // Sylwester Radomski, GSI
@@ -175,22 +172,6 @@ void AliKalmanTrack::SetIntegratedTimes(const Double_t *times) {
   for (Int_t i=0; i<AliPID::kSPECIES; i++) fIntegratedTime[i]=times[i];
 }
 
-//_______________________________________________________________________
-
-void AliKalmanTrack::PrintTime() const
-{
-  // Sylwester Radomski, GSI
-  // S.Radomski@gsi.de
-  //
-  // For testing
-  // Prints time for all hypothesis
-  //
-
-  for (Int_t i=0; i<AliPID::kSPECIES; i++)
-    printf("%d: %.2f  ", AliPID::ParticleCode(i), fIntegratedTime[i]);
-  printf("\n");  
-}
-
 void AliKalmanTrack::External2Helix(Double_t helix[6]) const { 
   //--------------------------------------------------------------------
   // External track parameters -> helix parameters 
@@ -325,8 +306,8 @@ GetDCA(const AliKalmanTrack *p, Double_t &xthis, Double_t &xp) const {
   return TMath::Sqrt(dm*TMath::Sqrt(dy2*dz2));
 }
 
-Double_t AliKalmanTrack::
-PropagateToDCA(AliKalmanTrack *p, Double_t d, Double_t x0) {
+Double_t 
+AliKalmanTrack::PropagateToDCA(AliKalmanTrack *p, Double_t d, Double_t x0) {
   //--------------------------------------------------------------
   // Propagates this track and the argument track to the position of the
   // distance of closest approach. 
@@ -487,3 +468,20 @@ Double_t AliKalmanTrack::MeanMaterialBudget(Double_t *start, Double_t *end, Doub
   return bparam[0]/step;   
   
 }
+
+Double_t AliKalmanTrack::GetConvConst() {
+  return 1000/0.299792458/AliTracker::GetBz();
+}
+
+void AliKalmanTrack::SaveLocalConvConst() {
+  //---------------------------------------------------------------------
+  // Saves local conversion constant "curvature (1/cm) -> pt (GeV/c)" 
+  //---------------------------------------------------------------------
+  if (AliTracker::UniformField()) {
+     fLocalConvConst=1000/0.299792458/AliTracker::GetBz();
+  } else {
+     Float_t r[3]; GetXYZ(r);
+     fLocalConvConst=1000/0.299792458/AliTracker::GetBz(r);
+  }
+} 
+
index 99f407013dfb78a887add3c0efb92e16db79f5ce..909771f78f0aca0666a2188dc2b2dd5aa3d783d6 100644 (file)
@@ -15,7 +15,6 @@
 #include <TObject.h>
 #include "AliLog.h"
 #include "AliPID.h"
-#include "AliMagF.h"
 
 class AliCluster;
 
@@ -69,19 +68,7 @@ public:
   //virtual Int_t PropagateToVertex(Double_t /*d*/=0., Double_t /*x0*/=0.) = 0; 
   virtual Int_t Update(const AliCluster*, Double_t /*chi2*/, UInt_t) = 0;
 
-  static void SetFieldMap(const AliMagF *map) { fgkFieldMap=map; }
-  static const AliMagF *GetFieldMap() { return fgkFieldMap; }
-
-  static void SetUniformFieldTracking() {
-     if (fgkFieldMap==0) {
-        printf("AliKalmanTrack: Field map has not been set !\n"); 
-        exit(1);
-     } 
-     fgConvConst=1000/0.299792458/(fgkFieldMap->SolenoidField()+1e-13);
-  }
-  static void SetNonuniformFieldTracking() { fgConvConst=0.; }
-
-  static Double_t GetConvConst();
+  //static Double_t GetConvConst();
   static Double_t MeanMaterialBudget(Double_t *start, Double_t *end, Double_t *mparam);
  
   // Time integration (S.Radomski@gsi.de)
@@ -95,11 +82,13 @@ public:
   Double_t GetIntegratedTime(Int_t pdg) const;
   Double_t GetIntegratedLength() const {return fIntegratedLength;}
   void PrintTime() const;
+  virtual void GetXYZ(Float_t r[3]) const = 0;
+
+  static Double_t GetConvConst();
 
 protected:
-  virtual void GetXYZ(Float_t r[3]) const = 0;
   void     SaveLocalConvConst();
-  Double_t GetLocalConvConst() const;
+  Double_t GetLocalConvConst() const {return fLocalConvConst;}
 
   void External2Helix(Double_t helix[6]) const;
 
@@ -114,8 +103,6 @@ protected:
   Int_t fN;               // number of associated clusters
 
 private:
-  static const AliMagF *fgkFieldMap;//pointer to the magnetic field map
-  static Double_t fgConvConst;      //conversion "curvature(1/cm) -> pt(GeV/c)"
   Double_t fLocalConvConst;   //local conversion "curvature(1/cm) -> pt(GeV/c)"
 
   // variables for time integration (S.Radomski@gsi.de)
@@ -123,35 +110,9 @@ private:
   Double_t fIntegratedTime[AliPID::kSPECIES];       // integrated time
   Double_t fIntegratedLength;        // integrated length
   
-  ClassDef(AliKalmanTrack,4)    // Reconstructed track
+  ClassDef(AliKalmanTrack,5)    // Reconstructed track
 };
 
-inline Double_t AliKalmanTrack::GetConvConst() {
-//
-//  For backward compatibility only !
-//
-    if (fgConvConst > 0 || fgConvConst < 0) return fgConvConst; 
-    return 1000/0.299792458/(fgkFieldMap->SolenoidField()+1e-13);
-}
-
-inline void AliKalmanTrack::SaveLocalConvConst() {
-  //---------------------------------------------------------------------
-  // Saves local conversion constant "curvature (1/cm) -> pt (GeV/c)" 
-  //---------------------------------------------------------------------
-     if (fgConvConst > 0 || fgConvConst < 0) return; //uniform field tracking
-     Float_t r[3]={0.,0.,0.}; GetXYZ(r);
-     Float_t b[3]; fgkFieldMap->Field(r,b);
-     fLocalConvConst=1000/0.299792458/(1e-13 - b[2]);
-} 
-
-inline Double_t AliKalmanTrack::GetLocalConvConst() const {
-  //---------------------------------------------------------------------
-  // Returns conversion constant "curvature (1/cm) -> pt (GeV/c)" 
-  //---------------------------------------------------------------------
-     if (fgConvConst > 0 || fgConvConst < 0) return fgConvConst; //uniform field tracking
-     return fLocalConvConst;
-} 
-
 #endif
 
 
index 9956a3bf20a590474c1075f6f18148030f3f4a11..0322e99b2d22d3e684c7d9451efd8bb93ccca7d9 100644 (file)
 //  that is the base for AliTPCtracker, AliITStrackerV2 and AliTRDtracker    
 //        Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
 //-------------------------------------------------------------------------
-
+#include <TClass.h>
 #include <TMath.h>
 
 #include "AliTracker.h"
 #include "AliCluster.h"
-#include "AliRun.h"
+#include "AliKalmanTrack.h"
 
+Bool_t AliTracker::fgUniformField=kTRUE;
+Double_t AliTracker::fgBz=0.;
 const AliMagF *AliTracker::fgkFieldMap=0;
 
 ClassImp(AliTracker)
@@ -45,6 +47,22 @@ AliTracker::AliTracker():
   if (!fgkFieldMap) AliWarning("Field map is not set. Call AliTracker::SetFieldMap before creating a tracker!");
 }
 
+void AliTracker::SetFieldMap(const AliMagF* map, Bool_t uni) {
+  //--------------------------------------------------------------------
+  //This passes the field map to the reconstruction.
+  //--------------------------------------------------------------------
+  if (map==0) AliFatalClass("Can't access the field map !");
+
+  fgUniformField=uni;
+  fgkFieldMap=map;
+
+  //Float_t r[3]={0.,0.,0.},b[3]; map->Field(r,b);
+  //fgBz= - b[2];
+  fgBz=map->SolenoidField();
+
+}
+
 //__________________________________________________________________________
 void AliTracker::CookLabel(AliKalmanTrack *t, Float_t wrong) const {
   //--------------------------------------------------------------------
index 18576d872a1d2c5df2e91509059f7395a69e27e5..f84390808b558be8be12d7bd92c3cb069e3988c0 100644 (file)
 //       Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch 
 //-------------------------------------------------------------------------
 #include <TObject.h>
-#include <TClass.h>
-#include "AliKalmanTrack.h"
 #include "AliMagF.h"
-#include "AliLog.h"
 
 class AliCluster;
 class TTree;
+class AliKalmanTrack;
 class AliESD;
 class AliTrackPoint;
 
@@ -44,7 +42,6 @@ public:
   virtual Int_t LoadClusters(TTree *)=0;
   virtual void UnloadClusters()=0;
   virtual AliCluster *GetCluster(Int_t index) const=0;
-  //  virtual UShort_t GetVolumeID(Int_t index) {return 0;}
   virtual Bool_t GetTrackPoint(Int_t /* index */ , AliTrackPoint& /* p */) const { return kFALSE;}
   virtual void  UseClusters(const AliKalmanTrack *t, Int_t from=0) const;
   virtual void  CookLabel(AliKalmanTrack *t,Float_t wrong) const; 
@@ -62,12 +59,16 @@ public:
     Double_t bz=-Double_t(b[2]);
     return  (TMath::Sign(1e-13,bz) + bz);
   }
+  static Double_t GetBz() {return fgBz;}
+  static Bool_t UniformField() {return fgUniformField;}
 
 private:
 
   AliTracker & operator=(const AliTracker & atr);
 
-  static const AliMagF *fgkFieldMap; //field map
+  static Bool_t fgUniformField;       // uniform field flag
+  static const AliMagF *fgkFieldMap;  // field map
+  static Double_t fgBz;               // Nominal Bz (kG)
 
   Double_t fX;  //X-coordinate of the primary vertex
   Double_t fY;  //Y-coordinate of the primary vertex
@@ -77,21 +78,9 @@ private:
   Double_t fSigmaY; // error of the primary vertex position in Y
   Double_t fSigmaZ; // error of the primary vertex position in Z
 
-  ClassDef(AliTracker,2) //abstract tracker
+  ClassDef(AliTracker,3) //abstract tracker
 };
 
-inline void AliTracker::SetFieldMap(const AliMagF* map, Bool_t uni) {
-  //--------------------------------------------------------------------
-  //This passes the field map to the reconstruction.
-  //--------------------------------------------------------------------
-  if (map==0) AliFatalClass("Can't access the field map !");
-  AliKalmanTrack::SetFieldMap(map);
-  if (uni) AliKalmanTrack::SetUniformFieldTracking();
-  fgkFieldMap=map;
-}
-
-
-
 #endif
 
 
index 279a8217ac661a1fbbda26b075dd91471de1e4bc..00acbc672e0603fdb8da479c0e0b8463356a2a73 100644 (file)
@@ -75,7 +75,7 @@
 #include <TFile.h>
 //------ AliRoot headers ------
 #include "AliGausCorr.h"
-#include "AliKalmanTrack.h"
+#include "AliTracker.h"
 #include "AliMC.h"
 #include "AliMagF.h"
 #include "AliRun.h"
@@ -301,7 +301,7 @@ Int_t AliTPCtrackerParam::BuildTPCtracks(const TFile *inp, TFile *out) {
   tpc->SetParam(digp);
 
   // Set the conversion constant between curvature and Pt
-  AliKalmanTrack::SetFieldMap(fiel);
+  AliTracker::SetFieldMap(fiel,kTRUE);
 
   TParticle       *part=0;
   AliTPCseedGeant *seed=0;
index 868da8bf6cfee2f2ebe79196df27afe802cd097d..4cd527cddb173d3a44cb902240da01d075c4b10b 100644 (file)
@@ -308,7 +308,7 @@ AliTRDtrack::AliTRDtrack(const AliESDtrack& t)
 
 }  
 
-
+/*
 AliTRDtrack * AliTRDtrack::MakeTrack(const AliTrackReference *ref, Double_t mass)
 {
   //
@@ -341,6 +341,7 @@ AliTRDtrack * AliTRDtrack::MakeTrack(const AliTrackReference *ref, Double_t mass
   track->StartTimeIntegral();  
   return track;
 }
+*/
 
 
 AliTRDtrack::~AliTRDtrack()
index 3596913cd084539918029f01d8fd26d27df0d6ba..122e6e2e9e0e9cb281a31c90788b072537017228 100644 (file)
@@ -79,7 +79,7 @@ public:
    AliTRDtrack(const AliTRDtrack& t);    
    AliTRDtrack(const AliKalmanTrack& t, Double_t alpha); 
    AliTRDtrack(const AliESDtrack& t);    
  static AliTRDtrack * MakeTrack(const AliTrackReference *ref, Double_t mass);
//static AliTRDtrack * MakeTrack(const AliTrackReference *ref, Double_t mass);
    ~AliTRDtrack();
    Int_t    Compare(const TObject *o) const;
    void     CookdEdx(Double_t low=0.05, Double_t up=0.7);