ROOT logo
AliRoot » ITS » UPGRADE » AliITSUTrackerSA

class AliITSUTrackerSA: public AliTracker

               Implementation of the ITS tracker class
    It reads AliITSUClusterPix clusters and and fills the ESD with tracks

    The algorithm implemented here takes inspiration from UniCA code of FIAS
    group.

Function Members (Methods)

public:
AliITSUTrackerSA(AliITSUReconstructor* rec = 0)
virtual~AliITSUTrackerSA()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tClusters2Tracks(AliESDEvent* event)
virtual Int_tAliTracker::Clusters2TracksHLT(AliESDEvent* event, const AliESDEvent*)
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidAliTracker::CookLabel(AliKalmanTrack* t, Float_t wrong) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidAliTracker::FillClusterArray(TObjArray* array) const
static voidAliTracker::FillResiduals(const AliExternalTrackParam* t, const AliCluster* c, Bool_t updated = kTRUE)
static voidAliTracker::FillResiduals(const AliExternalTrackParam* t, Double_t* p, Double_t* cov, UShort_t id, Bool_t updated = kTRUE)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
static Double_tAliTrackerBase::FitTrack(AliExternalTrackParam* trackParam, AliTrackPointArray* pointArray, Double_t mass, Double_t maxStep)
static voidAliTrackerBase::GetBxByBz(const Double_t* r, Double_t* b)
static Double_tAliTrackerBase::GetBz()
static Double_tAliTrackerBase::GetBz(const Double_t* r)
virtual AliCluster*GetCluster(Int_t index) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
const AliEventInfo*AliTracker::GetEventInfo() const
virtual const char*TObject::GetIconName() const
Double_tGetMaterialBudget(const double* pnt0, const double* pnt1, double& x2x0, double& rhol) const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual AliPlaneEff*AliTracker::GetPlaneEff()
static TObjArray**AliTracker::GetResidualsArray()
Double_tAliTrackerBase::GetSigmaX() const
Double_tAliTrackerBase::GetSigmaY() const
Double_tAliTrackerBase::GetSigmaZ() const
virtual const char*TObject::GetTitle() const
virtual Bool_tAliTracker::GetTrackPoint(Int_t, AliTrackPoint&) const
virtual Bool_tAliTracker::GetTrackPointTrackingError(Int_t, AliTrackPoint&, const AliESDtrack*)
static Double_tAliTrackerBase::GetTrackPredictedChi2(AliExternalTrackParam* track, Double_t mass, Double_t step, const AliExternalTrackParam* backup)
virtual UInt_tTObject::GetUniqueID() const
Double_tAliTrackerBase::GetX() const
Double_tAliTrackerBase::GetY() const
Double_tAliTrackerBase::GetZ() const
Bool_tGoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kFALSE)
Bool_tGoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kTRUE)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInit(AliITSUReconstructor* rec)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual Int_tLoadClusters(TTree* ct)
virtual voidTObject::ls(Option_t* option = "") const
static Double_tAliTrackerBase::MakeC(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3)
static AliExternalTrackParam*AliTrackerBase::MakeSeed(AliTrackPoint& point0, AliTrackPoint& point1, AliTrackPoint& point2)
static Double_tAliTrackerBase::MakeSnp(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3)
static Double_tAliTrackerBase::MakeTgl(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t z1, Double_t z2)
static Double_tAliTrackerBase::MakeTgl(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t z1, Double_t z2, Double_t c)
voidTObject::MayNotUse(const char* method) const
static Double_tAliTrackerBase::MeanMaterialBudget(const Double_t* start, const Double_t* end, Double_t* mparam)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual Int_tAliTracker::PostProcess(AliESDEvent*)
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tPropagateBack(AliESDEvent* event)
Bool_tPropagateSeed(AliExternalTrackParam* seed, Double_t xToGo, Double_t mass, Double_t maxStep = 1.0, Bool_t matCorr = kTRUE)
static Bool_tAliTrackerBase::PropagateTrackTo(AliExternalTrackParam* track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo = kTRUE, Double_t maxSnp = 0.8, Int_t sign = 0, Bool_t addTimeStep = kFALSE, Bool_t correctMaterialBudget = kTRUE)
static Int_tAliTrackerBase::PropagateTrackTo2(AliExternalTrackParam* track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo = kTRUE, Double_t maxSnp = 0.8, Int_t sign = 0, Bool_t addTimeStep = kFALSE, Bool_t correctMaterialBudget = kTRUE)
static Bool_tAliTrackerBase::PropagateTrackToBxByBz(AliExternalTrackParam* track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo = kTRUE, Double_t maxSnp = 0.8, Int_t sign = 0, Bool_t addTimeStep = kFALSE)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Int_tRefitInward(AliESDEvent* event)
Double_tRefitTrack(AliExternalTrackParam* trc, Int_t* clInfo, Double_t rDest, Int_t stopCond)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetChi2Cut(float cut)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliTracker::SetEventInfo(AliEventInfo* evInfo)
static voidAliTracker::SetFillResiduals(AliRecoParam::EventSpecie_t es, Bool_t flag = kTRUE)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetPhiCut(float cut)
static voidAliTracker::SetResidualsArray(TObjArray** arr)
voidSetRPhiCut(float cut)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidAliTrackerBase::SetVertex(const Double_t* xyz, const Double_t* ers = 0)
voidSetZCut(float cut)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
Bool_tTransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim = -1)
Bool_tTransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop)
static Bool_tAliTrackerBase::UniformField()
virtual voidUnloadClusters()
static voidAliTrackerBase::UpdateTrack(AliExternalTrackParam&, const AliExternalTrackParam&)
virtual voidAliTracker::UseClusters(const AliKalmanTrack* t, Int_t from = 0) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
AliITSUTrackerSA(const AliITSUTrackerSA&)
voidCandidatesTreeTraversal(vector<Road>& vec, const int& iD, const int& doubl)
voidCellsCreation(const int& cutLevel)
voidCellularAutomaton(AliESDEvent* ev)
voidChiSquareSelection()
static Double_tCurvature(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidGlobalFit()
Bool_tInitTrackParams(AliITSUTrackCooked& track, int* points)
voidTObject::MakeZombie()
voidMergeTracks(vector<AliITSUTrackCooked>& vec, bool* flags)

Data Members

private:
vector<Cell>fCells[5]
Float_tfChi2Cut
TClonesArray*fClustersTC[7]
Double_tfCurrMassassumption about particle mass
AliITSURecoDet*fITSinterface to ITS, borrowed from reconstructor
LayerfLayer[7]
AliITSUMatLUT*fMatLUTmaterial lookup table
Float_tfPhiCut
Float_tfRPhiCut
AliITSUReconstructor*fReconstructorITS global reconstructor
Bool_tfUseMatLUT! use material lookup table rather than TGeo
Float_tfZCut
static const Double_tfgkChi2Cutchi2 cut during track merging
static const Double_tfgkTolertracking tolerance

Class Charts

Inheritance Chart:
TObject
AliTrackerBase
AliTracker
AliITSUTrackerSA

Function documentation

AliITSUTrackerSA(AliITSUReconstructor* rec = 0)

 This default constructor needs to be provided

AliITSUTrackerSA(const AliITSUTrackerSA& )

 The copy constructor is protected

~AliITSUTrackerSA()
 d-tor
void Init(AliITSUReconstructor* rec)
 init with external reconstructor

Int_t Clusters2Tracks(AliESDEvent* event)
 This is the main tracking function
 The clusters must already be loaded

Int_t PropagateBack(AliESDEvent* event)
 Here, we implement the Kalman smoother ?
 The clusters must be already loaded

Int_t RefitInward(AliESDEvent* event)
 Some final refit, after the outliers get removed by the smoother ?
 The clusters must be loaded

Int_t LoadClusters(TTree* ct)
 This function reads the ITSU clusters from the tree,
 sort them, distribute over the internal tracker arrays, etc

void UnloadClusters()
 This function unloads ITSU clusters from the RAM

void CellularAutomaton(AliESDEvent* ev)
void CellsCreation(const int& cutLevel)
 Make associations between two points on adjacent layers within an azimuthal window.
 Under consideration:
 - track parameter estimation using the primary vertex position
 To do:
 - last iteration
Bool_t InitTrackParams(AliITSUTrackCooked& track, int* points)
 Set the initial guess on track kinematics for propagation.
 Assume at least 3 points available
void CandidatesTreeTraversal(vector<Road>& vec, const int& iD, const int& doubl)
Double_t RefitTrack(AliExternalTrackParam* trc, Int_t* clInfo, Double_t rDest, Int_t stopCond)
 refit track till radius rDest.
 if stopCond<0 : propagate till last cluster then stop
 if stopCond==0: propagate till last cluster then try to go till limiting rDest, don't mind if fail
 if stopCond>0 : rDest must be reached

 The clList should provide the indices of clusters at corresponding layer (as stored in the layer
 TClonesArray, with convention (allowing for up to 2 clusters per layer due to the overlaps):
 if there is a cluster on given layer I, then it should be stored at clInfo[2*I-1]
 if there is an additional cluster on this layer, it goes to clInfo[2*I]
 -1 means no cluster

Bool_t PropagateSeed(AliExternalTrackParam* seed, Double_t xToGo, Double_t mass, Double_t maxStep = 1.0, Bool_t matCorr = kTRUE)
 propagate seed to given x applying material correction if requested
Bool_t TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim = -1)
 transport track from layerFrom to the entrance of layerTo or to rLim (if>0), wathever is closer

Bool_t TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop)
 transport track from layerFrom to the entrance of layerTo but do not pass control parameter X

Bool_t GoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kTRUE)
 go to the exit from lr in direction dir, applying material corrections in steps specific for this layer
 If check is requested, do this only provided the track has not exited the layer already
Bool_t GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kFALSE)
 go to the entrance of lr in direction dir, w/o applying material corrections.
 If check is requested, do this only provided the track did not reach the layer already
Double_t GetMaterialBudget(const double* pnt0, const double* pnt1, double& x2x0, double& rhol) const
Double_t Curvature(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3)
AliCluster * GetCluster(Int_t index) const
void SetChi2Cut(float cut)
{ fChi2Cut=cut; }
void SetRPhiCut(float cut)
{ fRPhiCut=cut; }
void SetPhiCut(float cut)
{ fPhiCut=cut; }
void SetZCut(float cut)
{ fZCut=cut; }
void GlobalFit()
void ChiSquareSelection()
void MergeTracks(vector<AliITSUTrackCooked>& vec, bool* flags)
 Other protected functions
 (Sorting, labeling, calculations of "roads", etc)
AliITSUTrackerSA & operator=(const AliITSUTrackerSA& tr)
void SetLabel(AliITSUTrackCooked& t, Float_t wrong)