CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
HTrackAssociator Class Reference

#include <TrackAssociator.h>

Classes

class  HAssociatorParameters
 

Public Member Functions

void addDataLabels (const std::string className, const std::string moduleLabel, const std::string productInstanceLabel="")
 specify names of EDProducts to use for different input data types More...
 
HTrackDetMatchInfo associate (const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const HAssociatorParameters &)
 
std::vector< EcalRecHitassociateEcal (const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const double dR=-1)
 
std::vector< CaloTowerassociateHcal (const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const double dR=-1)
 
double getEcalEnergy (const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const double dR=-1)
 
FreeTrajectoryState getFreeTrajectoryState (const edm::EventSetup &, const reco::Track &)
 get FreeTrajectoryState from different track representations More...
 
FreeTrajectoryState getFreeTrajectoryState (const edm::EventSetup &, const SimTrack &, const SimVertex &)
 
double getHcalEnergy (const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const double dR=-1)
 
 HTrackAssociator ()
 
void setPropagator (Propagator *)
 use a user configured propagator More...
 
void useDefaultPropagator ()
 use the default propagator More...
 
 ~HTrackAssociator ()
 

Private Member Functions

void fillCaloTowers (const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
 
void fillEcal (const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
 
void fillHcal (const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
 
void fillHcalTowers (const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
 
math::XYZPoint getPoint (const GlobalPoint &point)
 
math::XYZPoint getPoint (const LocalPoint &point)
 
math::XYZVector getVector (const GlobalVector &vec)
 
math::XYZVector getVector (const LocalVector &vec)
 
void init (const edm::EventSetup &)
 

Private Attributes

HCaloDetIdAssociator caloDetIdAssociator_
 
std::vector< std::string > CaloTowerCollectionLabels
 CaloTowers. More...
 
std::vector< std::vector
< std::set< uint32_t > > > * 
caloTowerMap_
 
int debug_
 
PropagatordefProp_
 
std::vector< std::string > EBRecHitCollectionLabels
 
HEcalDetIdAssociator ecalDetIdAssociator_
 
std::vector< std::string > EERecHitCollectionLabels
 
std::vector< std::string > HBHERecHitCollectionLabels
 HCAL. More...
 
HHcalDetIdAssociator hcalDetIdAssociator_
 
PropagatorivProp_
 
edm::ESHandle< CaloGeometrytheCaloGeometry_
 
bool useDefaultPropagator_
 

Detailed Description

Definition at line 47 of file TrackAssociator.h.

Constructor & Destructor Documentation

HTrackAssociator::HTrackAssociator ( )

Definition at line 53 of file TrackAssociator.cc.

54 {
55  ivProp_ = 0;
56  defProp_ = 0;
57  debug_ = 0;
58  caloTowerMap_ = 0;
59  useDefaultPropagator_ = false;
60 }
Propagator * defProp_
std::vector< std::vector< std::set< uint32_t > > > * caloTowerMap_
Propagator * ivProp_
HTrackAssociator::~HTrackAssociator ( )

Definition at line 62 of file TrackAssociator.cc.

63 {
64  if (defProp_) delete defProp_;
65 }
Propagator * defProp_

Member Function Documentation

void HTrackAssociator::addDataLabels ( const std::string  className,
const std::string  moduleLabel,
const std::string  productInstanceLabel = "" 
)

specify names of EDProducts to use for different input data types

Definition at line 68 of file TrackAssociator.cc.

71 {
72  if (className == "EBRecHitCollection")
73  {
75  EBRecHitCollectionLabels.push_back(moduleLabel);
76  EBRecHitCollectionLabels.push_back(productInstanceLabel);
77  }
78  if (className == "EERecHitCollection")
79  {
81  EERecHitCollectionLabels.push_back(moduleLabel);
82  EERecHitCollectionLabels.push_back(productInstanceLabel);
83  }
84  if (className == "HBHERecHitCollection")
85  {
87  HBHERecHitCollectionLabels.push_back(moduleLabel);
88  HBHERecHitCollectionLabels.push_back(productInstanceLabel);
89  }
90  if (className == "CaloTowerCollection")
91  {
93  CaloTowerCollectionLabels.push_back(moduleLabel);
94  CaloTowerCollectionLabels.push_back(productInstanceLabel);
95  }
96 }
std::vector< std::string > EERecHitCollectionLabels
std::vector< std::string > CaloTowerCollectionLabels
CaloTowers.
std::vector< std::string > EBRecHitCollectionLabels
std::vector< std::string > HBHERecHitCollectionLabels
HCAL.
std::string className(const T &t)
Definition: ClassName.h:30
HTrackDetMatchInfo HTrackAssociator::associate ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const FreeTrajectoryState trackOrigin,
const HAssociatorParameters parameters 
)

propagate a track across the whole detector and find associated objects. Association is done in two modes 1) an object is associated to a track only if crossed by track 2) an object is associated to a track if it is withing an eta-phi cone of some radius with respect to a track. (the cone origin is at (0,0,0))

Definition at line 140 of file TrackAssociator.cc.

References HTrackAssociator::HAssociatorParameters::dRCalo, HTrackAssociator::HAssociatorParameters::dREcal, HTrackAssociator::HAssociatorParameters::dRHcal, HTrackAssociator::HAssociatorParameters::idRCalo, HTrackAssociator::HAssociatorParameters::idREcal, HTrackAssociator::HAssociatorParameters::idRHcal, info(), init, HTrackAssociator::HAssociatorParameters::useCalo, HTrackAssociator::HAssociatorParameters::useEcal, and HTrackAssociator::HAssociatorParameters::useHcal.

144 {
146  using namespace edm;
147  HTimerStack timers;
148 
149  init( iSetup );
150 
151  FreeTrajectoryState currentPosition(trackOrigin);
152 
153  if (parameters.useEcal) fillEcal( iEvent, iSetup, info, currentPosition,parameters.idREcal, parameters.dREcal);
154  if (parameters.useHcal) fillHcal( iEvent, iSetup, info, currentPosition,parameters.idRHcal,parameters.dRHcal);
155  if (parameters.useCalo) fillCaloTowers( iEvent, iSetup, info, currentPosition,parameters.idRCalo,parameters.dRCalo);
156 
157  return info;
158 }
dictionary parameters
Definition: Parameters.py:2
static const TGPicture * info(bool iBackgroundIsBlack)
void fillEcal(const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
void fillHcal(const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
void fillCaloTowers(const edm::Event &, const edm::EventSetup &, HTrackDetMatchInfo &, const FreeTrajectoryState &, const int, const double)
void init(const edm::EventSetup &)
std::vector< EcalRecHit > HTrackAssociator::associateEcal ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const FreeTrajectoryState trackOrigin,
const double  dR = -1 
)

associate ECAL only and return RecHits negative dR means only crossed elements

Definition at line 161 of file TrackAssociator.cc.

References HTrackDetMatchInfo::coneEcalRecHits, HTrackDetMatchInfo::crossedEcalRecHits, PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, HTrackAssociator::HAssociatorParameters::dREcal, info(), Parameters::parameters, and HTrackAssociator::HAssociatorParameters::useHcal.

165 {
166  HAssociatorParameters parameters;
167  parameters.useHcal = false;
168  parameters.dREcal = dR;
169  HTrackDetMatchInfo info( associate(iEvent, iSetup, trackOrigin, parameters ));
170  if (dR>0)
171  return info.coneEcalRecHits;
172  else
173  return info.crossedEcalRecHits;
174 }
dictionary parameters
Definition: Parameters.py:2
static const TGPicture * info(bool iBackgroundIsBlack)
HTrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const HAssociatorParameters &)
std::vector< CaloTower > HTrackAssociator::associateHcal ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const FreeTrajectoryState trackOrigin,
const double  dR = -1 
)

associate ECAL only and return RecHits negative dR means only crossed elements

Definition at line 193 of file TrackAssociator.cc.

References HTrackDetMatchInfo::coneTowers, HTrackDetMatchInfo::crossedTowers, PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, HTrackAssociator::HAssociatorParameters::dRHcal, info(), Parameters::parameters, and HTrackAssociator::HAssociatorParameters::useEcal.

197 {
198  HAssociatorParameters parameters;
199  parameters.useEcal = false;
200  parameters.dRHcal = dR;
201  HTrackDetMatchInfo info( associate(iEvent, iSetup, trackOrigin, parameters ));
202  if (dR>0)
203  return info.coneTowers;
204  else
205  return info.crossedTowers;
206 
207 }
dictionary parameters
Definition: Parameters.py:2
static const TGPicture * info(bool iBackgroundIsBlack)
HTrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const HAssociatorParameters &)
void HTrackAssociator::fillCaloTowers ( const edm::Event iEvent,
const edm::EventSetup iSetup,
HTrackDetMatchInfo info,
const FreeTrajectoryState trajectoryPoint,
const int  idR,
const double  dR 
)
private

Definition at line 311 of file TrackAssociator.cc.

References HTrackDetMatchInfo::boxTowers, HiRecoJets_cff::caloTowers, HTrackDetMatchInfo::coneTowers, gather_cfg::cout, HTrackDetMatchInfo::crossedTowers, edm::Event::getByLabel(), HTrackDetMatchInfo::isGoodCalo, HTrackDetMatchInfo::isGoodEcal, HTrackDetMatchInfo::isGoodHcal, edm::HandleBase::isValid(), LogTrace, HTimerStack::pop_and_push(), HTimerStack::push(), HTrackDetMatchInfo::regionTowers, HTrackDetMatchInfo::trkGlobPosAtEcal, and HTrackDetMatchInfo::trkGlobPosAtHcal.

317 {
318  // ECAL hits are not used for the CaloTower identification
319  HTimerStack timers;
320  timers.push("HTrackAssociator::fillCaloTowers");
321 
323 
324  // HCAL points (HB+HE)
325  timers.push("HTrackAssociator::fillCaloTowers::propagation");
326  std::vector<GlobalPoint> hcalPoints;
327  hcalPoints.push_back(GlobalPoint(135.,0,310.));
328  hcalPoints.push_back(GlobalPoint(150.,0,340.));
329  hcalPoints.push_back(GlobalPoint(170.,0,370.));
330  hcalPoints.push_back(GlobalPoint(190.,0,400.));
331  hcalPoints.push_back(GlobalPoint(240.,0,500.));
332  hcalPoints.push_back(GlobalPoint(280.,0,550.));
333 
334  std::vector<GlobalPoint> hcalTrajectory = caloDetIdAssociator_.getTrajectory(trajectoryPoint, hcalPoints);
335 // if(hcalTrajectory.empty()) throw cms::Exception("FatalError") << "Failed to propagate the track to HCAL\n";
336 
337  if(hcalTrajectory.empty()) {
338  LogTrace("HTrackAssociator::fillEcal") << "Failed to propagate a track to ECAL; moving on\n";
339  info.isGoodCalo = 0;
340  info.isGoodEcal = 0;
341  std::cout<<" HTrackAssociator::fillCaloTowers::Failed to propagate a track to ECAL "<<std::endl;
342  return;
343  }
344 
345  info.isGoodCalo = 1;
346  info.isGoodEcal = 1;
347  info.trkGlobPosAtEcal = getPoint(hcalTrajectory[0]);
348 
349  if(hcalTrajectory.size()<4) {
350  LogTrace("HTrackAssociator::fillEcal") << "Failed to propagate a track to HCAL; moving on\n";
351  info.isGoodHcal = 0;
352  }
353 
354  info.isGoodHcal = 1;
355 
356  info.trkGlobPosAtHcal = getPoint(hcalTrajectory[4]);
357 
358  // find crossed CaloTowers
359  timers.pop_and_push("HTrackAssociator::fillCaloTowers::access::CaloTowers");
361 
362  if (CaloTowerCollectionLabels.empty())
363  throw cms::Exception("FatalError") << "Module lable is not set for CaloTowers.\n";
364  else
366  if (!caloTowers.isValid()) throw cms::Exception("FatalError") << "Unable to find CaloTowers in event!\n";
367 
368  timers.push("HTrackAssociator::fillCaloTowers::matching");
369 
370 // first get DetIds in a predefined NxN region
371 // std::set<DetId> caloTowerIdsInBigRegion = caloDetIdAssociator_.getDetIdsCloseToAPoint(hcalTrajectory[0],idR+1);
372  std::set<DetId> caloTowerIdsInRegion = caloDetIdAssociator_.getDetIdsCloseToAPoint(hcalTrajectory[0],idR);
373 
374  std::set<DetId> caloTowerIdsInACone;
375  std::set<DetId> crossedCaloTowerIds;
376  std::set<DetId> caloTowerIdsInBox;
377  caloTowerIdsInACone = caloDetIdAssociator_.getDetIdsInACone(caloTowerIdsInRegion, hcalTrajectory, dR);
378 // get DetId of the most energetic tower in that region
379  crossedCaloTowerIds = caloDetIdAssociator_.getMaxEDetId(caloTowerIdsInRegion, caloTowers);
380 // get DetIds of the towers surrounding the most energetic one
381  caloTowerIdsInBox = caloDetIdAssociator_.getDetIdsInACone(crossedCaloTowerIds, hcalTrajectory, -1.);
382 
383 //
384 // Debug prints
385 //
386 // std::cout <<" Debug printout in CaloTowers "<<std::endl;
387 // std::cout <<" with position at outer layer:r,z,phi "<<trajectoryPoint.position().eta()<<
388 // " "<<trajectoryPoint.position().phi()<<
389 // " "<<trajectoryPoint.position().perp()<<
390 // " "<<trajectoryPoint.position().z()<<
391 // " "<<trajectoryPoint.charge()<<std::endl;
392 // std::cout <<" Trajectory point at ECAL surface:eta:phi:radius:z "<<(hcalTrajectory[0]).eta()<<
393 // " "<<(hcalTrajectory[0]).phi()<<
394 // " "<<(hcalTrajectory[0]).perp()<<
395 // " "<<(hcalTrajectory[0]).z()<<
396 // " momentum "<<trajectoryPoint.momentum().perp()<<std::endl;
397 //
398 // std::cout<<" Number of towers in the region "<<caloTowerIdsInRegion.size()<<" idR= "<<idR<<std::endl;
399 
400  // add CaloTowers
401  timers.push("HTrackAssociator::fillCaloTowers::addCaloTowers");
402  for(std::set<DetId>::const_iterator itr=crossedCaloTowerIds.begin(); itr!=crossedCaloTowerIds.end();itr++)
403  {
404  DetId id(*itr);
405  CaloTowerCollection::const_iterator tower = (*caloTowers).find(id);
406  if(tower != (*caloTowers).end())
407  info.crossedTowers.push_back(*tower);
408  else
409  LogTrace("HTrackAssociator::fillEcal") << "CaloTower is not found for DetId: " << id.rawId() << "\n";
410  }
411 
412  for(std::set<DetId>::const_iterator itr=caloTowerIdsInACone.begin(); itr!=caloTowerIdsInACone.end();itr++)
413  {
414  DetId id(*itr);
415  CaloTowerCollection::const_iterator tower = (*caloTowers).find(id);
416  if(tower != (*caloTowers).end()) {
417  info.coneTowers.push_back(*tower);
418  }
419  else
420  LogTrace("HTrackAssociator::fillEcal") << "CaloTower is not found for DetId: " << id.rawId() << "\n";
421  }
422 
423  for(std::set<DetId>::const_iterator itr=caloTowerIdsInBox.begin(); itr!=caloTowerIdsInBox.end();itr++)
424  {
425  DetId id(*itr);
426  CaloTowerCollection::const_iterator tower = (*caloTowers).find(id);
427  if(tower != (*caloTowers).end()) {
428  info.boxTowers.push_back(*tower);
429  }
430  else
431  LogTrace("HTrackAssociator::fillEcal") << "CaloTower is not found for DetId: " << id.rawId() << "\n";
432  }
433 
434  for(std::set<DetId>::const_iterator itr=caloTowerIdsInRegion.begin(); itr!=caloTowerIdsInRegion.end();itr++)
435  {
436  DetId id(*itr);
437  CaloTowerCollection::const_iterator tower = (*caloTowers).find(id);
438  if(tower != (*caloTowers).end()) {
439  info.regionTowers.push_back(*tower);
440  }
441  else
442  LogTrace("HTrackAssociator::fillEcal") << "CaloTower is not found for DetId: " << id.rawId() << "\n";
443  }
444 
445 }
std::vector< CaloTower > crossedTowers
virtual std::vector< GlobalPoint > getTrajectory(const FreeTrajectoryState &, const std::vector< GlobalPoint > &)
virtual std::set< DetId > getDetIdsCloseToAPoint(const GlobalPoint &, const int idR=0)
edm::ESHandle< CaloGeometry > theCaloGeometry_
std::vector< std::string > CaloTowerCollectionLabels
CaloTowers.
void push(std::string name)
Definition: TimerStack.h:13
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::vector< CaloTower >::const_iterator const_iterator
std::vector< CaloTower > boxTowers
void pop_and_push(std::string name)
Definition: TimerStack.h:31
math::XYZPoint trkGlobPosAtHcal
virtual std::set< DetId > getDetIdsInACone(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory, const double)
bool isValid() const
Definition: HandleBase.h:76
virtual std::set< DetId > getMaxEDetId(const std::set< DetId > &, edm::Handle< CaloTowerCollection > caloTowers)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
HCaloDetIdAssociator caloDetIdAssociator_
#define LogTrace(id)
Definition: DetId.h:18
std::vector< CaloTower > regionTowers
std::vector< CaloTower > coneTowers
math::XYZPoint trkGlobPosAtEcal
tuple cout
Definition: gather_cfg.py:121
virtual void setGeometry(const CaloGeometry *ptr)
math::XYZPoint getPoint(const GlobalPoint &point)
void HTrackAssociator::fillEcal ( const edm::Event iEvent,
const edm::EventSetup iSetup,
HTrackDetMatchInfo info,
const FreeTrajectoryState trajectoryPoint,
const int  idR,
const double  dR 
)
private

Definition at line 226 of file TrackAssociator.cc.

References HTrackDetMatchInfo::coneEcalRecHits, HTrackDetMatchInfo::crossedEcalRecHits, egHLT::errCodes::EBRecHits, egHLT::errCodes::EERecHits, edm::Event::getByLabel(), HTrackDetMatchInfo::isGoodEcal, LogTrace, HTimerStack::pop_and_push(), HTimerStack::push(), and HTrackDetMatchInfo::trkGlobPosAtEcal.

232 {
233  HTimerStack timers;
234  timers.push("HTrackAssociator::fillEcal");
235 
237 
238  timers.push("HTrackAssociator::fillEcal::propagation");
239  // ECAL points (EB+EE)
240  std::vector<GlobalPoint> ecalPoints;
241  ecalPoints.push_back(GlobalPoint(135.,0,310.));
242  ecalPoints.push_back(GlobalPoint(150.,0,340.));
243  ecalPoints.push_back(GlobalPoint(170.,0,370.));
244 
245  std::vector<GlobalPoint> ecalTrajectory = ecalDetIdAssociator_.getTrajectory(trajectoryPoint, ecalPoints);
246 // if(ecalTrajectory.empty()) throw cms::Exception("FatalError") << "Failed to propagate a track to ECAL\n";
247 
248  if(ecalTrajectory.empty()) {
249  LogTrace("HTrackAssociator::fillEcal") << "Failed to propagate a track to ECAL; moving on\n";
250  info.isGoodEcal = 0;
251  return;
252  }
253 
254  info.isGoodEcal = 1;
255 
256  info.trkGlobPosAtEcal = getPoint(ecalTrajectory[0]);
257 
258  // Find ECAL crystals
259  timers.pop_and_push("HTrackAssociator::fillEcal::access::EcalBarrel");
262 // if (EBRecHitCollectionLabels.empty())
263 // throw cms::Exception("FatalError") << "Module lable is not set for EBRecHitCollection.\n";
264 // else
266 // if (!EBRecHits.isValid()) throw cms::Exception("FatalError") << "Unable to find EBRecHitCollection in event!\n";
268 // if (!EERecHits.isValid()) throw cms::Exception("FatalError") << "Unable to find EERecHitCollection in event!\n";
269 
270  timers.pop_and_push("HTrackAssociator::fillEcal::matching");
271  std::set<DetId> ecalIdsInRegion = ecalDetIdAssociator_.getDetIdsCloseToAPoint(ecalTrajectory[0],idR);
272  std::set<DetId> ecalIdsInACone = ecalDetIdAssociator_.getDetIdsInACone(ecalIdsInRegion, ecalTrajectory, dR);
273  std::set<DetId> crossedEcalIds = ecalDetIdAssociator_.getCrossedDetIds(ecalIdsInRegion, ecalTrajectory);
274 
275  // add EcalRecHits
276  timers.pop_and_push("HTrackAssociator::fillEcal::addEcalRecHits");
277  for(std::set<DetId>::const_iterator itr=crossedEcalIds.begin(); itr!=crossedEcalIds.end();itr++) {
278  std::vector<EcalRecHit>::const_iterator hit = (*EBRecHits).find(*itr);
279  if(hit != (*EBRecHits).end())
280  info.crossedEcalRecHits.push_back(*hit);
281  else
282  LogTrace("HTrackAssociator::fillEcal") << "EcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
283  }
284  for(std::set<DetId>::const_iterator itr=ecalIdsInACone.begin(); itr!=ecalIdsInACone.end();itr++) {
285  std::vector<EcalRecHit>::const_iterator hit = (*EBRecHits).find(*itr);
286  if(hit != (*EBRecHits).end()) {
287  info.coneEcalRecHits.push_back(*hit);
288  }
289  else
290  LogTrace("HTrackAssociator::fillEcal") << "EcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
291  }
293  for(std::set<DetId>::const_iterator itr=crossedEcalIds.begin(); itr!=crossedEcalIds.end();itr++) {
294  std::vector<EcalRecHit>::const_iterator hit = (*EERecHits).find(*itr);
295  if(hit != (*EERecHits).end())
296  info.crossedEcalRecHits.push_back(*hit);
297  else
298  LogTrace("HTrackAssociator::fillEcal") << "EcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
299  }
300  for(std::set<DetId>::const_iterator itr=ecalIdsInACone.begin(); itr!=ecalIdsInACone.end();itr++) {
301  std::vector<EcalRecHit>::const_iterator hit = (*EERecHits).find(*itr);
302  if(hit != (*EERecHits).end()) {
303  info.coneEcalRecHits.push_back(*hit);
304  }
305  else
306  LogTrace("HTrackAssociator::fillEcal") << "EcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
307  }
308 }
virtual std::vector< GlobalPoint > getTrajectory(const FreeTrajectoryState &, const std::vector< GlobalPoint > &)
virtual std::set< DetId > getDetIdsCloseToAPoint(const GlobalPoint &, const int idR=0)
edm::ESHandle< CaloGeometry > theCaloGeometry_
std::vector< std::string > EERecHitCollectionLabels
void push(std::string name)
Definition: TimerStack.h:13
std::vector< EcalRecHit > crossedEcalRecHits
std::vector< std::string > EBRecHitCollectionLabels
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
void pop_and_push(std::string name)
Definition: TimerStack.h:31
std::vector< EcalRecHit > coneEcalRecHits
virtual std::set< DetId > getDetIdsInACone(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory, const double)
virtual std::set< DetId > getCrossedDetIds(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory)
HEcalDetIdAssociator ecalDetIdAssociator_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
#define LogTrace(id)
math::XYZPoint trkGlobPosAtEcal
virtual void setGeometry(const CaloGeometry *ptr)
math::XYZPoint getPoint(const GlobalPoint &point)
void HTrackAssociator::fillHcal ( const edm::Event iEvent,
const edm::EventSetup iSetup,
HTrackDetMatchInfo info,
const FreeTrajectoryState trajectoryPoint,
const int  idR,
const double  dR 
)
private

Definition at line 448 of file TrackAssociator.cc.

References HTrackDetMatchInfo::boxHcalRecHits, HTrackDetMatchInfo::coneHcalRecHits, HTrackDetMatchInfo::crossedHcalRecHits, edm::Event::getByLabel(), egHLT::errCodes::HBHERecHits, HTrackDetMatchInfo::isGoodHcal, edm::HandleBase::isValid(), LogTrace, HTimerStack::pop_and_push(), HTimerStack::push(), HTrackDetMatchInfo::regionHcalRecHits, and HTrackDetMatchInfo::trkGlobPosAtHcal.

453  {
454  HTimerStack timers;
455  timers.push("HTrackAssociator::fillHcal");
456 
458 
459 // HCAL points (HB+HE)
460  timers.push("HTrackAssociator::fillHcal::propagation");
461  std::vector<GlobalPoint> hcalPoints;
462  hcalPoints.push_back(GlobalPoint(190.,0,400.));
463  hcalPoints.push_back(GlobalPoint(240.,0,500.));
464  hcalPoints.push_back(GlobalPoint(280.,0,550.));
465 
466  std::vector<GlobalPoint> hcalTrajectory = hcalDetIdAssociator_.getTrajectory(trajectoryPoint, hcalPoints);
467 // if(hcalTrajectory.empty()) throw cms::Exception("FatalError") << "Failed to propagate the track to HCAL\n";
468 
469  if(hcalTrajectory.empty()) {
470  LogTrace("HTrackAssociator::fillHcal") << "Failed to propagate a track to HCAL; moving on\n";
471  info.isGoodHcal = 0;
472 // std::cout<<" HTrackAssociator::fillHcal::Failed to propagate a track to HCAL "<<std::endl;
473  return;
474  }
475 
476  info.isGoodHcal = 1;
477 
478  info.trkGlobPosAtHcal = getPoint(hcalTrajectory[0]);
479  timers.pop_and_push("HTrackAssociator::fillHcal::access::Hcal");
480 
482 // if (HBHERecHitCollectionLabels.empty())
483 // throw cms::Exception("FatalError") << "Module label is not set for HBHERecHitCollection.\n";
484 // else
486  if (!HBHERecHits.isValid()) throw cms::Exception("FatalError") << "Unable to find HBHERecHitCollection in event!\n";
487 
488  timers.pop_and_push("HTrackAssociator::fillHcal::matching");
489 
490 // first get DetIds in a predefined NxN region
491 // std::set<DetId> hcalIdsInBigRegion = hcalDetIdAssociator_.getDetIdsCloseToAPoint(hcalTrajectory[0],idR+1);
492  std::set<DetId> hcalIdsInRegion = hcalDetIdAssociator_.getDetIdsCloseToAPoint(hcalTrajectory[0],idR);
493 
494  std::set<DetId> hcalIdsInACone;
495  std::set<DetId> crossedHcalIds;
496  std::set<DetId> hcalIdsInBox;
497  hcalIdsInACone = hcalDetIdAssociator_.getDetIdsInACone(hcalIdsInRegion, hcalTrajectory, dR);
498 // get DetId of the most energetic tower in that region
499  crossedHcalIds = hcalDetIdAssociator_.getMaxEDetId(hcalIdsInRegion, HBHERecHits);
500 // get DetIds of the towers surrounding the most energetic one
501  hcalIdsInBox = hcalDetIdAssociator_.getDetIdsInACone(crossedHcalIds, hcalTrajectory, -1.);
502 
503 // add HcalRecHits
504  timers.pop_and_push("HTrackAssociator::fillHcal::addHcalRecHits");
505  for(std::set<DetId>::const_iterator itr=crossedHcalIds.begin(); itr!=crossedHcalIds.end();itr++) {
506  std::vector<HBHERecHit>::const_iterator hit = (*HBHERecHits).find(*itr);
507  if(hit != (*HBHERecHits).end())
508  info.crossedHcalRecHits.push_back(*hit);
509  else
510  LogTrace("HTrackAssociator::fillHcal") << "HcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
511  }
512  for(std::set<DetId>::const_iterator itr=hcalIdsInACone.begin(); itr!=hcalIdsInACone.end();itr++) {
513  std::vector<HBHERecHit>::const_iterator hit = (*HBHERecHits).find(*itr);
514  if(hit != (*HBHERecHits).end())
515  info.coneHcalRecHits.push_back(*hit);
516  else
517  LogTrace("HTrackAssociator::fillHcal") << "HcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
518  }
519  for(std::set<DetId>::const_iterator itr=hcalIdsInBox.begin(); itr!=hcalIdsInBox.end();itr++) {
520  std::vector<HBHERecHit>::const_iterator hit = (*HBHERecHits).find(*itr);
521  if(hit != (*HBHERecHits).end())
522  info.boxHcalRecHits.push_back(*hit);
523  else
524  LogTrace("HTrackAssociator::fillHcal") << "HcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
525  }
526  for(std::set<DetId>::const_iterator itr=hcalIdsInRegion.begin(); itr!=hcalIdsInRegion.end();itr++) {
527  std::vector<HBHERecHit>::const_iterator hit = (*HBHERecHits).find(*itr);
528  if(hit != (*HBHERecHits).end())
529  info.regionHcalRecHits.push_back(*hit);
530  else
531  LogTrace("HTrackAssociator::fillHcal") << "HcalRecHit is not found for DetId: " << itr->rawId() <<"\n";
532  }
533 }
virtual std::vector< GlobalPoint > getTrajectory(const FreeTrajectoryState &, const std::vector< GlobalPoint > &)
virtual std::set< DetId > getDetIdsCloseToAPoint(const GlobalPoint &, const int idR=0)
edm::ESHandle< CaloGeometry > theCaloGeometry_
std::vector< HBHERecHit > coneHcalRecHits
void push(std::string name)
Definition: TimerStack.h:13
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::vector< HBHERecHit > regionHcalRecHits
void pop_and_push(std::string name)
Definition: TimerStack.h:31
std::vector< std::string > HBHERecHitCollectionLabels
HCAL.
math::XYZPoint trkGlobPosAtHcal
std::vector< HBHERecHit > boxHcalRecHits
std::vector< HBHERecHit > crossedHcalRecHits
virtual std::set< DetId > getDetIdsInACone(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory, const double)
bool isValid() const
Definition: HandleBase.h:76
virtual std::set< DetId > getMaxEDetId(const std::set< DetId > &, edm::Handle< CaloTowerCollection > caloTowers)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
#define LogTrace(id)
virtual void setGeometry(const CaloGeometry *ptr)
HHcalDetIdAssociator hcalDetIdAssociator_
math::XYZPoint getPoint(const GlobalPoint &point)
void HTrackAssociator::fillHcalTowers ( const edm::Event iEvent,
const edm::EventSetup iSetup,
HTrackDetMatchInfo info,
const FreeTrajectoryState trajectoryPoint,
const int  idR,
const double  dR 
)
private

Definition at line 536 of file TrackAssociator.cc.

References HiRecoJets_cff::caloTowers, HTrackDetMatchInfo::coneTowers, gather_cfg::cout, HTrackDetMatchInfo::crossedTowers, edm::Event::getByLabel(), HTrackDetMatchInfo::isGoodCalo, edm::HandleBase::isValid(), LogTrace, HTimerStack::pop_and_push(), HTimerStack::push(), and HTrackDetMatchInfo::trkGlobPosAtHcal.

542 {
543  // ECAL hits are not used for the CaloTower identification
544  HTimerStack timers;
545  timers.push("HTrackAssociator::fillCaloTowers");
546 
548 
549  // HCAL points (HB+HE)
550  timers.push("HTrackAssociator::fillCaloTowers::propagation");
551  std::vector<GlobalPoint> hcalPoints;
552  hcalPoints.push_back(GlobalPoint(190.,0,400.));
553  hcalPoints.push_back(GlobalPoint(240.,0,500.));
554  hcalPoints.push_back(GlobalPoint(280.,0,550.));
555 
556  std::vector<GlobalPoint> hcalTrajectory = caloDetIdAssociator_.getTrajectory(trajectoryPoint, hcalPoints);
557 // if(hcalTrajectory.empty()) throw cms::Exception("FatalError") << "Failed to propagate the track to HCAL\n";
558 
559  if(hcalTrajectory.empty()) {
560  LogTrace("HTrackAssociator::fillEcal") << "Failed to propagate a track to HCAL; moving on\n";
561  info.isGoodCalo = 0;
562  std::cout<<" HTrackAssociator::fillCaloTowers::Failed to propagate a track to HCAL "<<std::endl;
563  return;
564  }
565 
566  info.isGoodCalo = 1;
567 
568  info.trkGlobPosAtHcal = getPoint(hcalTrajectory[0]);
569 
570  // find crossed CaloTowers
571  timers.pop_and_push("HTrackAssociator::fillCaloTowers::access::CaloTowers");
573 
574  if (CaloTowerCollectionLabels.empty())
575  throw cms::Exception("FatalError") << "Module lable is not set for CaloTowers.\n";
576  else
578  if (!caloTowers.isValid()) throw cms::Exception("FatalError") << "Unable to find CaloTowers in event!\n";
579 
580  timers.push("HTrackAssociator::fillCaloTowers::matching");
581 
582 // first get DetIds in a predefined NxN region
583  std::set<DetId> caloTowerIdsInBigRegion = caloDetIdAssociator_.getDetIdsCloseToAPoint(hcalTrajectory[0],idR+1);
584  std::set<DetId> caloTowerIdsInRegion = caloDetIdAssociator_.getDetIdsCloseToAPoint(hcalTrajectory[0],idR);
585 
586  std::set<DetId> caloTowerIdsInACone;
587  std::set<DetId> crossedCaloTowerIds;
588  std::set<DetId> caloTowerIdsInBox;
589  caloTowerIdsInACone = caloDetIdAssociator_.getDetIdsInACone(caloTowerIdsInBigRegion, hcalTrajectory, dR);
590 // get DetId of the most energetic tower in that region
591  crossedCaloTowerIds = caloDetIdAssociator_.getMaxEDetId(caloTowerIdsInRegion, caloTowers);
592 // get DetIds of the towers surrounding the most energetic one
593  caloTowerIdsInBox = caloDetIdAssociator_.getDetIdsInACone(crossedCaloTowerIds, hcalTrajectory, -1.);
594 
595  // add CaloTowers
596  timers.push("HTrackAssociator::fillCaloTowers::addCaloTowers");
597  for(std::set<DetId>::const_iterator itr=crossedCaloTowerIds.begin(); itr!=crossedCaloTowerIds.end();itr++)
598  {
599  DetId id(*itr);
600  CaloTowerCollection::const_iterator tower = (*caloTowers).find(id);
601  if(tower != (*caloTowers).end())
602  info.crossedTowers.push_back(*tower);
603  else
604  LogTrace("HTrackAssociator::fillEcal") << "CaloTower is not found for DetId: " << id.rawId() << "\n";
605  }
606 
607  for(std::set<DetId>::const_iterator itr=caloTowerIdsInACone.begin(); itr!=caloTowerIdsInACone.end();itr++)
608  {
609  DetId id(*itr);
610  CaloTowerCollection::const_iterator tower = (*caloTowers).find(id);
611  if(tower != (*caloTowers).end())
612  info.coneTowers.push_back(*tower);
613  else
614  LogTrace("HTrackAssociator::fillEcal") << "CaloTower is not found for DetId: " << id.rawId() << "\n";
615  }
616 
617 }
std::vector< CaloTower > crossedTowers
virtual std::vector< GlobalPoint > getTrajectory(const FreeTrajectoryState &, const std::vector< GlobalPoint > &)
virtual std::set< DetId > getDetIdsCloseToAPoint(const GlobalPoint &, const int idR=0)
edm::ESHandle< CaloGeometry > theCaloGeometry_
std::vector< std::string > CaloTowerCollectionLabels
CaloTowers.
void push(std::string name)
Definition: TimerStack.h:13
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::vector< CaloTower >::const_iterator const_iterator
void pop_and_push(std::string name)
Definition: TimerStack.h:31
math::XYZPoint trkGlobPosAtHcal
virtual std::set< DetId > getDetIdsInACone(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory, const double)
bool isValid() const
Definition: HandleBase.h:76
virtual std::set< DetId > getMaxEDetId(const std::set< DetId > &, edm::Handle< CaloTowerCollection > caloTowers)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
HCaloDetIdAssociator caloDetIdAssociator_
#define LogTrace(id)
Definition: DetId.h:18
std::vector< CaloTower > coneTowers
tuple cout
Definition: gather_cfg.py:121
virtual void setGeometry(const CaloGeometry *ptr)
math::XYZPoint getPoint(const GlobalPoint &point)
double HTrackAssociator::getEcalEnergy ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const FreeTrajectoryState trackOrigin,
const double  dR = -1 
)

associate ECAL only and return energy negative dR means only crossed elements

Definition at line 177 of file TrackAssociator.cc.

References PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, HTrackAssociator::HAssociatorParameters::dREcal, HTrackDetMatchInfo::ecalConeEnergyFromRecHits(), HTrackDetMatchInfo::ecalEnergyFromRecHits(), info(), Parameters::parameters, and HTrackAssociator::HAssociatorParameters::useHcal.

181 {
182  HAssociatorParameters parameters;
183  parameters.useHcal = false;
184  parameters.dREcal = dR;
185  HTrackDetMatchInfo info = associate(iEvent, iSetup, trackOrigin, parameters );
186  if(dR>0)
187  return info.ecalConeEnergyFromRecHits();
188  else
189  return info.ecalEnergyFromRecHits();
190 }
dictionary parameters
Definition: Parameters.py:2
static const TGPicture * info(bool iBackgroundIsBlack)
double ecalConeEnergyFromRecHits()
HTrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const HAssociatorParameters &)
double ecalEnergyFromRecHits()
ECAL energy.
FreeTrajectoryState HTrackAssociator::getFreeTrajectoryState ( const edm::EventSetup iSetup,
const reco::Track track 
)

get FreeTrajectoryState from different track representations

Definition at line 640 of file TrackAssociator.cc.

References ecalTB2006H4_GenSimDigiReco_cfg::bField, reco::TrackBase::charge(), alignCSCRings::e, edm::EventSetup::get(), reco::TrackBase::momentum(), point, and reco::TrackBase::vertex().

642 {
644  iSetup.get<IdealMagneticFieldRecord>().get(bField);
645 
646  GlobalVector vector( track.momentum().x(), track.momentum().y(), track.momentum().z() );
647 
648  GlobalPoint point( track.vertex().x(), track.vertex().y(), track.vertex().z() );
649 
650  GlobalTrajectoryParameters tPars(point, vector, track.charge(), &*bField);
651 
652  // FIX THIS !!!
653  // need to convert from perigee to global or helix (curvilinear) frame
654  // for now just an arbitrary matrix.
655  AlgebraicSymMatrix66 covT= AlgebraicMatrixID(); covT *= 1e-6; // initialize to sigma=1e-3
656  CartesianTrajectoryError tCov(covT);
657 
658  return FreeTrajectoryState(tPars, tCov);
659 }
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:148
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
const Point & vertex() const
reference point on the track. This method is DEPRECATED, please use referencePoint() instead ...
Definition: TrackBase.h:154
const T & get() const
Definition: EventSetup.h:55
int charge() const
track electric charge
Definition: TrackBase.h:111
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
FreeTrajectoryState HTrackAssociator::getFreeTrajectoryState ( const edm::EventSetup iSetup,
const SimTrack track,
const SimVertex vertex 
)

Definition at line 620 of file TrackAssociator.cc.

References ecalTB2006H4_GenSimDigiReco_cfg::bField, DeDxDiscriminatorTools::charge(), alignCSCRings::e, edm::EventSetup::get(), CoreSimTrack::momentum(), point, CoreSimVertex::position(), and CoreSimTrack::type().

623 {
625  iSetup.get<IdealMagneticFieldRecord>().get(bField);
626 
627  GlobalVector vector( track.momentum().x(), track.momentum().y(), track.momentum().z() );
628  // convert mm to cm
629  GlobalPoint point( vertex.position().x()*.1, vertex.position().y()*.1, vertex.position().z()*.1 );
630  int charge = track.type( )> 0 ? -1 : 1;
631  GlobalTrajectoryParameters tPars(point, vector, charge, &*bField);
632 
633  AlgebraicSymMatrix66 covT= AlgebraicMatrixID(); covT *= 1e-6; // initialize to sigma=1e-3
634  CartesianTrajectoryError tCov(covT);
635 
636  return FreeTrajectoryState(tPars, tCov);
637 }
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
double charge(const std::vector< uint8_t > &Ampls)
const math::XYZTLorentzVectorD & position() const
Definition: CoreSimVertex.h:26
const T & get() const
Definition: EventSetup.h:55
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:25
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:22
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
double HTrackAssociator::getHcalEnergy ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const FreeTrajectoryState trackOrigin,
const double  dR = -1 
)

associate ECAL only and return energy negative dR means only crossed elements

Definition at line 210 of file TrackAssociator.cc.

References PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, HTrackAssociator::HAssociatorParameters::dRHcal, HTrackDetMatchInfo::hcalConeEnergyFromRecHits(), HTrackDetMatchInfo::hcalEnergyFromRecHits(), info(), Parameters::parameters, and HTrackAssociator::HAssociatorParameters::useEcal.

214 {
215  HAssociatorParameters parameters;
216  parameters.useEcal = false;
217  parameters.dRHcal = dR;
218  HTrackDetMatchInfo info( associate(iEvent, iSetup, trackOrigin, parameters ));
219  if (dR>0)
220  return info.hcalConeEnergyFromRecHits();
221  else
222  return info.hcalEnergyFromRecHits();
223 }
dictionary parameters
Definition: Parameters.py:2
static const TGPicture * info(bool iBackgroundIsBlack)
HTrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const HAssociatorParameters &)
math::XYZPoint HTrackAssociator::getPoint ( const GlobalPoint point)
inlineprivate

Definition at line 173 of file TrackAssociator.h.

References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

174  {
175  return math::XYZPoint(point.x(),point.y(),point.z());
176  }
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
T x() const
Definition: PV3DBase.h:62
math::XYZPoint HTrackAssociator::getPoint ( const LocalPoint point)
inlineprivate

Definition at line 178 of file TrackAssociator.h.

References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

179  {
180  return math::XYZPoint(point.x(),point.y(),point.z());
181  }
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
T x() const
Definition: PV3DBase.h:62
math::XYZVector HTrackAssociator::getVector ( const GlobalVector vec)
inlineprivate

Definition at line 183 of file TrackAssociator.h.

References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

184  {
185  return math::XYZVector(vec.x(),vec.y(),vec.z());
186  }
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
T x() const
Definition: PV3DBase.h:62
math::XYZVector HTrackAssociator::getVector ( const LocalVector vec)
inlineprivate

Definition at line 188 of file TrackAssociator.h.

References PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

189  {
190  return math::XYZVector(vec.x(),vec.y(),vec.z());
191  }
T y() const
Definition: PV3DBase.h:63
T z() const
Definition: PV3DBase.h:64
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
T x() const
Definition: PV3DBase.h:62
void HTrackAssociator::init ( const edm::EventSetup iSetup)
private

Definition at line 116 of file TrackAssociator.cc.

References anyDirection, SteppingHelixPropagator::applyRadX0Correction(), ecalTB2006H4_GenSimDigiReco_cfg::bField, edm::EventSetup::get(), SteppingHelixPropagator::setMaterialMode(), and SteppingHelixPropagator_cfi::SteppingHelixPropagator.

117 {
118  // access the calorimeter geometry
119  iSetup.get<CaloGeometryRecord>().get(theCaloGeometry_);
120  if (!theCaloGeometry_.isValid())
121  throw cms::Exception("FatalError") << "Unable to find IdealGeometryRecord in event!\n";
122 
123  if (useDefaultPropagator_ && ! defProp_ ) {
124  // setup propagator
126  iSetup.get<IdealMagneticFieldRecord>().get(bField);
127 
129  prop->setMaterialMode(false);
130  prop->applyRadX0Correction(true);
131  // prop->setDebug(true); // tmp
132  defProp_ = prop;
134  }
135 
136 
137 }
edm::ESHandle< CaloGeometry > theCaloGeometry_
Propagator * defProp_
void setPropagator(Propagator *)
use a user configured propagator
void applyRadX0Correction(bool applyRadX0Correction)
const T & get() const
Definition: EventSetup.h:55
bool isValid() const
Definition: ESHandle.h:37
void setMaterialMode(bool noMaterial)
Switch for material effects mode: no material effects if true.
void HTrackAssociator::setPropagator ( Propagator ptr)

use a user configured propagator

Definition at line 100 of file TrackAssociator.cc.

101 {
102  ivProp_ = ptr;
106 }
Propagator * ivProp_
HEcalDetIdAssociator ecalDetIdAssociator_
HCaloDetIdAssociator caloDetIdAssociator_
virtual void setPropagator(Propagator *ptr)
HHcalDetIdAssociator hcalDetIdAssociator_
void HTrackAssociator::useDefaultPropagator ( )

use the default propagator

Definition at line 109 of file TrackAssociator.cc.

110 {
111  useDefaultPropagator_ = true;
112 }

Member Data Documentation

HCaloDetIdAssociator HTrackAssociator::caloDetIdAssociator_
private

Definition at line 201 of file TrackAssociator.h.

std::vector<std::string> HTrackAssociator::CaloTowerCollectionLabels
private

CaloTowers.

Definition at line 212 of file TrackAssociator.h.

std::vector<std::vector<std::set<uint32_t> > >* HTrackAssociator::caloTowerMap_
private

Definition at line 197 of file TrackAssociator.h.

int HTrackAssociator::debug_
private

Definition at line 196 of file TrackAssociator.h.

Propagator* HTrackAssociator::defProp_
private

Definition at line 194 of file TrackAssociator.h.

std::vector<std::string> HTrackAssociator::EBRecHitCollectionLabels
private

Labels of the detector EDProducts (empty by default) ECAL

Definition at line 207 of file TrackAssociator.h.

HEcalDetIdAssociator HTrackAssociator::ecalDetIdAssociator_
private

Definition at line 199 of file TrackAssociator.h.

std::vector<std::string> HTrackAssociator::EERecHitCollectionLabels
private

Definition at line 208 of file TrackAssociator.h.

std::vector<std::string> HTrackAssociator::HBHERecHitCollectionLabels
private

HCAL.

Definition at line 210 of file TrackAssociator.h.

HHcalDetIdAssociator HTrackAssociator::hcalDetIdAssociator_
private

Definition at line 200 of file TrackAssociator.h.

Propagator* HTrackAssociator::ivProp_
private

Definition at line 193 of file TrackAssociator.h.

edm::ESHandle<CaloGeometry> HTrackAssociator::theCaloGeometry_
private

Definition at line 203 of file TrackAssociator.h.

bool HTrackAssociator::useDefaultPropagator_
private

Definition at line 195 of file TrackAssociator.h.