CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
AlCaECALRecHitReducer Class Reference

#include <Calibration/EcalAlCaRecoProducers/src/AlCaECALRecHitReducer.cc>

Inheritance diagram for AlCaECALRecHitReducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 AlCaECALRecHitReducer (const edm::ParameterSet &)
 ctor More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 producer More...
 
 ~AlCaECALRecHitReducer () override
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void AddMiniRecHitCollection (const reco::SuperCluster &sc, std::set< DetId > &reducedRecHitMap, const CaloTopology *caloTopology)
 

Private Attributes

std::string alcaBarrelHitsCollection_
 
std::string alcaCaloClusterCollection_
 
std::string alcaEndcapHitsCollection_
 
std::string alcaPreshowerHitsCollection_
 
edm::EDGetTokenT< EcalRecHitCollectionebRecHitsToken_
 
edm::EDGetTokenT< EcalRecHitCollectioneeRecHitsToken_
 
edm::EDGetTokenT< reco::SuperClusterCollectionEESuperClusterToken_
 
edm::EDGetTokenT< reco::GsfElectronCollectionelectronToken_
 
std::vector< edm::EDGetTokenT< edm::View< reco::RecoCandidate > > > eleViewTokens_
 
edm::EDGetTokenT< EcalRecHitCollectionesRecHitsToken_
 
int etaSize_
 
double minEta_highEtaSC_
 
int phiSize_
 
edm::EDGetTokenT< reco::PhotonCollectionphotonToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

class declaration

Description: Example of a producer of AlCa electrons

Implementation: <Notes on="" implementation>="">

Description: This plugin saves tracks and trackExtras that are associated to an electron creating two new track and track extra collections

Definition at line 47 of file AlCaECALRecHitReducer.h.

Constructor & Destructor Documentation

AlCaECALRecHitReducer::AlCaECALRecHitReducer ( const edm::ParameterSet iConfig)
explicit

ctor

This module reduces the recHitCollections and the caloCalusterCollections in input keeping only those associated to the given electrons/photons

Definition at line 23 of file AlCaECALRecHitReducer.cc.

References alcaBarrelHitsCollection_, alcaCaloClusterCollection_, alcaEndcapHitsCollection_, edm::EDConsumerBase::consumes(), ebRecHitsToken_, eeRecHitsToken_, EESuperClusterToken_, eleViewTokens_, etaSize_, edm::ParameterSet::getParameter(), SimL1EmulatorRepack_Full_cff::inputTag, minEta_highEtaSC_, phiSize_, photonToken_, and AlCaHLTBitMon_QueryRunRegistry::string.

23  {
24  ebRecHitsToken_ = consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("ebRecHitsLabel"));
25  eeRecHitsToken_ = consumes<EcalRecHitCollection>(iConfig.getParameter<edm::InputTag>("eeRecHitsLabel"));
26  // esRecHitsLabel_ = iConfig.getParameter< edm::InputTag > ("esRecHitsLabel");
27 
28  std::vector<edm::InputTag> srcLabels = iConfig.getParameter<std::vector<edm::InputTag> >("srcLabels");
29  for (auto inputTag = srcLabels.begin(); inputTag != srcLabels.end(); ++inputTag) {
31  }
32 
33  //eleViewToken_ = consumes<edm::View <reco::RecoCandidate> > (iConfig.getParameter< edm::InputTag > ("electronLabel"));
34  photonToken_ = consumes<reco::PhotonCollection>(iConfig.getParameter<edm::InputTag>("photonLabel"));
36  consumes<reco::SuperClusterCollection>(iConfig.getParameter<edm::InputTag>("EESuperClusterCollection"));
37 
38  minEta_highEtaSC_ = iConfig.getParameter<double>("minEta_highEtaSC");
39 
40  alcaBarrelHitsCollection_ = iConfig.getParameter<std::string>("alcaBarrelHitCollection");
41  alcaEndcapHitsCollection_ = iConfig.getParameter<std::string>("alcaEndcapHitCollection");
42  alcaCaloClusterCollection_ = iConfig.getParameter<std::string>("alcaCaloClusterCollection");
43 
44  // alcaPreshowerHitsCollection_ = iConfig.getParameter<std::string>("alcaPreshowerHitCollection");
45 
46  etaSize_ = iConfig.getParameter<int>("etaSize");
47  phiSize_ = iConfig.getParameter<int>("phiSize");
48  // FIXME: minimum size of etaSize_ and phiSize_
49  if (phiSize_ % 2 == 0 || etaSize_ % 2 == 0)
50  edm::LogError("AlCaECALRecHitReducerError") << "Size of eta/phi should be odd numbers";
51 
52  // esNstrips_ = iConfig.getParameter<int> ("esNstrips");
53  // esNcolumns_ = iConfig.getParameter<int> ("esNcolumns");
54 
55  //register your products
56  produces<EBRecHitCollection>(alcaBarrelHitsCollection_);
57  produces<EERecHitCollection>(alcaEndcapHitsCollection_);
58  produces<reco::CaloClusterCollection>(alcaCaloClusterCollection_);
59  // produces< ESRecHitCollection > (alcaPreshowerHitsCollection_) ;
60 }
T getParameter(std::string const &) const
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< reco::SuperClusterCollection > EESuperClusterToken_
std::string alcaCaloClusterCollection_
edm::EDGetTokenT< reco::PhotonCollection > photonToken_
std::vector< edm::EDGetTokenT< edm::View< reco::RecoCandidate > > > eleViewTokens_
edm::EDGetTokenT< EcalRecHitCollection > eeRecHitsToken_
edm::EDGetTokenT< EcalRecHitCollection > ebRecHitsToken_
AlCaECALRecHitReducer::~AlCaECALRecHitReducer ( )
override

Definition at line 62 of file AlCaECALRecHitReducer.cc.

62 {}

Member Function Documentation

void AlCaECALRecHitReducer::AddMiniRecHitCollection ( const reco::SuperCluster sc,
std::set< DetId > &  reducedRecHitMap,
const CaloTopology caloTopology 
)
private

Definition at line 193 of file AlCaECALRecHitReducer.cc.

References DEFINE_FWK_MODULE, EcalBarrel, interestingDetIdCollectionProducer_cfi::etaSize, etaSize_, CaloTopology::getWindow(), reco::CaloCluster::hitsAndFractions(), mps_fire::i, SiStripPI::max, interestingDetIdCollectionProducer_cfi::phiSize, phiSize_, reco::SuperCluster::seed(), SurveyInfoScenario_cff::seed, and DetId::subdetId().

Referenced by produce().

195  {
196  DetId seed = (sc.seed()->seed());
197  int phiSize = phiSize_, etaSize = etaSize_;
198  if (seed.subdetId() != EcalBarrel) { // if not EB, take a square window
199  etaSize = std::max(phiSize_, etaSize_);
200  phiSize = etaSize;
201  }
202 
203  std::vector<DetId> recHit_window = caloTopology->getWindow(seed, phiSize, etaSize);
204  for (unsigned int i = 0; i < recHit_window.size(); i++) {
205  reducedRecHitMap.insert(recHit_window[i]);
206  }
207 
208  const std::vector<std::pair<DetId, float> >& scHits = sc.hitsAndFractions();
209  for (std::vector<std::pair<DetId, float> >::const_iterator scHit_itr = scHits.begin(); scHit_itr != scHits.end();
210  scHit_itr++) {
211  // the map fills just one time (avoiding double insert of recHits)
212  reducedRecHitMap.insert(scHit_itr->first);
213  }
214 
215  return;
216 }
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
Definition: CaloCluster.h:209
std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
Get the neighbors of the given cell in a window of given size.
Definition: CaloTopology.cc:64
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
Definition: DetId.h:17
const CaloClusterPtr & seed() const
seed BasicCluster
Definition: SuperCluster.h:77
void AlCaECALRecHitReducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

producer

Definition at line 65 of file AlCaECALRecHitReducer.cc.

References AddMiniRecHitCollection(), alcaBarrelHitsCollection_, alcaCaloClusterCollection_, alcaEndcapHitsCollection_, reco::SuperCluster::clustersBegin(), reco::SuperCluster::clustersEnd(), ebRecHitsToken_, eeRecHitsToken_, EESuperClusterToken_, eleViewTokens_, edm::SortedCollection< T, SORT >::end(), reco::CaloCluster::eta(), edm::SortedCollection< T, SORT >::find(), edm::EventSetup::get(), edm::Event::getByToken(), minEta_highEtaSC_, eostools::move(), photonToken_, edm::Handle< T >::product(), edm::ESHandle< T >::product(), edm::Event::put(), and SimDataFormats::CaloAnalysis::sc.

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

65  {
66  using namespace edm;
67  //using namespace std;
68 
69  edm::ESHandle<CaloTopology> theCaloTopology;
70  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
71  const CaloTopology* caloTopology = theCaloTopology.product();
72 
73  // Get Photons
75  iEvent.getByToken(photonToken_, phoHandle);
76 
77  // get RecHits
78  Handle<EBRecHitCollection> barrelRecHitsHandle;
79  iEvent.getByToken(ebRecHitsToken_, barrelRecHitsHandle);
80  const EBRecHitCollection* barrelHitsCollection = barrelRecHitsHandle.product();
81 
82  // get RecHits
83  Handle<EERecHitCollection> endcapRecHitsHandle;
84  iEvent.getByToken(eeRecHitsToken_, endcapRecHitsHandle);
85  const EERecHitCollection* endcapHitsCollection = endcapRecHitsHandle.product();
86 
87  // // get ES RecHits
88  // Handle<ESRecHitCollection> preshowerRecHitsHandle;
89  // iEvent.getByToken(esRecHitsToken_,preshowerRecHitsHandle);
90 
91  // const ESRecHitCollection * preshowerHitsCollection = 0 ;
92  // if (preshowerIsFull)
93  // preshowerHitsCollection = preshowerRecHitsHandle.product () ;
94 
95  // // make a vector to store the used ES rechits:
96  // set<ESDetId> used_strips;
97  // used_strips.clear();
98 
99  // for Z->ele+SC
101  iEvent.getByToken(EESuperClusterToken_, EESCHandle);
102 
103  //Create empty output collections
104  auto miniEBRecHitCollection = std::make_unique<EBRecHitCollection>();
105  auto miniEERecHitCollection = std::make_unique<EERecHitCollection>();
106  // auto miniESRecHitCollection = std::make_unique<ESRecHitCollection>();
107 
108  std::set<DetId> reducedRecHit_EBmap;
109  std::set<DetId> reducedRecHit_EEmap;
110 
111  // std::set< edm::Ref<reco::CaloCluster> > reducedCaloClusters_map;
112 
113  auto reducedCaloClusterCollection = std::make_unique<reco::CaloClusterCollection>();
114 
115  //Photons:
116 #ifdef shervin
117  for (reco::PhotonCollection::const_iterator phoIt = phoHandle->begin(); phoIt != phoHandle->end(); phoIt++) {
118  const reco::SuperCluster& sc = *(phoIt->superCluster());
119 
120  if (phoIt->isEB()) {
121  AddMiniRecHitCollection(sc, reducedRecHit_EBmap, caloTopology);
122  } else { // endcap
123  AddMiniRecHitCollection(sc, reducedRecHit_EEmap, caloTopology);
124  } // end of endcap
125 
129  for (; it != itend; ++it) {
130  reco::CaloCluster caloClus(**it);
131  reducedCaloClusterCollection->push_back(caloClus);
132  }
133  }
134 #endif
135 
137  for (auto iToken = eleViewTokens_.begin(); iToken != eleViewTokens_.end(); iToken++) {
138  iEvent.getByToken(*iToken, eleViewHandle);
139 
140  //Electrons:
141  for (auto eleIt = eleViewHandle->begin(); eleIt != eleViewHandle->end(); eleIt++) {
142  const reco::SuperCluster& sc = *(eleIt->superCluster());
143 
144  if (fabs(sc.eta()) < 1.479) {
145  AddMiniRecHitCollection(sc, reducedRecHit_EBmap, caloTopology);
146  } else { // endcap
147  AddMiniRecHitCollection(sc, reducedRecHit_EEmap, caloTopology);
148  } // end of endcap
149 
152  for (; it != itend; ++it) {
153  reco::CaloCluster caloClus(**it);
154  reducedCaloClusterCollection->push_back(caloClus);
155  }
156  }
157  }
158 
159  //saving recHits for highEta SCs for highEta studies
160  for (reco::SuperClusterCollection::const_iterator SC_iter = EESCHandle->begin(); SC_iter != EESCHandle->end();
161  SC_iter++) {
162  if (fabs(SC_iter->eta()) < minEta_highEtaSC_)
163  continue;
164  AddMiniRecHitCollection(*SC_iter, reducedRecHit_EEmap, caloTopology);
165 
166  const reco::SuperCluster& sc = *(SC_iter);
169  for (; it != itend; ++it) {
170  reco::CaloCluster caloClus(**it);
171  reducedCaloClusterCollection->push_back(caloClus);
172  }
173  }
174 
175  //------------------------------ fill the alcareco reduced recHit collection
176  for (std::set<DetId>::const_iterator itr = reducedRecHit_EBmap.begin(); itr != reducedRecHit_EBmap.end(); itr++) {
177  if (barrelHitsCollection->find(*itr) != barrelHitsCollection->end())
178  miniEBRecHitCollection->push_back(*(barrelHitsCollection->find(*itr)));
179  }
180 
181  for (std::set<DetId>::const_iterator itr = reducedRecHit_EEmap.begin(); itr != reducedRecHit_EEmap.end(); itr++) {
182  if (endcapHitsCollection->find(*itr) != endcapHitsCollection->end())
183  miniEERecHitCollection->push_back(*(endcapHitsCollection->find(*itr)));
184  }
185 
186  //--------------------------------------- Put selected information in the event
187  iEvent.put(std::move(miniEBRecHitCollection), alcaBarrelHitsCollection_);
188  iEvent.put(std::move(miniEERecHitCollection), alcaEndcapHitsCollection_);
189  // iEvent.put(std::move(miniESRecHitCollection),alcaPreshowerHitsCollection_ );
190  iEvent.put(std::move(reducedCaloClusterCollection), alcaCaloClusterCollection_);
191 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:180
void AddMiniRecHitCollection(const reco::SuperCluster &sc, std::set< DetId > &reducedRecHitMap, const CaloTopology *caloTopology)
edm::EDGetTokenT< reco::SuperClusterCollection > EESuperClusterToken_
const_iterator end() const
T const * product() const
Definition: Handle.h:69
std::string alcaCaloClusterCollection_
edm::EDGetTokenT< reco::PhotonCollection > photonToken_
iterator find(key_type k)
HLT enums.
std::vector< edm::EDGetTokenT< edm::View< reco::RecoCandidate > > > eleViewTokens_
T get() const
Definition: EventSetup.h:73
edm::EDGetTokenT< EcalRecHitCollection > eeRecHitsToken_
CaloCluster_iterator clustersBegin() const
fist iterator over BasicCluster constituents
Definition: SuperCluster.h:86
T const * product() const
Definition: ESHandle.h:86
edm::EDGetTokenT< EcalRecHitCollection > ebRecHitsToken_
def move(src, dest)
Definition: eostools.py:511
CaloCluster_iterator clustersEnd() const
last iterator over BasicCluster constituents
Definition: SuperCluster.h:89

Member Data Documentation

std::string AlCaECALRecHitReducer::alcaBarrelHitsCollection_
private

Definition at line 67 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

std::string AlCaECALRecHitReducer::alcaCaloClusterCollection_
private

Definition at line 80 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

std::string AlCaECALRecHitReducer::alcaEndcapHitsCollection_
private

Definition at line 68 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

std::string AlCaECALRecHitReducer::alcaPreshowerHitsCollection_
private

Definition at line 69 of file AlCaECALRecHitReducer.h.

edm::EDGetTokenT<EcalRecHitCollection> AlCaECALRecHitReducer::ebRecHitsToken_
private

Definition at line 59 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> AlCaECALRecHitReducer::eeRecHitsToken_
private

Definition at line 60 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

edm::EDGetTokenT<reco::SuperClusterCollection> AlCaECALRecHitReducer::EESuperClusterToken_
private

Definition at line 66 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

edm::EDGetTokenT<reco::GsfElectronCollection> AlCaECALRecHitReducer::electronToken_
private

Definition at line 62 of file AlCaECALRecHitReducer.h.

std::vector<edm::EDGetTokenT<edm::View<reco::RecoCandidate> > > AlCaECALRecHitReducer::eleViewTokens_
private

Definition at line 63 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

edm::EDGetTokenT<EcalRecHitCollection> AlCaECALRecHitReducer::esRecHitsToken_
private

Definition at line 61 of file AlCaECALRecHitReducer.h.

int AlCaECALRecHitReducer::etaSize_
private

Definition at line 70 of file AlCaECALRecHitReducer.h.

Referenced by AddMiniRecHitCollection(), and AlCaECALRecHitReducer().

double AlCaECALRecHitReducer::minEta_highEtaSC_
private

Definition at line 79 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().

int AlCaECALRecHitReducer::phiSize_
private

Definition at line 71 of file AlCaECALRecHitReducer.h.

Referenced by AddMiniRecHitCollection(), and AlCaECALRecHitReducer().

edm::EDGetTokenT<reco::PhotonCollection> AlCaECALRecHitReducer::photonToken_
private

Definition at line 65 of file AlCaECALRecHitReducer.h.

Referenced by AlCaECALRecHitReducer(), and produce().