ATLAS Offline Software
Loading...
Searching...
No Matches
CaloClusterStoreHelper Class Reference

#include <CaloClusterStoreHelper.h>

Collaboration diagram for CaloClusterStoreHelper:

Static Public Member Functions

static std::unique_ptr< xAOD::CaloClustermakeCluster (const CaloCellContainer *cellCont)
 Creates a valid CaloCluster with a private Aux-Store and CellLink container.
static std::unique_ptr< xAOD::CaloClustermakeCluster (const DataLink< CaloCellContainer > &cellCont)
 Creates a valid CaloCluster with a private Aux-Store and CellLink container.
static std::unique_ptr< xAOD::CaloClustermakeCluster (const CaloCellContainer *cellCont, const double eta0, const double phi0, const xAOD::CaloCluster_v1::ClusterSize clusterSize)
 Creates a valid CaloCluster with a private Aux-Store and CellLink container.
static xAOD::CaloClustermakeCluster (xAOD::CaloClusterContainer *cont, const CaloCellContainer *cellCont)
 Creates a valid CaloCluster and pushes it into the cluster container.
static xAOD::CaloClustermakeCluster (xAOD::CaloClusterContainer *cont, const DataLink< CaloCellContainer > &cellCont)
 Creates a valid CaloCluster and pushes it into the cluster container.
static StatusCode AddContainerWriteHandle (SG::WriteHandle< xAOD::CaloClusterContainer > &clusColl)
 Creates a new xAOD::CaloClusterContainer in the given WriteHandle + CaloClusterAuxContainer and records them to SG.
static StatusCode finalizeClusters (SG::WriteHandle< CaloClusterCellLinkContainer > &h, xAOD::CaloClusterContainer *pClusterColl)
 Finalize clusters (move CaloClusterCellLink to a separate container).
static void finalizeClusters (const EventContext &ctx, SG::WriteHandle< xAOD::CaloClusterContainer > &outClusterContainer, SG::WriteHandle< CaloClusterCellLinkContainer > &outClusterContainerCellLink)
static void copyContainer (const xAOD::CaloClusterContainer *oldColl, xAOD::CaloClusterContainer *newColl)
 Deep copy of a cluster container.

Detailed Description

Definition at line 20 of file CaloClusterStoreHelper.h.

Member Function Documentation

◆ AddContainerWriteHandle()

StatusCode CaloClusterStoreHelper::AddContainerWriteHandle ( SG::WriteHandle< xAOD::CaloClusterContainer > & clusColl)
static

Creates a new xAOD::CaloClusterContainer in the given WriteHandle + CaloClusterAuxContainer and records them to SG.

Parameters
clusCollSG write handle key of ClusterContainer
Returns
status code indicating sucess or failure

Definition at line 53 of file CaloClusterStoreHelper.cxx.

53 {
54
55 // Create the xAOD container and its auxiliary store:
56 StatusCode sc =
57 clusColl.record (std::make_unique<xAOD::CaloClusterContainer>(),
58 std::make_unique<xAOD::CaloClusterAuxContainer>());
59 return sc;
60}
static Double_t sc
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ copyContainer()

void CaloClusterStoreHelper::copyContainer ( const xAOD::CaloClusterContainer * oldColl,
xAOD::CaloClusterContainer * newColl )
static

Deep copy of a cluster container.

Parameters
oldThe container to copy.
Returns
Copy of the container and its clusters (an owning DV).

Definition at line 91 of file CaloClusterStoreHelper.cxx.

91 {
92 // make a Cluster Container
93 newColl->clear();
94 newColl->reserve (oldColl->size());
95 for (const xAOD::CaloCluster* oldCluster : *oldColl) {
96 xAOD::CaloCluster* newClu=newColl->push_back(std::make_unique<xAOD::CaloCluster>());
97 *newClu=*oldCluster;
98 //new xAOD::CaloCluster (*oldCluster)); //Copy c'tor creates a private AuxStore and a private ClusterCellLink obj
99 }
100 }
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.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ finalizeClusters() [1/2]

void CaloClusterStoreHelper::finalizeClusters ( const EventContext & ctx,
SG::WriteHandle< xAOD::CaloClusterContainer > & outClusterContainer,
SG::WriteHandle< CaloClusterCellLinkContainer > & outClusterContainerCellLink )
static

Definition at line 80 of file CaloClusterStoreHelper.cxx.

84{
85 for (xAOD::CaloCluster* cl : *outClusterContainer) {
86 cl->setLink(outClusterContainerCellLink.ptr(), ctx);
87 }
88}
pointer_type ptr()
Dereference the pointer.
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]

◆ finalizeClusters() [2/2]

StatusCode CaloClusterStoreHelper::finalizeClusters ( SG::WriteHandle< CaloClusterCellLinkContainer > & h,
xAOD::CaloClusterContainer * pClusterColl )
static

Finalize clusters (move CaloClusterCellLink to a separate container).

Definition at line 64 of file CaloClusterStoreHelper.cxx.

66{
67 auto cellLinks = std::make_unique<CaloClusterCellLinkContainer>();
68
69 //Loop on clusters and call setLink to transfer ownership of CaloClusterCellLink object to
70 //CaloClusterCellLinkContainer
71 IProxyDict* sg = SG::CurrentEventStore::store();
72 for (xAOD::CaloCluster* cl : *pClusterColl) {
73 cl->setLink(cellLinks.get(), sg);
74 }
75
76 return h.record (std::move (cellLinks));
77}
static IProxyDict * store()
Fetch the current store.

◆ makeCluster() [1/5]

std::unique_ptr< xAOD::CaloCluster > CaloClusterStoreHelper::makeCluster ( const CaloCellContainer * cellCont)
static

Creates a valid CaloCluster with a private Aux-Store and CellLink container.

Parameters
cellContpointer to the underlying CaloCellContainer
Returns
unique_ptr to a CaloCluster object.

Definition at line 13 of file CaloClusterStoreHelper.cxx.

13 {
14 return makeCluster (DataLink<CaloCellContainer> (cellCont));
15}
static std::unique_ptr< xAOD::CaloCluster > makeCluster(const CaloCellContainer *cellCont)
Creates a valid CaloCluster with a private Aux-Store and CellLink container.

◆ makeCluster() [2/5]

std::unique_ptr< xAOD::CaloCluster > CaloClusterStoreHelper::makeCluster ( const CaloCellContainer * cellCont,
const double eta0,
const double phi0,
const xAOD::CaloCluster_v1::ClusterSize clusterSize )
static

Creates a valid CaloCluster with a private Aux-Store and CellLink container.

Parameters
cellContpointer to the underlying CaloCellContainer
eta0seed \( \eta \) of cluster
phi0seed \( \varphi \) of cluster
clusterSize
Returns
unique_ptr to a CaloCluster object

Definition at line 26 of file CaloClusterStoreHelper.cxx.

28 {
29 std::unique_ptr<xAOD::CaloCluster> cluster=CaloClusterStoreHelper::makeCluster(cellCont);
30 cluster->setEta0(eta0);
31 cluster->setPhi0(phi0);
32 cluster->setClusterSize(clusterSize);
33 return cluster;
34}

◆ makeCluster() [3/5]

std::unique_ptr< xAOD::CaloCluster > CaloClusterStoreHelper::makeCluster ( const DataLink< CaloCellContainer > & cellCont)
static

Creates a valid CaloCluster with a private Aux-Store and CellLink container.

Parameters
cellContlink to the underlying CaloCellContainer
Returns
unique_ptr to a CaloCluster object.

Definition at line 18 of file CaloClusterStoreHelper.cxx.

18 {
19 std::unique_ptr<xAOD::CaloCluster> cluster = std::make_unique<xAOD::CaloCluster>();
20 cluster->makePrivateStore();
21 if (cellCont) cluster->addCellLink(std::make_unique<CaloClusterCellLink>(cellCont));
22 return cluster;
23}

◆ makeCluster() [4/5]

xAOD::CaloCluster * CaloClusterStoreHelper::makeCluster ( xAOD::CaloClusterContainer * cont,
const CaloCellContainer * cellCont )
static

Creates a valid CaloCluster and pushes it into the cluster container.

Parameters
contptr to and xAOD::CaloClusterContainer (must be associated with an CaloClusterAuxContainer);
cellContpointer to the underlying CaloCellContainer
Returns
Pointer to a CaloCluster object

Definition at line 37 of file CaloClusterStoreHelper.cxx.

39{
40 return makeCluster (cont, DataLink<CaloCellContainer> (cellCont));
41}

◆ makeCluster() [5/5]

xAOD::CaloCluster * CaloClusterStoreHelper::makeCluster ( xAOD::CaloClusterContainer * cont,
const DataLink< CaloCellContainer > & cellCont )
static

Creates a valid CaloCluster and pushes it into the cluster container.

Parameters
contptr to and xAOD::CaloClusterContainer (must be associated with an CaloClusterAuxContainer);
cellContlink to the underlying CaloCellContainer
Returns
Pointer to a CaloCluster object

Definition at line 44 of file CaloClusterStoreHelper.cxx.

45 {
46
47 xAOD::CaloCluster* cluster=cont->push_back(std::make_unique<xAOD::CaloCluster>());
48 if (cellCont) cluster->addCellLink(std::make_unique<CaloClusterCellLink>(cellCont));
49 return cluster;
50}
void addCellLink(CaloClusterCellLink *CCCL)

The documentation for this class was generated from the following files: