00001 #include "CPPFORT/lcvtx.h"
00002
00003 #include "lcio.h"
00004 #include "IMPL/VertexImpl.h"
00005 #include "IMPL/ReconstructedParticleImpl.h"
00006
00007 using namespace lcio ;
00008
00009 #include <iostream>
00010
00011
00012
00013 PTRTYPE lcvtxcreate(){
00014 VertexImpl* vtx = new VertexImpl ;
00015 return C2F_POINTER( LCObject*, vtx ) ;
00016 }
00017 int lcvtxdelete( PTRTYPE vertex ){
00018 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00019 delete vtx ;
00020 return LCIO::SUCCESS ;
00021 }
00022
00023
00024
00025
00026 int lcvtxid( PTRTYPE vertex ) {
00027 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00028 return vtx->id() ;
00029 }
00030
00031 bool lcvtxisprimary ( PTRTYPE vertex ) {
00032 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00033 return vtx->isPrimary() ;
00034 }
00035
00036 char* lcvtxgetalgorithmtype ( PTRTYPE vertex ) {
00037 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00038 return const_cast<char*>( vtx->getAlgorithmType().c_str() );
00039 }
00040
00041 float lcvtxgetchi2( PTRTYPE vertex ) {
00042 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00043 return vtx->getChi2() ;
00044 }
00045
00046 float lcvtxgetprobability( PTRTYPE vertex ) {
00047 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00048 return vtx->getProbability() ;
00049 }
00050
00051 int lcvtxgetposition( PTRTYPE vertex, float pos[3] ) {
00052 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00053 for( int i=0 ; i<3 ; *pos++ = vtx->getPosition()[i++] ) ;
00054 return LCIO::SUCCESS ;
00055 }
00056
00057 int lcvtxgetcovmatrix( PTRTYPE vertex, float cvmtx[VTXCOVMATRIX] ) {
00058 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00059 for( int i=0 ; i<VTXCOVMATRIX ; cvmtx[i] = vtx->getCovMatrix()[i++] ) ;
00060 return LCIO::SUCCESS ;
00061 }
00062
00063 int lcvtxgetparameters( PTRTYPE vertex, float* vec, int* nvec ) {
00064 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00065 int ntot = *nvec - 1 ;
00066 const FloatVec* floatVec = &vtx->getParameters() ;
00067 for(unsigned int l=0; l < floatVec->size(); l++){
00068 if ( l > (unsigned)(ntot) ) {
00069 std::cout << "LCVertex: in getParameters more than " << ntot << "parameters to store" << std::endl ;
00070 return LCIO::ERROR ;
00071 }
00072 *vec++ = (*floatVec)[l] ;
00073 }
00074 *nvec = (int)(floatVec->size() + 1);
00075 return LCIO::SUCCESS ;
00076 }
00077
00078 PTRTYPE lcvtxgetassociatedparticle( PTRTYPE vertex ) {
00079 Vertex* vtx = f2c_pointer<Vertex,LCObject>( vertex ) ;
00080 ReconstructedParticle* recP = vtx->getAssociatedParticle();
00081 return reinterpret_cast<PTRTYPE>( recP );
00082 }
00083
00084
00085
00086
00087 int lcvtxsetprimary( PTRTYPE vertex, bool pri ) {
00088 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00089 vtx->setPrimary( pri ) ;
00090 return LCIO::SUCCESS ;
00091 }
00092
00093 int lcvtxsetalgorithmtype( PTRTYPE vertex, char* type ) {
00094 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00095 vtx->setAlgorithmType( type ) ;
00096 return LCIO::SUCCESS ;
00097 }
00098
00099 int lcvtxsetchi2( PTRTYPE vertex, float chi2 ) {
00100 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00101 vtx->setChi2( chi2 ) ;
00102 return LCIO::SUCCESS ;
00103 }
00104
00105 int lcvtxsetprobability( PTRTYPE vertex, float probability ) {
00106 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00107 vtx->setProbability( probability ) ;
00108 return LCIO::SUCCESS ;
00109 }
00110
00111 int lcvtxsetposition( PTRTYPE vertex, float pos[3] ) {
00112 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00113 vtx->setPosition( pos ) ;
00114 return LCIO::SUCCESS ;
00115 }
00116
00117 int lcvtxsetcovmatrix( PTRTYPE vertex, float cvmtx[VTXCOVMATRIX] ) {
00118 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00119 vtx->setCovMatrix( cvmtx ) ;
00120 return LCIO::SUCCESS ;
00121 }
00122
00123 int lcvtxaddparameter( PTRTYPE vertex, float param) {
00124 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00125 vtx->addParameter( param ) ;
00126 return LCIO::SUCCESS ;
00127 }
00128
00129 int lcvtxsetassociatedparticle( PTRTYPE vertex, PTRTYPE particle ) {
00130 VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
00131 ReconstructedParticle* rcp = f2c_pointer<ReconstructedParticle,LCObject>( particle ) ;
00132 vtx->setAssociatedParticle( rcp ) ;
00133 return LCIO::SUCCESS ;
00134 }
00135