Line data Source code
1 : // $Id: AliHLTTPCCATrackConvertor.cxx 27042 2008-07-02 12:06:02Z richterm $
2 : // **************************************************************************
3 : // This file is property of and copyright by the ALICE HLT Project *
4 : // ALICE Experiment at CERN, All rights reserved. *
5 : // *
6 : // Primary Authors: Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de> *
7 : // Ivan Kisel <kisel@kip.uni-heidelberg.de> *
8 : // for The ALICE HLT Project. *
9 : // *
10 : // Permission to use, copy, modify and distribute this software and its *
11 : // documentation strictly for non-commercial purposes is hereby granted *
12 : // without fee, provided that the above copyright notice appears in all *
13 : // copies and that both the copyright notice and this permission notice *
14 : // appear in the supporting documentation. The authors make no claims *
15 : // about the suitability of this software for any purpose. It is *
16 : // provided "as is" without express or implied warranty. *
17 : // *
18 : //***************************************************************************
19 :
20 :
21 : #include "AliHLTTPCCATrackConvertor.h"
22 : #include "AliExternalTrackParam.h"
23 : #include "AliHLTTPCCATrackParam.h"
24 : #include "AliHLTTPCCAMath.h"
25 :
26 :
27 : bool AliHLTTPCCATrackConvertor::GetExtParam( const AliHLTTPCCATrackParam &T1, AliExternalTrackParam &T2, double alpha )
28 : {
29 : //* Convert from AliHLTTPCCATrackParam to AliExternalTrackParam parameterisation,
30 : //* the angle alpha is the global angle of the local X axis
31 :
32 0 : bool ok = T1.CheckNumericalQuality();
33 :
34 0 : double par[5], cov[15];
35 0 : for ( int i = 0; i < 5; i++ ) par[i] = T1.GetPar()[i];
36 0 : for ( int i = 0; i < 15; i++ ) cov[i] = T1.GetCov()[i];
37 :
38 0 : if ( par[2] > .99 ) par[2] = .99;
39 0 : if ( par[2] < -.99 ) par[2] = -.99;
40 :
41 0 : if ( T1.GetSignCosPhi() < 0 ) { // change direction
42 0 : par[2] = -par[2]; // sin phi
43 0 : par[3] = -par[3]; // DzDs
44 0 : par[4] = -par[4]; // kappa
45 0 : cov[3] = -cov[3];
46 0 : cov[4] = -cov[4];
47 0 : cov[6] = -cov[6];
48 0 : cov[7] = -cov[7];
49 0 : cov[10] = -cov[10];
50 0 : cov[11] = -cov[11];
51 0 : }
52 :
53 0 : if ( CAMath::Abs( par[4] ) < 1.e-5 ) par[4] = 1.e-5; // some other software will crash if q/Pt==0
54 0 : if ( CAMath::Abs( par[4] ) > 1./0.08 ) ok = 0; // some other software will crash if q/Pt is too big
55 :
56 0 : T2.Set( ( double ) T1.GetX(), alpha, par, cov );
57 :
58 0 : return ok;
59 0 : }
60 :
61 : void AliHLTTPCCATrackConvertor::SetExtParam( AliHLTTPCCATrackParam &T1, const AliExternalTrackParam &T2 )
62 : {
63 : //* Convert from AliExternalTrackParam parameterisation
64 :
65 0 : for ( int i = 0; i < 5; i++ ) T1.SetPar( i, T2.GetParameter()[i] );
66 0 : for ( int i = 0; i < 15; i++ ) T1.SetCov( i, T2.GetCovariance()[i] );
67 0 : T1.SetX( T2.GetX() );
68 0 : if ( T1.SinPhi() > .99 ) T1.SetSinPhi( .99 );
69 0 : if ( T1.SinPhi() < -.99 ) T1.SetSinPhi( -.99 );
70 0 : T1.SetSignCosPhi( 1 );
71 0 : }
72 :
|