CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SeedingRegionByTracks.cc
Go to the documentation of this file.
1 // Author: Arabella Martelli, Felice Pantaleo, Marco Rovere
2 // arabella.martelli@cern.ch, felice.pantaleo@cern.ch, marco.rovere@cern.ch
3 // Date: 06/2019
4 #include <algorithm>
5 #include <set>
6 #include <vector>
7 
13 
14 using namespace ticl;
15 
17  : SeedingRegionAlgoBase(conf, sumes),
18  tracks_token_(sumes.consumes<reco::TrackCollection>(conf.getParameter<edm::InputTag>("tracks"))),
19  cutTk_(conf.getParameter<std::string>("cutTk")),
20  propName_(conf.getParameter<std::string>("propagator")) {}
21 
23 
26  es.get<IdealGeometryRecord>().get(detectorName_, hdc);
27  hgcons_ = hdc.product();
28 
30 
33 }
34 
36  const edm::EventSetup &es,
37  std::vector<TICLSeedingRegion> &result) {
39  ev.getByToken(tracks_token_, tracks_h);
40  edm::ProductID trkId = tracks_h.id();
41  auto bFieldProd = bfield_.product();
42  const Propagator &prop = (*propagator_);
43 
44  int nTracks = tracks_h->size();
45  for (int i = 0; i < nTracks; ++i) {
46  const reco::Track &tk = (*tracks_h)[i];
47  if (!cutTk_((tk))) {
48  continue;
49  }
50 
52  int iSide = int(tk.eta() > 0);
53  TrajectoryStateOnSurface tsos = prop.propagate(fts, firstDisk_[iSide]->surface());
54  if (tsos.isValid()) {
55  result.emplace_back(tsos.globalPosition(), tsos.globalMomentum(), iSide, i, trkId);
56  }
57  }
58 }
59 
61  float zVal = hgcons_->waferZ(1, true);
62  std::pair<double, double> rMinMax = hgcons_->rangeR(zVal, true);
63 
64  for (int iSide = 0; iSide < 2; ++iSide) {
65  float zSide = (iSide == 0) ? (-1. * zVal) : zVal;
66  firstDisk_[iSide] =
67  std::make_unique<GeomDet>(Disk::build(Disk::PositionType(0, 0, zSide),
69  SimpleDiskBounds(rMinMax.first, rMinMax.second, zSide - 0.5, zSide + 0.5))
70  .get());
71  }
72 }
static const std::string detectorName_
const unsigned int nTracks(const reco::Vertex &sv)
edm::ESHandle< MagneticField > bfield_
ProductID id() const
Definition: HandleBase.cc:13
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
bool ev
std::pair< double, double > rangeR(double z, bool reco) const
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:617
static DiskPointer build(Args &&...args)
Definition: BoundDisk.h:38
const HGCalDDDConstants * hgcons_
edm::EDGetTokenT< reco::TrackCollection > tracks_token_
edm::ESHandle< Propagator > propagator_
double waferZ(int layer, bool reco) const
const StringCutObjectSelector< reco::Track > cutTk_
SeedingRegionByTracks(const edm::ParameterSet &conf, edm::ConsumesCollector &sumes)
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
fixed size matrix
HLT enums.
T get() const
Definition: EventSetup.h:73
std::unique_ptr< GeomDet > firstDisk_[2]
void initialize(const edm::EventSetup &es) override
void makeRegions(const edm::Event &ev, const edm::EventSetup &es, std::vector< TICLSeedingRegion > &result) override
FreeTrajectoryState outerFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
T const * product() const
Definition: ESHandle.h:86