CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
PFDisplacedVertexCandidateProducer.cc
Go to the documentation of this file.
1 
23 
25 public:
27 
29 
30  void produce(edm::Event&, const edm::EventSetup&) override;
31 
32 private:
35 
39 
41 
43  bool verbose_;
44 
47 };
48 
51 
52 using namespace std;
53 using namespace edm;
54 
56  : magneticFieldToken_(esConsumes()) {
57  // --- Setup input collection names --- //
58  inputTagTracks_ = consumes<reco::TrackCollection>(iConfig.getParameter<InputTag>("trackCollection"));
59 
60  inputTagMainVertex_ = consumes<reco::VertexCollection>(iConfig.getParameter<InputTag>("mainVertexLabel"));
61 
62  inputTagBeamSpot_ = consumes<reco::BeamSpot>(iConfig.getParameter<InputTag>("offlineBeamSpotLabel"));
63 
64  verbose_ = iConfig.getUntrackedParameter<bool>("verbose");
65 
66  bool debug = iConfig.getUntrackedParameter<bool>("debug");
67 
68  // ------ Algo Parameters ------ //
69 
70  // Distance of minimal approach below which
71  // two tracks are considered as linked together
72  double dcaCut = iConfig.getParameter<double>("dcaCut");
73 
74  // Do not reconstruct vertices wich are
75  // too close to the beam pipe
76  double primaryVertexCut = iConfig.getParameter<double>("primaryVertexCut");
77 
78  //maximum distance between the DCA Point and the inner hit of the track
79  double dcaPInnerHitCut = iConfig.getParameter<double>("dcaPInnerHitCut");
80 
81  edm::ParameterSet ps_trk = iConfig.getParameter<edm::ParameterSet>("tracksSelectorParameters");
82 
83  // Collection to be produced
84  produces<reco::PFDisplacedVertexCandidateCollection>();
85 
86  // Vertex Finder parameters -----------------------------------
88  pfDisplacedVertexCandidateFinder_.setParameters(dcaCut, primaryVertexCut, dcaPInnerHitCut, ps_trk);
89 }
90 
92 
94  LogDebug("PFDisplacedVertexCandidateProducer")
95  << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run() << endl;
96 
97  // Prepare and fill useful event information for the Finder
98  auto const& theMagField = &iSetup.getData(magneticFieldToken_);
99 
101  iEvent.getByToken(inputTagTracks_, trackCollection);
102 
103  Handle<reco::VertexCollection> mainVertexHandle;
104  iEvent.getByToken(inputTagMainVertex_, mainVertexHandle);
105 
106  Handle<reco::BeamSpot> beamSpotHandle;
107  iEvent.getByToken(inputTagBeamSpot_, beamSpotHandle);
108 
109  pfDisplacedVertexCandidateFinder_.setPrimaryVertex(mainVertexHandle, beamSpotHandle);
110  pfDisplacedVertexCandidateFinder_.setInput(trackCollection, theMagField);
111 
112  // Run the finder
114 
115  if (verbose_) {
116  ostringstream str;
117  str << pfDisplacedVertexCandidateFinder_ << endl;
119  LogInfo("PFDisplacedVertexCandidateProducer") << str.str() << endl;
120  }
121 
122  std::unique_ptr<reco::PFDisplacedVertexCandidateCollection> pOutputDisplacedVertexCandidateCollection(
124 
125  iEvent.put(std::move(pOutputDisplacedVertexCandidateCollection));
126 
127  LogDebug("PFDisplacedVertexCandidateProducer")
128  << "STOP event: " << iEvent.id().event() << " in run " << iEvent.id().run() << endl;
129 }
RunNumber_t run() const
Definition: EventID.h:38
void setInput(const edm::Handle< reco::TrackCollection > &trackh, const MagneticField *magField)
EventNumber_t event() const
Definition: EventID.h:40
T getUntrackedParameter(std::string const &, T const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::EDGetTokenT< reco::TrackCollection > inputTagTracks_
Reco Tracks used to spot the nuclear interactions.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void setPrimaryVertex(edm::Handle< reco::VertexCollection > mainVertexHandle, edm::Handle< reco::BeamSpot > beamSpotHandle)
PFDisplacedVertexCandidateFinder pfDisplacedVertexCandidateFinder_
Displaced Vertex Candidates finder.
bool getData(T &iHolder) const
Definition: EventSetup.h:122
edm::EDGetTokenT< reco::BeamSpot > inputTagBeamSpot_
int iEvent
Definition: GenABIO.cc:224
void setDebug(bool debug)
sets debug printout flag
void setParameters(double dcaCut, double primaryVertexCut, double dcaPInnerHitCut, const edm::ParameterSet &ps_trk)
---—— Set different algo parameters —— ///
def move
Definition: eostools.py:511
edm::EDGetTokenT< reco::VertexCollection > inputTagMainVertex_
Input tag for main vertex to cut of dxy of secondary tracks.
void produce(edm::Event &, const edm::EventSetup &) override
Log< level::Info, false > LogInfo
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
tuple trackCollection
#define debug
Definition: HDRShower.cc:19
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EventID id() const
Definition: EventBase.h:59
void findDisplacedVertexCandidates()
-----— Main function which find vertices -----— ///
tuple cout
Definition: gather_cfg.py:144
std::unique_ptr< reco::PFDisplacedVertexCandidateCollection > transferVertexCandidates()
#define str(s)
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
#define LogDebug(id)