00001 #include "CPPFORT/lcmcp.h"
00002
00003 #include "lcio.h"
00004 #include "IMPL/MCParticleImpl.h"
00005
00006 using namespace lcio ;
00007
00008 #include <iostream>
00009
00010
00011 PTRTYPE lcmcpcreate(){
00012 MCParticleImpl* mcp = new MCParticleImpl ;
00013
00014
00015
00016
00017
00018
00019
00020 return C2F_POINTER( LCObject*, mcp ) ;
00021 }
00022 int lcmcpdelete( PTRTYPE mcparticle ){
00023 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00024 delete mcp ;
00025 return LCIO::SUCCESS ;
00026 }
00027 int lcmcpgetnumberofparents( PTRTYPE mcparticle ) {
00028 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00029 return mcp->getParents().size() ;
00030 }
00031 PTRTYPE lcmcpgetparent( PTRTYPE mcparticle, int i ) {
00032 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00033 return C2F_POINTER(LCObject*, mcp->getParents()[i] ) ;
00034 }
00035
00036
00037
00038
00039 PTRTYPE lcmcpgetdaughter( PTRTYPE mcparticle, int i ) {
00040 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00041 return C2F_POINTER(LCObject*, mcp->getDaughters()[i-1] ) ;
00042 }
00043 int lcmcpgetendpoint( PTRTYPE mcparticle, double* ep) {
00044 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00045 for( int i=0 ; i<3 ; *ep++ = mcp->getEndpoint()[i++] ) ;
00046 return LCIO::SUCCESS ;
00047 }
00048 int lcmcpgetnumberofdaughters( PTRTYPE mcparticle ) {
00049 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00050 return mcp->getDaughters().size() ;
00051 }
00052 int lcmcpgetpdg( PTRTYPE mcparticle ) {
00053 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00054 return mcp->getPDG() ;
00055 }
00056 int lcmcpgetgeneratorstatus( PTRTYPE mcparticle ) {
00057 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00058 return mcp->getGeneratorStatus() ;
00059 }
00060 int lcmcpgetsimulatorstatus( PTRTYPE mcparticle ) {
00061 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00062 return mcp->getSimulatorStatus() ;
00063 }
00064 int lcmcpgetvertex( PTRTYPE mcparticle, double* vtx ) {
00065 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00066 for( int i=0 ; i<3 ; *vtx++ = mcp->getVertex()[i++] ) ;
00067 return LCIO::SUCCESS ;
00068 }
00069 float lcmcpgettime( PTRTYPE mcparticle ) {
00070 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00071 return mcp->getTime() ;
00072 }
00073 int lcmcpgetmomentum( PTRTYPE mcparticle, double* p) {
00074 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00075 for( int i=0 ; i<3 ; *p++ = mcp->getMomentum()[i++] ) ;
00076 return LCIO::SUCCESS ;
00077 }
00078 double lcmcpgetmass( PTRTYPE mcparticle ) {
00079 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00080 return mcp->getMass() ;
00081 }
00082 float lcmcpgetcharge( PTRTYPE mcparticle ) {
00083 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00084 return mcp->getCharge() ;
00085 }
00086 double lcmcpgetenergy( PTRTYPE mcparticle ) {
00087 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00088 return mcp->getEnergy() ;
00089 }
00090
00091 int lcmcpaddparent( PTRTYPE mcparticle, PTRTYPE parent ) {
00092 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00093 MCParticle* mom = f2c_pointer<MCParticle,LCObject>( parent ) ;
00094 mcp->addParent( mom ) ;
00095 return LCIO::SUCCESS ;
00096 }
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 int lcmcpsetpdg( PTRTYPE mcparticle, int pdg ) {
00110 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00111 mcp->setPDG( pdg ) ;
00112 return LCIO::SUCCESS ;
00113 }
00114 int lcmcpsetgeneratorstatus( PTRTYPE mcparticle, int status ) {
00115 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00116 mcp->setGeneratorStatus( status ) ;
00117 return LCIO::SUCCESS ;
00118 }
00119 int lcmcpsetsimulatorstatus( PTRTYPE mcparticle, int status ) {
00120 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00121 mcp->setSimulatorStatus( status ) ;
00122 return LCIO::SUCCESS ;
00123 }
00124 int lcmcpsetvertex( PTRTYPE mcparticle, double vtx[3] ) {
00125 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00126 mcp->setVertex( vtx ) ;
00127 return LCIO::SUCCESS ;
00128 }
00129 int lcmcpsetendpoint( PTRTYPE mcparticle, double pnt[3] ) {
00130 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00131 mcp->setEndpoint( pnt ) ;
00132 return LCIO::SUCCESS ;
00133 }
00134 int lcmcpsetmomentum( PTRTYPE mcparticle, float p[3] ){
00135 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00136 mcp->setMomentum( p ) ;
00137 return LCIO::SUCCESS ;
00138 }
00139 int lcmcpsetmass( PTRTYPE mcparticle, float m) {
00140 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00141 mcp->setMass( m ) ;
00142 return LCIO::SUCCESS ;
00143 }
00144 int lcmcpsetcharge( PTRTYPE mcparticle, float c ) {
00145 MCParticleImpl* mcp = f2c_pointer<MCParticleImpl,LCObject>( mcparticle ) ;
00146 mcp->setCharge( c ) ;
00147 return LCIO::SUCCESS ;
00148 }