2 // **************************************************************************
3 // This file is property of and copyright by the ALICE HLT Project *
4 // ALICE Experiment at CERN, All rights reserved. *
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. *
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. *
18 //***************************************************************************
21 #include "AliHLTTPCCAMCTrack.h"
22 #include "AliHLTTPCCAMath.h"
23 #include "TParticle.h"
24 #include "TDatabasePDG.h"
27 AliHLTTPCCAMCTrack::AliHLTTPCCAMCTrack()
28 : fPDG( 0 ), fP( 0 ), fPt( 0 ), fNHits( 0 ), fNMCPoints( 0 ), fFirstMCPointID( 0 ), fNReconstructed( 0 ), fSet( 0 ), fNTurns( 0 )
30 //* Default constructor
31 for( int i=0;i<7; i++){
38 AliHLTTPCCAMCTrack::AliHLTTPCCAMCTrack( const TParticle *part )
39 : fPDG( 0 ), fP( 0 ), fPt( 0 ), fNHits( 0 ), fNMCPoints( 0 ), fFirstMCPointID( 0 ), fNReconstructed( 0 ), fSet( 0 ), fNTurns( 0 )
41 //* Constructor from TParticle
43 for ( int i = 0; i < 7; i++ ) fPar[i] = 0;
44 for ( int i = 0; i < 7; i++ ) fTPCPar[i] = 0;
49 TLorentzVector mom, vtx;
50 part->ProductionVertex( vtx );
51 part->Momentum( mom );
57 double pi = ( fP > 1.e-4 ) ? 1. / fP : 0;
58 fPar[3] = part->Px() * pi;
59 fPar[4] = part->Py() * pi;
60 fPar[5] = part->Pz() * pi;
62 fPDG = part->GetPdgCode();
63 if ( CAMath::Abs( fPDG ) < 100000 ) {
64 TParticlePDG *pPDG = TDatabasePDG::Instance()->GetParticle( fPDG );
65 if ( pPDG ) fPar[6] = pPDG->Charge() / 3.0 * pi;
69 void AliHLTTPCCAMCTrack::SetTPCPar( float X, float Y, float Z,
70 float Px, float Py, float Pz )
72 //* Set parameters at TPC entrance
74 for ( int i = 0; i < 7; i++ ) fTPCPar[i] = 0;
79 double p = CAMath::Sqrt( Px * Px + Py * Py + Pz * Pz );
80 double pi = ( p > 1.e-4 ) ? 1. / p : 0;
85 if ( CAMath::Abs( fPDG ) < 100000 ) {
86 TParticlePDG *pPDG = TDatabasePDG::Instance()->GetParticle( fPDG );
87 if ( pPDG ) fTPCPar[6] = pPDG->Charge() / 3.0 * pi;