CMS 3D CMS Logo

PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc
Go to the documentation of this file.
4 
9 
10 //#define debugTSPFSLA
11 
12 namespace {
13  inline double sqr(double a) { return a * a; }
14 } // namespace
15 
17  const edm::ParameterSet& conf, edm::ConsumesCollector&& iC)
18  : theHitsGenerator(new CombinedHitPairGeneratorForPhotonConversion(
19  conf.getParameter<edm::ParameterSet>("OrderedHitsFactoryPSet"), iC)),
20  theSeedCreator(new SeedForPhotonConversion1Leg(conf.getParameter<edm::ParameterSet>("SeedCreatorPSet"))),
21  theRegionProducer(
22  new GlobalTrackingRegionProducerFromBeamSpot(conf.getParameter<edm::ParameterSet>("RegionFactoryPSet"), iC)),
23  theClusterCheck(conf.getParameter<edm::ParameterSet>("ClusterCheckPSet"), iC),
24  theSilentOnClusterCheck(conf.getParameter<edm::ParameterSet>("ClusterCheckPSet")
25  .getUntrackedParameter<bool>("silentClusterCheck", false)),
26  _vtxMinDoF(conf.getParameter<double>("vtxMinDoF")),
27  _maxDZSigmas(conf.getParameter<double>("maxDZSigmas")),
28  _maxNumSelVtx(conf.getParameter<uint32_t>("maxNumSelVtx")),
29  _applyTkVtxConstraint(conf.getParameter<bool>("applyTkVtxConstraint")),
30  _countSeedTracks(0),
31  _primaryVtxInputTag(conf.getParameter<edm::InputTag>("primaryVerticesTag")),
32  _beamSpotInputTag(conf.getParameter<edm::InputTag>("beamSpotInputTag")) {
35  token_refitter = iC.consumes<reco::TrackCollection>(conf.getParameter<edm::InputTag>("TrackRefitter"));
36 }
37 
39 
41  const edm::EventSetup& setup,
43  myEsetup = &setup;
44  myEvent = &event;
45 
46  assert(seedCollection == nullptr);
47 
49 
50  size_t clustsOrZero = theClusterCheck.tooManyClusters(event);
51  if (clustsOrZero) {
53  edm::LogError("TooManyClusters") << "Found too many clusters (" << clustsOrZero << "), bailing out.\n";
54  seedCollection = nullptr;
55  return;
56  }
57 
58  edm::ESHandle<MagneticField> handleMagField;
59  setup.get<IdealMagneticFieldRecord>().get(handleMagField);
60  magField = handleMagField.product();
61  if (UNLIKELY(magField->inTesla(GlobalPoint(0., 0., 0.)).z() < 0.01)) {
62  seedCollection = nullptr;
63  return;
64  }
65 
67 
68  event.getByToken(token_vertex, vertexHandle);
69  if (!vertexHandle.isValid() || vertexHandle->empty()) {
70  edm::LogError("PhotonConversionFinderFromTracks")
71  << "Error! Can't get the product primary Vertex Collection " << _primaryVtxInputTag << "\n";
72  seedCollection = nullptr;
73  return;
74  }
75 
76  event.getByToken(token_bs, recoBeamSpotHandle);
77 
78  regions = theRegionProducer->regions(event, setup);
79 
80  // find seeds
81  loopOnTracks();
82 
83 #ifdef debugTSPFSLA
84  std::stringstream ss;
85  ss.str("");
86  ss << "\n++++++++++++++++++\n";
87  ss << "seed collection size " << seedCollection->size();
88  for (auto const& tjS : *seedCollection) {
89  po.print(ss, tjS);
90  }
91  edm::LogInfo("debugTrajSeedFromSingleLeg") << ss.str();
92  //-------------------------------------------------
93 #endif
94 
95  // clear memory
96  theHitsGenerator->clearCache();
97 
98  seedCollection = nullptr;
99 }
100 
102  //--- Get Tracks
104 
105  if (trackCollectionH.isValid() == 0) {
106  edm::LogError("MissingInput")
107  << " could not find track collecion in PhotonConversionTrajectorySeedProducerFromSingleLegAlgo";
108  return;
109  }
110 
111  size_t idx = 0, sel = 0;
112  _countSeedTracks = 0;
113 
114 #ifdef debugTSPFSLA
115  ss.str("");
116 #endif
117 
118  for (reco::TrackCollection::const_iterator tr = trackCollectionH->begin(); tr != trackCollectionH->end();
119  tr++, idx++) {
120  if (rejectTrack(*tr))
121  continue;
122  std::vector<reco::Vertex> selectedPriVtxCompatibleWithTrack;
123  if (!_applyTkVtxConstraint) {
124  selectedPriVtxCompatibleWithTrack.push_back(*(vertexHandle->begin())); //Same approach as before
125  } else {
126  if (!selectPriVtxCompatibleWithTrack(*tr, selectedPriVtxCompatibleWithTrack))
127  continue;
128  }
129 
130  sel++;
131  loopOnPriVtx(*tr, selectedPriVtxCompatibleWithTrack);
132  }
133 #ifdef debugTSPFSLA
134  edm::LogInfo("debugTrajSeedFromSingleLeg") << ss.str();
135  edm::LogInfo("debugTrajSeedFromSingleLeg") << "Inspected " << sel << " tracks over " << idx
136  << " tracks. \t # tracks providing at least one seed " << _countSeedTracks;
137 #endif
138 }
139 
141  const reco::Track& tk, std::vector<reco::Vertex>& selectedPriVtxCompatibleWithTrack) {
142  std::vector<std::pair<double, short> > idx;
143  short count = -1;
144 
145  double cosPhi = tk.px() / tk.pt();
146  double sinPhi = tk.py() / tk.pt();
147  double sphi2 = tk.covariance(2, 2);
148  double stheta2 = tk.covariance(1, 1);
149 
150  for (const reco::Vertex& vtx : *vertexHandle) {
151  count++;
152  if (vtx.ndof() <= _vtxMinDoF)
153  continue;
154 
155  double _dz = tk.dz(vtx.position());
156  double _dzError = tk.dzError();
157 
158  double cotTheta = tk.pz() / tk.pt();
159  double dx = vtx.position().x();
160  double dy = vtx.position().y();
161  double sx2 = vtx.covariance(0, 0);
162  double sy2 = vtx.covariance(1, 1);
163 
164  double sxy2 = sqr(cosPhi * cotTheta) * sx2 + sqr(sinPhi * cotTheta) * sy2 +
165  sqr(cotTheta * (-dx * sinPhi + dy * cosPhi)) * sphi2 +
166  sqr((1 + cotTheta * cotTheta) * (dx * cosPhi + dy * sinPhi)) * stheta2;
167 
168  _dzError = sqrt(
169  _dzError * _dzError + vtx.covariance(2, 2) +
170  sxy2); //there is a missing component, related to the element (vtx.x*px+vtx.y*py)/pt * pz/pt. since the tk ref point is at the point of closest approach, this scalar product should be almost zero.
171 
172 #ifdef debugTSPFSLA
173  ss << " primary vtx " << vtx.position() << " \tk vz " << tk.vz() << " vx " << tk.vx() << " vy " << tk.vy()
174  << " pz/pt " << tk.pz() / tk.pt() << " \t dz " << _dz << " \t " << _dzError << " sxy2 " << sxy2
175  << " \t dz/dzErr " << _dz / _dzError << std::endl;
176 #endif
177 
178  if (fabs(_dz) / _dzError > _maxDZSigmas)
179  continue;
180 
181  idx.push_back(std::pair<double, short>(fabs(_dz), count));
182  }
183  if (idx.empty()) {
184 #ifdef debugTSPFSLA
185  ss << "no vertex selected " << std::endl;
186 #endif
187  return false;
188  }
189 
190  std::stable_sort(
191  idx.begin(), idx.end(), [](std::pair<double, short> a, std::pair<double, short> b) { return a.first < b.first; });
192 
193  for (size_t i = 0; i < _maxNumSelVtx && i < idx.size(); ++i) {
194  selectedPriVtxCompatibleWithTrack.push_back((*vertexHandle)[idx[i].second]);
195 #ifdef debugTSPFSLA
196  ss << "selected vtx dz " << idx[0].first << " position" << idx[0].second << std::endl;
197 #endif
198  }
199 
200  return true;
201 }
202 
204  const reco::Track& tk, const std::vector<reco::Vertex>& selectedPriVtxCompatibleWithTrack) {
205  bool foundAtLeastASeedCand = false;
206  for (auto const& vtx : selectedPriVtxCompatibleWithTrack) {
207  math::XYZPoint primaryVertexPoint = math::XYZPoint(vtx.position());
208 
209  for (IR ir = regions.begin(), irEnd = regions.end(); ir < irEnd; ++ir) {
210  const TrackingRegion& region = **ir;
211 
212 #ifdef debugTSPFSLA
213  ss << "[PrintRegion] " << region.print() << std::endl;
214 #endif
215 
216  //This if is just for the _countSeedTracks. otherwise
217  //inspectTrack(&tk,region, primaryVertexPoint);
218  //would be enough
219 
220  if (inspectTrack(&tk, region, primaryVertexPoint) and !foundAtLeastASeedCand) {
221  foundAtLeastASeedCand = true;
223  }
224  }
225  }
226 }
227 
230  if (recoBeamSpotHandle.isValid()) {
232 
234  if (_IdealHelixParameters.GetTangentPoint().r() == 0) {
235  //this case means a null results on the _IdealHelixParameters side
236  return true;
237  }
238 
239  float rMin = 2.; //cm
241  //this case means a track that has the tangent point nearby the primary vertex
242  // if the track is primary, this number tends to be the primary vertex itself
243  //Rejecting all the potential photon conversions having a "vertex" inside the beampipe
244  //We should not miss too much, seen that the conversions at the beam pipe are the better reconstructed
245  return true;
246  }
247  }
248 
249  //-------------------------------------------------------
250  /*
251  float maxPt2=64.; //Cut on pt^2 Indeed doesn't do almost nothing
252  if(track.momentum().Perp2() > maxPt2)
253  return true;
254  */
255  //-------------------------------------------------------
256  //Cut in the barrel eta region FIXME: to be extended to endcaps
257  /*
258  float maxEta=1.3;
259  if(fabs(track.eta()) > maxEta)
260  return true;
261  */
262  //-------------------------------------------------------
263  //Reject tracks that have a first valid hit in the pixel barrel/endcap layer/disk 1
264  //assume that the hits are aligned along momentum
265  /*
266  const reco::HitPattern& p=track.hitPattern();
267  for (int i=0; i<p.numberOfHits(); i++) {
268  uint32_t hit = p.getHitPattern(i);
269  // if the hit is valid and in pixel barrel, print out the layer
270  if (! p.validHitFilter(hit) ) continue;
271  if( (p.pixelBarrelHitFilter(hit) || p.pixelEndcapHitFilter(hit))
272  &&
273  p.getLayer(hit) == 1
274  )
275  return true;
276  else
277  break; //because the first valid hit is in a different layer
278  }
279  */
280  //-------------------------------------------------------
281 
282  return false;
283 }
284 
286  const TrackingRegion& region,
287  math::XYZPoint& primaryVertexPoint) {
288  _IdealHelixParameters.setData(track, primaryVertexPoint);
289 
291  (_IdealHelixParameters.GetTangentPoint().r() == 0)) {
292  //this case means a null results on the _IdealHelixParameters side
293  return false;
294  }
295 
296  float rMin = 3.; //cm
298  //this case means a track that has the tangent point nearby the primary vertex
299  // if the track is primary, this number tends to be the primary vertex itself
300  //Rejecting all the potential photon conversions having a "vertex" inside the beampipe
301  //We should not miss too much, seen that the conversions at the beam pipe are the better reconstructed
302  return false;
303  }
304 
305  float ptmin = 0.5;
306  float originRBound = 3;
307  float originZBound = 3.;
308 
309  GlobalPoint originPos;
313  float cotTheta;
315  cotTheta =
317  } else {
319  cotTheta = 99999.f;
320  else
321  cotTheta = -99999.f;
322  }
323  GlobalVector originBounds(originRBound, originRBound, originZBound);
324 
325  GlobalPoint pvtxPoint(primaryVertexPoint.x(), primaryVertexPoint.y(), primaryVertexPoint.z());
326 
327  ConversionRegion convRegion(originPos, pvtxPoint, cotTheta, track->thetaError(), -1 * track->charge());
328 
329 #ifdef debugTSPFSLA
330  ss << "\nConversion Point " << originPos << " " << originPos.perp() << "\n";
331 #endif
332 
333  const OrderedSeedingHits& hitss = theHitsGenerator->run(convRegion, region, *myEvent, *myEsetup);
334 
335  unsigned int nHitss = hitss.size();
336 
337  if (nHitss == 0)
338  return false;
339 
340 #ifdef debugTSPFSLA
341  ss << "\n nHitss " << nHitss << "\n";
342 #endif
343 
344  if (seedCollection->empty())
345  seedCollection->reserve(
346  nHitss); // don't do multiple reserves in the case of multiple regions: it would make things even worse
347  // as it will cause N re-allocations instead of the normal log(N)/log(2)
348  for (unsigned int iHits = 0; iHits < nHitss; ++iHits) {
349 #ifdef debugTSPFSLA
350  ss << "\n iHits " << iHits << "\n";
351 #endif
352  const SeedingHitSet& hits = hitss[iHits];
353  theSeedCreator->trajectorySeed(
354  *seedCollection, hits, originPos, originBounds, ptmin, *myEsetup, convRegion.cotTheta(), ss);
355  }
356  return true;
357 }
Vector3DBase
Definition: Vector3DBase.h:8
Likely.h
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
ConversionRegion
Definition: ConversionRegion.h:8
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
electrons_cff.bool
bool
Definition: electrons_cff.py:372
mps_fire.i
i
Definition: mps_fire.py:355
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::trackCollectionH
edm::Handle< reco::TrackCollection > trackCollectionH
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:76
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
funct::false
false
Definition: Factorize.h:34
TrajectorySeedCollection
std::vector< TrajectorySeed > TrajectorySeedCollection
Definition: TrajectorySeedCollection.h:6
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::selectPriVtxCompatibleWithTrack
bool selectPriVtxCompatibleWithTrack(const reco::Track &tk, std::vector< reco::Vertex > &selectedPriVtxCompatibleWithTrack)
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:140
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_countSeedTracks
size_t _countSeedTracks
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:66
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::loopOnTracks
void loopOnTracks()
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:101
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
PrintRecoObjects::print
void print(std::stringstream &ss, const SiStripCluster &clus)
Definition: PrintRecoObjects.cc:5
SeedingHitSet
Definition: SeedingHitSet.h:6
edm::isNotFinite
constexpr bool isNotFinite(T x)
Definition: isFinite.h:9
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:32
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_IdealHelixParameters
IdealHelixParameters _IdealHelixParameters
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:85
edm
HLT enums.
Definition: AlignableModifier.h:19
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_maxDZSigmas
double _maxDZSigmas
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:63
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::token_bs
edm::EDGetTokenT< reco::BeamSpot > token_bs
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:69
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
edm::LogInfo
Definition: MessageLogger.h:254
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::vertexHandle
edm::Handle< reco::VertexCollection > vertexHandle
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:87
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::find
void find(const edm::Event &event, const edm::EventSetup &setup, TrajectorySeedCollection &output)
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:40
reco::TrackBase::vx
double vx() const
x coordinate of the reference point on track
Definition: TrackBase.h:626
IdealHelixParameters::setData
void setData(const reco::Track *track, const math::XYZVector &refPoint=math::XYZVector(0, 0, 0))
sqr
int sqr(const T &t)
Definition: pfalgo_common_ref.h:9
cms::cuda::assert
assert(be >=bs)
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::PhotonConversionTrajectorySeedProducerFromSingleLegAlgo
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo(const edm::ParameterSet &, edm::ConsumesCollector &&iC)
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:16
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::theRegionProducer
std::unique_ptr< GlobalTrackingRegionProducerFromBeamSpot > theRegionProducer
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:58
reco::TrackBase::px
double px() const
x coordinate of momentum vector
Definition: TrackBase.h:611
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::ss
std::stringstream ss
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:92
training_settings.idx
idx
Definition: training_settings.py:16
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_beamSpotInputTag
edm::InputTag _beamSpotInputTag
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:67
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
reco::TrackBase::pt
double pt() const
track transverse momentum
Definition: TrackBase.h:608
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
UNLIKELY
#define UNLIKELY(x)
Definition: Likely.h:21
reco::TrackBase::py
double py() const
y coordinate of momentum vector
Definition: TrackBase.h:614
reco::TrackBase::vz
double vz() const
z coordinate of the reference point on track
Definition: TrackBase.h:632
IdealHelixParameters::setMagnField
void setMagnField(const MagneticField *magnField)
Definition: IdealHelixParameters.h:31
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::theHitsGenerator
std::unique_ptr< CombinedHitPairGeneratorForPhotonConversion > theHitsGenerator
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:56
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::regions
Regions regions
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:74
reco::BeamSpot
Definition: BeamSpot.h:21
OrderedSeedingHits
Definition: OrderedSeedingHits.h:7
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
edm::ESHandle< MagneticField >
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::myEsetup
const edm::EventSetup * myEsetup
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:78
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::token_vertex
edm::EDGetTokenT< reco::VertexCollection > token_vertex
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:68
reco::TrackBase::dz
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:602
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
reco::TrackBase::covariance
CovarianceMatrix covariance() const
return track covariance matrix
Definition: TrackBase.h:683
reco::BeamSpot::position
const Point & position() const
position
Definition: BeamSpot.h:59
Point3DBase< float, GlobalTag >
b
double b
Definition: hdecay.h:118
IdealHelixParameters::GetTangentPoint
math::XYZVector GetTangentPoint() const
Definition: IdealHelixParameters.h:38
IdealHelixParameters::GetMomentumAtTangentPoint
math::XYZVector GetMomentumAtTangentPoint() const
Definition: IdealHelixParameters.h:39
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::seedCollection
TrajectorySeedCollection * seedCollection
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:54
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::token_refitter
edm::EDGetTokenT< reco::TrackCollection > token_refitter
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:70
badGlobalMuonTaggersAOD_cff.vtx
vtx
Definition: badGlobalMuonTaggersAOD_cff.py:5
CombinedHitPairGeneratorForPhotonConversion
Definition: CombinedHitPairGeneratorForPhotonConversion.h:28
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
edm::LogError
Definition: MessageLogger.h:183
a
double a
Definition: hdecay.h:119
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::recoBeamSpotHandle
edm::Handle< reco::BeamSpot > recoBeamSpotHandle
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:82
ParameterSet
Definition: Functions.h:16
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::~PhotonConversionTrajectorySeedProducerFromSingleLegAlgo
~PhotonConversionTrajectorySeedProducerFromSingleLegAlgo()
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:38
OrderedSeedingHits::size
virtual unsigned int size() const =0
KineDebug3::count
void count()
Definition: KinematicConstrainedVertexUpdatorT.h:21
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
reco::TrackBase::dzError
double dzError() const
error on dz
Definition: TrackBase.h:731
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::loopOnPriVtx
void loopOnPriVtx(const reco::Track &tk, const std::vector< reco::Vertex > &selectedPriVtxCompatibleWithTrack)
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:203
PVValHelper::dy
Definition: PVValidationHelpers.h:49
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_applyTkVtxConstraint
bool _applyTkVtxConstraint
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:65
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:57
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::theSilentOnClusterCheck
bool theSilentOnClusterCheck
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:61
get
#define get
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_primaryVtxInputTag
edm::InputTag _primaryVtxInputTag
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:67
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::IR
Regions::const_iterator IR
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:73
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::theSeedCreator
std::unique_ptr< SeedForPhotonConversion1Leg > theSeedCreator
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:57
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_maxNumSelVtx
size_t _maxNumSelVtx
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:64
reco::TrackBase::vy
double vy() const
y coordinate of the reference point on track
Definition: TrackBase.h:629
isFinite.h
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::rejectTrack
bool rejectTrack(const reco::Track &track)
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:228
HLT_2018_cff.region
region
Definition: HLT_2018_cff.py:81479
ptmin
double ptmin
Definition: HydjetWrapper.h:84
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::inspectTrack
bool inspectTrack(const reco::Track *track, const TrackingRegion &region, math::XYZPoint &primaryVertexPoint)
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.cc:285
TrackingRegion
Definition: TrackingRegion.h:38
photonAnalyzer_cfi.rMin
rMin
Definition: photonAnalyzer_cfi.py:90
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
reco::TrackBase::pz
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:617
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::theClusterCheck
ClusterChecker theClusterCheck
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:60
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::_vtxMinDoF
double _vtxMinDoF
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:63
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::myEvent
const edm::Event * myEvent
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:79
ParameterSet.h
EgammaValidation_Wenu_cff.sel
sel
Definition: EgammaValidation_Wenu_cff.py:33
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
event
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of "!*" before the partial wildcard feature was incorporated). The per-event "cost" of each negative criterion with multiple relevant triggers is about the same as ! *was in the past
ClusterChecker::tooManyClusters
size_t tooManyClusters(const edm::Event &e) const
Definition: ClusterChecker.cc:44
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::magField
const MagneticField * magField
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:81
edm::InputTag
Definition: InputTag.h:15
PVValHelper::dx
Definition: PVValidationHelpers.h:48
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
reco::Vertex
Definition: Vertex.h:35
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo::po
PrintRecoObjects po
Definition: PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h:90
SeedForPhotonConversion1Leg
Definition: SeedForPhotonConversion1Leg.h:20
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
GlobalTrackingRegionProducerFromBeamSpot
Definition: GlobalTrackingRegionProducerFromBeamSpot.h:16
PhotonConversionTrajectorySeedProducerFromSingleLegAlgo.h