ATLAS Offline Software
Loading...
Searching...
No Matches
NavFourMom/NavFourMom/IParticleLinkContainer.h
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5*/
6
12
13#ifndef NAVFOURMOM_IPARTICLELINKCONTAINER_H
14#define NAVFOURMOM_IPARTICLELINKCONTAINER_H 1
15
16// STL includes
17#include <vector>
18
19#include "AthLinks/ElementLink.h"
24
25// This defines the new container
26class IParticleLinkContainer : public std::vector< IParticleLink >
27{
28};
29
30// This defines the ID which is used by StoreGate
31CLASS_DEF( IParticleLinkContainer , 1340008338 , 1 )
32
33
34
35
36// This defines how to convert an INav4MomLinkContainer to an INavigable4MomentumCollection
38 : public SG::CopyConversion<IParticleLinkContainer,
40{
41public:
42 virtual void convert ( const IParticleLinkContainer& src,
43 IParticleContainer& dst ) const
44 {
45 size_t sz = src.size();
46 if (dst.size() != sz) {
48 dst.reserve (sz);
49 for (size_t i = 0; i < sz; i++) {
50 const IParticle* p = *(src[i]).cptr();
51 // FIXME: Ok, since the target ends up recorded in the event
52 // store as const. But should change the interfaces so that
53 // we get a ConstDataVector to fill.
54 IParticle* p_nc ATLAS_THREAD_SAFE = const_cast<IParticle*> (p);
55 dst.push_back (p_nc);
56 }
57 }
58 }
59};
60
61// This tells StoreGate about the conversion
63
64
65#endif // NAVFOURMOM_IPARTICLELINKCONTAINER_H
66
#define SG_ADD_COPY_CONVERSION(D, C)
Declare a copy conversion from class T using converter C.
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
static Double_t sz
DataVector< IParticle > IParticleContainer
#define ATLAS_THREAD_SAFE
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
void clear()
Erase all the elements in the collection.
virtual void convert(const IParticleLinkContainer &src, IParticleContainer &dst) const
Convert the contents of an instance of the source class SRC to an instance of the destination class D...
Forward declaration.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts