CMS 3D CMS Logo

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

Public Member Functions

void beginRun (edm::Run const &, const edm::EventSetup &es) final
 
 ConvertedPhotonProducer (const edm::ParameterSet &ps)
 
void produce (edm::Event &evt, const edm::EventSetup &es) override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

void buildCollections (edm::EventSetup const &es, const edm::Handle< edm::View< reco::CaloCluster >> &scHandle, const edm::Handle< edm::View< reco::CaloCluster >> &bcHandle, ElectronHcalHelper const &hcalHelper, const edm::Handle< reco::TrackCollection > &trkHandle, std::map< std::vector< reco::TransientTrack >, reco::CaloClusterPtr, CompareTwoTracksVectors > &allPairs, reco::ConversionCollection &outputConvPhotonCollection)
 
float calculateMinApproachDistance (const reco::TrackRef &track1, const reco::TrackRef &track2)
 
void cleanCollections (const edm::Handle< edm::View< reco::CaloCluster >> &scHandle, const edm::OrphanHandle< reco::ConversionCollection > &conversionHandle, reco::ConversionCollection &outputCollection)
 
void getCircleCenter (const reco::TrackRef &tk, double r, double &x0, double &y0)
 
std::vector< reco::ConversionRefsolveAmbiguity (const edm::OrphanHandle< reco::ConversionCollection > &conversionHandle, reco::CaloClusterPtr const &sc)
 
math::XYZPointF toFConverterP (const math::XYZPoint &val)
 
math::XYZVectorF toFConverterV (const math::XYZVector &val)
 

Private Attributes

std::string algoName_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcBarrelCollection_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcEndcapCollection_
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordcaloGeomToken_
 
edm::EDPutTokenT< reco::ConversionCollectioncleanedConvertedPhotonCollectionPutToken_
 
edm::EDGetTokenT< reco::TrackCollectionconversionIOTrackProducer_
 
edm::EDGetTokenT< reco::TrackCollectionconversionOITrackProducer_
 
edm::EDPutTokenT< reco::ConversionCollectionconvertedPhotonCollectionPutToken_
 
double deltaCotCut_
 
double dRForConversionRecovery_
 
edm::EDGetTokenT< reco::TrackCollectiongeneralTrackProducer_
 
edm::EDGetTokenT< HBHERecHitCollectionhbheRecHits_
 
std::unique_ptr< ElectronHcalHelperhcalHelper_
 
double hOverEConeSize_
 
edm::EDGetTokenT< reco::TrackCaloClusterPtrAssociationinOutTrackSCAssociationCollection_
 
ConversionLikelihoodCalculator likelihoodCalc_
 
std::string likelihoodWeights_
 
MagneticField const * magneticField_
 
double maxHOverE_
 
int maxNumOfCandidates_
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmFToken_
 
double minApproachDisCut_
 
double minSCEt_
 
edm::EDGetTokenT< reco::TrackCaloClusterPtrAssociationoutInTrackSCAssociationCollection_
 
bool recoverOneTrackCase_
 
bool risolveAmbiguity_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scHybridBarrelProducer_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scIslandEndcapProducer_
 
ConversionTrackPairFinder trackPairFinder_
 
TransientTrackBuilder const * transientTrackBuilder_
 
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecordtransientTrackToken_
 
ConversionVertexFinder vertexFinder_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

Author
Nancy Marinelli, U. of Notre Dame, US

Definition at line 44 of file ConvertedPhotonProducer.cc.

Constructor & Destructor Documentation

◆ ConvertedPhotonProducer()

ConvertedPhotonProducer::ConvertedPhotonProducer ( const edm::ParameterSet ps)

Definition at line 122 of file ConvertedPhotonProducer.cc.

References AlCaHLTBitMon_QueryRunRegistry::string.

123  : conversionOITrackProducer_{consumes(config.getParameter<std::string>("conversionOITrackProducer"))},
124  conversionIOTrackProducer_{consumes(config.getParameter<std::string>("conversionIOTrackProducer"))},
125  outInTrackSCAssociationCollection_{consumes({config.getParameter<std::string>("conversionOITrackProducer"),
126  config.getParameter<std::string>("outInTrackSCAssociation")})},
127  inOutTrackSCAssociationCollection_{consumes({config.getParameter<std::string>("conversionIOTrackProducer"),
128  config.getParameter<std::string>("inOutTrackSCAssociation")})},
129 
130  generalTrackProducer_{consumes(config.getParameter<edm::InputTag>("generalTracksSrc"))},
132  produces<reco::ConversionCollection>(config.getParameter<std::string>("convertedPhotonCollection"))},
134  produces<reco::ConversionCollection>(config.getParameter<std::string>("cleanedConvertedPhotonCollection"))},
135 
136  bcBarrelCollection_{consumes(config.getParameter<edm::InputTag>("bcBarrelCollection"))},
137  bcEndcapCollection_{consumes(config.getParameter<edm::InputTag>("bcEndcapCollection"))},
138  scHybridBarrelProducer_{consumes(config.getParameter<edm::InputTag>("scHybridBarrelProducer"))},
139  scIslandEndcapProducer_{consumes(config.getParameter<edm::InputTag>("scIslandEndcapProducer"))},
140  hbheRecHits_{consumes(config.getParameter<edm::InputTag>("hbheRecHits"))},
142  mFToken_{esConsumes<MagneticField, IdealMagneticFieldRecord, edm::Transition::BeginRun>()},
143  transientTrackToken_{esConsumes<TransientTrackBuilder, TransientTrackRecord, edm::Transition::BeginRun>(
144  edm::ESInputTag("", "TransientTrackBuilder"))},
146  algoName_{config.getParameter<std::string>("AlgorithmName")},
147 
148  hOverEConeSize_{config.getParameter<double>("hOverEConeSize")},
149  maxHOverE_{config.getParameter<double>("maxHOverE")},
150  minSCEt_{config.getParameter<double>("minSCEt")},
151  recoverOneTrackCase_{config.getParameter<bool>("recoverOneTrackCase")},
152  dRForConversionRecovery_{config.getParameter<double>("dRForConversionRecovery")},
153  deltaCotCut_{config.getParameter<double>("deltaCotCut")},
154  minApproachDisCut_{config.getParameter<double>("minApproachDisCut")},
155 
156  maxNumOfCandidates_{config.getParameter<int>("maxNumOfCandidates")},
157  risolveAmbiguity_{config.getParameter<bool>("risolveConversionAmbiguity")},
158  likelihoodWeights_{config.getParameter<std::string>("MVA_weights_location")} {
159  // instantiate the Track Pair Finder algorithm
161 
164  if (cfgCone.hOverEConeSize > 0) {
165  cfgCone.onlyBehindCluster = false;
166  cfgCone.checkHcalStatus = false;
167 
168  cfgCone.hbheRecHits = hbheRecHits_;
169 
170  cfgCone.eThresHB = config.getParameter<EgammaHcalIsolation::arrayHB>("recHitEThresholdHB");
171  cfgCone.maxSeverityHB = config.getParameter<int>("maxHcalRecHitSeverity");
172  cfgCone.eThresHE = config.getParameter<EgammaHcalIsolation::arrayHE>("recHitEThresholdHE");
173  cfgCone.maxSeverityHE = cfgCone.maxSeverityHB;
174  }
175 
176  hcalHelper_ = std::make_unique<ElectronHcalHelper>(cfgCone, consumesCollector());
177 }
edm::EDPutTokenT< reco::ConversionCollection > cleanedConvertedPhotonCollectionPutToken_
edm::EDGetTokenT< reco::TrackCaloClusterPtrAssociation > outInTrackSCAssociationCollection_
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcEndcapCollection_
edm::EDPutTokenT< reco::ConversionCollection > convertedPhotonCollectionPutToken_
edm::EDGetTokenT< reco::TrackCollection > conversionIOTrackProducer_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scIslandEndcapProducer_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeomToken_
Definition: config.py:1
std::unique_ptr< ElectronHcalHelper > hcalHelper_
edm::EDGetTokenT< HBHERecHitCollection > hbheRecHits_
edm::EDGetTokenT< HBHERecHitCollection > hbheRecHits
edm::EDGetTokenT< reco::TrackCollection > generalTrackProducer_
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackToken_
edm::EDGetTokenT< reco::TrackCollection > conversionOITrackProducer_
edm::EDGetTokenT< reco::TrackCaloClusterPtrAssociation > inOutTrackSCAssociationCollection_
void setWeightsFile(const char *weightsFile)
ConversionLikelihoodCalculator likelihoodCalc_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcBarrelCollection_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scHybridBarrelProducer_
ConversionVertexFinder vertexFinder_
EgammaHcalIsolation::arrayHB eThresHB
EgammaHcalIsolation::arrayHE eThresHE
std::array< double, 4 > arrayHB
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mFToken_
std::array< double, 7 > arrayHE

Member Function Documentation

◆ beginRun()

void ConvertedPhotonProducer::beginRun ( edm::Run const &  r,
const edm::EventSetup es 
)
final

Definition at line 179 of file ConvertedPhotonProducer.cc.

References edm::EventSetup::getData(), magneticField_, mFToken_, transientTrackBuilder_, and transientTrackToken_.

179  {
180  magneticField_ = &theEventSetup.getData(mFToken_);
181 
182  // Transform Track into TransientTrack (needed by the Vertex fitter)
183  transientTrackBuilder_ = &theEventSetup.getData(transientTrackToken_);
184 }
MagneticField const * magneticField_
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackToken_
TransientTrackBuilder const * transientTrackBuilder_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mFToken_

◆ buildCollections()

void ConvertedPhotonProducer::buildCollections ( edm::EventSetup const &  es,
const edm::Handle< edm::View< reco::CaloCluster >> &  scHandle,
const edm::Handle< edm::View< reco::CaloCluster >> &  bcHandle,
ElectronHcalHelper const &  hcalHelper,
const edm::Handle< reco::TrackCollection > &  trkHandle,
std::map< std::vector< reco::TransientTrack >, reco::CaloClusterPtr, CompareTwoTracksVectors > &  allPairs,
reco::ConversionCollection outputConvPhotonCollection 
)
private

Definition at line 317 of file ConvertedPhotonProducer.cc.

References reco::Conversion::algoByName(), algoName_, TransientTrackBuilder::build(), ConversionLikelihoodCalculator::calculateLikelihood(), calculateMinApproachDistance(), edm::PtrVectorBase::clear(), deltaCotCut_, HLT_2022v12_cff::dEta, HLT_2022v12_cff::dPhi, dRForConversionRecovery_, MillePedeFileConverter_cfg::e, mps_fire::end, ConversionTrackEcalImpactPoint::find(), ElectronHcalHelper::hcalESum(), edm::Ref< C, T, F >::isNonnull(), reco::Vertex::isValid(), likelihoodCalc_, magneticField_, ConversionTrackEcalImpactPoint::matchingBC(), maxHOverE_, metname, minApproachDisCut_, minSCEt_, edm::PtrVector< T >::push_back(), recoverOneTrackCase_, ConversionVertexFinder::run(), reco::Conversion::setMVAout(), mathSSE::sqrt(), AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), toFConverterP(), toFConverterV(), transientTrackBuilder_, vertexFinder_, and extraflags_cff::vtx.

Referenced by produce().

326 {
327  // instantiate the algorithm for finding the position of the track extrapolation at the Ecal front face
328  ConversionTrackEcalImpactPoint theEcalImpactPositionFinder(magneticField_);
329 
331 
332  std::vector<reco::TransientTrack> t_generalTrk;
334  t_generalTrk = transientTrackBuilder_->build(generalTrkHandle);
335 
336  // Loop over SC in the barrel and reconstruct converted photons
337  int myCands = 0;
339  for (auto const& aClus : scHandle->ptrs()) {
340  // preselection based in Et and H/E cut
341  if (aClus->energy() / cosh(aClus->eta()) <= minSCEt_)
342  continue;
343  const reco::CaloCluster* pClus = &(*aClus);
344  auto const* sc = dynamic_cast<const reco::SuperCluster*>(pClus);
345  double HoE = hcalHelper.hcalESum(*sc, 0) / sc->energy();
346  if (HoE >= maxHOverE_)
347  continue;
349 
350  std::vector<edm::Ref<reco::TrackCollection>> trackPairRef;
351  std::vector<math::XYZPointF> trackInnPos;
352  std::vector<math::XYZVectorF> trackPin;
353  std::vector<math::XYZVectorF> trackPout;
354  float minAppDist = -99;
355 
356  //LogDebug("ConvertedPhotonProducer") << "ConvertedPhotonProducer SC energy " << aClus->energy() << " eta " << aClus->eta() << " phi " << aClus->phi() << "\n";
357 
359  const reco::Particle::Point vtx(0, 0, 0);
360 
361  math::XYZVector direction = aClus->position() - vtx;
362  math::XYZVector momentum = direction.unit() * aClus->energy();
363  const reco::Particle::LorentzVector p4(momentum.x(), momentum.y(), momentum.z(), aClus->energy());
364 
365  int nFound = 0;
366  if (!allPairs.empty()) {
367  nFound = 0;
368 
369  for (auto iPair = allPairs.begin(); iPair != allPairs.end(); ++iPair) {
370  scPtrVec.clear();
371 
372  reco::Vertex theConversionVertex;
373  reco::CaloClusterPtr caloPtr = iPair->second;
374  if (!(aClus == caloPtr))
375  continue;
376 
377  scPtrVec.push_back(aClus);
378  nFound++;
379 
380  std::vector<math::XYZPointF> trkPositionAtEcal = theEcalImpactPositionFinder.find(iPair->first, bcHandle);
381  std::vector<reco::CaloClusterPtr> matchingBC = theEcalImpactPositionFinder.matchingBC();
382 
383  minAppDist = -99;
384  const std::string metname = "ConvertedPhotons|ConvertedPhotonProducer";
385  if ((iPair->first).size() > 1) {
386  try {
387  vertexFinder_.run(iPair->first, theConversionVertex);
388 
389  } catch (cms::Exception& e) {
390  //std::cout << " cms::Exception caught in ConvertedPhotonProducer::produce" << "\n" ;
391  edm::LogWarning(metname) << "cms::Exception caught in ConvertedPhotonProducer::produce\n"
392  << e.explainSelf();
393  }
394 
395  // Old TwoTrackMinimumDistance md;
396  // Old md.calculate ( (iPair->first)[0].initialFreeState(), (iPair->first)[1].initialFreeState() );
397  // Old minAppDist = md.distance();
398 
399  /*
400  for ( unsigned int i=0; i< matchingBC.size(); ++i) {
401  if ( matchingBC[i].isNull() ) std::cout << " This ref to BC is null: skipping " << "\n";
402  else
403  std::cout << " BC energy " << matchingBC[i]->energy() << "\n";
404  }
405  */
406 
408  trackPairRef.clear();
409  trackInnPos.clear();
410  trackPin.clear();
411  trackPout.clear();
412 
413  for (std::vector<reco::TransientTrack>::const_iterator iTk = (iPair->first).begin();
414  iTk != (iPair->first).end();
415  ++iTk) {
416  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer Transient Tracks in the pair charge " << iTk->charge() << " Num of RecHits " << iTk->recHitsSize() << " inner momentum " << iTk->track().innerMomentum() << "\n";
417 
418  auto const* ttt = dynamic_cast<const reco::TrackTransientTrack*>(iTk->basicTransientTrack());
419  reco::TrackRef myTkRef = ttt->persistentTrackRef();
420 
421  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer Ref to Rec Tracks in the pair charge " << myTkRef->charge() << " Num of RecHits " << myTkRef->recHitsSize() << " inner momentum " << myTkRef->innerMomentum() << "\n";
422  if (myTkRef->extra().isNonnull()) {
423  trackInnPos.push_back(toFConverterP(myTkRef->innerPosition()));
424  trackPin.push_back(toFConverterV(myTkRef->innerMomentum()));
425  trackPout.push_back(toFConverterV(myTkRef->outerMomentum()));
426  }
427  trackPairRef.push_back(myTkRef);
428  }
429 
430  // std::cout << " ConvertedPhotonProducer trackPin size " << trackPin.size() << std::endl;
431  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer SC energy " << aClus->energy() << "\n";
432  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer photon p4 " << p4 << "\n";
433  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer vtx " << vtx.x() << " " << vtx.y() << " " << vtx.z() << "\n";
434  if (theConversionVertex.isValid()) {
435  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer theConversionVertex " << theConversionVertex.position().x() << " " << theConversionVertex.position().y() << " " << theConversionVertex.position().z() << "\n";
436  }
437  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer trackPairRef " << trackPairRef.size() << "\n";
438 
439  minAppDist = calculateMinApproachDistance(trackPairRef[0], trackPairRef[1]);
440 
441  double like = -999.;
442  reco::Conversion newCandidate(scPtrVec,
443  trackPairRef,
444  trkPositionAtEcal,
445  theConversionVertex,
446  matchingBC,
447  minAppDist,
448  trackInnPos,
449  trackPin,
450  trackPout,
451  like,
452  algo);
453  like = likelihoodCalc_.calculateLikelihood(newCandidate);
454  // std::cout << "like = " << like << std::endl;
455  newCandidate.setMVAout(like);
456  outputConvPhotonCollection.push_back(newCandidate);
457 
458  myCands++;
459  //LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer Put the ConvertedPhotonCollection a candidate in the Barrel " << "\n";
460 
461  } else {
462  // std::cout << " ConvertedPhotonProducer case with only one track found " << "\n";
463 
464  //std::cout << " ConvertedPhotonProducer recovering one track " << "\n";
465  trackPairRef.clear();
466  trackInnPos.clear();
467  trackPin.clear();
468  trackPout.clear();
469  std::vector<reco::TransientTrack>::const_iterator iTk = (iPair->first).begin();
470  //std::cout << " ConvertedPhotonProducer Transient Tracks in the pair charge " << iTk->charge() << " Num of RecHits " << iTk->recHitsSize() << " inner momentum " << iTk->track().innerMomentum() << " pt " << sqrt(iTk->track().innerMomentum().perp2()) << "\n";
471  auto const* ttt = dynamic_cast<const reco::TrackTransientTrack*>(iTk->basicTransientTrack());
472  reco::TrackRef myTk = ttt->persistentTrackRef();
473  if (myTk->extra().isNonnull()) {
474  trackInnPos.push_back(toFConverterP(myTk->innerPosition()));
475  trackPin.push_back(toFConverterV(myTk->innerMomentum()));
476  trackPout.push_back(toFConverterV(myTk->outerMomentum()));
477  }
478  trackPairRef.push_back(myTk);
479  //std::cout << " Provenance " << myTk->algoName() << std::endl;
480 
481  if (recoverOneTrackCase_) {
482  float theta1 = myTk->innerMomentum().Theta();
483  float dCot = 999.;
484  float dCotTheta = -999.;
485  reco::TrackRef goodRef;
486  for (auto const& tran : t_generalTrk) {
487  auto const* ttt = dynamic_cast<const reco::TrackTransientTrack*>(tran.basicTransientTrack());
488  reco::TrackRef trRef = ttt->persistentTrackRef();
489  if (trRef->charge() * myTk->charge() > 0)
490  continue;
491  float dEta = trRef->eta() - myTk->eta();
492  float dPhi = trRef->phi() - myTk->phi();
494  continue;
495  float theta2 = trRef->innerMomentum().Theta();
496  dCotTheta = 1. / tan(theta1) - 1. / tan(theta2);
497  // std::cout << " ConvertedPhotonProducer recovering general transient track charge " << trRef->charge() << " momentum " << trRef->innerMomentum() << " dcotTheta " << fabs(dCotTheta) << std::endl;
498  if (fabs(dCotTheta) < dCot) {
499  dCot = fabs(dCotTheta);
500  goodRef = trRef;
501  }
502  }
503 
504  if (goodRef.isNonnull()) {
505  minAppDist = calculateMinApproachDistance(myTk, goodRef);
506 
507  // std::cout << " ConvertedPhotonProducer chosen dCotTheta " << fabs(dCotTheta) << std::endl;
508  if (fabs(dCotTheta) < deltaCotCut_ && minAppDist > minApproachDisCut_) {
509  trackInnPos.push_back(toFConverterP(goodRef->innerPosition()));
510  trackPin.push_back(toFConverterV(goodRef->innerMomentum()));
511  trackPout.push_back(toFConverterV(goodRef->outerMomentum()));
512  trackPairRef.push_back(goodRef);
513  // std::cout << " ConvertedPhotonProducer adding opposite charge track from generalTrackCollection charge " << goodRef ->charge() << " pt " << sqrt(goodRef->innerMomentum().perp2()) << " trackPairRef size " << trackPairRef.size() << std::endl;
514  //std::cout << " Track Provenenance " << goodRef->algoName() << std::endl;
515 
516  try {
517  vertexFinder_.run(iPair->first, theConversionVertex);
518 
519  } catch (cms::Exception& e) {
520  //std::cout << " cms::Exception caught in ConvertedPhotonProducer::produce" << "\n" ;
521  edm::LogWarning(metname) << "cms::Exception caught in ConvertedPhotonProducer::produce\n"
522  << e.explainSelf();
523  }
524  }
525  }
526 
527  } // bool On/Off one track case recovery using generalTracks
528  const double like = -999.;
529  outputConvPhotonCollection.emplace_back(scPtrVec,
530  trackPairRef,
531  trkPositionAtEcal,
532  theConversionVertex,
533  matchingBC,
534  minAppDist,
535  trackInnPos,
536  trackPin,
537  trackPout,
538  like,
539  algo);
540  auto& newCandidate = outputConvPhotonCollection.back();
541  newCandidate.setMVAout(likelihoodCalc_.calculateLikelihood(newCandidate));
542 
543  } // case with only on track: looking in general tracks
544  }
545  }
546  }
547 }
TransientVertex run(const std::vector< reco::TransientTrack > &pair)
const std::string metname
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:149
static ConversionAlgorithm algoByName(const std::string &name)
Definition: Conversion.cc:139
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
MagneticField const * magneticField_
reco::TransientTrack build(const reco::Track *p) const
math::XYZVectorF toFConverterV(const math::XYZVector &val)
T sqrt(T t)
Definition: SSEVec.h:19
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
math::XYZPoint Point
point in the space
Definition: Particle.h:25
float calculateMinApproachDistance(const reco::TrackRef &track1, const reco::TrackRef &track2)
ConversionLikelihoodCalculator likelihoodCalc_
double calculateLikelihood(reco::ConversionRef conversion)
double energy() const
cluster energy
Definition: CaloCluster.h:149
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
ConversionVertexFinder vertexFinder_
TransientTrackBuilder const * transientTrackBuilder_
void clear()
Clear the PtrVector.
Definition: PtrVectorBase.h:81
math::XYZPointF toFConverterP(const math::XYZPoint &val)
Log< level::Warning, false > LogWarning
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
bool isValid() const
Tells whether the vertex is valid.
Definition: Vertex.h:72

◆ calculateMinApproachDistance()

float ConvertedPhotonProducer::calculateMinApproachDistance ( const reco::TrackRef track1,
const reco::TrackRef track2 
)
private

Definition at line 621 of file ConvertedPhotonProducer.cc.

References getCircleCenter(), MagneticField::inTesla(), magneticField_, mathSSE::sqrt(), testProducerWithPsetDescEmpty_cfi::x1, testProducerWithPsetDescEmpty_cfi::x2, testProducerWithPsetDescEmpty_cfi::y1, testProducerWithPsetDescEmpty_cfi::y2, and PV3DBase< T, PVType, FrameType >::z().

Referenced by buildCollections().

622  {
623  double x1, x2, y1, y2;
624  double xx_1 = track1->innerPosition().x(), yy_1 = track1->innerPosition().y(), zz_1 = track1->innerPosition().z();
625  double xx_2 = track2->innerPosition().x(), yy_2 = track2->innerPosition().y(), zz_2 = track2->innerPosition().z();
626  double radius1 =
627  track1->innerMomentum().Rho() / (.3 * (magneticField_->inTesla(GlobalPoint(xx_1, yy_1, zz_1)).z())) * 100;
628  double radius2 =
629  track2->innerMomentum().Rho() / (.3 * (magneticField_->inTesla(GlobalPoint(xx_2, yy_2, zz_2)).z())) * 100;
630  getCircleCenter(track1, radius1, x1, y1);
631  getCircleCenter(track2, radius2, x2, y2);
632 
633  return std::sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) - radius1 - radius2;
634 }
T z() const
Definition: PV3DBase.h:61
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
MagneticField const * magneticField_
T sqrt(T t)
Definition: SSEVec.h:19
void getCircleCenter(const reco::TrackRef &tk, double r, double &x0, double &y0)

◆ cleanCollections()

void ConvertedPhotonProducer::cleanCollections ( const edm::Handle< edm::View< reco::CaloCluster >> &  scHandle,
const edm::OrphanHandle< reco::ConversionCollection > &  conversionHandle,
reco::ConversionCollection outputCollection 
)
private

Definition at line 549 of file ConvertedPhotonProducer.cc.

References reco::Conversion::clone(), clone(), printConversionInfo::conversionHandle, edm::Ref< C, T, F >::id(), edm::Ref< C, T, F >::key(), minSCEt_, risolveAmbiguity_, and solveAmbiguity().

Referenced by produce().

551  {
552  reco::Conversion* newCandidate = nullptr;
553  for (auto const& aClus : scHandle->ptrs()) {
554  // SC energy preselection
555  if (aClus->energy() / cosh(aClus->eta()) <= minSCEt_)
556  continue;
557 
558  if (conversionHandle.isValid()) {
559  if (risolveAmbiguity_) {
560  std::vector<reco::ConversionRef> bestRef = solveAmbiguity(conversionHandle, aClus);
561 
562  for (std::vector<reco::ConversionRef>::iterator iRef = bestRef.begin(); iRef != bestRef.end(); iRef++) {
563  if (iRef->isNonnull()) {
564  newCandidate = (*iRef)->clone();
565  outputConversionCollection.push_back(*newCandidate);
566  delete newCandidate;
567  }
568  }
569 
570  } else {
571  for (unsigned int icp = 0; icp < conversionHandle->size(); icp++) {
573  if (!(aClus.id() == cpRef->caloCluster()[0].id() && aClus.key() == cpRef->caloCluster()[0].key()))
574  continue;
575  if (!cpRef->isConverted())
576  continue;
577  if (cpRef->nTracks() < 2)
578  continue;
579  newCandidate = (&(*cpRef))->clone();
580  outputConversionCollection.push_back(*newCandidate);
581  delete newCandidate;
582  }
583 
584  } // solve or not the ambiguity of many conversion candidates
585  }
586  }
587 }
Conversion * clone() const
returns a clone of the candidate
Definition: Conversion.cc:148
std::vector< reco::ConversionRef > solveAmbiguity(const edm::OrphanHandle< reco::ConversionCollection > &conversionHandle, reco::CaloClusterPtr const &sc)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135

◆ getCircleCenter()

void ConvertedPhotonProducer::getCircleCenter ( const reco::TrackRef tk,
double  r,
double &  x0,
double &  y0 
)
private

Definition at line 636 of file ConvertedPhotonProducer.cc.

References ALCARECOTkAlJpsiMuMu_cff::charge, funct::cos(), phi, alignCSCRings::r, funct::sin(), testProducerWithPsetDescEmpty_cfi::x1, and testProducerWithPsetDescEmpty_cfi::y1.

Referenced by calculateMinApproachDistance().

636  {
637  double x1, y1, phi;
638  x1 = tk->innerPosition().x(); //inner position and inner momentum need track Extra!
639  y1 = tk->innerPosition().y();
640  phi = tk->innerMomentum().phi();
641  const int charge = tk->charge();
642  x0 = x1 + r * sin(phi) * charge;
643  y0 = y1 - r * cos(phi) * charge;
644 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22

◆ produce()

void ConvertedPhotonProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
override

Definition at line 186 of file ConvertedPhotonProducer.cc.

References bcBarrelCollection_, bcEndcapCollection_, TransientTrackBuilder::build(), buildCollections(), cleanCollections(), cleanedConvertedPhotonCollectionPutToken_, printConversionInfo::conversionHandle, conversionIOTrackProducer_, conversionOITrackProducer_, convertedPhotonCollectionPutToken_, edm::Event::emplace(), generalTrackProducer_, edm::Event::getByToken(), edm::Event::getHandle(), hcalHelper_, inOutTrackSCAssociationCollection_, edm::HandleBase::isValid(), eostools::move(), outInTrackSCAssociationCollection_, recoverOneTrackCase_, ConversionTrackPairFinder::run(), scHybridBarrelProducer_, scIslandEndcapProducer_, trackPairFinder_, and transientTrackBuilder_.

186  {
187  //
188  // create empty output collections
189  //
190  // Converted photon candidates
191  reco::ConversionCollection outputConvPhotonCollection;
192  // Converted photon candidates
193  reco::ConversionCollection cleanedConversionCollection;
194 
195  // Get the Super Cluster collection in the Barrel
196  bool validBarrelSCHandle = true;
197  auto scBarrelHandle = theEvent.getHandle(scHybridBarrelProducer_);
198  if (!scBarrelHandle.isValid()) {
199  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the scHybridBarrelProducer";
200  validBarrelSCHandle = false;
201  }
202 
203  // Get the Super Cluster collection in the Endcap
204  bool validEndcapSCHandle = true;
206  theEvent.getByToken(scIslandEndcapProducer_, scEndcapHandle);
207  if (!scEndcapHandle.isValid()) {
208  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the scIslandEndcapProducer";
209  validEndcapSCHandle = false;
210  }
211 
213  bool validTrackInputs = true;
214  auto outInTrkHandle = theEvent.getHandle(conversionOITrackProducer_);
215  if (!outInTrkHandle.isValid()) {
216  //std::cout << "Error! Can't get the conversionOITrack " << "\n";
217  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the conversionOITrack "
218  << "\n";
219  validTrackInputs = false;
220  }
221  // LogDebug("ConvertedPhotonProducer")<< "ConvertedPhotonProducer outInTrack collection size " << (*outInTrkHandle).size() << "\n";
222 
224  auto outInTrkSCAssocHandle = theEvent.getHandle(outInTrackSCAssociationCollection_);
225  if (!outInTrkSCAssocHandle.isValid()) {
226  // std::cout << "Error! Can't get the product " << outInTrackSCAssociationCollection_.c_str() <<"\n";
227  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the outInTrackSCAssociationCollection)";
228  validTrackInputs = false;
229  }
230 
232  auto inOutTrkHandle = theEvent.getHandle(conversionIOTrackProducer_);
233  if (!inOutTrkHandle.isValid()) {
234  // std::cout << "Error! Can't get the conversionIOTrack " << "\n";
235  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the conversionIOTrack "
236  << "\n";
237  validTrackInputs = false;
238  }
239  // LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer inOutTrack collection size " << (*inOutTrkHandle).size() << "\n";
240 
242 
243  edm::Handle<reco::TrackCollection> generalTrkHandle;
244  if (recoverOneTrackCase_) {
245  theEvent.getByToken(generalTrackProducer_, generalTrkHandle);
246  if (!generalTrkHandle.isValid()) {
247  //std::cout << "Error! Can't get the genralTracks " << "\n";
248  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the genralTracks "
249  << "\n";
250  }
251  }
252 
254  auto inOutTrkSCAssocHandle = theEvent.getHandle(inOutTrackSCAssociationCollection_);
255  if (!inOutTrkSCAssocHandle.isValid()) {
256  //std::cout << "Error! Can't get the product " << inOutTrackSCAssociationCollection_.c_str() <<"\n";
257  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the inOutTrackSCAssociationCollection_.c_str()";
258  validTrackInputs = false;
259  }
260 
261  // Get the basic cluster collection in the Barrel
263  theEvent.getByToken(bcBarrelCollection_, bcBarrelHandle);
264  if (!bcBarrelHandle.isValid()) {
265  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the bcBarrelCollection";
266  }
267 
268  // Get the basic cluster collection in the Endcap
270  theEvent.getByToken(bcEndcapCollection_, bcEndcapHandle);
271  if (!bcEndcapHandle.isValid()) {
272  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the bcEndcapCollection";
273  }
274 
275  if (validTrackInputs) {
276  //do the conversion:
277  std::vector<reco::TransientTrack> t_outInTrk = transientTrackBuilder_->build(outInTrkHandle);
278  std::vector<reco::TransientTrack> t_inOutTrk = transientTrackBuilder_->build(inOutTrkHandle);
279 
281  std::map<std::vector<reco::TransientTrack>, reco::CaloClusterPtr, CompareTwoTracksVectors> allPairs;
282  allPairs = trackPairFinder_.run(
283  t_outInTrk, outInTrkHandle, outInTrkSCAssocHandle, t_inOutTrk, inOutTrkHandle, inOutTrkSCAssocHandle);
284  //LogDebug("ConvertedPhotonProducer") << "ConvertedPhotonProducer allPairs.size " << allPairs.size() << "\n";
285 
286  hcalHelper_->beginEvent(theEvent, theEventSetup);
287 
288  buildCollections(theEventSetup,
289  scBarrelHandle,
290  bcBarrelHandle,
291  *hcalHelper_,
292  generalTrkHandle,
293  allPairs,
294  outputConvPhotonCollection);
295  buildCollections(theEventSetup,
296  scEndcapHandle,
297  bcEndcapHandle,
298  *hcalHelper_,
299  generalTrkHandle,
300  allPairs,
301  outputConvPhotonCollection);
302  }
303 
304  // put the product in the event
305  auto const conversionHandle =
306  theEvent.emplace(convertedPhotonCollectionPutToken_, std::move(outputConvPhotonCollection));
307 
308  // Loop over barrel and endcap SC collections and fill the photon collection
309  if (validBarrelSCHandle)
310  cleanCollections(scBarrelHandle, conversionHandle, cleanedConversionCollection);
311  if (validEndcapSCHandle)
312  cleanCollections(scEndcapHandle, conversionHandle, cleanedConversionCollection);
313 
314  theEvent.emplace(cleanedConvertedPhotonCollectionPutToken_, std::move(cleanedConversionCollection));
315 }
edm::EDPutTokenT< reco::ConversionCollection > cleanedConvertedPhotonCollectionPutToken_
edm::EDGetTokenT< reco::TrackCaloClusterPtrAssociation > outInTrackSCAssociationCollection_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcEndcapCollection_
edm::EDPutTokenT< reco::ConversionCollection > convertedPhotonCollectionPutToken_
edm::EDGetTokenT< reco::TrackCollection > conversionIOTrackProducer_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scIslandEndcapProducer_
std::unique_ptr< ElectronHcalHelper > hcalHelper_
edm::Ptr< CaloCluster > CaloClusterPtr
Log< level::Error, false > LogError
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
Definition: ConversionFwd.h:9
reco::TransientTrack build(const reco::Track *p) const
edm::EDGetTokenT< reco::TrackCollection > generalTrackProducer_
void buildCollections(edm::EventSetup const &es, const edm::Handle< edm::View< reco::CaloCluster >> &scHandle, const edm::Handle< edm::View< reco::CaloCluster >> &bcHandle, ElectronHcalHelper const &hcalHelper, const edm::Handle< reco::TrackCollection > &trkHandle, std::map< std::vector< reco::TransientTrack >, reco::CaloClusterPtr, CompareTwoTracksVectors > &allPairs, reco::ConversionCollection &outputConvPhotonCollection)
edm::EDGetTokenT< reco::TrackCollection > conversionOITrackProducer_
edm::EDGetTokenT< reco::TrackCaloClusterPtrAssociation > inOutTrackSCAssociationCollection_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcBarrelCollection_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scHybridBarrelProducer_
void cleanCollections(const edm::Handle< edm::View< reco::CaloCluster >> &scHandle, const edm::OrphanHandle< reco::ConversionCollection > &conversionHandle, reco::ConversionCollection &outputCollection)
bool isValid() const
Definition: HandleBase.h:70
ConversionTrackPairFinder trackPairFinder_
TransientTrackBuilder const * transientTrackBuilder_
std::map< std::vector< reco::TransientTrack >, reco::CaloClusterPtr, CompareTwoTracksVectors > run(const std::vector< reco::TransientTrack > &outIn, const edm::Handle< reco::TrackCollection > &outInTrkHandle, const edm::Handle< reco::TrackCaloClusterPtrAssociation > &outInTrackSCAssH, const std::vector< reco::TransientTrack > &inOut, const edm::Handle< reco::TrackCollection > &inOutTrkHandle, const edm::Handle< reco::TrackCaloClusterPtrAssociation > &inOutTrackSCAssH)
def move(src, dest)
Definition: eostools.py:511

◆ solveAmbiguity()

std::vector< reco::ConversionRef > ConvertedPhotonProducer::solveAmbiguity ( const edm::OrphanHandle< reco::ConversionCollection > &  conversionHandle,
reco::CaloClusterPtr const &  sc 
)
private

Definition at line 589 of file ConvertedPhotonProducer.cc.

References printConversionInfo::conversionHandle, edm::ProductID::id(), edm::Ptr< T >::id(), edm::Ptr< T >::key(), and maxNumOfCandidates_.

Referenced by cleanCollections().

590  {
591  std::multimap<double, reco::ConversionRef, std::greater<double>> convMap;
592 
593  for (unsigned int icp = 0; icp < conversionHandle->size(); icp++) {
595 
596  //std::cout << " cpRef " << cpRef->nTracks() << " " << cpRef ->caloCluster()[0]->energy() << std::endl;
597  if (!(scRef.id() == cpRef->caloCluster()[0].id() && scRef.key() == cpRef->caloCluster()[0].key()))
598  continue;
599  if (!cpRef->isConverted())
600  continue;
601  double like = cpRef->MVAout();
602  if (cpRef->nTracks() < 2)
603  continue;
604  // std::cout << " Like " << like << std::endl;
605  convMap.emplace(like, cpRef);
606  }
607 
608  // std::cout << " convMap size " << convMap.size() << std::endl;
609 
610  std::vector<reco::ConversionRef> bestRefs;
611  for (auto iMap = convMap.begin(); iMap != convMap.end(); iMap++) {
612  // std::cout << " Like list in the map " << iMap->first << " " << (iMap->second)->EoverP() << std::endl;
613  bestRefs.push_back(iMap->second);
614  if (int(bestRefs.size()) == maxNumOfCandidates_)
615  break;
616  }
617 
618  return bestRefs;
619 }

◆ toFConverterP()

math::XYZPointF ConvertedPhotonProducer::toFConverterP ( const math::XYZPoint val)
inlineprivate

Definition at line 114 of file ConvertedPhotonProducer.cc.

References heppy_batch::val.

Referenced by buildCollections().

114 { return math::XYZPointF(val.x(), val.y(), val.z()); }
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10

◆ toFConverterV()

math::XYZVectorF ConvertedPhotonProducer::toFConverterV ( const math::XYZVector val)
inlineprivate

Definition at line 116 of file ConvertedPhotonProducer.cc.

References heppy_batch::val.

Referenced by buildCollections().

116 { return math::XYZVectorF(val.x(), val.y(), val.z()); }
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
Definition: Vector3D.h:16

Member Data Documentation

◆ algoName_

std::string ConvertedPhotonProducer::algoName_
private

Definition at line 97 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ bcBarrelCollection_

edm::EDGetTokenT<edm::View<reco::CaloCluster> > ConvertedPhotonProducer::bcBarrelCollection_
private

Definition at line 82 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ bcEndcapCollection_

edm::EDGetTokenT<edm::View<reco::CaloCluster> > ConvertedPhotonProducer::bcEndcapCollection_
private

Definition at line 83 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ caloGeomToken_

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> ConvertedPhotonProducer::caloGeomToken_
private

Definition at line 91 of file ConvertedPhotonProducer.cc.

◆ cleanedConvertedPhotonCollectionPutToken_

edm::EDPutTokenT<reco::ConversionCollection> ConvertedPhotonProducer::cleanedConvertedPhotonCollectionPutToken_
private

Definition at line 80 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ conversionIOTrackProducer_

edm::EDGetTokenT<reco::TrackCollection> ConvertedPhotonProducer::conversionIOTrackProducer_
private

Definition at line 71 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ conversionOITrackProducer_

edm::EDGetTokenT<reco::TrackCollection> ConvertedPhotonProducer::conversionOITrackProducer_
private

Definition at line 70 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ convertedPhotonCollectionPutToken_

edm::EDPutTokenT<reco::ConversionCollection> ConvertedPhotonProducer::convertedPhotonCollectionPutToken_
private

Definition at line 79 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ deltaCotCut_

double ConvertedPhotonProducer::deltaCotCut_
private

Definition at line 104 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ dRForConversionRecovery_

double ConvertedPhotonProducer::dRForConversionRecovery_
private

Definition at line 103 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ generalTrackProducer_

edm::EDGetTokenT<reco::TrackCollection> ConvertedPhotonProducer::generalTrackProducer_
private

Definition at line 76 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ hbheRecHits_

edm::EDGetTokenT<HBHERecHitCollection> ConvertedPhotonProducer::hbheRecHits_
private

Definition at line 86 of file ConvertedPhotonProducer.cc.

◆ hcalHelper_

std::unique_ptr<ElectronHcalHelper> ConvertedPhotonProducer::hcalHelper_
private

Definition at line 109 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ hOverEConeSize_

double ConvertedPhotonProducer::hOverEConeSize_
private

Definition at line 99 of file ConvertedPhotonProducer.cc.

◆ inOutTrackSCAssociationCollection_

edm::EDGetTokenT<reco::TrackCaloClusterPtrAssociation> ConvertedPhotonProducer::inOutTrackSCAssociationCollection_
private

Definition at line 74 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ likelihoodCalc_

ConversionLikelihoodCalculator ConvertedPhotonProducer::likelihoodCalc_
private

Definition at line 111 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ likelihoodWeights_

std::string ConvertedPhotonProducer::likelihoodWeights_
private

Definition at line 112 of file ConvertedPhotonProducer.cc.

◆ magneticField_

MagneticField const* ConvertedPhotonProducer::magneticField_
private

◆ maxHOverE_

double ConvertedPhotonProducer::maxHOverE_
private

Definition at line 100 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ maxNumOfCandidates_

int ConvertedPhotonProducer::maxNumOfCandidates_
private

Definition at line 106 of file ConvertedPhotonProducer.cc.

Referenced by solveAmbiguity().

◆ mFToken_

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> ConvertedPhotonProducer::mFToken_
private

Definition at line 92 of file ConvertedPhotonProducer.cc.

Referenced by beginRun().

◆ minApproachDisCut_

double ConvertedPhotonProducer::minApproachDisCut_
private

Definition at line 105 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ minSCEt_

double ConvertedPhotonProducer::minSCEt_
private

Definition at line 101 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections(), and cleanCollections().

◆ outInTrackSCAssociationCollection_

edm::EDGetTokenT<reco::TrackCaloClusterPtrAssociation> ConvertedPhotonProducer::outInTrackSCAssociationCollection_
private

Definition at line 73 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ recoverOneTrackCase_

bool ConvertedPhotonProducer::recoverOneTrackCase_
private

Definition at line 102 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections(), and produce().

◆ risolveAmbiguity_

bool ConvertedPhotonProducer::risolveAmbiguity_
private

Definition at line 107 of file ConvertedPhotonProducer.cc.

Referenced by cleanCollections().

◆ scHybridBarrelProducer_

edm::EDGetTokenT<edm::View<reco::CaloCluster> > ConvertedPhotonProducer::scHybridBarrelProducer_
private

Definition at line 84 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ scIslandEndcapProducer_

edm::EDGetTokenT<edm::View<reco::CaloCluster> > ConvertedPhotonProducer::scIslandEndcapProducer_
private

Definition at line 85 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ trackPairFinder_

ConversionTrackPairFinder ConvertedPhotonProducer::trackPairFinder_
private

Definition at line 95 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ transientTrackBuilder_

TransientTrackBuilder const* ConvertedPhotonProducer::transientTrackBuilder_
private

Definition at line 89 of file ConvertedPhotonProducer.cc.

Referenced by beginRun(), buildCollections(), and produce().

◆ transientTrackToken_

edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> ConvertedPhotonProducer::transientTrackToken_
private

Definition at line 93 of file ConvertedPhotonProducer.cc.

Referenced by beginRun().

◆ vertexFinder_

ConversionVertexFinder ConvertedPhotonProducer::vertexFinder_
private

Definition at line 96 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().