CMS 3D CMS Logo

DataMixingGeneralTrackWorker.cc
Go to the documentation of this file.
1 // File: DataMixingGeneralTrackWorker.cc
2 // Description: see DataMixingGeneralTrackWorker.h
3 // Author: Mike Hildreth, University of Notre Dame
4 //
5 //--------------------------------------------
6 
7 #include <map>
8 #include <memory>
10 
12 //
13 //
15 
16 using namespace std;
17 
18 namespace edm
19 {
20 
21  // Virtual constructor
22 
23  DataMixingGeneralTrackWorker::DataMixingGeneralTrackWorker() { }
24 
25  // Constructor
26  DataMixingGeneralTrackWorker::DataMixingGeneralTrackWorker(const edm::ParameterSet& ps, edm::ConsumesCollector && iC)
27  {
28 
29  // get the subdetector names
30  // this->getSubdetectorNames(); //something like this may be useful to check what we are supposed to do...
31 
32  // declare the products to produce
33 
34  GeneralTrackLabelSig_ = ps.getParameter<edm::InputTag>("GeneralTrackLabelSig");
35 
36  GeneralTrackPileInputTag_ = ps.getParameter<edm::InputTag>("GeneralTrackPileInputTag");
37 
38  GeneralTrackCollectionDM_ = ps.getParameter<std::string>("GeneralTrackDigiCollectionDM");
39 
40  GTrackSigToken_ = iC.consumes<reco::TrackCollection>(GeneralTrackLabelSig_);
41  GTrackPileToken_ = iC.consumes<reco::TrackCollection>(GeneralTrackPileInputTag_);
42 
43  }
44 
45 
46  // Virtual destructor needed.
47  DataMixingGeneralTrackWorker::~DataMixingGeneralTrackWorker() {
48  }
49 
50 
51 
52  void DataMixingGeneralTrackWorker::addGeneralTrackSignals(const edm::Event &e) {
53 
54  // Create new track list; Rely on the fact that addSignals gets called first...
55 
56  NewTrackList_ = std::unique_ptr<reco::TrackCollection>(new reco::TrackCollection());
57 
58  // grab tracks, store copy
59 
60  //edm::Handle<reco::TrackCollection> generalTrkHandle;
61  //e.getByLabel("generalTracks", generalTrkHandle);
63  e.getByToken(GTrackSigToken_, tracks);
64 
65  if (tracks.isValid()) {
66  for (reco::TrackCollection::const_iterator track = tracks->begin(); track != tracks->end(); ++track) {
67  NewTrackList_->push_back(*track);
68  }
69 
70  }
71 
72  } // end of addGeneralTrackSignals
73 
74 
75 
76  void DataMixingGeneralTrackWorker::addGeneralTrackPileups(const int bcr, const EventPrincipal *ep, unsigned int eventNr,
77  ModuleCallingContext const* mcc) {
78  LogDebug("DataMixingGeneralTrackWorker") <<"\n===============> adding pileups from event "<<ep->id()<<" for bunchcrossing "<<bcr;
79 
80 
81  std::shared_ptr<Wrapper<reco::TrackCollection > const> inputPTR =
82  getProductByTag<reco::TrackCollection >(*ep, GeneralTrackPileInputTag_, mcc);
83 
84  if(inputPTR ) {
85 
86  const reco::TrackCollection *tracks = const_cast< reco::TrackCollection * >(inputPTR->product());
87 
88  // grab tracks, store copy
89 
90 
91  for (reco::TrackCollection::const_iterator track = tracks->begin(); track != tracks->end(); ++track) {
92  NewTrackList_->push_back(*track);
93  }
94 
95  }
96 
97  }
98 
99 
100 
101  void DataMixingGeneralTrackWorker::putGeneralTrack(edm::Event &e) {
102 
103  // collection of Tracks to put in the event
104 
105  // put the collection of digis in the event
106  LogInfo("DataMixingGeneralTrackWorker") << "total # Merged Tracks: " << NewTrackList_->size() ;
107 
108  // put collection
109 
110  e.put(std::move(NewTrackList_), GeneralTrackCollectionDM_);
111 
112  // clear local storage for this event
113  //NewTrackList_.clear();
114  }
115 
116 } //edm
#define LogDebug(id)
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:137
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
EventID const & id() const
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
HLT enums.
def move(src, dest)
Definition: eostools.py:511