Commit in lcio/src on v01-07-vtx
cpp/include/CPPFORT/lcvtx.h+58added 1.1.2.1
                   /lcrcp.h+8-11.5 -> 1.5.6.1
cpp/src/CPPFORT/lcvtx.cc+124added 1.1.2.1
               /lcrcp.cc+18-11.4 -> 1.4.6.1
cpp/src/EXAMPLE/recjob.cc+4-11.49.2.2 -> 1.49.2.3
               /testvtx.cc+8-11.1.2.7 -> 1.1.2.8
cpp/src/UTIL/LCTOOLS.cc+26-51.49.4.6 -> 1.49.4.7
            /Operators.cc+29-131.1.2.2 -> 1.1.2.3
f77/lciof77api.inc+18-11.37 -> 1.37.4.1
   /recjob.F+60-41.22 -> 1.22.6.1
   /recjob.inc+21.3 -> 1.3.6.1
+355-27
2 added + 9 modified, total 11 files
added fortran interface for the vertex class
fixed minor bug in UTIL::LCTOOLS.cc and UTIL::Operators.cc
added some parameters to the vertices in recjob.cc for testing

lcio/src/cpp/include/CPPFORT
lcvtx.h added at 1.1.2.1
diff -N lcvtx.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ lcvtx.h	29 Aug 2006 15:00:14 -0000	1.1.2.1
@@ -0,0 +1,58 @@
+/**Header file for the f77-wrapper functions of the Vertex Class.
+ * 
+ * @author engels
+ * @version Aug 28, 2006
+ */
+#include "cfortran.h"
+#include "cpointer.h"
+
+// Warning: dont use "_" in function names as this causes two many
+// trailing underscores on Linux
+
+PTRTYPE lcvtxcreate() ;
+int     lcvtxdelete( PTRTYPE vtx ) ;
+
+int     lcvtxid( PTRTYPE vtx ) ;
+bool    lcvtxisprimary( PTRTYPE vtx ) ;
+float   lcvtxgetchi2( PTRTYPE vtx ) ;
+float   lcvtxgetprobability( PTRTYPE vtx ) ;
+int     lcvtxgetposition( PTRTYPE vtx, float* pos ) ;
+int     lcvtxgetcovmatrix( PTRTYPE vtx, float* cvmtx ) ;
+int     lcvtxgetparameters( PTRTYPE vtx, float* vec, int* nvec ) ;
+PTRTYPE lcvtxgetassociatedparticle( PTRTYPE vtx ) ;
+
+int     lcvtxsetprimary( PTRTYPE vtx, bool pri ) ;
+int     lcvtxsetchi2( PTRTYPE vtx, float chi2 ) ;
+int     lcvtxsetprobability( PTRTYPE vtx, float prob ) ;
+int     lcvtxsetposition( PTRTYPE vtx, float* pos ) ;
+int     lcvtxsetcovmatrix( PTRTYPE vtx, float* cvmtx ) ;
+int     lcvtxaddparameter( PTRTYPE vtx, float param ) ;
+int     lcvtxsetassociatedparticle( PTRTYPE vtx, PTRTYPE rcp ) ;
+
+
+// now the fortran wrappers from cfortran.h
+extern "C"{
+  
+FCALLSCFUN0(CFORTRANPNTR, lcvtxcreate, LCVTXCREATE, lcvtxcreate ) 
+FCALLSCFUN1(INT, lcvtxdelete, LCVTXDELETE, lcvtxdelete, CFORTRANPNTR ) 
+
+FCALLSCFUN1(INT, lcvtxid, LCVTXID, lcvtxid, CFORTRANPNTR) 
+FCALLSCFUN1(LOGICAL, lcvtxisprimary, LCVTXISPRIMARY, lcvtxisprimary, CFORTRANPNTR) 
+FCALLSCFUN1(FLOAT, lcvtxgetchi2, LCVTXGETCHI2, lcvtxgetchi2, CFORTRANPNTR) 
+FCALLSCFUN1(FLOAT, lcvtxgetprobability, LCVTXGETPROBABILITY, lcvtxgetprobability, CFORTRANPNTR) 
+FCALLSCFUN2(INT, lcvtxgetposition, LCVTXGETPOSITION, lcvtxgetposition, CFORTRANPNTR, FLOATV) 
+FCALLSCFUN2(INT, lcvtxgetcovmatrix, LCVTXGETCOVMATRIX, lcvtxgetcovmatrix, CFORTRANPNTR, FLOATV) 
+FCALLSCFUN3(INT, lcvtxgetparameters, LCVTXGETPARAMETERS, lcvtxgetparameters, CFORTRANPNTR, FLOATV, INTV)
+FCALLSCFUN1(CFORTRANPNTR, lcvtxgetassociatedparticle,  LCVTXGETASSOCIATEDPARTICLE, lcvtxgetassociatedparticle, CFORTRANPNTR) 
+
+// FCALLSCFUN2(INT, lcvtxsetprimary, LCVTXSETPRIMARY, lcvtxsetprimary, CFORTRANPNTR, LOGICAL) 
+FCALLSCFUN2(INT, lcvtxsetchi2, LCVTXSETCHI2, lcvtxsetchi2, CFORTRANPNTR, FLOAT) 
+FCALLSCFUN2(INT, lcvtxsetprobability, LCVTXSETPROBABILITY, lcvtxsetprobability, CFORTRANPNTR, FLOAT) 
+FCALLSCFUN2(INT, lcvtxsetposition, LCVTXSETPOSITION, lcvtxsetposition, CFORTRANPNTR, FLOATV) 
+FCALLSCFUN2(INT, lcvtxsetcovmatrix, LCVTXSETCOVMATRIX, lcvtxsetcovmatrix, CFORTRANPNTR, FLOATV) 
+FCALLSCFUN2(INT, lcvtxaddparameter, LCVTXADDPARAMETER, lcvtxaddparameter, CFORTRANPNTR, FLOAT)
+FCALLSCFUN2(INT, lcvtxsetassociatedparticle, LCVTXSETASSOCIATEDPARTICLE, lcvtxsetassociatedparticle, CFORTRANPNTR, CFORTRANPNTR ) 
+
+}
+  
+           

lcio/src/cpp/include/CPPFORT
lcrcp.h 1.5 -> 1.5.6.1
diff -u -r1.5 -r1.5.6.1
--- lcrcp.h	15 Apr 2005 08:37:34 -0000	1.5
+++ lcrcp.h	29 Aug 2006 15:00:13 -0000	1.5.6.1
@@ -31,6 +31,9 @@
 // int     lcrcpgettrackweights( PTRTYPE rcp, float* weights, int* nweights ) ;
 // PTRTYPE lcrcpgetmcparticles( PTRTYPE rcp ) ;
 // int     lcrcpgetmcparticleweights( PTRTYPE rcp, float* weights, int* nweights ) ;
+PTRTYPE lcrcpgetstartvertex( PTRTYPE rcp ) ;
+PTRTYPE lcrcpgetendvertex( PTRTYPE rcp ) ;
+
 
 int     lcrcpsettype( PTRTYPE rcp, int type ) ;
 int     lcrcpsetcompound( PTRTYPE rcp, bool lcompound ) ;
@@ -46,6 +49,7 @@
 int     lcrcpaddcluster( PTRTYPE rcp, PTRTYPE clus ) ;
 int     lcrcpaddtrack( PTRTYPE rcp, PTRTYPE track) ;
 // int     lcrcpaddmcparticle( PTRTYPE rcp, PTRTYPE mcp, float weigth ) ;
+int     lcrcpsetstartvertex( PTRTYPE rcp, PTRTYPE vtx ) ;
                                                   
 
 // now the fortran wrappers from cfortran.h
@@ -74,6 +78,9 @@
 // FCALLSCFUN1(CFORTRANPNTR, lcrcpgetmcparticles, LCRCPGETMCPARTICLES, lcrcpgetmcparticles, CFORTRANPNTR) 
 // FCALLSCFUN3(INT, lcrcpgetmcparticleweights, LCRCPGETMCPARTICLEWEIGHTS, lcrcpgetmcparticleweights, 
 //             CFORTRANPNTR, FLOATV, INTV) 
+FCALLSCFUN1(CFORTRANPNTR, lcrcpgetstartvertex,  LCRCPGETSTARTVERTEX, lcrcpgetstartvertex, CFORTRANPNTR)
+FCALLSCFUN1(CFORTRANPNTR, lcrcpgetendvertex,  LCRCPGETENDVERTEX, lcrcpgetendvertex, CFORTRANPNTR)
+
 
 FCALLSCFUN2(INT, lcrcpsettype, LCRCPSETTYPE, lcrcpsettype, CFORTRANPNTR, INT) 
 // FCALLSCFUN2(INT, lcrcpsetcompound, LCRCPSETCOMPOUND, lcrcpsetcompound, CFORTRANPNTR, LOGICAL) 
@@ -90,7 +97,7 @@
 FCALLSCFUN2(INT, lcrcpaddcluster, LCRCPADDCLUSTER, lcrcpaddcluster, CFORTRANPNTR, CFORTRANPNTR) 
 FCALLSCFUN2(INT, lcrcpaddtrack, LCRCPADDTRACK, lcrcpaddtrack, CFORTRANPNTR, CFORTRANPNTR) 
 // FCALLSCFUN3(INT, lcrcpaddmcparticle, LCRCPADDMCPARTICLE, lcrcpaddmcparticle, CFORTRANPNTR, CFORTRANPNTR, FLOAT) 
-
+FCALLSCFUN2(INT, lcrcpsetstartvertex, LCRCPSETSTARTVERTEX, lcrcpsetstartvertex, CFORTRANPNTR, CFORTRANPNTR )
 }
   
            

lcio/src/cpp/src/CPPFORT
lcvtx.cc added at 1.1.2.1
diff -N lcvtx.cc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ lcvtx.cc	29 Aug 2006 15:00:15 -0000	1.1.2.1
@@ -0,0 +1,124 @@
+#include "CPPFORT/lcvtx.h"
+
+#include "lcio.h" 
+#include "IMPL/VertexImpl.h"
+#include "IMPL/ReconstructedParticleImpl.h"
+
+using namespace lcio ;
+
+#include <iostream>
+
+// create delete Vertex
+
+PTRTYPE lcvtxcreate(){
+  VertexImpl* vtx = new VertexImpl ;
+  return C2F_POINTER( LCObject*, vtx ) ;
+}
+int lcvtxdelete( PTRTYPE vertex ){
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  delete vtx ;
+  return LCIO::SUCCESS ;
+}
+
+
+// get Methods
+
+int lcvtxid( PTRTYPE vertex ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  return vtx->id() ;
+}
+
+bool lcvtxisprimary ( PTRTYPE vertex ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  return vtx->isPrimary() ;
+}
+
+float lcvtxgetchi2( PTRTYPE vertex ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  return vtx->getChi2() ;
+}
+
+float lcvtxgetprobability( PTRTYPE vertex ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  return vtx->getProbability() ;
+}
+
+int lcvtxgetposition( PTRTYPE vertex, float pos[3] ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  for( int i=0 ; i<3 ;  *pos++ = vtx->getPosition()[i++]  ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxgetcovmatrix( PTRTYPE vertex, float cvmtx[VTXCOVMATRIX] )  {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  for( int i=0 ; i<VTXCOVMATRIX ;  cvmtx[i] = vtx->getCovMatrix()[i++]  ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxgetparameters( PTRTYPE vertex, float* vec, int* nvec ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  int ntot = *nvec - 1 ;
+  const FloatVec* floatVec = &vtx->getParameters() ;
+  for(unsigned int l=0; l < floatVec->size(); l++){
+    if ( l > (unsigned)(ntot) ) {
+      std::cout << "LCVertex: in getParameters more than " << ntot << "parameters to store" << std::endl ;
+      return LCIO::ERROR ;
+    }
+    *vec++ = (*floatVec)[l] ;
+  }
+  *nvec = (int)(floatVec->size() + 1);
+  return LCIO::SUCCESS ;
+}
+
+PTRTYPE lcvtxgetassociatedparticle( PTRTYPE vertex ) {
+  Vertex* vtx = f2c_pointer<Vertex,LCObject>( vertex ) ;
+  ReconstructedParticle* recP = vtx->getAssociatedParticle();
+  return reinterpret_cast<PTRTYPE>( recP );
+}
+
+
+// set,add Methods
+
+// int lcvtxsetprimary( PTRTYPE vertex, bool pri ) {
+//   VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+//   vtx->setPrimary( pri ) ;
+//   return LCIO::SUCCESS ;
+// }
+
+int lcvtxsetchi2( PTRTYPE vertex, float chi2 ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  vtx->setChi2( chi2 ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxsetprobability( PTRTYPE vertex, float probability ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  vtx->setProbability( probability ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxsetposition( PTRTYPE vertex, float pos[3] ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  vtx->setPosition( pos ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxsetcovmatrix( PTRTYPE vertex, float cvmtx[VTXCOVMATRIX] ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  vtx->setCovMatrix( cvmtx ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxaddparameter( PTRTYPE vertex, float param) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  vtx->addParameter( param ) ;
+  return LCIO::SUCCESS ;
+}
+
+int lcvtxsetassociatedparticle( PTRTYPE vertex, PTRTYPE particle ) {
+  VertexImpl* vtx = f2c_pointer<VertexImpl,LCObject>( vertex ) ;
+  ReconstructedParticle* rcp = f2c_pointer<ReconstructedParticle,LCObject>( particle ) ;
+  vtx->setAssociatedParticle( rcp ) ;
+  return LCIO::SUCCESS ;
+}
+

lcio/src/cpp/src/CPPFORT
lcrcp.cc 1.4 -> 1.4.6.1
diff -u -r1.4 -r1.4.6.1
--- lcrcp.cc	22 Sep 2004 20:58:35 -0000	1.4
+++ lcrcp.cc	29 Aug 2006 15:00:15 -0000	1.4.6.1
@@ -2,6 +2,7 @@
 
 #include "lcio.h" 
 #include "IMPL/ReconstructedParticleImpl.h"
+#include "IMPL/VertexImpl.h"
 
 using namespace lcio ;
 
@@ -166,6 +167,17 @@
 //   *nweights = (int)(rcp->getMCParticles().size() + 1);
 //   return LCIO::SUCCESS ;
 // }
+PTRTYPE lcrcpgetstartvertex( PTRTYPE recopart ) {
+  ReconstructedParticle* rcp = f2c_pointer<ReconstructedParticle,LCObject>( recopart ) ;
+  Vertex* vtx = rcp->getStartVertex();
+  return reinterpret_cast<PTRTYPE>( vtx );
+}
+
+PTRTYPE lcrcpgetendvertex( PTRTYPE recopart ) {
+  ReconstructedParticle* rcp = f2c_pointer<ReconstructedParticle,LCObject>( recopart ) ;
+  Vertex* vtx = rcp->getEndVertex();
+  return reinterpret_cast<PTRTYPE>( vtx );
+}
 
 
 // set,add Methods
@@ -259,5 +271,10 @@
 //   return LCIO::SUCCESS ;
 // }
 
-
+int lcrcpsetstartvertex( PTRTYPE recopart, PTRTYPE vertex ) {
+  ReconstructedParticleImpl* rcp = f2c_pointer<ReconstructedParticleImpl,LCObject>( recopart ) ;
+  Vertex* vtx = f2c_pointer<Vertex,LCObject>( vertex ) ;
+  rcp->setStartVertex( vtx ) ;
+  return LCIO::SUCCESS ;
+}
 

lcio/src/cpp/src/EXAMPLE
recjob.cc 1.49.2.2 -> 1.49.2.3
diff -u -r1.49.2.2 -r1.49.2.3
--- recjob.cc	24 Aug 2006 16:15:49 -0000	1.49.2.2
+++ recjob.cc	29 Aug 2006 15:00:15 -0000	1.49.2.3
@@ -493,8 +493,11 @@
       cov[4] = 5. ;
       cov[5] = 6. ;
       vtx->setCovMatrix( cov ) ;
+      for(int j=0;j<3;j++){
+        vtx->addParameter( j*.1 ) ;
+      }
+      
       vertexVec->addElement ( vtx ) ;
-
     }
 
     evt->addCollection( vertexVec, "SomeVertices" ) ;

lcio/src/cpp/src/EXAMPLE
testvtx.cc 1.1.2.7 -> 1.1.2.8
diff -u -r1.1.2.7 -r1.1.2.8
--- testvtx.cc	25 Aug 2006 07:48:21 -0000	1.1.2.7
+++ testvtx.cc	29 Aug 2006 15:00:18 -0000	1.1.2.8
@@ -46,6 +46,11 @@
       cov[5] = 6. ;
 
       vtx->setCovMatrix( cov ) ;
+
+      vtx->addParameter(.01);
+      vtx->addParameter(.02);
+      vtx->addParameter(.03);
+      
       
       //Vertex* v=vtx;
       //cout<<lcshort(v);
@@ -58,7 +63,9 @@
   //cout<<tail(&VertexImpl());
  
   //gives a warnig...
-  cout<<&IMPL::VertexImpl()<<endl;
+  //cout<<&IMPL::VertexImpl()<<endl;
+  
+  cout << dynamic_cast<Vertex*>(vertexVec->getElementAt(0)) << endl;
   
   LCTOOLS::printVertices( vertexVec  ) ;
 

lcio/src/cpp/src/UTIL
LCTOOLS.cc 1.49.4.6 -> 1.49.4.7
diff -u -r1.49.4.6 -r1.49.4.7
--- LCTOOLS.cc	28 Aug 2006 14:02:48 -0000	1.49.4.6
+++ LCTOOLS.cc	29 Aug 2006 15:00:18 -0000	1.49.4.7
@@ -1201,9 +1201,9 @@
     int nPrint = nReconstructedParticles > MAX_HITS ? MAX_HITS : nReconstructedParticles ;
     
     std::cout << endl
-	      << " [   id   ] |com|type|     momentum( px,py,pz)         | energy   | mass     | charge    |          position ( x,y,z)       | [pidUsed] | [startVtx] | [endVtx] "
+	      << " [   id   ] |com|type|     momentum( px,py,pz)         | energy   | mass     | charge    |          position ( x,y,z)       | [pidUsed] "
 	      << endl	      
-	      << "  ----------|---|----|---------------------------------|----------|----------|-----------|----------------------------------|-----------|------------|----------"
+	      << "  ----------|---|----|---------------------------------|----------|----------|-----------|----------------------------------|-----------"
 	      << endl ;
     
     for( int i=0 ; i< nPrint ; i++ ){
@@ -1225,7 +1225,7 @@
       if(  recP->getParticleIDUsed() != 0 ) 
 	pidUsed  = recP->getParticleIDUsed()->id() ;
       
-      printf(" [%8.8x] | %1d | %2d | (%5.3e,%5.3e,%5.3e) | %4.2e | %4.2e | %4.2e | (%5.3e,%5.3e,%5.3e) | [%8.8x] | [%8.8x] | [%8.8x]\n"
+      printf(" [%8.8x] | %1d | %2d | (%5.3e,%5.3e,%5.3e) | %4.2e | %4.2e | %4.2e | (%5.3e,%5.3e,%5.3e) | [%8.8x]\n"
 	     //	     , reinterpret_cast<int> ( recP )
 	     , recP->id()
 	     , compound
@@ -1240,8 +1240,8 @@
 	     , recP->getReferencePoint()[1] 
 	     , recP->getReferencePoint()[2] 
 	     , pidUsed
-	     , (recP->getStartVertex()!=NULL?recP->getStartVertex()->id():0)
-	     , (recP->getEndVertex()!=NULL?recP->getEndVertex()->id():0)
+	     //, (recP->getStartVertex()!=NULL?recP->getStartVertex()->id():0)
+	     //, (recP->getEndVertex()!=NULL?recP->getEndVertex()->id():0)
 	     ) ;
       cout << "    covariance( px,py,pz,E) : (" ;
       for(int l=0;l<10;l++){
@@ -1273,6 +1273,27 @@
 	printf("[%8.8x], %6.6d, (%6.6d)  ",  pid->id() , pid->getPDG() , pid->getType() ) ;
       }
       cout << endl ;
+      
+      Vertex* sv = dynamic_cast<Vertex*>(recP->getStartVertex());
+      Vertex* ev = dynamic_cast<Vertex*>(recP->getEndVertex());
+      ReconstructedParticle* svr=0;
+      ReconstructedParticle* evr=0;
+      
+      if(sv!=0){
+         svr = dynamic_cast<ReconstructedParticle*>(sv->getAssociatedParticle());
+      }
+      if(ev!=0){
+         evr = dynamic_cast<ReconstructedParticle*>(ev->getAssociatedParticle());
+      }
+      
+      printf("    vertices: startVertex( id:[%8.8x], id_aRP:[%8.8x] )   endVertex( id:[%8.8x], id_aRP:[%8.8x] ) "
+        , ( sv != 0 ? sv->id() : 0 )
+        , ((sv != 0 && svr != 0) ? svr->id() : 0 )
+        , ( ev != 0 ? ev->id() : 0 )
+        , ((ev != 0 && evr != 0) ? evr->id() : 0 )
+      ) ;
+     
+      cout << endl ;
 
 //       cout << "    MCParticles ( [   id   ] (weight) ): " ;
 //       for(unsigned int l=0;l<recP->getMCParticles().size();l++){

lcio/src/cpp/src/UTIL
Operators.cc 1.1.2.2 -> 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- Operators.cc	28 Aug 2006 13:32:33 -0000	1.1.2.2
+++ Operators.cc	29 Aug 2006 15:00:21 -0000	1.1.2.3
@@ -9,16 +9,19 @@
 namespace UTIL{
 
   std::ostream& operator<<( std::ostream& out, const UTIL::lcio_short<EVENT::Vertex>& sV){
-    const EVENT::Vertex* v=sV.obj;                                                                                                                                                         
-    out << " [" << setfill('0') << setw(8) << hex << v->id() << "] | " << v->isPrimary()<< " | ";
+    const EVENT::Vertex* v=sV.obj;
+    
+    out << setfill('0');
+    out << " [" << setw(8) << hex << v->id() << "] | " << v->isPrimary()<< " | ";
     out << scientific << setprecision(3) << v->getChi2() << " | " << v->getProbability() << " | " <<
-	v->getPosition()[0] << ", " <<
-        v->getPosition()[1] << ", " <<
+	v->getPosition()[0] << "," <<
+        v->getPosition()[1] << "," <<
         v->getPosition()[2] << " | " ;
                                                                                                                                                              
     for(int i=0;i<VTXCOVMATRIX;i++)
-      out << v->getCovMatrix()[i] << (i<(VTXCOVMATRIX-1)?", ":" | [");
-    out << setfill('0') << setw(8) << hex << (v->getAssociatedParticle()!=NULL?v->getAssociatedParticle()->id():0) << "]\n";
+      out << v->getCovMatrix()[i] << (i<(VTXCOVMATRIX-1)?",":" | [");
+    out << setw(3) << v->getParameters().size() << "] | [";
+    out << setw(8) << hex << (v->getAssociatedParticle()!=NULL?v->getAssociatedParticle()->id():0) << "]\n";
     
     return out;
                                                                                                                                                              
@@ -26,7 +29,8 @@
  
   std::ostream& operator<<( std::ostream& out, const EVENT::Vertex* v){
     
-    out << "Vertex ID:\t\t[" << setfill('0') << setw(8) << hex << v->id() << "]" << endl;
+    out << setfill('0');
+    out << "Vertex ID:\t\t[" << setw(8) << hex << v->id() << "]" << endl;
     out << "Is Primary Vertex:\t" << (v->isPrimary() ? "true":"false") << endl;
     out << scientific << setprecision(5);
     out << "Chi2:\t\t\t" << v->getChi2() << endl;
@@ -37,10 +41,22 @@
 	v->getPosition()[2] << endl;
     
     out << "Covariance Matrix:\t";
-    for(int i=0;i<VTXCOVMATRIX;i++)
+    for(int i=0; i<VTXCOVMATRIX; i++)
       out << v->getCovMatrix()[i] << (i<(VTXCOVMATRIX-1)?", ":"\n");
+    
+    out << "Parameters:";
+    if(v->getParameters().size()==0){
+      out << "\t\t[Empty]" << endl;
+    }
+    else { out << endl; }
+    for(unsigned int i=0; i < v->getParameters().size(); i++){
+      out << "   Parameter [";
+      out << setw(3) << i << "]:\t";
+      out << scientific << setprecision(5) << v->getParameters()[i] << endl;
+    }
+    
     out << "Associated Reconstructed Particle ID:\t["; 
-    out << setfill('0') << setw(8) << hex << (v->getAssociatedParticle()!=NULL?v->getAssociatedParticle()->id():0) <<"]\n\n";
+    out << setw(8) << hex << (v->getAssociatedParticle()!=NULL?v->getAssociatedParticle()->id():0) <<"]\n\n";
    
     return out;
   }
@@ -74,8 +90,8 @@
   const std::string& header(const EVENT::Vertex* v){
     
     static std::string _vtxh(
-      "\n    [id]    |pri|    chi2   |    prob.  |       position ( x, y, z)       |"
-	"                   covariance matrix (px, py, pz)                 |  [idRecP]  \n");
+      "\n    [id]    |pri|    chi2   |    prob.  |      position ( x, y, z)      |"
+	"                 covariance matrix (px, py, pz)              | [par] |  [idRecP]  \n");
     _vtxh+=tail(new IMPL::VertexImpl());
     return _vtxh;
   }
@@ -83,8 +99,8 @@
   const std::string& tail(const EVENT::Vertex* v){
     
     static std::string _vtxt(
-	"------------|---|-----------|-----------|---------------------------------|"
-	"------------------------------------------------------------------|------------\n");
+	"------------|---|-----------|-----------|-------------------------------|"
+	"-------------------------------------------------------------|-------|------------\n");
     return _vtxt;
   }
 

lcio/src/f77
lciof77api.inc 1.37 -> 1.37.4.1
diff -u -r1.37 -r1.37.4.1
--- lciof77api.inc	24 Mar 2006 14:05:43 -0000	1.37
+++ lciof77api.inc	29 Aug 2006 15:00:22 -0000	1.37.4.1
@@ -12,7 +12,7 @@
 *  H. Vogt
 *  05/06/2004  (reconstruction part added)
 *
-*  $Id: lciof77api.inc,v 1.37 2006/03/24 14:05:43 gaede Exp $
+*  $Id: lciof77api.inc,v 1.37.4.1 2006/08/29 15:00:22 engels Exp $
 ***************************************************
 
 #include "lciof77pointer.inc"
@@ -205,13 +205,28 @@
       real    lcrcpgetenergy, lcrcpgetmass, lcrcpgetcharge
       PTRTYPE lcrcpgetparticleids, lcrcpgetparticles
       PTRTYPE lcrcpgetclusters, lcrcpgettracks
+      PTRTYPE lcrcpgetstartvertex, lcrcpgetendvertex
 
       integer lcrcpsettype, lcrcpsetmomentum, lcrcpsetenergy
       integer lcrcpsetcovmatrix, lcrcpsetmass, lcrcpsetcharge
       integer lcrcpsetreferencepoint, lcrcpsetgoodnessofpid
+      integer lcrcpsetstartvertex
       integer lcrcpaddparticleid
       integer lcrcpaddparticle, lcrcpaddcluster, lcrcpaddtrack
 
+c-----the Vertex interface
+      PTRTYPE lcvtxcreate 
+      integer lcvtxdelete, lcvtxid
+
+      logical lcvtxisprimary
+      integer lcvtxgetposition, lcvtxgetcovmatrix, lcvtxgetparameters
+      real    lcvtxgetchi2, lcvtxgetprobability
+      PTRTYPE lcvtxgetassociatedparticle
+
+      integer lcvtxsetprimary, lcvtxsetchi2, lcvtxsetprobability
+      integer lcvtxsetposition, lcvtxsetcovmatrix, lcvtxaddparameter
+      integer lcvtxsetassociatedparticle
+
 c-----the TrackerHit interface
       PTRTYPE lctrhcreate, lctrhgetrawhits
       integer lctrhdelete, lctrhid, lctrhgetposition, lctrhgetcovmatrix
@@ -294,6 +309,7 @@
       character*32 LCIO_TRACK
       character*32 LCIO_CLUSTER
       character*32 LCIO_RECONSTRUCTEDPARTICLE
+      character*32 LCIO_VERTEX
       character*32 LCIO_LCRELATION
       character*32 LCIO_LCGENERICOBJECT
 
@@ -313,6 +329,7 @@
       data LCIO_TRACK /'Track'/
       data LCIO_CLUSTER /'Cluster'/
       data LCIO_RECONSTRUCTEDPARTICLE /'ReconstructedParticle'/
+      data LCIO_VERTEX /'Vertex'/
       data LCIO_LCRELATION /'LCRelation'/
       data LCIO_LCGENERICOBJECT /'LCGenericObject'/
 

lcio/src/f77
recjob.F 1.22 -> 1.22.6.1
diff -u -r1.22 -r1.22.6.1
--- recjob.F	24 Sep 2004 10:54:58 -0000	1.22
+++ recjob.F	29 Aug 2006 15:00:23 -0000	1.22.6.1
@@ -161,7 +161,10 @@
 ***   create some clusters and add them to the event
       call clusters
 
-***   add some reconstructed particles
+***   add some vertices
+      call vertices
+      
+**   add some reconstructed particles
       call reco_particles
 
       end
@@ -565,6 +568,53 @@
 
 **********************************************************************
 *                                                                    *
+      subroutine vertices                                           !*
+*                                                                    *
+**********************************************************************
+
+      implicit none
+
+#include "recjob.inc"
+
+      PTRTYPE helpp, clusp
+      integer i, j, k
+      real    cov(6), pos(3)
+      character*30 colname
+
+      integer   nvtx
+      parameter (nvtx=11)
+
+***   add some vertices
+      vtxcol = lccolcreate (  LCIO_VERTEX )
+      do  i = 1, nvtx
+        vtx  =  lcvtxcreate ()
+c        status   =  lcvtxsetprimary ( vtxv, .true. )
+        status   =  lcvtxsetchi2 ( vtx, (i-1)*101.101 )
+        status   =  lcvtxsetprobability ( vtx, 0.511*(i-1) )
+        do  j = 1, 6
+          cov(j) = j
+        end do
+        status   =  lcvtxsetcovmatrix ( vtx, cov )
+        pos(1)  =  10.
+        pos(2)  =  20.
+        pos(3)  =  30.
+        status   =  lcvtxsetposition ( vtx, pos )
+        do  j = 1, 3
+          status   = lcvtxaddparameter ( vtx, (j-1)*.1 )
+        end do
+
+***     add this vertex to collection
+        status  =  lccoladdelement ( vtxcol, vtx )
+        
+      end do
+      colname  =  'Vertices'
+      status   =  lcevtaddcollection ( eventi, vtxcol, colname )
+*
+      end
+
+
+**********************************************************************
+*                                                                    *
       subroutine reco_particles                                     !*
 *                                                                    *
 **********************************************************************
@@ -579,7 +629,7 @@
       integer i, j, k
       integer ihit1, ihit2, ihit3, npid, itrk, iclu, imcp
       real    mom(3), cov(10), refp(3), prob
-      character*30 colname1, colname2
+      character*30 colname
       double precision dpos(3), dhelp
 
       integer   nreccp
@@ -607,6 +657,12 @@
         refp(3)  =  30.
         status   =  lcrcpsetreferencepoint (recopp, refp )
 
+***     associate vertices
+        vtx    =  lccolgetelementat ( vtxcol , i )
+        status   =  lcrcpsetstartvertex ( recopp, vtx )
+        vtx    =  lccolgetelementat ( vtxcol , i + 1 )
+        status   =  lcvtxsetassociatedparticle ( vtx , recopp )
+
 ***     add some particle ids
         npid = 5
         do  j = 1, npid
@@ -658,8 +714,8 @@
         status  =  lccoladdelement ( recopcol, recopp )
         
       end do
-      colname2 =  'ReconstructedParticle'
-      status   =  lcevtaddcollection ( eventi, recopcol, colname2 )
+      colname  =  'ReconstructedParticle'
+      status   =  lcevtaddcollection ( eventi, recopcol, colname )
 *
       end
 

lcio/src/f77
recjob.inc 1.3 -> 1.3.6.1
diff -u -r1.3 -r1.3.6.1
--- recjob.inc	21 Sep 2004 15:44:50 -0000	1.3
+++ recjob.inc	29 Aug 2006 15:00:24 -0000	1.3.6.1
@@ -12,6 +12,7 @@
       PTRTYPE tpchitcol, trackerhitcol, trhitp, tpchit, trackcol, trkp
       PTRTYPE simcalcol, cluscol, calhitcol, simcalhitp, calhitp
       PTRTYPE recopcol, recopp, pidp, recopp1, recopp2
+      PTRTYPE vtxcol, vtx
 
 ***   temporary pointers used in several routines
       PTRTYPE screlp, screlcol
@@ -23,6 +24,7 @@
      &,       tpchitcol, trackerhitcol, trhitp, tpchit, trackcol, trkp
      &,       simcalcol, cluscol, calhitcol, simcalhitp, calhitp
      &,       recopcol, recopp, pidp, recopp1, recopp2
+     &,       vtxcol, vtx
      &,       ievent
 
       integer status, ievent
CVSspam 0.2.8