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  TrackRef track = (eleIt-> closestCtfTrackRef());
55  if(track.isNull()){
56  // edm::LogError("track") << "Track Ref not found " << eleIt->energy() << "\t" << eleIt->eta();
57  continue;
58  }
59  redGeneralTracksCollection->push_back(*track);
60  if(generalTracksExtraHandle.isValid()) redGeneralTracksExtraCollection->push_back(*(track->extra()));
61  }
62 
63  //Put selected information in the event
64  iEvent.put(std::move(redGeneralTracksCollection), alcaTrackCollection_ );
65  iEvent.put(std::move(redGeneralTracksExtraCollection), alcaTrackExtraCollection_ );
66 }
67 
68 
70 
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:125
AlCaElectronTracksReducer(const edm::ParameterSet &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
void produce(edm::Event &, const edm::EventSetup &) override
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
bool isValid() const
Definition: HandleBase.h:74
bool isNull() const
Checks for null.
Definition: Ref.h:248
T const * product() const
Definition: Handle.h:74
fixed size matrix
HLT enums.
edm::EDGetTokenT< reco::TrackExtraCollection > generalTracksExtraToken_
def move(src, dest)
Definition: eostools.py:511