forked from cms-sw/cmssw
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rebase of werdmann:revised-primaryvertexproducer on top of 13_1_0_pre1
- Loading branch information
Showing
26 changed files
with
1,729 additions
and
1,366 deletions.
There are no files selected for viewing
42 changes: 42 additions & 0 deletions
42
RecoVertex/PrimaryVertexProducer/interface/AdaptiveChisquarePrimaryVertexFitter.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
#ifndef AdaptiveChisquarePrimaryVertexFitter_h | ||
#define AdaptiveChisquarePrimaryVertexFitter_h | ||
|
||
/**\class AdaptiveChisquarePrimaryVertexFitter | ||
Description: Adapter for using the MultiPrimaryVertexFitter to fit vertices one-by-one instead of all simultaneously | ||
*/ | ||
|
||
//#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" | ||
#include "TrackingTools/TransientTrack/interface/TransientTrack.h" | ||
#include "RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexFitterBase.h" | ||
#include "RecoVertex/PrimaryVertexProducer/interface/MultiPrimaryVertexFitter.h" | ||
|
||
class AdaptiveChisquarePrimaryVertexFitter : public PrimaryVertexFitterBase { | ||
public: | ||
AdaptiveChisquarePrimaryVertexFitter(const double chi2cutoff, const double mintrkweight):fitter(new MultiPrimaryVertexFitter(chi2cutoff, mintrkweight)){}; | ||
~AdaptiveChisquarePrimaryVertexFitter() override = default; // FIXME, delete the fitter | ||
|
||
std::vector<TransientVertex> fit(const std::vector<reco::TransientTrack> & dummy, const std::vector<TransientVertex> & clusters, const reco::BeamSpot & beamspot, const bool useBeamConstraint) override{ | ||
// fit the clusters one-by-one | ||
std::vector<TransientVertex> pvs; | ||
std::vector<TransientVertex> seed(1); | ||
for(auto & cluster : clusters){ | ||
if ((useBeamConstraint && (cluster.originalTracks().size() > 1)) || (cluster.originalTracks().size() > 1)){ | ||
std::vector<reco::TransientTrack> tracklist = cluster.originalTracks(); | ||
seed[0] = cluster; | ||
auto result = fitter->fit(tracklist, seed, beamspot, useBeamConstraint); | ||
if((result.size() > 0) && (result[0].isValid())){ | ||
pvs.push_back(result[0]); | ||
} | ||
} | ||
} | ||
return pvs; | ||
}; | ||
|
||
protected: | ||
// configuration | ||
MultiPrimaryVertexFitter * fitter; // Kalman or Adaptive | ||
}; | ||
#endif |
82 changes: 0 additions & 82 deletions
82
RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ.h
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
RecoVertex/PrimaryVertexProducer/interface/MultiPrimaryVertexFitter.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#ifndef MultiPrimaryVertexFitter_h | ||
#define MultiPrimaryVertexFitter_h | ||
|
||
/**\class MultiPrimaryVertexFitter | ||
Description: simultaneaous fit of primary vertices | ||
*/ | ||
|
||
//#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" | ||
#include "TrackingTools/TransientTrack/interface/TransientTrack.h" | ||
#include "RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexFitterBase.h" | ||
|
||
typedef ROOT::Math::SMatrix<double,3> Error3; | ||
|
||
class MultiPrimaryVertexFitter : public PrimaryVertexFitterBase { | ||
public: | ||
//MultiPrimaryVertexFitter(const edm::ParameterSet &conf); | ||
MultiPrimaryVertexFitter(double chi2cutoff=2.5, double mintrkweight=0.2); | ||
~MultiPrimaryVertexFitter() override = default; | ||
|
||
std::vector<TransientVertex> fit(const std::vector<reco::TransientTrack> &, const std::vector<TransientVertex> &, const reco::BeamSpot &, const bool) override; | ||
|
||
protected: | ||
std::vector<reco::TransientTrack> input_tracks; | ||
|
||
struct TrackInfo{ | ||
float ipsig;// temp | ||
float x,y; | ||
float z; | ||
float odz2; | ||
double S11, S22, S12; | ||
Error3 C; | ||
double c[3]; | ||
double a1[3],a2[3]; | ||
double b1,b2; | ||
double d; | ||
//unsigned int kmin, kmax; | ||
std::vector<double> weight; | ||
}; | ||
|
||
void fill_trackinfo(const std::vector<reco::TransientTrack> &, const reco::BeamSpot &); | ||
void clean(const std::vector<reco::TransientTrack> & tracks, const std::vector<TransientVertex> & clusters); | ||
void fill_weights(const double beta, const reco::BeamSpot &, const double Zcutoff=0.); | ||
void dump(const std::string &, const::std::vector<TransientVertex> & clusters, const std::vector<reco::TransientTrack> & tracks, const reco::BeamSpot & beamspot, const double zmin, const double zmax, const unsigned int nit); | ||
double single_fit(const reco::BeamSpot &, float beam_weight, const bool fill_covariances = false); | ||
std::vector<TrackInfo> trackinfo; | ||
|
||
std::vector<double> xv; | ||
std::vector<double> yv; | ||
std::vector<double> zv; | ||
std::vector<double> rho_vtx; | ||
std::vector<Error3> V_vtx; | ||
std::vector<float> chi2_vtx; | ||
std::vector<float> d2Fperp_vtx; | ||
|
||
int hdump=0; // FIXME debugging only | ||
|
||
// configuration | ||
double chi2_cutoff_; | ||
double min_trackweight_; | ||
|
||
}; | ||
#endif |
33 changes: 33 additions & 0 deletions
33
RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexFitterBase.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#ifndef PrimaryVertexFitterBase_h | ||
#define PrimaryVertexFitterBase_h | ||
|
||
/**\class PrimaryVertexFitterBase | ||
Description: base class for primary vertex fitters | ||
*/ | ||
|
||
//#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
namespace edm { | ||
class ParameterSet; | ||
class ParameterSetDescription; | ||
} | ||
|
||
namespace reco { | ||
class BeamSpot; | ||
class TransientTrack; | ||
} | ||
class TransientVertex; | ||
|
||
//#include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" | ||
//#include "TrackingTools/TransientTrack/interface/TransientTrack.h" | ||
|
||
class PrimaryVertexFitterBase { | ||
public: | ||
PrimaryVertexFitterBase(const edm::ParameterSet &conf){} | ||
PrimaryVertexFitterBase(){} | ||
virtual ~PrimaryVertexFitterBase() = default; | ||
//virtual std::vector<TransientVertex> vertices(const std::vector<TransientVertex> &, const reco::BeamSpot &, const bool ) = 0; | ||
virtual std::vector<TransientVertex> fit(const std::vector<reco::TransientTrack> &, const std::vector<TransientVertex> &, const reco::BeamSpot &, const bool ) = 0; | ||
}; | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
95 changes: 0 additions & 95 deletions
95
RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexProducerAlgorithm.h
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.