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  public:
15 
16  ~PFlow2DClusterizerWithTime() override = default;
17  PFlow2DClusterizerWithTime(const B2DGPF&) = delete;
18  B2DGPF& operator=(const B2DGPF&) = delete;
19 
20  void update(const edm::EventSetup& es) override {
21  _positionCalc->update(es);
22  if( _allCellsPosCalc ) _allCellsPosCalc->update(es);
23  if( _convergencePosCalc ) _convergencePosCalc->update(es);
24  }
25 
27  const std::vector<bool>&,
28  reco::PFClusterCollection& outclus) override;
29 
30  private:
31  const unsigned _maxIterations;
32  const double _stoppingTolerance;
33  const double _showerSigma2;
34  const double _timeSigma_eb;
35  const double _timeSigma_ee;
36  const bool _excludeOtherSeeds;
37  const double _minFracTot;
38  const double _maxNSigmaTime;
39  const double _minChi2Prob;
41 
42  const std::unordered_map<std::string,int> _layerMap;
43  std::unordered_map<int,double> _recHitEnergyNorms;
44  std::unique_ptr<PFCPositionCalculatorBase> _allCellsPosCalc;
45  std::unique_ptr<PFCPositionCalculatorBase> _convergencePosCalc;
46 
47  std::unique_ptr<CaloRecHitResolutionProvider> _timeResolutionCalcBarrel;
48  std::unique_ptr<CaloRecHitResolutionProvider> _timeResolutionCalcEndcap;
49 
51  const std::vector<bool>&,
53 
54  void growPFClusters(const reco::PFCluster&,
55  const std::vector<bool>&,
56  const unsigned toleranceScaling,
57  const unsigned iter,
58  double dist,
60  void clusterTimeResolution(reco::PFCluster& cluster, double& res) const;
61  void clusterTimeResolutionFromSeed(reco::PFCluster& cluster, double& res)
62  const;
63  double dist2Time(const reco::PFCluster&, const reco::PFRecHitRef&,
64  int cell_layer, double prev_timeres2) const;
65  bool passChi2Prob(size_t iCluster, double dist2,
66  std::vector<double>& clus_chi2, std::vector<size_t>& clus_chi2_nhits) const;
68 };
69 
72  "PFlow2DClusterizerWithTime");
73 
74 #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:47
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
~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:4
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::unordered_map< int, double > _recHitEnergyNorms
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
const std::unordered_map< std::string, int > _layerMap