5#ifndef EFLOWCELLSUBTRACTIONFACILITATOR_H
6#define EFLOWCELLSUBTRACTIONFACILITATOR_H
46 bool& annFlag,
const bool& addCPData)
const;
50 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClus,
52 bool& annFlag,
const bool& addCPData)
const;
60 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters);
64 const std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters);
67 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters,
72 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters,
75 double targetRingEnergy,
77 const bool& addCPData)
const;
80 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters,
83 const bool& addCPData)
const;
87 const std::pair<eflowCaloENUM, short>& ring,
91 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters,
93 const bool& addCPData)
const;
100 const bool& addCPData);
103 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters,
bool& annFlag,
107 std::vector<std::pair<xAOD::CaloCluster*, bool>>& tracksClusters,
109 const double eExpect,
112 const bool& addCPData);
Data object for each calorimeter readout cell.
Class mimicking the AthMessaging class from the offline software.
Concrete class derived class from pure virtual eflowAbstractCellList.
static void updateClusterKinematics(std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters)
bool subtractRings(eflowRingSubtractionManager &ringSubtractionManager, const std::pair< eflowCaloENUM, short > &ring, double &eSubtracted, const double eExpect, eflowCellList &orderedCells, std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters, bool &annFlag, eflowRecTrack &theTrack, const bool &addCPData) const
static CaloClusterCellLink::iterator getCellIterator(xAOD::CaloCluster *thisCluster, const CaloCell *thisCell)
static double getRingsEnergy(std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters, CellIt beginRing, CellIt endRing)
static void annihilateClusters(std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters, bool &annFlag, eflowRecTrack &theTrack, const bool &addCPData)
void subtractFullRings(std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters, CellIt beginRing, CellIt endRing, eflowRecTrack &theTrack, const bool &addCPData) const
eflowCellSubtractionFacilitator()
static bool subtractCaloCell(double &eSubtracted, const double eExpect, xAOD::CaloCluster *cluster, const CaloCell *cell, eflowRecTrack &theTrack, const bool &addCPData)
double subtractCells(eflowRingSubtractionManager &ringSubtractionManager, eflowRecTrack &theTrack, xAOD::CaloCluster *tracksClus, eflowCellList &orderedCells, bool &annFlag, const bool &addCPData) const
void subtractPartialRings(std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters, CellIt beginRing, CellIt endRing, double targetRingEnergy, double eRing, eflowRecTrack &theTrack, const bool &addCPData) const
static bool subtractReorderedCells(std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters, double eSubtracted, const double eExpect, eflowCellList &orderedCells, eflowRecTrack &theTrack, const bool &addCPData)
static double getTotalEnergy(const std::vector< std::pair< xAOD::CaloCluster *, bool > > &tracksClusters)
This class extends the information about a xAOD::Track.
This stores information, a rank and ring thickness, about cell rings in an ordered way.
std::map< eflowCellPosition, std::vector< std::pair< constCaloCell *, int > > >::iterator CellIt
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.