CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AlCaElectronTracksReducer.cc
Go to the documentation of this file.
4 
6 {
7  generalTracksToken_ = consumes<reco::TrackCollection>(iConfig.getParameter< edm::InputTag > ("generalTracksLabel"));
8  generalTracksExtraToken_ = consumes<reco::TrackExtraCollection>(iConfig.getParameter< edm::InputTag > ("generalTracksExtraLabel"));
9  electronToken_ = consumes<reco::GsfElectronCollection>(iConfig.getParameter< edm::InputTag > ("electronLabel"));
10 
11  // name of the output collection
12  alcaTrackExtraCollection_ = iConfig.getParameter<std::string>("alcaTrackExtraCollection");
13 
14  //register your products
15  produces< reco::TrackCollection > (alcaTrackCollection_) ;
16  produces< reco::TrackExtraCollection > (alcaTrackExtraCollection_) ;
17 
18 }
19 
20 
22 {}
23 
24 
25 // ------------ method called to produce the data ------------
27  const edm::EventSetup& iSetup)
28 {
29  using namespace edm;
30  using namespace std;
31  using namespace reco;
32 
33 
34  // Get GSFElectrons
36  iEvent.getByToken(electronToken_, pElectrons);
37 
38  const reco::GsfElectronCollection * electronCollection = pElectrons.product();
39 
40  Handle<TrackCollection> generalTracksHandle;
41  iEvent.getByToken(generalTracksToken_,generalTracksHandle);
42 
43  Handle<TrackExtraCollection> generalTracksExtraHandle;
44  iEvent.getByToken(generalTracksExtraToken_,generalTracksExtraHandle);
45 
46  //Create empty output collections
47  std::auto_ptr< TrackCollection > redGeneralTracksCollection (new TrackCollection) ;
48  std::auto_ptr< TrackExtraCollection > redGeneralTracksExtraCollection (new TrackExtraCollection) ;
49 
50  reco::GsfElectronCollection::const_iterator eleIt;
51 
52  for (eleIt=electronCollection->begin(); eleIt!=electronCollection->end(); eleIt++) {
53  // barrel
54 #ifndef CMSSW42X
55  TrackRef track = (eleIt-> closestTrack() ) ;
56 #else
57  TrackRef track = (eleIt-> closestCtfTrackRef());
58 #endif
59  if(track.isNull()){
60  // edm::LogError("track") << "Track Ref not found " << eleIt->energy() << "\t" << eleIt->eta();
61  continue;
62  }
63  redGeneralTracksCollection->push_back(*track);
64  if(generalTracksExtraHandle.isValid()) redGeneralTracksExtraCollection->push_back(*(track->extra()));
65  }
66 
67  //Put selected information in the event
68  iEvent.put( redGeneralTracksCollection, alcaTrackCollection_ );
69  iEvent.put( redGeneralTracksExtraCollection, alcaTrackExtraCollection_ );
70 }
71 
72 
74 
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::TrackCollection > generalTracksToken_
AlCaElectronTracksReducer(const edm::ParameterSet &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:13
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
int iEvent
Definition: GenABIO.cc:230
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:115
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
bool isNull() const
Checks for null.
Definition: Ref.h:249
virtual void produce(edm::Event &, const edm::EventSetup &)
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:11
edm::EDGetTokenT< reco::TrackExtraCollection > generalTracksExtraToken_