ATLAS Offline Software
Loading...
Searching...
No Matches
PFUnifiedMomentCalculatorTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6#include "PFData.h"
7#include "eflowCaloObject.h"
8#include "eflowRecCluster.h"
9
11
12PFUnifiedMomentCalculatorTool::PFUnifiedMomentCalculatorTool(const std::string& type,const std::string& name,const IInterface* parent) :
13 base_class( type, name, parent)
14{
15}
16
18
19 /* Retrieve the cluster collection tool */
21
22 /* Retrieve the cluster moments maker */
24
25 /* Retrieve the cluster calib hit moments maker */
27 else m_clusterCalibHitMomentsMaker2.disable();
28
29 return StatusCode::SUCCESS;
30}
31
32StatusCode PFUnifiedMomentCalculatorTool::processPFlowData(const EventContext& ctx, PFData &thePFData) const {
33
34 if (!thePFData.caloObjects) {
35 ATH_MSG_ERROR("PFData::caloObjects is null; caller must set it before invoking the moment calculator tool");
36 return StatusCode::FAILURE;
37 }
38
39 eflowCaloObjectContainer *theEflowCaloObjectContainer = thePFData.caloObjects;
40
41 /* Collect all the clusters in a temporary container (with VIEW_ELEMENTS!) */
42 bool useNonModifiedClusters = true;
43 if (true == m_LCMode) useNonModifiedClusters = false;
44 std::unique_ptr<xAOD::CaloClusterContainer> tempClusterContainer = m_clusterCollectionTool->execute(*theEflowCaloObjectContainer, useNonModifiedClusters);
45
46 /* Set the layer energies */
47 /* This must be set before the cluster moment calculations, which use the layer energies */
48 for (auto cluster : *tempClusterContainer) CaloClusterKineHelper::calculateKine(cluster, true, true);
49
50 /* Remake the cluster moments */
51 ATH_CHECK(m_clusterMomentsMaker->execute(ctx, tempClusterContainer.get()));
52
54 ATH_CHECK(m_clusterCalibHitMomentsMaker2->execute(ctx, tempClusterContainer.get()));
55 }
56
57 return StatusCode::SUCCESS;
58}
59
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
static void calculateKine(xAOD::CaloCluster *clu, const bool useweight=true, const bool updateLayers=true, const bool useGPUCriteria=false)
Helper class to calculate cluster kinematics based on cells.
Gaudi::Property< bool > m_LCMode
Toggle whether we are in LC mode - false by default.
Gaudi::Property< bool > m_useCalibHitTruth
Toggle usage of calibration hit truth - false by default.
ToolHandle< CaloClusterCollectionProcessor > m_clusterMomentsMaker
Tool to calculate cluster moments.
ToolHandle< IPFClusterCollectionTool > m_clusterCollectionTool
Tool to put all clusters into a temporary container - then we use this to calculate moments,...
virtual StatusCode processPFlowData(const EventContext &ctx, PFData &thePFData) const override
ToolHandle< CaloClusterCollectionProcessor > m_clusterCalibHitMomentsMaker2
Tool to calculate calibration hit truth cluster moments.
PFUnifiedMomentCalculatorTool(const std::string &type, const std::string &name, const IInterface *parent)
eflowCaloObjectContainer * caloObjects
Definition PFData.h:17