1 #ifndef L1Trigger_Phase2L1ParticleFlow_CALOCLUSTERER_H
2 #define L1Trigger_Phase2L1ParticleFlow_CALOCLUSTERER_H
21 namespace l1tpf_calo {
28 float eta(
int icell)
const {
return eta_[icell]; }
29 float phi(
int icell)
const {
return phi_[icell]; }
64 if (ieta == 0 || iphi == 0)
116 const T &
neigh(
int icell,
unsigned int idx)
const {
128 for (
unsigned int i = 0,
n =
data_.size();
i <
n; ++
i) {
204 template <
typename Corrector>
211 std::unique_ptr<l1t::PFClusterCollection>
fetchCells(
bool unclusteredOnly =
false,
float ptMin = 0.)
const;
213 std::unique_ptr<l1t::PFClusterCollection>
fetch(
float ptMin = 0.)
const;
215 float ptMin = 0.)
const;
242 virtual void run() = 0;
249 template <
typename Corrector>
256 std::unique_ptr<l1t::PFClusterCollection>
fetch()
const;
273 void clear()
override;
283 void clear()
override;
Phase1GridBase(int nEta, int nPhi, int ietaCoarse, int ietaVeryCoarse, const float *towerEtas)
std::vector< CombinedCluster > clusters_
int imove(int ieta, int iphi, int deta, int dphi)
float ptOverNeighLocalMaxSum
const edm::EventSetup & c
std::vector< float > eta_
virtual ~SimpleCaloLinkerBase()
T & operator()(float eta, float phi)
const Cluster nullCluster_
virtual double pt() const =0
transverse momentum
std::unique_ptr< l1t::PFClusterCollection > fetchCells(bool unclusteredOnly=false, float ptMin=0.) const
SimpleCaloLinker(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
const SingleCaloClusterer & hcal_
SingleCaloClusterer(const edm::ParameterSet &pset)
const EtGrid & raw() const
std::unique_ptr< SimpleCaloLinkerBase > makeCaloLinker(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
GridData< PreCluster > PreClusterGrid
void add(const reco::Candidate &c)
static const int phase1_ietaVeryCoarse_
std::vector< float > etaWidth_
std::vector< Cluster > clusters_
FlatCaloLinker(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
PreClusterGrid ecalToHCal_
SimpleCaloLinkerBase(const edm::ParameterSet &pset, const SingleCaloClusterer &ecal, const SingleCaloClusterer &hcal)
float eta(int icell) const
T & operator[](int icell)
const Grid * getGrid(const std::string &type)
GridData(const Grid &grid)
int ieta(int icell) const
const std::vector< Cluster > & clusters() const
int find_cell(float eta, float phi) const override
std::vector< int > cell_map_
const T & operator[](int icell) const
const int ietaVeryCoarse_
unsigned int size() const
std::vector< float > phiWidth_
static const int phase1_nEta_
Abs< T >::type abs(const T &t)
std::unique_ptr< l1t::PFClusterCollection > fetch(float ptMin=0.) const
static const int phase2_ietaCoarse_
static const int phase2_nEta_
std::vector< float > phi_
std::vector< std::pair< int, float > > constituents
int neighbour(int icell, unsigned int idx) const
void add(float pt, float eta, float phi)
void correct(const Corrector &corrector)
const SingleCaloClusterer & ecal_
static const int phase2_ietaVeryCoarse_
void correct(const Corrector &corrector)
void grow()
possibly grow clusters by adding unclustered energy on the sides
const Cluster & cluster(int i) const
unsigned int size() const
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
EtGrid & raw()
non-const access to the energy: be careful to use it only before 'run()'
float phi(int icell) const
void fill(std::map< std::string, TH1 * > &h, const std::string &s, double x)
const Grid & grid() const
const T & neigh(int icell, unsigned int idx) const
static const int phase1_ietaCoarse_
const IndexGrid & indexGrid() const
int iphi(int icell) const
int iphi(int icell) const
static const int phase2_nPhi_
PreClusterGrid precluster_
GridData< T > & operator+=(const GridData< T > &other)
SingleCaloClusterer combClusterer_
GridData< int > IndexGrid
virtual int find_cell(float eta, float phi) const =0
float eta(int icell) const
GridData< T > & operator=(const GridData< T > &other)
float phiWidth(int icell) const
int ieta(int icell) const
bool energyWeightedPosition_
~SimpleCaloLinker() override
~FlatCaloLinker() override
std::vector< std::array< int, 8 > > neighbours_
int ifind_cell(int ieta, int iphi) const
EnergyShareAlgo energyShareAlgo_
static const float phase1_towerEtas_[phase1_nEta_]
const T & operator()(float eta, float phi) const
float phi(int icell) const
bool valid_ieta_iphi(int ieta, int iphi) const
static const float phase2_towerEtas_[phase2_nEta_]
std::unique_ptr< l1t::PFClusterCollection > fetch() const
virtual double phi() const =0
momentum azimuthal angle
virtual double eta() const =0
momentum pseudorapidity
float etaWidth(int icell) const
static const int phase1_nPhi_