LCOV - code coverage report
Current view: top level - HLT/TPCLib/tracking-ca - AliHLTTPCCAParam.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 67 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 64 0.0 %

          Line data    Source code
       1             : //-*- Mode: C++ -*-
       2             : // @(#) $Id$
       3             : // ************************************************************************
       4             : // This file is property of and copyright by the ALICE HLT Project        *
       5             : // ALICE Experiment at CERN, All rights reserved.                         *
       6             : // See cxx source for full Copyright notice                               *
       7             : //                                                                        *
       8             : //*************************************************************************
       9             : 
      10             : #ifndef ALIHLTTPCCAPARAM_H
      11             : #define ALIHLTTPCCAPARAM_H
      12             : 
      13             : #include "AliHLTTPCCADef.h"
      14             : #include "AliHLTTPCCAMath.h"
      15             : #include "AliHLTTPCCATrackParam.h"
      16             : 
      17             : #if !defined(__OPENCL__) || defined(HLTCA_HOSTCODE)
      18             : #include <iostream>
      19             : #endif
      20             : 
      21             : /**
      22             :  * @class ALIHLTTPCCAParam
      23             :  * parameters of the AliHLTTPCCATracker, including geometry information
      24             :  * and some reconstructon constants.
      25             :  *
      26             :  * The class is under construction.
      27             :  *
      28             :  */
      29             : MEM_CLASS_PRE() class AliHLTTPCCAParam
      30             : {
      31             :   public:
      32             :         AliHLTTPCCAParam();
      33           0 :     ~AliHLTTPCCAParam() {}
      34             : 
      35             : #if !defined(HLTCA_GPUCODE)
      36             :     void Initialize( int iSlice, int nRows, float rowX[],
      37             :                             float alpha, float dAlpha,
      38             :                             float rMin, float rMax, float zMin, float zMax,
      39             :                             float padPitch, float zSigma, float bz );
      40             :     void Update();
      41             : #endif //!HLTCA_GPUCODE
      42             : 
      43             :         GPUd() void Slice2Global( float x, float y,  float z,
      44             :                               float *X, float *Y,  float *Z ) const;
      45             : 
      46             :     GPUd() void Global2Slice( float x, float y,  float z,
      47             :                               float *X, float *Y,  float *Z ) const;
      48             : 
      49             : 
      50           0 :     GPUhd() int ISlice() const { return fISlice;}
      51           0 :     GPUhd() int NRows() const { return fNRows;}
      52             : 
      53           0 :     GPUhd() float RowX( int iRow ) const { return fRowX[iRow]; }
      54             : 
      55           0 :     GPUd() float Alpha() const { return fAlpha;}
      56           0 :     GPUd() float Alpha( int iSlice ) const { return 0.174533 + DAlpha()*iSlice;}
      57           0 :     GPUd() float DAlpha() const { return fDAlpha;}
      58           0 :     GPUd() float CosAlpha() const { return fCosAlpha;}
      59           0 :     GPUd() float SinAlpha() const { return fSinAlpha;}
      60           0 :     GPUd() float AngleMin() const { return fAngleMin;}
      61           0 :     GPUd() float AngleMax() const { return fAngleMax;}
      62           0 :     GPUd() float RMin() const { return fRMin;}
      63           0 :     GPUd() float RMax() const { return fRMax;}
      64           0 :     GPUd() float ZMin() const { return fZMin;}
      65           0 :     GPUd() float ZMax() const { return fZMax;}
      66           0 :     GPUd() float ErrZ() const { return fErrZ;}
      67           0 :     GPUd() float ErrX() const { return fErrX;}
      68           0 :     GPUd() float ErrY() const { return fErrY;}
      69           0 :     GPUd() float BzkG() const { return fBzkG;}
      70           0 :     GPUd() float ConstBz() const { return fConstBz;}
      71             : 
      72           0 :     GPUd() float NeighboursSearchArea() const { return fNeighboursSearchArea; }
      73           0 :     GPUd() float TrackConnectionFactor() const { return fTrackConnectionFactor; }
      74           0 :     GPUd() float TrackChiCut()  const { return fTrackChiCut; }
      75           0 :     GPUd() float TrackChi2Cut() const { return fTrackChi2Cut; }
      76           0 :     GPUd() int   MaxTrackMatchDRow() const { return fMaxTrackMatchDRow; }
      77           0 :     GPUd() float HitPickUpFactor() const { return fHitPickUpFactor; }
      78           0 :   GPUd() float ClusterError2CorrectionY() const { return fClusterError2CorrectionY; }
      79           0 :   GPUd() float ClusterError2CorrectionZ() const { return fClusterError2CorrectionZ; }
      80           0 :   GPUd() int MinNTrackClusters() const { return fMinNTrackClusters; }
      81           0 :   GPUd() float MaxTrackQPt() const { return fMaxTrackQPt; }
      82             : 
      83             : 
      84             : 
      85           0 :     GPUhd() void SetISlice( int v ) {  fISlice = v;}
      86           0 :     GPUhd() void SetNRows( int v ) {  fNRows = v;}
      87           0 :     GPUhd() void SetRowX( int iRow, float v ) {  fRowX[iRow] = v; }
      88           0 :     GPUd() void SetAlpha( float v ) {  fAlpha = v;}
      89           0 :     GPUd() void SetDAlpha( float v ) {  fDAlpha = v;}
      90           0 :     GPUd() void SetCosAlpha( float v ) {  fCosAlpha = v;}
      91           0 :     GPUd() void SetSinAlpha( float v ) {  fSinAlpha = v;}
      92           0 :     GPUd() void SetAngleMin( float v ) {  fAngleMin = v;}
      93           0 :     GPUd() void SetAngleMax( float v ) {  fAngleMax = v;}
      94           0 :     GPUd() void SetRMin( float v ) {  fRMin = v;}
      95           0 :     GPUd() void SetRMax( float v ) {  fRMax = v;}
      96           0 :     GPUd() void SetZMin( float v ) {  fZMin = v;}
      97           0 :     GPUd() void SetZMax( float v ) {  fZMax = v;}
      98           0 :     GPUd() void SetErrZ( float v ) {  fErrZ = v;}
      99           0 :     GPUd() void SetErrX( float v ) {  fErrX = v;}
     100           0 :     GPUd() void SetErrY( float v ) {  fErrY = v;}
     101           0 :     GPUd() void SetBzkG( float v ) {  fBzkG = v;}
     102             : 
     103           0 :   GPUd() void SetNeighboursSearchArea( float v ) { fNeighboursSearchArea = v;}
     104           0 :     GPUd() void SetTrackConnectionFactor( float v ) { fTrackConnectionFactor = v;}
     105           0 :     GPUd() void SetTrackChiCut( float v ) {  fTrackChiCut = v; }
     106           0 :   GPUd() void SetTrackChi2Cut( float v ) {  fTrackChi2Cut = v; }
     107           0 :     GPUd() void SetMaxTrackMatchDRow( int v ) {  fMaxTrackMatchDRow = v; }
     108           0 :     GPUd() void SetHitPickUpFactor( float v ) {  fHitPickUpFactor = v; }
     109           0 :     GPUd() void SetClusterError2CorrectionY( float v ) { fClusterError2CorrectionY = v; }
     110           0 :     GPUd() void SetClusterError2CorrectionZ( float v ) { fClusterError2CorrectionZ = v; }
     111             : 
     112           0 :   GPUd() void SetMinNTrackClusters( int v ){ fMinNTrackClusters = v; }
     113           0 :   GPUd() void SetMinTrackPt( float v ){ fMaxTrackQPt = CAMath::Abs(v)>0.02 ?1./CAMath::Abs(v) :1./0.02; }
     114             : 
     115             :     GPUd() float GetClusterError2( int yz, int type, float z, float angle ) const;
     116             :     GPUd() void GetClusterErrors2( int row, float z, float sinPhi, float cosPhi, float DzDs, float &Err2Y, float &Err2Z ) const;
     117             :     GPUd() void GetClusterErrors2v1( int rowType, float z, float sinPhi, float cosPhi, float DzDs, float &Err2Y, float &Err2Z ) const;
     118             : 
     119             : #if !defined(__OPENCL__) || defined(HLTCA_HOSTCODE)
     120             :     void WriteSettings( std::ostream &out ) const;
     121             :     void ReadSettings( std::istream &in );
     122             : #endif
     123             : 
     124             :     GPUd() void SetParamS0Par( int i, int j, int k, float val ) {
     125           0 :       fParamS0Par[i][j][k] = val;
     126           0 :     }
     127             :   
     128           0 :     GPUd() const MakeType(float*) GetParamS0Par(int i, int j) const { return fParamS0Par[i][j]; }
     129             :  
     130           0 :     GPUd() float GetBzkG() const { return fBzkG;}
     131           0 :     GPUd() float GetConstBz() const { return fConstBz;}
     132             :     GPUd() float GetBz( float x, float y, float z ) const;
     133           0 :         MEM_CLASS_PRE2() GPUd() float GetBz( const MEM_LG2(AliHLTTPCCATrackParam) &t ) const {return GetBz( t.X(), t.Y(), t.Z() );}
     134             : 
     135             :   protected:
     136             :     int fISlice; // slice number
     137             :     int fNRows; // number of rows
     138             : 
     139             :     float fAlpha, fDAlpha; // slice angle and angular size
     140             :     float fCosAlpha, fSinAlpha;// sign and cosine of the slice angle
     141             :     float fAngleMin, fAngleMax; // minimal and maximal angle
     142             :     float fRMin, fRMax;// slice R range
     143             :     float fZMin, fZMax;// slice Z range
     144             :     float fErrX, fErrY, fErrZ;// default cluster errors
     145             :     float fPadPitch; // pad pitch
     146             :     float fBzkG;       // constant magnetic field value in kG
     147             :     float fConstBz;       // constant magnetic field value in kG*clight
     148             : 
     149             :     float fHitPickUpFactor;// multiplier for the chi2 window for hit pick up procedure
     150             : 
     151             :     int   fMaxTrackMatchDRow;// maximal jump in TPC row for connecting track segments
     152             : 
     153             :   float fNeighboursSearchArea; // area in cm for the search of neighbours
     154             : 
     155             :     float fTrackConnectionFactor; // allowed distance in Chi^2/3.5 for neighbouring tracks
     156             :     float fTrackChiCut; // cut for track Sqrt(Chi2/NDF);
     157             :     float fTrackChi2Cut;// cut for track Chi^2/NDF
     158             :   float fClusterError2CorrectionY; // correction for the squared cluster error during tracking
     159             :   float fClusterError2CorrectionZ; // correction for the squared cluster error during tracking
     160             :     int fMinNTrackClusters; //* required min number of clusters on the track
     161             :     float fMaxTrackQPt;    //* required max Q/Pt (==min Pt) of tracks
     162             : 
     163             :     float fRowX[200];// X-coordinate of rows
     164             :     float fParamS0Par[2][3][7];    // cluster error parameterization coeficients
     165             :     float fPolinomialFieldBz[6];   // field coefficients
     166             : 
     167             : };
     168             : 
     169             : 
     170             : 
     171             : MEM_CLASS_PRE() GPUd() inline float MEM_LG(AliHLTTPCCAParam)::GetBz( float x, float y, float z ) const
     172             : {
     173           0 :   float r2 = x * x + y * y;
     174           0 :   float r  = CAMath::Sqrt( r2 );
     175           0 :   const float *c = fPolinomialFieldBz;
     176           0 :   return ( c[0] + c[1]*z  + c[2]*r  + c[3]*z*z + c[4]*z*r + c[5]*r2 );
     177             : }
     178             : 
     179             : #endif //ALIHLTTPCCAPARAM_H

Generated by: LCOV version 1.11