CMS 3D CMS Logo

Multi5x5ClusterProducer.cc
Go to the documentation of this file.
1 // C/C++ headers
2 #include <iostream>
3 #include <vector>
4 #include <memory>
5 
6 // Framework
14 
15 // Reconstruction Classes
22 
23 // Geometry
28 
29 // EgammaCoreTools
31 
32 // Class header file
34 
36  // Parameters to identify the hit collections
37  barrelHitToken_ = consumes<EcalRecHitCollection>(ps.getParameter<edm::InputTag>("barrelHitTag"));
38 
39  endcapHitToken_ = consumes<EcalRecHitCollection>(ps.getParameter<edm::InputTag>("endcapHitTag"));
40 
41  //EventSetup Token for CaloGeometry
42  caloGeometryToken_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
43 
44  // should cluster algo be run in barrel and endcap?
45  doEndcap_ = ps.getParameter<bool>("doEndcap");
46  doBarrel_ = ps.getParameter<bool>("doBarrel");
47 
48  // The names of the produced cluster collections
49  barrelClusterCollection_ = ps.getParameter<std::string>("barrelClusterCollection");
50  endcapClusterCollection_ = ps.getParameter<std::string>("endcapClusterCollection");
51 
52  // Island algorithm parameters
53  double barrelSeedThreshold = ps.getParameter<double>("IslandBarrelSeedThr");
54  double endcapSeedThreshold = ps.getParameter<double>("IslandEndcapSeedThr");
55 
56  const std::vector<std::string> flagnames = ps.getParameter<std::vector<std::string> >("RecHitFlagToBeExcluded");
57 
58  const std::vector<int> v_chstatus = StringToEnumValue<EcalRecHit::Flags>(flagnames);
59 
60  // Parameters for the position calculation:
63 
64  // Produces a collection of barrel and a collection of endcap clusters
65  produces<reco::BasicClusterCollection>(endcapClusterCollection_);
66  produces<reco::BasicClusterCollection>(barrelClusterCollection_);
67 
69  if (ps.exists("reassignSeedCrysToClusterItSeeds"))
70  reassignSeedCrysToClusterItSeeds = ps.getParameter<bool>("reassignSeedCrysToClusterItSeeds");
71 
73  barrelSeedThreshold, endcapSeedThreshold, v_chstatus, posCalculator_, reassignSeedCrysToClusterItSeeds);
74 
75  nEvt_ = 0;
76 }
77 
79 
81  if (doEndcap_) {
83  }
84  if (doBarrel_) {
86  }
87 
88  nEvt_++;
89 }
90 
94  evt.getByToken(token, rhcHandle);
95  return rhcHandle.product();
96 }
97 
99  const edm::EventSetup& es,
101  const std::string& clusterCollection,
103  // get the hit collection from the event:
104  const EcalRecHitCollection* hitCollection_p = getCollection(evt, token);
105 
106  // get the geometry and topology from the event setup:
108 
109  const CaloSubdetectorGeometry* geometry_p;
110  std::unique_ptr<CaloSubdetectorTopology> topology_p;
111 
113  geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalBarrel);
114  topology_p = std::make_unique<EcalBarrelTopology>(*geoHandle);
115  } else {
116  geometry_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalEndcap);
117  topology_p = std::make_unique<EcalEndcapTopology>(*geoHandle);
118  }
119 
120  const CaloSubdetectorGeometry* geometryES_p;
121  geometryES_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower);
122 
123  // Run the clusterization algorithm:
125  clusters = island_p->makeClusters(hitCollection_p, geometry_p, topology_p.get(), geometryES_p, detector);
126 
127  // create a unique_ptr to a BasicClusterCollection, copy the barrel clusters into it and put in the Event:
128  auto clusters_p = std::make_unique<reco::BasicClusterCollection>();
129  clusters_p->assign(clusters.begin(), clusters.end());
132  bccHandle = evt.put(std::move(clusters_p), barrelClusterCollection_);
133  else
134  bccHandle = evt.put(std::move(clusters_p), endcapClusterCollection_);
135 }
Handle.h
PositionCalc.h
Multi5x5ClusterProducer::~Multi5x5ClusterProducer
~Multi5x5ClusterProducer() override
Definition: Multi5x5ClusterProducer.cc:78
MessageLogger.h
edm::Handle::product
T const * product() const
Definition: Handle.h:70
ESHandle.h
Multi5x5ClusterProducer::barrelHitToken_
edm::EDGetTokenT< EcalRecHitCollection > barrelHitToken_
Definition: Multi5x5ClusterProducer.h:43
reco::CaloID::Detectors
Detectors
Definition: CaloID.h:19
BasicCluster.h
edm::EDGetTokenT
Definition: EDGetToken.h:33
Multi5x5ClusterProducer::barrelClusterCollection_
std::string barrelClusterCollection_
Definition: Multi5x5ClusterProducer.h:47
reco::CaloID::DET_ECAL_ENDCAP
Definition: CaloID.h:21
EBDetId.h
EcalBarrelTopology.h
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
CaloID.h
edm::SortedCollection< EcalRecHit >
MonitorAlCaEcalPi0_cfi.posCalcParameters
posCalcParameters
Definition: MonitorAlCaEcalPi0_cfi.py:72
edm::Handle
Definition: AssociativeIterator.h:50
EcalBarrel
Definition: EcalSubdetector.h:10
EcalRecHitCollections.h
Multi5x5ClusterProducer::endcapHitToken_
edm::EDGetTokenT< EcalRecHitCollection > endcapHitToken_
Definition: Multi5x5ClusterProducer.h:44
BasicClusterFwd.h
Multi5x5ClusterProducer::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: Multi5x5ClusterProducer.cc:80
Multi5x5ClusterProducer::Multi5x5ClusterProducer
Multi5x5ClusterProducer(const edm::ParameterSet &ps)
Definition: Multi5x5ClusterProducer.cc:35
Multi5x5ClusterProducer::nEvt_
int nEvt_
Definition: Multi5x5ClusterProducer.h:37
edm::ESHandle< CaloGeometry >
Multi5x5ClusterProducer::island_p
Multi5x5ClusterAlgo * island_p
Definition: Multi5x5ClusterProducer.h:51
Multi5x5ClusterAlgo::makeClusters
std::vector< reco::BasicCluster > makeClusters(const EcalRecHitCollection *hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology_p, const CaloSubdetectorGeometry *geometryES_p, reco::CaloID::Detectors detector, bool regional=false, const std::vector< RectangularEtaPhiRegion > &regions=std::vector< RectangularEtaPhiRegion >())
Definition: Multi5x5ClusterAlgo.cc:54
Multi5x5ClusterAlgo
Definition: Multi5x5ClusterAlgo.h:27
StringToEnumValue.h
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:531
Multi5x5ClusterProducer::doEndcap_
bool doEndcap_
Definition: Multi5x5ClusterProducer.h:41
reco::BasicClusterCollection
std::vector< BasicCluster > BasicClusterCollection
collection of BasicCluster objects
Definition: BasicClusterFwd.h:16
multi5x5BasicClusters_cfi.reassignSeedCrysToClusterItSeeds
reassignSeedCrysToClusterItSeeds
Definition: multi5x5BasicClusters_cfi.py:25
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalEndcap
Definition: EcalSubdetector.h:10
bsc_activity_cfg.clusters
clusters
Definition: bsc_activity_cfg.py:36
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
Multi5x5ClusterProducer::endcapClusterCollection_
std::string endcapClusterCollection_
Definition: Multi5x5ClusterProducer.h:48
CaloSubdetectorGeometry.h
Multi5x5ClusterProducer::getCollection
const EcalRecHitCollection * getCollection(edm::Event &evt, const edm::EDGetTokenT< EcalRecHitCollection > &token)
Definition: Multi5x5ClusterProducer.cc:91
edm::ParameterSet
Definition: ParameterSet.h:47
Multi5x5ClusterProducer::caloGeometryToken_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
Definition: Multi5x5ClusterProducer.h:45
Event.h
EcalEndcapTopology.h
Multi5x5ClusterProducer::doBarrel_
bool doBarrel_
Definition: Multi5x5ClusterProducer.h:40
PositionCalc
Definition: PositionCalc.h:29
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:148
Multi5x5ClusterProducer::posCalculator_
PositionCalc posCalculator_
Definition: Multi5x5ClusterProducer.h:50
edm::EventSetup
Definition: EventSetup.h:57
DetId::Ecal
Definition: DetId.h:27
EcalRecHit.h
EcalPreshower
Definition: EcalSubdetector.h:10
CaloCellGeometry.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::OrphanHandle
Definition: EDProductfwd.h:39
EventSetup.h
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Exception.h
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
Multi5x5ClusterProducer::clusterizeECALPart
void clusterizeECALPart(edm::Event &evt, const edm::EventSetup &es, const edm::EDGetTokenT< EcalRecHitCollection > &token, const std::string &clusterCollection, const reco::CaloID::Detectors detector)
Definition: Multi5x5ClusterProducer.cc:98
edm::Event
Definition: Event.h:73
edm::InputTag
Definition: InputTag.h:15
reco::CaloID::DET_ECAL_BARREL
Definition: CaloID.h:20
Multi5x5ClusterProducer.h
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:318