CMS 3D CMS Logo

PFMultiDepthClusterizer.h
Go to the documentation of this file.
1 #ifndef __PFMultiDepthClusterizer_H__
2 #define __PFMultiDepthClusterizer_H__
3 
6 
7 #include <unordered_map>
8 
11  public:
13 
14  ~PFMultiDepthClusterizer() override = default;
15  PFMultiDepthClusterizer(const B2DGPF&) = delete;
16  B2DGPF& operator=(const B2DGPF&) = delete;
17 
18  void update(const edm::EventSetup& es) override {
19  _allCellsPosCalc->update(es);
20  }
21 
23  const std::vector<bool>&,
24  reco::PFClusterCollection& outclus) override;
25 
26  private:
27  std::unique_ptr<PFCPositionCalculatorBase> _allCellsPosCalc;
28  double nSigmaEta_;
29  double nSigmaPhi_;
30 
31 
32  class ClusterLink {
33  public:
34  ClusterLink(unsigned int i,unsigned int j,double DR,double DZ,double energy) {
35  from_ = i;
36  to_ = j;
37  linkDR_ =DR;
38  linkDZ_ =DZ;
39  linkE_ =energy;
40  }
41 
42  ~ClusterLink() = default;
43 
44  unsigned int from() const {return from_;}
45  unsigned int to() const {return to_;}
46  double dR() const {return linkDR_;}
47  double dZ() const {return linkDZ_;}
48  double energy() const {return linkE_;}
49 
50  private:
51  unsigned int from_;
52  unsigned int to_;
53  double linkDR_;
54  double linkDZ_;
55  double linkE_;
56 
57  };
58 
59 
60  void calculateShowerShapes(const reco::PFClusterCollection&,std::vector<double>&,std::vector<double>&);
61  std::vector<ClusterLink> link(const reco::PFClusterCollection&,const std::vector<double>&,const std::vector<double>&);
62  std::vector<ClusterLink> prune(std::vector<ClusterLink>&,std::vector<bool>& linkedClusters);
63 
64 
65  void expandCluster(reco::PFCluster&,unsigned int point, std::vector<bool>& mask,const reco::PFClusterCollection& , const std::vector<ClusterLink>& links);
66 
68 
69 
70 
71 };
72 
75  "PFMultiDepthClusterizer");
76 
77 #endif
void calculateShowerShapes(const reco::PFClusterCollection &, std::vector< double > &, std::vector< double > &)
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
Definition: PFCluster.h:47
B2DGPF & operator=(const B2DGPF &)=delete
std::vector< ClusterLink > prune(std::vector< ClusterLink > &, std::vector< bool > &linkedClusters)
std::unique_ptr< PFCPositionCalculatorBase > _allCellsPosCalc
void absorbCluster(reco::PFCluster &, const reco::PFCluster &)
PFMultiDepthClusterizer(const edm::ParameterSet &conf)
std::vector< ClusterLink > link(const reco::PFClusterCollection &, const std::vector< double > &, const std::vector< double > &)
void update(const edm::EventSetup &es) override
~PFMultiDepthClusterizer() override=default
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
Definition: PFClusterFwd.h:9
#define DEFINE_EDM_PLUGIN(factory, type, name)
void buildClusters(const reco::PFClusterCollection &, const std::vector< bool > &, reco::PFClusterCollection &outclus) override
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
PFMultiDepthClusterizer B2DGPF
void expandCluster(reco::PFCluster &, unsigned int point, std::vector< bool > &mask, const reco::PFClusterCollection &, const std::vector< ClusterLink > &links)