22 {
23
24
25
27 pObj = mcParticleCol;
28
30 if ( evt == NULL )
31 {
32
33 return StatusCode::FAILURE;
34 }
35
37 if ( mcParBuf.
nBuf() == 0 )
38 {
39
40 return StatusCode::FAILURE;
41 }
42 uint32_t* buf = mcParBuf( 0 );
43
44 uint32_t nParticle = ( buf[0] >> 16 );
45
46 double* vPointer = (double*)( buf + nParticle * 11 + 1 );
47
48 for ( uint32_t i = 0; i < nParticle; i++ )
49 {
50 McParticle* mcPar = new McParticle;
51 m_mcParticleBuilder.unPack( ( buf + 1 + i * 11 ), vPointer, mcPar );
52 mcParticleCol->push_back( mcPar );
53 }
54
55
56 SmartRefVector<McParticle> primaryParticleCol;
57 McParticleCol::iterator iter_particle = mcParticleCol->begin();
58 for ( ; iter_particle != mcParticleCol->end(); iter_particle++ )
59 {
60 if ( ( *iter_particle )->primaryParticle() )
61 {
62 McParticle* mcPart = (McParticle*)( *iter_particle );
63 primaryParticleCol.push_back( mcPart );
64 }
65 }
66
67 if ( primaryParticleCol.empty() )
68 {
69
70 }
71
72
73 SmartRefVector<McParticle>::iterator iter_primary = primaryParticleCol.begin();
74
75 for ( ; iter_primary != primaryParticleCol.end(); iter_primary++ )
76 {
77
78 if ( !( *iter_primary )->leafParticle() )
addMother( ( *iter_primary ), mcParticleCol );
79 }
80
81 return StatusCode::SUCCESS;
82 }
ObjectList< McParticle > McParticleCol
const BufferHolder & getMcParBuf() const
IRawDataInputSvc * m_inputSvc