CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CosmicRegionalSeedGenerator.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <memory>
3 #include <string>
4 
5 
7 
8 
12 
14 
15 #include <TMath.h>
16 
17 using namespace std;
18 using namespace trigger;
19 using namespace reco;
20 using namespace edm;
21 
23  edm::ConsumesCollector && iC) :
24  conf_(conf)
25 {
26  edm::LogInfo ("CosmicRegionalSeedGenerator") << "Begin Run:: Constructing CosmicRegionalSeedGenerator";
27 
29  ptMin_ = regionPSet.getParameter<double>("ptMin");
30  rVertex_ = regionPSet.getParameter<double>("rVertex");
31  zVertex_ = regionPSet.getParameter<double>("zVertex");
32  deltaEta_ = regionPSet.getParameter<double>("deltaEtaRegion");
33  deltaPhi_ = regionPSet.getParameter<double>("deltaPhiRegion");
34 
35  edm::ParameterSet toolsPSet = conf_.getParameter<edm::ParameterSet>("ToolsPSet");
36  thePropagatorName_ = toolsPSet.getParameter<std::string>("thePropagatorName");
37  regionBase_ = toolsPSet.getParameter<std::string>("regionBase");
38 
39  edm::ParameterSet collectionsPSet = conf_.getParameter<edm::ParameterSet>("CollectionsPSet");
40  recoMuonsCollection_ = collectionsPSet.getParameter<edm::InputTag>("recoMuonsCollection");
41  recoTrackMuonsCollection_ = collectionsPSet.getParameter<edm::InputTag>("recoTrackMuonsCollection");
42  recoL2MuonsCollection_ = collectionsPSet.getParameter<edm::InputTag>("recoL2MuonsCollection");
43 
44  edm::ParameterSet regionInJetsCheckPSet = conf_.getParameter<edm::ParameterSet>("RegionInJetsCheckPSet");
45  doJetsExclusionCheck_ = regionInJetsCheckPSet.getParameter<bool>("doJetsExclusionCheck");
46  deltaRExclusionSize_ = regionInJetsCheckPSet.getParameter<double>("deltaRExclusionSize");
47  jetsPtMin_ = regionInJetsCheckPSet.getParameter<double>("jetsPtMin");
48  recoCaloJetsCollection_ = regionInJetsCheckPSet.getParameter<edm::InputTag>("recoCaloJetsCollection");
53 
54 
55  edm::LogInfo ("CosmicRegionalSeedGenerator") << "Reco muons collection: " << recoMuonsCollection_ << "\n"
56  << "Reco tracks muons collection: " << recoTrackMuonsCollection_<< "\n"
57  << "Reco L2 muons collection: " << recoL2MuonsCollection_;
58 }
59 
60 std::vector<TrackingRegion*, std::allocator<TrackingRegion*> > CosmicRegionalSeedGenerator::regions(const edm::Event& event, const edm::EventSetup& es) const
61 {
62 
63  std::vector<TrackingRegion* > result;
64 
65 
66  //________________________________________
67  //
68  //Seeding on Sta muon (MC && Datas)
69  //________________________________________
70 
71 
72  if(regionBase_=="seedOnStaMuon"||regionBase_=="") {
73 
74  LogDebug("CosmicRegionalSeedGenerator") << "Seeding on stand alone muons ";
75 
76  //get collections
77  //+++++++++++++++
78 
79  //get the muon collection
81  event.getByToken(recoMuonsToken_,muonsHandle);
82  if (!muonsHandle.isValid())
83  {
84  edm::LogError("CollectionNotFound") << "Error::No reco muons collection (" << recoMuonsCollection_ << ") in the event - Please verify the name of the muon collection";
85  return result;
86  }
87 
88  LogDebug("CosmicRegionalSeedGenerator") << "Muons collection size = " << muonsHandle->size();
89 
90  //get the jet collection
91  edm::Handle<CaloJetCollection> caloJetsHandle;
92  event.getByToken(recoCaloJetsToken_,caloJetsHandle);
93 
94  //get the propagator
95  edm::ESHandle<Propagator> thePropagator;
96  es.get<TrackingComponentsRecord>().get(thePropagatorName_, thePropagator); // thePropagatorName = "AnalyticalPropagator"
97 
98  //get tracker geometry
99  edm::ESHandle<TrackerGeometry> theTrackerGeometry;
100  es.get<TrackerDigiGeometryRecord>().get(theTrackerGeometry);
101  //const TrackerGeometry& theTracker(*theTrackerGeometry);
102  DetId outerid;
103 
104 
105  //definition of the region
106  //+++++++++++++++++++++++++
107 
108  int nmuons = 0;
109  for (reco::MuonCollection::const_iterator staMuon = muonsHandle->begin(); staMuon != muonsHandle->end(); ++staMuon) {
110 
111  //select sta muons
112  if (!staMuon->isStandAloneMuon()) {
113  LogDebug("CosmicRegionalSeedGenerator") << "This muon is not a stand alone muon";
114  continue;
115  }
116 
117  //bit 25 as a coverage -1.4 < eta < 1.4
118  if ( abs( staMuon->standAloneMuon()->eta() ) > 1.5 ) continue;
119 
120  //debug
121  nmuons++;
122  LogDebug("CosmicRegionalSeedGenerator") << "Muon stand alone found in the collection - in muons chambers: \n "
123  << "Position = " << staMuon->standAloneMuon()->outerPosition() << "\n "
124  << "Momentum = " << staMuon->standAloneMuon()->outerMomentum() << "\n "
125  << "Eta = " << staMuon->standAloneMuon()->eta() << "\n "
126  << "Phi = " << staMuon->standAloneMuon()->phi();
127 
128  //initial position, momentum, charge
129 
130  GlobalPoint initialRegionPosition(staMuon->standAloneMuon()->referencePoint().x(), staMuon->standAloneMuon()->referencePoint().y(), staMuon->standAloneMuon()->referencePoint().z());
131  GlobalVector initialRegionMomentum(staMuon->standAloneMuon()->momentum().x(), staMuon->standAloneMuon()->momentum().y(), staMuon->standAloneMuon()->momentum().z());
132  int charge = (int) staMuon->standAloneMuon()->charge();
133 
134  LogDebug("CosmicRegionalSeedGenerator") << "Initial region - Reference point of the sta muon: \n "
135  << "Position = " << initialRegionPosition << "\n "
136  << "Momentum = " << initialRegionMomentum << "\n "
137  << "Eta = " << initialRegionPosition.eta() << "\n "
138  << "Phi = " << initialRegionPosition.phi() << "\n "
139  << "Charge = " << charge;
140 
141  //propagation on the last layers of TOB
142  if ( staMuon->standAloneMuon()->outerPosition().y()>0 ) initialRegionMomentum *=-1;
143  GlobalTrajectoryParameters glb_parameters(initialRegionPosition,
144  initialRegionMomentum,
145  charge,
146  thePropagator->magneticField());
147  FreeTrajectoryState fts(glb_parameters);
148  StateOnTrackerBound onBounds(thePropagator.product());
149  TrajectoryStateOnSurface outer = onBounds(fts);
150 
151  if (!outer.isValid())
152  {
153  //edm::LogError("FailedPropagation") << "Trajectory state on surface not valid" ;
154  LogDebug("CosmicRegionalSeedGenerator") << "Trajectory state on surface not valid" ;
155  continue;
156  }
157 
158 
159  //final position & momentum
160  GlobalPoint regionPosition = outer.globalPosition();
161  GlobalVector regionMom = outer.globalMomentum();
162 
163  LogDebug("CosmicRegionalSeedGenerator") << "Region after propagation: \n "
164  << "Position = " << outer.globalPosition() << "\n "
165  << "Momentum = " << outer.globalMomentum() << "\n "
166  << "R = " << regionPosition.perp() << " ---- z = " << regionPosition.z() << "\n "
167  << "Eta = " << outer.globalPosition().eta() << "\n "
168  << "Phi = " << outer.globalPosition().phi();
169 
170 
171  //step back
172  double stepBack = 1;
173  GlobalPoint center = regionPosition + stepBack * regionMom.unit();
174  GlobalVector v = stepBack * regionMom.unit();
175  LogDebug("CosmicRegionalSeedGenerator") << "Step back vector = " << v << "\n";
176 
177  //exclude region built in jets
178  if ( doJetsExclusionCheck_ ) {
179  double delta_R_min = 1000.;
180  for ( CaloJetCollection::const_iterator jet = caloJetsHandle->begin (); jet != caloJetsHandle->end(); jet++ ) {
181  if ( jet->pt() < jetsPtMin_ ) continue;
182 
183  double deta = center.eta() - jet->eta();
184  double dphi = fabs( center.phi() - jet->phi() );
185  if ( dphi > TMath::Pi() ) dphi = 2*TMath::Pi() - dphi;
186 
187  double delta_R = sqrt(deta*deta + dphi*dphi);
188  if ( delta_R < delta_R_min ) delta_R_min = delta_R;
189 
190  }//end loop on jets
191 
192  if ( delta_R_min < deltaRExclusionSize_ ) {
193  LogDebug("CosmicRegionalSeedGenerator") << "Region built too close from a jet";
194  continue;
195  }
196  }//end if doJetsExclusionCheck
197 
198 
199  //definition of the region
200  CosmicTrackingRegion *etaphiRegion = new CosmicTrackingRegion((-1)*regionMom,
201  center,
202  ptMin_,
203  rVertex_,
204  zVertex_,
205  deltaEta_,
206  deltaPhi_,
207  regionPSet
208  );
209 
210 
211 
212  //return the result
213  result.push_back(etaphiRegion);
214 
215  LogDebug("CosmicRegionalSeedGenerator") << "Final CosmicTrackingRegion \n "
216  << "Position = "<< center << "\n "
217  << "Direction = "<< etaphiRegion->direction() << "\n "
218  << "Distance from the region on the layer = " << (regionPosition -center).mag() << "\n "
219  << "Eta = " << center.eta() << "\n "
220  << "Phi = " << center.phi();
221 
222 
223  }//end loop on muons
224 
225  }//end if SeedOnStaMuon
226 
227 
228 
229 
230 
231  //________________________________________
232  //
233  //Seeding on cosmic muons (MC && Datas)
234  //________________________________________
235 
236 
237  if(regionBase_=="seedOnCosmicMuon") {
238 
239  LogDebug("CosmicRegionalSeedGenerator") << "Seeding on cosmic muons tracks";
240 
241  //get collections
242  //+++++++++++++++
243 
244  //get the muon collection
245  edm::Handle<reco::TrackCollection> cosmicMuonsHandle;
246  event.getByToken(recoTrackMuonsToken_,cosmicMuonsHandle);
247  if (!cosmicMuonsHandle.isValid())
248  {
249  edm::LogError("CollectionNotFound") << "Error::No cosmic muons collection (" << recoTrackMuonsCollection_ << ") in the event - Please verify the name of the muon reco track collection";
250  return result;
251  }
252 
253  LogDebug("CosmicRegionalSeedGenerator") << "Cosmic muons tracks collection size = " << cosmicMuonsHandle->size();
254 
255  //get the jet collection
256  edm::Handle<CaloJetCollection> caloJetsHandle;
257  event.getByToken(recoCaloJetsToken_,caloJetsHandle);
258 
259  //get the propagator
260  edm::ESHandle<Propagator> thePropagator;
261  es.get<TrackingComponentsRecord>().get(thePropagatorName_, thePropagator); // thePropagatorName = "AnalyticalPropagator"
262 
263  //get tracker geometry
264  edm::ESHandle<TrackerGeometry> theTrackerGeometry;
265  es.get<TrackerDigiGeometryRecord>().get(theTrackerGeometry);
266  DetId outerid;
267 
268 
269  //definition of the region
270  //+++++++++++++++++++++++++
271 
272  int nmuons = 0;
273  for (reco::TrackCollection::const_iterator cosmicMuon = cosmicMuonsHandle->begin(); cosmicMuon != cosmicMuonsHandle->end(); ++cosmicMuon) {
274 
275  //bit 25 as a coverage -1.4 < eta < 1.4
276  if ( abs( cosmicMuon->eta() ) > 1.5 ) continue;
277 
278  nmuons++;
279 
280  //initial position, momentum, charge
281  GlobalPoint initialRegionPosition(cosmicMuon->referencePoint().x(), cosmicMuon->referencePoint().y(), cosmicMuon->referencePoint().z());
282  GlobalVector initialRegionMomentum(cosmicMuon->momentum().x(), cosmicMuon->momentum().y(), cosmicMuon->momentum().z());
283  int charge = (int) cosmicMuon->charge();
284 
285  LogDebug("CosmicRegionalSeedGenerator") << "Position and momentum of the muon track in the muon chambers: \n "
286  << "x = " << cosmicMuon->outerPosition().x() << "\n "
287  << "y = " << cosmicMuon->outerPosition().y() << "\n "
288  << "y = " << cosmicMuon->pt() << "\n "
289  << "Initial region - Reference point of the cosmic muon track: \n "
290  << "Position = " << initialRegionPosition << "\n "
291  << "Momentum = " << initialRegionMomentum << "\n "
292  << "Eta = " << initialRegionPosition.eta() << "\n "
293  << "Phi = " << initialRegionPosition.phi() << "\n "
294  << "Charge = " << charge;
295 
296  //propagation on the last layers of TOB
297  if ( cosmicMuon->outerPosition().y()>0 && cosmicMuon->momentum().y()<0 ) initialRegionMomentum *=-1;
298  GlobalTrajectoryParameters glb_parameters(initialRegionPosition,
299  initialRegionMomentum,
300  charge,
301  thePropagator->magneticField());
302  FreeTrajectoryState fts(glb_parameters);
303  StateOnTrackerBound onBounds(thePropagator.product());
304  TrajectoryStateOnSurface outer = onBounds(fts);
305 
306  if (!outer.isValid())
307  {
308  //edm::LogError("FailedPropagation") << "Trajectory state on surface not valid" ;
309  LogDebug("CosmicRegionalSeedGenerator") << "Trajectory state on surface not valid" ;
310  continue;
311  }
312 
313 
314  //final position & momentum
315  GlobalPoint regionPosition = outer.globalPosition();
316  GlobalVector regionMom = outer.globalMomentum();
317 
318  LogDebug("CosmicRegionalSeedGenerator") << "Region after propagation: \n "
319  << "Position = " << outer.globalPosition() << "\n "
320  << "Momentum = " << outer.globalMomentum() << "\n "
321  << "R = " << regionPosition.perp() << " ---- z = " << regionPosition.z() << "\n "
322  << "Eta = " << outer.globalPosition().eta() << "\n "
323  << "Phi = " << outer.globalPosition().phi();
324 
325 
326  //step back
327  double stepBack = 1;
328  GlobalPoint center = regionPosition + stepBack * regionMom.unit();
329  GlobalVector v = stepBack * regionMom.unit();
330  LogDebug("CosmicRegionalSeedGenerator") << "Step back vector = " << v << "\n";
331 
332  //exclude region built in jets
333  if ( doJetsExclusionCheck_ ) {
334  double delta_R_min = 1000.;
335  for ( CaloJetCollection::const_iterator jet = caloJetsHandle->begin (); jet != caloJetsHandle->end(); jet++ ) {
336  if ( jet->pt() < jetsPtMin_ ) continue;
337 
338  double deta = center.eta() - jet->eta();
339  double dphi = fabs( center.phi() - jet->phi() );
340  if ( dphi > TMath::Pi() ) dphi = 2*TMath::Pi() - dphi;
341 
342  double delta_R = sqrt(deta*deta + dphi*dphi);
343  if ( delta_R < delta_R_min ) delta_R_min = delta_R;
344 
345  }//end loop on jets
346 
347  if ( delta_R_min < deltaRExclusionSize_ ) {
348  LogDebug("CosmicRegionalSeedGenerator") << "Region built too close from a jet";
349  continue;
350  }
351  }// end if doJetsExclusionCheck
352 
353  //definition of the region
354  CosmicTrackingRegion *etaphiRegion = new CosmicTrackingRegion((-1)*regionMom,
355  center,
356  ptMin_,
357  rVertex_,
358  zVertex_,
359  deltaEta_,
360  deltaPhi_,
361  regionPSet
362  );
363 
364 
365  //return the result
366  result.push_back(etaphiRegion);
367 
368  LogDebug("CosmicRegionalSeedGenerator") << "Final CosmicTrackingRegion \n "
369  << "Position = "<< center << "\n "
370  << "Direction = "<< etaphiRegion->direction() << "\n "
371  << "Distance from the region on the layer = " << (regionPosition -center).mag() << "\n "
372  << "Eta = " << center.eta() << "\n "
373  << "Phi = " << center.phi();
374 
375  }//end loop on muons
376 
377  }//end if SeedOnCosmicMuon
378 
379 
380  //________________________________________
381  //
382  //Seeding on L2 muons (MC && Datas)
383  //________________________________________
384 
385  if(regionBase_=="seedOnL2Muon") {
386 
387  LogDebug("CosmicRegionalSeedGenerator") << "Seeding on L2 muons";
388 
389  //get collections
390  //+++++++++++++++
391 
392  //get the muon collection
394  event.getByToken(recoL2MuonsToken_,L2MuonsHandle);
395 
396  if (!L2MuonsHandle.isValid())
397  {
398  edm::LogError("CollectionNotFound") << "Error::No L2 muons collection (" << recoL2MuonsCollection_ <<") in the event - Please verify the name of the L2 muon collection";
399  return result;
400  }
401 
402  LogDebug("CosmicRegionalSeedGenerator") << "L2 muons collection size = " << L2MuonsHandle->size();
403 
404  //get the propagator
405  edm::ESHandle<Propagator> thePropagator;
406  es.get<TrackingComponentsRecord>().get(thePropagatorName_, thePropagator); // thePropagatorName = "AnalyticalPropagator"
407 
408  //get tracker geometry
409  edm::ESHandle<TrackerGeometry> theTrackerGeometry;
410  es.get<TrackerDigiGeometryRecord>().get(theTrackerGeometry);
411  DetId outerid;
412 
413 
414  //definition of the region
415  //+++++++++++++++++++++++++
416 
417  int nmuons = 0;
418  for (reco::RecoChargedCandidateCollection::const_iterator L2Muon = L2MuonsHandle->begin(); L2Muon != L2MuonsHandle->end(); ++L2Muon) {
419  reco::TrackRef tkL2Muon = L2Muon->get<reco::TrackRef>();
420 
421  //bit 25 as a coverage -1.4 < eta < 1.4
422  if ( abs( tkL2Muon->eta() ) > 1.5 ) continue;
423 
424  nmuons++;
425 
426  //initial position, momentum, charge
427  GlobalPoint initialRegionPosition(tkL2Muon->referencePoint().x(), tkL2Muon->referencePoint().y(), tkL2Muon->referencePoint().z());
428  GlobalVector initialRegionMomentum(tkL2Muon->momentum().x(), tkL2Muon->momentum().y(), tkL2Muon->momentum().z());
429  int charge = (int) tkL2Muon->charge();
430 
431  LogDebug("CosmicRegionalSeedGenerator") << "Position and momentum of the L2 muon track in the muon chambers: \n "
432  << "x = " << tkL2Muon->outerPosition().x() << "\n "
433  << "y = " << tkL2Muon->outerPosition().y() << "\n "
434  << "y = " << tkL2Muon->pt() << "\n "
435  << "Initial region - Reference point of the L2 muon track: \n "
436  << "Position = " << initialRegionPosition << "\n "
437  << "Momentum = " << initialRegionMomentum << "\n "
438  << "Eta = " << initialRegionPosition.eta() << "\n "
439  << "Phi = " << initialRegionPosition.phi() << "\n "
440  << "Charge = " << charge;
441 
442 
443  //seeding only in the bottom
444  if ( tkL2Muon->outerPosition().y() > 0 )
445  {
446  LogDebug("CosmicRegionalSeedGenerator") << "L2 muon in the TOP --- Region not created";
447  return result;
448  }
449 
450  GlobalTrajectoryParameters glb_parameters(initialRegionPosition,
451  initialRegionMomentum,
452  charge,
453  thePropagator->magneticField());
454  FreeTrajectoryState fts(glb_parameters);
455  StateOnTrackerBound onBounds(thePropagator.product());
456  TrajectoryStateOnSurface outer = onBounds(fts);
457 
458  if (!outer.isValid())
459  {
460  //edm::LogError("FailedPropagation") << "Trajectory state on surface not valid" ;
461  LogDebug("CosmicRegionalSeedGenerator") << "Trajectory state on surface not valid" ;
462  continue;
463  }
464 
465 
466  //final position & momentum
467  GlobalPoint regionPosition = outer.globalPosition();
468  GlobalVector regionMom = outer.globalMomentum();
469 
470  LogDebug("CosmicRegionalSeedGenerator") << "Region after propagation: \n "
471  << "Position = " << outer.globalPosition() << "\n "
472  << "Momentum = " << outer.globalMomentum() << "\n "
473  << "R = " << regionPosition.perp() << " ---- z = " << regionPosition.z() << "\n "
474  << "Eta = " << outer.globalPosition().eta() << "\n "
475  << "Phi = " << outer.globalPosition().phi();
476 
477 
478  //step back
479  double stepBack = 1;
480  GlobalPoint center = regionPosition + stepBack * regionMom.unit();
481  GlobalVector v = stepBack * regionMom.unit();
482  LogDebug("CosmicRegionalSeedGenerator") << "Step back vector = " << v << "\n";
483 
484 
485  //definition of the region
486  CosmicTrackingRegion *etaphiRegion = new CosmicTrackingRegion((-1)*regionMom,
487  center,
488  ptMin_,
489  rVertex_,
490  zVertex_,
491  deltaEta_,
492  deltaPhi_,
493  regionPSet
494  );
495 
496  result.push_back(etaphiRegion);
497 
498  LogDebug("CosmicRegionalSeedGenerator") << "Final L2TrackingRegion \n "
499  << "Position = "<< center << "\n "
500  << "Direction = "<< etaphiRegion->direction() << "\n "
501  << "Distance from the region on the layer = " << (regionPosition -center).mag() << "\n "
502  << "Eta = " << center.eta() << "\n "
503  << "Phi = " << center.phi();
504 
505 
506  }//end loop on muons
507 
508  }//end if SeedOnL2Muon
509 
510  return result;
511 
512 }
513 
#define LogDebug(id)
edm::EDGetTokenT< reco::TrackCollection > recoTrackMuonsToken_
const double Pi
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::CaloJetCollection > recoCaloJetsToken_
T perp() const
Definition: PV3DBase.h:72
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:10
double charge(const std::vector< uint8_t > &Ampls)
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
GlobalVector const & direction() const
the direction around which region is constructed
T sqrt(T t)
Definition: SSEVec.h:48
T z() const
Definition: PV3DBase.h:64
tuple result
Definition: query.py:137
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::EDGetTokenT< reco::MuonCollection > recoMuonsToken_
double delta_R(double eta1, double phi1, double eta2, double phi2)
Definition: AnglesUtil.h:116
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bool isValid() const
Definition: HandleBase.h:76
tuple conf
Definition: dbtoconf.py:185
Vector3DBase unit() const
Definition: Vector3DBase.h:57
std::vector< RecoChargedCandidate > RecoChargedCandidateCollection
collectin of RecoChargedCandidate objects
Definition: DetId.h:18
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
T eta() const
Definition: PV3DBase.h:76
virtual std::vector< TrackingRegion * > regions(const edm::Event &event, const edm::EventSetup &es) const
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:242
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > recoL2MuonsToken_
CosmicRegionalSeedGenerator(const edm::ParameterSet &conf, edm::ConsumesCollector &&iC)
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects