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
HitPairGeneratorFromLayerPairForPhotonConversion Class Reference

#include <HitPairGeneratorFromLayerPairForPhotonConversion.h>

Inheritance diagram for HitPairGeneratorFromLayerPairForPhotonConversion:
HitPairGenerator OrderedHitsGenerator

Public Types

typedef ctfseeding::SeedingLayer Layer
 
typedef
CombinedHitPairGenerator::LayerCacheType 
LayerCacheType
 

Public Member Functions

bool checkBoundaries (const DetLayer &layer, const ConversionRegion &convRegion, float maxSearchR, float maxSearchZ)
 
bool checkRZCompatibilityWithSeedTrack (const RecHitsSortedInPhi::Hit &hit, const DetLayer &layer, const ConversionRegion &convRegion)
 
virtual
HitPairGeneratorFromLayerPairForPhotonConversion
clone () const
 
float getLayerRadius (const DetLayer &layer)
 
float getLayerZ (const DetLayer &layer)
 
bool getPhiRange (float &Phimin, float &Phimax, const DetLayer &layer, const ConversionRegion &convRegion, const edm::EventSetup &es)
 
bool getPhiRange (float &Phimin, float &Phimax, const float &layerR, const ConversionRegion &convRegion, const edm::EventSetup &es)
 
 HitPairGeneratorFromLayerPairForPhotonConversion (const Layer &inner, const Layer &outer, LayerCacheType *layerCache, unsigned int nSize=30000, unsigned int max=0)
 
void hitPairs (const ConversionRegion &convRegion, const TrackingRegion &reg, OrderedHitPairs &prs, const edm::Event &ev, const edm::EventSetup &es)
 
virtual void hitPairs (const TrackingRegion &reg, OrderedHitPairs &prs, const edm::Event &ev, const edm::EventSetup &es)
 
const LayerinnerLayer () const
 
const LayerouterLayer () const
 
virtual ~HitPairGeneratorFromLayerPairForPhotonConversion ()
 
- Public Member Functions inherited from HitPairGenerator
virtual void clear ()
 
 HitPairGenerator (unsigned int size=7500)
 
virtual void hitPairs (const TrackingRegion &reg, OrderedHitPairs &prs, const edm::EventSetup &es)
 
virtual const OrderedHitPairsrun (const TrackingRegion &region, const edm::Event &ev, const edm::EventSetup &es)
 
virtual ~HitPairGenerator ()
 
- Public Member Functions inherited from OrderedHitsGenerator
 OrderedHitsGenerator ()
 
virtual ~OrderedHitsGenerator ()
 

Private Member Functions

double getCot (double dz, double dr)
 

Private Attributes

std::stringstream * ss
 
Layer theInnerLayer
 
LayerCacheTypetheLayerCache
 
Layer theOuterLayer
 

Additional Inherited Members

- Public Attributes inherited from OrderedHitsGenerator
unsigned int theMaxElement
 

Detailed Description

Definition at line 14 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

Member Typedef Documentation

Constructor & Destructor Documentation

HitPairGeneratorFromLayerPairForPhotonConversion::HitPairGeneratorFromLayerPairForPhotonConversion ( const Layer inner,
const Layer outer,
LayerCacheType layerCache,
unsigned int  nSize = 30000,
unsigned int  max = 0 
)
virtual HitPairGeneratorFromLayerPairForPhotonConversion::~HitPairGeneratorFromLayerPairForPhotonConversion ( )
inlinevirtual

Definition at line 27 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

27 { }

Member Function Documentation

bool HitPairGeneratorFromLayerPairForPhotonConversion::checkBoundaries ( const DetLayer layer,
const ConversionRegion convRegion,
float  maxSearchR,
float  maxSearchZ 
)

Definition at line 219 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References GeomDetEnumerators::barrel, ConversionRegion::convPoint(), gather_cfg::cout, GeomDetEnumerators::endcap, getLayerRadius(), getLayerZ(), DetLayer::location(), PV3DBase< T, PVType, FrameType >::perp(), dttmaxenums::R, Gflash::Z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by hitPairs().

219  {
220 
221  if(layer.location() == GeomDetEnumerators::barrel){
222 
223  float minZEndCap=130;
224  if(fabs(convRegion.convPoint().z()) > minZEndCap){
225 #ifdef mydebug_Seed
226  (*ss) << "\tthe conversion seems to be in the endcap. Zconv " << convRegion.convPoint().z() << std::endl;
227  std::cout << (*ss).str();
228 #endif
229  return false;
230  }
231 
232  float R=getLayerRadius(layer);
233 
234  if(convRegion.convPoint().perp()>R){
235 #ifdef mydebug_Seed
236  (*ss) << "\tthis layer is before the conversion : R layer " << R << " [ Rconv " << convRegion.convPoint().perp() << " Zconv " << convRegion.convPoint().z()<< std::endl;
237  std::cout << (*ss).str();
238 #endif
239  return false;
240  }
241 
242  if(R - convRegion.convPoint().perp() > maxSearchR ){
243 #ifdef mydebug_Seed
244  (*ss) << "\tthis layer is far from the conversion more than cut " << maxSearchR << " cm. R layer " << R << " [ Rconv " << convRegion.convPoint().perp() << " Zconv " << convRegion.convPoint().z()<< std::endl;
245  std::cout << (*ss).str();
246 #endif
247  return false;
248  }
249 
250  }else if (layer.location() == GeomDetEnumerators::endcap){
251 
252  float Z=getLayerZ(layer);
253  if(
254  (convRegion.convPoint().z()>0 && convRegion.convPoint().z()>Z)
255  ||
256  (convRegion.convPoint().z()<0 && convRegion.convPoint().z()<Z)
257  ) {
258 #ifdef mydebug_Seed
259  (*ss) << "\tthis layer is before the conversion : Z layer " << Z << " [ Rconv " << convRegion.convPoint().perp()<< " Zconv " << convRegion.convPoint().z() << std::endl;
260  std::cout << (*ss).str();
261 #endif
262  return false;
263  }
264 
265 
266  if(fabs(Z - convRegion.convPoint().z()) > maxSearchZ ){
267 #ifdef mydebug_Seed
268  (*ss) << "\tthis layer is far from the conversion more than cut " << maxSearchZ << " cm. Z layer " << Z << " [ Rconv " << convRegion.convPoint().perp()<< " Zconv " << convRegion.convPoint().z() << std::endl;
269  std::cout << (*ss).str();
270 #endif
271  return false;
272  }
273 
274  }
275  return true;
276 }
const double Z[kNumberCalorimeter]
T perp() const
Definition: PV3DBase.h:71
virtual Location location() const =0
Which part of the detector (barrel, endcap)
GlobalPoint convPoint() const
T z() const
Definition: PV3DBase.h:63
tuple cout
Definition: gather_cfg.py:121
bool HitPairGeneratorFromLayerPairForPhotonConversion::checkRZCompatibilityWithSeedTrack ( const RecHitsSortedInPhi::Hit hit,
const DetLayer layer,
const ConversionRegion convRegion 
)

Definition at line 321 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References GeomDetEnumerators::barrel, ConversionRegion::convPoint(), ConversionRegion::cotTheta(), ConversionRegion::errTheta(), f, getCot(), PixelRecoRange< T >::intersection(), DetLayer::location(), PixelRecoRange< T >::min(), nSigmaRZ, ConversionRegion::pvtxPoint(), funct::sqr(), mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by hitPairs().

321  {
322  static const float nSigmaRZ = std::sqrt(12.f);
323  Range hitCotTheta;
324 
325  double sigmaCotTheta = convRegion.errTheta() * (1+convRegion.cotTheta()*convRegion.cotTheta()); //Error Propagation from sigma theta.
326  Range allowedCotTheta(convRegion.cotTheta()-nSigmaRZ*sigmaCotTheta,convRegion.cotTheta()+nSigmaRZ*sigmaCotTheta);
327 
328  double dz = hit->globalPosition().z()-convRegion.pvtxPoint().z();
329  double r_reduced = std::sqrt( sqr(hit->globalPosition().x()-convRegion.pvtxPoint().x())+sqr(hit->globalPosition().y()-convRegion.pvtxPoint().y()));
330 
331  if (layer.location() == GeomDetEnumerators::barrel){
332  float zErr = nSigmaRZ * hit->errorGlobalZ();
333  hitCotTheta = Range(getCot(dz-zErr,r_reduced),getCot(dz+zErr,r_reduced));
334  }else{
335  float rErr = nSigmaRZ * hit->errorGlobalR();
336  if(dz>0)
337  hitCotTheta = Range(getCot(dz,r_reduced+rErr),getCot(dz,r_reduced-rErr));
338  else
339  hitCotTheta = Range(getCot(dz,r_reduced-rErr), getCot(dz,r_reduced+rErr));
340  }
341 
342  Range crossRange = allowedCotTheta.intersection(hitCotTheta);
343 
344 #ifdef mydebug_Seed
345  (*ss)
346  << "\n\t\t cotTheta allowed Range " << allowedCotTheta.min() << " \t, " << allowedCotTheta.max()
347  << "\n\t\t hitCotTheta Range " << hitCotTheta.min() << " \t, " << hitCotTheta.max()
348  << "\n\t\t Cross Range " << crossRange.min() << " \t, " << crossRange.max()
349  << "\n\t\t the seed track has origin " << convRegion.convPoint() << " \t cotTheta " << convRegion.cotTheta()
350  << std::endl;
351 #endif
352 
353  return crossRange.empty();
354 }
float cotTheta() const
virtual Location location() const =0
Which part of the detector (barrel, endcap)
GlobalPoint pvtxPoint() const
T y() const
Definition: PV3DBase.h:62
GlobalPoint convPoint() const
T min() const
T sqrt(T t)
Definition: SSEVec.h:46
T z() const
Definition: PV3DBase.h:63
double f[11][100]
static const double nSigmaRZ
PixelRecoRange< float > Range
double errTheta() const
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:61
virtual HitPairGeneratorFromLayerPairForPhotonConversion* HitPairGeneratorFromLayerPairForPhotonConversion::clone ( void  ) const
inlinevirtual

Implements HitPairGenerator.

Definition at line 35 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

References HitPairGeneratorFromLayerPairForPhotonConversion().

35  {
37  }
HitPairGeneratorFromLayerPairForPhotonConversion(const Layer &inner, const Layer &outer, LayerCacheType *layerCache, unsigned int nSize=30000, unsigned int max=0)
double HitPairGeneratorFromLayerPairForPhotonConversion::getCot ( double  dz,
double  dr 
)
private

Definition at line 358 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References abs, alignCSCRings::e, and f.

Referenced by checkRZCompatibilityWithSeedTrack().

358  {
359  if ( std::abs(dr) > 1.e-4f ) return dz/dr;
360  else
361  if(dz>0) return 99999.f;
362  else return -99999.f;
363 }
#define abs(x)
Definition: mlp_lapack.h:159
double f[11][100]
float HitPairGeneratorFromLayerPairForPhotonConversion::getLayerRadius ( const DetLayer layer)

Definition at line 194 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References GeomDetEnumerators::barrel, BoundSurface::bounds(), DetLayer::location(), Cylinder::radius(), BarrelDetLayer::specificSurface(), GeometricSearchDet::surface(), and Bounds::thickness().

Referenced by checkBoundaries(), and getPhiRange().

194  {
195  if (layer.location() == GeomDetEnumerators::barrel){
196  const BarrelDetLayer& bl = static_cast<const BarrelDetLayer&>(layer);
197  float rLayer = bl.specificSurface().radius();
198 
199  // the maximal delta phi will be for the innermost hits
200  float theThickness = layer.surface().bounds().thickness();
201  return rLayer + 0.5f*theThickness;
202  }
203 
204  //Fixme
205  return 0;
206 }
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
virtual Location location() const =0
Which part of the detector (barrel, endcap)
virtual float thickness() const =0
Scalar radius() const
Radius of the cylinder.
Definition: Cylinder.h:55
const Bounds & bounds() const
Definition: BoundSurface.h:89
virtual const BoundCylinder & specificSurface() const
Extension of the interface.
float HitPairGeneratorFromLayerPairForPhotonConversion::getLayerZ ( const DetLayer layer)

Definition at line 208 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References BoundSurface::bounds(), GeomDetEnumerators::endcap, DetLayer::location(), GeometricSearchDet::position(), GeometricSearchDet::surface(), Bounds::thickness(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by checkBoundaries(), and getPhiRange().

208  {
209  if (layer.location() == GeomDetEnumerators::endcap){
210  float layerZ = layer.position().z();
211  float theThickness = layer.surface().bounds().thickness();
212  float layerZmax = layerZ > 0 ? layerZ+0.5f*theThickness: layerZ-0.5f*theThickness;
213  return layerZmax;
214  }else{
215  //Fixme
216  return 0;
217  }
218 }
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
virtual Location location() const =0
Which part of the detector (barrel, endcap)
virtual float thickness() const =0
T z() const
Definition: PV3DBase.h:63
const Bounds & bounds() const
Definition: BoundSurface.h:89
virtual const Surface::PositionType & position() const
Returns position of the surface.
bool HitPairGeneratorFromLayerPairForPhotonConversion::getPhiRange ( float &  Phimin,
float &  Phimax,
const DetLayer layer,
const ConversionRegion convRegion,
const edm::EventSetup es 
)

Definition at line 278 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References GeomDetEnumerators::barrel, ConversionRegion::cotTheta(), GeomDetEnumerators::endcap, getLayerRadius(), getLayerZ(), DetLayer::location(), dttmaxenums::R, and Gflash::Z.

Referenced by hitPairs().

278  {
279  if(layer.location() == GeomDetEnumerators::barrel){
280  return getPhiRange(Phimin,Phimax,getLayerRadius(layer),convRegion,es);
281  }else if (layer.location() == GeomDetEnumerators::endcap){
282  float Z=getLayerZ(layer);
283  float R=Z/convRegion.cotTheta();
284  return getPhiRange(Phimin,Phimax,R,convRegion,es); //FIXME
285  }
286  return false;
287 }
const double Z[kNumberCalorimeter]
float cotTheta() const
virtual Location location() const =0
Which part of the detector (barrel, endcap)
bool getPhiRange(float &Phimin, float &Phimax, const DetLayer &layer, const ConversionRegion &convRegion, const edm::EventSetup &es)
bool HitPairGeneratorFromLayerPairForPhotonConversion::getPhiRange ( float &  Phimin,
float &  Phimax,
const float &  layerR,
const ConversionRegion convRegion,
const edm::EventSetup es 
)

Definition at line 289 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References PixelRecoUtilities::bendingRadius(), ConversionRegion::charge(), ConversionRegion::convPoint(), reco::deltaPhi(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), RecoTau_DiTaus_pt_20-420_cfg::Phimin, ptmin, funct::sqr(), and mathSSE::sqrt().

289  {
290  Phimin = reco::deltaPhi(convRegion.convPoint().phi(),0.);
291 
292  float dphi;
293  float ptmin=0.1;
294  float DeltaL=layerR-convRegion.convPoint().perp();
295 
296  if(DeltaL<0){
297  Phimin=0;
298  Phimax=0;
299  return false;
300  }
301 
302  float theRCurvatureMin = PixelRecoUtilities::bendingRadius(ptmin,es);
303 
304  if(theRCurvatureMin<DeltaL)
305  dphi = atan(DeltaL/layerR);
306  else
307  dphi = atan(theRCurvatureMin/layerR * ( 1 - sqrt(1-sqr(DeltaL/theRCurvatureMin)) ) );
308 
309  if(convRegion.charge()>0){
310  Phimax=Phimin;
311  Phimin=Phimax-dphi;
312  }else{
313  Phimax=Phimin+dphi;
314  }
315 
316  //std::cout << dphi << " " << Phimin << " " << Phimax << " " << layerR << " " << DeltaL << " " << convRegion.convPoint().phi() << " " << convRegion.convPoint().perp()<< std::endl;
317  return true;
318 }
T perp() const
Definition: PV3DBase.h:71
int charge() const
Geom::Phi< T > phi() const
Definition: PV3DBase.h:68
GlobalPoint convPoint() const
T sqrt(T t)
Definition: SSEVec.h:46
double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:12
T bendingRadius(T pt, const edm::EventSetup &iSetup)
double ptmin
Definition: HydjetWrapper.h:86
Square< F >::type sqr(const F &f)
Definition: Square.h:13
void HitPairGeneratorFromLayerPairForPhotonConversion::hitPairs ( const ConversionRegion convRegion,
const TrackingRegion reg,
OrderedHitPairs prs,
const edm::Event ev,
const edm::EventSetup es 
)

Definition at line 50 of file HitPairGeneratorFromLayerPairForPhotonConversion.cc.

References Reference_intrackfit_cff::barrel, checkBoundaries(), TrackingRegion::checkRZ(), checkRZCompatibilityWithSeedTrack(), ConversionRegion::convPoint(), ConversionRegion::cotTheta(), gather_cfg::cout, ctfseeding::SeedingLayer::detLayer(), RecHitsSortedInPhi::empty(), f, getPhiRange(), RecHitsSortedInPhi::hits(), PixelRecoRange< T >::intersection(), DetLayer::location(), PixelRecoRange< T >::min(), ctfseeding::SeedingLayer::name(), nSigmaRZ, TrackingRegion::origin(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), HitRZCompatibility::range(), OrderedHitPairs::size(), funct::sqr(), mathSSE::sqrt(), ss, theInnerLayer, theLayerCache, OrderedHitsGenerator::theMaxElement, theOuterLayer, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

53 {
54 
55  ss->str("");
56 
57  typedef OrderedHitPair::InnerRecHit InnerHit;
58  typedef OrderedHitPair::OuterRecHit OuterHit;
60 
61 #ifdef mydebug_Seed
62  (*ss) << "In " << theInnerLayer.name() << " Out " << theOuterLayer.name() << std::endl;
63 #endif
64 
65  if(!checkBoundaries(*theInnerLayer.detLayer(),convRegion,40.,60.)) return; //FIXME, the maxSearchR(Z) are not optimized
66  if(!checkBoundaries(*theOuterLayer.detLayer(),convRegion,50.,60.)) return; //FIXME, the maxSearchR(Z) are not optimized
67 
68  /*get hit sorted in phi for each layer: NB: doesn't apply any region cut*/
69  const RecHitsSortedInPhi & innerHitsMap = theLayerCache(&theInnerLayer, region, event, es);
70  if (innerHitsMap.empty()) return;
71 
72  const RecHitsSortedInPhi& outerHitsMap = theLayerCache(&theOuterLayer, region, event, es);
73  if (outerHitsMap.empty()) return;
74  /*----------------*/
75 
76  /*This object will check the compatibility of the his in phi among the two layers. */
77  //InnerDeltaPhi deltaPhi(*theInnerLayer.detLayer(), region, es);
78 
79  static const float nSigmaRZ = std::sqrt(12.f);
80  // static const float nSigmaPhi = 3.f;
81  vector<RecHitsSortedInPhi::Hit> innerHits, outerHits;
82  float outerPhimin, outerPhimax;
83  float innerPhimin, innerPhimax;
84 
85  /*Getting only the Hits in the outer layer that are compatible with the conversion region*/
86  if(!getPhiRange(outerPhimin,outerPhimax,*theOuterLayer.detLayer(),convRegion,es)) return;
87  outerHitsMap.hits( outerPhimin, outerPhimax, outerHits);
88 
89 #ifdef mydebug_Seed
90  (*ss) << "\tophimin, ophimax " << outerPhimin << " " << outerPhimax << std::endl;
91 #endif
92 
93  /* loop on outer hits*/
94  for (vector<RecHitsSortedInPhi::Hit>::const_iterator oh = outerHits.begin(); oh!= outerHits.end(); ++oh) {
95  RecHitsSortedInPhi::Hit ohit = (*oh);
96 #ifdef mydebug_Seed
97  GlobalPoint oPos = ohit->globalPosition();
98 
99  (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() << " cotTheta " << oPos.z()/oPos.perp() << std::endl;
100 #endif
101 
102  /*Check the compatibility of the ohit with the eta of the seeding track*/
103  if(checkRZCompatibilityWithSeedTrack(ohit,*theOuterLayer.detLayer(),convRegion)) continue;
104 
105  /*
106  //Do I need this? it uses a compatibility that probably I wouldn't
107  //Removing for the time being
108 
109  PixelRecoRange<float> phiRange = deltaPhi( oPos.perp(), oPos.phi(), oPos.z(), nSigmaPhi*(ohit->errorGlobalRPhi()));
110  if (phiRange.empty()) continue;
111  */
112 
113  const HitRZCompatibility *checkRZ = region.checkRZ(theInnerLayer.detLayer(), ohit, es);
114  if(!checkRZ) {
115 #ifdef mydebug_Seed
116  (*ss) << "*******\nNo valid checkRZ\n*******" << std::endl;
117 #endif
118  continue;
119  }
120 
121  /*Get only the inner hits compatible with the conversion region*/
122  innerHits.clear();
123  if(!getPhiRange(innerPhimin,innerPhimax,*theInnerLayer.detLayer(),convRegion,es)) continue;
124  innerHitsMap.hits(innerPhimin, innerPhimax, innerHits);
125 
126 #ifdef mydebug_Seed
127  (*ss) << "\tiphimin, iphimax " << innerPhimin << " " << innerPhimax << std::endl;
128 #endif
129 
130  /*Loop on inner hits*/
131  for ( vector<RecHitsSortedInPhi::Hit>::const_iterator ih=innerHits.begin(), ieh = innerHits.end(); ih < ieh; ++ih) {
132  GlobalPoint innPos = (*ih)->globalPosition();
133 
134 
135 #ifdef mydebug_Seed
136  (*ss) << "\tinnPos " << innPos << " r " << innPos.perp() << " phi " << innPos.phi() << " cotTheta " << innPos.z()/innPos.perp() << std::endl;
137 #endif
138 
139  /*Check the compatibility of the ohit with the eta of the seeding track*/
140  if(checkRZCompatibilityWithSeedTrack(*ih,*theInnerLayer.detLayer(),convRegion)) continue;
141 
142  float r_reduced = std::sqrt( sqr(innPos.x()-region.origin().x())+sqr(innPos.y()-region.origin().y()));
143  Range allowed;
144  Range hitRZ;
145  if (theInnerLayer.detLayer()->location() == barrel) {
146  allowed = checkRZ->range(r_reduced);
147  float zErr = nSigmaRZ * (*ih)->errorGlobalZ();
148  hitRZ = Range(innPos.z()-zErr, innPos.z()+zErr);
149  } else {
150  allowed = checkRZ->range(innPos.z());
151  float rErr = nSigmaRZ * (*ih)->errorGlobalR();
152  hitRZ = Range(r_reduced-rErr, r_reduced+rErr);
153  }
154  Range crossRange = allowed.intersection(hitRZ);
155 
156 #ifdef mydebug_Seed
157  (*ss)
158  << "\n\t\t allowed Range " << allowed.min() << " \t, " << allowed.max()
159  << "\n\t\t hitRz Range " << hitRZ.min() << " \t, " << hitRZ.max()
160  << "\n\t\t Cross Range " << crossRange.min() << " \t, " << crossRange.max()
161  << "\n\t\t the seed track has origin " << convRegion.convPoint() << " \t cotTheta " << convRegion.cotTheta()
162  << std::endl;
163 #endif
164 
165  if (! crossRange.empty() ) {
166 #ifdef mydebug_Seed
167  (*ss)
168  << "\n\t\t !!!!ACCEPTED!!! \n\n";
169 #endif
170  if (theMaxElement!=0 && result.size() >= theMaxElement){
171  result.clear();
172 #ifdef mydebug_Seed
173  edm::LogError("TooManySeeds")<<"number of pairs exceed maximum, no pairs produced";
174 #endif
175  delete checkRZ;
176 
177 #ifdef mydebug_Seed
178  std::cout << (*ss).str();
179 #endif
180  return;
181  }
182  result.push_back( OrderedHitPair( *ih, ohit) );
183  }
184  }
185  delete checkRZ;
186  }
187 
188 #ifdef mydebug_Seed
189  std::cout << (*ss).str();
190 #endif
191 }
float cotTheta() const
bool checkRZCompatibilityWithSeedTrack(const RecHitsSortedInPhi::Hit &hit, const DetLayer &layer, const ConversionRegion &convRegion)
T perp() const
Definition: PV3DBase.h:71
virtual Location location() const =0
Which part of the detector (barrel, endcap)
const DetLayer * detLayer() const
Definition: SeedingLayer.cc:80
virtual Range range(const float &rORz) const =0
std::vector< Hit > hits(float phiMin, float phiMax) const
Geom::Phi< T > phi() const
Definition: PV3DBase.h:68
T y() const
Definition: PV3DBase.h:62
GlobalPoint convPoint() const
T min() const
T sqrt(T t)
Definition: SSEVec.h:46
T z() const
Definition: PV3DBase.h:63
tuple result
Definition: query.py:137
bool getPhiRange(float &Phimin, float &Phimax, const DetLayer &layer, const ConversionRegion &convRegion, const edm::EventSetup &es)
double f[11][100]
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
static const double nSigmaRZ
PixelRecoRange< float > Range
bool checkBoundaries(const DetLayer &layer, const ConversionRegion &convRegion, float maxSearchR, float maxSearchZ)
std::string name() const
Definition: SeedingLayer.cc:75
PixelRecoRange< T > intersection(const PixelRecoRange< T > &r) const
Square< F >::type sqr(const F &f)
Definition: Square.h:13
TransientTrackingRecHit::ConstRecHitPointer Hit
tuple cout
Definition: gather_cfg.py:121
T x() const
Definition: PV3DBase.h:61
virtual void HitPairGeneratorFromLayerPairForPhotonConversion::hitPairs ( const TrackingRegion reg,
OrderedHitPairs prs,
const edm::Event ev,
const edm::EventSetup es 
)
inlinevirtual

Implements HitPairGenerator.

Definition at line 32 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

33  {};
const Layer& HitPairGeneratorFromLayerPairForPhotonConversion::innerLayer ( ) const
inline
const Layer& HitPairGeneratorFromLayerPairForPhotonConversion::outerLayer ( ) const
inline

Member Data Documentation

std::stringstream* HitPairGeneratorFromLayerPairForPhotonConversion::ss
private
Layer HitPairGeneratorFromLayerPairForPhotonConversion::theInnerLayer
private

Definition at line 57 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs(), and innerLayer().

LayerCacheType& HitPairGeneratorFromLayerPairForPhotonConversion::theLayerCache
private

Definition at line 55 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs().

Layer HitPairGeneratorFromLayerPairForPhotonConversion::theOuterLayer
private

Definition at line 56 of file HitPairGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs(), and outerLayer().