CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
ElectronSeedGenerator Class Reference

#include <ElectronSeedGenerator.h>

Public Types

typedef
TransientTrackingRecHit::ConstRecHitPointer 
ConstRecHitPointer
 
typedef edm::OwnVector
< TrackingRecHit
PRecHitContainer
 
typedef
TransientTrackingRecHit::RecHitContainer 
RecHitContainer
 
typedef
TransientTrackingRecHit::RecHitPointer 
RecHitPointer
 

Public Member Functions

 ElectronSeedGenerator (const edm::ParameterSet &)
 
void run (edm::Event &, const edm::EventSetup &setup, const reco::SuperClusterRefVector &, const std::vector< float > &hoe1s, const std::vector< float > &hoe2s, TrajectorySeedCollection *seeds, reco::ElectronSeedCollection &)
 
void setupES (const edm::EventSetup &setup)
 
 ~ElectronSeedGenerator ()
 

Private Member Functions

void addSeed (reco::ElectronSeed &seed, const SeedWithInfo *info, bool positron, reco::ElectronSeedCollection &out)
 
bool prepareElTrackSeed (ConstRecHitPointer outerhit, ConstRecHitPointer innerhit, const GlobalPoint &vertexPos)
 
void seedsFromRecHits (std::vector< std::pair< RecHitWithDist, ConstRecHitPointer > > &elePixelHits, PropagationDirection &dir, const GlobalPoint &vertexPos, const reco::ElectronSeed::CaloClusterRef &cluster, reco::ElectronSeedCollection &out, bool positron)
 
void seedsFromThisCluster (edm::Ref< reco::SuperClusterCollection > seedCluster, float hoe1, float hoe2, reco::ElectronSeedCollection &out, const TrackerTopology *tTopo)
 
void seedsFromTrajectorySeeds (const std::vector< SeedWithInfo > &elePixelSeeds, const reco::ElectronSeed::CaloClusterRef &cluster, float hoe1, float hoe2, reco::ElectronSeedCollection &out, bool positron)
 

Private Attributes

edm::InputTag beamSpotTag_
 
unsigned long long cacheIDCkfComp_
 
unsigned long long cacheIDMagField_
 
unsigned long long cacheIDNavSchool_
 
unsigned long long cacheIDTrkGeom_
 
double deltaPhi1Coef1_
 
double deltaPhi1Coef2_
 
float deltaPhi1High_
 
float deltaPhi1Low_
 
float deltaPhi2B_
 
float deltaPhi2F_
 
float deltaZ1WithVertex_
 
bool dynamicphiroad_
 
bool fromTrackerSeeds_
 
float highPtThreshold_
 
float lowPtThreshold_
 
PixelHitMatchermyMatchEle
 
PixelHitMatchermyMatchPos
 
float nSigmasDeltaZ1_
 
float phiMax2B_
 
float phiMax2F_
 
float phiMin2B_
 
float phiMin2F_
 
PTrajectoryStateOnDet pts_
 
PRecHitContainer recHits_
 
float sizeWindowENeg_
 
edm::Handle< reco::BeamSpottheBeamSpot
 
TrajectorySeedCollectiontheInitialSeedColl
 
edm::ESHandle< MagneticFieldtheMagField
 
const MeasurementTrackertheMeasurementTracker
 
std::string theMeasurementTrackerName
 
const NavigationSchooltheNavigationSchool
 
PropagatorWithMaterialthePropagator
 
const edm::EventSetuptheSetup
 
edm::ESHandle< TrackerGeometrytheTrackerGeometry
 
KFUpdatortheUpdator
 
edm::Handle< std::vector
< reco::Vertex > > 
theVertices
 
bool useRecoVertex_
 
edm::InputTag verticesTag_
 

Detailed Description

Class to generate the trajectory seed from two hits in the pixel detector which have been found compatible with an ECAL cluster.

Author
U.Berthon, C.Charlot, LLR Palaiseau
Version
1st Version May 30, 2006

Description: Top algorithm producing ElectronSeeds, ported from ORCA

Implementation: future redesign...

Definition at line 49 of file ElectronSeedGenerator.h.

Member Typedef Documentation

Definition at line 54 of file ElectronSeedGenerator.h.

Definition at line 53 of file ElectronSeedGenerator.h.

Definition at line 56 of file ElectronSeedGenerator.h.

Definition at line 55 of file ElectronSeedGenerator.h.

Constructor & Destructor Documentation

ElectronSeedGenerator::ElectronSeedGenerator ( const edm::ParameterSet pset)

Definition at line 46 of file ElectronSeedGenerator.cc.

References beamSpotTag_, deltaPhi1Coef1_, deltaPhi1Coef2_, deltaPhi1High_, deltaPhi1Low_, deltaPhi2B_, deltaPhi2F_, deltaZ1WithVertex_, dynamicphiroad_, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), highPtThreshold_, lowPtThreshold_, myMatchEle, myMatchPos, phiMax2B_, phiMax2F_, phiMin2B_, phiMin2F_, AlCaHLTBitMon_QueryRunRegistry::string, theMeasurementTrackerName, theUpdator, useRecoVertex_, and verticesTag_.

47  : dynamicphiroad_(pset.getParameter<bool>("dynamicPhiRoad")),
48  fromTrackerSeeds_(pset.getParameter<bool>("fromTrackerSeeds")),
49  useRecoVertex_(false),
50  verticesTag_("offlinePrimaryVerticesWithBS"),
51  beamSpotTag_("offlineBeamSpot"),
52  lowPtThreshold_(pset.getParameter<double>("LowPtThreshold")),
53  highPtThreshold_(pset.getParameter<double>("HighPtThreshold")),
54  nSigmasDeltaZ1_(pset.getParameter<double>("nSigmasDeltaZ1")),
55  deltaZ1WithVertex_(0.5),
56  sizeWindowENeg_(pset.getParameter<double>("SizeWindowENeg")),
57  deltaPhi1Low_(pset.getParameter<double>("DeltaPhi1Low")),
58  deltaPhi1High_(pset.getParameter<double>("DeltaPhi1High")),
60  myMatchEle(0), myMatchPos(0),
61  thePropagator(0),
63  theSetup(0),
65  {
66  // so that deltaPhi1 = deltaPhi1Coef1_ + deltaPhi1Coef2_/clusterEnergyT
67  if (dynamicphiroad_)
68  {
71  }
72 
73  // use of a theMeasurementTrackerName
74  if (pset.exists("measurementTrackerName"))
75  { theMeasurementTrackerName = pset.getParameter<std::string>("measurementTrackerName") ; }
76 
77  // use of reco vertex
78  if (pset.exists("useRecoVertex"))
79  { useRecoVertex_ = pset.getParameter<bool>("useRecoVertex") ; }
80  if (pset.exists("vertices"))
81  { verticesTag_ = pset.getParameter<edm::InputTag>("vertices") ; }
82  if (pset.exists("deltaZ1WithVertex"))
83  { deltaZ1WithVertex_ = pset.getParameter<double>("deltaZ1WithVertex") ; }
84 
85  // new beamSpot tag
86  if (pset.exists("beamSpot"))
87  { beamSpotTag_ = pset.getParameter<edm::InputTag>("beamSpot") ; }
88 
89  // new B/F configurables
90  if (pset.exists("DeltaPhi2"))
91  { deltaPhi2B_ = deltaPhi2F_ = pset.getParameter<double>("DeltaPhi2") ; }
92  else
93  {
94  deltaPhi2B_ = pset.getParameter<double>("DeltaPhi2B") ;
95  deltaPhi2F_ = pset.getParameter<double>("DeltaPhi2F") ;
96  }
97  if (pset.exists("PhiMin2"))
98  { phiMin2B_ = phiMin2F_ = pset.getParameter<double>("PhiMin2") ; }
99  else
100  {
101  phiMin2B_ = pset.getParameter<double>("PhiMin2B") ;
102  phiMin2F_ = pset.getParameter<double>("PhiMin2F") ;
103  }
104  if (pset.exists("PhiMax2"))
105  { phiMax2B_ = phiMax2F_ = pset.getParameter<double>("PhiMax2") ; }
106  else
107  {
108  phiMax2B_ = pset.getParameter<double>("PhiMax2B") ;
109  phiMax2F_ = pset.getParameter<double>("PhiMax2F") ;
110  }
111 
112  // Instantiate the pixel hit matchers
114  ( pset.getParameter<double>("ePhiMin1"),
115  pset.getParameter<double>("ePhiMax1"),
117  pset.getParameter<double>("z2MinB"),
118  pset.getParameter<double>("z2MaxB"),
119  pset.getParameter<double>("r2MinF"),
120  pset.getParameter<double>("r2MaxF"),
121  pset.getParameter<double>("rMinI"),
122  pset.getParameter<double>("rMaxI"),
123  pset.getParameter<bool>("searchInTIDTEC") ) ;
124 
126  ( pset.getParameter<double>("pPhiMin1"),
127  pset.getParameter<double>("pPhiMax1"),
129  pset.getParameter<double>("z2MinB"),
130  pset.getParameter<double>("z2MaxB"),
131  pset.getParameter<double>("r2MinF"),
132  pset.getParameter<double>("r2MaxF"),
133  pset.getParameter<double>("rMinI"),
134  pset.getParameter<double>("rMaxI"),
135  pset.getParameter<bool>("searchInTIDTEC") ) ;
136 
137  theUpdator = new KFUpdator() ;
138  }
T getParameter(std::string const &) const
unsigned long long cacheIDNavSchool_
PixelHitMatcher * myMatchEle
bool exists(std::string const &parameterName) const
checks if a parameter exists
const edm::EventSetup * theSetup
unsigned long long cacheIDMagField_
unsigned long long cacheIDTrkGeom_
PropagatorWithMaterial * thePropagator
PixelHitMatcher * myMatchPos
const MeasurementTracker * theMeasurementTracker
unsigned long long cacheIDCkfComp_
ElectronSeedGenerator::~ElectronSeedGenerator ( )

Definition at line 140 of file ElectronSeedGenerator.cc.

References myMatchEle, myMatchPos, thePropagator, and theUpdator.

141  {
142  delete myMatchEle ;
143  delete myMatchPos ;
144  delete thePropagator ;
145  delete theUpdator ;
146  }
PixelHitMatcher * myMatchEle
PropagatorWithMaterial * thePropagator
PixelHitMatcher * myMatchPos

Member Function Documentation

void ElectronSeedGenerator::addSeed ( reco::ElectronSeed seed,
const SeedWithInfo info,
bool  positron,
reco::ElectronSeedCollection out 
)
private

Definition at line 473 of file ElectronSeedGenerator.cc.

References reco::ElectronSeed::caloCluster(), SeedWithInfo::dPhi1(), reco::ElectronSeed::dPhi2(), SeedWithInfo::dPhi2(), reco::ElectronSeed::dPhi2Pos(), SeedWithInfo::dRz1(), reco::ElectronSeed::dRz2(), SeedWithInfo::dRz2(), reco::ElectronSeed::dRz2Pos(), equivalent(), reco::ElectronSeed::hitsMask(), infinity, hitfit::return, reco::ElectronSeed::setNegAttributes(), and reco::ElectronSeed::setPosAttributes().

477  {
478  if (!info)
479  { out.push_back(seed) ; return ; }
480 
481  if (positron)
482  { seed.setPosAttributes(info->dRz2(),info->dPhi2(),info->dRz1(),info->dPhi1()) ; }
483  else
484  { seed.setNegAttributes(info->dRz2(),info->dPhi2(),info->dRz1(),info->dPhi1()) ; }
485  reco::ElectronSeedCollection::iterator resItr ;
486  for ( resItr=out.begin() ; resItr!=out.end() ; ++resItr )
487  {
488  if ( (seed.caloCluster()==resItr->caloCluster()) &&
489  (seed.hitsMask()==resItr->hitsMask()) &&
490  equivalent(seed,*resItr) )
491  {
492  if (positron)
493  {
494  if ( resItr->dRz2Pos()==std::numeric_limits<float>::infinity() &&
495  resItr->dRz2()!=std::numeric_limits<float>::infinity() )
496  {
497  resItr->setPosAttributes(info->dRz2(),info->dPhi2(),info->dRz1(),info->dPhi1()) ;
498  seed.setNegAttributes(resItr->dRz2(),resItr->dPhi2(),resItr->dRz1(),resItr->dPhi1()) ;
499  break ;
500  }
501  else
502  {
503  if ( resItr->dRz2Pos()!=std::numeric_limits<float>::infinity() )
504  {
505  if ( resItr->dRz2Pos()!=seed.dRz2Pos() )
506  {
507  edm::LogWarning("ElectronSeedGenerator|BadValue")
508  <<"this similar old seed already has another dRz2Pos"
509  <<"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)resItr->hitsMask()<<"/"<<resItr->dRz2()<<"/"<<resItr->dPhi2()<<"/"<<resItr->dRz2Pos()<<"/"<<resItr->dPhi2Pos()
510  <<"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)seed.hitsMask()<<"/"<<seed.dRz2()<<"/"<<seed.dPhi2()<<"/"<<seed.dRz2Pos()<<"/"<<seed.dPhi2Pos() ;
511  }
512 // else
513 // {
514 // edm::LogWarning("ElectronSeedGenerator|UnexpectedValue")
515 // <<"this old seed already knows its dRz2Pos, we suspect duplicates in input trajectry seeds"
516 // <<"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)resItr->hitsMask()<<"/"<<resItr->dRz2()<<"/"<<resItr->dPhi2()<<"/"<<resItr->dRz2Pos()<<"/"<<resItr->dPhi2Pos()
517 // <<"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)seed.hitsMask()<<"/"<<seed.dRz2()<<"/"<<seed.dPhi2()<<"/"<<seed.dRz2Pos()<<"/"<<seed.dPhi2Pos() ;
518 // }
519  }
520 // if (resItr->dRz2()==std::numeric_limits<float>::infinity())
521 // {
522 // edm::LogWarning("ElectronSeedGenerator|BadValue")
523 // <<"this old seed has no dRz2, we suspect duplicates in input trajectry seeds"
524 // <<"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)resItr->hitsMask()<<"/"<<resItr->dRz2()<<"/"<<resItr->dPhi2()<<"/"<<resItr->dRz2Pos()<<"/"<<resItr->dPhi2Pos()
525 // <<"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)seed.hitsMask()<<"/"<<seed.dRz2()<<"/"<<seed.dPhi2()<<"/"<<seed.dRz2Pos()<<"/"<<seed.dPhi2Pos() ;
526 // }
527  }
528  }
529  else
530  {
531  if ( resItr->dRz2()==std::numeric_limits<float>::infinity()
532  && resItr->dRz2Pos()!=std::numeric_limits<float>::infinity() )
533  {
534  resItr->setNegAttributes(info->dRz2(),info->dPhi2(),info->dRz1(),info->dPhi1()) ;
535  seed.setPosAttributes(resItr->dRz2Pos(),resItr->dPhi2Pos(),resItr->dRz1Pos(),resItr->dPhi1Pos()) ;
536  break ;
537  }
538  else
539  {
540  if ( resItr->dRz2()!=std::numeric_limits<float>::infinity() )
541  {
542  if (resItr->dRz2()!=seed.dRz2())
543  {
544  edm::LogWarning("ElectronSeedGenerator|BadValue")
545  <<"this old seed already has another dRz2"
546  <<"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)resItr->hitsMask()<<"/"<<resItr->dRz2()<<"/"<<resItr->dPhi2()<<"/"<<resItr->dRz2Pos()<<"/"<<resItr->dPhi2Pos()
547  <<"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)seed.hitsMask()<<"/"<<seed.dRz2()<<"/"<<seed.dPhi2()<<"/"<<seed.dRz2Pos()<<"/"<<seed.dPhi2Pos() ;
548  }
549  // else
550  // {
551  // edm::LogWarning("ElectronSeedGenerator|UnexpectedValue")
552  // <<"this old seed already knows its dRz2, we suspect duplicates in input trajectry seeds"
553  // <<"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)resItr->hitsMask()<<"/"<<resItr->dRz2()<<"/"<<resItr->dPhi2()<<"/"<<resItr->dRz2Pos()<<"/"<<resItr->dPhi2Pos()
554  // <<"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)seed.hitsMask()<<"/"<<seed.dRz2()<<"/"<<seed.dPhi2()<<"/"<<seed.dRz2Pos()<<"/"<<seed.dPhi2Pos() ;
555  // seed.setPosAttributes(resItr->dRz2Pos(),resItr->dPhi2Pos(),resItr->dRz1Pos(),resItr->dPhi1Pos()) ;
556  // }
557  }
558 // if (resItr->dRz2Pos()==std::numeric_limits<float>::infinity())
559 // {
560 // edm::LogWarning("ElectronSeedGenerator|BadValue")
561 // <<"this old seed has no dRz2Pos"
562 // <<"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)resItr->hitsMask()<<"/"<<resItr->dRz2()<<"/"<<resItr->dPhi2()<<"/"<<resItr->dRz2Pos()<<"/"<<resItr->dPhi2Pos()
563 // <<"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: "<<(unsigned int)seed.hitsMask()<<"/"<<seed.dRz2()<<"/"<<seed.dPhi2()<<"/"<<seed.dRz2Pos()<<"/"<<seed.dPhi2Pos() ;
564 // }
565  }
566  }
567  }
568  }
569 
570  out.push_back(seed) ;
571  }
float dRz1() const
float dRz2() const
CaloClusterRef caloCluster() const
Definition: ElectronSeed.h:70
float dPhi2() const
Definition: ElectronSeed.h:74
float dRz2Pos() const
Definition: ElectronSeed.h:75
const double infinity
void setNegAttributes(float dRz2=std::numeric_limits< float >::infinity(), float dPhi2=std::numeric_limits< float >::infinity(), float dRz1=std::numeric_limits< float >::infinity(), float dPhi1=std::numeric_limits< float >::infinity())
Definition: ElectronSeed.cc:86
tuple out
Definition: dbtoconf.py:99
float dRz2() const
Definition: ElectronSeed.h:73
float dPhi1() const
float dPhi2() const
float dPhi2Pos() const
Definition: ElectronSeed.h:76
bool equivalent(const TrajectorySeed &s1, const TrajectorySeed &s2)
void setPosAttributes(float dRz2=std::numeric_limits< float >::infinity(), float dPhi2=std::numeric_limits< float >::infinity(), float dRz1=std::numeric_limits< float >::infinity(), float dPhi1=std::numeric_limits< float >::infinity())
Definition: ElectronSeed.cc:95
unsigned char hitsMask() const
Definition: ElectronSeed.h:71
bool ElectronSeedGenerator::prepareElTrackSeed ( ConstRecHitPointer  outerhit,
ConstRecHitPointer  innerhit,
const GlobalPoint vertexPos 
)
private

Definition at line 574 of file ElectronSeedGenerator.cc.

References TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::isValid(), LogDebug, PV3DBase< T, PVType, FrameType >::perp(), and trajectoryStateTransform::persistentState().

577  {
578 
579  // debug prints
580  LogDebug("") <<"[ElectronSeedGenerator::prepareElTrackSeed] inner PixelHit x,y,z "<<innerhit->globalPosition();
581  LogDebug("") <<"[ElectronSeedGenerator::prepareElTrackSeed] outer PixelHit x,y,z "<<outerhit->globalPosition();
582 
583  recHits_.clear();
584 
585  SiPixelRecHit *pixhit=0;
586  SiStripMatchedRecHit2D *striphit=0;
587  const SiPixelRecHit* constpixhit = dynamic_cast <const SiPixelRecHit*> (innerhit->hit());
588  if (constpixhit) {
589  pixhit=new SiPixelRecHit(*constpixhit);
590  recHits_.push_back(pixhit);
591  } else return false;
592  constpixhit = dynamic_cast <const SiPixelRecHit *> (outerhit->hit());
593  if (constpixhit) {
594  pixhit=new SiPixelRecHit(*constpixhit);
595  recHits_.push_back(pixhit);
596  } else {
597  const SiStripMatchedRecHit2D * conststriphit=dynamic_cast <const SiStripMatchedRecHit2D *> (outerhit->hit());
598  if (conststriphit) {
599  striphit = new SiStripMatchedRecHit2D(*conststriphit);
600  recHits_.push_back(striphit);
601  } else return false;
602  }
603 
605 
606  // FIXME to be optimized outside the loop
608  theSetup->get<IdealMagneticFieldRecord>().get(bfield);
609  float nomField = bfield->nominalValue();
610 
611  // make a spiral
612  FastHelix helix(outerhit->globalPosition(),innerhit->globalPosition(),vertexPos,nomField,&*bfield);
613  if ( !helix.isValid()) {
614  return false;
615  }
616  FreeTrajectoryState fts(helix.stateAtVertex());
617  TSOS propagatedState = thePropagator->propagate(fts,innerhit->det()->surface()) ;
618  if (!propagatedState.isValid())
619  return false;
620  TSOS updatedState = theUpdator->update(propagatedState, *innerhit);
621 
622  TSOS propagatedState_out = thePropagator->propagate(updatedState,outerhit->det()->surface()) ;
623  if (!propagatedState_out.isValid())
624  return false;
625  TSOS updatedState_out = theUpdator->update(propagatedState_out, *outerhit);
626  // debug prints
627  LogDebug("") <<"[ElectronSeedGenerator::prepareElTrackSeed] final TSOS, position: "<<updatedState_out.globalPosition()<<" momentum: "<<updatedState_out.globalMomentum();
628  LogDebug("") <<"[ElectronSeedGenerator::prepareElTrackSeed] final TSOS Pt: "<<updatedState_out.globalMomentum().perp();
629  pts_ = trajectoryStateTransform::persistentState(updatedState_out, outerhit->geographicalId().rawId());
630 
631  return true;
632  }
#define LogDebug(id)
T perp() const
Definition: PV3DBase.h:72
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
const edm::EventSetup * theSetup
GlobalPoint globalPosition() const
void push_back(D *&d)
Definition: OwnVector.h:273
PTrajectoryStateOnDet pts_
void clear()
Definition: OwnVector.h:370
PropagatorWithMaterial * thePropagator
TrajectoryStateOnSurface TSOS
Definition: TestHits.cc:19
const T & get() const
Definition: EventSetup.h:55
GlobalVector globalMomentum() const
Pixel Reconstructed Hit.
void ElectronSeedGenerator::run ( edm::Event e,
const edm::EventSetup setup,
const reco::SuperClusterRefVector sclRefs,
const std::vector< float > &  hoe1s,
const std::vector< float > &  hoe2s,
TrajectorySeedCollection seeds,
reco::ElectronSeedCollection out 
)

Definition at line 223 of file ElectronSeedGenerator.cc.

References edm::EventSetup::get(), edm::Event::getByLabel(), i, edm::EventBase::id(), LogDebug, edm::ESHandle< class >::product(), HcalObjRepresent::setup(), and edm::RefVector< C, T, F >::size().

Referenced by ElectronSeedProducer::produce().

226  {
227  theInitialSeedColl = seeds ;
228 // bool duplicateTrajectorySeeds =false ;
229 // unsigned int i,j ;
230 // for (i=0;i<seeds->size();++i)
231 // for (j=i+1;j<seeds->size();++j)
232 // {
233 // const TrajectorySeed & s1 =(*seeds)[i] ;
234 // const TrajectorySeed & s2 =(*seeds)[j] ;
235 // if ( equivalent(s1,s2) )
236 // {
237 // const PTrajectoryStateOnDet & ss1 = s1.startingState() ;
238 // const LocalTrajectoryParameters & p1 = ss1.parameters() ;
239 // const PTrajectoryStateOnDet & ss2 = s2.startingState() ;
240 // const LocalTrajectoryParameters & p2 = ss2.parameters() ;
241 // duplicateTrajectorySeeds = true ;
242 // std::cout<<"Same hits for "
243 // <<"\n s["<<i<<"] ("<<s1.direction()<<"/"<<ss1.detId()<<"/"<<ss1.surfaceSide()<<"/"<<p1.charge()<<"/"<<p1.position()<<"/"<<p1.momentum()<<")"
244 // <<"\n s["<<j<<"] ("<<s2.direction()<<"/"<<ss2.detId()<<"/"<<ss2.surfaceSide()<<"/"<<p2.charge()<<"/"<<p2.position()<<"/"<<p2.momentum()<<")"
245 // <<std::endl ;
246 // }
247 // }
248 // if (duplicateTrajectorySeeds)
249 // { edm::LogWarning("ElectronSeedGenerator|DuplicateTrajectorySeeds")<<"We see several identical trajectory seeds." ; }
250 
251  //Retrieve tracker topology from geometry
253  setup.get<IdealGeometryRecord>().get(tTopoHand);
254  const TrackerTopology *tTopo=tTopoHand.product();
255 
256  theSetup= &setup;
258 
259  // get initial TrajectorySeeds if necessary
260  // if (fromTrackerSeeds_) e.getByLabel(initialSeeds_, theInitialSeedColl);
261 
262  // get the beamspot from the Event:
263  //e.getByType(theBeamSpot);
265 
266  // if required get the vertices
268 
269  if (!fromTrackerSeeds_)
270  { theMeasurementTracker->update(e) ; }
271 
272  for (unsigned int i=0;i<sclRefs.size();++i) {
273  // Find the seeds
274  recHits_.clear();
275 
276  LogDebug ("run") << "new cluster, calling seedsFromThisCluster";
277  seedsFromThisCluster(sclRefs[i],hoe1s[i],hoe2s[i],out,tTopo);
278  }
279 
280  LogDebug ("run") << ": For event "<<e.id();
281  LogDebug ("run") <<"Nr of superclusters after filter: "<<sclRefs.size()
282  <<", no. of ElectronSeeds found = " << out.size();
283 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
virtual void update(const edm::Event &) const =0
const NavigationSchool * theNavigationSchool
const edm::EventSetup * theSetup
edm::Handle< std::vector< reco::Vertex > > theVertices
TrajectorySeedCollection * theInitialSeedColl
void seedsFromThisCluster(edm::Ref< reco::SuperClusterCollection > seedCluster, float hoe1, float hoe2, reco::ElectronSeedCollection &out, const TrackerTopology *tTopo)
void clear()
Definition: OwnVector.h:370
edm::Handle< reco::BeamSpot > theBeamSpot
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
tuple out
Definition: dbtoconf.py:99
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
edm::EventID id() const
Definition: EventBase.h:56
const MeasurementTracker * theMeasurementTracker
size_type size() const
Size of the RefVector.
Definition: RefVector.h:89
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
void ElectronSeedGenerator::seedsFromRecHits ( std::vector< std::pair< RecHitWithDist, ConstRecHitPointer > > &  elePixelHits,
PropagationDirection dir,
const GlobalPoint vertexPos,
const reco::ElectronSeed::CaloClusterRef cluster,
reco::ElectronSeedCollection out,
bool  positron 
)
private

Definition at line 431 of file ElectronSeedGenerator.cc.

References LogDebug, reco::ElectronSeed::setCaloCluster(), and findQualityFiles::v.

436  {
437  if (!pixelHits.empty())
438  { LogDebug("ElectronSeedGenerator") << "Compatible "<<(positron?"positron":"electron")<<" hits found." ; }
439 
440  std::vector<std::pair<RecHitWithDist,ConstRecHitPointer> >::iterator v ;
441  for ( v = pixelHits.begin() ; v != pixelHits.end() ; v++ )
442  {
443  if (!positron)
444  { (*v).first.invert() ; }
445  if (!prepareElTrackSeed((*v).first.recHit(),(*v).second,vertexPos))
446  { continue ; }
448  seed.setCaloCluster(cluster) ;
449  addSeed(seed,0,positron,out) ;
450  }
451  }
#define LogDebug(id)
PTrajectoryStateOnDet pts_
tuple out
Definition: dbtoconf.py:99
bool prepareElTrackSeed(ConstRecHitPointer outerhit, ConstRecHitPointer innerhit, const GlobalPoint &vertexPos)
void addSeed(reco::ElectronSeed &seed, const SeedWithInfo *info, bool positron, reco::ElectronSeedCollection &out)
dbl *** dir
Definition: mlp_gen.cc:35
void ElectronSeedGenerator::seedsFromThisCluster ( edm::Ref< reco::SuperClusterCollection seedCluster,
float  hoe1,
float  hoe2,
reco::ElectronSeedCollection out,
const TrackerTopology tTopo 
)
private

Definition at line 286 of file ElectronSeedGenerator.cc.

References alongMomentum, dir, ele_convert(), eta(), hitfit::return, and mathSSE::sqrt().

289 {
290  float clusterEnergy = seedCluster->energy() ;
291  GlobalPoint clusterPos
292  ( seedCluster->position().x(),
293  seedCluster->position().y(),
294  seedCluster->position().z() ) ;
295  reco::ElectronSeed::CaloClusterRef caloCluster(seedCluster) ;
296 
297  //LogDebug("") << "[ElectronSeedGenerator::seedsFromThisCluster] new supercluster with energy: " << clusterEnergy ;
298  //LogDebug("") << "[ElectronSeedGenerator::seedsFromThisCluster] and position: " << clusterPos ;
299 
300  if (dynamicphiroad_)
301  {
302  float clusterEnergyT = clusterEnergy / cosh( EleRelPoint(clusterPos,theBeamSpot->position()).eta() ) ;
303 
304  float deltaPhi1 ;
305  if (clusterEnergyT < lowPtThreshold_)
306  { deltaPhi1= deltaPhi1Low_ ; }
307  else if (clusterEnergyT > highPtThreshold_)
308  { deltaPhi1= deltaPhi1High_ ; }
309  else
310  { deltaPhi1 = deltaPhi1Coef1_ + deltaPhi1Coef2_/clusterEnergyT ; }
311 
312  float ephimin1 = -deltaPhi1*sizeWindowENeg_ ;
313  float ephimax1 = deltaPhi1*(1.-sizeWindowENeg_);
314  float pphimin1 = -deltaPhi1*(1.-sizeWindowENeg_);
315  float pphimax1 = deltaPhi1*sizeWindowENeg_;
316 
317  float phimin2B = -deltaPhi2B_/2. ;
318  float phimax2B = deltaPhi2B_/2. ;
319  float phimin2F = -deltaPhi2F_/2. ;
320  float phimax2F = deltaPhi2F_/2. ;
321 
322 
323  myMatchEle->set1stLayer(ephimin1,ephimax1);
324  myMatchPos->set1stLayer(pphimin1,pphimax1);
325  myMatchEle->set2ndLayer(phimin2B,phimax2B, phimin2F,phimax2F);
326  myMatchPos->set2ndLayer(phimin2B,phimax2B, phimin2F,phimax2F);
327  }
328 
330 
331  if (!useRecoVertex_) // here use the beam spot position
332  {
333  double sigmaZ=theBeamSpot->sigmaZ();
334  double sigmaZ0Error=theBeamSpot->sigmaZ0Error();
335  double sq=sqrt(sigmaZ*sigmaZ+sigmaZ0Error*sigmaZ0Error);
336  double myZmin1=theBeamSpot->position().z()-nSigmasDeltaZ1_*sq;
337  double myZmax1=theBeamSpot->position().z()+nSigmasDeltaZ1_*sq;
338 
339  GlobalPoint vertexPos ;
340  ele_convert(theBeamSpot->position(),vertexPos) ;
341 
342  myMatchEle->set1stLayerZRange(myZmin1,myZmax1);
343  myMatchPos->set1stLayerZRange(myZmin1,myZmax1);
344 
345  if (!fromTrackerSeeds_)
346  {
347  // try electron
348  std::vector<std::pair<RecHitWithDist,ConstRecHitPointer> > elePixelHits
349  = myMatchEle->compatibleHits(clusterPos,vertexPos,
350  clusterEnergy,-1., tTopo) ;
351  GlobalPoint eleVertex(theBeamSpot->position().x(),theBeamSpot->position().y(),myMatchEle->getVertex()) ;
352  seedsFromRecHits(elePixelHits,dir,eleVertex,caloCluster,out,false) ;
353  // try positron
354  std::vector<std::pair<RecHitWithDist,ConstRecHitPointer> > posPixelHits
355  = myMatchPos->compatibleHits(clusterPos,vertexPos,clusterEnergy,1.,tTopo) ;
356  GlobalPoint posVertex(theBeamSpot->position().x(),theBeamSpot->position().y(),myMatchPos->getVertex()) ;
357  seedsFromRecHits(posPixelHits,dir,posVertex,caloCluster,out,true) ;
358  }
359  else
360  {
361  // try electron
362  std::vector<SeedWithInfo> elePixelSeeds
363  = myMatchEle->compatibleSeeds(theInitialSeedColl,clusterPos,vertexPos,clusterEnergy,-1.) ;
364  seedsFromTrajectorySeeds(elePixelSeeds,caloCluster,hoe1,hoe2,out,false) ;
365  // try positron
366  std::vector<SeedWithInfo> posPixelSeeds
367  = myMatchPos->compatibleSeeds(theInitialSeedColl,clusterPos,vertexPos,clusterEnergy,1.) ;
368  seedsFromTrajectorySeeds(posPixelSeeds,caloCluster,hoe1,hoe2,out,true) ;
369  }
370 
371  }
372  else // here we use the reco vertices
373  {
374 
375  myMatchEle->setUseRecoVertex(true) ; //Hit matchers need to know that the vertex is known
377 
378  const std::vector<reco::Vertex> * vtxCollection = theVertices.product() ;
379  std::vector<reco::Vertex>::const_iterator vtxIter ;
380  for (vtxIter = vtxCollection->begin(); vtxIter != vtxCollection->end() ; vtxIter++)
381  {
382 
383  GlobalPoint vertexPos(vtxIter->position().x(),vtxIter->position().y(),vtxIter->position().z());
384  double myZmin1, myZmax1 ;
385  if (vertexPos.z()==theBeamSpot->position().z())
386  { // in case vetex not found
387  double sigmaZ=theBeamSpot->sigmaZ();
388  double sigmaZ0Error=theBeamSpot->sigmaZ0Error();
389  double sq=sqrt(sigmaZ*sigmaZ+sigmaZ0Error*sigmaZ0Error);
390  myZmin1=theBeamSpot->position().z()-nSigmasDeltaZ1_*sq;
391  myZmax1=theBeamSpot->position().z()+nSigmasDeltaZ1_*sq;
392  }
393  else
394  { // a vertex has been recoed
395  myZmin1=vtxIter->position().z()-deltaZ1WithVertex_;
396  myZmax1=vtxIter->position().z()+deltaZ1WithVertex_;
397  }
398 
399  myMatchEle->set1stLayerZRange(myZmin1,myZmax1);
400  myMatchPos->set1stLayerZRange(myZmin1,myZmax1);
401 
402  if (!fromTrackerSeeds_)
403  {
404  // try electron
405  std::vector<std::pair<RecHitWithDist,ConstRecHitPointer> > elePixelHits
406  = myMatchEle->compatibleHits(clusterPos,vertexPos,clusterEnergy,-1.,tTopo) ;
407  seedsFromRecHits(elePixelHits,dir,vertexPos,caloCluster,out,false) ;
408  // try positron
409  std::vector<std::pair<RecHitWithDist,ConstRecHitPointer> > posPixelHits
410  = myMatchPos->compatibleHits(clusterPos,vertexPos,clusterEnergy,1.,tTopo) ;
411  seedsFromRecHits(posPixelHits,dir,vertexPos,caloCluster,out,true) ;
412  }
413  else
414  {
415  // try electron
416  std::vector<SeedWithInfo> elePixelSeeds
417  = myMatchEle->compatibleSeeds(theInitialSeedColl,clusterPos,vertexPos,clusterEnergy,-1.) ;
418  seedsFromTrajectorySeeds(elePixelSeeds,caloCluster,hoe1,hoe2,out,false) ;
419  // try positron
420  std::vector<SeedWithInfo> posPixelSeeds
421  = myMatchPos->compatibleSeeds(theInitialSeedColl,clusterPos,vertexPos,clusterEnergy,1.) ;
422  seedsFromTrajectorySeeds(posPixelSeeds,caloCluster,hoe1,hoe2,out,true) ;
423  }
424  }
425  }
426 
427  return ;
428  }
PixelHitMatcher * myMatchEle
PropagationDirection
T eta() const
edm::Handle< std::vector< reco::Vertex > > theVertices
void set2ndLayer(float dummyphi2minB, float dummyphi2maxB, float dummyphi2minF, float dummyphi2maxF)
TrajectorySeedCollection * theInitialSeedColl
void set1stLayerZRange(float zmin1, float zmax1)
T sqrt(T t)
Definition: SSEVec.h:48
T z() const
Definition: PV3DBase.h:64
edm::Handle< reco::BeamSpot > theBeamSpot
PixelHitMatcher * myMatchPos
tuple out
Definition: dbtoconf.py:99
void seedsFromRecHits(std::vector< std::pair< RecHitWithDist, ConstRecHitPointer > > &elePixelHits, PropagationDirection &dir, const GlobalPoint &vertexPos, const reco::ElectronSeed::CaloClusterRef &cluster, reco::ElectronSeedCollection &out, bool positron)
void set1stLayer(float dummyphi1min, float dummyphi1max)
std::vector< std::pair< RecHitWithDist, ConstRecHitPointer > > compatibleHits(const GlobalPoint &xmeas, const GlobalPoint &vprim, float energy, float charge, const TrackerTopology *tTopo)
void ele_convert(const Type1 &obj1, Type2 &obj2)
T const * product() const
Definition: Handle.h:74
std::vector< SeedWithInfo > compatibleSeeds(TrajectorySeedCollection *seeds, const GlobalPoint &xmeas, const GlobalPoint &vprim, float energy, float charge)
dbl *** dir
Definition: mlp_gen.cc:35
void setUseRecoVertex(bool val)
void seedsFromTrajectorySeeds(const std::vector< SeedWithInfo > &elePixelSeeds, const reco::ElectronSeed::CaloClusterRef &cluster, float hoe1, float hoe2, reco::ElectronSeedCollection &out, bool positron)
void ElectronSeedGenerator::seedsFromTrajectorySeeds ( const std::vector< SeedWithInfo > &  elePixelSeeds,
const reco::ElectronSeed::CaloClusterRef cluster,
float  hoe1,
float  hoe2,
reco::ElectronSeedCollection out,
bool  positron 
)
private

Definition at line 454 of file ElectronSeedGenerator.cc.

References LogDebug, alignCSCRings::s, and reco::ElectronSeed::setCaloCluster().

459  {
460  if (!pixelSeeds.empty())
461  { LogDebug("ElectronSeedGenerator") << "Compatible "<<(positron?"positron":"electron")<<" seeds found." ; }
462 
463  std::vector<SeedWithInfo>::const_iterator s;
464  for ( s = pixelSeeds.begin() ; s != pixelSeeds.end() ; s++ )
465  {
466  reco::ElectronSeed seed(s->seed()) ;
467  seed.setCaloCluster(cluster,s->hitsMask(),s->subDet2(),s->subDet1(),hoe1,hoe2) ;
468  addSeed(seed,&*s,positron,out) ;
469  }
470  }
#define LogDebug(id)
void setCaloCluster(const CaloClusterRef &, unsigned char hitsMask=0, int subDet2=0, int subDet1=0, float hoe1=std::numeric_limits< float >::infinity(), float hoe2=std::numeric_limits< float >::infinity())
Definition: ElectronSeed.cc:71
tuple out
Definition: dbtoconf.py:99
void addSeed(reco::ElectronSeed &seed, const SeedWithInfo *info, bool positron, reco::ElectronSeedCollection &out)
void ElectronSeedGenerator::setupES ( const edm::EventSetup setup)

Definition at line 148 of file ElectronSeedGenerator.cc.

References alongMomentum, cacheIDCkfComp_, edm::eventsetup::EventSetupRecord::cacheIdentifier(), cacheIDMagField_, cacheIDNavSchool_, cacheIDTrkGeom_, fromTrackerSeeds_, edm::EventSetup::get(), myMatchEle, myMatchPos, edm::ESHandle< class >::product(), PixelHitMatcher::setES(), theMagField, theMeasurementTracker, theMeasurementTrackerName, theNavigationSchool, thePropagator, and theTrackerGeometry.

Referenced by ElectronSeedProducer::produce().

148  {
149 
150  // get records if necessary (called once per event)
151  bool tochange=false;
152 
155  cacheIDMagField_=setup.get<IdealMagneticFieldRecord>().cacheIdentifier();
156  if (thePropagator) delete thePropagator;
158  tochange=true;
159  }
160 
162  edm::ESHandle<MeasurementTracker> measurementTrackerHandle;
163  setup.get<CkfComponentsRecord>().get(theMeasurementTrackerName,measurementTrackerHandle);
164  cacheIDCkfComp_=setup.get<CkfComponentsRecord>().cacheIdentifier();
165  theMeasurementTracker = measurementTrackerHandle.product();
166  tochange=true;
167  }
168 
169  //edm::ESHandle<TrackerGeometry> trackerGeometryHandle;
171  cacheIDTrkGeom_=setup.get<TrackerDigiGeometryRecord>().cacheIdentifier();
173  tochange=true; //FIXME
174  }
175 
176  if (tochange) {
179  }
180 
183  setup.get<NavigationSchoolRecord>().get("SimpleNavigationSchool", nav);
184  cacheIDNavSchool_=setup.get<NavigationSchoolRecord>().cacheIdentifier();
186  }
187 
188 // if (cacheIDGeom_!=setup.get<TrackerRecoGeometryRecord>().cacheIdentifier()) {
189 // setup.get<TrackerRecoGeometryRecord>().get( theGeomSearchTracker );
190 // cacheIDGeom_=setup.get<TrackerRecoGeometryRecord>().cacheIdentifier();
191 // }
192 
193 }
unsigned long long cacheIdentifier() const
unsigned long long cacheIDNavSchool_
PixelHitMatcher * myMatchEle
void setES(const MagneticField *, const MeasurementTracker *theMeasurementTracker, const TrackerGeometry *trackerGeometry)
const NavigationSchool * theNavigationSchool
unsigned long long cacheIDMagField_
unsigned long long cacheIDTrkGeom_
edm::ESHandle< TrackerGeometry > theTrackerGeometry
PropagatorWithMaterial * thePropagator
PixelHitMatcher * myMatchPos
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
edm::ESHandle< MagneticField > theMagField
const MeasurementTracker * theMeasurementTracker
unsigned long long cacheIDCkfComp_

Member Data Documentation

edm::InputTag ElectronSeedGenerator::beamSpotTag_
private

Definition at line 83 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

unsigned long long ElectronSeedGenerator::cacheIDCkfComp_
private

Definition at line 128 of file ElectronSeedGenerator.h.

Referenced by setupES().

unsigned long long ElectronSeedGenerator::cacheIDMagField_
private

Definition at line 125 of file ElectronSeedGenerator.h.

Referenced by setupES().

unsigned long long ElectronSeedGenerator::cacheIDNavSchool_
private

Definition at line 127 of file ElectronSeedGenerator.h.

Referenced by setupES().

unsigned long long ElectronSeedGenerator::cacheIDTrkGeom_
private

Definition at line 129 of file ElectronSeedGenerator.h.

Referenced by setupES().

double ElectronSeedGenerator::deltaPhi1Coef1_
private

Definition at line 99 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

double ElectronSeedGenerator::deltaPhi1Coef2_
private

Definition at line 100 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::deltaPhi1High_
private

Definition at line 94 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::deltaPhi1Low_
private

Definition at line 94 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::deltaPhi2B_
private

Definition at line 95 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::deltaPhi2F_
private

Definition at line 96 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::deltaZ1WithVertex_
private

Definition at line 88 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

bool ElectronSeedGenerator::dynamicphiroad_
private

Definition at line 75 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

bool ElectronSeedGenerator::fromTrackerSeeds_
private

Definition at line 76 of file ElectronSeedGenerator.h.

Referenced by setupES().

float ElectronSeedGenerator::highPtThreshold_
private

Definition at line 86 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::lowPtThreshold_
private

Definition at line 85 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

PixelHitMatcher* ElectronSeedGenerator::myMatchEle
private

Definition at line 102 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator(), setupES(), and ~ElectronSeedGenerator().

PixelHitMatcher* ElectronSeedGenerator::myMatchPos
private

Definition at line 103 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator(), setupES(), and ~ElectronSeedGenerator().

float ElectronSeedGenerator::nSigmasDeltaZ1_
private

Definition at line 87 of file ElectronSeedGenerator.h.

float ElectronSeedGenerator::phiMax2B_
private

Definition at line 91 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::phiMax2F_
private

Definition at line 93 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::phiMin2B_
private

Definition at line 90 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

float ElectronSeedGenerator::phiMin2F_
private

Definition at line 92 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

PTrajectoryStateOnDet ElectronSeedGenerator::pts_
private

Definition at line 122 of file ElectronSeedGenerator.h.

PRecHitContainer ElectronSeedGenerator::recHits_
private

Definition at line 121 of file ElectronSeedGenerator.h.

float ElectronSeedGenerator::sizeWindowENeg_
private

Definition at line 89 of file ElectronSeedGenerator.h.

edm::Handle<reco::BeamSpot> ElectronSeedGenerator::theBeamSpot
private

Definition at line 82 of file ElectronSeedGenerator.h.

TrajectorySeedCollection* ElectronSeedGenerator::theInitialSeedColl
private

Definition at line 106 of file ElectronSeedGenerator.h.

edm::ESHandle<MagneticField> ElectronSeedGenerator::theMagField
private

Definition at line 108 of file ElectronSeedGenerator.h.

Referenced by setupES().

const MeasurementTracker* ElectronSeedGenerator::theMeasurementTracker
private

Definition at line 115 of file ElectronSeedGenerator.h.

Referenced by setupES().

std::string ElectronSeedGenerator::theMeasurementTrackerName
private

Definition at line 114 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator(), and setupES().

const NavigationSchool* ElectronSeedGenerator::theNavigationSchool
private

Definition at line 116 of file ElectronSeedGenerator.h.

Referenced by setupES().

PropagatorWithMaterial* ElectronSeedGenerator::thePropagator
private

Definition at line 112 of file ElectronSeedGenerator.h.

Referenced by setupES(), and ~ElectronSeedGenerator().

const edm::EventSetup* ElectronSeedGenerator::theSetup
private

Definition at line 118 of file ElectronSeedGenerator.h.

edm::ESHandle<TrackerGeometry> ElectronSeedGenerator::theTrackerGeometry
private

Definition at line 109 of file ElectronSeedGenerator.h.

Referenced by setupES().

KFUpdator* ElectronSeedGenerator::theUpdator
private

Definition at line 111 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator(), and ~ElectronSeedGenerator().

edm::Handle<std::vector<reco::Vertex> > ElectronSeedGenerator::theVertices
private

Definition at line 79 of file ElectronSeedGenerator.h.

bool ElectronSeedGenerator::useRecoVertex_
private

Definition at line 78 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().

edm::InputTag ElectronSeedGenerator::verticesTag_
private

Definition at line 80 of file ElectronSeedGenerator.h.

Referenced by ElectronSeedGenerator().