CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ConvBremSeedProducer.cc
Go to the documentation of this file.
3 
11 
17 
28 
44 
46 
47 using namespace edm;
48 using namespace std;
49 using namespace reco;
50 
52  conf_(iConfig),
53  fieldMap_(0),
54  layerMap_(56, static_cast<const DetLayer*>(0)),
55  negLayerOffset_(27)
56 {
57  produces<ConvBremSeedCollection>();
58 }
59 
60 
62 {
63 
64 
65 }
66 
67 
68 void
70 {
71 
72  LogDebug("ConvBremSeedProducerProducer")<<"START event: "<<iEvent.id().event()
73  <<" in run "<<iEvent.id().run();
74 
75  float pfmass= 0.0005;
76 
78 
81  iEvent.getByLabel(conf_.getParameter<InputTag>("PFClusters") ,PfC);
82  const PFClusterCollection& PPP= *(PfC.product());
83 
86  iEvent.getByLabel(conf_.getParameter<InputTag>("pixelRecHits") , pixelHits);
87 
90  iEvent.getByLabel(conf_.getParameter<InputTag>("rphirecHits"),rphirecHits);
92  iEvent.getByLabel(conf_.getParameter<InputTag>("stereorecHits"), stereorecHits);
94  iEvent.getByLabel(conf_.getParameter<InputTag>("matchedrecHits"), matchedrecHits);
95 
96  //GSFPFRECTRACKS
97  Handle<GsfPFRecTrackCollection> thePfRecTrackCollection;
98  iEvent.getByLabel(conf_.getParameter<InputTag>("PFRecTrackLabel"),
99  thePfRecTrackCollection);
100  const GsfPFRecTrackCollection PfRTkColl = *(thePfRecTrackCollection.product());
101 
102 
104  std::auto_ptr<ConvBremSeedCollection> output(new ConvBremSeedCollection);
105 
106 
108  vector<pair< TrajectorySeed , pair<GlobalVector,float> > > unclean;
109  //TRIPLET OF MODULES TO BE USED FOR SEEDING
110  vector< vector< long int > > tripl;
111  //LAYER MAP
113 
114 
115 
117 
118  for(unsigned int ipft=0;ipft<PfRTkColl.size();ipft++){
119  GsfPFRecTrackRef pft(thePfRecTrackCollection,ipft);
120  LogDebug("ConvBremSeedProducerProducer")<<"NEW GsfPFRecTRACK ";
121  float eta_br=0;
122  unclean.clear();
123  tripl.clear();
124  vector<int> gc;
125  TrackingRecHitRefVector gsfRecHits=pft->gsfTrackRef()->extra()->recHits();
126  float pfoutenergy=sqrt((pfmass*pfmass)+pft->gsfTrackRef()->outerMomentum().Mag2());
127  XYZTLorentzVector mom =XYZTLorentzVector(pft->gsfTrackRef()->outerMomentum().x(),
128  pft->gsfTrackRef()->outerMomentum().y(),
129  pft->gsfTrackRef()->outerMomentum().z(),
130  pfoutenergy);
131  XYZTLorentzVector pos = XYZTLorentzVector(pft->gsfTrackRef()->outerPosition().x(),
132  pft->gsfTrackRef()->outerPosition().y(),
133  pft->gsfTrackRef()->outerPosition().z(),
134  0.);
136  0,0,B_.z());
137  theOutParticle.setCharge(pft->gsfTrackRef()->charge());
138 
140  gc.push_back(GoodCluster(theOutParticle,PPP,0.5));
141 
142 
143  vector<PFBrem> brem =(*pft).PFRecBrem();
144  vector<PFBrem>::iterator ib=brem.begin();
145  vector<PFBrem>::iterator ib_end=brem.end();
146  LogDebug("ConvBremSeedProducerProducer")<<"NUMBER OF BREMS "<<brem.size();
147 
149  for (;ib!=ib_end;++ib){
150 
151  XYZTLorentzVector mom=pft->trajectoryPoint(ib->indTrajPoint()).momentum();
152  XYZTLorentzVector pos=
154  pft->trajectoryPoint(ib->indTrajPoint()).position().x(),
155  pft->trajectoryPoint(ib->indTrajPoint()).position().y(),
156  pft->trajectoryPoint(ib->indTrajPoint()).position().z(),
157  0);
158 
160  if (pos.Rho()>80) continue;
161  if ((pos.Rho()>5)&&(fabs(ib->SigmaDeltaP()/ib->DeltaP())>3)) continue;
162  if (fabs(ib->DeltaP())<3) continue;
163  eta_br=mom.eta();
164  vector< vector< long int > >Idd;
165 
166 
167 
169  0,0,B_.z());
170  p.setCharge(0);
171  gc.push_back(GoodCluster(p,PPP,0.2));
172 
174 
176  list<TrackerLayer>::const_iterator cyliter= geometry_->cylinderBegin();
177  for ( ; cyliter != geometry_->cylinderEnd() ; ++cyliter ) {
178 
180  if (!(cyliter->sensitive())) continue;
181  PP.setPropagationConditions(*cyliter);
182  PP.propagate();
183  if (PP.getSuccess()==0) continue;
184 
187  AnalyticalPropagator alongProp(&mf, anyDirection);
189  const DetLayer* tkLayer = detLayer(*cyliter,PP.Z());
190  if (&(*tkLayer)==0) continue;
191  TrajectoryStateOnSurface trajState = makeTrajectoryState( tkLayer, PP, &mf);
192 
193  std::vector<DetWithState> compat
194  = tkLayer->compatibleDets( trajState, alongProp, est);
195  vector <long int> temp;
196  if (compat.size()==0) continue;
197 
198  for (std::vector<DetWithState>::const_iterator i=compat.begin(); i!=compat.end(); i++) {
199 
200  long int detid=i->first->geographicalId().rawId();
201 
202  if ((tkLayer->subDetector()!=GeomDetEnumerators::PixelBarrel)&&
204 
205 
206  StDetMatch DetMatch = (rphirecHits.product())->find((detid));
207  MatDetMatch MDetMatch =(matchedrecHits.product())->find((detid));
208 
209 
210  long int DetID=(DetMatch != rphirecHits->end())? detid:0;
211 
212  if ((MDetMatch != matchedrecHits->end()) && !MDetMatch->empty()) {
213  long int pii = MDetMatch->begin()->monoId();
214  StDetMatch CDetMatch = (rphirecHits.product())->find((pii));
215  DetID=(CDetMatch != rphirecHits->end())? pii:0;
216 
217  }
218 
219  temp.push_back(DetID);
220 
221  }
222  else{
223  PiDetMatch DetMatch = (pixelHits.product())->find((detid));
224  long int DetID=(DetMatch != pixelHits->end())? detid:0;
225  temp.push_back(DetID);
226 
227 
228  }
229  }
230 
231  Idd.push_back(temp);
232 
233  }//END TRACKER LAYER LOOP
234  if(Idd.size()<2)continue;
235 
237  for (unsigned int i=0;i<Idd.size()-2;i++){
238  for (unsigned int i1=0;i1<Idd[i].size();i1++){
239  for (unsigned int i2=0;i2<Idd[i+1].size();i2++){
240  for (unsigned int i3=0;i3<Idd[i+2].size();i3++){
241  if ((Idd[i][i1]!=0) &&(Idd[i+1][i2]!=0) &&(Idd[i+2][i3]!=0) ){
242  vector<long int >tmp;
243  tmp.push_back(Idd[i][i1]); tmp.push_back(Idd[i+1][i2]); tmp.push_back(Idd[i+2][i3]);
244 
245  bool newTrip=true;
246  for (unsigned int iv=0;iv<tripl.size();iv++){
247  if((tripl[iv][0]==tmp[0])&&(tripl[iv][1]==tmp[1])&&(tripl[iv][2]==tmp[2])) newTrip=false;
248 
249  }
250  if (newTrip){
251 
252  tripl.push_back(tmp);
253  }
254  }
255  }
256  }
257  }
258  }
259  }//END BREM LOOP
260 
261  float sineta_brem =sinh(eta_br);
262 
263 
264  //OUTPUT COLLECTION
265 
267  OwnVector<TrackingRecHit> loc_hits;
268  for (unsigned int i=0;i<tripl.size();i++){
269  StDetMatch DetMatch1 = (rphirecHits.product())->find(tripl[i][0]);
270  StDetMatch DetMatch2 = (rphirecHits.product())->find(tripl[i][1]);
271  StDetMatch DetMatch3 = (rphirecHits.product())->find(tripl[i][2]);
272  if ((DetMatch1 == rphirecHits->end()) ||
273  (DetMatch2 == rphirecHits->end()) ||
274  (DetMatch3 == rphirecHits->end()) ) continue;
275  StDetSet DetSet1 = *DetMatch1;
276  StDetSet DetSet2 = *DetMatch2;
277  StDetSet DetSet3 = *DetMatch3;
278 
279  for (StDetSet::const_iterator it1=DetSet1.begin();it1!=DetSet1.end();++it1){
280  GlobalPoint gp1=tracker_->idToDet(tripl[i][0])->surface().
281  toGlobal(it1->localPosition());
282 
283  bool tak1=isGsfTrack(gsfRecHits,&(*it1));
284 
285  for (StDetSet::const_iterator it2=DetSet2.begin();it2!=DetSet2.end();++it2){
286  GlobalPoint gp2=tracker_->idToDet(tripl[i][1])->surface().
287  toGlobal(it2->localPosition());
288  bool tak2=isGsfTrack(gsfRecHits,&(*it2));
289 
290  for (StDetSet::const_iterator it3=DetSet3.begin();it3!=DetSet3.end();++it3){
291  // ips++;
292  GlobalPoint gp3=tracker_->idToDet(tripl[i][2])->surface().
293  toGlobal(it3->localPosition());
294  bool tak3=isGsfTrack(gsfRecHits,&(*it3));
295 
296 
297  FastHelix helix(gp3, gp2, gp1,iSetup);
299  GlobalVector gv_corr(gv.x(),gv.y(),gv.perp()*sineta_brem);
300  float ene= sqrt(gv_corr.mag2()+(pfmass*pfmass));
301 
303  float ch=helix.stateAtVertex().parameters().charge();
304 
305 
306 
307 
308  XYZTLorentzVector mom = XYZTLorentzVector(gv.x(),gv.y(),gv_corr.z(),ene);
309  XYZTLorentzVector pos = XYZTLorentzVector(gp.x(),gp.y(),gp.z(),0.);
310  BaseParticlePropagator theOutParticle(RawParticle(mom,pos),0,0,B_.z());
311  theOutParticle.setCharge(ch);
312  int bgc=GoodCluster(theOutParticle,PPP,0.3,true);
313 
314  if (gv.perp()<0.5) continue;
315 
316  if (tak1+tak2+tak3>2) continue;
317 
318  if (bgc==-1) continue;
319  bool clTak=false;
320  for (unsigned int igcc=0; igcc<gc.size(); igcc++){
321  if (clTak) continue;
322  if (bgc==gc[igcc]) clTak=true;
323  }
324  if (clTak) continue;
325 
326 
327 
328 
330  gv,int(ch),
331  &(*magfield_));
332  glob_hits.clear(); loc_hits.clear();
333  glob_hits.push_back(hitBuilder_->build(it1->clone()));
334  glob_hits.push_back(hitBuilder_->build(it2->clone()));
335  glob_hits.push_back(hitBuilder_->build(it3->clone()));
336 
338 
339  FreeTrajectoryState CSeed(Gtp,
341  TrajectoryStateOnSurface updatedState;
342 
343  for (int ih=0;ih<3;ih++){
344 
346  propagator_->propagate(CSeed,
347  tracker_->idToDet(tripl[i][ih])->surface()):
348  propagator_->propagate(updatedState,
349  tracker_->idToDet(tripl[i][ih])->surface());
350 
351  if (!state.isValid()){
352  ih=3;
353  continue;}
354 
355  updatedState = kfUpdator_->update(state, *glob_hits[ih]);
356  loc_hits.push_back(glob_hits[ih]->hit()->clone());
357  if (ih==2){
358  PTrajectoryStateOnDet const & PTraj=
359  trajectoryStateTransform::persistentState(updatedState,tripl[i][2]);
360  // output->push_back(Trajectoryseed(PTraj,loc_hits,alongMomentum));
361  unclean.push_back(make_pair(TrajectorySeed(PTraj,loc_hits,alongMomentum),
362  make_pair(gv_corr,ch)));
363  }
364  // }
365 
366  }
367  }
368  }
369  }
370  }
371  vector<bool> inPhot = sharedHits(unclean);
372  for (unsigned int iu=0; iu<unclean.size();iu++){
373 
374  if (inPhot[iu])
375  output->push_back(ConvBremSeed(unclean[iu].first,pft));
376 
377  }
378 
379  } //END GSF TRACK COLLECTION LOOP
380  LogDebug("ConvBremSeedProducerProducer")<<"END";
381  iEvent.put(output);
382 
383 }
384 
385 
386 void
388  const EventSetup& iSetup)
389 {
391  iSetup.get<TrackerRecoGeometryRecord>().get( track );
392  geomSearchTracker_ = track.product();
393 
394  ESHandle<TrackerInteractionGeometry> theTrackerInteractionGeometry;
395  iSetup.get<TrackerInteractionGeometryRecord>().get(theTrackerInteractionGeometry );
396  geometry_=theTrackerInteractionGeometry.product();
397 
399  iSetup.get<TrackerDigiGeometryRecord>().get(tracker);
400  tracker_=tracker.product();
401 
403  iSetup.get<IdealMagneticFieldRecord>().get(magfield);
404  magfield_=magfield.product();
405  B_=magfield_->inTesla(GlobalPoint(0,0,0));
406 
408  iSetup.get<MagneticFieldMapRecord>().get(fieldMap);
409  fieldMap_ =fieldMap.product();
410 
411 
412 
414  iSetup.get<TransientRecHitRecord>().get(conf_.getParameter<string>("TTRHBuilder"),hitBuilder);
415  hitBuilder_= hitBuilder.product();
416 
417  propagator_ = new PropagatorWithMaterial(alongMomentum,0.0005,&(*magfield) );
418  kfUpdator_ = new KFUpdator();
419 }
420 
421 void
423  delete propagator_;
424  delete kfUpdator_;
425 }
426 
427 void
429 {
430 
431 
432  // These are the BoundSurface&, the BoundDisk* and the BoundCylinder* for that layer
433  // const BoundSurface& theSurface = layer.surface();
434  // BoundDisk* theDisk = layer.disk(); // non zero for endcaps
435  // BoundCylinder* theCylinder = layer.cylinder(); // non zero for barrel
436  // int theLayer = layer.layerNumber(); // 1->3 PixB, 4->5 PixD,
437  // // 6->9 TIB, 10->12 TID,
438  // // 13->18 TOB, 19->27 TEC
439 
442 
443  std::vector< BarrelDetLayer*> barrelLayers =
445  LogDebug("FastTracker") << "Barrel DetLayer dump: ";
446  for (std::vector< BarrelDetLayer*>::const_iterator bl=barrelLayers.begin();
447  bl != barrelLayers.end(); ++bl) {
448  LogDebug("FastTracker")<< "radius " << (**bl).specificSurface().radius();
449  }
450 
451  std::vector< ForwardDetLayer*> posForwardLayers =
453  LogDebug("FastTracker") << "Positive Forward DetLayer dump: ";
454  for (std::vector< ForwardDetLayer*>::const_iterator fl=posForwardLayers.begin();
455  fl != posForwardLayers.end(); ++fl) {
456  LogDebug("FastTracker") << "Z pos "
457  << (**fl).surface().position().z()
458  << " radii "
459  << (**fl).specificSurface().innerRadius()
460  << ", "
461  << (**fl).specificSurface().outerRadius();
462  }
463 
464  const float rTolerance = 1.5;
465  const float zTolerance = 3.;
466 
467  LogDebug("FastTracker")<< "Dump of TrackerInteractionGeometry cylinders:";
468  for( std::list<TrackerLayer>::const_iterator i=geometry_->cylinderBegin();
469  i!=geometry_->cylinderEnd(); ++i) {
470  const BoundCylinder* cyl = i->cylinder();
471  const BoundDisk* disk = i->disk();
472 
473  LogDebug("FastTracker") << "Famos Layer no " << i->layerNumber()
474  << " is sensitive? " << i->sensitive()
475  << " pos " << i->surface().position();
476  if (!i->sensitive()) continue;
477 
478  if (cyl != 0) {
479 
480  LogDebug("FastTracker") << " cylinder radius " << cyl->radius();
481  bool found = false;
482 
483  for (std::vector< BarrelDetLayer*>::const_iterator
484  bl=barrelLayers.begin(); bl != barrelLayers.end(); ++bl) {
485 
486  if (fabs( cyl->radius() - (**bl).specificSurface().radius()) < rTolerance) {
487 
488  layerMap_[i->layerNumber()] = *bl;
489  found = true;
490  LogDebug("FastTracker")<< "Corresponding DetLayer found with radius "
491  << (**bl).specificSurface().radius();
492 
493  break;
494  }
495  }
496  if (!found) {
497  LogError("FastTracker") << "FAILED to find a corresponding DetLayer!";
498  }
499  }
500  else {
501  LogDebug("FastTracker") << " disk radii " << disk->innerRadius()
502  << ", " << disk->outerRadius();
503 
504  bool found = false;
505 
506  for (std::vector< ForwardDetLayer*>::const_iterator fl=posForwardLayers.begin();
507  fl != posForwardLayers.end(); ++fl) {
508  if (fabs( disk->position().z() - (**fl).surface().position().z()) < zTolerance) {
509  layerMap_[i->layerNumber()] = *fl;
510  found = true;
511  LogDebug("FastTracker") << "Corresponding DetLayer found with Z pos "
512  << (**fl).surface().position().z()
513  << " and radii "
514  << (**fl).specificSurface().innerRadius()
515  << ", "
516  << (**fl).specificSurface().outerRadius();
517  break;
518  }
519  }
520  if (!found) {
521  LogError("FastTracker") << "FAILED to find a corresponding DetLayer!";
522  }
523  }
524  }
525 
526 }
527 const DetLayer* ConvBremSeedProducer::detLayer( const TrackerLayer& layer, float zpos) const
528 {
529  if (zpos > 0 || !layer.forward() ) return layerMap_[layer.layerNumber()];
530  else return layerMap_[layer.layerNumber()+negLayerOffset_];
531 }
532 
535  const ParticlePropagator& pp,
536  const MagneticField* field) const
537 {
538 
539  GlobalPoint pos( pp.X(), pp.Y(), pp.Z());
540  GlobalVector mom( pp.Px(), pp.Py(), pp.Pz());
541 
543 
545  (GlobalTrajectoryParameters( pos, mom, TrackCharge( pp.charge()), field), *plane);
546 }
549  trackingRecHit_iterator ie=tkv.end();
550  bool istaken=false;
551  // for (;ib!=ie-2;++ib){
552  for (;ib!=ie;++ib){
553  if (istaken) continue;
554  if (!((*ib)->isValid())) continue;
555 
556  istaken = (*ib)->sharesInput(h,TrackingRecHit::all);
557  }
558  return istaken;
559 }
561  pair<GlobalVector,float> > > unclean){
562 
563  vector<bool> goodseed;
564  goodseed.clear();
565  if (unclean.size()<2){
566  for (unsigned int i=0;i<unclean.size();i++)
567  goodseed.push_back(true);
568  }else{
569 
570  for (unsigned int i=0;i<unclean.size();i++)
571  goodseed.push_back(true);
572 
573  for (unsigned int iu=0; iu<unclean.size()-1;iu++){
574  if (!goodseed[iu]) continue;
575  for (unsigned int iu2=iu+1; iu2<unclean.size();iu2++){
576  if (!goodseed[iu]) continue;
577  if (!goodseed[iu2]) continue;
578  // if (unclean[iu].second.second *unclean[iu2].second.second >0)continue;
579 
580  TrajectorySeed::const_iterator sh = unclean[iu].first.recHits().first;
581  TrajectorySeed::const_iterator sh_end = unclean[iu].first.recHits().second;
582 
583  unsigned int shar =0;
584  for (;sh!=sh_end;++sh){
585 
586  TrajectorySeed::const_iterator sh2 = unclean[iu2].first.recHits().first;
587  TrajectorySeed::const_iterator sh2_end = unclean[iu2].first.recHits().second;
588  for (;sh2!=sh2_end;++sh2){
589 
590  if ((*sh).sharesInput(&(*sh2),TrackingRecHit::all))
591 
592  shar++;
593 
594  }
595  }
596  if (shar>=2){
597  if (unclean[iu].second.first.perp()<unclean[iu2].second.first.perp()) goodseed[iu]=false;
598  else goodseed[iu2]=false;
599  }
600 
601  }
602 
603  }
604  }
605  return goodseed;
606 }
607 
608 
609 
611 
612  bpg.propagateToEcalEntrance(false);
613  float dr=1000;
614  float de=1000;
615  float df=1000;
616  int ibest=-1;
617 
618  if(bpg.getSuccess()!=0){
619 
620  for (unsigned int i =0; i<pfc.size();i++ ){
621  float tmp_ep=pfc[i].energy()/bpg.momentum().e();
622  float tmp_phi=fabs(pfc[i].position().phi()-bpg.vertex().phi());
623  if (tmp_phi>TMath::TwoPi()) tmp_phi-= TMath::TwoPi();
624  float tmp_eta=fabs(pfc[i].position().eta()-bpg.vertex().eta());
625  float tmp_dr=sqrt(pow(tmp_phi,2)+pow(tmp_eta,2));
626  bool isBet=(tmp_dr<dr);
627  if (sec) isBet=(tmp_phi<df);
628  if ((isBet)&&(tmp_ep>minep)&&(tmp_ep<10)){
629  dr=tmp_dr;
630  de=tmp_eta;
631  df=tmp_phi;
632  ibest=i;
633  }
634  }
635  bool isBad=(dr>0.1);
636  if (sec) isBad= ((df>0.25) || (de>0.5));
637 
638  if (isBad) ibest=-1;
639 
640  }
641  return ibest;
642 }
643 
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:42
const double TwoPi
const MagneticField * magfield_
void setCharge(float q)
set the MEASURED charge
Definition: RawParticle.cc:138
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:44
const GeometricSearchTracker * geomSearchTracker_
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
int i
Definition: DBlmapReader.cc:9
FTS stateAtVertex() const
Definition: FastHelix.cc:7
std::vector< bool > sharedHits(std::vector< std::pair< TrajectorySeed, std::pair< GlobalVector, float > > >)
const TransientTrackingRecHitBuilder * hitBuilder_
ConvBremSeedProducer(const edm::ParameterSet &)
T perp() const
Definition: PV3DBase.h:71
SiStripMatchedRecHit2DCollection::const_iterator MatDetMatch
tuple pp
Definition: createTree.py:15
const GlobalTrajectoryParameters & parameters() const
unsigned int layerNumber() const
Returns the layer number.
Definition: TrackerLayer.h:82
bool forward() const
Is the layer forward ?
Definition: TrackerLayer.h:70
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
edm::ParameterSet conf_
tuple magfield
Definition: HLT_ES_cff.py:2311
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
const PropagatorWithMaterial * propagator_
T y() const
Definition: PV3DBase.h:62
virtual SubDetector subDetector() const =0
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)
std::list< TrackerLayer >::const_iterator cylinderEnd() const
Returns the last pointer in the cylinder list.
int getSuccess() const
Has propagation been performed and was barrel or endcap reached ?
TrajectoryStateOnSurface makeTrajectoryState(const DetLayer *layer, const ParticlePropagator &pp, const MagneticField *field) const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
data_type const * const_iterator
Definition: DetSetNew.h:25
T eta() const
const_iterator end() const
Termination of iteration.
Definition: RefVector.h:249
std::vector< ConvBremSeed > ConvBremSeedCollection
collectin of ConvBremSeed objects
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
const_iterator begin() const
Initialize an iterator over the RefVector.
Definition: RefVector.h:244
SiPixelRecHitCollection::const_iterator PiDetMatch
const KFUpdator * kfUpdator_
const TrackerInteractionGeometry * geometry_
const MagneticFieldMap * fieldMap_
U second(std::pair< T, U > const &p)
std::vector< BarrelDetLayer * > const & barrelLayers() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:30
int TrackCharge
Definition: TrackCharge.h:4
void push_back(D *&d)
Definition: OwnVector.h:273
int iEvent
Definition: GenABIO.cc:243
const XYZTLorentzVector & momentum() const
the momentum fourvector
Definition: RawParticle.h:285
math::XYZVector B_
B field.
Scalar radius() const
Radius of the cylinder.
Definition: Cylinder.h:55
std::vector< GsfPFRecTrack > GsfPFRecTrackCollection
collection of GsfPFRecTrack objects
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
recHitContainer::const_iterator const_iterator
T sqrt(T t)
Definition: SSEVec.h:46
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
T z() const
Definition: PV3DBase.h:63
double Y() const
y of vertex
Definition: RawParticle.h:274
void clear()
Definition: OwnVector.h:370
double Z() const
z of vertex
Definition: RawParticle.h:275
void setPropagationConditions(const TrackerLayer &, bool firstLoop=true)
double charge() const
get the MEASURED charge
Definition: RawParticle.h:281
bool first
Definition: L1TdeRCT.cc:94
virtual const GeomDet * idToDet(DetId) const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
bool propagateToEcalEntrance(bool first=true)
std::vector< const DetLayer * > layerMap_
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
std::vector< ConstRecHitPointer > ConstRecHitContainer
const XYZTLorentzVector & vertex() const
the vertex fourvector
Definition: RawParticle.h:284
virtual ReferenceCountingPointer< TangentPlane > tangentPlane(const GlobalPoint &) const =0
std::vector< ForwardDetLayer * > const & posForwardLayers() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
const DetLayer * detLayer(const TrackerLayer &layer, float zpos) const
const T & get() const
Definition: EventSetup.h:55
int GoodCluster(BaseParticlePropagator bpg, const reco::PFClusterCollection &pfc, float minep, bool sec=false)
T const * product() const
Definition: ESHandle.h:62
std::list< TrackerLayer >::const_iterator cylinderBegin() const
Returns the first pointer in the cylinder list.
string const
Definition: compareJSON.py:14
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
T const * product() const
Definition: Handle.h:74
double X() const
x of vertex
Definition: RawParticle.h:273
char state
Definition: procUtils.cc:75
virtual void produce(edm::Event &, const edm::EventSetup &)
double getMagneticField() const
Get the magnetic field.
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
edm::EventID id() const
Definition: EventBase.h:56
iterator end()
Definition: DetSetNew.h:59
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
Definition: KFUpdator.cc:10
static int position[264][3]
Definition: ReadPGInfo.cc:509
SiStripRecHit2DCollection::const_iterator StDetMatch
float outerRadius() const
The outer radius of the disk.
Definition: BoundDisk.h:75
std::vector< PFCluster > PFClusterCollection
collection of PFCluster objects
Definition: PFClusterFwd.h:9
float innerRadius() const
The inner radius of the disk.
Definition: BoundDisk.h:72
bool isGsfTrack(TrackingRecHitRefVector, const TrackingRecHit *)
const TrackerGeometry * tracker_
T x() const
Definition: PV3DBase.h:61
const PositionType & position() const
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
virtual void beginRun(edm::Run &, const edm::EventSetup &)
Definition: Run.h:33
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:15
Definition: DDAxes.h:10
iterator begin()
Definition: DetSetNew.h:56