- Method to calculate the track length is added to the AliHLTGlobalBarrelTrack
authorsgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Nov 2009 12:54:41 +0000 (12:54 +0000)
committersgorbuno <sgorbuno@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Nov 2009 12:54:41 +0000 (12:54 +0000)
- Merged TPC tracks are not propagated to the TPC inner radius, but stays at the innermost cluster, in order to get the right track length

HLT/BASE/util/AliHLTGlobalBarrelTrack.cxx
HLT/BASE/util/AliHLTGlobalBarrelTrack.h
HLT/TPCLib/tracking-ca/AliHLTTPCCAMerger.cxx

index d41167b..dd8b8e8 100644 (file)
@@ -59,7 +59,7 @@ AliHLTGlobalBarrelTrack::AliHLTGlobalBarrelTrack(const AliHLTGlobalBarrelTrack&
   fPoints.assign(t.fPoints.begin(), t.fPoints.end());
 }
 
-AliHLTGlobalBarrelTrack::AliHLTGlobalBarrelTrack(const AliHLTExternalTrackParam& p)
+AliHLTGlobalBarrelTrack::AliHLTGlobalBarrelTrack(const AliHLTExternalTrackParam& p )
   : AliKalmanTrack()
   , fPoints()
   , fLastX(p.fLastX)
@@ -74,6 +74,7 @@ AliHLTGlobalBarrelTrack::AliHLTGlobalBarrelTrack(const AliHLTExternalTrackParam&
   Set(p.fX, p.fAlpha, &p.fY, p.fC);
   SetPoints(p.fPointIDs, p.fNPoints);
   SetNumberOfClusters(p.fNPoints);
+  //SetIntegratedLength(GetPathLengthTo( GetLastPointX(), b);
 }
 
 template <class c>
@@ -90,7 +91,45 @@ AliHLTGlobalBarrelTrack::~AliHLTGlobalBarrelTrack()
   // see header file for class documentation
 }
 
-int AliHLTGlobalBarrelTrack::ConvertTrackDataArray(const AliHLTTracksData* pTracks, unsigned sizeInByte, vector<AliHLTGlobalBarrelTrack> &tgtArray)
+
+Double_t AliHLTGlobalBarrelTrack::GetPathLengthTo( Double_t x, Double_t b ) const
+{
+  // calculate the trajectory length for dx step
+    
+  Double_t dx = x - GetX();
+  Double_t ey = GetSnp();
+  if( TMath::Abs( ey )>=kAlmost1 ) return 0;
+
+  Double_t ex = TMath::Sqrt(1-ey*ey);
+  Double_t k  = GetC(b);
+
+  Double_t ey1 = k * dx + ey;
+
+  // check for intersection with X=x
+
+  if ( TMath::Abs( ey1 ) >= kAlmost1  ) return 0;
+
+  Double_t ex1 = TMath::Sqrt(1-ey1*ey1);
+
+  Double_t dx2 = dx * dx;
+  Double_t ss = ey + ey1;
+  Double_t cc = ex + ex1;
+
+  if ( TMath::Abs( cc ) < 1.e-4  ) return 0;
+
+  Double_t tg = ss / cc; 
+  Double_t dl = dx * TMath::Sqrt( 1 + tg * tg );
+  Double_t dSin = dl * k / 2;
+  if ( dSin > 1 ) dSin = 1;
+  if ( dSin < -1 ) dSin = -1;
+  Double_t dS = ( TMath::Abs( k ) > 1.e-4 )  ? ( 2 * TMath::ASin( dSin ) / k ) : dl;
+
+  return dS*TMath::Sqrt(1 + GetTgl()*GetTgl() );
+}
+
+
+
+int AliHLTGlobalBarrelTrack::ConvertTrackDataArray(const AliHLTTracksData* pTracks, unsigned sizeInByte, vector<AliHLTGlobalBarrelTrack> &tgtArray )
 {
   // see header file for class documentation
   int iResult=0;
index 85541df..c9afd6f 100644 (file)
@@ -70,6 +70,8 @@ class AliHLTGlobalBarrelTrack : public AliKalmanTrack
   /// Inherited from TObject, prints the track parameters
   virtual void Print(Option_t* option = "") const;
 
+  Double_t GetPathLengthTo( Double_t x, Double_t b ) const;
+
  protected:
 
  private:
index 400744f..1ecbb25 100644 (file)
@@ -813,8 +813,8 @@ void AliHLTTPCCAMerger::Merging()
       if ( nHits < 30 ) continue;    //SG!!!
 
       AliHLTTPCCATrackParam p = startPoint;
-
-      {
+      
+      if(0){
         double xTPC = 83.65; //SG!!!
         double dAlpha = 0.349066;
        double ymax = 2.* xTPC * CAMath::Tan( dAlpha / 2. );