ROOT logo
AliRoot » ITS » UPGRADE » AliITSUCATracker

class AliITSUCATracker: public AliITSUTrackerGlo

static inline float XCenterOfCurvature(float x1, float y1, float x2, float y2, float x3, float y3)
{

    // Initial approximation of the x-coordinate of the center of curvature


  const float k1 = (y2 - y1) / (x2 - x1), k2 = (y3 - y2) / (x3 - x2);
  return TMath::Abs(k2 - k1) > kAlmost0 ?
    0.5f * (k1 * k2 * (y1 - y3) + k2 * (x1 + x2) - k1 * (x2 + x3)) / (k2 - k1) : 1e12f;
}

Function Members (Methods)

public:
AliITSUCATracker(AliITSUReconstructor* rec = 0)
virtual~AliITSUCATracker()
voidTObject::AbstractMethod(const char* method) const
voidAliITSUTrackerGlo::AddProlongationHypothesis(AliITSUSeed* seed, Int_t lr)
Bool_tAliITSUTrackerGlo::AddSeedBranch(AliITSUSeed* seed)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Bool_tAliITSUTrackerGlo::CheckBackwardMatching(AliITSUSeed* seed)
Int_tAliITSUTrackerGlo::CheckCluster(AliITSUSeed* seed, Int_t lr, Int_t clID)
voidAliITSUTrackerGlo::CheckClusterSharingConflicts(AliITSUTrackHyp* hyp)
voidAliITSUTrackerGlo::CheckClusterUsage()
static TClass*Class()
virtual const char*TObject::ClassName() const
voidAliITSUTrackerGlo::CleanHypothesis(AliITSUTrackHyp* hyp)
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
Bool_tAliITSUTrackerGlo::ContainsSplitCluster(const AliITSUSeed* seed, Int_t maxSize = 99999)
virtual voidAliTracker::CookLabel(AliKalmanTrack* t, Float_t wrong) const
voidAliITSUTrackerGlo::CookMCLabel(AliITSUTrackHyp* hyp)
virtual voidTObject::Copy(TObject& object) const
voidAliITSUTrackerGlo::CreateDefaultTrackCond()
virtual voidTObject::Delete(Option_t* option = "")MENU
voidAliITSUTrackerGlo::DeleteLastSeedFromPool()
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)
voidAliITSUTrackerGlo::FinalizeHypotheses()
Bool_tAliITSUTrackerGlo::FinalizeHypothesis(AliITSUTrackHyp* hyp)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
voidAliITSUTrackerGlo::FindTrack(AliESDtrack* esdTr, Int_t esdID)
static Double_tAliTrackerBase::FitTrack(AliExternalTrackParam* trackParam, AliTrackPointArray* pointArray, Double_t mass, Double_t maxStep)
voidAliITSUTrackerGlo::FlagSeedClusters(const AliITSUSeed* seed, Bool_t flg, UShort_t hypRef)
voidAliITSUTrackerGlo::FlagSplitClusters()
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
Int_tAliITSUTrackerGlo::GetCountITSin() const
Int_tAliITSUTrackerGlo::GetCountITSout() const
Int_tAliITSUTrackerGlo::GetCountITSrefit() const
Int_tAliITSUTrackerGlo::GetCountPronlongationTrials() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
const AliEventInfo*AliTracker::GetEventInfo() const
virtual const char*TObject::GetIconName() const
AliITSURecoDet*AliITSUTrackerGlo::GetITSInterface() const
Double_tGetMaterialBudget(const double* p0, const double* p1, 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()
Bool_tAliITSUTrackerGlo::GetRoadWidth(AliITSUSeed* seed, int ilrA)
Bool_tGetSAonly() const
Double_tAliTrackerBase::GetSigmaX() const
Double_tAliTrackerBase::GetSigmaY() const
Double_tAliTrackerBase::GetSigmaZ() const
virtual const char*TObject::GetTitle() const
AliITSUTrackHyp*AliITSUTrackerGlo::GetTrackHyp(Int_t id) const
Int_tAliITSUTrackerGlo::GetTrackingPhase() 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_tAliITSUTrackerGlo::GoToEntranceToLayer(AliITSUSeed* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kFALSE)
Bool_tAliITSUTrackerGlo::GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kFALSE)
Bool_tAliITSUTrackerGlo::GoToExitFromLayer(AliITSUSeed* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check = kTRUE)
Bool_tAliITSUTrackerGlo::GoToExitFromLayer(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
voidAliITSUTrackerGlo::Init(AliITSUReconstructor* rec)
AliITSUTrackHyp*AliITSUTrackerGlo::InitHypothesis(AliESDtrack* esdTr, Int_t esdID)
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
voidAliITSUTrackerGlo::KillSeed(AliITSUSeed* seed, Bool_t branch = kFALSE)
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)
voidAliITSUTrackerGlo::MarkSeedFree(AliITSUSeed* seed)
voidTObject::MayNotUse(const char* method) const
static Double_tAliTrackerBase::MeanMaterialBudget(const Double_t* start, const Double_t* end, Double_t* mparam)
Bool_tAliITSUTrackerGlo::NeedToKill(AliITSUSeed* seed, Int_t flag)
Bool_tAliITSUTrackerGlo::NeedToProlong(AliESDtrack* estTr, Int_t esdID)
AliITSUSeed*AliITSUTrackerGlo::NewSeedFromPool(const AliITSUSeed* src = 0)
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
voidAliITSUTrackerGlo::PrintSeedClusters(const AliITSUSeed* seed, Option_t* option = "")
virtual Int_tPropagateBack(AliESDEvent* event)
Bool_tAliITSUTrackerGlo::PropagateSeed(AliITSUSeed* seed, Double_t xToGo, Double_t mass, Double_t maxStep = 1.0, Bool_t matCorr = kTRUE)
Bool_tAliITSUTrackerGlo::PropagateSeed(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_tAliITSUTrackerGlo::RefitTrack(AliITSUTrackHyp* trc, Double_t r, Int_t& nclFit, Int_t stopCond = 0)
voidTObject::ResetBit(UInt_t f)
voidResetHistos()
voidAliITSUTrackerGlo::ResetSeedsPool()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidAliITSUTrackerGlo::SaveReducedHypothesesTree(AliITSUTrackHyp* dest)
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)
voidSetSAonly(Bool_t sa = kTRUE)
voidAliITSUTrackerGlo::SetTrackHyp(AliITSUTrackHyp* hyp, Int_t id)
voidAliITSUTrackerGlo::SetTrackingPhase(Int_t p)
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_tAliITSUTrackerGlo::TransportToLayer(AliITSUSeed* seed, Int_t lFrom, Int_t lTo, Double_t rLim = -1)
Bool_tAliITSUTrackerGlo::TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim = -1)
Bool_tAliITSUTrackerGlo::TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop)
static Bool_tAliTrackerBase::UniformField()
virtual voidUnloadClusters()
voidAliITSUTrackerGlo::UpdateESDTrack(AliITSUTrackHyp* hyp, Int_t flag)
static voidAliTrackerBase::UpdateTrack(AliExternalTrackParam&, const AliExternalTrackParam&)
virtual voidAliTracker::UseClusters(const AliKalmanTrack* t, Int_t from = 0) const
virtual voidTObject::UseCurrentStyle()
voidAliITSUTrackerGlo::ValidateAllowedBranches(Int_t accMax)
voidAliITSUTrackerGlo::ValidateAllowedCandidates(Int_t ilr, Int_t accMax)
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:
TObjArray*AliITSUTrackerGlo::BookControlHistos(const char* pref)
boolCellParams(int l, AliITSUCATrackingStation::ClsInfo* c1, AliITSUCATrackingStation::ClsInfo* c2, AliITSUCATrackingStation::ClsInfo* c3, float& curv, float* np)
voidCellsTreeTraversal(vector<AliITSUCARoad>& roads, const int& iD, const int& doubl)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidFindTracksCA(int iteration)
Int_tAliITSUTrackerGlo::GetHistoID(Int_t lr, Int_t hid, Int_t pass = 0, Int_t phase = 0)
voidMakeCells(int iteration)
voidTObject::MakeZombie()
TObject*&AliITSUTrackerGlo::NextFreeSeed()
Bool_tRefitAt(Double_t xx, AliITSUTrackCooked* t, const AliITSUTrackCooked* c)
voidSetCuts(int it)
voidSetLabel(AliITSUTrackCooked& t, Float_t wrong)

Data Members

public:
TH1F*fFDCAXY[5]
TH1F*fFDCAZ[5]
TH1F*fFDXY[6]
TH1F*fFDZ[6]
TH1F*fFakeCombChi2[5]
TH1F*fFakeCombN[4]
TH1F*fGDCAXY[5]
TH1F*fGDCAZ[5]
TH1F*fGDXY[6]
TH1F*fGDZ[6]
boolfGood
TH1F*fGoodCombChi2[5]
TH1F*fGoodCombN[4]
TH1F*fNEntries
TH1F*fPhi
TH1F*fPhiF
TH1F*fTan
TH1F*fTanF
protected:
TObjArray*AliITSUTrackerGlo::fCHistoArrCorrset of histos for each tracking pass/phase: correct
TObjArray*AliITSUTrackerGlo::fCHistoArrFakeset of histos for each tracking pass/phase: fakse
Int_tAliITSUTrackerGlo::fCountITSinnumber of successful ITSin
Int_tAliITSUTrackerGlo::fCountITSoutnumber of successful ITSout
Int_tAliITSUTrackerGlo::fCountITSrefitnumber of successful ITSrefit
Int_tAliITSUTrackerGlo::fCountProlongationTrialsnumber of TPC seeds
Int_tAliITSUTrackerGlo::fCurrActLrID! current active layer ID being processed (set only when needed, not guaranteed)
Int_tAliITSUTrackerGlo::fCurrESDtrMClbits eventual mc label
AliESDtrack*AliITSUTrackerGlo::fCurrESDtrackcurrent esd track in processing
AliITSUTrackHyp*AliITSUTrackerGlo::fCurrHyp! hypotheses container for current track
AliITSURecoLayer*AliITSUTrackerGlo::fCurrLayer! current layer being processed (set only when needed, not guaranteed)
Double_tAliITSUTrackerGlo::fCurrMasscurrent track mass
Int_tAliITSUTrackerGlo::fCurrPassID! tracking pass (different tracking conditions)
AliITSUTrackCond*AliITSUTrackerGlo::fCurrTrackCond! current tracking condition
TObjArrayAliITSUTrackerGlo::fDefTrackConds! default tracking conditions
TArrayIAliITSUTrackerGlo::fESDIndex! array of ID's of freed seeds
TArrayIAliITSUTrackerGlo::fFreeSeedsID! array of ID's of freed seeds
TObjArrayAliITSUTrackerGlo::fHypStorestorage for tracks hypotheses
AliITSURecoDet*AliITSUTrackerGlo::fITSinterface to ITS, borrowed from reconstructor
Int_tAliITSUTrackerGlo::fLastSeedID! id of the pool seed on which is returned by the NextFreeSeed method
AliITSUSeed**AliITSUTrackerGlo::fLayerCandidates! array for branches of current track prolongation
Int_tAliITSUTrackerGlo::fLayerMaxCandidates! size of tmp candidates array
AliITSUMatLUT*AliITSUTrackerGlo::fMatLUTmaterial lookup table
Int_tAliITSUTrackerGlo::fNBranchesAddednumber of branches created for current seed in prolongation
Int_tAliITSUTrackerGlo::fNCandidatesAddednumber of candidates added for current seed in prolongation
Int_tAliITSUTrackerGlo::fNFreeSeeds! number of seeds freed in the pool
Int_tAliITSUTrackerGlo::fNLrActive! number of active layers
Int_tAliITSUTrackerGlo::fNTracksESDnumber of esd tracks
AliITSUReconstructor*AliITSUTrackerGlo::fReconstructorITS global reconstructor
TClonesArrayAliITSUTrackerGlo::fSeedsPool! pool for seeds
Double_tAliITSUTrackerGlo::fTrImpData[12]data on track impact on the layer
Int_tAliITSUTrackerGlo::fTrackPhaseID! tracking phase (clusters2tracks, backward, inward)
Bool_tAliITSUTrackerGlo::fUseMatLUT! use material lookup table rather than TGeo
AliITSUTrackHyp*AliITSUTrackerGlo::fWorkHyp! temporary hypothesis for track finding
static const Double_tAliITSUTrackerGlo::fgkTolertracking tolerance
private:
floatfCDCAxy[5]
floatfCDCAz[5]
floatfCDN[4]
floatfCDP[4]
floatfCDPhi
floatfCDTanL
floatfCDZ[6]
floatfCPhi
floatfCZ
TClonesArray*fCandidates[4]
vector<AliITSUCACell>fCells[5]
Float_tfChi2Cut
vector<Doublets>fDoublets[6]
AliITSUCATrackingStationfLayer[7]
Float_tfPhiCut
Bool_tfSAonlykTRUE if the standalone tracking only
vector<bool>fUsedClusters[7]
Float_tfZCut
static const Double_tfgkChi2Cutchi2 cut during track merging
static const intfgkNumberOfIterations
static const floatfgkR[7]

Class Charts

Inheritance Chart:
TObject
AliTrackerBase
AliTracker
AliITSUTrackerGlo
AliITSUCATracker

Function documentation

AliITSUCATracker(AliITSUReconstructor* rec = 0)
 This default constructor needs to be provided
~AliITSUCATracker()
 d-tor
bool CellParams(int l, AliITSUCATrackingStation::ClsInfo* c1, AliITSUCATrackingStation::ClsInfo* c2, AliITSUCATrackingStation::ClsInfo* c3, float& curv, float* np)
 Calculation of cell params and filtering using a DCA cut wrt beam line position.
 The hit are mapped on a paraboloid space: there a circle is described as plane.
 The parameter n of the cells is the normal vector to the plane describing the circle in the
 paraboloid.
void CellsTreeTraversal(vector<AliITSUCARoad>& roads, const int& iD, const int& doubl)
Int_t Clusters2Tracks(AliESDEvent* event)
 This is the main tracking function
 The clusters must already be loaded
void FindTracksCA(int iteration)
 Main pattern recognition routine. It has 4 steps (planning to split in different methods)
 1. Tracklet finding (using vertex position)
 2. Tracklet association, cells building
 3. Handshake between neighbour cells
 4. Candidates ("roads") finding and fitting
AliCluster* GetCluster(Int_t index) const
Double_t GetMaterialBudget(const double* p0, const double* p1, double& x2x0, double& rhol) const
Int_t LoadClusters(TTree* ct)
 This function reads the ITSU clusters from the tree,
 sort them, distribute over the internal tracker arrays, etc
void MakeCells(int iteration)
Int_t PropagateBack(AliESDEvent* event)
Bool_t RefitAt(Double_t xx, AliITSUTrackCooked* t, const AliITSUTrackCooked* c)
 This function refits the track "t" at the position "x" using
 the clusters from "c"
Int_t RefitInward(AliESDEvent* event)
 Some final refit, after the outliers get removed by the smoother ?
 The clusters must be loaded
void SetCuts(int it)
void UnloadClusters()
 This function unloads ITSU clusters from the memory
void ResetHistos()
AliITSUCATracker(AliITSUReconstructor* rec = 0)
Bool_t GetSAonly() const
{ return fSAonly; }
void SetChi2Cut(float cut)
{ fChi2Cut = cut; }
void SetPhiCut(float cut)
{ fPhiCut = cut; }
void SetSAonly(Bool_t sa = kTRUE)
{ fSAonly=sa; }
void SetZCut(float cut)
{ fZCut = cut; }
void SetLabel(AliITSUTrackCooked& t, Float_t wrong)
AliITSUCATracker & operator=(const AliITSUCATracker& tr)