CMS 3D CMS Logo

HybridClusterAlgo.h
Go to the documentation of this file.
1 #ifndef RecoEcal_EgammaClusterAlgos_HybridClusterAlgo_h
2 #define RecoEcal_EgammaClusterAlgos_HybridClusterAlgo_h
3 
18 
20 
21 #include <vector>
22 #include <set>
23 
25 
27 private:
28  //Quick typedef for position calculation.
30 
31  //Thresholds for seeds.
32  double eb_st;
33 
34  //Number of steps in phi that the Hybrid algorithm will take
35  //when clustering. Remember, uses phiSteps_ in positive direction
36  //and then phiSteps_ in negative direction.
37  int phiSteps_;
38 
39  // et in 25
43  // ratio Et/e
47 
49 
50  //Threshold for basic cluster.
51  double eThres_;
52  double eThresA_;
53  double eThresB_;
54 
55  //Threshold for becoming a sub-peak in the supercluster.
56  double Eseed;
57 
58  //Coefficient to increase Eseed as a function of 5x5
59  double Xi;
60 
61  //Increase Eseed as a function of et_5x5 (othwewise it's e_5x5)
62  bool UseEtForXi;
63 
64  //Threshold for adding the additional two 'wing' cells to domino.
65  double Ewing;
66 
67  // do dynamic phi road
69 
70  // do dynamic ethres
72 
73  //Map of DetId, RecHit relationship. EcalRecHit knows what DetId it is,
74  //but DetId doesn't know what EcalRecHit it is.
75  // std::map<DetId, EcalRecHit> rechits_m;
76 
77  // colection of all rechits
79 
80  // topology
82 
83  // SuperClusterShapeAlgo* SCShape_;
84 
85  //Set of DetIds that have already been used.
86  std::set<DetId> useddetids;
87 
88  // The vector of seeds:
89  std::vector<EcalRecHit> seeds;
90 
91  //The vector of seed clusters:
92  std::vector<reco::BasicCluster> seedClus_;
93 
94  //Map of basicclusters and what supercluster they will belong to.
95  std::map<int, std::vector<reco::BasicCluster> > clustered_;
96 
97  //algo to calulate position of clusters
99 
100  // channels not to be used for seeding
101  std::vector<int> v_chstatus_;
102 
103  // severity levels to discriminate against
104  std::vector<int> v_severitylevel_;
107 
109  std::set<DetId> excludedCrys_;
110 
111 public:
112  //The default constructor
114 
115  //The real constructor
116  HybridClusterAlgo(double eb_str,
117  int step,
118  double ethres,
119  double eseed,
120  double xi,
121  bool useEtForXi,
122  double ewing,
123  const std::vector<int> &v_chstatus,
124  const PositionCalc &posCalculator,
125  bool dynamicEThres = false,
126  double eThresA = 0,
127  double eThresB = 0.1,
128  const std::vector<int> &severityToExclude = std::vector<int>().operator=(std::vector<int>(999)),
129  //double severityRecHitThreshold=0.08,
130  //int severitySpikeId=1,
131  //double severitySpikeThreshold=0,
132  bool excludeFromCluster = false);
133  // const edm::ParameterSet &bremRecoveryPset,
134 
135  // destructor
137  if (dynamicPhiRoad_)
138  delete phiRoadAlgo_;
139  delete topo_;
140  // delete SCShape_;
141  }
142 
144  dynamicPhiRoad_ = true;
146  }
147 
148  //Hand over the map, the geometry, and I'll hand you back clusters.
149  void makeClusters(const EcalRecHitCollection *,
151  reco::BasicClusterCollection &basicClusters,
152  const EcalSeverityLevelAlgo *sevLv,
153  bool regional = false,
154  const std::vector<RectangularEtaPhiRegion> &regions = std::vector<RectangularEtaPhiRegion>());
155 
156  //Make superclusters from the references to the BasicClusters in the event.
158 
159  //The routine doing the real work.
161 
162  //Make dominos for the hybrid method.
163  double makeDomino(EcalBarrelNavigatorHT &navigator, std::vector<EcalRecHit> &cells);
164 };
165 
166 #endif
EcalSeverityLevelAlgo
Definition: EcalSeverityLevelAlgo.h:33
HybridClusterAlgo::severityRecHitThreshold_
float severityRecHitThreshold_
Definition: HybridClusterAlgo.h:105
HybridClusterAlgo::topo_
EcalBarrelHardcodedTopology * topo_
Definition: HybridClusterAlgo.h:81
HybridClusterAlgo::severitySpikeThreshold_
float severitySpikeThreshold_
Definition: HybridClusterAlgo.h:106
hybridSuperClusters_cfi.eseed
eseed
Definition: hybridSuperClusters_cfi.py:8
HybridClusterAlgo::makeClusters
void makeClusters(const EcalRecHitCollection *, const CaloSubdetectorGeometry *geometry, reco::BasicClusterCollection &basicClusters, const EcalSeverityLevelAlgo *sevLv, bool regional=false, const std::vector< RectangularEtaPhiRegion > &regions=std::vector< RectangularEtaPhiRegion >())
Definition: HybridClusterAlgo.cc:60
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
HybridClusterAlgo::eb_st
double eb_st
Definition: HybridClusterAlgo.h:32
step
step
Definition: StallMonitor.cc:94
HLT_FULL_cff.navigator
navigator
Definition: HLT_FULL_cff.py:13192
HybridClusterAlgo::phiSteps_
int phiSteps_
Definition: HybridClusterAlgo.h:37
BasicCluster.h
RectangularEtaPhiRegion.h
HybridClusterAlgo::Xi
double Xi
Definition: HybridClusterAlgo.h:59
geometry
Definition: geometry.py:1
hybridSuperClusters_cfi.xi
xi
Definition: hybridSuperClusters_cfi.py:10
HybridClusterAlgo::excludeFromCluster_
bool excludeFromCluster_
Definition: HybridClusterAlgo.h:108
BremRecoveryPhiRoadAlgo.h
edm::SortedCollection< EcalRecHit >
EcalRecHitCollections.h
BasicClusterFwd.h
reco::SuperClusterCollection
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
Definition: SuperClusterFwd.h:9
SuperClusterShapeAlgo.h
HybridClusterAlgo::seeds
std::vector< EcalRecHit > seeds
Definition: HybridClusterAlgo.h:89
HybridClusterAlgo::phiRoadAlgo_
BremRecoveryPhiRoadAlgo * phiRoadAlgo_
Definition: HybridClusterAlgo.h:48
HybridClusterAlgo::clustered_
std::map< int, std::vector< reco::BasicCluster > > clustered_
Definition: HybridClusterAlgo.h:95
HybridClusterAlgo::mainSearch
void mainSearch(const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
Definition: HybridClusterAlgo.cc:173
edm::PtrVector< CaloCluster >
HybridClusterAlgo::Ewing
double Ewing
Definition: HybridClusterAlgo.h:65
BremRecoveryPhiRoadAlgo
Definition: BremRecoveryPhiRoadAlgo.h:14
HybridClusterAlgo::v_chstatus_
std::vector< int > v_chstatus_
Definition: HybridClusterAlgo.h:101
HybridClusterAlgo::useddetids
std::set< DetId > useddetids
Definition: HybridClusterAlgo.h:86
HybridClusterAlgo::posCalculator_
PositionCalc posCalculator_
Definition: HybridClusterAlgo.h:98
EcalBarrelHardcodedTopology
Definition: EcalBarrelHardcodedTopology.h:9
HybridClusterAlgo::e2Et
double e2Et(EcalBarrelNavigatorHT &navigator, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
Definition: HybridClusterAlgo.cc:640
HybridClusterAlgo::excludedCrys_
std::set< DetId > excludedCrys_
Definition: HybridClusterAlgo.h:109
HybridClusterAlgo::eThresA_
double eThresA_
Definition: HybridClusterAlgo.h:52
reco::BasicClusterCollection
std::vector< BasicCluster > BasicClusterCollection
collection of BasicCluster objects
Definition: BasicClusterFwd.h:16
HybridClusterAlgo::UseEtForXi
bool UseEtForXi
Definition: HybridClusterAlgo.h:62
HybridClusterAlgo::makeDomino
double makeDomino(EcalBarrelNavigatorHT &navigator, std::vector< EcalRecHit > &cells)
Definition: HybridClusterAlgo.cc:525
CaloSubdetectorGeometry.h
HybridClusterAlgo
Definition: HybridClusterAlgo.h:26
edm::ParameterSet
Definition: ParameterSet.h:47
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
HybridClusterAlgo::eThres_
double eThres_
Definition: HybridClusterAlgo.h:51
PositionCalc
Definition: PositionCalc.h:29
HybridClusterAlgo::setDynamicPhiRoad
void setDynamicPhiRoad(const edm::ParameterSet &bremRecoveryPset)
Definition: HybridClusterAlgo.h:143
HybridClusterAlgo::makeSuperClusters
reco::SuperClusterCollection makeSuperClusters(const reco::CaloClusterPtrVector &)
Definition: HybridClusterAlgo.cc:450
cosmicSuperClusters_cfi.bremRecoveryPset
bremRecoveryPset
Definition: cosmicSuperClusters_cfi.py:26
HybridClusterAlgo::Point
math::XYZPoint Point
Definition: HybridClusterAlgo.h:29
HybridClusterAlgo::dynamicEThres_
bool dynamicEThres_
Definition: HybridClusterAlgo.h:71
EcalBarrelHardcodedTopology.h
EcalRecHit.h
HybridClusterAlgo::et25
double et25(EcalBarrelNavigatorHT &navigator, const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry)
Definition: HybridClusterAlgo.cc:608
CaloNavigator
Definition: CaloNavigator.h:7
hybridSuperClusters_cfi.useEtForXi
useEtForXi
Definition: hybridSuperClusters_cfi.py:12
SuperClusterFwd.h
HybridClusterAlgo::eThresB_
double eThresB_
Definition: HybridClusterAlgo.h:53
HybridClusterAlgo::v_severitylevel_
std::vector< int > v_severitylevel_
Definition: HybridClusterAlgo.h:104
SuperCluster.h
HybridClusterAlgo::dynamicPhiRoad_
bool dynamicPhiRoad_
Definition: HybridClusterAlgo.h:68
postprocess-scan-build.cells
cells
Definition: postprocess-scan-build.py:13
CaloGeometry.h
HybridClusterAlgo::HybridClusterAlgo
HybridClusterAlgo()
Definition: HybridClusterAlgo.h:113
HybridClusterAlgo::Eseed
double Eseed
Definition: HybridClusterAlgo.h:56
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
AlignmentPI::regions
regions
Definition: AlignmentPayloadInspectorHelper.h:76
ParameterSet.h
HybridClusterAlgo::recHits_
const EcalRecHitCollection * recHits_
Definition: HybridClusterAlgo.h:78
EcalBarrelNavigator.h
HybridClusterAlgo::~HybridClusterAlgo
~HybridClusterAlgo()
Definition: HybridClusterAlgo.h:136
hybridSuperClusters_cfi.ewing
ewing
Definition: hybridSuperClusters_cfi.py:18
HybridClusterAlgo::seedClus_
std::vector< reco::BasicCluster > seedClus_
Definition: HybridClusterAlgo.h:92