CMS 3D CMS Logo

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 
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  auto redGeneralTracksCollection = std::make_unique<TrackCollection>();
48  auto redGeneralTracksExtraCollection = std::make_unique<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(std::move(redGeneralTracksCollection), alcaTrackCollection_ );
69  iEvent.put(std::move(redGeneralTracksExtraCollection), alcaTrackExtraCollection_ );
70 }
71 
72 
74 
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::TrackCollection > generalTracksToken_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:122
AlCaElectronTracksReducer(const edm::ParameterSet &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
int iEvent
Definition: GenABIO.cc:230
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
bool isValid() const
Definition: HandleBase.h:74
bool isNull() const
Checks for null.
Definition: Ref.h:249
virtual void produce(edm::Event &, const edm::EventSetup &)
T const * product() const
Definition: Handle.h:81
fixed size matrix
HLT enums.
edm::EDGetTokenT< reco::TrackExtraCollection > generalTracksExtraToken_
def move(src, dest)
Definition: eostools.py:510