#include <TNamed.h>
#include "AliESD.h"
#include "AliMagF.h"
+#include "AliTracker.h"
#include "AliITStrackV2.h"
//-----------------------------------------------------------------------------
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; }
#include "AliITStrackV2.h"
#include "AliRun.h"
+#include "AliMagF.h"
+#include "AliTracker.h"
#include "AliESD.h"
#include "AliRunLoader.h"
#include "AliTPCtrack.h"
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");
}
//----------------------------------------------------------------------------
AliITSVertexerTracks::AliITSVertexerTracks(TFile *inFile,TFile *outFile,
- const AliMagF *map,
Int_t fEv,Int_t lEv,
Double_t xStart,Double_t yStart) {
//
fOutFile = outFile;
SetFirstEvent(fEv);
SetLastEvent(lEv);
- SetFieldMap(map);
SetVtxStart(xStart,yStart);
SetMinTracks();
fTrksToSkip = 0;
SetDebug();
}
//----------------------------------------------------------------------------
-AliITSVertexerTracks::AliITSVertexerTracks(const AliMagF *map, TString fn,
+AliITSVertexerTracks::AliITSVertexerTracks(TString fn,
Double_t xStart,Double_t yStart)
:AliITSVertexer(fn) {
//
//
fInFile = 0;
fOutFile = 0;
- SetFieldMap(map);
SetVtxStart(xStart,yStart);
SetMinTracks();
fTrksToSkip = 0;
* matrix and a chi2 for the vertex are given. *
* *
*****************************************************************************/
-
-#include "AliKalmanTrack.h"
#include "AliITSVertexer.h"
#include "AliITSSimpleVertex.h"
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
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)
// Create vertexer
AliITSVertexerTracks *vertexer =
- new AliITSVertexerTracks(inFile,outFile,field,evFirst,evLast);
+ new AliITSVertexerTracks(inFile,outFile,evFirst,evLast);
// Find vertices
if(esd) {
vertexer->FindVerticesESD();
// 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),
//
// 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;
}
//_______________________________________________________________________
//
// Copy 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;
fIntegratedLength = 0;
}
+
//_______________________________________________________________________
void AliKalmanTrack:: AddTimeStep(Double_t length)
{
}
//_______________________________________________________________________
-
Double_t AliKalmanTrack::GetIntegratedTime(Int_t pdg) const
{
// Sylwester Radomski, GSI
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
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.
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);
+ }
+}
+
#include <TObject.h>
#include "AliLog.h"
#include "AliPID.h"
-#include "AliMagF.h"
class AliCluster;
//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)
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;
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)
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
// 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)
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 {
//--------------------------------------------------------------------
// 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;
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;
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
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
#include <TFile.h>
//------ AliRoot headers ------
#include "AliGausCorr.h"
-#include "AliKalmanTrack.h"
+#include "AliTracker.h"
#include "AliMC.h"
#include "AliMagF.h"
#include "AliRun.h"
tpc->SetParam(digp);
// Set the conversion constant between curvature and Pt
- AliKalmanTrack::SetFieldMap(fiel);
+ AliTracker::SetFieldMap(fiel,kTRUE);
TParticle *part=0;
AliTPCseedGeant *seed=0;
}
-
+/*
AliTRDtrack * AliTRDtrack::MakeTrack(const AliTrackReference *ref, Double_t mass)
{
//
track->StartTimeIntegral();
return track;
}
+*/
AliTRDtrack::~AliTRDtrack()
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);