CMS 3D CMS Logo

PFlow2DClusterizerWithTime.h
Go to the documentation of this file.
1 #ifndef __PFlow2DClusterizerWithTime_H__
2 #define __PFlow2DClusterizerWithTime_H__
3 
6 
8 
9 #include <unordered_map>
10 
13 
14 public:
16 
17  ~PFlow2DClusterizerWithTime() override = default;
18  PFlow2DClusterizerWithTime(const B2DGPF&) = delete;
19  B2DGPF& operator=(const B2DGPF&) = delete;
20 
21  void update(const edm::EventSetup& es) override {
22  _positionCalc->update(es);
23  if (_allCellsPosCalc)
24  _allCellsPosCalc->update(es);
26  _convergencePosCalc->update(es);
27  }
28 
30  const std::vector<bool>&,
31  reco::PFClusterCollection& outclus) override;
32 
33 private:
34  const unsigned _maxIterations;
35  const double _stoppingTolerance;
36  const double _showerSigma2;
37  const double _timeSigma_eb;
38  const double _timeSigma_ee;
39  const bool _excludeOtherSeeds;
40  const double _minFracTot;
41  const double _maxNSigmaTime;
42  const double _minChi2Prob;
44 
45  const std::unordered_map<std::string, int> _layerMap;
46  std::unordered_map<int, double> _recHitEnergyNorms;
47  std::unique_ptr<PFCPositionCalculatorBase> _allCellsPosCalc;
48  std::unique_ptr<PFCPositionCalculatorBase> _convergencePosCalc;
49 
50  std::unique_ptr<CaloRecHitResolutionProvider> _timeResolutionCalcBarrel;
51  std::unique_ptr<CaloRecHitResolutionProvider> _timeResolutionCalcEndcap;
52 
53  void seedPFClustersFromTopo(const reco::PFCluster&, const std::vector<bool>&, reco::PFClusterCollection&) const;
54 
55  void growPFClusters(const reco::PFCluster&,
56  const std::vector<bool>&,
57  const unsigned toleranceScaling,
58  const unsigned iter,
59  double dist,
61  void clusterTimeResolution(reco::PFCluster& cluster, double& res) const;
62  void clusterTimeResolutionFromSeed(reco::PFCluster& cluster, double& res) const;
63  double dist2Time(const reco::PFCluster&, const reco::PFRecHitRef&, int cell_layer, double prev_timeres2) const;
64  bool passChi2Prob(size_t iCluster,
65  double dist2,
66  std::vector<double>& clus_chi2,
67  std::vector<size_t>& clus_chi2_nhits) const;
69 };
70 
72 
73 #endif
void update(const edm::EventSetup &es) override
void prunePFClusters(reco::PFClusterCollection &) const
PFlow2DClusterizerWithTime(const edm::ParameterSet &conf)
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
Definition: PFCluster.h:46
std::unique_ptr< PFCPositionCalculatorBase > _allCellsPosCalc
bool passChi2Prob(size_t iCluster, double dist2, std::vector< double > &clus_chi2, std::vector< size_t > &clus_chi2_nhits) const
std::unique_ptr< PosCalc > _positionCalc
const std::unordered_map< std::string, int > _layerMap
~PFlow2DClusterizerWithTime() override=default
void growPFClusters(const reco::PFCluster &, const std::vector< bool > &, const unsigned toleranceScaling, const unsigned iter, double dist, reco::PFClusterCollection &) const
Definition: Electron.h:6
void seedPFClustersFromTopo(const reco::PFCluster &, const std::vector< bool > &, reco::PFClusterCollection &) const
void clusterTimeResolution(reco::PFCluster &cluster, double &res) const
double dist2Time(const reco::PFCluster &, const reco::PFRecHitRef &, int cell_layer, double prev_timeres2) const
PFlow2DClusterizerWithTime B2DGPF
B2DGPF & operator=(const B2DGPF &)=delete
std::unique_ptr< CaloRecHitResolutionProvider > _timeResolutionCalcBarrel
std::unique_ptr< CaloRecHitResolutionProvider > _timeResolutionCalcEndcap
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
Definition: PFClusterFwd.h:9
void clusterTimeResolutionFromSeed(reco::PFCluster &cluster, double &res) const
std::unique_ptr< PFCPositionCalculatorBase > _convergencePosCalc
#define DEFINE_EDM_PLUGIN(factory, type, name)
void buildClusters(const reco::PFClusterCollection &, const std::vector< bool > &, reco::PFClusterCollection &outclus) override
std::unordered_map< int, double > _recHitEnergyNorms