CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
HGCalTrackCollectionProducer Class Reference
Inheritance diagram for HGCalTrackCollectionProducer:
edm::stream::EDProducer<>

Public Member Functions

 HGCalTrackCollectionProducer (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

void beginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) override
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

edm::ESHandle< MagneticFieldbField_
 
float diskInnerRadius_
 
float diskOuterRadius_
 
const std::vector< double > DPtovPtCut_
 
std::array< std::string, 1 > hgc_names_
 
std::array< edm::ESHandle< HGCalGeometry >, 1 > hgcGeometries_
 
std::unique_ptr< PropagatorWithMaterialmat_prop_
 
std::array< std::vector< ReferenceCountingPointer< BoundDisk > >, 1 > minusSurface_
 
const std::vector< unsigned > NHitCut_
 
std::array< std::vector< ReferenceCountingPointer< BoundDisk > >, 1 > plusSurface_
 
edm::EDGetTokenT< edm::View< reco::PFRecTrack > > src_
 
edm::ESHandle< TrackerGeometrytkGeom_
 
const reco::TrackBase::TrackQuality trackQuality_
 
const bool useIterTracking_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 45 of file HGCalTrackCollectionProducer.cc.

Constructor & Destructor Documentation

◆ HGCalTrackCollectionProducer()

HGCalTrackCollectionProducer::HGCalTrackCollectionProducer ( const edm::ParameterSet iConfig)

Definition at line 77 of file HGCalTrackCollectionProducer.cc.

78  : src_(consumes<edm::View<reco::PFRecTrack> >(iConfig.getParameter<edm::InputTag>("src"))),
79  trackQuality_((iConfig.existsAs<std::string>("trackQuality"))
80  ? reco::TrackBase::qualityByName(iConfig.getParameter<std::string>("trackQuality"))
82  DPtovPtCut_(iConfig.getParameter<std::vector<double> >("DPtOverPtCuts_byTrackAlgo")),
83  NHitCut_(iConfig.getParameter<std::vector<unsigned> >("NHitCuts_byTrackAlgo")),
84  useIterTracking_(iConfig.getParameter<bool>("useIterativeTracking")) {
85  LogDebug("HGCalTrackCollectionProducer")
86  << " HGCalTrackCollectionProducer::HGCalTrackCollectionProducer " << std::endl;
87 
88  const edm::ParameterSet& geoconf = iConfig.getParameterSet("hgcalGeometryNames");
89  hgc_names_[0] = geoconf.getParameter<std::string>("HGC_ECAL");
90 
91  produces<reco::PFRecTrackCollection>("TracksInHGCal");
92  produces<reco::PFRecTrackCollection>("TracksNotInHGCal");
93 }

References edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), hgc_names_, LogDebug, and AlCaHLTBitMon_QueryRunRegistry::string.

Member Function Documentation

◆ beginLuminosityBlock()

void HGCalTrackCollectionProducer::beginLuminosityBlock ( const edm::LuminosityBlock lumi,
const edm::EventSetup es 
)
overrideprivate

Definition at line 97 of file HGCalTrackCollectionProducer.cc.

97  {
98  constexpr float m_pion = 0.1396;
99  // get dependencies for setting up propagator
102  // get HGC geometries (assume that layers are ordered in Z!)
103  for (unsigned i = 0; i < hgcGeometries_.size(); ++i) {
105  }
106 
107  // make propagator
108  mat_prop_ = std::make_unique<PropagatorWithMaterial>(alongMomentum, m_pion, bField_.product());
109  // setup HGC layers for track propagation
110  Surface::RotationType rot; //unit rotation matrix
111  for (unsigned i = 0; i < hgcGeometries_.size(); ++i) {
112  minusSurface_[i].clear();
113  plusSurface_[i].clear();
114  const HGCalDDDConstants& dddCons = hgcGeometries_[i]->topology().dddConstants();
115  std::map<float, float> zrhoCoord;
116  std::map<float, float> innerRadiusCoord;
117  auto theTrForms = dddCons.getTrForms();
118  const auto& firstLayerIt = theTrForms.back();
119  float Z(std::abs(firstLayerIt.h3v.z()));
120  // use hardcoded radii for now (FIX ME)
121  diskInnerRadius_ = 31.5;
122  diskOuterRadius_ = 161.0f;
123  LogDebug("HGCalTrackCollectionProducer") << "O HAI I'm making a bound disk with Outer R=" << diskOuterRadius_
124  << " Inner R=" << diskInnerRadius_ << " and Z=" << Z << std::endl;
129  }
130 }

References funct::abs(), alongMomentum, bField_, diskInnerRadius_, diskOuterRadius_, edm::EventSetup::get(), get, HGCalDDDConstants::getTrForms(), hgc_names_, hgcGeometries_, mps_fire::i, LogDebug, mat_prop_, minusSurface_, plusSurface_, edm::ESHandle< T >::product(), makeMuonMisalignmentScenario::rot, tkGeom_, and BeamSpotPI::Z.

◆ produce()

void HGCalTrackCollectionProducer::produce ( edm::Event evt,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 132 of file HGCalTrackCollectionProducer.cc.

132  {
134  evt.getByToken(src_, trackHandle);
135  const auto& tracks = *trackHandle;
136 
137  auto outputInHGCal = std::make_unique<reco::PFRecTrackCollection>();
138  auto outputNotInHGCal = std::make_unique<reco::PFRecTrackCollection>();
139 
140  for (unsigned int i = 0; i < tracks.size(); i++) {
141  const auto track = tracks.ptrAt(i);
142  bool isGood =
144  LogDebug("HGCalTrackCollectionProducer") << "HGCalTrackCollectionProducer Track number " << i
145  << " has a goodPtResolution result of " << isGood << std::endl;
146  if (!isGood)
147  continue;
148  bool found = false;
149  const TrajectoryStateOnSurface myTSOS =
151  auto detbegin = myTSOS.globalPosition().z() > 0 ? plusSurface_.begin() : minusSurface_.begin();
152  auto detend = myTSOS.globalPosition().z() > 0 ? plusSurface_.end() : minusSurface_.end();
153  for (auto det = detbegin; det != detend; ++det) {
154  LogDebug("HGCalTrackCollectionProducer") << "at HGC detector: " << std::distance(detbegin, det) << std::endl;
155  unsigned layer_count = 1;
156  for (const auto& layer : *det) {
157  LogDebug("HGCalTrackCollectionProducer") << " at DET layer: " << layer_count++ << std::endl;
158  TrajectoryStateOnSurface piStateAtSurface = mat_prop_->propagate(myTSOS, *layer);
159  if (piStateAtSurface.isValid()) {
160  LogDebug("HGCalTrackCollectionProducer") << "Extrapolation is valid!" << std::endl;
161  GlobalPoint pt = piStateAtSurface.globalPosition();
162  if (pt.perp() < diskOuterRadius_) {
163  if (pt.perp() > diskInnerRadius_) {
164  LogDebug("HGCalTrackCollectionProducer")
165  << "(x,y,z,r)=(" << pt.x() << ", " << pt.y() << ", " << pt.z() << ", "
166  << sqrt(pt.x() * pt.x() + pt.y() * pt.y()) << ")" << std::endl;
167  if (std::abs(track->trackRef()->eta()) < 1.47)
168  LogDebug("HGCalTrackCollectionProducer") << " ETA IN BARREL REGION: " << track->trackRef()->eta()
169  << " (PT: " << track->trackRef()->pt() << ")" << std::endl;
170  found = true;
171  } else {
172  LogDebug("HGCalTrackCollectionProducer")
173  << " but r=" << pt.perp() << " < diskInnerRadius=" << diskInnerRadius_ << " so skipping "
174  << std::endl;
175  }
176  } else {
177  LogDebug("HGCalTrackCollectionProducer")
178  << " but r=" << pt.perp() << " > diskOuterRadius=" << diskOuterRadius_ << " so skipping " << std::endl;
179  }
180  } else {
181  LogDebug("HGCalTrackCollectionProducer") << "Extrapolation is NOT valid!" << std::endl;
182  }
183  }
184  }
185  if (found) {
186  LogDebug("HGCalTrackCollectionProducer") << " Track going to outputInHGCal pt eta " << track->trackRef()->pt()
187  << " " << track->trackRef()->eta() << std::endl;
188  outputInHGCal->push_back(*track);
189  } else {
190  outputNotInHGCal->push_back(*track);
191  }
192  } // track loop
193 
194  evt.put(std::move(outputInHGCal), "TracksInHGCal");
195  evt.put(std::move(outputNotInHGCal), "TracksNotInHGCal");
196 }

References funct::abs(), bField_, diskInnerRadius_, diskOuterRadius_, HLT_FULL_cff::distance, DPtovPtCut_, newFWLiteAna::found, edm::Event::getByToken(), TrajectoryStateOnSurface::globalPosition(), PFTrackAlgoTools::goodPtResolution(), mps_fire::i, TrajectoryStateOnSurface::isValid(), LogDebug, mat_prop_, minusSurface_, eostools::move(), NHitCut_, trajectoryStateTransform::outerStateOnSurface(), plusSurface_, edm::ESHandle< T >::product(), DiDispStaMuonMonitor_cfi::pt, edm::Event::put(), mathSSE::sqrt(), src_, tkGeom_, HLT_FULL_cff::track, trackQuality_, PDWG_EXOHSCP_cff::tracks, useIterTracking_, and PV3DBase< T, PVType, FrameType >::z().

Member Data Documentation

◆ bField_

edm::ESHandle<MagneticField> HGCalTrackCollectionProducer::bField_
private

Definition at line 65 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ diskInnerRadius_

float HGCalTrackCollectionProducer::diskInnerRadius_
private

Definition at line 74 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ diskOuterRadius_

float HGCalTrackCollectionProducer::diskOuterRadius_
private

Definition at line 73 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ DPtovPtCut_

const std::vector<double> HGCalTrackCollectionProducer::DPtovPtCut_
private

Definition at line 59 of file HGCalTrackCollectionProducer.cc.

Referenced by produce().

◆ hgc_names_

std::array<std::string, 1> HGCalTrackCollectionProducer::hgc_names_
private

◆ hgcGeometries_

std::array<edm::ESHandle<HGCalGeometry>, 1> HGCalTrackCollectionProducer::hgcGeometries_
private

Definition at line 68 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock().

◆ mat_prop_

std::unique_ptr<PropagatorWithMaterial> HGCalTrackCollectionProducer::mat_prop_
private

Definition at line 71 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ minusSurface_

std::array<std::vector<ReferenceCountingPointer<BoundDisk> >, 1> HGCalTrackCollectionProducer::minusSurface_
private

Definition at line 69 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ NHitCut_

const std::vector<unsigned> HGCalTrackCollectionProducer::NHitCut_
private

Definition at line 60 of file HGCalTrackCollectionProducer.cc.

Referenced by produce().

◆ plusSurface_

std::array<std::vector<ReferenceCountingPointer<BoundDisk> >, 1> HGCalTrackCollectionProducer::plusSurface_
private

Definition at line 69 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ src_

edm::EDGetTokenT<edm::View<reco::PFRecTrack> > HGCalTrackCollectionProducer::src_
private

Definition at line 53 of file HGCalTrackCollectionProducer.cc.

Referenced by produce().

◆ tkGeom_

edm::ESHandle<TrackerGeometry> HGCalTrackCollectionProducer::tkGeom_
private

Definition at line 66 of file HGCalTrackCollectionProducer.cc.

Referenced by beginLuminosityBlock(), and produce().

◆ trackQuality_

const reco::TrackBase::TrackQuality HGCalTrackCollectionProducer::trackQuality_
private

Definition at line 58 of file HGCalTrackCollectionProducer.cc.

Referenced by produce().

◆ useIterTracking_

const bool HGCalTrackCollectionProducer::useIterTracking_
private

Definition at line 61 of file HGCalTrackCollectionProducer.cc.

Referenced by produce().

HGCalTrackCollectionProducer::bField_
edm::ESHandle< MagneticField > bField_
Definition: HGCalTrackCollectionProducer.cc:65
HGCalTrackCollectionProducer::src_
edm::EDGetTokenT< edm::View< reco::PFRecTrack > > src_
Definition: HGCalTrackCollectionProducer.cc:53
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
TkRotation< float >
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
HGCalTrackCollectionProducer::diskOuterRadius_
float diskOuterRadius_
Definition: HGCalTrackCollectionProducer.cc:73
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
HGCalTrackCollectionProducer::diskInnerRadius_
float diskInnerRadius_
Definition: HGCalTrackCollectionProducer.cc:74
HGCalTrackCollectionProducer::useIterTracking_
const bool useIterTracking_
Definition: HGCalTrackCollectionProducer.cc:61
ReferenceCountingPointer< BoundDisk >
HGCalTrackCollectionProducer::tkGeom_
edm::ESHandle< TrackerGeometry > tkGeom_
Definition: HGCalTrackCollectionProducer.cc:66
edm::ParameterSet::existsAs
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:171
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle
Definition: AssociativeIterator.h:50
HGCalTrackCollectionProducer::DPtovPtCut_
const std::vector< double > DPtovPtCut_
Definition: HGCalTrackCollectionProducer.cc:59
HGCalDDDConstants
Definition: HGCalDDDConstants.h:26
trajectoryStateTransform::outerStateOnSurface
TrajectoryStateOnSurface outerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:118
HGCalTrackCollectionProducer::hgc_names_
std::array< std::string, 1 > hgc_names_
Definition: HGCalTrackCollectionProducer.cc:67
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
SimpleDiskBounds
Definition: SimpleDiskBounds.h:11
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
HGCalTrackCollectionProducer::mat_prop_
std::unique_ptr< PropagatorWithMaterial > mat_prop_
Definition: HGCalTrackCollectionProducer.cc:71
HGCalTrackCollectionProducer::NHitCut_
const std::vector< unsigned > NHitCut_
Definition: HGCalTrackCollectionProducer.cc:60
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:531
Point3DBase< float, GlobalTag >
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::View
Definition: CaloClusterFwd.h:14
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
edm::ParameterSet
Definition: ParameterSet.h:47
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
HGCalDDDConstants::getTrForms
std::vector< HGCalParameters::hgtrform > getTrForms() const
Definition: HGCalDDDConstants.cc:412
HGCalTrackCollectionProducer::minusSurface_
std::array< std::vector< ReferenceCountingPointer< BoundDisk > >, 1 > minusSurface_
Definition: HGCalTrackCollectionProducer.cc:69
get
#define get
PFTrackAlgoTools::goodPtResolution
bool goodPtResolution(const reco::TrackRef &, const std::vector< double > &DPtovPtCut, const std::vector< unsigned > &NHitCut, bool useIterTracking, const reco::TrackBase::TrackQuality trackQuality)
Definition: PFTrackAlgoTools.cc:236
HGCalTrackCollectionProducer::trackQuality_
const reco::TrackBase::TrackQuality trackQuality_
Definition: HGCalTrackCollectionProducer.cc:58
HGCalTrackCollectionProducer::hgcGeometries_
std::array< edm::ESHandle< HGCalGeometry >, 1 > hgcGeometries_
Definition: HGCalTrackCollectionProducer.cc:68
reco::TrackBase::qualityByName
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:126
eostools.move
def move(src, dest)
Definition: eostools.py:511
HGCalTrackCollectionProducer::plusSurface_
std::array< std::vector< ReferenceCountingPointer< BoundDisk > >, 1 > plusSurface_
Definition: HGCalTrackCollectionProducer.cc:69
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
BeamSpotPI::Z
Definition: BeamSpotPayloadInspectorHelper.h:32
HLT_FULL_cff.distance
distance
Definition: HLT_FULL_cff.py:7733
BoundDisk
Disk BoundDisk
Definition: BoundDisk.h:54
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
IdealGeometryRecord
Definition: IdealGeometryRecord.h:25
edm::ParameterSet::getParameterSet
ParameterSet const & getParameterSet(std::string const &) const
Definition: ParameterSet.cc:2128
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
reco::TrackBase::highPurity
Definition: TrackBase.h:154