test
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 Attributes
HitQuadrupletGeneratorFromLayerPairForPhotonConversion Class Reference

#include <HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h>

Public Types

typedef
SeedingLayerSetsHits::SeedingLayer 
Layer
 
typedef LayerHitMapCache LayerCacheType
 
typedef
SeedingLayerSetsHits::SeedingLayerSet 
Layers
 

Public Member Functions

void bubbleSortVsR (int n, double *ax, double *ay, double *aey)
 
bool failCheckRZCompatibility (const RecHitsSortedInPhi::Hit &hit, const DetLayer &layer, const HitRZCompatibility *checkRZ, const TrackingRegion &region)
 
bool failCheckSegmentZCompatibility (double &rInn, double &zInnMin, double &zInnMax, double &rInt, double &zIntMin, double &zIntMax, double &rOut, double &zOutMin, double &zOutMax)
 
bool failCheckSlopeTest (const RecHitsSortedInPhi::Hit &ohit, const RecHitsSortedInPhi::Hit &nohit, const RecHitsSortedInPhi::Hit &ihit, const RecHitsSortedInPhi::Hit &nihit, const TrackingRegion &region)
 
double getEffectiveErrorOnZ (const RecHitsSortedInPhi::Hit &hit, const TrackingRegion &region)
 
double getSqrEffectiveErrorOnZ (const RecHitsSortedInPhi::Hit &hit, const TrackingRegion &region)
 
double getZAtR (double &rInn, double &zInn, double &r, double &rOut, double &zOut)
 
void hitPairs (const TrackingRegion &reg, OrderedHitPairs &prs, const Layers &layers, const edm::Event &ev, const edm::EventSetup &es)
 
 HitQuadrupletGeneratorFromLayerPairForPhotonConversion (unsigned int inner, unsigned int outer, LayerCacheType *layerCache, unsigned int max=0)
 
double verySimpleFit (int size, double *ax, double *ay, double *e2y, double &p0, double &e2p0, double &p1)
 
 ~HitQuadrupletGeneratorFromLayerPairForPhotonConversion ()
 

Private Attributes

std::stringstream * ss
 
const unsigned int theInnerLayer
 
LayerCacheTypetheLayerCache
 
const unsigned int theMaxElement
 
const unsigned int theOuterLayer
 

Detailed Description

Definition at line 13 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

Member Typedef Documentation

Constructor & Destructor Documentation

HitQuadrupletGeneratorFromLayerPairForPhotonConversion::HitQuadrupletGeneratorFromLayerPairForPhotonConversion ( unsigned int  inner,
unsigned int  outer,
LayerCacheType layerCache,
unsigned int  max = 0 
)
HitQuadrupletGeneratorFromLayerPairForPhotonConversion::~HitQuadrupletGeneratorFromLayerPairForPhotonConversion ( )
inline

Definition at line 26 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

26 { }

Member Function Documentation

void HitQuadrupletGeneratorFromLayerPairForPhotonConversion::bubbleSortVsR ( int  n,
double *  ax,
double *  ay,
double *  aey 
)

Definition at line 381 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References i, and j.

Referenced by failCheckSlopeTest().

381  {
382  bool swapped = true;
383  int j = 0;
384  double tmpr, tmpz, tmpez;
385  while (swapped) {
386  swapped = false;
387  j++;
388  for (int i = 0; i < n - j; i++) {
389  if ( ar[i] > ar[i+1] ) {
390  tmpr = ar[i];
391  ar[i] = ar[i + 1];
392  ar[i + 1] = tmpr;
393  tmpz = az[i];
394  az[i] = az[i + 1];
395  az[i + 1] = tmpz;
396  tmpez = aez[i];
397  aez[i] = aez[i + 1];
398  aez[i + 1] = tmpez;
399  swapped = true;
400  }
401  }
402  }
403 }
int i
Definition: DBlmapReader.cc:9
int j
Definition: DBlmapReader.cc:9
bool HitQuadrupletGeneratorFromLayerPairForPhotonConversion::failCheckRZCompatibility ( const RecHitsSortedInPhi::Hit hit,
const DetLayer layer,
const HitRZCompatibility checkRZ,
const TrackingRegion region 
)

Definition at line 223 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References Reference_intrackfit_cff::barrel, f, PixelRecoRange< T >::intersection(), DetLayer::location(), PixelRecoRange< T >::min(), nSigmaRZ, TrackingRegion::origin(), HitRZCompatibility::range(), funct::sqr(), mathSSE::sqrt(), ss, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

Referenced by hitPairs().

223  {
224 
225  if(!checkRZ) {
226 #ifdef mydebug_QSeed
227  (*ss) << "*******\nNo valid checkRZ\n*******" << std::endl;
228 #endif
229  return true;
230  }
231 
232  static const float nSigmaRZ = std::sqrt(12.f);
233  float r_reduced = std::sqrt( sqr(hit->globalPosition().x()-region.origin().x())+sqr(hit->globalPosition().y()-region.origin().y()));
234  Range allowed;
235  Range hitRZ;
236  if (layer.location() == barrel) {
237  allowed = checkRZ->range(r_reduced);
238  float zErr = nSigmaRZ * hit->errorGlobalZ();
239  hitRZ = Range(hit->globalPosition().z()-zErr, hit->globalPosition().z()+zErr);
240  } else {
241  allowed = checkRZ->range(hit->globalPosition().z());
242  float rErr = nSigmaRZ * hit->errorGlobalR();
243  hitRZ = Range(r_reduced-rErr, r_reduced+rErr);
244  }
245  Range crossRange = allowed.intersection(hitRZ);
246 
247 #ifdef mydebug_QSeed
248  (*ss)
249  << "\n\t\t allowed Range " << allowed.min() << " \t, " << allowed.max()
250  << "\n\t\t hitRz Range " << hitRZ.min() << " \t, " << hitRZ.max()
251  << "\n\t\t Cross Range " << crossRange.min() << " \t, " << crossRange.max()
252  << std::endl;
253  if( !crossRange.empty())
254  (*ss) << "\n\t\t !!!!ACCEPTED!!! \n\n";
255 #endif
256 
257  return crossRange.empty();
258 }
GlobalPoint const & origin() const
virtual Location location() const =0
Which part of the detector (barrel, endcap)
virtual Range range(const float &rORz) const =0
PixelRecoRange< float > Range
T y() const
Definition: PV3DBase.h:63
T min() const
T sqrt(T t)
Definition: SSEVec.h:18
double f[11][100]
PixelRecoRange< T > intersection(const PixelRecoRange< T > &r) const
Square< F >::type sqr(const F &f)
Definition: Square.h:13
T x() const
Definition: PV3DBase.h:62
bool HitQuadrupletGeneratorFromLayerPairForPhotonConversion::failCheckSegmentZCompatibility ( double &  rInn,
double &  zInnMin,
double &  zInnMax,
double &  rInt,
double &  zIntMin,
double &  zIntMax,
double &  rOut,
double &  zOutMin,
double &  zOutMax 
)

Definition at line 406 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References getZAtR().

Referenced by failCheckSlopeTest().

408  {
409  //
410  // Check the compatibility in z of an INTermediate segment between an INNer segment and an OUTer segment;
411  // when true is returned zIntMin and zIntMax are replaced with allowed range values
412 
413  //Left side
414  double zLeft = getZAtR(rInn, zInnMin, rInt, rOut, zOutMin);
415  if ( zIntMax < zLeft ) return true;
416  //Right side
417  double zRight = getZAtR(rInn, zInnMax, rInt, rOut, zOutMax);
418  if ( zIntMin > zRight ) return true;
419  if ( zIntMin < zLeft && zIntMax < zRight ) {
420  zIntMax = zLeft;
421  return false;
422  }
423  if ( zIntMin > zLeft && zIntMax > zRight ) {
424  zIntMax = zRight;
425  return false;
426  }
427 
428  //Segment is fully contained
429  return false;
430 
431 }
double getZAtR(double &rInn, double &zInn, double &r, double &rOut, double &zOut)
bool HitQuadrupletGeneratorFromLayerPairForPhotonConversion::failCheckSlopeTest ( const RecHitsSortedInPhi::Hit ohit,
const RecHitsSortedInPhi::Hit nohit,
const RecHitsSortedInPhi::Hit ihit,
const RecHitsSortedInPhi::Hit nihit,
const TrackingRegion region 
)

Definition at line 262 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References bubbleSortVsR(), failCheckSegmentZCompatibility(), getEffectiveErrorOnZ(), TrackingRegion::origin(), TrackingRegion::originZBound(), PV3DBase< T, PVType, FrameType >::perp(), alignCSCRings::r, z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by hitPairs().

262  {
263 
264  double r[5], z[5], ez[5];
265  // double pr[2], pz[2], e2pz[2], mr[2], mz[2], e2mz[2];
266 
267  //
268  //Hits
269  r[0] = ohit->globalPosition().perp();
270  z[0] = ohit->globalPosition().z();
271  ez[0] = getEffectiveErrorOnZ(ohit, region);
272  //
273  r[1] = nohit->globalPosition().perp();
274  z[1] = nohit->globalPosition().z();
275  ez[1] = getEffectiveErrorOnZ(nohit, region);
276  //
277  r[2] = nihit->globalPosition().perp();
278  z[2] = nihit->globalPosition().z();
279  ez[2] = getEffectiveErrorOnZ(nihit, region);
280  //
281  r[3] = ihit->globalPosition().perp();
282  z[3] = ihit->globalPosition().z();
283  ez[3] = getEffectiveErrorOnZ(ihit, region);
284  //
285  //R (r) ordering of the 4 hit arrays
286  bubbleSortVsR(4, r, z, ez);
287  //
288  //Vertex
289  r[4] = region.origin().perp();
290  z[4] = region.origin().z();
291  double vError = region.originZBound();
292  if ( vError > 15. ) vError = 1.;
293  ez[4] = 3.*vError;
294 
295  //
296  //Sequence of checks
297  //
298  //Inner segment == vertex
299  double rInn = r[4];
300  double zInnMin = z[4]-ez[4];
301  double zInnMax = z[4]+ez[4];
302  //
303  // Int == 2, Out == 3
304  double rOut = r[3];
305  double zOutMin = z[3]-ez[3];
306  double zOutMax = z[3]+ez[3];
307  double rInt = r[2];
308  double zIntMin = z[2]-ez[2];
309  double zIntMax = z[2]+ez[2];
310  if ( failCheckSegmentZCompatibility(rInn, zInnMin, zInnMax,
311  rInt, zIntMin, zIntMax,
312  rOut, zOutMin, zOutMax) ) return true;
313  //
314  // Int == 1, Out == 2 (with updated limits)
315  rOut = rInt;
316  zOutMin = zIntMin;
317  zOutMax = zIntMax;
318  rInt = r[1];
319  zIntMin = z[1]-ez[1];
320  zIntMax = z[1]+ez[1];
321  if ( failCheckSegmentZCompatibility(rInn, zInnMin, zInnMax,
322  rInt, zIntMin, zIntMax,
323  rOut, zOutMin, zOutMax) ) return true;
324  //
325  // Int == 0, Out == 1 (with updated limits)
326  rOut = rInt;
327  zOutMin = zIntMin;
328  zOutMax = zIntMax;
329  rInt = r[0];
330  zIntMin = z[0]-ez[0];
331  zIntMax = z[0]+ez[0];
332  if ( failCheckSegmentZCompatibility(rInn, zInnMin, zInnMax,
333  rInt, zIntMin, zIntMax,
334  rOut, zOutMin, zOutMax) ) return true;
335 
336  //
337  // Test is ok!!!
338  return false;
339 
340 }
T perp() const
Definition: PV3DBase.h:72
GlobalPoint const & origin() const
T z() const
Definition: PV3DBase.h:64
bool failCheckSegmentZCompatibility(double &rInn, double &zInnMin, double &zInnMax, double &rInt, double &zIntMin, double &zIntMax, double &rOut, double &zOutMin, double &zOutMax)
float originZBound() const
bounds the particle vertex in the longitudinal plane
double getEffectiveErrorOnZ(const RecHitsSortedInPhi::Hit &hit, const TrackingRegion &region)
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::getEffectiveErrorOnZ ( const RecHitsSortedInPhi::Hit hit,
const TrackingRegion region 
)

Definition at line 361 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References TrackingRegion::origin(), PV3DBase< T, PVType, FrameType >::perp(), funct::sqr(), mathSSE::sqrt(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by failCheckSlopeTest().

361  {
362 
363  //
364  //Fit-wise the effective error on Z is approximately the sum in quadrature of the error on Z
365  //and the error on R correctly projected by using hit-vertex direction
366  double sqrProjFactor = sqr((hit->globalPosition().z()-region.origin().z())/(hit->globalPosition().perp()-region.origin().perp()));
367  double effErr = sqrt(hit->globalPositionError().czz()+sqrProjFactor*hit->globalPositionError().rerr(hit->globalPosition()));
368  if ( effErr>2. ) {
369  effErr*=1.8; //Single Side error is strip length * sqrt( 12.) = 3.46
370  //empirically found that the error on ss hits value it is already twice as large (two sigmas)!
371  //Multiply by sqrt(12.)/2.=1.73 to have effErr equal to the strip lenght (1.8 to allow for some margin)
372  //effErr*=2.5; //Used in some tests
373  } else {
374  effErr*=2.; //Tight //Double side... allowing for 2 sigma variation
375  //effErr*=5.; //Loose //Double side... allowing for 2 sigma variation
376  }
377  return effErr;
378 
379 }
T perp() const
Definition: PV3DBase.h:72
GlobalPoint const & origin() const
T sqrt(T t)
Definition: SSEVec.h:18
T z() const
Definition: PV3DBase.h:64
Square< F >::type sqr(const F &f)
Definition: Square.h:13
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::getSqrEffectiveErrorOnZ ( const RecHitsSortedInPhi::Hit hit,
const TrackingRegion region 
)

Definition at line 350 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References TrackingRegion::origin(), PV3DBase< T, PVType, FrameType >::perp(), funct::sqr(), and PV3DBase< T, PVType, FrameType >::z().

350  {
351 
352  //
353  //Fit-wise the effective error on Z is approximately the sum in quadrature of the error on Z
354  //and the error on R correctly projected by using hit-vertex direction
355 
356  double sqrProjFactor = sqr((hit->globalPosition().z()-region.origin().z())/(hit->globalPosition().perp()-region.origin().perp()));
357  return (hit->globalPositionError().czz()+sqrProjFactor*hit->globalPositionError().rerr(hit->globalPosition()));
358 
359 }
T perp() const
Definition: PV3DBase.h:72
GlobalPoint const & origin() const
T z() const
Definition: PV3DBase.h:64
Square< F >::type sqr(const F &f)
Definition: Square.h:13
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::getZAtR ( double &  rInn,
double &  zInn,
double &  r,
double &  rOut,
double &  zOut 
)

Definition at line 434 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

Referenced by failCheckSegmentZCompatibility().

436  {
437 
438  // z - zInn r - rInn r - rInn
439  // ----------- = ----------- ==> z = zInn + (zOut - zInn) * -----------
440  // zOut - zInn rOut - rInn rOut - rInn
441 
442 
443  return zInn + (zOut - zInn)*(r - rInn)/(rOut - rInn);
444 
445 }
void HitQuadrupletGeneratorFromLayerPairForPhotonConversion::hitPairs ( const TrackingRegion reg,
OrderedHitPairs prs,
const Layers layers,
const edm::Event ev,
const edm::EventSetup es 
)

Definition at line 46 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References RecHitsSortedInPhi::all(), PV3DBase< T, PVType, FrameType >::barePhi(), TrackingRegion::checkRZ(), gather_cfg::cout, reco::deltaPhi(), SeedingLayerSetsHits::SeedingLayer::detLayer(), RecHitsSortedInPhi::empty(), failCheckRZCompatibility(), failCheckSlopeTest(), RecHitsSortedInPhi::hits(), CommPDSkim_cfg::maxDeltaPhi, SeedingLayerSetsHits::SeedingLayer::name(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), HLT_25ns10e33_v2_cff::region, OrderedHitPairs::size(), ss, theInnerLayer, theLayerCache, theMaxElement, theOuterLayer, and PV3DBase< T, PVType, FrameType >::z().

49 {
50 
51  ss->str("");
52 
53  typedef OrderedHitPair::InnerRecHit InnerHit;
54  typedef OrderedHitPair::OuterRecHit OuterHit;
56 
57  Layer innerLayerObj = layers[theInnerLayer];
58  Layer outerLayerObj = layers[theOuterLayer];
59 
60  size_t totCountP2=0, totCountP1=0, totCountM2=0, totCountM1=0, selCount=0;
61 #ifdef mydebug_QSeed
62  (*ss) << "In " << innerLayerObj.name() << " Out " << theOuterLayer.name() << std::endl;
63 #endif
64 
65  /*get hit sorted in phi for each layer: NB: doesn't apply any region cut*/
66  const RecHitsSortedInPhi & innerHitsMap = theLayerCache(innerLayerObj, region, event, es);
67  if (innerHitsMap.empty()) return;
68 
69  const RecHitsSortedInPhi& outerHitsMap = theLayerCache(outerLayerObj, region, event, es);
70  if (outerHitsMap.empty()) return;
71  /*----------------*/
72 
73  /*This object will check the compatibility of the his in phi among the two layers. */
74  //InnerDeltaPhi deltaPhi(*innerLayerObj.detLayer(), region, es);
75 
76  vector<RecHitsSortedInPhi::Hit> innerHits;
77  // float outerPhimin, outerPhimax;
78  float innerPhimin, innerPhimax;
79  float maxDeltaPhi=1.; //sguazz
80  //float maxDeltaPhi=1.;
81 
82  RecHitsSortedInPhi::Range outerHits = outerHitsMap.all();
83 
85  for (RecHitsSortedInPhi::HitIter oh = outerHits.first; oh!= outerHits.second; ++oh) {
86  RecHitsSortedInPhi::Hit ohit = (*oh).hit();
87  GlobalPoint oPos = ohit->globalPosition();
88 
89  totCountP2++;
90  const HitRZCompatibility *checkRZ = region.checkRZ(outerLayerObj.detLayer(), ohit, es);
91  for(nextoh=oh+1;nextoh!=outerHits.second; ++nextoh){
92 
93  RecHitsSortedInPhi::Hit nohit = (*nextoh).hit();
94  GlobalPoint noPos = nohit->globalPosition();
95 
96 
97 #ifdef mydebug_QSeed
98  (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() << " cotTheta " << oPos.z()/oPos.perp() << std::endl;
99  (*ss) << "\tnoPos " << noPos << " r " << noPos.perp() << " phi " << noPos.phi() << " cotTheta " << noPos.z()/noPos.perp() << std::endl;
100  (*ss) << "\tDeltaPhi " << reco::deltaPhi(noPos.barePhi(),oPos.barePhi()) << std::endl;
101 #endif
102 
103  if(fabs(reco::deltaPhi(noPos.barePhi(),oPos.barePhi()))>maxDeltaPhi) break;
104 
105  totCountM2++;
106 
107  /*Check the compatibility of the ohit with the eta of the seeding track*/
108  if(failCheckRZCompatibility(nohit,*outerLayerObj.detLayer(),checkRZ,region)) continue;
109 
110  /*
111  //Do I need this? it uses a compatibility that probably I wouldn't
112  //Removing for the time being
113 
114  PixelRecoRange<float> phiRange = deltaPhi( oPos.perp(), oPos.phi(), oPos.z(), nSigmaPhi*(ohit->errorGlobalRPhi()));
115  if (phiRange.empty()) continue;
116  */
117 
118 
119  /*Get only the inner hits compatible with the conversion region*/
120  innerPhimin=ohit->globalPosition().phi();
121  innerPhimax=nohit->globalPosition().phi();
122  // checkPhiRange(innerPhimin,innerPhimax);
123 
124  innerHits.clear();
125  innerHitsMap.hits(innerPhimin, innerPhimax, innerHits);
126 
127 #ifdef mydebug_QSeed
128  (*ss) << "\tiphimin, iphimax " << innerPhimin << " " << innerPhimax << std::endl;
129 #endif
130 
131  const HitRZCompatibility *checkRZb = region.checkRZ(innerLayerObj.detLayer(), ohit, es);
132  const HitRZCompatibility *checkRZc = region.checkRZ(innerLayerObj.detLayer(), nohit, es);
133 
134  /*Loop on inner hits*/
135  vector<RecHitsSortedInPhi::Hit>::const_iterator ieh = innerHits.end();
136  for ( vector<RecHitsSortedInPhi::Hit>::const_iterator ih=innerHits.begin(); ih < ieh; ++ih) {
137  RecHitsSortedInPhi::Hit ihit = *ih;
138 
139 #ifdef mydebug_QSeed
140  GlobalPoint innPos = (*ih)->globalPosition();
141  (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() << " cotTheta " << oPos.z()/oPos.perp() << std::endl;
142  (*ss) << "\tnoPos " << noPos << " r " << noPos.perp() << " phi " << noPos.phi() << " cotTheta " << noPos.z()/noPos.perp() << std::endl;
143  (*ss) << "\tinnPos " << innPos << " r " << innPos.perp() << " phi " << innPos.phi() << " cotTheta " << innPos.z()/innPos.perp() << std::endl;
144 #endif
145 
146  totCountP1++;
147 
148  /*Check the compatibility of the ihit with the two outer hits*/
149  if(failCheckRZCompatibility(ihit,*innerLayerObj.detLayer(),checkRZb,region)
150  ||
151  failCheckRZCompatibility(ihit,*innerLayerObj.detLayer(),checkRZc,region) ) continue;
152 
153 
154  for ( vector<RecHitsSortedInPhi::Hit>::const_iterator nextih=ih+1; nextih != ieh; ++nextih) {
155  RecHitsSortedInPhi::Hit nihit = *nextih;
156 
157 
158 #ifdef mydebug_QSeed
159  GlobalPoint ninnPos = (*nextih)->globalPosition();
160  (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() << " cotTheta " << oPos.z()/oPos.perp() << std::endl;
161  (*ss) << "\tnoPos " << noPos << " r " << noPos.perp() << " phi " << noPos.phi() << " cotTheta " << noPos.z()/noPos.perp() << std::endl;
162  (*ss) << "\tinnPos " << innPos << " r " << innPos.perp() << " phi " << innPos.phi() << " cotTheta " << innPos.z()/innPos.perp() << std::endl;
163  (*ss) << "\tninnPos " << ninnPos << " r " << ninnPos.perp() << " phi " << ninnPos.phi() << " cotTheta " << ninnPos.z()/ninnPos.perp() << std::endl;
164 #endif
165 
166  totCountM1++;
167 
168  /*Check the compatibility of the nihit with the two outer hits*/
169  if(failCheckRZCompatibility(nihit,*innerLayerObj.detLayer(),checkRZb,region)
170  ||
171  failCheckRZCompatibility(nihit,*innerLayerObj.detLayer(),checkRZc,region) ) continue;
172 
173  /*Sguazz modifica qui*/
174  if(failCheckSlopeTest(ohit,nohit,ihit,nihit,region)) continue;
175 
176  if (theMaxElement!=0 && result.size() >= theMaxElement){
177  result.clear();
178  edm::LogError("TooManyQuads")<<"number of Quad combinations exceed maximum, no quads produced";
179  delete checkRZ;
180  delete checkRZb;
181  delete checkRZc;
182 #ifdef mydebug_QSeed
183  (*ss) << "In " << innerLayerObj.name() << " Out " << outerLayerObj.name()
184  << "\tP2 " << totCountP2
185  << "\tM2 " << totCountM2
186  << "\tP1 " << totCountP1
187  << "\tM1 " << totCountM1
188  << "\tsel " << selCount
189  << std::endl;
190  std::cout << (*ss).str();
191 #endif
192  return;
193  }
194  selCount++;
195  result.push_back( OrderedHitPair( ihit, ohit) );
196  result.push_back( OrderedHitPair( nihit, nohit) );
197  //#ifdef mydebug_QSeed
198  //(*ss) << "sizeOfresul " << result.size() << std::endl;
199  //#endif
200  }
201  }
202  delete checkRZb;
203  delete checkRZc;
204  }
205  delete checkRZ;
206  }
207 #ifdef mydebug_QSeed
208  (*ss) << "In " << innerLayerObj.name() << " Out " << outerLayerObj.name()
209  << "\tP2 " << totCountP2
210  << "\tM2 " << totCountM2
211  << "\tP1 " << totCountP1
212  << "\tM1 " << totCountM1
213  << "\tsel " << selCount
214  << std::endl;
215  std::cout << (*ss).str();
216 #endif
217 }
std::vector< Hit > hits(float phiMin, float phiMax) const
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
T perp() const
Definition: PV3DBase.h:72
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
SeedingHitSet::ConstRecHitPointer InnerRecHit
tuple result
Definition: mps_fire.py:83
T barePhi() const
Definition: PV3DBase.h:68
std::pair< HitIter, HitIter > Range
std::vector< HitWithPhi >::const_iterator HitIter
T z() const
Definition: PV3DBase.h:64
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
bool failCheckSlopeTest(const RecHitsSortedInPhi::Hit &ohit, const RecHitsSortedInPhi::Hit &nohit, const RecHitsSortedInPhi::Hit &ihit, const RecHitsSortedInPhi::Hit &nihit, const TrackingRegion &region)
SeedingHitSet::ConstRecHitPointer Hit
BaseTrackerRecHit const * Hit
double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:22
tuple cout
Definition: gather_cfg.py:145
bool failCheckRZCompatibility(const RecHitsSortedInPhi::Hit &hit, const DetLayer &layer, const HitRZCompatibility *checkRZ, const TrackingRegion &region)
SeedingHitSet::ConstRecHitPointer OuterRecHit
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::verySimpleFit ( int  size,
double *  ax,
double *  ay,
double *  e2y,
double &  p0,
double &  e2p0,
double &  p1 
)

Definition at line 343 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

343  {
344 
345  //#include "verySimpleFit.icc"
346  return 0;
347 }

Member Data Documentation

std::stringstream* HitQuadrupletGeneratorFromLayerPairForPhotonConversion::ss
private
const unsigned int HitQuadrupletGeneratorFromLayerPairForPhotonConversion::theInnerLayer
private

Definition at line 49 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs().

LayerCacheType& HitQuadrupletGeneratorFromLayerPairForPhotonConversion::theLayerCache
private

Definition at line 47 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs().

const unsigned int HitQuadrupletGeneratorFromLayerPairForPhotonConversion::theMaxElement
private

Definition at line 50 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs().

const unsigned int HitQuadrupletGeneratorFromLayerPairForPhotonConversion::theOuterLayer
private

Definition at line 48 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs().