4 #include "EVENT/LCIO.h"
10 #include <sio/io_device.h>
11 #include <sio/version.h>
25 SIO_DATA( device , &type , 1 ) ;
26 trk->setType( type ) ;
28 int nTrackStates = 1 ;
29 if( vers >= SIO_VERSION_ENCODE( 2, 0 ) ) {
30 SIO_DATA( device , &nTrackStates , 1 ) ;
32 for(
int i=0 ; i<nTrackStates ; i++ ) {
35 if( vers >= SIO_VERSION_ENCODE( 2, 0 ) ) {
36 SIO_DATA( device , &(trackstate->_location) , 1 ) ;
38 SIO_DATA( device , &(trackstate->_d0) , 1 ) ;
39 SIO_DATA( device , &(trackstate->_phi) , 1 ) ;
40 SIO_DATA( device , &(trackstate->_omega) , 1 ) ;
41 SIO_DATA( device , &(trackstate->_z0) , 1 ) ;
42 SIO_DATA( device , &(trackstate->_tanLambda) , 1 ) ;
44 SIO_DATA( device , cov , 15 ) ;
45 trackstate->setCovMatrix( cov ) ;
46 SIO_DATA( device , trackstate->_reference , 3 ) ;
47 trk->addTrackState( trackstate );
49 SIO_DATA( device , &(trk->_chi2) , 1 ) ;
50 SIO_DATA( device , &(trk->_ndf) , 1 ) ;
51 SIO_DATA( device , &(trk->_dEdx) , 1 ) ;
52 SIO_DATA( device , &(trk->_dEdxError) , 1 ) ;
53 SIO_DATA( device , &( trk->_radiusOfInnermostHit ) , 1 ) ;
55 SIO_DATA( device, &nHitNumbers , 1 ) ;
56 trk->subdetectorHitNumbers().resize( nHitNumbers ) ;
57 for(
int i=0 ; i<nHitNumbers ; i++ ) {
58 SIO_DATA( device , &(trk->_subdetectorHitNumbers[i] ), 1 ) ;
61 SIO_DATA( device, &nTracks , 1 ) ;
62 trk->_tracks.resize( nTracks ) ;
63 for(
int i=0 ; i<nTracks ; i++ ) {
64 SIO_PNTR( device , &(trk->_tracks[i] ) ) ;
68 SIO_DATA( device, &nHits , 1 ) ;
69 trk->_hits.resize( nHits) ;
70 for(
int i=0 ; i<nHits ; i++ ) {
71 SIO_PNTR( device , &(trk->_hits[i] ) ) ;
75 SIO_PTAG( device , dynamic_cast<const EVENT::Track*>(trk) ) ;
82 SIO_SDATA( device, trk->getType() ) ;
84 int nTrackStates = trackstates.
size() ;
85 SIO_DATA( device, &nTrackStates , 1 ) ;
86 for(
unsigned int i=0; i<trackstates.size() ; i++ ) {
87 SIO_SDATA( device, trk->getTrackStates()[i]->getLocation() ) ;
88 SIO_SDATA( device, trk->getTrackStates()[i]->getD0() ) ;
89 SIO_SDATA( device, trk->getTrackStates()[i]->getPhi() ) ;
90 SIO_SDATA( device, trk->getTrackStates()[i]->getOmega() ) ;
91 SIO_SDATA( device, trk->getTrackStates()[i]->getZ0() ) ;
92 SIO_SDATA( device, trk->getTrackStates()[i]->getTanLambda() ) ;
93 auto cov = trk->getTrackStates()[i]->getCovMatrix() ;
94 for(
unsigned int j=0; j<cov.size() ; j++ ) {
95 SIO_SDATA( device, cov[j] ) ;
97 SIO_DATA( device, trk->getTrackStates()[i]->getReferencePoint() , 3 ) ;
99 SIO_SDATA( device, trk->getChi2() ) ;
100 SIO_SDATA( device, trk->getNdf() ) ;
101 SIO_SDATA( device, trk->getdEdx() ) ;
102 SIO_SDATA( device, trk->getdEdxError() ) ;
103 SIO_SDATA( device , trk->getRadiusOfInnermostHit() ) ;
104 auto hitNums = trk->getSubdetectorHitNumbers() ;
105 int nHitNumbers = hitNums.size() ;
106 SIO_DATA( device, &nHitNumbers , 1 ) ;
107 for(
int i=0 ; i<nHitNumbers ; i++ ) {
108 SIO_SDATA( device , hitNums[i] ) ;
110 auto tracks = trk->getTracks() ;
111 int nTracks = tracks.size() ;
112 SIO_DATA( device, &nTracks , 1 ) ;
113 for(
int i=0 ; i<nTracks ; i++ ) {
114 SIO_PNTR( device , &(tracks[i]) ) ;
117 auto hits = trk->getTrackerHits() ;
118 int nHits = hits.size() ;
119 SIO_DATA( device, &nHits , 1 ) ;
120 for(
int i=0 ; i<nHits ; i++ ) {
121 SIO_PNTR( device , &(hits[i]) ) ;
125 SIO_PTAG( device , trk ) ;
The generic object that is held in an LCCollection.
virtual const TrackStateVec & getTrackStates() const =0
Returns track states associtated to this track.
SIOTrackHandler()
Constructor.
EVENT::LCObject * create() const override
Factory method to create an object of the type of the collection.
void write(sio::write_device &device, const EVENT::LCObject *obj) override
Writes lcio objects to an SIO stream.
Adding stuff needed for io (friend declarations, etc.)
Interface for all lcio object SIO-handlers, has to be implemented for all event entities (hits...
void read(sio::read_device &device, EVENT::LCObject *objP, sio::version_type vers) override
Reads lcio objects from an SIO stream.
unsigned int _flag
The collection flag.
Adding stuff needed for io (friend declarations, etc.)
Implementation of helper class to create and interpret the 32-bit flag word in LCCollections.