* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.19 2003/10/21 11:11:52 kowal2
-Removed compiler warning (Bool_t accept changed to Int_t accept)
-
-Revision 1.18 2003/10/17 15:42:14 kowal2
-Back to the previous version. The warning was erronously generated
-by the compiler
-
-Revision 1.17 2003/10/17 12:28:02 kowal2
-Removed "always true" comparison
-
-Revision 1.16 2003/10/17 12:01:16 kowal2
-Removed compiler warning.
-
-Revision 1.15 2003/09/29 11:56:58 kowal2
-bug fix2
-
-Revision 1.14 2003/09/29 11:39:43 kowal2
-bug fix
-
-Revision 1.13 2003/09/29 11:28:19 kowal2
-completly rewritten
-
-Revision 1.9.4.3 2003/06/23 14:47:10 hristov
-Minor fix
-
-Revision 1.9.4.2 2003/06/23 10:06:13 hristov
-Updated information about the overlapping clusters (M.Ivanov)
-
-Revision 1.9.4.1 2003/06/19 06:59:58 hristov
-Updated version of parallel tracking (M.Ivanov)
-
-Revision 1.9 2003/03/19 17:14:11 hristov
-Load/UnloadClusters added to the base class and the derived classes changed correspondingly. Possibility to give 2 input files for ITS and TPC tracks in PropagateBack. TRD tracker uses fEventN from the base class (T.Kuhr)
-
-Revision 1.8 2003/03/05 11:16:15 kowal2
-Logs added
-
-*/
-
-
-
-
-
-
-
-/*
- AliTPC parallel tracker -
- How to use? -
- run AliTPCFindClusters.C macro - clusters neccessary for tracker are founded
- run AliTPCFindTracksMI.C macro - to find tracks
- tracks are written to AliTPCtracks.root file
- for comparison also seeds are written to the same file - to special branch
-*/
//-------------------------------------------------------
// Implementation of the TPC tracker
//
// Origin: Marian Ivanov Marian.Ivanov@cern.ch
//
+// AliTPC parallel tracker -
+// How to use? -
+// run AliTPCFindClusters.C macro - clusters neccessary for tracker are founded
+// run AliTPCFindTracksMI.C macro - to find tracks
+// tracks are written to AliTPCtracks.root file
+// for comparison also seeds are written to the same file - to special branch
//-------------------------------------------------------
+
+
+/* $Id$ */
+
+
#include <TObjArray.h>
#include <TFile.h>
#include <TTree.h>
#include "Riostream.h"
#include "AliTPCclusterMI.h"
+#include "AliComplexCluster.h"
#include "AliTPCParam.h"
#include "AliTPCClustersRow.h"
#include "AliComplexCluster.h"
void AliTPCtrackerMI::FillESD(TObjArray* arr)
{
+ //
+ //
+ //fill esds using updated tracks
if (fEvent){
// write tracks to the event
// store index of the track
}
}
-void AliTPCtrackerMI::WriteTracks(TTree * tree){
+void AliTPCtrackerMI::WriteTracks(TTree * tree)
+{
//
+ // write tracks from seed array to selected tree
//
fOutput = tree;
if (fOutput){
-void AliTPCtrackerMI::SortTracks(TObjArray * arr, Int_t mode)
+void AliTPCtrackerMI::SortTracks(TObjArray * arr, Int_t mode) const
{
//
//sort tracks in array according mode criteria
}
-void AliTPCtrackerMI::StopNotActive(TObjArray * arr, Int_t row0, Float_t th0, Float_t th1, Float_t th2)
+void AliTPCtrackerMI::StopNotActive(TObjArray * arr, Int_t row0, Float_t th0, Float_t th1, Float_t th2) const
{
// stop not active tracks
// take th1 as threshold for number of founded to number of foundable on last 10 active rows
void AliTPCtrackerMI::StopNotActive(AliTPCseed * seed, Int_t row0, Float_t th0, Float_t th1,
- Float_t th2)
+ Float_t th2) const
{
// stop not active tracks
// take th1 as threshold for number of founded to number of foundable on last 10 active rows
ULong_t status=esd->GetStatus();
AliTPCtrack t(*esd);
AliTPCseed *seed = new AliTPCseed(t,t.GetAlpha());
- if (status==AliESDtrack::kTPCin) seed->Modify(0.8);
+ if (status==AliESDtrack::kTPCin&&direction==1) seed->Modify(0.8);
//
//
// rotate to the local coordinate system
// seed = seed2;
// }
//}
+
fSeeds->AddLast(seed);
}
}
AliTPCclusterMI * cl = GetClusterMI(clindex);
if (cl==0) {
printf("Bug\n");
- AliTPCclusterMI * cl = GetClusterMI(clindex);
+ // AliTPCclusterMI * cl = GetClusterMI(clindex);
return 0;
}
sec[ipoint] = ((clindex&0xff000000)>>24)%18;
}
-void AliTPCtrackerMI::SumTracks(TObjArray *arr1,TObjArray *arr2)
+void AliTPCtrackerMI::SumTracks(TObjArray *arr1,TObjArray *arr2) const
{
//
//sum tracks to common container
}
}
-void AliTPCtrackerMI::PrepareForBackProlongation(TObjArray * arr,Float_t fac)
+void AliTPCtrackerMI::PrepareForBackProlongation(TObjArray * arr,Float_t fac) const
{
//
//
}
-void AliTPCtrackerMI::PrepareForProlongation(TObjArray * arr, Float_t fac)
+void AliTPCtrackerMI::PrepareForProlongation(TObjArray * arr, Float_t fac) const
{
//
//
//delete[] clusters;
}
+
+Int_t AliTPCtrackerMI::AliTPCSector::GetRowNumber(Double_t x) const
+{
+ //return pad row number for this x
+ Double_t r;
+ if (fN < 64){
+ r=fRow[fN-1].GetX();
+ if (x > r) return fN;
+ r=fRow[0].GetX();
+ if (x < r) return -1;
+ return Int_t((x-r)/fPadPitchLength + 0.5);}
+ else{
+ r=fRow[fN-1].GetX();
+ if (x > r) return fN;
+ r=fRow[0].GetX();
+ if (x < r) return -1;
+ Double_t r1=fRow[64].GetX();
+ if(x<r1){
+ return Int_t((x-r)/f1PadPitchLength + 0.5);}
+ else{
+ return (Int_t((x-r1)/f2PadPitchLength + 0.5)+64);}
+ }
+}
+
//_________________________________________________________________________
void AliTPCtrackerMI::AliTPCSector::Setup(const AliTPCParam *par, Int_t f) {
//-----------------------------------------------------------------------
/* $Id$ */
//-------------------------------------------------------
-// TPC trackerMI
+// TPC tracker
+// Parallel tracker
//
// Origin:
//-------------------------------------------------------
#include "AliTracker.h"
#include "AliTPCtrack.h"
-#include "AliComplexCluster.h"
class TFile;
class AliTPCParam;
class AliTPCTrackerPoint;
class AliESD;
class TTree;
-
+class AliComplexCluster;
class AliTPCseed : public AliTPCtrack {
friend class AliTPCtrackerMI;
void Desactivate(Int_t reason){ fRemoval = reason;}
//
//
- AliESDtrack * fEsd; //!
private:
+ AliESDtrack * fEsd; //!
AliTPCclusterMI* fClusterPointer[160]; //! array of cluster pointers -
TClonesArray * fPoints; // array with points along the track
TClonesArray * fEPoints; // array with exact points - calculated in special macro not used in tracking
Int_t PropagateForward2(TObjArray * arr);
Int_t CheckKinkPoint(AliTPCseed*seed, Float_t th);
- void SortTracks(TObjArray * arr, Int_t mode);
+ void SortTracks(TObjArray * arr, Int_t mode) const;
virtual Double_t ErrY2(AliTPCseed* seed, AliTPCclusterMI * cl = 0);
Double_t GetAlpha() const {return fAlpha;}
Double_t GetAlphaShift() const {return fAlphaShift;}
//Int_t GetFirst(){return fFirstRow;}
- Int_t GetRowNumber(Double_t x) const {
- //return pad row number for this x
- Double_t r;
- if (fN < 64){
- r=fRow[fN-1].GetX();
- if (x > r) return fN;
- r=fRow[0].GetX();
- if (x < r) return -1;
- return Int_t((x-r)/fPadPitchLength + 0.5);}
- else{
- r=fRow[fN-1].GetX();
- if (x > r) return fN;
- r=fRow[0].GetX();
- if (x < r) return -1;
- Double_t r1=fRow[64].GetX();
- if(x<r1){
- return Int_t((x-r)/f1PadPitchLength + 0.5);}
- else{
- return (Int_t((x-r1)/f2PadPitchLength + 0.5)+64);}
- }
- }
+ Int_t GetRowNumber(Double_t x) const;
Double_t GetPadPitchWidth() const {return fPadPitchWidth;}
Double_t GetPadPitchLength() const {return fPadPitchLength;}
Double_t GetPadPitchLength(Float_t x) const {return (x<200) ? fPadPitchLength:f2PadPitchLength ;}
void RemoveUsed(TObjArray * arr, Float_t factor1, Float_t factor2, Int_t removalindex);
void RemoveDouble(TObjArray * arr, Float_t factor1, Float_t factor2, Int_t removalindex);
- void StopNotActive(TObjArray * arr, Int_t row0, Float_t th0, Float_t th1, Float_t th2);
- void StopNotActive(AliTPCseed * seed, Int_t row0, Float_t th0, Float_t th1, Float_t th2);
+ void StopNotActive(TObjArray * arr, Int_t row0, Float_t th0, Float_t th1, Float_t th2) const;
+ void StopNotActive(AliTPCseed * seed, Int_t row0, Float_t th0, Float_t th1, Float_t th2) const;
Int_t AcceptCluster(AliTPCseed * seed, AliTPCclusterMI * cluster, Float_t factor, Float_t cory=1., Float_t corz=1.);
private:
inline AliTPCRow &GetRow(Int_t sec, Int_t row);
- inline Double_t GetXrow(Int_t row);
- inline Double_t GetMaxY(Int_t row);
- inline Int_t GetRowNumber(Double_t x);
- inline Double_t GetPadPitchLength(Double_t x);
- inline Double_t GetPadPitchLength(Int_t row);
+ inline Double_t GetXrow(Int_t row) const;
+ inline Double_t GetMaxY(Int_t row) const;
+ inline Int_t GetRowNumber(Double_t x) const;
+ inline Double_t GetPadPitchLength(Double_t x) const;
+ inline Double_t GetPadPitchLength(Int_t row) const;
Float_t GetSigmaY(AliTPCseed * seed);
Float_t GetSigmaZ(AliTPCseed * seed);
void Tracking(TObjArray * arr);
TObjArray * Tracking(Int_t seedtype, Int_t i1, Int_t i2, Float_t cuts[4], Float_t dy=-1, Int_t dsec=0);
TObjArray * Tracking();
- void SumTracks(TObjArray *arr1,TObjArray *arr2);
- void PrepareForBackProlongation(TObjArray * arr, Float_t fac);
- void PrepareForProlongation(TObjArray * arr, Float_t fac);
+ void SumTracks(TObjArray *arr1,TObjArray *arr2) const;
+ void PrepareForBackProlongation(TObjArray * arr, Float_t fac) const;
+ void PrepareForProlongation(TObjArray * arr, Float_t fac) const;
void SetSampledEdx(AliTPCseed *t, Float_t q, Int_t i) {;}
Int_t UpdateTrack(AliTPCseed *t, Int_t accept); //update trackinfo
return (row>=fInnerSec->GetNRows()) ? fOuterSec[sec][row-fInnerSec->GetNRows()]:fInnerSec[sec][row];
}
-Double_t AliTPCtrackerMI::GetXrow(Int_t row) {
+Double_t AliTPCtrackerMI::GetXrow(Int_t row) const {
// return (row>=fInnerSec->GetNRows()) ? fOuterSec->GetX(row-fInnerSec->GetNRows()):fInnerSec->GetX(row);
return fXRow[row];
}
-Double_t AliTPCtrackerMI::GetMaxY(Int_t row) {
+Double_t AliTPCtrackerMI::GetMaxY(Int_t row) const {
//return (row>=fInnerSec->GetNRows()) ? fOuterSec->GetMaxY(row-fInnerSec->GetNRows()):fInnerSec->GetMaxY(row);
return fYMax[row];
}
-Int_t AliTPCtrackerMI::GetRowNumber(Double_t x)
+Int_t AliTPCtrackerMI::GetRowNumber(Double_t x) const
{
//
return (x>133.) ? fOuterSec->GetRowNumber(x)+fInnerSec->GetNRows():fInnerSec->GetRowNumber(x);
}
-Double_t AliTPCtrackerMI::GetPadPitchLength(Double_t x)
+Double_t AliTPCtrackerMI::GetPadPitchLength(Double_t x) const
{
//
return (x>133.) ? fOuterSec->GetPadPitchLength(x):fInnerSec->GetPadPitchLength(x);
//return fPadLength[row];
}
-Double_t AliTPCtrackerMI::GetPadPitchLength(Int_t row)
+Double_t AliTPCtrackerMI::GetPadPitchLength(Int_t row) const
{
//
return fPadLength[row];