CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
ElectronSeedProducer Class Reference

#include <ElectronSeedProducer.h>

Inheritance diagram for ElectronSeedProducer:
edm::stream::EDProducer<> edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

virtual void beginRun (edm::Run const &, edm::EventSetup const &) overridefinal
 
 ElectronSeedProducer (const edm::ParameterSet &)
 
virtual void endRun (edm::Run const &, edm::EventSetup const &) overridefinal
 
virtual void produce (edm::Event &, const edm::EventSetup &) overridefinal
 
virtual ~ElectronSeedProducer ()
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void filterClusters (const reco::BeamSpot &bs, const edm::Handle< reco::SuperClusterCollection > &superClusters, reco::SuperClusterRefVector &sclRefs, std::vector< float > &hoe1s, std::vector< float > &hoe2s)
 
void filterSeeds (edm::Event &e, const edm::EventSetup &setup, reco::SuperClusterRefVector &sclRefs)
 

Private Attributes

bool applyHOverECut_
 
edm::EDGetTokenT< reco::BeamSpotbeamSpotTag_
 
edm::ESHandle< CaloGeometrycaloGeom_
 
unsigned long long caloGeomCacheId_
 
edm::ESHandle< CaloTopologycaloTopo_
 
unsigned long long caloTopoCacheId_
 
edm::ParameterSet conf_
 
edm::EDGetTokenT< std::vector
< reco::Vertex > > 
filterVtxTag_
 
bool fromTrackerSeeds_
 
ElectronHcalHelperhcalHelper_
 
edm::EDGetTokenT
< TrajectorySeedCollection
initialSeeds_
 
ElectronSeedGeneratormatcher_
 
double maxHBarrel_
 
double maxHEndcaps_
 
double maxHOverEBarrel_
 
double maxHOverEEndcaps_
 
bool prefilteredSeeds_
 
double SCEtCut_
 
std::unique_ptr< SeedFilterseedFilter_
 
edm::EDGetTokenT
< reco::SuperClusterCollection
superClusters_ [2]
 
TrajectorySeedCollectiontheInitialSeedColl
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- 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 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

Description: MeasurementEstimator for Pixel Barrel, ported from ORCA Class defining the search area in the barrel in the pixel match Implementation: <Notes on="" implementation>="">

Description: MeasurementEstimator for Pixel Barrel, ported from ORCA

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

Description: EDProducer of ElectronSeed objects

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

Definition at line 40 of file ElectronSeedProducer.h.

Constructor & Destructor Documentation

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

Definition at line 51 of file ElectronSeedProducer.cc.

References applyHOverECut_, beamSpotTag_, conf_, edm::EDConsumerBase::consumesCollector(), filterVtxTag_, fromTrackerSeeds_, edm::ParameterSet::getParameter(), hcalHelper_, ElectronHcalHelper::Configuration::hcalTowers, ElectronHcalHelper::Configuration::hOverEConeSize, ElectronHcalHelper::Configuration::hOverEPtMin, initialSeeds_, matcher_, maxHBarrel_, maxHEndcaps_, maxHOverEBarrel_, maxHOverEEndcaps_, prefilteredSeeds_, SCEtCut_, seedFilter_, superClusters_, SeedFilter::Tokens::token_bs, ElectronSeedGenerator::Tokens::token_bs, ElectronSeedGenerator::Tokens::token_measTrkEvt, SeedFilter::Tokens::token_vtx, ElectronSeedGenerator::Tokens::token_vtx, funct::true, and ElectronHcalHelper::Configuration::useTowers.

52  : //conf_(iConfig),
53  applyHOverECut_(true), hcalHelper_(0),
55  {
56  conf_ = iConfig.getParameter<edm::ParameterSet>("SeedConfiguration") ;
57 
58  initialSeeds_ = consumes<TrajectorySeedCollection>(conf_.getParameter<edm::InputTag>("initialSeeds")) ;
59  SCEtCut_ = conf_.getParameter<double>("SCEtCut") ;
60  fromTrackerSeeds_ = conf_.getParameter<bool>("fromTrackerSeeds") ;
61  prefilteredSeeds_ = conf_.getParameter<bool>("preFilteredSeeds") ;
62 
63  // new beamSpot tag
64  beamSpotTag_ = consumes<reco::BeamSpot>(conf_.getParameter<edm::InputTag>("beamSpot"));
65 
66  // for H/E
67  applyHOverECut_ = conf_.getParameter<bool>("applyHOverECut") ;
68  if (applyHOverECut_)
69  {
71  hcalCfg.hOverEConeSize = conf_.getParameter<double>("hOverEConeSize") ;
72  if (hcalCfg.hOverEConeSize>0)
73  {
74  hcalCfg.useTowers = true ;
75  hcalCfg.hcalTowers =
76  consumes<CaloTowerCollection>(conf_.getParameter<edm::InputTag>("hcalTowers")) ;
77  hcalCfg.hOverEPtMin = conf_.getParameter<double>("hOverEPtMin") ;
78  }
79  hcalHelper_ = new ElectronHcalHelper(hcalCfg) ;
80  maxHOverEBarrel_=conf_.getParameter<double>("maxHOverEBarrel") ;
81  maxHOverEEndcaps_=conf_.getParameter<double>("maxHOverEEndcaps") ;
82  maxHBarrel_=conf_.getParameter<double>("maxHBarrel") ;
83  maxHEndcaps_=conf_.getParameter<double>("maxHEndcaps") ;
84  }
85 
87  filterVtxTag_ = consumes<std::vector<reco::Vertex> >(rpset.getParameter<edm::InputTag> ("VertexProducer"));
88 
90  esg_tokens.token_bs = beamSpotTag_;
91  esg_tokens.token_vtx = mayConsume<reco::VertexCollection>(conf_.getParameter<edm::InputTag>("vertices"));
92  esg_tokens.token_measTrkEvt= consumes<MeasurementTrackerEvent>(conf_.getParameter<edm::InputTag>("measurementTrackerEvent"));
93 
94  matcher_ = new ElectronSeedGenerator(conf_,esg_tokens) ;
95 
96  // get collections from config'
97  superClusters_[0]=
98  consumes<reco::SuperClusterCollection>(iConfig.getParameter<edm::InputTag>("barrelSuperClusters")) ;
99  superClusters_[1]=
100  consumes<reco::SuperClusterCollection>(iConfig.getParameter<edm::InputTag>("endcapSuperClusters")) ;
101 
102  // Construction of SeedFilter was in beginRun() with the comment
103  // below, but it has to be done here because of ConsumesCollector
104  //
105  // FIXME: because of a bug presumably in tracker seeding,
106  // perhaps in CombinedHitPairGenerator, badly caching some EventSetup product,
107  // we must redo the SeedFilter for each run.
108  if (prefilteredSeeds_) {
109  SeedFilter::Tokens sf_tokens;
110  sf_tokens.token_bs = beamSpotTag_;
111  sf_tokens.token_vtx = filterVtxTag_;
113  seedFilter_.reset(new SeedFilter(conf_, sf_tokens, iC));
114  }
115 
116  //register your products
117  produces<ElectronSeedCollection>() ;
118 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::BeamSpot > token_bs
unsigned long long caloGeomCacheId_
edm::EDGetTokenT< std::vector< reco::Vertex > > filterVtxTag_
edm::EDGetTokenT< TrajectorySeedCollection > initialSeeds_
edm::EDGetTokenT< MeasurementTrackerEvent > token_measTrkEvt
edm::ESHandle< CaloTopology > caloTopo_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::unique_ptr< SeedFilter > seedFilter_
edm::ParameterSet conf_
edm::ESHandle< CaloGeometry > caloGeom_
ElectronSeedGenerator * matcher_
edm::EDGetTokenT< reco::SuperClusterCollection > superClusters_[2]
unsigned long long caloTopoCacheId_
edm::EDGetTokenT< reco::BeamSpot > token_bs
Definition: SeedFilter.h:37
edm::EDGetTokenT< CaloTowerCollection > hcalTowers
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
edm::EDGetTokenT< std::vector< reco::Vertex > > token_vtx
ElectronHcalHelper * hcalHelper_
edm::EDGetTokenT< std::vector< reco::Vertex > > token_vtx
Definition: SeedFilter.h:36
ElectronSeedProducer::~ElectronSeedProducer ( )
virtual

Definition at line 126 of file ElectronSeedProducer.cc.

References hcalHelper_, and matcher_.

127  {
128  delete hcalHelper_ ;
129  delete matcher_ ;
130  }
ElectronSeedGenerator * matcher_
ElectronHcalHelper * hcalHelper_

Member Function Documentation

void ElectronSeedProducer::beginRun ( edm::Run const &  ,
edm::EventSetup const &   
)
finaloverridevirtual

Reimplemented from edm::stream::EDProducerBase.

Definition at line 120 of file ElectronSeedProducer.cc.

121 {}
void ElectronSeedProducer::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
finaloverridevirtual

Reimplemented from edm::stream::EDProducerBase.

Definition at line 123 of file ElectronSeedProducer.cc.

124 {}
void ElectronSeedProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 266 of file ElectronSeedProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), HLT_25ns14e33_v1_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

266  {
268  desc.add<edm::InputTag>("endcapSuperClusters",edm::InputTag("particleFlowSuperClusterECAL","particleFlowSuperClusterECALEndcapWithPreshower"));
269  {
270  edm::ParameterSetDescription psd0, psd1, psd2, psd3;
271  psd1.add<unsigned int>("maxElement", 0);
272  psd1.add<std::string>("ComponentName", std::string("StandardHitPairGenerator"));
273  psd1.addUntracked<int>("useOnDemandTracker", 0);
274  psd1.add<edm::InputTag>("SeedingLayers", edm::InputTag("hltMixedLayerPairs"));
275  psd0.add<edm::ParameterSetDescription>("OrderedHitsFactoryPSet", psd1);
276 
277  psd2.add<double>("deltaPhiRegion", 0.4);
278  psd2.add<double>("originHalfLength", 15.0);
279  psd2.add<bool>("useZInVertex", true);
280  psd2.add<double>("deltaEtaRegion", 0.1);
281  psd2.add<double>("ptMin", 1.5 );
282  psd2.add<double>("originRadius", 0.2);
283  psd2.add<edm::InputTag>("VertexProducer", edm::InputTag("dummyVertices"));
284  psd0.add<edm::ParameterSetDescription>("RegionPSet", psd2);
285 
286  psd0.add<double>("PhiMax2B",0.002);
287  psd0.add<double>("hOverEPtMin",0.0);
288  psd0.add<double>("PhiMax2F",0.003);
289  psd0.add<bool>("searchInTIDTEC",true);
290  psd0.add<double>("pPhiMax1",0.125);
291  psd0.add<double>("HighPtThreshold",35.0);
292  psd0.add<double>("r2MinF",-0.15);
293  psd0.add<double>("maxHBarrel",0.0);
294  psd0.add<double>("DeltaPhi1Low",0.23);
295  psd0.add<double>("DeltaPhi1High",0.08);
296  psd0.add<double>("ePhiMin1",-0.125);
297  psd0.add<edm::InputTag>("hcalTowers",edm::InputTag("towerMaker"));
298  psd0.add<double>("LowPtThreshold",5.0);
299  psd0.add<double>("maxHOverEBarrel",0.15);
300  psd0.add<bool>("dynamicPhiRoad",true);
301  psd0.add<double>("ePhiMax1",0.075);
302  psd0.add<std::string>("measurementTrackerName","");
303  psd0.add<double>("SizeWindowENeg",0.675);
304  psd0.add<double>("nSigmasDeltaZ1",5.0);
305  psd0.add<double>("rMaxI",0.2);
306  psd0.add<double>("maxHEndcaps",0.0);
307  psd0.add<bool>("preFilteredSeeds",false);
308  psd0.add<double>("r2MaxF",0.15);
309  psd0.add<double>("hOverEConeSize",0.15);
310  psd0.add<double>("pPhiMin1",-0.075);
311  psd0.add<edm::InputTag>("initialSeeds",edm::InputTag("newCombinedSeeds"));
312  psd0.add<double>("deltaZ1WithVertex",25.0);
313  psd0.add<double>("SCEtCut",0.0);
314  psd0.add<double>("z2MaxB",0.09);
315  psd0.add<bool>("fromTrackerSeeds",true);
316  psd0.add<edm::InputTag>("hcalRecHits",edm::InputTag("hbhereco"));
317  psd0.add<double>("z2MinB",-0.09);
318  psd0.add<double>("rMinI",-0.2);
319  psd0.add<double>("maxHOverEEndcaps",0.15);
320  psd0.add<double>("hOverEHBMinE",0.7);
321  psd0.add<bool>("useRecoVertex",false);
322  psd0.add<edm::InputTag>("beamSpot",edm::InputTag("offlineBeamSpot"));
323  psd0.add<edm::InputTag>("measurementTrackerEvent",edm::InputTag("MeasurementTrackerEvent"));
324  psd0.add<edm::InputTag>("vertices",edm::InputTag("offlinePrimaryVerticesWithBS"));
325  psd0.add<bool>("applyHOverECut",true);
326  psd0.add<double>("DeltaPhi2F",0.012);
327  psd0.add<double>("PhiMin2F",-0.003);
328  psd0.add<double>("hOverEHFMinE",0.8);
329  psd0.add<double>("DeltaPhi2B",0.008);
330  psd0.add<double>("PhiMin2B",-0.002);
331 
332  psd3.add<std::string>("ComponentName",std::string("SeedFromConsecutiveHitsCreator"));
333  psd3.add<std::string>("propagator",std::string("PropagatorWithMaterial"));
334  psd3.add<double>("SeedMomentumForBOFF",5.0);
335  psd3.add<double>("OriginTransverseErrorMultiplier",1.0);
336  psd3.add<double>("MinOneOverPtError",1.0);
337  psd3.add<std::string>("magneticField",std::string(""));
338  psd3.add<std::string>("TTRHBuilder",std::string("WithTrackAngle"));
339  psd3.add<bool>("forceKinematicWithRegionDirection",false);
340  psd0.add<edm::ParameterSetDescription>("SeedCreatorPSet",psd3);
341 
342  desc.add<edm::ParameterSetDescription>("SeedConfiguration",psd0);
343  }
344  desc.add<edm::InputTag>("barrelSuperClusters",edm::InputTag("particleFlowSuperClusterECAL","particleFlowSuperClusterECALBarrel"));
345  descriptions.add("ecalDrivenElectronSeeds",desc);
346 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void ElectronSeedProducer::filterClusters ( const reco::BeamSpot bs,
const edm::Handle< reco::SuperClusterCollection > &  superClusters,
reco::SuperClusterRefVector sclRefs,
std::vector< float > &  hoe1s,
std::vector< float > &  hoe2s 
)
private

Definition at line 211 of file ElectronSeedProducer.cc.

References EcalBarrel, EcalEndcap, reco::CaloCluster::energy(), eta(), edm::false, i, infinity, LogDebug, reco::BeamSpot::position(), reco::CaloCluster::position(), edm::RefVector< C, T, F >::push_back(), reco::SuperCluster::seed(), and edm::RefVector< C, T, F >::size().

Referenced by produce().

215  {
216  for (unsigned int i=0;i<superClusters->size();++i)
217  {
218  const SuperCluster & scl = (*superClusters)[i] ;
219  double sclEta = EleRelPoint(scl.position(),bs.position()).eta() ;
220  if (scl.energy()/cosh(sclEta)>SCEtCut_)
221  {
222 // if ((applyHOverECut_==true)&&((hcalHelper_->hcalESum(scl)/scl.energy()) > maxHOverE_))
223 // { continue ; }
224 // sclRefs.push_back(edm::Ref<reco::SuperClusterCollection>(superClusters,i)) ;
225  double had1, had2, had, scle ;
226  bool HoeVeto = false ;
227  if (applyHOverECut_==true)
228  {
229  had1 = hcalHelper_->hcalESumDepth1(scl);
230  had2 = hcalHelper_->hcalESumDepth2(scl);
231  had = had1+had2 ;
232  scle = scl.energy() ;
233  int detector = scl.seed()->hitsAndFractions()[0].first.subdetId() ;
234  if (detector==EcalBarrel && (had<maxHBarrel_ || had/scle<maxHOverEBarrel_)) HoeVeto=true;
235  else if (detector==EcalEndcap && (had<maxHEndcaps_ || had/scle<maxHOverEEndcaps_)) HoeVeto=true;
236  if (HoeVeto)
237  {
238  sclRefs.push_back(edm::Ref<reco::SuperClusterCollection>(superClusters,i)) ;
239  hoe1s.push_back(had1/scle) ;
240  hoe2s.push_back(had2/scle) ;
241  }
242  }
243  else
244  {
245  sclRefs.push_back(edm::Ref<reco::SuperClusterCollection>(superClusters,i)) ;
246  hoe1s.push_back(std::numeric_limits<float>::infinity()) ;
247  hoe2s.push_back(std::numeric_limits<float>::infinity()) ;
248  }
249  }
250  }
251  LogDebug("ElectronSeedProducer")<<"Filtered out "<<sclRefs.size()<<" superclusters from "<<superClusters->size() ;
252  }
#define LogDebug(id)
const math::XYZPoint & position() const
cluster centroid position
Definition: CaloCluster.h:126
int i
Definition: DBlmapReader.cc:9
T eta() const
const double infinity
double hcalESumDepth2(const reco::SuperCluster &, const std::vector< CaloTowerDetId > *excludeTowers=0)
double energy() const
cluster energy
Definition: CaloCluster.h:121
double hcalESumDepth1(const reco::SuperCluster &, const std::vector< CaloTowerDetId > *excludeTowers=0)
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
const Point & position() const
position
Definition: BeamSpot.h:62
const CaloClusterPtr & seed() const
seed BasicCluster
Definition: SuperCluster.h:66
volatile std::atomic< bool > shutdown_flag false
ElectronHcalHelper * hcalHelper_
void ElectronSeedProducer::filterSeeds ( edm::Event e,
const edm::EventSetup setup,
reco::SuperClusterRefVector sclRefs 
)
private

Definition at line 255 of file ElectronSeedProducer.cc.

References i, LogDebug, and edm::RefVector< C, T, F >::size().

Referenced by produce().

257  {
258  for ( unsigned int i=0 ; i<sclRefs.size() ; ++i )
259  {
260  seedFilter_->seeds(event,setup,sclRefs[i],theInitialSeedColl) ;
261  LogDebug("ElectronSeedProducer")<<"Number of Seeds: "<<theInitialSeedColl->size() ;
262  }
263  }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::unique_ptr< SeedFilter > seedFilter_
TrajectorySeedCollection * theInitialSeedColl
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
void ElectronSeedProducer::produce ( edm::Event e,
const edm::EventSetup iSetup 
)
finaloverridevirtual

Implements edm::stream::EDProducerBase.

Definition at line 132 of file ElectronSeedProducer.cc.

References beamSpotTag_, edm::eventsetup::EventSetupRecord::cacheIdentifier(), caloGeom_, caloGeomCacheId_, caloTopo_, caloTopoCacheId_, edm::RefToBase< T >::castTo(), ElectronHcalHelper::checkSetup(), HLT_25ns14e33_v1_cff::clusters, filterClusters(), filterSeeds(), fromTrackerSeeds_, edm::EventSetup::get(), edm::Event::getByToken(), hcalHelper_, i, edm::Ref< C, T, F >::id(), initialSeeds_, LogDebug, matcher_, prefilteredSeeds_, edm::Handle< T >::product(), edm::Event::put(), ElectronHcalHelper::readEvent(), ElectronSeedGenerator::run(), ElectronSeedGenerator::setupES(), superClusters_, and theInitialSeedColl.

133  {
134  LogDebug("ElectronSeedProducer") <<"[ElectronSeedProducer::produce] entering " ;
135 
136  edm::Handle<reco::BeamSpot> theBeamSpot ;
137  e.getByToken(beamSpotTag_,theBeamSpot) ;
138 
139  if (hcalHelper_)
140  {
141  hcalHelper_->checkSetup(iSetup) ;
142  hcalHelper_->readEvent(e) ;
143  }
144 
145  // get calo geometry
147  iSetup.get<CaloGeometryRecord>().get(caloGeom_);
148  caloGeomCacheId_=iSetup.get<CaloGeometryRecord>().cacheIdentifier();
149  }
151  caloTopoCacheId_=iSetup.get<CaloTopologyRecord>().cacheIdentifier();
152  iSetup.get<CaloTopologyRecord>().get(caloTopo_);
153  }
154 
155  matcher_->setupES(iSetup);
156 
157  // get initial TrajectorySeeds if necessary
158  if (fromTrackerSeeds_)
159  {
160  if (!prefilteredSeeds_)
161  {
163  e.getByToken(initialSeeds_, hSeeds);
164  theInitialSeedColl = const_cast<TrajectorySeedCollection *> (hSeeds.product());
165  }
166  else
168  }
169  else
170  { theInitialSeedColl = 0 ; } // not needed in this case
171 
173 
174  // loop over barrel + endcap
175  for (unsigned int i=0; i<2; i++) {
177  e.getByToken(superClusters_[i],clusters);
178  SuperClusterRefVector clusterRefs ;
179  std::vector<float> hoe1s, hoe2s ;
180  filterClusters(*theBeamSpot,clusters,/*mhbhe_,*/clusterRefs,hoe1s,hoe2s);
182  { filterSeeds(e,iSetup,clusterRefs) ; }
183  matcher_->run(e,iSetup,clusterRefs,hoe1s,hoe2s,theInitialSeedColl,*seeds);
184  }
185 
186  // store the accumulated result
187  std::auto_ptr<ElectronSeedCollection> pSeeds(seeds) ;
188  ElectronSeedCollection::iterator is ;
189  for ( is=pSeeds->begin() ; is!=pSeeds->end() ; is++ ) {
190  edm::RefToBase<CaloCluster> caloCluster = is->caloCluster() ;
191  SuperClusterRef superCluster = caloCluster.castTo<SuperClusterRef>() ;
192  LogDebug("ElectronSeedProducer")
193  << "new seed with "
194  << (*is).nHits() << " hits"
195  << ", charge " << (*is).getCharge()
196  << " and cluster energy " << superCluster->energy()
197  << " PID "<<superCluster.id() ;
198  }
199  e.put(pSeeds) ;
201  }
#define LogDebug(id)
unsigned long long cacheIdentifier() const
int i
Definition: DBlmapReader.cc:9
void readEvent(const edm::Event &)
void setupES(const edm::EventSetup &setup)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
unsigned long long caloGeomCacheId_
void checkSetup(const edm::EventSetup &)
edm::EDGetTokenT< TrajectorySeedCollection > initialSeeds_
void run(edm::Event &, const edm::EventSetup &setup, const reco::SuperClusterRefVector &, const std::vector< float > &hoe1s, const std::vector< float > &hoe2s, TrajectorySeedCollection *seeds, reco::ElectronSeedCollection &)
ProductID id() const
Accessor for product ID.
Definition: Ref.h:256
edm::ESHandle< CaloTopology > caloTopo_
void filterClusters(const reco::BeamSpot &bs, const edm::Handle< reco::SuperClusterCollection > &superClusters, reco::SuperClusterRefVector &sclRefs, std::vector< float > &hoe1s, std::vector< float > &hoe2s)
std::vector< TrajectorySeed > TrajectorySeedCollection
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:113
std::vector< ElectronSeed > ElectronSeedCollection
collection of ElectronSeed objects
edm::ESHandle< CaloGeometry > caloGeom_
T const * product() const
Definition: Handle.h:81
ElectronSeedGenerator * matcher_
TrajectorySeedCollection * theInitialSeedColl
REF castTo() const
cast to a concrete type
Definition: RefToBase.h:241
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< reco::SuperClusterCollection > superClusters_[2]
unsigned long long caloTopoCacheId_
void filterSeeds(edm::Event &e, const edm::EventSetup &setup, reco::SuperClusterRefVector &sclRefs)
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
ElectronHcalHelper * hcalHelper_

Member Data Documentation

bool ElectronSeedProducer::applyHOverECut_
private

Definition at line 77 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

edm::EDGetTokenT<reco::BeamSpot> ElectronSeedProducer::beamSpotTag_
private

Definition at line 66 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), and produce().

edm::ESHandle<CaloGeometry> ElectronSeedProducer::caloGeom_
private

Definition at line 81 of file ElectronSeedProducer.h.

Referenced by produce().

unsigned long long ElectronSeedProducer::caloGeomCacheId_
private

Definition at line 82 of file ElectronSeedProducer.h.

Referenced by produce().

edm::ESHandle<CaloTopology> ElectronSeedProducer::caloTopo_
private

Definition at line 83 of file ElectronSeedProducer.h.

Referenced by produce().

unsigned long long ElectronSeedProducer::caloTopoCacheId_
private

Definition at line 84 of file ElectronSeedProducer.h.

Referenced by produce().

edm::ParameterSet ElectronSeedProducer::conf_
private

Definition at line 68 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

edm::EDGetTokenT<std::vector<reco::Vertex> > ElectronSeedProducer::filterVtxTag_
private

Definition at line 65 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

bool ElectronSeedProducer::fromTrackerSeeds_
private

Definition at line 98 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), and produce().

ElectronHcalHelper* ElectronSeedProducer::hcalHelper_
private

Definition at line 78 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), produce(), and ~ElectronSeedProducer().

edm::EDGetTokenT<TrajectorySeedCollection> ElectronSeedProducer::initialSeeds_
private

Definition at line 64 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), and produce().

ElectronSeedGenerator* ElectronSeedProducer::matcher_
private

Definition at line 69 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), produce(), and ~ElectronSeedProducer().

double ElectronSeedProducer::maxHBarrel_
private

Definition at line 90 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

double ElectronSeedProducer::maxHEndcaps_
private

Definition at line 91 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

double ElectronSeedProducer::maxHOverEBarrel_
private

Definition at line 88 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

double ElectronSeedProducer::maxHOverEEndcaps_
private

Definition at line 89 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

bool ElectronSeedProducer::prefilteredSeeds_
private

Definition at line 99 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), and produce().

double ElectronSeedProducer::SCEtCut_
private

Definition at line 96 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

std::unique_ptr<SeedFilter> ElectronSeedProducer::seedFilter_
private

Definition at line 70 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer().

edm::EDGetTokenT<reco::SuperClusterCollection> ElectronSeedProducer::superClusters_[2]
private

Definition at line 63 of file ElectronSeedProducer.h.

Referenced by ElectronSeedProducer(), and produce().

TrajectorySeedCollection* ElectronSeedProducer::theInitialSeedColl
private

Definition at line 72 of file ElectronSeedProducer.h.

Referenced by produce().