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

◆ calculateMinApproachDistance()

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

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

616  {
617  double x1, x2, y1, y2;
618  double xx_1 = track1->innerPosition().x(), yy_1 = track1->innerPosition().y(), zz_1 = track1->innerPosition().z();
619  double xx_2 = track2->innerPosition().x(), yy_2 = track2->innerPosition().y(), zz_2 = track2->innerPosition().z();
620  double radius1 =
621  track1->innerMomentum().Rho() / (.3 * (magneticField_->inTesla(GlobalPoint(xx_1, yy_1, zz_1)).z())) * 100;
622  double radius2 =
623  track2->innerMomentum().Rho() / (.3 * (magneticField_->inTesla(GlobalPoint(xx_2, yy_2, zz_2)).z())) * 100;
624  getCircleCenter(track1, radius1, x1, y1);
625  getCircleCenter(track2, radius2, x2, y2);
626 
627  return std::sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) - radius1 - radius2;
628 }
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 543 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().

545  {
546  reco::Conversion* newCandidate = nullptr;
547  for (auto const& aClus : scHandle->ptrs()) {
548  // SC energy preselection
549  if (aClus->energy() / cosh(aClus->eta()) <= minSCEt_)
550  continue;
551 
552  if (conversionHandle.isValid()) {
553  if (risolveAmbiguity_) {
554  std::vector<reco::ConversionRef> bestRef = solveAmbiguity(conversionHandle, aClus);
555 
556  for (std::vector<reco::ConversionRef>::iterator iRef = bestRef.begin(); iRef != bestRef.end(); iRef++) {
557  if (iRef->isNonnull()) {
558  newCandidate = (*iRef)->clone();
559  outputConversionCollection.push_back(*newCandidate);
560  delete newCandidate;
561  }
562  }
563 
564  } else {
565  for (unsigned int icp = 0; icp < conversionHandle->size(); icp++) {
567  if (!(aClus.id() == cpRef->caloCluster()[0].id() && aClus.key() == cpRef->caloCluster()[0].key()))
568  continue;
569  if (!cpRef->isConverted())
570  continue;
571  if (cpRef->nTracks() < 2)
572  continue;
573  newCandidate = (&(*cpRef))->clone();
574  outputConversionCollection.push_back(*newCandidate);
575  delete newCandidate;
576  }
577 
578  } // solve or not the ambiguity of many conversion candidates
579  }
580  }
581 }
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 630 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().

630  {
631  double x1, y1, phi;
632  x1 = tk->innerPosition().x(); //inner position and inner momentum need track Extra!
633  y1 = tk->innerPosition().y();
634  phi = tk->innerMomentum().phi();
635  const int charge = tk->charge();
636  x0 = x1 + r * sin(phi) * charge;
637  y0 = y1 - r * cos(phi) * charge;
638 }
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 583 of file ConvertedPhotonProducer.cc.

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

Referenced by cleanCollections().

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

◆ 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().