CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AlCaIsoTracksProducer.cc
Go to the documentation of this file.
17 
21 
23 
27 
30 
32 
35 
36 #include "Math/GenVector/VectorUtil.h"
37 #include "Math/GenVector/PxPyPzE4D.h"
38 
41 
43 
45 
46 #include <boost/regex.hpp>
47 
48 double getDistInCM(double eta1, double phi1, double eta2, double phi2)
49 {
50  double dR, Rec;
51  double theta1=2*atan(exp(-eta1));
52  double theta2=2*atan(exp(-eta2));
53  if (fabs(eta1)<1.479) Rec=129; //radius of ECAL barrel
54  else Rec=tan(theta1)*317; //distance from IP to ECAL endcap
55 
56  //|vect| times tg of acos(scalar product)
57  double angle=acos((sin(theta1)*sin(theta2)*(sin(phi1)*sin(phi2)+cos(phi1)*cos(phi2))+cos(theta1)*cos(theta2)));
58  if (angle<acos(-1)/2)
59  {
60  dR=fabs((Rec/sin(theta1))*tan(angle));
61  return dR;
62  }
63  else return 1000;
64 }
65 
66 double getDist(double eta1, double phi1, double eta2, double phi2)
67 {
68  double dphi = fabs(phi1 - phi2);
69  if(dphi>acos(-1)) dphi = 2*acos(-1)-dphi;
70  double dr = sqrt(dphi*dphi + std::pow(eta1-eta2,2));
71  return dr;
72 }
73 
74 bool checkHLTMatch(edm::Event& iEvent, edm::InputTag hltEventTag_, std::vector<std::string> hltFilterTag_, double eta, double phi, double hltMatchingCone_)
75 {
76  bool match =false;
77  double minDDD=1000;
78 
80  iEvent.getByLabel(hltEventTag_,trEv);
81  const trigger::TriggerObjectCollection& TOCol(trEv->getObjects());
82 
83  trigger::Keys KEYS;
84  const trigger::size_type nFilt(trEv->sizeFilters());
85  for (trigger::size_type iFilt=0; iFilt!=nFilt; iFilt++)
86  {
87  for (unsigned l=0; l<hltFilterTag_.size(); l++)
88  {
89  if ((trEv->filterTag(iFilt).label()).substr(0,27)==hltFilterTag_[l])
90  {
91  KEYS=trEv->filterKeys(iFilt);
92  }
93  }
94  }
95  trigger::size_type nReg=KEYS.size();
96  for (trigger::size_type iReg=0; iReg<nReg; iReg++)
97  {
98  const trigger::TriggerObject& TObj(TOCol[KEYS[iReg]]);
99  double dHit=getDist(TObj.eta(),TObj.phi(),eta,phi);
100  if (dHit<minDDD) minDDD=dHit;
101  }
102  if (minDDD>hltMatchingCone_) match=false;
103  else match=true;
104 
105  return match;
106 }
107 
108 std::pair<double,double> getL1triggerDirection(edm::Event& iEvent, edm::InputTag hltEventTag_, std::string l1FilterTag_)
109 {
111  iEvent.getByLabel(hltEventTag_,trEv);
112  const trigger::TriggerObjectCollection& TOCol(trEv->getObjects());
113 
114  trigger::Keys KEYS;
115  const trigger::size_type nFilt(trEv->sizeFilters());
116  for (trigger::size_type iFilt=0; iFilt!=nFilt; iFilt++)
117  {
118  if ((trEv->filterTag(iFilt).label()).substr(0,14)==l1FilterTag_) KEYS=trEv->filterKeys(iFilt);
119  }
120  trigger::size_type nReg=KEYS.size();
121  double etaTrig=-10000;
122  double phiTrig=-10000;
123  double ptMax=0;
124  for (trigger::size_type iReg=0; iReg<nReg; iReg++)
125  {
126  const trigger::TriggerObject& TObj(TOCol[KEYS[iReg]]);
127  if (TObj.pt()>ptMax)
128  {
129  etaTrig=TObj.eta();
130  phiTrig=TObj.phi();
131  ptMax=TObj.pt();
132  }
133  }
134  return std::pair<double,double>(etaTrig,phiTrig);
135 }
136 
137 
139 {
140 
141  m_inputTrackLabel_ = iConfig.getParameter<edm::InputTag>("InputTracksLabel");
142 
143  hoLabel_ = iConfig.getParameter<edm::InputTag>("HOInput");
144 
145  ecalLabels_=iConfig.getParameter<std::vector<edm::InputTag> >("ECALInputs");
146 
147  hbheLabel_= iConfig.getParameter<edm::InputTag>("HBHEInput");
148 
149  m_dvCut = iConfig.getParameter<double>("vtxCut");
150  m_ddirCut = iConfig.getParameter<double>("RIsolAtHCALSurface");
151  useConeCorr_=iConfig.getParameter<bool>("UseLowPtConeCorrection");
152  m_pCut = iConfig.getParameter<double>("MinTrackP");
153  m_ptCut = iConfig.getParameter<double>("MinTrackPt");
154  m_ecalCut = iConfig.getUntrackedParameter<double>("NeutralIsolCut",8.);
155 
156  taECALCone_=iConfig.getUntrackedParameter<double>("TrackAssociatorECALCone",0.5);
157  taHCALCone_=iConfig.getUntrackedParameter<double>("TrackAssociatorHCALCone",1.0);
158 
159  skipNeutrals_=iConfig.getUntrackedParameter<bool>("SkipNeutralIsoCheck",false);
160 
161  nHitsMinCore_=iConfig.getParameter<int>("MinNumberOfHitsCoreTrack");
162  nHitsMinIso_=iConfig.getParameter<int>("MinNumberOfHitsInConeTracks");
163 
164  isolE_ = iConfig.getParameter<double>("MaxNearbyTrackEnergy");
165  etaMax_= iConfig.getParameter<double>("MaxTrackEta");
166  cluRad_ = iConfig.getParameter<double>("ECALClusterRadius");
167  ringOutRad_ = iConfig.getParameter<double>("ECALRingOuterRadius");
168  ringInnRad_=iConfig.getParameter<double>("ECALRingInnerRadius");
169 
170  useECALCluMatrix_=iConfig.getParameter<bool>("ClusterECALasMatrix");
171  matrixSize_=iConfig.getParameter<int>("ECALMatrixFullSize");
172 
173  checkHLTMatch_=iConfig.getParameter<bool>("CheckHLTMatch");
174  hltEventTag_=iConfig.getParameter<edm::InputTag>("hltTriggerEventLabel");
175  hltFiltTag_=iConfig.getParameter<std::vector<std::string> >("hltL3FilterLabels");
176  hltMatchingCone_=iConfig.getParameter<double>("hltMatchingCone");
177  l1FilterTag_=iConfig.getParameter<std::string>("l1FilterLabel");
178  l1jetVetoCone_=iConfig.getParameter<double>("l1JetVetoCone");
179 
181 //
182 // Parameters for track associator ===========================
183 //
184  edm::ParameterSet parameters = iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
185  parameters_.loadParameters( parameters );
187 // ===============================================================
188 
189  //create also IsolatedPixelTrackCandidateCollection which contains isolation info and reference to primary track
190  produces<reco::IsolatedPixelTrackCandidateCollection>("HcalIsolatedTrackCollection");
191 
192  produces<reco::TrackCollection>("IsoTrackTracksCollection");
193  produces<reco::TrackExtraCollection>("IsoTrackExtraTracksCollection");
194 
195  produces<EcalRecHitCollection>("IsoTrackEcalRecHitCollection");
196  produces<EcalRecHitCollection>("IsoTrackPSEcalRecHitCollection");
197 
198  produces<HBHERecHitCollection>("IsoTrackHBHERecHitCollection");
199  produces<HORecHitCollection>("IsoTrackHORecHitCollection");
200 
201 }
202 
203 
205 
206 
208 {
209  std::auto_ptr<reco::IsolatedPixelTrackCandidateCollection> outputHcalIsoTrackColl(new reco::IsolatedPixelTrackCandidateCollection);
210  std::auto_ptr<reco::TrackCollection> outputTColl(new reco::TrackCollection);
211  std::auto_ptr<reco::TrackExtraCollection> outputExTColl(new reco::TrackExtraCollection);
212 
213  reco::TrackExtraRefProd rTrackExtras = iEvent.getRefBeforePut<reco::TrackExtraCollection>("IsoTrackExtraTracksCollection");
214  std::auto_ptr<EcalRecHitCollection> outputEColl(new EcalRecHitCollection);
215  std::auto_ptr<EcalRecHitCollection> outputESColl(new EcalRecHitCollection);
216  std::auto_ptr<HBHERecHitCollection> outputHColl(new HBHERecHitCollection);
217  std::auto_ptr<HORecHitCollection> outputHOColl(new HORecHitCollection);
218 
220  iSetup.get<CaloGeometryRecord>().get(pG);
221  geo = pG.product();
222 
223  edm::Handle<reco::TrackCollection> trackCollection;
224  iEvent.getByLabel(m_inputTrackLabel_,trackCollection);
225 
226 
227  // temporary collection of EB+EE recHits
228  std::auto_ptr<EcalRecHitCollection> tmpEcalRecHitCollection(new EcalRecHitCollection);
229 
230  std::vector<edm::InputTag>::const_iterator i;
231  for (i=ecalLabels_.begin(); i!=ecalLabels_.end(); i++)
232  {
234  iEvent.getByLabel(*i,ec);
235  for(EcalRecHitCollection::const_iterator recHit = (*ec).begin(); recHit != (*ec).end(); ++recHit)
236  {
237  tmpEcalRecHitCollection->push_back(*recHit);
238  }
239  }
240 
242  iEvent.getByLabel(hbheLabel_, hbheRHcol);
243 
244  const reco::TrackCollection tC = *(trackCollection.product());
245 
246  int itrk=0;
247  int nisotr=0;
249 
250  // Parameters for TrackDetAssociator ================================
251  // For Low momentum tracks need to look for larger cone for search ====
252  // ====================================================================
253 
254  parameters_.useEcal = true;
255  parameters_.useHcal = true;
256  parameters_.useCalo = false;
257  parameters_.useMuon = false;
260 
262 
264  std::vector<HcalDetId> usedHitsHC;
265  std::vector<int> usedHitsEC;
267 
268  // main loop over input tracks
269  for (reco::TrackCollection::const_iterator track=tC.begin(); track!=tC.end(); track++) {
270  bool noChargedTracks = true;
271  int itrk1=0;
272  itrk++;
273  double px = track->px();
274  double py = track->py();
275  double pz = track->pz();
276  double ptrack = sqrt(px*px+py*py+pz*pz);
277 
278  if (ptrack < m_pCut || track->pt() < m_ptCut ) continue;
279 
280  if (track->hitPattern().numberOfValidHits() < nHitsMinCore_) continue;
281 
282  // check that track is not in the region of L1 jet
283  double l1jDR=deltaR(track->eta(), track->phi(), getL1triggerDirection(iEvent,hltEventTag_,l1FilterTag_).first,getL1triggerDirection(iEvent,hltEventTag_,l1FilterTag_).second);
284  if (l1jDR<l1jetVetoCone_) continue;
286 
288 
289  GlobalPoint gPointHcal(info.trkGlobPosAtHcal.x(),info.trkGlobPosAtHcal.y(),info.trkGlobPosAtHcal.z());
290 
291  GlobalVector trackMomAtHcal = info.trkMomAtHcal;
292 
293  double etaecal=info.trkGlobPosAtEcal.eta();
294  double phiecal=info.trkGlobPosAtEcal.phi();
295 
296  if (etaecal==0&&phiecal==0) continue;
297 
298  //check matching to HLT object (optional)
299 
300  if (checkHLTMatch_&&!checkHLTMatch(iEvent, hltEventTag_, hltFiltTag_, etaecal, phiecal,hltMatchingCone_)) continue;
301 
302  if (fabs(track->eta())>etaMax_) continue;
303 
304  // check charged isolation from all other tracks
305  double maxPNearby=-10;
306  double sumPNearby=0;
307  for (reco::TrackCollection::const_iterator track1=tC.begin(); track1!=tC.end(); track1++)
308  {
309  itrk1++;
310  if (track == track1) continue;
311  if (track->hitPattern().numberOfValidHits() < nHitsMinIso_) continue;
312  double ptrack1 = sqrt(track1->px()*track1->px()+track1->py()*track1->py()+track1->pz()*track1->pz());
313 
315 
316  GlobalPoint gPointHcal1(info1.trkGlobPosAtHcal.x(),info1.trkGlobPosAtHcal.y(),info1.trkGlobPosAtHcal.z());
317 
318  double etaecal1=info1.trkGlobPosAtEcal.eta();
319  double phiecal1=info1.trkGlobPosAtEcal.phi();
320 
321  if (etaecal1==0&&phiecal1==0) continue;
322 
323  double hcDist=getDistInPlaneTrackDir(gPointHcal, trackMomAtHcal, gPointHcal1);
324 
325 // double hcDist=getDistInCM(etaecal,phiecal,etaecal1,phiecal1);
326 
327  // increase required separation for low momentum tracks
328  double factor=1.;
329  double factor1=1.;
330 
331  if (useConeCorr_)
332  {
333  if(ptrack<10.)factor+=(10.-ptrack)/20.;
334  if(ptrack1<10.)factor1+=(10.-ptrack1)/20.;
335  }
336 
337  if( hcDist < m_ddirCut*factor*factor1 )
338  {
339  //calculate maximum P and sum P near seed track
340  if (track1->p()>maxPNearby)
341  {
342  maxPNearby=track1->p();
343  }
344  sumPNearby+=track1->p();
345 
346  //apply loose isolation criteria
347  if (track1->p()>isolE_)
348  {
349  noChargedTracks = false;
350  break;
351  }
353  }
354 
355  } //second track loop
356 
357  bool noNeutrals = false;
358 
359  // we have a good charge-isolated track, so check neutral isolation and write it out
360 
361  if(noChargedTracks)
362  {
363  //find ecal cluster energy and write ecal recHits
364  double ecClustR=0;
365  double ecClustN=0;
366  double ecOutRingR=0;
367 
368  //get index of ECAL crystal hit by track
369  std::vector<const EcalRecHit*> crossedECids=info.crossedEcalRecHits;
370  int etaIDcenter=-10000;
371  int phiIDcenter=-10000;
372  double enMax=0;
373  for (unsigned int i=0; i<crossedECids.size(); i++)
374  {
375  if ((*crossedECids[i]).id().subdetId()==EcalEndcap)
376  {
377  EEDetId did(crossedECids[i]->id());
378  if (crossedECids[i]->energy()>enMax)
379  {
380  enMax=crossedECids[i]->energy();
381  etaIDcenter=did.iy();
382  phiIDcenter=did.ix();
383  }
384  }
385  if ((*crossedECids[i]).id().subdetId()==EcalBarrel)
386  {
387  EBDetId did(crossedECids[i]->id());
388  if (crossedECids[i]->energy()>enMax)
389  {
390  enMax=crossedECids[i]->energy();
391  etaIDcenter=did.ieta();
392  phiIDcenter=did.iphi();
393  }
394  }
395  }
396  for (std::vector<EcalRecHit>::const_iterator ehit=tmpEcalRecHitCollection->begin(); ehit!=tmpEcalRecHitCollection->end(); ehit++)
397  {
399  // R scheme of ECAL CLUSTERIZATION
400  GlobalPoint posH = geo->getPosition((*ehit).detid());
401  double phihit = posH.phi();
402  double etahit = posH.eta();
403 
404  double dHit=deltaR(etaecal,phiecal,etahit,phihit);
405 
406  double dHitCM=getDistInPlaneTrackDir(gPointHcal, trackMomAtHcal, posH);
407 
408  if (dHitCM<cluRad_)
409  {
410  ecClustR+=ehit->energy();
411  }
412 
413  if (dHitCM>ringInnRad_&&dHitCM<ringOutRad_)
414  {
415  ecOutRingR+=ehit->energy();
416  }
417 
419  //NxN scheme & check whether hit was used or not, if not used push into usedHits
420  bool hitIsUsed=false;
421  int hitHashedIndex=-10000;
422  if (ehit->id().subdetId()==EcalBarrel)
423  {
424  EBDetId did(ehit->id());
425  hitHashedIndex=did.hashedIndex();
426  if (fabs(did.ieta()-etaIDcenter)<=matrixSize_/2&&fabs(did.iphi()-phiIDcenter)<=matrixSize_/2) ecClustN+=ehit->energy();
427  }
428 
429  if (ehit->id().subdetId()==EcalEndcap)
430  {
431  EEDetId did(ehit->id());
432  hitHashedIndex=did.hashedIndex();
433  if (fabs(did.iy()-etaIDcenter)<=matrixSize_/2&&fabs(did.ix()-phiIDcenter)<=matrixSize_/2) ecClustN+=ehit->energy();
434  }
435  for (uint32_t i=0; i<usedHitsEC.size(); i++)
436  {
437  if (usedHitsEC[i]==hitHashedIndex) hitIsUsed=true;
438  }
439 
440  if (hitIsUsed) continue; //skip if used
441  usedHitsEC.push_back(hitHashedIndex);
443 
444  if(dHit<1.)
445  {
446  outputEColl->push_back(*ehit);
447  }
448  }
449 
450  //check neutrals
451  if (ecOutRingR<m_ecalCut) noNeutrals=true;
452  else noNeutrals=false;
453 
454  if (noNeutrals||skipNeutrals_)
455  {
456 
457  // Take info on the track extras and keep it in the outercollection
458 
459  reco::TrackExtraRef myextra = (*track).extra();
460  reco::TrackExtraRef teref= reco::TrackExtraRef ( rTrackExtras, idx ++ );
461 
462  outputTColl->push_back(*track);
463  reco::Track & mytrack = outputTColl->back();
464 
465  mytrack.setExtra( teref );
466  outputExTColl->push_back(*myextra);
467  // reco::TrackExtra & tx = outputExTColl->back();
468 
469  //Create IsolatedPixelTrackCandidate (will change naming in future release)
470  reco::IsolatedPixelTrackCandidate newHITCandidate(reco::Candidate::LorentzVector(track->px(),track->py(),track->pz(),track->p()));
471  newHITCandidate.SetSumPtPxl(sumPNearby);
472  newHITCandidate.SetMaxPtPxl(maxPNearby);
473 
474  //set cluster energy deposition and ring energy deposition and push_back
475  if (!useECALCluMatrix_) newHITCandidate.SetEnergyIn(ecClustR);
476  else newHITCandidate.SetEnergyIn(ecClustN);
477  newHITCandidate.SetEnergyOut(ecOutRingR);
478  outputHcalIsoTrackColl->push_back(newHITCandidate);
479 
480  //save hcal recHits
481  for (std::vector<HBHERecHit>::const_iterator hhit=hbheRHcol->begin(); hhit!=hbheRHcol->end(); hhit++)
482  {
483  //check that this hit was not considered before and push it into usedHits
484  bool hitIsUsed=false;
485  for (uint32_t i=0; i<usedHitsHC.size(); i++)
486  {
487  if (usedHitsHC[i]==hhit->id()) hitIsUsed=true;
488  }
489  if (hitIsUsed) continue;
490  usedHitsHC.push_back(hhit->id());
492 
493  GlobalPoint posH = geo->getPosition((*hhit).detid());
494  double phihit = posH.phi();
495  double etahit = posH.eta();
496 
497  double dHit=deltaR(etaecal,phiecal,etahit,phihit);
498 
499  if(dHit<1.)
500 
501  {
502  outputHColl->push_back(*hhit);
503  }
504  }
505  }
506 
507  nisotr++;
508 
509  } //if (noNeutrals....
510 
511  } // end of main track loop
512 
513  if(outputTColl->size() > 0)
514  {
515  // Take HO collection
517  iEvent.getByLabel(hoLabel_,ho);
518 
519  const HORecHitCollection Hitho = *(ho.product());
520  for(HORecHitCollection::const_iterator hoItr=Hitho.begin(); hoItr!=Hitho.end(); hoItr++)
521  {
522  outputHOColl->push_back(*hoItr);
523  }
524 
525  // Take Preshower collection
526 
527  // get the ps geometry
528  edm::ESHandle<CaloGeometry> geoHandle;
529  iSetup.get<CaloGeometryRecord>().get(geoHandle);
530 
531  // get the ps topology
532  EcalPreshowerTopology psTopology(geoHandle);
533 
534  // process rechits
536  iEvent.getByLabel("ecalPreshowerRecHit","EcalRecHitsES",pRecHits);
537  const EcalRecHitCollection& psrechits = *(pRecHits.product());
538 
540 
541  for(IT i=psrechits.begin(); i!=psrechits.end(); i++)
542  {
543  outputESColl->push_back( *i );
544  }
545  }
546 
547  iEvent.put( outputHcalIsoTrackColl, "HcalIsolatedTrackCollection");
548  iEvent.put( outputTColl, "IsoTrackTracksCollection");
549  iEvent.put( outputExTColl, "IsoTrackExtraTracksCollection");
550  iEvent.put( outputEColl, "IsoTrackEcalRecHitCollection");
551  iEvent.put( outputESColl, "IsoTrackPSEcalRecHitCollection");
552  iEvent.put( outputHColl, "IsoTrackHBHERecHitCollection");
553  iEvent.put( outputHOColl, "IsoTrackHORecHitCollection");
554 }
555 
557 
T getParameter(std::string const &) const
std::vector< std::string > hltFiltTag_
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
dictionary parameters
Definition: Parameters.py:2
int hashedIndex() const
get a compact index for arrays
Definition: EBDetId.h:87
int ix() const
Definition: EEDetId.h:77
AlCaIsoTracksProducer(const edm::ParameterSet &)
double getDist(double eta1, double phi1, double eta2, double phi2)
TrackDetectorAssociator trackAssociator_
virtual void produce(edm::Event &, const edm::EventSetup &)
float phi() const
Definition: TriggerObject.h:60
static FreeTrajectoryState getFreeTrajectoryState(const edm::EventSetup &, const reco::Track &)
get FreeTrajectoryState from different track representations
double getDistInPlaneTrackDir(const GlobalPoint caloPoint, const GlobalVector caloVector, const GlobalPoint rechitPoint)
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
void useDefaultPropagator()
use the default propagator
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
const CaloGeometry * geo
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:10
std::vector< EcalRecHit >::const_iterator const_iterator
void push_back(T const &t)
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
Definition: TrackExtraFwd.h:13
std::pair< double, double > getL1triggerDirection(edm::Event &iEvent, edm::InputTag hltEventTag_, std::string l1FilterTag_)
float eta() const
Definition: TriggerObject.h:59
T eta() const
std::vector< const EcalRecHit * > crossedEcalRecHits
hits in detector elements crossed by a track
uint16_t size_type
math::XYZPoint trkGlobPosAtHcal
int iphi() const
get the crystal iphi
Definition: EBDetId.h:54
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:24
double getDistInCM(double eta1, double phi1, double eta2, double phi2)
int iEvent
Definition: GenABIO.cc:243
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:94
T sqrt(T t)
Definition: SSEVec.h:48
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
const GlobalPoint & getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:68
std::vector< IsolatedPixelTrackCandidate > IsolatedPixelTrackCandidateCollection
collectin of IsolatedPixelTrackCandidate objects
int iy() const
Definition: EEDetId.h:83
int ieta() const
get the crystal ieta
Definition: EBDetId.h:52
std::vector< LinkConnSpec >::const_iterator IT
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
RefProd< PROD > getRefBeforePut()
Definition: Event.h:106
const_iterator end() const
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:83
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:9
void setExtra(const TrackExtraRef &ref)
set reference to &quot;extra&quot; object
Definition: Track.h:95
std::vector< edm::InputTag > ecalLabels_
int hashedIndex() const
Definition: EEDetId.h:183
bool checkHLTMatch(edm::Event &iEvent, edm::InputTag hltEventTag_, std::vector< std::string > hltFilterTag_, double eta, double phi, double hltMatchingCone_)
std::vector< size_type > Keys
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
T const * product() const
Definition: Handle.h:74
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:41
T eta() const
Definition: PV3DBase.h:76
GlobalVector trkMomAtHcal
TrackAssociatorParameters parameters_
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
math::XYZPoint trkGlobPosAtEcal
Track position at different parts of the calorimeter.
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:6
boost::remove_cv< typename boost::remove_reference< argument_type >::type >::type key_type
Definition: Ref.h:170
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void loadParameters(const edm::ParameterSet &)
const_iterator begin() const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
Definition: DDAxes.h:10