CMS 3D CMS Logo

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

Public Member Functions

 ConversionProducer (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Types

typedef math::XYZPointF Point
 
typedef std::vector< PointPointCollection
 

Private Member Functions

void buildCollection (edm::Event &iEvent, const edm::EventSetup &iSetup, const std::multimap< float, edm::Ptr< reco::ConversionTrack > > &allTracks, const std::multimap< double, reco::CaloClusterPtr > &superClusterPtrs, const std::multimap< double, reco::CaloClusterPtr > &basicClusterPtrs, const reco::Vertex &the_pvtx, reco::ConversionCollection &outputConvPhotonCollection)
 
void buildSuperAndBasicClusterGeoMap (const edm::Event &, std::multimap< double, reco::CaloClusterPtr > &basicClusterPtrs, std::multimap< double, reco::CaloClusterPtr > &superClusterPtrs)
 
bool checkPhi (const edm::RefToBase< reco::Track > &tk_l, const edm::RefToBase< reco::Track > &tk_r, TrackerGeometry const &trackerGeom, MagneticField const &magField, const reco::Vertex &the_vertex)
 
bool checkTrackPair (const std::pair< edm::RefToBase< reco::Track >, reco::CaloClusterPtr > &ll, const std::pair< edm::RefToBase< reco::Track >, reco::CaloClusterPtr > &rr)
 
bool checkVertex (const reco::TransientTrack &ttk_l, const reco::TransientTrack &ttk_r, MagneticField const &magField, reco::Vertex &the_vertex)
 
double etaTransformation (float EtaParticle, float Zvertex)
 
bool getMatchedBC (const std::multimap< double, reco::CaloClusterPtr > &bcMap, const math::XYZPointF &trackImpactPosition, reco::CaloClusterPtr &closestBC)
 
bool getTrackImpactPosition (const reco::Track *tk_ref, TrackerGeometry const &trackerGeom, MagneticField const &magField, math::XYZPointF &ew)
 
bool matchingSC (const std::multimap< double, reco::CaloClusterPtr > &scMap, reco::Conversion &conv, reco::CaloClusterPtrVector &mSC)
 
bool preselectTrackPair (const reco::TransientTrack &ttk_l, const reco::TransientTrack &ttk_r, double &appDist)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
math::XYZPointF toFConverterP (const math::XYZPoint &val)
 
math::XYZVectorF toFConverterV (const math::XYZVector &val)
 
bool trackD0Cut (const edm::RefToBase< reco::Track > &ref)
 
bool trackD0Cut (const edm::RefToBase< reco::Track > &ref, const reco::Vertex &the_pvtx)
 
bool trackQualityFilter (const edm::RefToBase< reco::Track > &ref, bool isLeft)
 

Private Attributes

std::string algoName_
 
bool allowD0_
 
bool allowDeltaCot_
 
bool allowDeltaPhi_
 
bool allowMinApproach_
 
bool allowOppCharge_
 
bool allowSingleLeg_
 
bool allowTrackBC_
 
bool allowVertex_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcBarrelCollection_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcEndcapCollection_
 
bool bypassPreselEcal_
 
bool bypassPreselEcalEcal_
 
bool bypassPreselGsf_
 
std::string ConvertedPhotonCollection_
 
double d0Cut_
 
double deltaCotTheta_
 
double deltaEta_
 
double deltaPhi_
 
double dEtacutForSCmatching_
 
double dEtaTkBC_
 
double dPhicutForSCmatching_
 
double dPhiTkBC_
 
double dzCut_
 
double energyBC_
 
double energyTotalBC_
 
double halfWayEta_
 
double halfWayPhi_
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmagneticField_
 
double maxChi2Left_
 
double maxChi2Right_
 
unsigned int maxNumOfTrackInPU_
 
double maxTrackRho_
 
double maxTrackZ_
 
double minApproachHigh_
 
double minApproachLow_
 
double minHitsLeft_
 
double minHitsRight_
 
double minSCEt_
 
double r_cut
 
bool rightBC_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scBarrelProducer_
 
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scEndcapProducer_
 
edm::EDGetTokenT< edm::View< reco::ConversionTrack > > src_
 
const TransientTrackBuilderthettbuilder_
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtrackerGeometry_
 
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecordtransientTrackBuilder_
 
bool usePvtx_
 
ConversionVertexFinder vertexFinder_
 
edm::EDGetTokenT< reco::VertexCollectionvertexProducer_
 
double vtxChi2_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Description: Produces converted photon objects using default track collections

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

Definition at line 65 of file ConversionProducer.cc.

Member Typedef Documentation

◆ Point

Definition at line 79 of file ConversionProducer.cc.

◆ PointCollection

typedef std::vector<Point> ConversionProducer::PointCollection
private

Definition at line 80 of file ConversionProducer.cc.

Constructor & Destructor Documentation

◆ ConversionProducer()

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

Definition at line 206 of file ConversionProducer.cc.

206  : vertexFinder_{iConfig} {
207  algoName_ = iConfig.getParameter<std::string>("AlgorithmName");
208 
209  src_ = consumes<edm::View<reco::ConversionTrack> >(iConfig.getParameter<edm::InputTag>("src"));
210 
211  maxNumOfTrackInPU_ = iConfig.getParameter<int>("maxNumOfTrackInPU");
212  maxTrackRho_ = iConfig.getParameter<double>("maxTrackRho");
213  maxTrackZ_ = iConfig.getParameter<double>("maxTrackZ");
214 
215  allowTrackBC_ = iConfig.getParameter<bool>("AllowTrackBC");
216  allowD0_ = iConfig.getParameter<bool>("AllowD0");
217  allowDeltaPhi_ = iConfig.getParameter<bool>("AllowDeltaPhi");
218  allowDeltaCot_ = iConfig.getParameter<bool>("AllowDeltaCot");
219  allowMinApproach_ = iConfig.getParameter<bool>("AllowMinApproach");
220  allowOppCharge_ = iConfig.getParameter<bool>("AllowOppCharge");
221 
222  allowVertex_ = iConfig.getParameter<bool>("AllowVertex");
223 
224  bypassPreselGsf_ = iConfig.getParameter<bool>("bypassPreselGsf");
225  bypassPreselEcal_ = iConfig.getParameter<bool>("bypassPreselEcal");
226  bypassPreselEcalEcal_ = iConfig.getParameter<bool>("bypassPreselEcalEcal");
227 
228  deltaEta_ = iConfig.getParameter<double>("deltaEta");
229 
230  halfWayEta_ = iConfig.getParameter<double>("HalfwayEta"); //open angle to search track matches with BC
231 
232  d0Cut_ = iConfig.getParameter<double>("d0");
233 
234  usePvtx_ = iConfig.getParameter<bool>("UsePvtx"); //if use primary vertices
235 
236  vertexProducer_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryVertexProducer"));
237 
238  transientTrackBuilder_ = esConsumes(edm::ESInputTag("", "TransientTrackBuilder"));
241 
242  //Track-cluster matching eta and phi cuts
243  dEtaTkBC_ = iConfig.getParameter<double>("dEtaTrackBC"); //TODO research on cut endcap/barrel
244  dPhiTkBC_ = iConfig.getParameter<double>("dPhiTrackBC");
245 
247  consumes<edm::View<reco::CaloCluster> >(iConfig.getParameter<edm::InputTag>("bcBarrelCollection"));
249  consumes<edm::View<reco::CaloCluster> >(iConfig.getParameter<edm::InputTag>("bcEndcapCollection"));
250 
251  scBarrelProducer_ = consumes<edm::View<reco::CaloCluster> >(iConfig.getParameter<edm::InputTag>("scBarrelProducer"));
252  scEndcapProducer_ = consumes<edm::View<reco::CaloCluster> >(iConfig.getParameter<edm::InputTag>("scEndcapProducer"));
253 
254  energyBC_ = iConfig.getParameter<double>("EnergyBC"); //BC energy threshold
255  energyTotalBC_ = iConfig.getParameter<double>("EnergyTotalBC"); //BC energy threshold
256  minSCEt_ = iConfig.getParameter<double>("minSCEt"); //super cluster energy threshold
257  dEtacutForSCmatching_ = iConfig.getParameter<double>(
258  "dEtacutForSCmatching"); // dEta between conversion momentum direction and SC position
259  dPhicutForSCmatching_ = iConfig.getParameter<double>(
260  "dPhicutForSCmatching"); // dPhi between conversion momentum direction and SC position
261 
262  //Track cuts on left right track: at least one leg reaches ECAL
263  //Left track: must exist, must reach Ecal and match BC, so loose cut on Chi2 and tight on hits
264  //Right track: not necessary to exist (if allowSingleLeg_), not necessary to reach ECAL or match BC, so tight cut on Chi2 and loose on hits
265  maxChi2Left_ = iConfig.getParameter<double>("MaxChi2Left");
266  maxChi2Right_ = iConfig.getParameter<double>("MaxChi2Right");
267  minHitsLeft_ = iConfig.getParameter<int>("MinHitsLeft");
268  minHitsRight_ = iConfig.getParameter<int>("MinHitsRight");
269 
270  //Track Open angle cut on delta cot(theta) and delta phi
271  deltaCotTheta_ = iConfig.getParameter<double>("DeltaCotTheta");
272  deltaPhi_ = iConfig.getParameter<double>("DeltaPhi");
273  minApproachLow_ = iConfig.getParameter<double>("MinApproachLow");
274  minApproachHigh_ = iConfig.getParameter<double>("MinApproachHigh");
275 
276  // if allow single track collection, by default False
277  allowSingleLeg_ = iConfig.getParameter<bool>("AllowSingleLeg");
278  rightBC_ = iConfig.getParameter<bool>("AllowRightBC");
279 
280  //track inner position dz cut, need RECO
281  dzCut_ = iConfig.getParameter<double>("dz");
282  //track analytical cross cut
283  r_cut = iConfig.getParameter<double>("rCut");
284  vtxChi2_ = iConfig.getParameter<double>("vtxChi2");
285 
286  thettbuilder_ = nullptr;
287 
288  //output
289  ConvertedPhotonCollection_ = iConfig.getParameter<std::string>("convertedPhotonCollection");
290 
291  produces<reco::ConversionCollection>(ConvertedPhotonCollection_);
292 }

Member Function Documentation

◆ buildCollection()

void ConversionProducer::buildCollection ( edm::Event iEvent,
const edm::EventSetup iSetup,
const std::multimap< float, edm::Ptr< reco::ConversionTrack > > &  allTracks,
const std::multimap< double, reco::CaloClusterPtr > &  superClusterPtrs,
const std::multimap< double, reco::CaloClusterPtr > &  basicClusterPtrs,
const reco::Vertex the_pvtx,
reco::ConversionCollection outputConvPhotonCollection 
)
private

match the track pair with a SC. If at least one track matches, store the SC

Definition at line 404 of file ConversionProducer.cc.

410  {
411  TrackerGeometry const& trackerGeom = iSetup.getData(trackerGeometry_);
412  MagneticField const& magField = iSetup.getData(magneticField_);
413 
414  // std::vector<math::XYZPointF> trackImpactPosition;
415  // trackImpactPosition.reserve(allTracks.size());//track impact position at ECAL
416  // std::vector<bool> trackValidECAL;//Does this track reach ECAL basic cluster (reach ECAL && match with BC)
417  // trackValidECAL.assign(allTracks.size(), false);
418  //
419  // std::vector<reco::CaloClusterPtr> trackMatchedBC;
420  // reco::CaloClusterPtr empty_bc;
421  // trackMatchedBC.assign(allTracks.size(), empty_bc);//TODO find a better way to avoid copy constructor
422  //
423  // std::vector<int> bcHandleId;//the associated BC handle id, -1 invalid, 0 barrel 1 endcap
424  // bcHandleId.assign(allTracks.size(), -1);
425 
426  // not used std::multimap<double, int> trackInnerEta;//Track innermost state Eta map to TrackRef index, to be used in track pair sorting
427 
428  std::map<edm::Ptr<reco::ConversionTrack>, math::XYZPointF> trackImpactPosition;
429  std::map<edm::Ptr<reco::ConversionTrack>, reco::CaloClusterPtr> trackMatchedBC;
430 
431  ConversionHitChecker hitChecker;
432 
433  //2 propagate all tracks into ECAL, record its eta and phi
434 
435  for (auto const& tk_ref : allTracks) {
436  const reco::Track* tk = tk_ref.second->trackRef().get();
437 
438  //check impact position then match with BC
439  math::XYZPointF ew;
440  if (getTrackImpactPosition(tk, trackerGeom, magField, ew)) {
441  trackImpactPosition[tk_ref.second] = ew;
442 
443  reco::CaloClusterPtr closest_bc; //the closest matching BC to track
444 
445  if (getMatchedBC(basicClusterPtrs, ew, closest_bc)) {
446  trackMatchedBC[tk_ref.second] = closest_bc;
447  }
448  }
449  }
450 
451  //3. pair up tracks:
452  //TODO it is k-Closest pair of point problem
453  //std::cout << " allTracks.size() " << allTracks.size() << std::endl;
454  for (auto ll = allTracks.begin(); ll != allTracks.end(); ++ll) {
455  bool track1HighPurity = true;
456  //std::cout << " Loop on allTracks " << std::endl;
457  const edm::RefToBase<reco::Track>& left = ll->second->trackRef();
458 
459  //TODO: This is a workaround, should be fixed with a proper function in the TTBuilder
460  //(Note that the TrackRef and GsfTrackRef versions of the constructor are needed
461  // to properly get refit tracks in the output vertex)
462  reco::TransientTrack ttk_l;
463  if (dynamic_cast<const reco::GsfTrack*>(left.get())) {
464  ttk_l = thettbuilder_->build(left.castTo<reco::GsfTrackRef>());
465  } else {
466  ttk_l = thettbuilder_->build(left.castTo<reco::TrackRef>());
467  }
468 
470  // if ((allowTrackBC_ && !trackValidECAL[ll-allTracks.begin()]) )//this Left leg should have valid BC
471  // continue;
472 
473  if (the_pvtx.isValid()) {
474  if (!(trackD0Cut(left, the_pvtx)))
475  track1HighPurity = false;
476  } else {
477  if (!(trackD0Cut(left)))
478  track1HighPurity = false;
479  }
480 
481  std::vector<int> right_candidates; //store all right legs passed the cut (theta/approach and ref pair)
482  std::vector<double> right_candidate_theta, right_candidate_approach;
483  std::vector<std::pair<bool, reco::Vertex> > vertex_candidates;
484 
485  //inner loop only over tracks between eta and eta + deltaEta of the first track
486  float etasearch = ll->first + deltaEta_;
487  std::multimap<float, edm::Ptr<reco::ConversionTrack> >::const_iterator rr = ll;
488  ++rr;
489  for (; rr != allTracks.lower_bound(etasearch); ++rr) {
490  bool track2HighPurity = true;
491  bool highPurityPair = true;
492 
493  const edm::RefToBase<reco::Track>& right = rr->second->trackRef();
494 
495  //TODO: This is a workaround, should be fixed with a proper function in the TTBuilder
496  reco::TransientTrack ttk_r;
497  if (dynamic_cast<const reco::GsfTrack*>(right.get())) {
498  ttk_r = thettbuilder_->build(right.castTo<reco::GsfTrackRef>());
499  } else {
500  ttk_r = thettbuilder_->build(right.castTo<reco::TrackRef>());
501  }
502  //std::cout << " This track is " << right->algoName() << std::endl;
503 
504  //all vertexing preselection should go here
505 
506  //check for opposite charge
507  if (allowOppCharge_ && (left->charge() * right->charge() > 0))
508  continue; //same sign, reject pair
509 
511  //if ( (allowTrackBC_ && !trackValidECAL[rr-allTracks.begin()] && rightBC_) )// if right track matches ECAL
512  // continue;
513 
514  double approachDist = -999.;
515  //apply preselection to track pair, overriding preselection for gsf+X or ecalseeded+X pairs if so configured
516  bool preselected = preselectTrackPair(ttk_l, ttk_r, approachDist);
517  preselected = preselected || (bypassPreselGsf_ &&
518  (left->algo() == reco::TrackBase::gsf || right->algo() == reco::TrackBase::gsf));
519  preselected = preselected || (bypassPreselEcal_ && (left->algo() == reco::TrackBase::outInEcalSeededConv ||
523  preselected = preselected || (bypassPreselEcalEcal_ &&
528 
529  if (!preselected) {
530  continue;
531  }
532 
533  //do the actual vertex fit
534  reco::Vertex theConversionVertex; //by default it is invalid
535  bool goodVertex = checkVertex(ttk_l, ttk_r, magField, theConversionVertex);
536 
537  //bail as early as possible in case the fit didn't return a good vertex
538  if (!goodVertex) {
539  continue;
540  }
541 
542  //track pair pass the quality cut
543  if (!((trackQualityFilter(left, true) && trackQualityFilter(right, false)) ||
544  (trackQualityFilter(left, false) && trackQualityFilter(right, true)))) {
545  highPurityPair = false;
546  }
547 
548  if (the_pvtx.isValid()) {
549  if (!(trackD0Cut(right, the_pvtx)))
550  track2HighPurity = false;
551  } else {
552  if (!(trackD0Cut(right)))
553  track2HighPurity = false;
554  }
555 
556  //if all cuts passed, go ahead to make conversion candidates
557  std::vector<edm::RefToBase<reco::Track> > trackPairRef;
558  trackPairRef.push_back(left); //left track
559  trackPairRef.push_back(right); //right track
560 
561  std::vector<math::XYZVectorF> trackPin;
562  std::vector<math::XYZVectorF> trackPout;
563  std::vector<math::XYZPointF> trackInnPos;
564  std::vector<uint8_t> nHitsBeforeVtx;
565  std::vector<Measurement1DFloat> dlClosestHitToVtx;
566 
567  if (left->extra().isNonnull() && right->extra().isNonnull()) { //only available on TrackExtra
568  trackInnPos.push_back(toFConverterP(left->innerPosition()));
569  trackInnPos.push_back(toFConverterP(right->innerPosition()));
570  trackPin.push_back(toFConverterV(left->innerMomentum()));
571  trackPin.push_back(toFConverterV(right->innerMomentum()));
572  trackPout.push_back(toFConverterV(left->outerMomentum()));
573  trackPout.push_back(toFConverterV(right->outerMomentum()));
574  auto leftWrongHits = hitChecker.nHitsBeforeVtx(*left->extra(), theConversionVertex);
575  auto rightWrongHits = hitChecker.nHitsBeforeVtx(*right->extra(), theConversionVertex);
576  nHitsBeforeVtx.push_back(leftWrongHits.first);
577  nHitsBeforeVtx.push_back(rightWrongHits.first);
578  dlClosestHitToVtx.push_back(leftWrongHits.second);
579  dlClosestHitToVtx.push_back(rightWrongHits.second);
580  }
581 
582  uint8_t nSharedHits = hitChecker.nSharedHits(*left.get(), *right.get());
583 
584  //if using kinematic fit, check with chi2 post cut
585  if (theConversionVertex.isValid()) {
586  const float chi2Prob = ChiSquaredProbability(theConversionVertex.chi2(), theConversionVertex.ndof());
587  if (chi2Prob < vtxChi2_)
588  highPurityPair = false;
589  }
590 
591  //std::cout << " highPurityPair after vertex cut " << highPurityPair << std::endl;
592  std::vector<math::XYZPointF> trkPositionAtEcal;
593  std::vector<reco::CaloClusterPtr> matchingBC;
594 
595  if (allowTrackBC_) { //TODO find out the BC ptrs if not doing matching, otherwise, leave it empty
596  //const int lbc_handle = bcHandleId[ll-allTracks.begin()],
597  // rbc_handle = bcHandleId[rr-allTracks.begin()];
598 
599  std::map<edm::Ptr<reco::ConversionTrack>, math::XYZPointF>::const_iterator trackImpactPositionLeft =
600  trackImpactPosition.find(ll->second);
601  std::map<edm::Ptr<reco::ConversionTrack>, math::XYZPointF>::const_iterator trackImpactPositionRight =
602  trackImpactPosition.find(rr->second);
603  std::map<edm::Ptr<reco::ConversionTrack>, reco::CaloClusterPtr>::const_iterator trackMatchedBCLeft =
604  trackMatchedBC.find(ll->second);
605  std::map<edm::Ptr<reco::ConversionTrack>, reco::CaloClusterPtr>::const_iterator trackMatchedBCRight =
606  trackMatchedBC.find(rr->second);
607 
608  if (trackImpactPositionLeft != trackImpactPosition.end()) {
609  trkPositionAtEcal.push_back(trackImpactPositionLeft->second); //left track
610  } else {
611  trkPositionAtEcal.push_back(math::XYZPointF()); //left track
612  }
613  if (trackImpactPositionRight != trackImpactPosition.end()) { //second track ECAL position may be invalid
614  trkPositionAtEcal.push_back(trackImpactPositionRight->second);
615  }
616 
617  double total_e_bc = 0.;
618  if (trackMatchedBCLeft != trackMatchedBC.end()) {
619  matchingBC.push_back(trackMatchedBCLeft->second); //left track
620  total_e_bc += trackMatchedBCLeft->second->energy();
621  } else {
622  matchingBC.push_back(reco::CaloClusterPtr()); //left track
623  }
624  if (trackMatchedBCRight != trackMatchedBC.end()) { //second track ECAL position may be invalid
625  matchingBC.push_back(trackMatchedBCRight->second);
626  total_e_bc += trackMatchedBCRight->second->energy();
627  }
628 
629  if (total_e_bc < energyTotalBC_) {
630  highPurityPair = false;
631  }
632  }
633  //signature cuts, then check if vertex, then post-selection cuts
634  highPurityPair = highPurityPair && track1HighPurity && track2HighPurity && goodVertex &&
635  checkPhi(left, right, trackerGeom, magField, theConversionVertex);
636 
638  /*
639  for ( std::vector<edm::RefToBase<reco::Track> >::iterator iTk=trackPairRef.begin(); iTk!=trackPairRef.end(); iTk++) {
640  math::XYZPointF impPos;
641  if ( getTrackImpactPosition(*iTk, trackerGeom, magField, impPos) ) {
642 
643  }
644 
645  }
646  */
647 
648  const float minAppDist = approachDist;
650  float dummy = 0;
652  reco::Conversion newCandidate(scPtrVec,
653  trackPairRef,
654  trkPositionAtEcal,
655  theConversionVertex,
656  matchingBC,
657  minAppDist,
658  trackInnPos,
659  trackPin,
660  trackPout,
661  nHitsBeforeVtx,
662  dlClosestHitToVtx,
663  nSharedHits,
664  dummy,
665  algo);
666  // Fill in scPtrVec with the macthing SC
667  if (matchingSC(superClusterPtrs, newCandidate, scPtrVec))
668  newCandidate.setMatchingSuperCluster(scPtrVec);
669 
670  newCandidate.setQuality(reco::Conversion::highPurity, highPurityPair);
671  bool generalTracksOnly = ll->second->isTrackerOnly() && rr->second->isTrackerOnly() &&
672  !dynamic_cast<const reco::GsfTrack*>(ll->second->trackRef().get()) &&
673  !dynamic_cast<const reco::GsfTrack*>(rr->second->trackRef().get());
674  bool gsfTracksOpenOnly = ll->second->isGsfTrackOpen() && rr->second->isGsfTrackOpen();
675  bool arbitratedEcalSeeded = ll->second->isArbitratedEcalSeeded() && rr->second->isArbitratedEcalSeeded();
676  bool arbitratedMerged = ll->second->isArbitratedMerged() && rr->second->isArbitratedMerged();
677  bool arbitratedMergedEcalGeneral =
678  ll->second->isArbitratedMergedEcalGeneral() && rr->second->isArbitratedMergedEcalGeneral();
679 
680  newCandidate.setQuality(reco::Conversion::generalTracksOnly, generalTracksOnly);
681  newCandidate.setQuality(reco::Conversion::gsfTracksOpenOnly, gsfTracksOpenOnly);
683  newCandidate.setQuality(reco::Conversion::arbitratedMerged, arbitratedMerged);
684  newCandidate.setQuality(reco::Conversion::arbitratedMergedEcalGeneral, arbitratedMergedEcalGeneral);
685 
686  outputConvPhotonCollection.push_back(newCandidate);
687  }
688  }
689 }

References reco::TrackBase::algo(), reco::Conversion::algoByName(), algoName_, allowOppCharge_, allowTrackBC_, muonTagProbeFilters_cff::allTracks, reco::Conversion::arbitratedEcalSeeded, tkConvValidator_cfi::arbitratedEcalSeeded, reco::Conversion::arbitratedMerged, tkConvValidator_cfi::arbitratedMerged, reco::Conversion::arbitratedMergedEcalGeneral, TransientTrackBuilder::build(), bypassPreselEcal_, bypassPreselEcalEcal_, bypassPreselGsf_, edm::RefToBase< T >::castTo(), reco::TrackBase::charge(), checkPhi(), checkVertex(), reco::Vertex::chi2(), ChiSquaredProbability(), deltaEta_, energyTotalBC_, reco::Track::extra(), reco::Conversion::generalTracksOnly, tkConvValidator_cfi::generalTracksOnly, edm::RefToBase< T >::get(), edm::EventSetup::getData(), getMatchedBC(), getTrackImpactPosition(), reco::TrackBase::gsf, reco::Conversion::gsfTracksOpenOnly, reco::Conversion::highPurity, reco::Track::innerMomentum(), reco::Track::innerPosition(), reco::TrackBase::inOutEcalSeededConv, edm::Ref< C, T, F >::isNonnull(), reco::Vertex::isValid(), magneticField_, matchingSC(), reco::Vertex::ndof(), ConversionHitChecker::nHitsBeforeVtx(), ConversionHitChecker::nSharedHits(), reco::Track::outerMomentum(), reco::TrackBase::outInEcalSeededConv, preselectTrackPair(), findQualityFiles::rr, reco::Conversion::setMatchingSuperCluster(), reco::Conversion::setQuality(), thettbuilder_, toFConverterP(), toFConverterV(), trackD0Cut(), trackerGeometry_, trackQualityFilter(), and vtxChi2_.

Referenced by produce().

◆ buildSuperAndBasicClusterGeoMap()

void ConversionProducer::buildSuperAndBasicClusterGeoMap ( const edm::Event iEvent,
std::multimap< double, reco::CaloClusterPtr > &  basicClusterPtrs,
std::multimap< double, reco::CaloClusterPtr > &  superClusterPtrs 
)
private

Definition at line 355 of file ConversionProducer.cc.

357  {
358  // Get the Super Cluster collection in the Barrel
360  iEvent.getByToken(scBarrelProducer_, scBarrelHandle);
361  if (!scBarrelHandle.isValid()) {
362  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the barrel superclusters!";
363  }
364 
365  // Get the Super Cluster collection in the Endcap
367  iEvent.getByToken(scEndcapProducer_, scEndcapHandle);
368  if (!scEndcapHandle.isValid()) {
369  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the endcap superclusters!";
370  }
371 
373  edm::Handle<edm::View<reco::CaloCluster> > bcEndcapHandle; //TODO check cluster type if BasicCluster or PFCluster
374 
375  iEvent.getByToken(bcBarrelCollection_, bcBarrelHandle);
376  if (!bcBarrelHandle.isValid()) {
377  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the barrel basic clusters!";
378  }
379 
380  iEvent.getByToken(bcEndcapCollection_, bcEndcapHandle);
381  if (!bcEndcapHandle.isValid()) {
382  edm::LogError("ConvertedPhotonProducer") << "Error! Can't get the endcap basic clusters!";
383  }
384 
385  if (bcBarrelHandle.isValid()) {
386  for (auto const& handle : {bcBarrelHandle, bcEndcapHandle}) {
387  for (auto const& bc : handle->ptrs()) {
388  if (bc->energy() > energyBC_)
389  basicClusterPtrs.emplace(bc->position().eta(), bc);
390  }
391  }
392  }
393 
394  if (scBarrelHandle.isValid()) {
395  for (auto const& handle : {scBarrelHandle, scEndcapHandle}) {
396  for (auto const& sc : handle->ptrs()) {
397  if (sc->energy() > minSCEt_)
398  superClusterPtrs.emplace(sc->position().eta(), sc);
399  }
400  }
401  }
402 }

References bcBarrelCollection_, bcEndcapCollection_, energyBC_, patZpeak::handle, iEvent, edm::HandleBase::isValid(), minSCEt_, scBarrelProducer_, and scEndcapProducer_.

Referenced by produce().

◆ checkPhi()

bool ConversionProducer::checkPhi ( const edm::RefToBase< reco::Track > &  tk_l,
const edm::RefToBase< reco::Track > &  tk_r,
TrackerGeometry const &  trackerGeom,
MagneticField const &  magField,
const reco::Vertex the_vertex 
)
private

Definition at line 820 of file ConversionProducer.cc.

824  {
825  if (!allowDeltaPhi_)
826  return true;
827  //if track has innermost momentum, check with innermost phi
828  //if track also has valid vertex, propagate to vertex then calculate phi there
829  //if track has no innermost momentum, just return true, because track->phi() makes no sense
830  if (tk_l->extra().isNonnull() && tk_r->extra().isNonnull()) {
831  double iphi1 = tk_l->innerMomentum().phi(), iphi2 = tk_r->innerMomentum().phi();
832  if (vtx.isValid()) {
833  PropagatorWithMaterial propag(anyDirection, 0.000511, &magField);
834 
835  double recoPhoR = vtx.position().Rho();
838  recoPhoR,
839  Surface::PositionType(0, 0, 0),
840  rot,
842  recoPhoR - 0.001, recoPhoR + 0.001, -fabs(vtx.position().z()), fabs(vtx.position().z()))));
844  Surface::PositionType(0, 0, vtx.position().z()), rot, new SimpleDiskBounds(0, recoPhoR, -0.001, 0.001)));
845 
846  const auto myTSOS1 = trajectoryStateTransform::innerStateOnSurface(*tk_l, trackerGeom, &magField);
847  const auto myTSOS2 = trajectoryStateTransform::innerStateOnSurface(*tk_r, trackerGeom, &magField);
848  TrajectoryStateOnSurface stateAtVtx1, stateAtVtx2;
849  stateAtVtx1 = propag.propagate(myTSOS1, *theBarrel_);
850  if (!stateAtVtx1.isValid()) {
851  stateAtVtx1 = propag.propagate(myTSOS1, *theDisk_);
852  }
853  if (stateAtVtx1.isValid()) {
854  iphi1 = stateAtVtx1.globalDirection().phi();
855  }
856  stateAtVtx2 = propag.propagate(myTSOS2, *theBarrel_);
857  if (!stateAtVtx2.isValid()) {
858  stateAtVtx2 = propag.propagate(myTSOS2, *theDisk_);
859  }
860  if (stateAtVtx2.isValid()) {
861  iphi2 = stateAtVtx2.globalDirection().phi();
862  }
863  }
864  const double dPhi = reco::deltaPhi(iphi1, iphi2);
865  return (fabs(dPhi) < deltaPhi_);
866  } else {
867  return true;
868  }
869 }

References allowDeltaPhi_, anyDirection, reco::deltaPhi(), deltaPhi_, HLT_FULL_cff::dPhi, reco::Track::extra(), TrajectoryStateOnSurface::globalDirection(), reco::Track::innerMomentum(), trajectoryStateTransform::innerStateOnSurface(), edm::Ref< C, T, F >::isNonnull(), TrajectoryStateOnSurface::isValid(), PV3DBase< T, PVType, FrameType >::phi(), PropagatorWithMaterial::propagate(), makeMuonMisalignmentScenario::rot, and extraflags_cff::vtx.

Referenced by buildCollection().

◆ checkTrackPair()

bool ConversionProducer::checkTrackPair ( const std::pair< edm::RefToBase< reco::Track >, reco::CaloClusterPtr > &  ll,
const std::pair< edm::RefToBase< reco::Track >, reco::CaloClusterPtr > &  rr 
)
private

Definition at line 926 of file ConversionProducer.cc.

927  {
928  const reco::CaloClusterPtr& bc_l = ll.second; //can be null, so check isNonnull()
929  const reco::CaloClusterPtr& bc_r = rr.second;
930 
931  //The cuts should be ordered by considering if takes time and if cuts off many fakes
932  if (allowTrackBC_) {
933  //check energy of BC
934  double total_e_bc = 0;
935  if (bc_l.isNonnull())
936  total_e_bc += bc_l->energy();
937  if (rightBC_)
938  if (bc_r.isNonnull())
939  total_e_bc += bc_r->energy();
940 
941  if (total_e_bc < energyTotalBC_)
942  return false;
943  }
944 
945  return true;
946 }

References allowTrackBC_, energyTotalBC_, edm::Ptr< T >::isNonnull(), rightBC_, and findQualityFiles::rr.

◆ checkVertex()

bool ConversionProducer::checkVertex ( const reco::TransientTrack ttk_l,
const reco::TransientTrack ttk_r,
MagneticField const &  magField,
reco::Vertex the_vertex 
)
inlineprivate

Definition at line 161 of file ConversionProducer.cc.

164  {
165  return vertexFinder_.run({ttk_l, ttk_r}, the_vertex);
166  }

References ConversionVertexFinder::run(), and vertexFinder_.

Referenced by buildCollection().

◆ etaTransformation()

double ConversionProducer::etaTransformation ( float  EtaParticle,
float  Zvertex 
)
private

Definition at line 948 of file ConversionProducer.cc.

948  {
949  //---Definitions
950  const float PI = 3.1415927;
951 
952  //---Definitions for ECAL
953  const float R_ECAL = 136.5;
954  const float Z_Endcap = 328.0;
955  const float etaBarrelEndcap = 1.479;
956 
957  //---ETA correction
958 
959  float Theta = 0.0;
960  float ZEcal = R_ECAL * sinh(EtaParticle) + Zvertex;
961 
962  if (ZEcal != 0.0)
963  Theta = atan(R_ECAL / ZEcal);
964  if (Theta < 0.0)
965  Theta = Theta + PI;
966  double ETA = -log(tan(0.5 * Theta));
967 
968  if (fabs(ETA) > etaBarrelEndcap) {
969  float Zend = Z_Endcap;
970  if (EtaParticle < 0.0)
971  Zend = -Zend;
972  float Zlen = Zend - Zvertex;
973  float RR = Zlen / sinh(EtaParticle);
974  Theta = atan(RR / Zend);
975  if (Theta < 0.0)
976  Theta = Theta + PI;
977  ETA = -log(tan(0.5 * Theta));
978  }
979  //---Return the result
980  return ETA;
981  //---end
982 }

References ETA, etaBarrelEndcap, dqm-mbProfile::log, PI, R_ECAL, funct::tan(), Z_Endcap, and ZEcal.

Referenced by matchingSC().

◆ getMatchedBC()

bool ConversionProducer::getMatchedBC ( const std::multimap< double, reco::CaloClusterPtr > &  bcMap,
const math::XYZPointF trackImpactPosition,
reco::CaloClusterPtr closestBC 
)
private

Definition at line 788 of file ConversionProducer.cc.

790  {
791  const double track_eta = trackImpactPosition.eta();
792  const double track_phi = trackImpactPosition.phi();
793 
794  double min_eta = 999., min_phi = 999.;
795  reco::CaloClusterPtr closest_bc;
796  for (std::multimap<double, reco::CaloClusterPtr>::const_iterator bc = bcMap.lower_bound(track_eta - halfWayEta_);
797  bc != bcMap.upper_bound(track_eta + halfWayEta_);
798  ++bc) { //use eta map to select possible BC collection then loop in
799  const reco::CaloClusterPtr& ebc = bc->second;
800  const double delta_eta = track_eta - (ebc->position().eta());
801  const double delta_phi = reco::deltaPhi(track_phi, (ebc->position().phi()));
802  if (fabs(delta_eta) < dEtaTkBC_ && fabs(delta_phi) < dPhiTkBC_) {
803  if (fabs(min_eta) > fabs(delta_eta) && fabs(min_phi) > fabs(delta_phi)) { //take the closest to track BC
804  min_eta = delta_eta;
805  min_phi = delta_phi;
806  closest_bc = bc->second;
807  //TODO check if min_eta>delta_eta but min_phi<delta_phi
808  }
809  }
810  }
811 
812  if (min_eta < 999.) {
813  closestBC = closest_bc;
814  return true;
815  } else
816  return false;
817 }

References HLT_FULL_cff::delta_eta, HLT_FULL_cff::delta_phi, reco::deltaPhi(), dEtaTkBC_, dPhiTkBC_, halfWayEta_, and HLT_FULL_cff::min_eta.

Referenced by buildCollection().

◆ getTrackImpactPosition()

bool ConversionProducer::getTrackImpactPosition ( const reco::Track tk_ref,
TrackerGeometry const &  trackerGeom,
MagneticField const &  magField,
math::XYZPointF ew 
)
private

Definition at line 716 of file ConversionProducer.cc.

719  {
720  PropagatorWithMaterial propag(alongMomentum, 0.000511, &magField);
721 
723  129.f, GlobalPoint(0., 0., 0.), TkRotation<float>(), new SimpleCylinderBounds(129, 129, -320.5, 320.5)));
724  constexpr float epsilon = 0.001;
725  Surface::RotationType rot; // unit rotation matrix
726  constexpr float barrelRadius = 129.f;
727  constexpr float barrelHalfLength = 270.9f;
728  constexpr float endcapRadius = 171.1f;
729  constexpr float endcapZ = 320.5f;
731  barrelRadius,
732  Surface::PositionType(0, 0, 0),
733  rot,
735  ReferenceCountingPointer<BoundDisk> theNegativeEtaEndcap_(new BoundDisk(
737  ReferenceCountingPointer<BoundDisk> thePositiveEtaEndcap_(new BoundDisk(
739 
740  //const TrajectoryStateOnSurface myTSOS = trajectoryStateTransform::innerStateOnSurface(*(*ref), *trackerGeom, magField);
741  const auto myTSOS = trajectoryStateTransform::outerStateOnSurface(*tk_ref, trackerGeom, &magField);
742  TrajectoryStateOnSurface stateAtECAL;
743  stateAtECAL = propag.propagate(myTSOS, *theBarrel_);
744  if (!stateAtECAL.isValid() || (stateAtECAL.isValid() && fabs(stateAtECAL.globalPosition().eta()) > 1.479f)) {
745  //endcap propagator
746  if (myTSOS.globalPosition().z() > 0.) {
747  stateAtECAL = propag.propagate(myTSOS, *thePositiveEtaEndcap_);
748  } else {
749  stateAtECAL = propag.propagate(myTSOS, *theNegativeEtaEndcap_);
750  }
751  }
752  if (stateAtECAL.isValid()) {
753  ew = stateAtECAL.globalPosition();
754  return true;
755  } else
756  return false;
757 }

References alongMomentum, barrelHalfLength, barrelRadius, endcapRadius, endcapZ, geometryDiff::epsilon, PV3DBase< T, PVType, FrameType >::eta(), f, TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::isValid(), trajectoryStateTransform::outerStateOnSurface(), PropagatorWithMaterial::propagate(), and makeMuonMisalignmentScenario::rot.

Referenced by buildCollection().

◆ matchingSC()

bool ConversionProducer::matchingSC ( const std::multimap< double, reco::CaloClusterPtr > &  scMap,
reco::Conversion conv,
reco::CaloClusterPtrVector mSC 
)
private

Definition at line 759 of file ConversionProducer.cc.

762  {
763  // double dRMin=999.;
764  double detaMin = 999.;
765  double dphiMin = 999.;
767  for (std::multimap<double, reco::CaloClusterPtr>::const_iterator scItr = scMap.begin(); scItr != scMap.end();
768  scItr++) {
769  const reco::CaloClusterPtr& sc = scItr->second;
770  const double delta_phi = reco::deltaPhi(aConv.refittedPairMomentum().phi(), sc->phi());
771  double sceta = sc->eta();
772  double conveta = etaTransformation(aConv.refittedPairMomentum().eta(), aConv.zOfPrimaryVertexFromTracks());
773  const double delta_eta = fabs(conveta - sceta);
774  if (fabs(delta_eta) < fabs(detaMin) && fabs(delta_phi) < fabs(dphiMin)) {
775  detaMin = fabs(delta_eta);
776  dphiMin = fabs(delta_phi);
777  match = sc;
778  }
779  }
780 
781  if (fabs(detaMin) < dEtacutForSCmatching_ && fabs(dphiMin) < dPhicutForSCmatching_) {
782  mSC.push_back(match);
783  return true;
784  } else
785  return false;
786 }

References HLT_FULL_cff::delta_eta, HLT_FULL_cff::delta_phi, reco::deltaPhi(), dEtacutForSCmatching_, dPhicutForSCmatching_, TrackSplittingMonitor_cfi::dphiMin, etaTransformation(), match(), edm::PtrVector< T >::push_back(), reco::Conversion::refittedPairMomentum(), and reco::Conversion::zOfPrimaryVertexFromTracks().

Referenced by buildCollection().

◆ preselectTrackPair()

bool ConversionProducer::preselectTrackPair ( const reco::TransientTrack ttk_l,
const reco::TransientTrack ttk_r,
double &  appDist 
)
private

Definition at line 871 of file ConversionProducer.cc.

873  {
874  double dCotTheta = 1. / tan(ttk_l.track().innerMomentum().theta()) - 1. / tan(ttk_r.track().innerMomentum().theta());
875  if (allowDeltaCot_ && (std::abs(dCotTheta) > deltaCotTheta_)) {
876  return false;
877  }
878 
879  //non-conversion hypothesis, reject prompt track pairs
880  ClosestApproachInRPhi closest;
882  if (!closest.status()) {
883  return false;
884  }
885 
886  if (closest.crossingPoint().perp() < r_cut) {
887  return false;
888  }
889 
890  //compute tangent point btw tracks (conversion hypothesis)
891  TangentApproachInRPhi tangent;
893  if (!tangent.status()) {
894  return false;
895  }
896 
897  GlobalPoint tangentPoint = tangent.crossingPoint();
898  double rho = tangentPoint.perp();
899 
900  //reject candidates well outside of tracker bounds
901  if (rho > maxTrackRho_) {
902  return false;
903  }
904 
905  if (std::abs(tangentPoint.z()) > maxTrackZ_) {
906  return false;
907  }
908 
909  std::pair<GlobalTrajectoryParameters, GlobalTrajectoryParameters> trajs = tangent.trajectoryParameters();
910 
911  //very large separation in z, no hope
912  if (std::abs(trajs.first.position().z() - trajs.second.position().z()) > dzCut_) {
913  return false;
914  }
915 
916  float minApproach = tangent.perpdist();
917  appDist = minApproach;
918 
919  if (allowMinApproach_ && (minApproach < minApproachLow_ || minApproach > minApproachHigh_)) {
920  return false;
921  }
922 
923  return true;
924 }

References funct::abs(), allowDeltaCot_, allowMinApproach_, TangentApproachInRPhi::calculate(), ClosestApproachInRPhi::calculate(), TangentApproachInRPhi::crossingPoint(), ClosestApproachInRPhi::crossingPoint(), deltaCotTheta_, dzCut_, reco::Track::innerMomentum(), reco::TransientTrack::innermostMeasurementState(), maxTrackRho_, maxTrackZ_, minApproachHigh_, PV3DBase< T, PVType, FrameType >::perp(), TangentApproachInRPhi::perpdist(), r_cut, rho, TangentApproachInRPhi::status(), ClosestApproachInRPhi::status(), funct::tan(), reco::TransientTrack::track(), TangentApproachInRPhi::trajectoryParameters(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by buildCollection().

◆ produce()

void ConversionProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 295 of file ConversionProducer.cc.

295  {
296  using namespace edm;
297 
298  reco::ConversionCollection outputConvPhotonCollection;
299  auto outputConvPhotonCollection_p = std::make_unique<reco::ConversionCollection>();
300 
301  //std::cout << " ConversionProducer::produce " << std::endl;
302  //Read multiple track input collections
303 
304  edm::Handle<edm::View<reco::ConversionTrack> > trackCollectionHandle;
305  iEvent.getByToken(src_, trackCollectionHandle);
306 
307  //build map of ConversionTracks ordered in eta
308  std::multimap<float, edm::Ptr<reco::ConversionTrack> > convTrackMap;
309  for (auto const& t : trackCollectionHandle->ptrs())
310  convTrackMap.emplace(t->track()->eta(), t);
311 
314  if (usePvtx_) {
315  iEvent.getByToken(vertexProducer_, vertexHandle);
316  if (!vertexHandle.isValid()) {
317  edm::LogError("ConversionProducer") << "Error! Can't get the product primary Vertex Collection "
318  << "\n";
319  usePvtx_ = false;
320  }
321  if (usePvtx_)
322  vertexCollection = *(vertexHandle.product());
323  }
324 
326 
327  reco::Vertex the_pvtx;
328  //because the priamry vertex is sorted by quality, the first one is the best
329  if (!vertexCollection.empty())
330  the_pvtx = *(vertexCollection.begin());
331 
332  if (trackCollectionHandle->size() > maxNumOfTrackInPU_) {
333  iEvent.put(std::move(outputConvPhotonCollection_p), ConvertedPhotonCollection_);
334  return;
335  }
336 
337  // build Super and Basic cluster geometry map to search in eta bounds for clusters
338  std::multimap<double, reco::CaloClusterPtr> basicClusterPtrs;
339  std::multimap<double, reco::CaloClusterPtr> superClusterPtrs;
340 
341  buildSuperAndBasicClusterGeoMap(iEvent, basicClusterPtrs, superClusterPtrs);
342 
344  iSetup,
345  convTrackMap,
346  superClusterPtrs,
347  basicClusterPtrs,
348  the_pvtx,
349  outputConvPhotonCollection); //allow empty basicClusterPtrs
350 
351  outputConvPhotonCollection_p->assign(outputConvPhotonCollection.begin(), outputConvPhotonCollection.end());
352  iEvent.put(std::move(outputConvPhotonCollection_p), ConvertedPhotonCollection_);
353 }

References buildCollection(), buildSuperAndBasicClusterGeoMap(), ConvertedPhotonCollection_, edm::EventSetup::getData(), iEvent, edm::HandleBase::isValid(), maxNumOfTrackInPU_, eostools::move(), edm::Handle< T >::product(), src_, submitPVValidationJobs::t, thettbuilder_, transientTrackBuilder_, usePvtx_, spclusmultinvestigator_cfi::vertexCollection, and vertexProducer_.

◆ toFConverterP()

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

Definition at line 186 of file ConversionProducer.cc.

186 { return math::XYZPointF(val.x(), val.y(), val.z()); }

References heppy_batch::val.

Referenced by buildCollection().

◆ toFConverterV()

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

Definition at line 188 of file ConversionProducer.cc.

188 { return math::XYZVectorF(val.x(), val.y(), val.z()); }

References heppy_batch::val.

Referenced by buildCollection().

◆ trackD0Cut() [1/2]

bool ConversionProducer::trackD0Cut ( const edm::RefToBase< reco::Track > &  ref)
inlineprivate

Definition at line 706 of file ConversionProducer.cc.

706  {
707  //NOTE if not allow d0 cut, always true
708  return ((!allowD0_) || !(ref->d0() * ref->charge() / ref->d0Error() < d0Cut_));
709 }

References allowD0_, reco::TrackBase::charge(), reco::TrackBase::d0(), d0Cut_, and reco::TrackBase::d0Error().

Referenced by buildCollection().

◆ trackD0Cut() [2/2]

bool ConversionProducer::trackD0Cut ( const edm::RefToBase< reco::Track > &  ref,
const reco::Vertex the_pvtx 
)
inlineprivate

Definition at line 711 of file ConversionProducer.cc.

711  {
712  //
713  return ((!allowD0_) || !(-ref->dxy(the_pvtx.position()) * ref->charge() / ref->dxyError() < d0Cut_));
714 }

References allowD0_, reco::TrackBase::charge(), d0Cut_, reco::TrackBase::dxy(), reco::TrackBase::dxyError(), and reco::Vertex::position().

◆ trackQualityFilter()

bool ConversionProducer::trackQualityFilter ( const edm::RefToBase< reco::Track > &  ref,
bool  isLeft 
)
inlineprivate

Definition at line 695 of file ConversionProducer.cc.

695  {
696  bool pass = true;
697  if (isLeft) {
698  pass = (ref->normalizedChi2() < maxChi2Left_ && ref->found() >= minHitsLeft_);
699  } else {
700  pass = (ref->normalizedChi2() < maxChi2Right_ && ref->found() >= minHitsRight_);
701  }
702 
703  return pass;
704 }

References reco::Track::found(), maxChi2Left_, maxChi2Right_, minHitsLeft_, minHitsRight_, and reco::TrackBase::normalizedChi2().

Referenced by buildCollection().

Member Data Documentation

◆ algoName_

std::string ConversionProducer::algoName_
private

Definition at line 77 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ allowD0_

bool ConversionProducer::allowD0_
private

Definition at line 94 of file ConversionProducer.cc.

Referenced by trackD0Cut().

◆ allowDeltaCot_

bool ConversionProducer::allowDeltaCot_
private

Definition at line 94 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ allowDeltaPhi_

bool ConversionProducer::allowDeltaPhi_
private

Definition at line 94 of file ConversionProducer.cc.

Referenced by checkPhi().

◆ allowMinApproach_

bool ConversionProducer::allowMinApproach_
private

Definition at line 94 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ allowOppCharge_

bool ConversionProducer::allowOppCharge_
private

Definition at line 94 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ allowSingleLeg_

bool ConversionProducer::allowSingleLeg_
private

Definition at line 128 of file ConversionProducer.cc.

◆ allowTrackBC_

bool ConversionProducer::allowTrackBC_
private

Definition at line 94 of file ConversionProducer.cc.

Referenced by buildCollection(), and checkTrackPair().

◆ allowVertex_

bool ConversionProducer::allowVertex_
private

Definition at line 94 of file ConversionProducer.cc.

◆ bcBarrelCollection_

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

Definition at line 86 of file ConversionProducer.cc.

Referenced by buildSuperAndBasicClusterGeoMap().

◆ bcEndcapCollection_

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

Definition at line 87 of file ConversionProducer.cc.

Referenced by buildSuperAndBasicClusterGeoMap().

◆ bypassPreselEcal_

bool ConversionProducer::bypassPreselEcal_
private

Definition at line 96 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ bypassPreselEcalEcal_

bool ConversionProducer::bypassPreselEcalEcal_
private

Definition at line 96 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ bypassPreselGsf_

bool ConversionProducer::bypassPreselGsf_
private

Definition at line 96 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ ConvertedPhotonCollection_

std::string ConversionProducer::ConvertedPhotonCollection_
private

Definition at line 88 of file ConversionProducer.cc.

Referenced by produce().

◆ d0Cut_

double ConversionProducer::d0Cut_
private

Definition at line 115 of file ConversionProducer.cc.

Referenced by trackD0Cut().

◆ deltaCotTheta_

double ConversionProducer::deltaCotTheta_
private

Definition at line 122 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ deltaEta_

double ConversionProducer::deltaEta_
private

Definition at line 104 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ deltaPhi_

double ConversionProducer::deltaPhi_
private

Definition at line 122 of file ConversionProducer.cc.

Referenced by checkPhi().

◆ dEtacutForSCmatching_

double ConversionProducer::dEtacutForSCmatching_
private

Definition at line 111 of file ConversionProducer.cc.

Referenced by matchingSC().

◆ dEtaTkBC_

double ConversionProducer::dEtaTkBC_
private

Definition at line 117 of file ConversionProducer.cc.

Referenced by getMatchedBC().

◆ dPhicutForSCmatching_

double ConversionProducer::dPhicutForSCmatching_
private

Definition at line 112 of file ConversionProducer.cc.

Referenced by matchingSC().

◆ dPhiTkBC_

double ConversionProducer::dPhiTkBC_
private

Definition at line 117 of file ConversionProducer.cc.

Referenced by getMatchedBC().

◆ dzCut_

double ConversionProducer::dzCut_
private

Definition at line 116 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ energyBC_

double ConversionProducer::energyBC_
private

Definition at line 113 of file ConversionProducer.cc.

Referenced by buildSuperAndBasicClusterGeoMap().

◆ energyTotalBC_

double ConversionProducer::energyTotalBC_
private

Definition at line 114 of file ConversionProducer.cc.

Referenced by buildCollection(), and checkTrackPair().

◆ halfWayEta_

double ConversionProducer::halfWayEta_
private

Definition at line 106 of file ConversionProducer.cc.

Referenced by getMatchedBC().

◆ halfWayPhi_

double ConversionProducer::halfWayPhi_
private

Definition at line 106 of file ConversionProducer.cc.

◆ magneticField_

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> ConversionProducer::magneticField_
private

Definition at line 92 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ maxChi2Left_

double ConversionProducer::maxChi2Left_
private

Definition at line 119 of file ConversionProducer.cc.

Referenced by trackQualityFilter().

◆ maxChi2Right_

double ConversionProducer::maxChi2Right_
private

Definition at line 119 of file ConversionProducer.cc.

Referenced by trackQualityFilter().

◆ maxNumOfTrackInPU_

unsigned int ConversionProducer::maxNumOfTrackInPU_
private

Definition at line 107 of file ConversionProducer.cc.

Referenced by produce().

◆ maxTrackRho_

double ConversionProducer::maxTrackRho_
private

Definition at line 109 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ maxTrackZ_

double ConversionProducer::maxTrackZ_
private

Definition at line 108 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ minApproachHigh_

double ConversionProducer::minApproachHigh_
private

Definition at line 122 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ minApproachLow_

double ConversionProducer::minApproachLow_
private

Definition at line 122 of file ConversionProducer.cc.

◆ minHitsLeft_

double ConversionProducer::minHitsLeft_
private

Definition at line 120 of file ConversionProducer.cc.

Referenced by trackQualityFilter().

◆ minHitsRight_

double ConversionProducer::minHitsRight_
private

Definition at line 120 of file ConversionProducer.cc.

Referenced by trackQualityFilter().

◆ minSCEt_

double ConversionProducer::minSCEt_
private

Definition at line 110 of file ConversionProducer.cc.

Referenced by buildSuperAndBasicClusterGeoMap().

◆ r_cut

double ConversionProducer::r_cut
private

Definition at line 125 of file ConversionProducer.cc.

Referenced by preselectTrackPair().

◆ rightBC_

bool ConversionProducer::rightBC_
private

Definition at line 129 of file ConversionProducer.cc.

Referenced by checkTrackPair().

◆ scBarrelProducer_

edm::EDGetTokenT<edm::View<reco::CaloCluster> > ConversionProducer::scBarrelProducer_
private

Definition at line 84 of file ConversionProducer.cc.

Referenced by buildSuperAndBasicClusterGeoMap().

◆ scEndcapProducer_

edm::EDGetTokenT<edm::View<reco::CaloCluster> > ConversionProducer::scEndcapProducer_
private

Definition at line 85 of file ConversionProducer.cc.

Referenced by buildSuperAndBasicClusterGeoMap().

◆ src_

edm::EDGetTokenT<edm::View<reco::ConversionTrack> > ConversionProducer::src_
private

Definition at line 82 of file ConversionProducer.cc.

Referenced by produce().

◆ thettbuilder_

const TransientTrackBuilder* ConversionProducer::thettbuilder_
private

Definition at line 102 of file ConversionProducer.cc.

Referenced by buildCollection(), and produce().

◆ trackerGeometry_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> ConversionProducer::trackerGeometry_
private

Definition at line 91 of file ConversionProducer.cc.

Referenced by buildCollection().

◆ transientTrackBuilder_

edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> ConversionProducer::transientTrackBuilder_
private

Definition at line 90 of file ConversionProducer.cc.

Referenced by produce().

◆ usePvtx_

bool ConversionProducer::usePvtx_
private

Definition at line 98 of file ConversionProducer.cc.

Referenced by produce().

◆ vertexFinder_

ConversionVertexFinder ConversionProducer::vertexFinder_
private

Definition at line 100 of file ConversionProducer.cc.

Referenced by checkVertex().

◆ vertexProducer_

edm::EDGetTokenT<reco::VertexCollection> ConversionProducer::vertexProducer_
private

Definition at line 99 of file ConversionProducer.cc.

Referenced by produce().

◆ vtxChi2_

double ConversionProducer::vtxChi2_
private

Definition at line 126 of file ConversionProducer.cc.

Referenced by buildCollection().

reco::Track::outerMomentum
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
Definition: Track.h:65
TrajectoryStateOnSurface::globalDirection
GlobalVector globalDirection() const
Definition: TrajectoryStateOnSurface.h:67
PI
Definition: PayloadInspector.h:21
ConversionProducer::deltaCotTheta_
double deltaCotTheta_
Definition: ConversionProducer.cc:122
TkRotation< float >
reco::Vertex::isValid
bool isValid() const
Tells whether the vertex is valid.
Definition: Vertex.h:72
ConversionProducer::halfWayEta_
double halfWayEta_
Definition: ConversionProducer.cc:106
reco::Conversion
Definition: Conversion.h:23
ConversionProducer::bypassPreselEcal_
bool bypassPreselEcal_
Definition: ConversionProducer.cc:96
ConversionProducer::energyBC_
double energyBC_
Definition: ConversionProducer.cc:113
ConversionProducer::vertexFinder_
ConversionVertexFinder vertexFinder_
Definition: ConversionProducer.cc:100
HLT_FULL_cff.min_eta
min_eta
Definition: HLT_FULL_cff.py:47151
anyDirection
Definition: PropagationDirection.h:4
edm::ESInputTag
Definition: ESInputTag.h:87
reco::Conversion::generalTracksOnly
Definition: Conversion.h:28
ConversionProducer::d0Cut_
double d0Cut_
Definition: ConversionProducer.cc:115
ConversionProducer::getMatchedBC
bool getMatchedBC(const std::multimap< double, reco::CaloClusterPtr > &bcMap, const math::XYZPointF &trackImpactPosition, reco::CaloClusterPtr &closestBC)
Definition: ConversionProducer.cc:788
BoundCylinder
Cylinder BoundCylinder
Definition: BoundCylinder.h:17
ConversionProducer::transientTrackBuilder_
edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transientTrackBuilder_
Definition: ConversionProducer.cc:90
edm::Handle::product
T const * product() const
Definition: Handle.h:70
ConversionProducer::dzCut_
double dzCut_
Definition: ConversionProducer.cc:116
ConversionProducer::minHitsLeft_
double minHitsLeft_
Definition: ConversionProducer.cc:120
ConversionProducer::allowD0_
bool allowD0_
Definition: ConversionProducer.cc:94
ClosestApproachInRPhi::status
bool status() const override
Definition: ClosestApproachInRPhi.h:37
reco::TrackBase::inOutEcalSeededConv
Definition: TrackBase.h:106
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
ConversionProducer::trackQualityFilter
bool trackQualityFilter(const edm::RefToBase< reco::Track > &ref, bool isLeft)
Definition: ConversionProducer.cc:695
PI
#define PI
Definition: QcdUeDQM.h:37
ConversionProducer::allowOppCharge_
bool allowOppCharge_
Definition: ConversionProducer.cc:94
patZpeak.handle
handle
Definition: patZpeak.py:23
reco::Conversion::gsfTracksOpenOnly
Definition: Conversion.h:32
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
ChiSquaredProbability
float ChiSquaredProbability(double chiSquared, double nrDOF)
Definition: ChiSquaredProbability.cc:13
findQualityFiles.rr
string rr
Definition: findQualityFiles.py:185
TangentApproachInRPhi::status
bool status() const override
Definition: TangentApproachInRPhi.h:26
ConversionProducer::buildCollection
void buildCollection(edm::Event &iEvent, const edm::EventSetup &iSetup, const std::multimap< float, edm::Ptr< reco::ConversionTrack > > &allTracks, const std::multimap< double, reco::CaloClusterPtr > &superClusterPtrs, const std::multimap< double, reco::CaloClusterPtr > &basicClusterPtrs, const reco::Vertex &the_pvtx, reco::ConversionCollection &outputConvPhotonCollection)
Definition: ConversionProducer.cc:404
edm
HLT enums.
Definition: AlignableModifier.h:19
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
ConversionProducer::allowSingleLeg_
bool allowSingleLeg_
Definition: ConversionProducer.cc:128
ConversionProducer::bypassPreselEcalEcal_
bool bypassPreselEcalEcal_
Definition: ConversionProducer.cc:96
muonTagProbeFilters_cff.allTracks
allTracks
Definition: muonTagProbeFilters_cff.py:22
ConversionProducer::getTrackImpactPosition
bool getTrackImpactPosition(const reco::Track *tk_ref, TrackerGeometry const &trackerGeom, MagneticField const &magField, math::XYZPointF &ew)
Definition: ConversionProducer.cc:716
ConversionProducer::buildSuperAndBasicClusterGeoMap
void buildSuperAndBasicClusterGeoMap(const edm::Event &, std::multimap< double, reco::CaloClusterPtr > &basicClusterPtrs, std::multimap< double, reco::CaloClusterPtr > &superClusterPtrs)
Definition: ConversionProducer.cc:355
ConversionProducer::minHitsRight_
double minHitsRight_
Definition: ConversionProducer.cc:120
ConversionProducer::matchingSC
bool matchingSC(const std::multimap< double, reco::CaloClusterPtr > &scMap, reco::Conversion &conv, reco::CaloClusterPtrVector &mSC)
Definition: ConversionProducer.cc:759
reco::Vertex::position
const Point & position() const
position
Definition: Vertex.h:114
reco::Track::found
unsigned short found() const
Number of valid hits on track.
Definition: Track.h:142
ConversionProducer::maxChi2Left_
double maxChi2Left_
Definition: ConversionProducer.cc:119
ConversionProducer::trackD0Cut
bool trackD0Cut(const edm::RefToBase< reco::Track > &ref)
Definition: ConversionProducer.cc:706
reco::TrackBase::gsf
Definition: TrackBase.h:120
TangentApproachInRPhi::perpdist
float perpdist() const
Definition: TangentApproachInRPhi.cc:58
ConversionProducer::thettbuilder_
const TransientTrackBuilder * thettbuilder_
Definition: ConversionProducer.cc:102
ReferenceCountingPointer< BoundCylinder >
ConversionProducer::deltaEta_
double deltaEta_
Definition: ConversionProducer.cc:104
HLT_FULL_cff.dPhi
dPhi
Definition: HLT_FULL_cff.py:13703
ConversionProducer::dEtaTkBC_
double dEtaTkBC_
Definition: ConversionProducer.cc:117
edm::Handle
Definition: AssociativeIterator.h:50
ConversionProducer::maxTrackZ_
double maxTrackZ_
Definition: ConversionProducer.cc:108
reco::Track::extra
const TrackExtraRef & extra() const
reference to "extra" object
Definition: Track.h:139
reco::TrackBase::dxyError
double dxyError() const
error on dxy
Definition: TrackBase.h:769
ConversionProducer::minApproachLow_
double minApproachLow_
Definition: ConversionProducer.cc:122
ConversionProducer::preselectTrackPair
bool preselectTrackPair(const reco::TransientTrack &ttk_l, const reco::TransientTrack &ttk_r, double &appDist)
Definition: ConversionProducer.cc:871
geometryDiff.epsilon
int epsilon
Definition: geometryDiff.py:26
edm::Ref< GsfTrackCollection >
reco::ConversionCollection
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
Definition: ConversionFwd.h:9
trajectoryStateTransform::outerStateOnSurface
TrajectoryStateOnSurface outerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:118
barrelHalfLength
constexpr float barrelHalfLength
Definition: ConversionTrackEcalImpactPoint.cc:16
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
SimpleCylinderBounds
Definition: SimpleCylinderBounds.h:19
ConversionHitChecker::nSharedHits
uint8_t nSharedHits(const reco::Track &trk1, const reco::Track &trk2) const
Definition: ConversionHitChecker.cc:71
SimpleDiskBounds
Definition: SimpleDiskBounds.h:11
cmsdt::algo
algo
Definition: constants.h:165
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
ConversionProducer::usePvtx_
bool usePvtx_
Definition: ConversionProducer.cc:98
reco::Conversion::arbitratedMerged
Definition: Conversion.h:30
PropagatorWithMaterial
Definition: PropagatorWithMaterial.h:25
reco::Track::innerMomentum
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
Definition: Track.h:59
ConversionProducer::allowDeltaPhi_
bool allowDeltaPhi_
Definition: ConversionProducer.cc:94
ConversionProducer::energyTotalBC_
double energyTotalBC_
Definition: ConversionProducer.cc:114
ClosestApproachInRPhi::calculate
bool calculate(const TrajectoryStateOnSurface &sta, const TrajectoryStateOnSurface &stb) override
Definition: ClosestApproachInRPhi.cc:8
reco::Conversion::arbitratedEcalSeeded
Definition: Conversion.h:29
reco::TrackBase::outInEcalSeededConv
Definition: TrackBase.h:105
edm::PtrVector< CaloCluster >
ConversionProducer::checkVertex
bool checkVertex(const reco::TransientTrack &ttk_l, const reco::TransientTrack &ttk_r, MagneticField const &magField, reco::Vertex &the_vertex)
Definition: ConversionProducer.cc:161
ConversionProducer::toFConverterV
math::XYZVectorF toFConverterV(const math::XYZVector &val)
Definition: ConversionProducer.cc:188
ConversionProducer::allowTrackBC_
bool allowTrackBC_
Definition: ConversionProducer.cc:94
reco::Track
Definition: Track.h:27
ClosestApproachInRPhi
Definition: ClosestApproachInRPhi.h:26
ConversionProducer::toFConverterP
math::XYZPointF toFConverterP(const math::XYZPoint &val)
Definition: ConversionProducer.cc:186
ConversionProducer::deltaPhi_
double deltaPhi_
Definition: ConversionProducer.cc:122
TangentApproachInRPhi::crossingPoint
GlobalPoint crossingPoint() const override
Definition: TangentApproachInRPhi.cc:42
ConversionProducer::r_cut
double r_cut
Definition: ConversionProducer.cc:125
reco::TrackBase::charge
int charge() const
track electric charge
Definition: TrackBase.h:596
ConversionProducer::dEtacutForSCmatching_
double dEtacutForSCmatching_
Definition: ConversionProducer.cc:111
ConversionProducer::vtxChi2_
double vtxChi2_
Definition: ConversionProducer.cc:126
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Point3DBase< float, GlobalTag >
edm::RefToBase::get
value_type const * get() const
Definition: RefToBase.h:209
tkConvValidator_cfi.generalTracksOnly
generalTracksOnly
Definition: tkConvValidator_cfi.py:50
DDAxes::rho
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
TangentApproachInRPhi::trajectoryParameters
std::pair< GlobalTrajectoryParameters, GlobalTrajectoryParameters > trajectoryParameters() const
Definition: TangentApproachInRPhi.cc:116
edm::PtrVector::push_back
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:149
ConversionProducer::scEndcapProducer_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scEndcapProducer_
Definition: ConversionProducer.cc:85
endcapRadius
constexpr float endcapRadius
Definition: ConversionTrackEcalImpactPoint.cc:17
ConversionVertexFinder::run
TransientVertex run(const std::vector< reco::TransientTrack > &pair)
Definition: ConversionVertexFinder.cc:135
ConversionProducer::bcBarrelCollection_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcBarrelCollection_
Definition: ConversionProducer.cc:86
ConversionProducer::vertexProducer_
edm::EDGetTokenT< reco::VertexCollection > vertexProducer_
Definition: ConversionProducer.cc:99
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
ConversionProducer::allowMinApproach_
bool allowMinApproach_
Definition: ConversionProducer.cc:94
ConversionProducer::bypassPreselGsf_
bool bypassPreselGsf_
Definition: ConversionProducer.cc:96
ConversionProducer::maxNumOfTrackInPU_
unsigned int maxNumOfTrackInPU_
Definition: ConversionProducer.cc:107
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
ConversionProducer::rightBC_
bool rightBC_
Definition: ConversionProducer.cc:129
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
ConversionProducer::minSCEt_
double minSCEt_
Definition: ConversionProducer.cc:110
ConversionProducer::src_
edm::EDGetTokenT< edm::View< reco::ConversionTrack > > src_
Definition: ConversionProducer.cc:82
reco::Conversion::highPurity
Definition: Conversion.h:33
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
reco::Track::innerPosition
const math::XYZPoint & innerPosition() const
position of the innermost hit
Definition: Track.h:56
iEvent
int iEvent
Definition: GenABIO.cc:224
ClosestApproachInRPhi::crossingPoint
GlobalPoint crossingPoint() const override
Definition: ClosestApproachInRPhi.cc:46
reco::TrackBase::d0
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:611
ConversionProducer::minApproachHigh_
double minApproachHigh_
Definition: ConversionProducer.cc:122
edm::RefToBase::castTo
REF castTo() const
Definition: RefToBase.h:257
reco::TrackBase::normalizedChi2
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:593
tkConvValidator_cfi.arbitratedMerged
arbitratedMerged
Definition: tkConvValidator_cfi.py:51
ConversionProducer::dPhiTkBC_
double dPhiTkBC_
Definition: ConversionProducer.cc:117
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
ConversionProducer::dPhicutForSCmatching_
double dPhicutForSCmatching_
Definition: ConversionProducer.cc:112
ConversionProducer::allowDeltaCot_
bool allowDeltaCot_
Definition: ConversionProducer.cc:94
reco::Conversion::ConversionAlgorithm
ConversionAlgorithm
Definition: Conversion.h:25
reco::Vertex::chi2
double chi2() const
chi-squares
Definition: Vertex.h:103
TangentApproachInRPhi::calculate
bool calculate(const TrajectoryStateOnSurface &sta, const TrajectoryStateOnSurface &stb) override
Definition: TangentApproachInRPhi.cc:7
ConversionProducer::trackerGeometry_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometry_
Definition: ConversionProducer.cc:91
TangentApproachInRPhi
Definition: TangentApproachInRPhi.h:15
edm::Ptr< CaloCluster >
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
ConversionProducer::maxTrackRho_
double maxTrackRho_
Definition: ConversionProducer.cc:109
reco::TrackBase::algo
TrackAlgorithm algo() const
Definition: TrackBase.h:547
ConversionProducer::allowVertex_
bool allowVertex_
Definition: ConversionProducer.cc:94
ConversionProducer::algoName_
std::string algoName_
Definition: ConversionProducer.cc:77
endcapZ
constexpr float endcapZ
Definition: ConversionTrackEcalImpactPoint.cc:18
reco::Conversion::algoByName
static ConversionAlgorithm algoByName(const std::string &name)
Definition: Conversion.cc:139
heppy_batch.val
val
Definition: heppy_batch.py:351
ConversionProducer::checkPhi
bool checkPhi(const edm::RefToBase< reco::Track > &tk_l, const edm::RefToBase< reco::Track > &tk_r, TrackerGeometry const &trackerGeom, MagneticField const &magField, const reco::Vertex &the_vertex)
Definition: ConversionProducer.cc:820
ConversionProducer::bcEndcapCollection_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > bcEndcapCollection_
Definition: ConversionProducer.cc:87
eostools.move
def move(src, dest)
Definition: eostools.py:511
reco::TrackBase::d0Error
double d0Error() const
error on d0
Definition: TrackBase.h:772
ConversionProducer::ConvertedPhotonCollection_
std::string ConvertedPhotonCollection_
Definition: ConversionProducer.cc:88
reco::TransientTrack
Definition: TransientTrack.h:19
reco::TransientTrack::track
const Track & track() const
Definition: TransientTrack.h:117
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:18
ConversionProducer::maxChi2Right_
double maxChi2Right_
Definition: ConversionProducer.cc:119
ConversionProducer::magneticField_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticField_
Definition: ConversionProducer.cc:92
spclusmultinvestigator_cfi.vertexCollection
vertexCollection
Definition: spclusmultinvestigator_cfi.py:4
ETA
#define ETA
Definition: GenericBenchmark.cc:28
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
math::XYZVectorF
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float > > XYZVectorF
spatial vector with cartesian internal representation
Definition: Vector3D.h:16
reco::Conversion::arbitratedMergedEcalGeneral
Definition: Conversion.h:31
ConversionHitChecker::nHitsBeforeVtx
std::pair< uint8_t, Measurement1DFloat > nHitsBeforeVtx(const reco::TrackExtra &track, const reco::Vertex &vtx, float sigmaTolerance=3.0) const
Definition: ConversionHitChecker.cc:8
edm::Ptr::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::RefToBase< reco::Track >
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
TrackSplittingMonitor_cfi.dphiMin
dphiMin
Definition: TrackSplittingMonitor_cfi.py:33
HLT_FULL_cff.delta_phi
delta_phi
Definition: HLT_FULL_cff.py:11672
TransientTrackBuilder::build
reco::TransientTrack build(const reco::Track *p) const
Definition: TransientTrackBuilder.cc:20
tkConvValidator_cfi.arbitratedEcalSeeded
arbitratedEcalSeeded
Definition: tkConvValidator_cfi.py:52
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
dummy
Definition: DummySelector.h:38
trajectoryStateTransform::innerStateOnSurface
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:110
barrelRadius
constexpr float barrelRadius
Definition: ConversionTrackEcalImpactPoint.cc:15
ConversionProducer::etaTransformation
double etaTransformation(float EtaParticle, float Zvertex)
Definition: ConversionProducer.cc:948
ZEcal
static constexpr float ZEcal
Definition: L1TkEmParticleProducer.cc:40
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
math::XYZPointF
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
MagneticField
Definition: MagneticField.h:19
reco::TrackBase::dxy
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:608
reco::Vertex::ndof
double ndof() const
Definition: Vertex.h:110
BoundDisk
Disk BoundDisk
Definition: BoundDisk.h:54
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
ConversionProducer::scBarrelProducer_
edm::EDGetTokenT< edm::View< reco::CaloCluster > > scBarrelProducer_
Definition: ConversionProducer.cc:84
HLT_FULL_cff.delta_eta
delta_eta
Definition: HLT_FULL_cff.py:11671
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
Z_Endcap
static constexpr float Z_Endcap
Definition: ECALPositionCalculator.cc:11
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
reco::Vertex
Definition: Vertex.h:35
R_ECAL
static constexpr float R_ECAL
Definition: ECALPositionCalculator.cc:10
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
ConversionHitChecker
Definition: ConversionHitChecker.h:31
reco::TransientTrack::innermostMeasurementState
TrajectoryStateOnSurface innermostMeasurementState() const
Definition: TransientTrack.h:88
TrackerGeometry
Definition: TrackerGeometry.h:14
etaBarrelEndcap
static constexpr float etaBarrelEndcap
Definition: ECALPositionCalculator.cc:12