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

#include <PFUnifiedSubtractionOnlyTruthTool.h>

Inheritance diagram for PFUnifiedSubtractionOnlyTruthTool:
Collaboration diagram for PFUnifiedSubtractionOnlyTruthTool:

Public Member Functions

 ~PFUnifiedSubtractionOnlyTruthTool ()
virtual StatusCode initialize () override
virtual StatusCode processPFlowData (const EventContext &ctx, PFData &thePFData) const override
 PFUnifiedSubtractionOnlyTool (const std::string &type, const std::string &name, const IInterface *parent)

Protected Member Functions

unsigned int matchAndCreateEflowCaloObj (PFData &data) const
 This matches ID tracks and CaloClusters, and then creates eflowCaloObjects.
void simulateShowers (const EventContext &ctx, eflowCaloObjectContainer &eflowCaloObjects, const unsigned int &nCaloObj) const
bool isEOverPFail (double expectedEnergy, double sigma, double clusterEnergy) const
bool canAnnihilate (double expectedEnergy, double sigma, double clusterEnergy) const
void addSubtractedCells (eflowCaloObject &thisEflowCaloObject, const std::vector< std::pair< xAOD::CaloCluster *, bool > > &clusterList) const

Protected Attributes

ToolHandle< IEFlowCellEOverPToolm_theEOverPTool {this, "eflowCellEOverPTool", "eflowCellEOverPTool", "Energy Flow E/P Values and Shower Parameters Tool"}
 Tool for getting e/p values and hadronic shower cell ordering principle parameters.
std::unique_ptr< eflowEEtaBinnedParametersm_binnedParameters
std::unique_ptr< PFMatch::TrackEtaPhiInFixedLayersProviderm_trkpos
 Track position provider to be used to preselect clusters.
Gaudi::Property< bool > m_recoverSplitShowers {this,"RecoverSplitShowers",false,"Toggle whether we are recovering split showers or not"}
 Toggle whether we are recovering split showers or not.
Gaudi::Property< bool > m_calcEOverP {this, "CalcEOverP", false, "Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed"}
 Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed.
Gaudi::Property< double > m_consistencySigmaCut {this, "ConsistencySigmaCut", 1.0, "Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm"}
 Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm.
Gaudi::Property< double > m_subtractionSigmaCut {this, "SubtractionSigmaCut", 1.5, "Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction"}
 Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction.
Gaudi::Property< bool > m_isHLLHC {this, "isHLLHC", false, "Toggle whether we have the HLLHC setup"}
 Toggle whether we have the HLLHC setup.
Gaudi::Property< bool > m_addCPData {this,"addCPData",false,"Toggle whether to decorate FlowElements with additional data for Combined Performance studies "}
 Toggle whether to decorate eflowRecTrack with additional data for Combined Performance studies.
PFSubtractionStatusSetter m_pfSubtractionStatusSetter {}
PFSubtractionEnergyRatioCalculator m_pfSubtractionEnergyRatioCalculator {}
eflowSubtract::Subtractor m_subtractor {}
ToolHandle< PFEnergyPredictorToolm_NNEnergyPredictorTool {this, "NNEnergyPredictorTool", "","Tool for getting predictiing the energy using an ONNX model "}
 Tool for getting predictiing the energy using an ONNX model.
Gaudi::Property< bool > m_useNNEnergy {this, "useNNEnergy", false, "Toggle whether we use the neural net energy"}
 Toggle whether we use the neural net energy.
Gaudi::Property< bool > m_useLegacyEBinIndex {this, "useLegacyEBinIndex", true, "Toggle whether we use the legacy energy bin index"}
 Further discussion about why this flag exists can be found in https://its.cern.ch/jira/browse/ATLJETMET-1692 and https://indico.cern.ch/event/1388633/contributions/5837876/attachments/2809591/4903439/PFlow_EOverP_Feb2024.pdf The Jira report discusses assorted problems with the treatment of energy bin indexes for the lookup of e/p values.

Private Member Functions

void performSubtraction (const EventContext &ctx, const unsigned int &startingPoint, const unsigned int &nCaloObj, PFData &data) const override
void performSubtraction (eflowCaloObject &thisEflowCaloObject) const override

Private Attributes

Gaudi::Property< bool > m_useFullCellTruthSubtraction {this,"useFullCellTruthSubtraction",true,"Toggle whether we fully remove a cell with a truth deposit or reweight it based on truth contribution"}
 Toggle whether we fully remove a cell with a truth deposit or reweight it based on truth contribution.
ToolHandle< PFSimulateTruthShowerToolm_theTruthShowerSimulator {this, "PFSimulateTruthShowerTool", "", "The truth shower simulator"}

Detailed Description

Definition at line 15 of file PFUnifiedSubtractionOnlyTruthTool.h.

Constructor & Destructor Documentation

◆ ~PFUnifiedSubtractionOnlyTruthTool()

PFUnifiedSubtractionOnlyTruthTool::~PFUnifiedSubtractionOnlyTruthTool ( )
default

Member Function Documentation

◆ addSubtractedCells()

void PFUnifiedSubtractionOnlyTool::addSubtractedCells ( eflowCaloObject & thisEflowCaloObject,
const std::vector< std::pair< xAOD::CaloCluster *, bool > > & clusterList ) const
protectedinherited

Definition at line 334 of file PFUnifiedSubtractionOnlyTool.cxx.

334 {
335
336 unsigned int numTracks = thisEflowCaloObject.nTracks();
337
338 for (unsigned int iTrack = 0; iTrack < numTracks; ++iTrack){
339 eflowRecTrack* thisTrack = thisEflowCaloObject.efRecTrack(iTrack);
340 for (const auto& thisPair : clusterList){
341 xAOD::CaloCluster* thisCluster = thisPair.first;
342 const CaloClusterCellLink* theCellLink = thisCluster->getCellLinks();
343 CaloClusterCellLink::const_iterator theCell = theCellLink->begin();
344 CaloClusterCellLink::const_iterator lastCell = theCellLink->end();
345 for (; theCell != lastCell; ++theCell) thisTrack->addSubtractedCaloCell(ElementLink<CaloCellContainer>("AllCalo",theCell.index()),theCell.weight()/numTracks);
346 }
347 }
348}
const eflowRecTrack * efRecTrack(int i) const
unsigned nTracks() const
void addSubtractedCaloCell(ElementLink< CaloCellContainer > theCellLink, const double &weight)
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version).
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ canAnnihilate()

bool PFUnifiedSubtractionOnlyTool::canAnnihilate ( double expectedEnergy,
double sigma,
double clusterEnergy ) const
protectedinherited

Definition at line 329 of file PFUnifiedSubtractionOnlyTool.cxx.

330{
331 return clusterEnergy - expectedEnergy < m_subtractionSigmaCut * sigma;
332}
Gaudi::Property< double > m_subtractionSigmaCut
Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system,...

◆ initialize()

StatusCode PFUnifiedSubtractionOnlyTruthTool::initialize ( )
overridevirtual

Reimplemented from PFUnifiedSubtractionOnlyTool.

Definition at line 26 of file PFUnifiedSubtractionOnlyTruthTool.cxx.

27{
28
29 ATH_CHECK(m_theEOverPTool.retrieve());
30
31 ATH_CHECK(m_theEOverPTool->fillBinnedParameters(m_binnedParameters.get()));
32
33 m_trkpos.reset(dynamic_cast<PFMatch::TrackEtaPhiInFixedLayersProvider *>(PFMatch::TrackPositionFactory::Get("EM2EtaPhi").release()));
34 if (!m_trkpos)
35 {
36 ATH_MSG_ERROR("Failed to get TrackPositionProvider for cluster preselection!");
37 return StatusCode::FAILURE;
38 }
39
41
43
44
45 //Set the level of the helpers to the same as the tool here
46 m_pfSubtractionStatusSetter.msg().setLevel(this->msg().level());
47 m_pfSubtractionEnergyRatioCalculator.msg().setLevel(this->msg().level());
48 m_subtractor.m_facilitator.msg().setLevel(this->msg().level());
49
50
51 return StatusCode::SUCCESS;
52
53}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
static std::unique_ptr< IPositionProvider > Get(const std::string &positionType)
std::unique_ptr< eflowEEtaBinnedParameters > m_binnedParameters
ToolHandle< IEFlowCellEOverPTool > m_theEOverPTool
Tool for getting e/p values and hadronic shower cell ordering principle parameters.
PFSubtractionStatusSetter m_pfSubtractionStatusSetter
ToolHandle< PFEnergyPredictorTool > m_NNEnergyPredictorTool
Tool for getting predictiing the energy using an ONNX model.
std::unique_ptr< PFMatch::TrackEtaPhiInFixedLayersProvider > m_trkpos
Track position provider to be used to preselect clusters.
PFSubtractionEnergyRatioCalculator m_pfSubtractionEnergyRatioCalculator
ToolHandle< PFSimulateTruthShowerTool > m_theTruthShowerSimulator
static std::string release
Definition computils.h:50
MsgStream & msg
Definition testRead.cxx:32

◆ isEOverPFail()

bool PFUnifiedSubtractionOnlyTool::isEOverPFail ( double expectedEnergy,
double sigma,
double clusterEnergy ) const
protectedinherited

Definition at line 323 of file PFUnifiedSubtractionOnlyTool.cxx.

324{
325 if ((expectedEnergy == 0) && (clusterEnergy > 0)) return false;
326 return clusterEnergy < expectedEnergy - m_consistencySigmaCut * sigma;
327}
Gaudi::Property< double > m_consistencySigmaCut
Parameter that controls whether a track, in a track-cluster system, will be processed by the split sh...

◆ matchAndCreateEflowCaloObj()

unsigned int PFUnifiedSubtractionOnlyTool::matchAndCreateEflowCaloObj ( PFData & data) const
protectedinherited

This matches ID tracks and CaloClusters, and then creates eflowCaloObjects.

◆ performSubtraction() [1/2]

void PFUnifiedSubtractionOnlyTruthTool::performSubtraction ( const EventContext & ctx,
const unsigned int & startingPoint,
const unsigned int & nCaloObj,
PFData & data ) const
overrideprivatevirtual

Start loop from nCaloObj, which should be zero on a first pass

Reimplemented from PFUnifiedSubtractionOnlyTool.

Definition at line 70 of file PFUnifiedSubtractionOnlyTruthTool.cxx.

70 {
71
72 //starting point is defined in the base class API and used in other derived API.
73 //It is not used here, so we silence compiler warnings about it being unused
74 (void)startingPoint;
75
76 ATH_MSG_DEBUG("In performTruthSubtraction");
77
78 const double gaussianRadius = 0.032;
79 const double gaussianRadiusError = 1.0e-3;
80 const double maximumRadiusSigma = 3.0;
81
82 eflowLayerIntegrator integrator(gaussianRadius, gaussianRadiusError, maximumRadiusSigma, m_isHLLHC);
83
85 if (!m_recoverSplitShowers && 0 != nCaloObj) ATH_MSG_WARNING("Not in Split Showers Mode and already have " << nCaloObj << " eflowCaloObjects");
86
87 //For each eflowCaloObject we calculate the expected energy deposit in the calorimeter and cell ordering for subtraction.
88 for (unsigned int iCalo = nCaloObj; iCalo < data.caloObjects->size(); ++iCalo) {
89 eflowCaloObject* thisEflowCaloObject = data.caloObjects->at(iCalo);
90 thisEflowCaloObject->simulateShower(ctx, &integrator, m_binnedParameters.get(), m_useNNEnergy ? &(*m_NNEnergyPredictorTool) : nullptr, m_useLegacyEBinIndex);
91 m_theTruthShowerSimulator->simulateShower(*thisEflowCaloObject);
92
93 }
94
95 unsigned int nEFCaloObs = data.caloObjects->size();
96
97 for (unsigned int iCalo = 0; iCalo < nEFCaloObs; ++iCalo) {
98 eflowCaloObject* thisEflowCaloObject = data.caloObjects->at(iCalo);
99 this->performSubtraction(*thisEflowCaloObject);
100 }
101
102}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
Gaudi::Property< bool > m_recoverSplitShowers
Toggle whether we are recovering split showers or not.
Gaudi::Property< bool > m_isHLLHC
Toggle whether we have the HLLHC setup.
Gaudi::Property< bool > m_useLegacyEBinIndex
Further discussion about why this flag exists can be found in https://its.cern.ch/jira/browse/ATLJETM...
Gaudi::Property< bool > m_useNNEnergy
Toggle whether we use the neural net energy.
void performSubtraction(const EventContext &ctx, const unsigned int &startingPoint, const unsigned int &nCaloObj, PFData &data) const override
void simulateShower(const EventContext &ctx, eflowLayerIntegrator *integrator, const eflowEEtaBinnedParameters *binnedParameters, const PFEnergyPredictorTool *energyP, bool useLegacyEnergyBinIndexing)

◆ performSubtraction() [2/2]

void PFUnifiedSubtractionOnlyTruthTool::performSubtraction ( eflowCaloObject & thisEflowCaloObject) const
overrideprivatevirtual

Reimplemented from PFUnifiedSubtractionOnlyTool.

Definition at line 104 of file PFUnifiedSubtractionOnlyTruthTool.cxx.

104 {
105
106 for (unsigned iTrack = 0; iTrack < thisEflowCaloObject.nTracks(); ++iTrack){
107 eflowRecTrack *thisEfRecTrack = thisEflowCaloObject.efRecTrack(iTrack);
108
109 //although we are subtracting the truth, to be consistent we only do it if a reco
110 //e/p lookup bin exists for this track
111 if (!thisEfRecTrack->hasBin()) continue;
112
113 //Similarly we skip tracks in a dense environment
114 if (thisEfRecTrack->isInDenseEnvironment()) continue;
115
116 thisEfRecTrack->setSubtracted();
117
118 //get the set of matched clusters
119 std::vector<eflowTrackClusterLink *> links = thisEfRecTrack->getClusterMatches();
120
121 for (auto thisLink : links){
122 xAOD::CaloCluster *thisCluster = thisLink->getCluster()->getCluster();
123 CaloClusterCellLink* theCellLinks = thisCluster->getOwnCellLinks();
124 CaloClusterCellLink::iterator theCell = theCellLinks->begin();
125 CaloClusterCellLink::iterator lastCell = theCellLinks->end();
126
127 //loop over the cells in this cluster and subtract shower using truth information
128 //We can either remove a cell entireley if it has any truth deposit (closer to what the real
129 //reco algorithm does) or reweight the cells contribution based on subtracting the truth
130 //energy from the reco cell energy
131 //We only advance the iterator, theCell, if we *dont* call removeCell to avoid issues with
132 //invalid iterators
133 //We also have to reset the lastCell iterator after each call to ensure the loop exits at the end,
134 //instead of being stuck in an infinite loop.
135 for (; theCell != lastCell;){
136 //get the truth energy for this cell
137 double truthEnergy = thisEfRecTrack->getCellTruthEnergy(*theCell);
138 //reweight the cell such that energy*weight gives the new energy
139 double oldCellEnergy = theCell->energy()*(theCell.weight());
140 double subtractedCellWeight = (oldCellEnergy - truthEnergy)/oldCellEnergy;
141
142 if (0.0 != truthEnergy && m_useFullCellTruthSubtraction) {
143 thisCluster->removeCell(*theCell);
144 lastCell = theCellLinks->end();
145 }
147 theCell.reweight(subtractedCellWeight);
148 ++theCell;
149 }
150 else ++theCell;
151
152 }//cell loop
153
154 float oldEnergy = thisCluster->e();
155 CaloClusterKineHelper::calculateKine(thisCluster, true, true);
156 if (0.0 != oldEnergy) {
157 float energyAdjustment = thisCluster->e() / oldEnergy;
158 thisCluster->setRawE(thisCluster->rawE() * energyAdjustment);
159 thisCluster->setRawEta(thisCluster->eta());
160 thisCluster->setRawPhi(thisCluster->phi());
161 }
162 }
163
164 }//eflowCaloObject track loop
165
166}
double energy() const
get energy (data member)
Definition CaloCell.h:327
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_useFullCellTruthSubtraction
Toggle whether we fully remove a cell with a truth deposit or reweight it based on truth contribution...
const std::vector< eflowTrackClusterLink * > & getClusterMatches() const
bool hasBin() const
double getCellTruthEnergy(const CaloCell *cell) const
bool isInDenseEnvironment() const
void setRawEta(flt_t)
Set for signal state UNCALIBRATED.
flt_t rawE() const
void setRawPhi(flt_t)
Set for signal state UNCALIBRATED.
void setRawE(flt_t)
Set Energy for signal state UNCALIBRATED.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
CaloClusterCellLink * getOwnCellLinks()
Get a pointer to the owned CaloClusterCellLink object (non-const version).
bool removeCell(const CaloCell *ptr)
Method to remove a cell to the cluster (slow!) (Beware: Kinematics not updated!).

◆ PFUnifiedSubtractionOnlyTool()

PFUnifiedSubtractionOnlyTool::PFUnifiedSubtractionOnlyTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 31 of file PFUnifiedSubtractionOnlyTool.cxx.

24 : base_class(type, name, parent),
25 m_binnedParameters(std::make_unique<eflowEEtaBinnedParameters>())
26{
27}

◆ processPFlowData()

StatusCode PFUnifiedSubtractionOnlyTruthTool::processPFlowData ( const EventContext & ctx,
PFData & thePFData ) const
overridevirtual

Reimplemented from PFUnifiedSubtractionOnlyTool.

Definition at line 55 of file PFUnifiedSubtractionOnlyTruthTool.cxx.

59{
60 if (!data.caloObjects) {
61 ATH_MSG_ERROR("PFData::caloObjects is null; caller must set it before invoking the truth subtraction tool");
62 return StatusCode::FAILURE;
63 }
64
65 performSubtraction(ctx, data.nMatches, 0, data);
66 return StatusCode::SUCCESS;
67}

◆ simulateShowers()

void PFUnifiedSubtractionOnlyTool::simulateShowers ( const EventContext & ctx,
eflowCaloObjectContainer & eflowCaloObjects,
const unsigned int & nCaloObj ) const
protectedinherited

Definition at line 93 of file PFUnifiedSubtractionOnlyTool.cxx.

93 {
94
95 const double gaussianRadius = 0.032;
96 const double gaussianRadiusError = 1.0e-3;
97 const double maximumRadiusSigma = 3.0;
98
99 eflowLayerIntegrator integrator(gaussianRadius, gaussianRadiusError, maximumRadiusSigma, m_isHLLHC);
100
101 //For each eflowCaloObject we calculate the expected energy deposit in the calorimeter and cell ordering for subtraction.
102 for (unsigned int iCalo = nCaloObj; iCalo < eflowCaloObjects.size(); ++iCalo) {
103 eflowCaloObject* thisEflowCaloObject = eflowCaloObjects.at(iCalo);
104 thisEflowCaloObject->simulateShower(ctx, &integrator, m_binnedParameters.get(), m_useNNEnergy ? &(*m_NNEnergyPredictorTool) : nullptr, m_useLegacyEBinIndex);
105 }
106}
const T * at(size_type n) const
Access an element, as an rvalue.
size_type size() const noexcept
Returns the number of elements in the collection.

Member Data Documentation

◆ m_addCPData

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTool::m_addCPData {this,"addCPData",false,"Toggle whether to decorate FlowElements with additional data for Combined Performance studies "}
protectedinherited

Toggle whether to decorate eflowRecTrack with additional data for Combined Performance studies.

Definition at line 79 of file PFUnifiedSubtractionOnlyTool.h.

79{this,"addCPData",false,"Toggle whether to decorate FlowElements with additional data for Combined Performance studies "};

◆ m_binnedParameters

std::unique_ptr<eflowEEtaBinnedParameters> PFUnifiedSubtractionOnlyTool::m_binnedParameters
protectedinherited

Definition at line 58 of file PFUnifiedSubtractionOnlyTool.h.

◆ m_calcEOverP

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTool::m_calcEOverP {this, "CalcEOverP", false, "Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed"}
protectedinherited

Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed.

Definition at line 67 of file PFUnifiedSubtractionOnlyTool.h.

67{this, "CalcEOverP", false, "Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed"};

◆ m_consistencySigmaCut

Gaudi::Property<double> PFUnifiedSubtractionOnlyTool::m_consistencySigmaCut {this, "ConsistencySigmaCut", 1.0, "Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm"}
protectedinherited

Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm.

Definition at line 70 of file PFUnifiedSubtractionOnlyTool.h.

70{this, "ConsistencySigmaCut", 1.0, "Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm"};

◆ m_isHLLHC

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTool::m_isHLLHC {this, "isHLLHC", false, "Toggle whether we have the HLLHC setup"}
protectedinherited

Toggle whether we have the HLLHC setup.

Definition at line 76 of file PFUnifiedSubtractionOnlyTool.h.

76{this, "isHLLHC", false, "Toggle whether we have the HLLHC setup"};

◆ m_NNEnergyPredictorTool

ToolHandle<PFEnergyPredictorTool> PFUnifiedSubtractionOnlyTool::m_NNEnergyPredictorTool {this, "NNEnergyPredictorTool", "","Tool for getting predictiing the energy using an ONNX model "}
protectedinherited

Tool for getting predictiing the energy using an ONNX model.

Definition at line 87 of file PFUnifiedSubtractionOnlyTool.h.

87{this, "NNEnergyPredictorTool", "","Tool for getting predictiing the energy using an ONNX model "};

◆ m_pfSubtractionEnergyRatioCalculator

PFSubtractionEnergyRatioCalculator PFUnifiedSubtractionOnlyTool::m_pfSubtractionEnergyRatioCalculator {}
protectedinherited

Definition at line 83 of file PFUnifiedSubtractionOnlyTool.h.

83{};

◆ m_pfSubtractionStatusSetter

PFSubtractionStatusSetter PFUnifiedSubtractionOnlyTool::m_pfSubtractionStatusSetter {}
protectedinherited

Definition at line 82 of file PFUnifiedSubtractionOnlyTool.h.

82{};

◆ m_recoverSplitShowers

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTool::m_recoverSplitShowers {this,"RecoverSplitShowers",false,"Toggle whether we are recovering split showers or not"}
protectedinherited

Toggle whether we are recovering split showers or not.

Definition at line 64 of file PFUnifiedSubtractionOnlyTool.h.

64{this,"RecoverSplitShowers",false,"Toggle whether we are recovering split showers or not"};

◆ m_subtractionSigmaCut

Gaudi::Property<double> PFUnifiedSubtractionOnlyTool::m_subtractionSigmaCut {this, "SubtractionSigmaCut", 1.5, "Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction"}
protectedinherited

Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction.

Definition at line 73 of file PFUnifiedSubtractionOnlyTool.h.

73{this, "SubtractionSigmaCut", 1.5, "Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction"};

◆ m_subtractor

eflowSubtract::Subtractor PFUnifiedSubtractionOnlyTool::m_subtractor {}
protectedinherited

Definition at line 84 of file PFUnifiedSubtractionOnlyTool.h.

84{};

◆ m_theEOverPTool

ToolHandle<IEFlowCellEOverPTool> PFUnifiedSubtractionOnlyTool::m_theEOverPTool {this, "eflowCellEOverPTool", "eflowCellEOverPTool", "Energy Flow E/P Values and Shower Parameters Tool"}
protectedinherited

Tool for getting e/p values and hadronic shower cell ordering principle parameters.

Definition at line 56 of file PFUnifiedSubtractionOnlyTool.h.

56{this, "eflowCellEOverPTool", "eflowCellEOverPTool", "Energy Flow E/P Values and Shower Parameters Tool"};

◆ m_theTruthShowerSimulator

ToolHandle<PFSimulateTruthShowerTool> PFUnifiedSubtractionOnlyTruthTool::m_theTruthShowerSimulator {this, "PFSimulateTruthShowerTool", "", "The truth shower simulator"}
private

Definition at line 32 of file PFUnifiedSubtractionOnlyTruthTool.h.

32{this, "PFSimulateTruthShowerTool", "", "The truth shower simulator"};

◆ m_trkpos

std::unique_ptr<PFMatch::TrackEtaPhiInFixedLayersProvider> PFUnifiedSubtractionOnlyTool::m_trkpos
protectedinherited

Track position provider to be used to preselect clusters.

Definition at line 61 of file PFUnifiedSubtractionOnlyTool.h.

◆ m_useFullCellTruthSubtraction

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTruthTool::m_useFullCellTruthSubtraction {this,"useFullCellTruthSubtraction",true,"Toggle whether we fully remove a cell with a truth deposit or reweight it based on truth contribution"}
private

Toggle whether we fully remove a cell with a truth deposit or reweight it based on truth contribution.

Definition at line 30 of file PFUnifiedSubtractionOnlyTruthTool.h.

30{this,"useFullCellTruthSubtraction",true,"Toggle whether we fully remove a cell with a truth deposit or reweight it based on truth contribution"};

◆ m_useLegacyEBinIndex

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTool::m_useLegacyEBinIndex {this, "useLegacyEBinIndex", true, "Toggle whether we use the legacy energy bin index"}
protectedinherited

Further discussion about why this flag exists can be found in https://its.cern.ch/jira/browse/ATLJETMET-1692 and https://indico.cern.ch/event/1388633/contributions/5837876/attachments/2809591/4903439/PFlow_EOverP_Feb2024.pdf The Jira report discusses assorted problems with the treatment of energy bin indexes for the lookup of e/p values.

In order to not change the behaviour of produciton code a legacy option is introduced to allow us to fix the problem in future iterations of e/p derivations.s

Definition at line 97 of file PFUnifiedSubtractionOnlyTool.h.

97{this, "useLegacyEBinIndex", true, "Toggle whether we use the legacy energy bin index"};

◆ m_useNNEnergy

Gaudi::Property<bool> PFUnifiedSubtractionOnlyTool::m_useNNEnergy {this, "useNNEnergy", false, "Toggle whether we use the neural net energy"}
protectedinherited

Toggle whether we use the neural net energy.

Definition at line 90 of file PFUnifiedSubtractionOnlyTool.h.

90{this, "useNNEnergy", false, "Toggle whether we use the neural net energy"};

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