CMS 3D CMS Logo

Public Member Functions | Private Attributes

PFDisplacedVertexProducer Class Reference

Producer for DisplacedVertices. More...

#include <PFDisplacedVertexProducer.h>

Inheritance diagram for PFDisplacedVertexProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

virtual void beginJob ()
virtual void beginRun (edm::Run &r, const edm::EventSetup &c)
 PFDisplacedVertexProducer (const edm::ParameterSet &)
virtual void produce (edm::Event &, const edm::EventSetup &)
 ~PFDisplacedVertexProducer ()

Private Attributes

edm::InputTag inputTagBeamSpot_
edm::InputTag inputTagMainVertex_
 Input tag for main vertex to cut of dxy of secondary tracks.
edm::InputTag inputTagVertexCandidates_
PFDisplacedVertexFinder pfDisplacedVertexFinder_
 Displaced Vertices finder.
bool verbose_
 verbose ?

Detailed Description

Producer for DisplacedVertices.

This producer makes use of DisplacedVertexFinder. This Finder fit vertex candidates out of the DisplacedVertexCandidates which contain all tracks linked together by the criterion which is by default the minimal approach distance.

Author:
Maxime Gouzevitch
Date:
November 2009

Definition at line 25 of file PFDisplacedVertexProducer.h.


Constructor & Destructor Documentation

PFDisplacedVertexProducer::PFDisplacedVertexProducer ( const edm::ParameterSet iConfig) [explicit]

Definition at line 27 of file PFDisplacedVertexProducer.cc.

References debug, edm::ParameterSet::getParameter(), and edm::ParameterSet::getUntrackedParameter().

                                                                                   {
  
  // --- Setup input collection names --- //

  inputTagVertexCandidates_ 
    = iConfig.getParameter<InputTag>("vertexCandidatesLabel");

  inputTagMainVertex_ 
    = iConfig.getParameter<InputTag>("mainVertexLabel");

  inputTagBeamSpot_ 
    = iConfig.getParameter<InputTag>("offlineBeamSpotLabel");

  verbose_ = 
    iConfig.getUntrackedParameter<bool>("verbose");

  bool debug = 
    iConfig.getUntrackedParameter<bool>("debug");

  // ------ Algo Parameters ------ //

  // Maximal transverse distance between two minimal
  // approach points to be used together
  double transvSize 
     = iConfig.getParameter< double >("transvSize");
   
  // Maximal longitudinal distance between two minimal
  // approach points to be used together
  double longSize 
     = iConfig.getParameter< double >("longSize");

  // Minimal radius below which we do not reconstruct interactions
  // Typically the position of the first Pixel layer
  double primaryVertexCut
    = iConfig.getParameter< double >("primaryVertexCut");

  // Radius at which no secondary tracks are availables
  // in the barrel.For the moment we exclude the TOB barrel
  // since 5-th track step starts the latest at first TOB
  // layer.
  double tobCut 
     = iConfig.getParameter< double >("tobCut");

  // Radius at which no secondary tracks are availables
  // in the endcaps.For the moment we exclude the TEC wheel.
  double tecCut 
     = iConfig.getParameter< double >("tecCut");

  // The minimal accepted weight for the tracks calculated in the 
  // adaptive vertex fitter to be associated to the displaced vertex 
  double minAdaptWeight
    = iConfig.getParameter< double >("minAdaptWeight");

  bool switchOff2TrackVertex
    = iConfig.getUntrackedParameter< bool >("switchOff2TrackVertex");

  edm::ParameterSet ps_trk = iConfig.getParameter<edm::ParameterSet>("tracksSelectorParameters");
  edm::ParameterSet ps_vtx = iConfig.getParameter<edm::ParameterSet>("vertexIdentifierParameters");
  edm::ParameterSet ps_avf = iConfig.getParameter<edm::ParameterSet>("avfParameters");

  produces<reco::PFDisplacedVertexCollection>();

  // Vertex Finder parameters  -----------------------------------
  pfDisplacedVertexFinder_.setDebug(debug);
  pfDisplacedVertexFinder_.setParameters(transvSize, longSize,  
                                         primaryVertexCut, tobCut, 
                                         tecCut, minAdaptWeight, switchOff2TrackVertex);
  pfDisplacedVertexFinder_.setAVFParameters(ps_avf);
  pfDisplacedVertexFinder_.setTracksSelector(ps_trk);
  pfDisplacedVertexFinder_.setVertexIdentifier(ps_vtx);
  
}
PFDisplacedVertexProducer::~PFDisplacedVertexProducer ( )

Definition at line 102 of file PFDisplacedVertexProducer.cc.

{ }

Member Function Documentation

void PFDisplacedVertexProducer::beginJob ( void  ) [virtual]

Reimplemented from edm::EDProducer.

Definition at line 107 of file PFDisplacedVertexProducer.cc.

{ }
void PFDisplacedVertexProducer::beginRun ( edm::Run r,
const edm::EventSetup c 
) [virtual]

Reimplemented from edm::EDProducer.

Definition at line 110 of file PFDisplacedVertexProducer.cc.

                                                    { }
void PFDisplacedVertexProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 115 of file PFDisplacedVertexProducer.cc.

References gather_cfg::cout, edm::EventID::event(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::EventBase::id(), LogDebug, edm::ESHandle< T >::product(), edm::Event::put(), and edm::EventID::run().

                                                   {
  
  LogDebug("PFDisplacedVertexProducer")<<"START event: "<<iEvent.id().event()
                             <<" in run "<<iEvent.id().run()<<endl;
  
  // Prepare useful information for the Finder

  ESHandle<MagneticField> magField;
  iSetup.get<IdealMagneticFieldRecord>().get(magField);
  const MagneticField* theMagField = magField.product();

  ESHandle<GlobalTrackingGeometry> globTkGeomHandle;
  iSetup.get<GlobalTrackingGeometryRecord>().get(globTkGeomHandle);

  ESHandle<TrackerGeometry> tkerGeomHandle;
  iSetup.get<TrackerDigiGeometryRecord>().get(tkerGeomHandle);

  Handle<reco::PFDisplacedVertexCandidateCollection> vertexCandidates;
  iEvent.getByLabel(inputTagVertexCandidates_, vertexCandidates);

  Handle< reco::VertexCollection > mainVertexHandle;
  iEvent.getByLabel(inputTagMainVertex_, mainVertexHandle);

  Handle< reco::BeamSpot > beamSpotHandle;
  iEvent.getByLabel(inputTagBeamSpot_, beamSpotHandle);

  // Fill useful event information for the Finder
  pfDisplacedVertexFinder_.setEdmParameters(theMagField, globTkGeomHandle, tkerGeomHandle); 
  pfDisplacedVertexFinder_.setPrimaryVertex(mainVertexHandle, beamSpotHandle);
  pfDisplacedVertexFinder_.setInput(vertexCandidates);

  // Run the finder
  pfDisplacedVertexFinder_.findDisplacedVertices();
  

  if(verbose_) {
    ostringstream  str;
    //str<<pfDisplacedVertexFinder_<<endl;
    cout << pfDisplacedVertexFinder_<<endl;
    LogInfo("PFDisplacedVertexProducer") << str.str()<<endl;
  }    


  auto_ptr< reco::PFDisplacedVertexCollection > 
    pOutputDisplacedVertexCollection( 
      pfDisplacedVertexFinder_.transferDisplacedVertices() ); 


  
  iEvent.put(pOutputDisplacedVertexCollection);
 
  LogDebug("PFDisplacedVertexProducer")<<"STOP event: "<<iEvent.id().event()
                             <<" in run "<<iEvent.id().run()<<endl;

}

Member Data Documentation

Definition at line 46 of file PFDisplacedVertexProducer.h.

Input tag for main vertex to cut of dxy of secondary tracks.

Definition at line 45 of file PFDisplacedVertexProducer.h.

Collection of DisplacedVertex Candidates used as input for the Displaced VertexFinder.

Definition at line 42 of file PFDisplacedVertexProducer.h.

Displaced Vertices finder.

Definition at line 52 of file PFDisplacedVertexProducer.h.

verbose ?

Definition at line 49 of file PFDisplacedVertexProducer.h.