41 if (!
i1->isValid() || !
i2->isValid())
43 if (
i1->geographicalId() !=
i2->geographicalId())
45 if (!(
i1->localPosition() ==
i2->localPosition()))
64 if ((
seed.caloCluster().key() ==
res.caloCluster().key()) && (
seed.hitsMask() ==
res.hitsMask()) &&
70 seed.setNegAttributes(
res.dRZNeg(1),
res.dPhiNeg(1),
res.dRZNeg(0),
res.dPhiNeg(0));
74 if (
res.dRZPos(1) !=
seed.dRZPos(1)) {
76 <<
"this similar old seed already has another dRz2Pos" 77 <<
"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: " << (
unsigned int)
res.hitsMask() <<
"/" 78 <<
res.dRZNeg(1) <<
"/" <<
res.dPhiNeg(1) <<
"/" <<
res.dRZPos(1) <<
"/" <<
res.dPhiPos(1)
79 <<
"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: " << (
unsigned int)
seed.hitsMask() <<
"/" 80 <<
seed.dRZNeg(1) <<
"/" <<
seed.dPhiNeg(1) <<
"/" <<
seed.dRZPos(1) <<
"/" <<
seed.dPhiPos(1);
88 seed.setPosAttributes(
res.dRZPos(1),
res.dPhiPos(1),
res.dRZPos(0),
res.dPhiPos(0));
92 if (
res.dRZNeg(1) !=
seed.dRZNeg(1)) {
94 <<
"this old seed already has another dRz2" 95 <<
"\nold seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: " << (
unsigned int)
res.hitsMask() <<
"/" 96 <<
res.dRZNeg(1) <<
"/" <<
res.dPhiNeg(1) <<
"/" <<
res.dRZPos(1) <<
"/" <<
res.dPhiPos(1)
97 <<
"\nnew seed mask/dRz2/dPhi2/dRz2Pos/dPhi2Pos: " << (
unsigned int)
seed.hitsMask() <<
"/" 98 <<
seed.dRZNeg(1) <<
"/" <<
seed.dPhiNeg(1) <<
"/" <<
seed.dRZPos(1) <<
"/" <<
seed.dPhiPos(1);
109 void seedsFromTrajectorySeeds(
const std::vector<SeedWithInfo> &
pixelSeeds,
114 LogDebug(
"ElectronSeedGenerator") <<
"Compatible " << (positron ?
"positron" :
"electron") <<
" seeds found.";
117 std::vector<SeedWithInfo>::const_iterator
s;
120 seed.setCaloCluster(cluster);
121 seed.initTwoHitSeed(
s->hitsMask);
131 : dynamicPhiRoad_(
pset.getParameter<
bool>(
"dynamicPhiRoad")),
132 verticesTag_(ts.token_vtx),
133 beamSpotTag_(ts.token_bs),
134 magFieldToken_{
cc.esConsumes()},
135 trackerGeometryToken_{
cc.esConsumes()},
136 lowPtThresh_(
pset.getParameter<
double>(
"LowPtThreshold")),
137 highPtThresh_(
pset.getParameter<
double>(
"HighPtThreshold")),
138 nSigmasDeltaZ1_(
pset.getParameter<
double>(
"nSigmasDeltaZ1")),
139 deltaZ1WithVertex_(
pset.getParameter<
double>(
"deltaZ1WithVertex")),
140 sizeWindowENeg_(
pset.getParameter<
double>(
"SizeWindowENeg")),
141 deltaPhi1Low_(
pset.getParameter<
double>(
"DeltaPhi1Low")),
142 deltaPhi1High_(
pset.getParameter<
double>(
"DeltaPhi1High")),
144 dPhi1Coef2_(dynamicPhiRoad_ ? (deltaPhi1Low_ - deltaPhi1High_) / (1. / lowPtThresh_ - 1. / highPtThresh_) : 0.),
145 dPhi1Coef1_(dynamicPhiRoad_ ? deltaPhi1Low_ - dPhi1Coef2_ / lowPtThresh_ : 0.),
147 useRecoVertex_(
pset.getParameter<
bool>(
"useRecoVertex")),
149 deltaPhi2B_(
pset.getParameter<
double>(
"DeltaPhi2B")),
150 deltaPhi2F_(
pset.getParameter<
double>(
"DeltaPhi2F")),
151 phiMin2B_(-
pset.getParameter<
double>(
"PhiMax2B")),
152 phiMin2F_(-
pset.getParameter<
double>(
"PhiMax2F")),
153 phiMax2B_(
pset.getParameter<
double>(
"PhiMax2B")),
154 phiMax2F_(
pset.getParameter<
double>(
"PhiMax2F")),
155 matcher_(
pset.getParameter<
double>(
"ePhiMin1"),
156 pset.getParameter<
double>(
"ePhiMax1"),
161 pset.getParameter<
double>(
"z2MaxB"),
162 pset.getParameter<
double>(
"r2MaxF"),
163 pset.getParameter<
double>(
"rMaxI"),
169 if (newMagField || newTrackerGeom) {
176 const std::vector<const TrajectorySeedCollection *> &seedsV,
184 std::vector<reco::Vertex>
const *
vertices =
nullptr;
188 for (
unsigned int i = 0;
i < sclRefs.
size(); ++
i) {
190 LogDebug(
"ElectronSeedGenerator") <<
"new cluster, calling seedsFromThisCluster";
194 LogDebug(
"ElectronSeedGenerator") <<
": For event " <<
e.id();
195 LogDebug(
"ElectronSeedGenerator") <<
"Nr of superclusters after filter: " << sclRefs.
size()
196 <<
", no. of ElectronSeeds found = " <<
out.size();
201 std::vector<reco::Vertex>
const *
vertices,
203 float clusterEnergy = seedCluster->energy();
204 GlobalPoint clusterPos(seedCluster->position().x(), seedCluster->position().y(), seedCluster->position().z());
226 double sigmaZ0Error =
beamSpot.sigmaZ0Error();
238 seedsFromTrajectorySeeds(elePixelSeeds, caloCluster,
out,
false);
241 seedsFromTrajectorySeeds(posPixelSeeds, caloCluster,
out,
true);
247 double myZmin1, myZmax1;
248 if (vertexPos.z() ==
beamSpot.position().z()) {
250 double sigmaZ0Error =
beamSpot.sigmaZ0Error();
263 seedsFromTrajectorySeeds(elePixelSeeds, caloCluster,
out,
false);
266 seedsFromTrajectorySeeds(posPixelSeeds, caloCluster,
out,
true);
void run(edm::Event &, const reco::SuperClusterRefVector &, const std::vector< const TrajectorySeedCollection *> &seedsV, reco::ElectronSeedCollection &)
void seedsFromThisCluster(edm::Ref< reco::SuperClusterCollection > seedCluster, reco::BeamSpot const &beamSpot, std::vector< reco::Vertex > const *vertices, reco::ElectronSeedCollection &out)
const edm::EDGetTokenT< std::vector< reco::Vertex > > verticesTag_
void setupES(const edm::EventSetup &setup)
RecHitRange recHits() const
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
uint32_t cc[maxCellsPerHit]
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
const bool useRecoVertex_
const float nSigmasDeltaZ1_
void set2ndLayer(float dummyphi2minB, float dummyphi2maxB, float dummyphi2minF, float dummyphi2maxF)
const std::vector< const TrajectorySeedCollection * > * initialSeedCollectionVector_
void set1stLayerZRange(float zmin1, float zmax1)
unsigned int nHits() const
const edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
const float deltaZ1WithVertex_
const bool dynamicPhiRoad_
std::vector< ElectronSeed > ElectronSeedCollection
collection of ElectronSeed objects
const float deltaPhi1High_
size_type size() const
Size of the RefVector.
void set1stLayer(float dummyphi1min, float dummyphi1max)
void ele_convert(const Type1 &obj1, Type2 &obj2)
bool check(const edm::EventSetup &iSetup)
ElectronSeedGenerator(const edm::ParameterSet &, const Tokens &, edm::ConsumesCollector &&)
const float sizeWindowENeg_
Log< level::Warning, false > LogWarning
edm::ESWatcher< TrackerDigiGeometryRecord > trackerGeometryWatcher_
edm::ESWatcher< IdealMagneticFieldRecord > magneticFieldWatcher_
const float highPtThresh_
const float deltaPhi1Low_
void setES(MagneticField const &, TrackerGeometry const &trackerGeometry)