CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
EgammaHLTPixelMatchVarProducer Class Reference
Inheritance diagram for EgammaHLTPixelMatchVarProducer:
edm::stream::EDProducer<>

Public Member Functions

std::array< float, 4 > calS2 (const reco::ElectronSeed &seed, int charge) const
 
 EgammaHLTPixelMatchVarProducer (const edm::ParameterSet &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~EgammaHLTPixelMatchVarProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

egPM::Param< reco::ElectronSeeddPhi1Para_
 
egPM::Param< reco::ElectronSeeddPhi2Para_
 
egPM::Param< reco::ElectronSeeddRZ2Para_
 
size_t nrHits_
 
const edm::EDGetTokenT< reco::ElectronSeedCollectionpixelSeedsToken_
 
int productsToWrite_
 
const edm::EDGetTokenT< reco::RecoEcalCandidateCollectionrecoEcalCandidateToken_
 

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, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 101 of file EgammaHLTPixelMatchVarProducer.cc.

Constructor & Destructor Documentation

EgammaHLTPixelMatchVarProducer::EgammaHLTPixelMatchVarProducer ( const edm::ParameterSet config)
explicit

Definition at line 125 of file EgammaHLTPixelMatchVarProducer.cc.

References nrHits_, and productsToWrite_.

125  :
126  recoEcalCandidateToken_(consumes<reco::RecoEcalCandidateCollection>(config.getParameter<edm::InputTag>("recoEcalCandidateProducer"))),
127  pixelSeedsToken_(consumes<reco::ElectronSeedCollection>(config.getParameter<edm::InputTag>("pixelSeedsProducer"))),
128  dPhi1Para_(config.getParameter<edm::ParameterSet>("dPhi1SParams")),
129  dPhi2Para_(config.getParameter<edm::ParameterSet>("dPhi2SParams")),
130  dRZ2Para_(config.getParameter<edm::ParameterSet>("dRZ2SParams")),
131  productsToWrite_(config.getParameter<int>("productsToWrite")),
132  nrHits_(4)
133 
134 {
135  //register your products
136  produces < reco::RecoEcalCandidateIsolationMap >("s2");
137  if(productsToWrite_>=1){
138  produces < reco::RecoEcalCandidateIsolationMap >("dPhi1BestS2");
139  produces < reco::RecoEcalCandidateIsolationMap >("dPhi2BestS2");
140  produces < reco::RecoEcalCandidateIsolationMap >("dzBestS2");
141  }
142  if(productsToWrite_>=2){
143  //note for product names we start from index 1
144  for(size_t hitNr=1;hitNr<=nrHits_;hitNr++){
145  produces < reco::RecoEcalCandidateIsolationMap >("dPhi"+std::to_string(hitNr));
146  produces < reco::RecoEcalCandidateIsolationMap >("dPhi"+std::to_string(hitNr)+"Info");
147  produces < reco::RecoEcalCandidateIsolationMap >("dRZ"+std::to_string(hitNr));
148  produces < reco::RecoEcalCandidateIsolationMap >("dRZ"+std::to_string(hitNr)+"Info");
149  }
150  produces < reco::RecoEcalCandidateIsolationMap >("nrClus");
151  produces < reco::RecoEcalCandidateIsolationMap >("seedClusEFrac");
152  produces < reco::RecoEcalCandidateIsolationMap >("phiWidth");
153  produces < reco::RecoEcalCandidateIsolationMap >("etaWidth");
154  }
155 
156 }
T getParameter(std::string const &) const
egPM::Param< reco::ElectronSeed > dPhi2Para_
egPM::Param< reco::ElectronSeed > dPhi1Para_
egPM::Param< reco::ElectronSeed > dRZ2Para_
const edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandidateToken_
const edm::EDGetTokenT< reco::ElectronSeedCollection > pixelSeedsToken_
EgammaHLTPixelMatchVarProducer::~EgammaHLTPixelMatchVarProducer ( )
override

Definition at line 158 of file EgammaHLTPixelMatchVarProducer.cc.

159 {}

Member Function Documentation

std::array< float, 4 > EgammaHLTPixelMatchVarProducer::calS2 ( const reco::ElectronSeed seed,
int  charge 
) const

Definition at line 309 of file EgammaHLTPixelMatchVarProducer.cc.

References DEFINE_FWK_MODULE, dPhi1Para_, dPhi2Para_, reco::ElectronSeed::dPhiNeg(), reco::ElectronSeed::dPhiPos(), dRZ2Para_, reco::ElectronSeed::dRZNeg(), reco::ElectronSeed::dRZPos(), and indexGen::s2.

Referenced by produce().

310 {
311  const float dPhi1Const = dPhi1Para_(seed);
312  const float dPhi2Const = dPhi2Para_(seed);
313  const float dRZ2Const = dRZ2Para_(seed);
314 
315  float dPhi1 = (charge <0 ? seed.dPhiNeg(0) : seed.dPhiPos(0))/dPhi1Const;
316  float dPhi2 = (charge <0 ? seed.dPhiNeg(1) : seed.dPhiPos(1))/dPhi2Const;
317  float dRz2 = (charge <0 ? seed.dRZNeg(1) : seed.dRZPos(1))/dRZ2Const;
318 
319  float s2 = dPhi1*dPhi1+dPhi2*dPhi2+dRz2*dRz2;
320  return std::array<float,4>{{s2,dPhi1,dPhi2,dRz2}};
321 }
egPM::Param< reco::ElectronSeed > dPhi2Para_
egPM::Param< reco::ElectronSeed > dPhi1Para_
float dRZPos(size_t hitNr) const
Definition: ElectronSeed.h:106
egPM::Param< reco::ElectronSeed > dRZ2Para_
float dRZNeg(size_t hitNr) const
Definition: ElectronSeed.h:107
float dPhiNeg(size_t hitNr) const
Definition: ElectronSeed.h:103
float dPhiPos(size_t hitNr) const
Definition: ElectronSeed.h:104
void EgammaHLTPixelMatchVarProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 161 of file EgammaHLTPixelMatchVarProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::ifValue(), eostools::move(), and or.

161  {
162 
164  desc.add<edm::InputTag>(("recoEcalCandidateProducer"), edm::InputTag("hltL1SeededRecoEcalCandidate"));
165  desc.add<edm::InputTag>(("pixelSeedsProducer"), edm::InputTag("electronPixelSeeds"));
166 
167  edm::ParameterSetDescription varParamDesc;
168  edm::ParameterSetDescription binParamDesc;
169 
170  auto binDescCases =
171  "AbsEtaClus" >>
172  (edm::ParameterDescription<double>("xMin",0.0,true) and
173  edm::ParameterDescription<double>("xMax",3.0,true) and
174  edm::ParameterDescription<int>("yMin",0,true) and
175  edm::ParameterDescription<int>("yMax",99999,true) and
176  edm::ParameterDescription<std::string>("funcType","pol0",true) and
177  edm::ParameterDescription<std::vector<double>>("funcParams",{0.},true)) or
178  "AbsEtaClusPhi" >>
179  (edm::ParameterDescription<double>("xMin",0.0,true) and
180  edm::ParameterDescription<double>("xMax",3.0,true) and
181  edm::ParameterDescription<int>("yMin",0,true) and
182  edm::ParameterDescription<int>("yMax",99999,true) and
183  edm::ParameterDescription<std::string>("funcType","pol0",true) and
184  edm::ParameterDescription<std::vector<double>>("funcParams",{0.},true)) or
185  "AbsEtaClusEt" >>
186  (edm::ParameterDescription<double>("xMin",0.0,true) and
187  edm::ParameterDescription<double>("xMax",3.0,true) and
188  edm::ParameterDescription<int>("yMin",0,true) and
189  edm::ParameterDescription<int>("yMax",99999,true) and
190  edm::ParameterDescription<std::string>("funcType","pol0",true) and
191  edm::ParameterDescription<std::vector<double>>("funcParams",{0.},true));
192 
193  binParamDesc.ifValue(edm::ParameterDescription<std::string>("binType","AbsEtaClus",true), std::move(binDescCases));
194 
195 
196  varParamDesc.addVPSet("bins",binParamDesc);
197  desc.add("dPhi1SParams",varParamDesc);
198  desc.add("dPhi2SParams",varParamDesc);
199  desc.add("dRZ2SParams",varParamDesc);
200  desc.add<int>("productsToWrite",0);
201  descriptions.add(("hltEgammaHLTPixelMatchVarProducer"), desc);
202 }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
HLT enums.
def move(src, dest)
Definition: eostools.py:510
void EgammaHLTPixelMatchVarProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 204 of file EgammaHLTPixelMatchVarProducer.cc.

References reco::ElectronSeed::caloCluster(), calS2(), edm::RefToBase< T >::castTo(), reco::ElectronSeed::dPhiBest(), reco::ElectronSeed::dRZBest(), edm::EventSetup::get(), edm::Event::getByToken(), edm::HandleBase::isValid(), SiStripPI::max, eostools::move(), nrHits_, pixelSeedsToken_, productsToWrite_, edm::Event::put(), and recoEcalCandidateToken_.

204  {
205 
206  // Get the HLT filtered objects
208  iEvent.getByToken(recoEcalCandidateToken_,recoEcalCandHandle);
209 
210 
212  iEvent.getByToken(pixelSeedsToken_,pixelSeedsHandle);
213 
214  if(!recoEcalCandHandle.isValid()) return;
215  else if(!pixelSeedsHandle.isValid()){
216  auto s2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
217  for(unsigned int candNr = 0; candNr<recoEcalCandHandle->size(); candNr++) {
218  reco::RecoEcalCandidateRef candRef(recoEcalCandHandle,candNr);
219  s2Map->insert(candRef,0);
220  }
221  iEvent.put(std::move(s2Map),"s2");
222  return;
223  }
224 
225  edm::ESHandle<TrackerTopology> trackerTopoHandle;
226  iSetup.get<TrackerTopologyRcd>().get(trackerTopoHandle);
227 
228  auto dPhi1BestS2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
229  auto dPhi2BestS2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
230  auto dzBestS2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
231  auto s2Map = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
232 
233  auto nrClusMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
234  auto seedClusEFracMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
235  auto phiWidthMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
236  auto etaWidthMap = std::make_unique<reco::RecoEcalCandidateIsolationMap>(recoEcalCandHandle);
237 
238  std::vector<PixelData> pixelData;
239  for(size_t hitNr=0;hitNr<nrHits_;hitNr++){
240  pixelData.emplace_back(PixelData("dPhi",hitNr,&reco::ElectronSeed::dPhiBest,recoEcalCandHandle));
241  pixelData.emplace_back(PixelData("dRZ",hitNr,&reco::ElectronSeed::dRZBest,recoEcalCandHandle));
242  }
243 
244  for(unsigned int candNr = 0; candNr<recoEcalCandHandle->size(); candNr++) {
245 
246  reco::RecoEcalCandidateRef candRef(recoEcalCandHandle,candNr);
247  reco::SuperClusterRef candSCRef = candRef->superCluster();
248 
250  for(auto & seed : *pixelSeedsHandle){
251  const edm::RefToBase<reco::CaloCluster>& pixelClusterRef = seed.caloCluster() ;
252  reco::SuperClusterRef pixelSCRef = pixelClusterRef.castTo<reco::SuperClusterRef>() ;
253  if(&(*candSCRef) == &(*pixelSCRef)){
254 
255  std::array<float,4> s2Data = calS2(seed,-1);
256  std::array<float,4> s2DataPos = calS2(seed,+1);
257  if(s2Data[0]<bestS2[0]) bestS2=s2Data;
258  if(s2DataPos[0]<bestS2[0]) bestS2=s2DataPos;
259 
260  if(productsToWrite_>=2){
261  for(auto& pixelDatum : pixelData){
262  pixelDatum.fill(seed);
263  }
264  }
265  }
266  }
267 
268 
269  s2Map->insert(candRef,bestS2[0]);
270  if(productsToWrite_>=1){
271  dPhi1BestS2Map->insert(candRef,bestS2[1]);
272  dPhi2BestS2Map->insert(candRef,bestS2[2]);
273  dzBestS2Map->insert(candRef,bestS2[3]);
274  }
275  if(productsToWrite_>=2){
276  nrClusMap->insert(candRef,candSCRef->clustersSize());
277  float seedClusEFrac = candSCRef->rawEnergy()>0 ? candSCRef->seed()->energy() / candSCRef->rawEnergy() : 0.;
278  // std::cout <<"cand "<<candSCRef->energy()<<" E Corr "<<candSCRef->correctedEnergyUncertainty()<<" "<<candSCRef->correctedEnergy()<<" width "<<candSCRef->phiWidth()<<std::endl;
279  // float seedClusEFrac = candSCRef->phiWidth();
280  seedClusEFracMap->insert(candRef,seedClusEFrac);
281  float phiWidth = candSCRef->phiWidth();
282  float etaWidth = candSCRef->etaWidth();
283  phiWidthMap->insert(candRef,phiWidth);
284  etaWidthMap->insert(candRef,etaWidth);
285 
286  for(auto& pixelDatum : pixelData){
287  pixelDatum.fill(candRef);
288  }
289  }
290  }
291 
292  iEvent.put(std::move(s2Map),"s2");
293  if(productsToWrite_>=1){
294  iEvent.put(std::move(dPhi1BestS2Map),"dPhi1BestS2");
295  iEvent.put(std::move(dPhi2BestS2Map),"dPhi2BestS2");
296  iEvent.put(std::move(dzBestS2Map),"dzBestS2");
297  }
298  if(productsToWrite_>=2){
299  for(auto& pixelDatum : pixelData){
300  pixelDatum.putInto(iEvent);
301  }
302  iEvent.put(std::move(nrClusMap),"nrClus");
303  iEvent.put(std::move(seedClusEFracMap),"seedClusEFrac");
304  iEvent.put(std::move(phiWidthMap),"phiWidth");
305  iEvent.put(std::move(etaWidthMap),"etaWidth");
306  }
307 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:136
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
const edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandidateToken_
bool isValid() const
Definition: HandleBase.h:74
float dPhiBest(size_t hitNr) const
Definition: ElectronSeed.h:105
std::array< float, 4 > calS2(const reco::ElectronSeed &seed, int charge) const
REF castTo() const
Definition: RefToBase.h:286
const T & get() const
Definition: EventSetup.h:59
float dRZBest(size_t hitNr) const
Definition: ElectronSeed.h:108
const edm::EDGetTokenT< reco::ElectronSeedCollection > pixelSeedsToken_
def move(src, dest)
Definition: eostools.py:510

Member Data Documentation

egPM::Param<reco::ElectronSeed> EgammaHLTPixelMatchVarProducer::dPhi1Para_
private

Definition at line 117 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by calS2().

egPM::Param<reco::ElectronSeed> EgammaHLTPixelMatchVarProducer::dPhi2Para_
private

Definition at line 118 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by calS2().

egPM::Param<reco::ElectronSeed> EgammaHLTPixelMatchVarProducer::dRZ2Para_
private

Definition at line 119 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by calS2().

size_t EgammaHLTPixelMatchVarProducer::nrHits_
private

Definition at line 122 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by EgammaHLTPixelMatchVarProducer(), and produce().

const edm::EDGetTokenT<reco::ElectronSeedCollection> EgammaHLTPixelMatchVarProducer::pixelSeedsToken_
private

Definition at line 115 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by produce().

int EgammaHLTPixelMatchVarProducer::productsToWrite_
private

Definition at line 121 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by EgammaHLTPixelMatchVarProducer(), and produce().

const edm::EDGetTokenT<reco::RecoEcalCandidateCollection> EgammaHLTPixelMatchVarProducer::recoEcalCandidateToken_
private

Definition at line 114 of file EgammaHLTPixelMatchVarProducer.cc.

Referenced by produce().