Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-01-28 00:23:19

0001 /////////////////////////   OBSOLETE    ///////////////////
0002 #ifndef PrimaryVertexProducerAlgorithm_H
0003 #define PrimaryVertexProducerAlgorithm_H
0004 // -*- C++ -*-
0005 //
0006 // Package:    PrimaryVertexProducerAlgorithm
0007 // Class:      PrimaryVertexProducerAlgorithm
0008 //
0009 /**\class PrimaryVertexProducerAlgorithm PrimaryVertexProducerAlgorithm.cc RecoVertex/PrimaryVertexProducerAlgorithm/src/PrimaryVertexProducerAlgorithm.cc
0010 
0011  Description: allow redoing the primary vertex reconstruction from a list of tracks, considered obsolete
0012 
0013  Implementation:
0014      <Notes on implementation>
0015 */
0016 //
0017 // Original Author:  Pascal Vanlaer
0018 //         Created:  Tue Feb 28 11:06:34 CET 2006
0019 //
0020 //
0021 
0022 // system include files
0023 #include <memory>
0024 
0025 // user include files
0026 #include "FWCore/Framework/interface/Frameworkfwd.h"
0027 #include "FWCore/Framework/interface/Event.h"
0028 #include "FWCore/Framework/interface/EventSetup.h"
0029 
0030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0031 #include "FWCore/Utilities/interface/InputTag.h"
0032 
0033 #include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h"
0034 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
0035 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFindingBase.h"
0036 #include "RecoVertex/PrimaryVertexProducer/interface/TrackClusterizerInZ.h"
0037 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ_vect.h"
0038 
0039 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFinding.h"
0040 #include "RecoVertex/PrimaryVertexProducer/interface/HITrackFilterForPVFinding.h"
0041 #include "RecoVertex/PrimaryVertexProducer/interface/GapClusterizerInZ.h"
0042 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ.h"
0043 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
0044 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
0045 //#include "RecoVertex/VertexTools/interface/VertexDistanceXY.h"
0046 #include "RecoVertex/VertexPrimitives/interface/VertexException.h"
0047 #include <algorithm>
0048 #include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
0049 #include "RecoVertex/VertexTools/interface/VertexCompatibleWithBeam.h"
0050 
0051 //
0052 // class declaration
0053 //
0054 
0055 class PrimaryVertexProducerAlgorithm : public VertexReconstructor {
0056 public:
0057   explicit PrimaryVertexProducerAlgorithm(const edm::ParameterSet&);
0058   ~PrimaryVertexProducerAlgorithm() override;
0059 
0060   // obsolete method
0061   std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack>& tracks) const override;
0062 
0063   virtual std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack>& tracks,
0064                                                 const reco::BeamSpot& beamSpot,
0065                                                 const std::string& label = "") const;
0066   /** Clone method
0067    */
0068   PrimaryVertexProducerAlgorithm* clone() const override { return new PrimaryVertexProducerAlgorithm(*this); }
0069 
0070   // access to config
0071   edm::ParameterSet config() const { return theConfig; }
0072   edm::InputTag trackLabel;
0073   edm::InputTag beamSpotLabel;
0074 
0075 private:
0076   using VertexReconstructor::vertices;
0077   // ----------member data ---------------------------
0078   TrackFilterForPVFindingBase* theTrackFilter;
0079   TrackClusterizerInZ* theTrackClusterizer;
0080 
0081   // vtx fitting algorithms
0082   struct algo {
0083     VertexFitter<5>* fitter;
0084     VertexCompatibleWithBeam* vertexSelector;
0085     std::string label;
0086     bool useBeamConstraint;
0087     double minNdof;
0088   };
0089 
0090   std::vector<algo> algorithms;
0091 
0092   edm::ParameterSet theConfig;
0093   bool fVerbose;
0094 };
0095 #endif