CMS 3D CMS Logo

L3MumuTrackingRegion.h
Go to the documentation of this file.
1 #ifndef HLTrigger_btau_L3MumuTrackingRegion_H
2 #define HLTrigger_btau_L3MumuTrackingRegion_H
3 
6 
16 
18 public:
20  edm::ParameterSet regionPSet = cfg.getParameter<edm::ParameterSet>("RegionPSet");
21 
22  theVertexTag = regionPSet.getParameter<edm::InputTag>("vertexSrc");
23  theVertex = (theVertexTag.label().length() > 1);
24  theInputTrkTag = regionPSet.getParameter<edm::InputTag>("TrkSrc");
25  useVtxTks = regionPSet.getParameter<bool>("UseVtxTks");
26 
27  if (theVertex)
29  if (!(theVertex && useVtxTks))
31 
32  thePtMin = regionPSet.getParameter<double>("ptMin");
33  theOriginRadius = regionPSet.getParameter<double>("originRadius");
34  theOriginHalfLength = regionPSet.getParameter<double>("originHalfLength");
35  theOriginZPos = regionPSet.getParameter<double>("vertexZDefault");
36 
37  theDeltaEta = regionPSet.getParameter<double>("deltaEtaRegion");
38  theDeltaPhi = regionPSet.getParameter<double>("deltaPhiRegion");
39  if (regionPSet.exists("searchOpt")) {
40  m_searchOpt = regionPSet.getParameter<bool>("searchOpt");
41  } else {
42  m_searchOpt = false;
43  }
45  regionPSet.getParameter<std::string>("howToUseMeasurementTracker"));
48  iC.consumes<MeasurementTrackerEvent>(regionPSet.getParameter<edm::InputTag>("measurementTrackerName"));
49  }
50  }
51 
52  ~L3MumuTrackingRegion() override {}
53 
54  std::vector<std::unique_ptr<TrackingRegion> > regions(const edm::Event& ev,
55  const edm::EventSetup& es) const override {
56  std::vector<std::unique_ptr<TrackingRegion> > result;
57 
62  measurementTracker = hmte.product();
63  }
64 
65  // optional constraint for vertex
66  // get highest Pt pixel vertex (if existing)
67  double deltaZVertex = theOriginHalfLength;
68  double originz = theOriginZPos;
69  if (theVertex) {
71  ev.getByToken(theVertexToken, vertices);
72  const reco::VertexCollection vertCollection = *(vertices.product());
73  reco::VertexCollection::const_iterator ci = vertCollection.begin();
74  if (!vertCollection.empty()) {
75  originz = ci->z();
76  } else {
77  originz = theOriginZPos;
78  deltaZVertex = 15.;
79  }
80  if (useVtxTks) {
81  for (ci = vertCollection.begin(); ci != vertCollection.end(); ci++)
82  for (reco::Vertex::trackRef_iterator trackIt = ci->tracks_begin(); trackIt != ci->tracks_end(); trackIt++) {
83  reco::TrackRef iTrk = (*trackIt).castTo<reco::TrackRef>();
84  GlobalVector dirVector((iTrk)->px(), (iTrk)->py(), (iTrk)->pz());
85  result.push_back(std::make_unique<RectangularEtaPhiTrackingRegion>(dirVector,
86  GlobalPoint(0, 0, float(ci->z())),
87  thePtMin,
89  deltaZVertex,
93  true,
95  m_searchOpt));
96  }
97  return result;
98  }
99  }
100 
103  ev.getByToken(theInputTrkToken, trks);
104  for (reco::TrackCollection::const_iterator iTrk = trks->begin(); iTrk != trks->end(); iTrk++) {
105  GlobalVector dirVector((iTrk)->px(), (iTrk)->py(), (iTrk)->pz());
106  result.push_back(std::make_unique<RectangularEtaPhiTrackingRegion>(dirVector,
107  GlobalPoint(0, 0, float(originz)),
108  thePtMin,
110  deltaZVertex,
111  theDeltaEta,
112  theDeltaPhi,
114  true,
115  measurementTracker,
116  m_searchOpt));
117  }
118  return result;
119  }
120 
121 private:
123  bool theVertex;
127 
128  bool useVtxTks;
129 
130  double thePtMin;
134 
135  double theDeltaEta;
136  double theDeltaPhi;
140 };
141 
142 #endif
T getParameter(std::string const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::EDGetTokenT< reco::TrackCollection > theInputTrkToken
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
bool ev
static UseMeasurementTracker stringToUseMeasurementTracker(const std::string &name)
edm::EDGetTokenT< reco::VertexCollection > theVertexToken
T const * product() const
Definition: Handle.h:69
edm::EDGetTokenT< MeasurementTrackerEvent > theMeasurementTrackerToken
RectangularEtaPhiTrackingRegion::UseMeasurementTracker m_howToUseMeasurementTracker
bool isUninitialized() const
Definition: EDGetToken.h:70
L3MumuTrackingRegion(const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
Definition: Vertex.h:37
std::vector< std::unique_ptr< TrackingRegion > > regions(const edm::Event &ev, const edm::EventSetup &es) const override