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

 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_
 
bool cutsFromDB_
 
double deltaCotCut_
 
double dRForConversionRecovery_
 
edm::EDGetTokenT< reco::TrackCollectiongeneralTrackProducer_
 
edm::EDGetTokenT< HBHERecHitCollectionhbheRecHits_
 
HcalPFCuts const * hcalCuts_ = nullptr
 
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcdhcalCutsToken_
 
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 47 of file ConvertedPhotonProducer.cc.

Constructor & Destructor Documentation

◆ ConvertedPhotonProducer()

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

Definition at line 128 of file ConvertedPhotonProducer.cc.

References AlCaHLTBitMon_QueryRunRegistry::string.

129  : conversionOITrackProducer_{consumes(config.getParameter<std::string>("conversionOITrackProducer"))},
130  conversionIOTrackProducer_{consumes(config.getParameter<std::string>("conversionIOTrackProducer"))},
131  outInTrackSCAssociationCollection_{consumes({config.getParameter<std::string>("conversionOITrackProducer"),
132  config.getParameter<std::string>("outInTrackSCAssociation")})},
133  inOutTrackSCAssociationCollection_{consumes({config.getParameter<std::string>("conversionIOTrackProducer"),
134  config.getParameter<std::string>("inOutTrackSCAssociation")})},
135 
136  generalTrackProducer_{consumes(config.getParameter<edm::InputTag>("generalTracksSrc"))},
138  produces<reco::ConversionCollection>(config.getParameter<std::string>("convertedPhotonCollection"))},
140  produces<reco::ConversionCollection>(config.getParameter<std::string>("cleanedConvertedPhotonCollection"))},
141 
142  bcBarrelCollection_{consumes(config.getParameter<edm::InputTag>("bcBarrelCollection"))},
143  bcEndcapCollection_{consumes(config.getParameter<edm::InputTag>("bcEndcapCollection"))},
144  scHybridBarrelProducer_{consumes(config.getParameter<edm::InputTag>("scHybridBarrelProducer"))},
145  scIslandEndcapProducer_{consumes(config.getParameter<edm::InputTag>("scIslandEndcapProducer"))},
146  hbheRecHits_{consumes(config.getParameter<edm::InputTag>("hbheRecHits"))},
148  mFToken_{esConsumes()},
149  transientTrackToken_{esConsumes(edm::ESInputTag("", "TransientTrackBuilder"))},
151  algoName_{config.getParameter<std::string>("AlgorithmName")},
152 
153  hOverEConeSize_{config.getParameter<double>("hOverEConeSize")},
154  maxHOverE_{config.getParameter<double>("maxHOverE")},
155  minSCEt_{config.getParameter<double>("minSCEt")},
156  recoverOneTrackCase_{config.getParameter<bool>("recoverOneTrackCase")},
157  dRForConversionRecovery_{config.getParameter<double>("dRForConversionRecovery")},
158  deltaCotCut_{config.getParameter<double>("deltaCotCut")},
159  minApproachDisCut_{config.getParameter<double>("minApproachDisCut")},
160 
161  maxNumOfCandidates_{config.getParameter<int>("maxNumOfCandidates")},
162  risolveAmbiguity_{config.getParameter<bool>("risolveConversionAmbiguity")},
163  likelihoodWeights_{config.getParameter<std::string>("MVA_weights_location")} {
164  // instantiate the Track Pair Finder algorithm
166 
167  cutsFromDB_ = config.getParameter<bool>("usePFThresholdsFromDB");
168  if (cutsFromDB_) {
169  hcalCutsToken_ = esConsumes<HcalPFCuts, HcalPFCutsRcd>(edm::ESInputTag("", "withTopo"));
170  }
171 
174  if (cfgCone.hOverEConeSize > 0) {
175  cfgCone.onlyBehindCluster = false;
176  cfgCone.checkHcalStatus = false;
177 
178  cfgCone.hbheRecHits = hbheRecHits_;
179 
180  cfgCone.eThresHB = config.getParameter<EgammaHcalIsolation::arrayHB>("recHitEThresholdHB");
181  cfgCone.maxSeverityHB = config.getParameter<int>("maxHcalRecHitSeverity");
182  cfgCone.eThresHE = config.getParameter<EgammaHcalIsolation::arrayHE>("recHitEThresholdHE");
183  cfgCone.maxSeverityHE = cfgCone.maxSeverityHB;
184  }
185 
186  hcalHelper_ = std::make_unique<ElectronHcalHelper>(cfgCone, consumesCollector());
187 }
edm::EDPutTokenT< reco::ConversionCollection > cleanedConvertedPhotonCollectionPutToken_
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_
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

◆ 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 329 of file ConvertedPhotonProducer.cc.

References reco::Conversion::algoByName(), algoName_, TransientTrackBuilder::build(), ConversionLikelihoodCalculator::calculateLikelihood(), calculateMinApproachDistance(), edm::PtrVectorBase::clear(), deltaCotCut_, HLT_2024v14_cff::dEta, HLT_2024v14_cff::dPhi, dRForConversionRecovery_, MillePedeFileConverter_cfg::e, mps_fire::end, ConversionTrackEcalImpactPoint::find(), hcalCuts_, 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 L1BJetProducer_cff::vtx.

Referenced by produce().

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

◆ calculateMinApproachDistance()

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

Definition at line 627 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().

628  {
629  double x1, x2, y1, y2;
630  double xx_1 = track1->innerPosition().x(), yy_1 = track1->innerPosition().y(), zz_1 = track1->innerPosition().z();
631  double xx_2 = track2->innerPosition().x(), yy_2 = track2->innerPosition().y(), zz_2 = track2->innerPosition().z();
632  double radius1 =
633  track1->innerMomentum().Rho() / (.3 * (magneticField_->inTesla(GlobalPoint(xx_1, yy_1, zz_1)).z())) * 100;
634  double radius2 =
635  track2->innerMomentum().Rho() / (.3 * (magneticField_->inTesla(GlobalPoint(xx_2, yy_2, zz_2)).z())) * 100;
636  getCircleCenter(track1, radius1, x1, y1);
637  getCircleCenter(track2, radius2, x2, y2);
638 
639  return std::sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) - radius1 - radius2;
640 }
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 555 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().

557  {
558  reco::Conversion* newCandidate = nullptr;
559  for (auto const& aClus : scHandle->ptrs()) {
560  // SC energy preselection
561  if (aClus->energy() / cosh(aClus->eta()) <= minSCEt_)
562  continue;
563 
564  if (conversionHandle.isValid()) {
565  if (risolveAmbiguity_) {
566  std::vector<reco::ConversionRef> bestRef = solveAmbiguity(conversionHandle, aClus);
567 
568  for (std::vector<reco::ConversionRef>::iterator iRef = bestRef.begin(); iRef != bestRef.end(); iRef++) {
569  if (iRef->isNonnull()) {
570  newCandidate = (*iRef)->clone();
571  outputConversionCollection.push_back(*newCandidate);
572  delete newCandidate;
573  }
574  }
575 
576  } else {
577  for (unsigned int icp = 0; icp < conversionHandle->size(); icp++) {
579  if (!(aClus.id() == cpRef->caloCluster()[0].id() && aClus.key() == cpRef->caloCluster()[0].key()))
580  continue;
581  if (!cpRef->isConverted())
582  continue;
583  if (cpRef->nTracks() < 2)
584  continue;
585  newCandidate = (&(*cpRef))->clone();
586  outputConversionCollection.push_back(*newCandidate);
587  delete newCandidate;
588  }
589 
590  } // solve or not the ambiguity of many conversion candidates
591  }
592  }
593 }
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 642 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().

642  {
643  double x1, y1, phi;
644  x1 = tk->innerPosition().x(); //inner position and inner momentum need track Extra!
645  y1 = tk->innerPosition().y();
646  phi = tk->innerMomentum().phi();
647  const int charge = tk->charge();
648  x0 = x1 + r * sin(phi) * charge;
649  y0 = y1 - r * cos(phi) * charge;
650 }
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 189 of file ConvertedPhotonProducer.cc.

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

189  {
190  magneticField_ = &theEventSetup.getData(mFToken_);
191 
192  // Transform Track into TransientTrack (needed by the Vertex fitter)
193  transientTrackBuilder_ = &theEventSetup.getData(transientTrackToken_);
194 
195  if (cutsFromDB_) {
196  hcalCuts_ = &theEventSetup.getData(hcalCutsToken_);
197  }
198 
199  //
200  // create empty output collections
201  //
202  // Converted photon candidates
203  reco::ConversionCollection outputConvPhotonCollection;
204  // Converted photon candidates
205  reco::ConversionCollection cleanedConversionCollection;
206 
207  // Get the Super Cluster collection in the Barrel
208  bool validBarrelSCHandle = true;
209  auto scBarrelHandle = theEvent.getHandle(scHybridBarrelProducer_);
210  if (!scBarrelHandle.isValid()) {
211  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the scHybridBarrelProducer";
212  validBarrelSCHandle = false;
213  }
214 
215  // Get the Super Cluster collection in the Endcap
216  bool validEndcapSCHandle = true;
218  theEvent.getByToken(scIslandEndcapProducer_, scEndcapHandle);
219  if (!scEndcapHandle.isValid()) {
220  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the scIslandEndcapProducer";
221  validEndcapSCHandle = false;
222  }
223 
225  bool validTrackInputs = true;
226  auto outInTrkHandle = theEvent.getHandle(conversionOITrackProducer_);
227  if (!outInTrkHandle.isValid()) {
228  //std::cout << "Error! Can't get the conversionOITrack " << "\n";
229  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the conversionOITrack "
230  << "\n";
231  validTrackInputs = false;
232  }
233  // LogDebug("ConvertedPhotonProducer")<< "ConvertedPhotonProducer outInTrack collection size " << (*outInTrkHandle).size() << "\n";
234 
236  auto outInTrkSCAssocHandle = theEvent.getHandle(outInTrackSCAssociationCollection_);
237  if (!outInTrkSCAssocHandle.isValid()) {
238  // std::cout << "Error! Can't get the product " << outInTrackSCAssociationCollection_.c_str() <<"\n";
239  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the outInTrackSCAssociationCollection)";
240  validTrackInputs = false;
241  }
242 
244  auto inOutTrkHandle = theEvent.getHandle(conversionIOTrackProducer_);
245  if (!inOutTrkHandle.isValid()) {
246  // std::cout << "Error! Can't get the conversionIOTrack " << "\n";
247  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the conversionIOTrack "
248  << "\n";
249  validTrackInputs = false;
250  }
251  // LogDebug("ConvertedPhotonProducer") << " ConvertedPhotonProducer inOutTrack collection size " << (*inOutTrkHandle).size() << "\n";
252 
254 
255  edm::Handle<reco::TrackCollection> generalTrkHandle;
256  if (recoverOneTrackCase_) {
257  theEvent.getByToken(generalTrackProducer_, generalTrkHandle);
258  if (!generalTrkHandle.isValid()) {
259  //std::cout << "Error! Can't get the genralTracks " << "\n";
260  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the genralTracks "
261  << "\n";
262  }
263  }
264 
266  auto inOutTrkSCAssocHandle = theEvent.getHandle(inOutTrackSCAssociationCollection_);
267  if (!inOutTrkSCAssocHandle.isValid()) {
268  //std::cout << "Error! Can't get the product " << inOutTrackSCAssociationCollection_.c_str() <<"\n";
269  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the inOutTrackSCAssociationCollection_.c_str()";
270  validTrackInputs = false;
271  }
272 
273  // Get the basic cluster collection in the Barrel
275  theEvent.getByToken(bcBarrelCollection_, bcBarrelHandle);
276  if (!bcBarrelHandle.isValid()) {
277  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the bcBarrelCollection";
278  }
279 
280  // Get the basic cluster collection in the Endcap
282  theEvent.getByToken(bcEndcapCollection_, bcEndcapHandle);
283  if (!bcEndcapHandle.isValid()) {
284  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the bcEndcapCollection";
285  }
286 
287  if (validTrackInputs) {
288  //do the conversion:
289  std::vector<reco::TransientTrack> t_outInTrk = transientTrackBuilder_->build(outInTrkHandle);
290  std::vector<reco::TransientTrack> t_inOutTrk = transientTrackBuilder_->build(inOutTrkHandle);
291 
293  std::map<std::vector<reco::TransientTrack>, reco::CaloClusterPtr, CompareTwoTracksVectors> allPairs;
294  allPairs = trackPairFinder_.run(
295  t_outInTrk, outInTrkHandle, outInTrkSCAssocHandle, t_inOutTrk, inOutTrkHandle, inOutTrkSCAssocHandle);
296  //LogDebug("ConvertedPhotonProducer") << "ConvertedPhotonProducer allPairs.size " << allPairs.size() << "\n";
297 
298  hcalHelper_->beginEvent(theEvent, theEventSetup);
299 
300  buildCollections(theEventSetup,
301  scBarrelHandle,
302  bcBarrelHandle,
303  *hcalHelper_,
304  generalTrkHandle,
305  allPairs,
306  outputConvPhotonCollection);
307  buildCollections(theEventSetup,
308  scEndcapHandle,
309  bcEndcapHandle,
310  *hcalHelper_,
311  generalTrkHandle,
312  allPairs,
313  outputConvPhotonCollection);
314  }
315 
316  // put the product in the event
317  auto const conversionHandle =
318  theEvent.emplace(convertedPhotonCollectionPutToken_, std::move(outputConvPhotonCollection));
319 
320  // Loop over barrel and endcap SC collections and fill the photon collection
321  if (validBarrelSCHandle)
322  cleanCollections(scBarrelHandle, conversionHandle, cleanedConversionCollection);
323  if (validEndcapSCHandle)
324  cleanCollections(scEndcapHandle, conversionHandle, cleanedConversionCollection);
325 
326  theEvent.emplace(cleanedConvertedPhotonCollectionPutToken_, std::move(cleanedConversionCollection));
327 }
edm::EDPutTokenT< reco::ConversionCollection > cleanedConvertedPhotonCollectionPutToken_
edm::ESGetToken< HcalPFCuts, HcalPFCutsRcd > hcalCutsToken_
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
MagneticField const * magneticField_
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::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackToken_
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)
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mFToken_
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 595 of file ConvertedPhotonProducer.cc.

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

Referenced by cleanCollections().

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

◆ toFConverterP()

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

Definition at line 120 of file ConvertedPhotonProducer.cc.

References heppy_batch::val.

Referenced by buildCollections().

120 { 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 122 of file ConvertedPhotonProducer.cc.

References heppy_batch::val.

Referenced by buildCollections().

122 { 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 103 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ bcBarrelCollection_

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

Definition at line 88 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ bcEndcapCollection_

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

Definition at line 89 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ caloGeomToken_

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

Definition at line 97 of file ConvertedPhotonProducer.cc.

◆ cleanedConvertedPhotonCollectionPutToken_

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

Definition at line 86 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ conversionIOTrackProducer_

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

Definition at line 73 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ conversionOITrackProducer_

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

Definition at line 72 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ convertedPhotonCollectionPutToken_

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

Definition at line 85 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ cutsFromDB_

bool ConvertedPhotonProducer::cutsFromDB_
private

Definition at line 81 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ deltaCotCut_

double ConvertedPhotonProducer::deltaCotCut_
private

Definition at line 110 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ dRForConversionRecovery_

double ConvertedPhotonProducer::dRForConversionRecovery_
private

Definition at line 109 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ generalTrackProducer_

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

Definition at line 78 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ hbheRecHits_

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

Definition at line 92 of file ConvertedPhotonProducer.cc.

◆ hcalCuts_

HcalPFCuts const* ConvertedPhotonProducer::hcalCuts_ = nullptr
private

Definition at line 82 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections(), and produce().

◆ hcalCutsToken_

edm::ESGetToken<HcalPFCuts, HcalPFCutsRcd> ConvertedPhotonProducer::hcalCutsToken_
private

Definition at line 80 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ hcalHelper_

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

Definition at line 115 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ hOverEConeSize_

double ConvertedPhotonProducer::hOverEConeSize_
private

Definition at line 105 of file ConvertedPhotonProducer.cc.

◆ inOutTrackSCAssociationCollection_

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

Definition at line 76 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ likelihoodCalc_

ConversionLikelihoodCalculator ConvertedPhotonProducer::likelihoodCalc_
private

Definition at line 117 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ likelihoodWeights_

std::string ConvertedPhotonProducer::likelihoodWeights_
private

Definition at line 118 of file ConvertedPhotonProducer.cc.

◆ magneticField_

MagneticField const* ConvertedPhotonProducer::magneticField_
private

◆ maxHOverE_

double ConvertedPhotonProducer::maxHOverE_
private

Definition at line 106 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ maxNumOfCandidates_

int ConvertedPhotonProducer::maxNumOfCandidates_
private

Definition at line 112 of file ConvertedPhotonProducer.cc.

Referenced by solveAmbiguity().

◆ mFToken_

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

Definition at line 98 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ minApproachDisCut_

double ConvertedPhotonProducer::minApproachDisCut_
private

Definition at line 111 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().

◆ minSCEt_

double ConvertedPhotonProducer::minSCEt_
private

Definition at line 107 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections(), and cleanCollections().

◆ outInTrackSCAssociationCollection_

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

Definition at line 75 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ recoverOneTrackCase_

bool ConvertedPhotonProducer::recoverOneTrackCase_
private

Definition at line 108 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections(), and produce().

◆ risolveAmbiguity_

bool ConvertedPhotonProducer::risolveAmbiguity_
private

Definition at line 113 of file ConvertedPhotonProducer.cc.

Referenced by cleanCollections().

◆ scHybridBarrelProducer_

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

Definition at line 90 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ scIslandEndcapProducer_

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

Definition at line 91 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ trackPairFinder_

ConversionTrackPairFinder ConvertedPhotonProducer::trackPairFinder_
private

Definition at line 101 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ transientTrackBuilder_

TransientTrackBuilder const* ConvertedPhotonProducer::transientTrackBuilder_
private

Definition at line 95 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections(), and produce().

◆ transientTrackToken_

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

Definition at line 99 of file ConvertedPhotonProducer.cc.

Referenced by produce().

◆ vertexFinder_

ConversionVertexFinder ConvertedPhotonProducer::vertexFinder_
private

Definition at line 102 of file ConvertedPhotonProducer.cc.

Referenced by buildCollections().