CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFDisplacedVertexProducer.cc
Go to the documentation of this file.
2 
4 
8 
10 
13 
18 
21 
22 #include <set>
23 
24 using namespace std;
25 using namespace edm;
26 
28 
29  // --- Setup input collection names --- //
30 
31  inputTagVertexCandidates_
32  = iConfig.getParameter<InputTag>("vertexCandidatesLabel");
33 
34  inputTagMainVertex_
35  = iConfig.getParameter<InputTag>("mainVertexLabel");
36 
37  inputTagBeamSpot_
38  = iConfig.getParameter<InputTag>("offlineBeamSpotLabel");
39 
40  verbose_ =
41  iConfig.getUntrackedParameter<bool>("verbose");
42 
43  bool debug =
44  iConfig.getUntrackedParameter<bool>("debug");
45 
46  // ------ Algo Parameters ------ //
47 
48  // Maximal transverse distance between two minimal
49  // approach points to be used together
50  double transvSize
51  = iConfig.getParameter< double >("transvSize");
52 
53  // Maximal longitudinal distance between two minimal
54  // approach points to be used together
55  double longSize
56  = iConfig.getParameter< double >("longSize");
57 
58  // Minimal radius below which we do not reconstruct interactions
59  // Typically the position of the first Pixel layer
60  double primaryVertexCut
61  = iConfig.getParameter< double >("primaryVertexCut");
62 
63  // Radius at which no secondary tracks are availables
64  // in the barrel.For the moment we exclude the TOB barrel
65  // since 5-th track step starts the latest at first TOB
66  // layer.
67  double tobCut
68  = iConfig.getParameter< double >("tobCut");
69 
70  // Radius at which no secondary tracks are availables
71  // in the endcaps.For the moment we exclude the TEC wheel.
72  double tecCut
73  = iConfig.getParameter< double >("tecCut");
74 
75  // The minimal accepted weight for the tracks calculated in the
76  // adaptive vertex fitter to be associated to the displaced vertex
77  double minAdaptWeight
78  = iConfig.getParameter< double >("minAdaptWeight");
79 
80  edm::ParameterSet ps_trk = iConfig.getParameter<edm::ParameterSet>("tracksSelectorParameters");
81  edm::ParameterSet ps_vtx = iConfig.getParameter<edm::ParameterSet>("vertexIdentifierParameters");
82  edm::ParameterSet ps_avf = iConfig.getParameter<edm::ParameterSet>("avfParameters");
83 
84  produces<reco::PFDisplacedVertexCollection>();
85 
86  // Vertex Finder parameters -----------------------------------
87  pfDisplacedVertexFinder_.setDebug(debug);
88  pfDisplacedVertexFinder_.setParameters(transvSize, longSize,
89  primaryVertexCut, tobCut,
90  tecCut, minAdaptWeight);
91  pfDisplacedVertexFinder_.setAVFParameters(ps_avf);
92  pfDisplacedVertexFinder_.setTracksSelector(ps_trk);
93  pfDisplacedVertexFinder_.setVertexIdentifier(ps_vtx);
94 
95 }
96 
97 
98 
100 
101 
102 
103 void
105 
106 void
108  const edm::EventSetup & es) { }
109 
110 
111 void
113  const EventSetup& iSetup) {
114 
115  LogDebug("PFDisplacedVertexProducer")<<"START event: "<<iEvent.id().event()
116  <<" in run "<<iEvent.id().run()<<endl;
117 
118  // Prepare useful information for the Finder
119 
120  ESHandle<MagneticField> magField;
121  iSetup.get<IdealMagneticFieldRecord>().get(magField);
122  const MagneticField* theMagField = magField.product();
123 
124  ESHandle<GlobalTrackingGeometry> globTkGeomHandle;
125  iSetup.get<GlobalTrackingGeometryRecord>().get(globTkGeomHandle);
126 
127  ESHandle<TrackerGeometry> tkerGeomHandle;
128  iSetup.get<TrackerDigiGeometryRecord>().get(tkerGeomHandle);
129 
131  iEvent.getByLabel(inputTagVertexCandidates_, vertexCandidates);
132 
133  Handle< reco::VertexCollection > mainVertexHandle;
134  iEvent.getByLabel(inputTagMainVertex_, mainVertexHandle);
135 
136  Handle< reco::BeamSpot > beamSpotHandle;
137  iEvent.getByLabel(inputTagBeamSpot_, beamSpotHandle);
138 
139  // Fill useful event information for the Finder
140  pfDisplacedVertexFinder_.setEdmParameters(theMagField, globTkGeomHandle, tkerGeomHandle);
141  pfDisplacedVertexFinder_.setPrimaryVertex(mainVertexHandle, beamSpotHandle);
142  pfDisplacedVertexFinder_.setInput(vertexCandidates);
143 
144  // Run the finder
145  pfDisplacedVertexFinder_.findDisplacedVertices();
146 
147 
148  if(verbose_) {
149  ostringstream str;
150  //str<<pfDisplacedVertexFinder_<<endl;
151  cout << pfDisplacedVertexFinder_<<endl;
152  LogInfo("PFDisplacedVertexProducer") << str.str()<<endl;
153  }
154 
155 
156  auto_ptr< reco::PFDisplacedVertexCollection >
157  pOutputDisplacedVertexCollection(
158  pfDisplacedVertexFinder_.transferDisplacedVertices() );
159 
160 
161 
162  iEvent.put(pOutputDisplacedVertexCollection);
163 
164  LogDebug("PFDisplacedVertexProducer")<<"STOP event: "<<iEvent.id().event()
165  <<" in run "<<iEvent.id().run()<<endl;
166 
167 }
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:42
T getParameter(std::string const &) const
EventNumber_t event() const
Definition: EventID.h:44
T getUntrackedParameter(std::string const &, T const &) const
virtual void beginRun(edm::Run &r, const edm::EventSetup &c)
PFDisplacedVertexProducer(const edm::ParameterSet &)
int iEvent
Definition: GenABIO.cc:243
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:84
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
virtual void produce(edm::Event &, const edm::EventSetup &)
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
edm::EventID id() const
Definition: EventBase.h:56
tuple cout
Definition: gather_cfg.py:41
#define debug
Definition: MEtoEDMFormat.h:34
Definition: Run.h:31