ATLAS Offline Software
INav4MomLinkContainer.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5 */
6 
13 #ifndef NAVFOURMOM_INAV4MOMLINKCONTAINER_H
14 #define NAVFOURMOM_INAV4MOMLINKCONTAINER_H 1
15 
16 // STL includes
17 #include <vector>
18 
19 #include "AthLinks/ElementLink.h"
20 #include "AthenaKernel/CLASS_DEF.h"
24 
25 
26 // This defines the new container
27 class INav4MomLinkContainer : public std::vector< INav4MomLink >
28 {
29 };
30 
31 // This defines the ID which is used by StoreGate
32 CLASS_DEF( INav4MomLinkContainer , 1194917823 , 1 )
33 
34 
35 // This defines how to convert an INav4MomLinkContainer to an INavigable4MomentumCollection
37  : public SG::CopyConversion<INav4MomLinkContainer,
39 {
40 public:
41  virtual void convert ( const INav4MomLinkContainer& src,
43  {
44  size_t sz = src.size();
45  if (dst.size() != sz) {
47  dst.reserve (sz);
48  for (size_t i = 0; i < sz; i++) {
49  const INavigable4Momentum* p = *(src[i]).cptr();
50  // FIXME: Ok, since the target ends up recorded in the event
51  // store as const. But should change the interfaces so that
52  // we get a ConstDataVector to fill.
54  dst.push_back (p_nc);
55  }
56  }
57  }
58 };
59 
60 // This tells StoreGate about the conversion
62 
63 
64 #endif // NAVFOURMOM_INAV4MOMLINKCONTAINER_H
65 
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
fitman.sz
sz
Definition: fitman.py:527
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
INavigable4Momentum.h
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
lumiFormat.i
int i
Definition: lumiFormat.py:85
INavigable4MomentumCollection.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
INav4MomLinkContainerToINavigable4MomentumCollectionConverter
Definition: INav4MomLinkContainer.h:39
DataVector::clear
void clear()
Erase all the elements in the collection.
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
INavigable4Momentum
Definition: INavigable4Momentum.h:21
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:64
ATLAS_THREAD_SAFE
#define ATLAS_THREAD_SAFE
Definition: checker_macros.h:211
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
CLASS_DEF.h
macros to associate a CLID to a type
INav4MomLinkContainerToINavigable4MomentumCollectionConverter::convert
virtual void convert(const INav4MomLinkContainer &src, INavigable4MomentumCollection &dst) const
Convert the contents of an instance of the source class SRC to an instance of the destination class D...
Definition: INav4MomLinkContainer.h:41