33 #include "CLHEP/Units/GlobalPhysicalConstants.h"
43 LogDebug(
"ConversionVertexFinder") <<
"ConversionVertexFinder CTOR " <<
"\n";
49 kcvFitter_->setParameters(
conf_);
55 LogDebug(
"ConversionVertexFinder") <<
"ConversionVertexFinder DTOR " <<
"\n";
63 if ( pair.size() < 2)
return found;
65 float sigma = 0.00000001;
68 float mass = 0.000511;
73 std::vector<RefCountedKinematicParticle> particles;
75 particles.push_back(pFactory.
particle (pair[0],mass,chi,ndf,sigma,*pair[0].innermostMeasurementState().freeState()));
76 particles.push_back(pFactory.
particle (pair[1],mass,chi,ndf,sigma,*pair[1].innermostMeasurementState().freeState()));
100 if( oldTree->isValid() ) {
103 if( gamma_dec_vertex->vertexIsValid())
104 std::cout << gamma_dec_vertex->chiSquared() <<
" " << gamma_dec_vertex->degreesOfFreedom() << std::endl;
105 std::cout << oldTree->currentParticle()->currentState().globalMomentum() <<
106 oldTree->currentParticle()->currentState().globalPosition()<< std::endl;
107 std::vector<RefCountedKinematicParticle> fStates=oldTree->finalStateParticles();
108 for (
unsigned int kk=0; kk<fStates.size(); kk++) {
109 std::cout << fStates[kk]->currentState().globalMomentum() <<
110 fStates[kk]->currentState().globalPosition() << std::endl;
111 std::cout << fStates[kk]->currentState().kinematicParametersError().matrix()<<std::endl;
115 if( myTree->isValid() ) {
118 if( gamma_dec_vertex->vertexIsValid())
119 std::cout << gamma_dec_vertex->chiSquared() <<
" " << gamma_dec_vertex->degreesOfFreedom() << std::endl;
120 std::cout << myTree->currentParticle()->currentState().globalMomentum() <<
121 myTree->currentParticle()->currentState().globalPosition()<< std::endl;
122 std::vector<RefCountedKinematicParticle> fStates=myTree->finalStateParticles();
123 for (
unsigned int kk=0; kk<fStates.size(); kk++) {
124 std::cout << fStates[kk]->currentState().globalMomentum() <<
125 fStates[kk]->currentState().globalPosition() << std::endl;
126 std::cout << fStates[kk]->currentState().kinematicParametersError().matrix()<<std::endl;
130 #endif // TemplateKineFitDebug
134 if( myTree->isValid() ) {
135 myTree->movePointerToTheTop();
137 if (the_photon->currentState().isValid()){
140 gamma_dec_vertex = myTree->currentDecayVertex();
141 if( gamma_dec_vertex->vertexIsValid() ){
142 const float chi2Prob =
ChiSquaredProbability(gamma_dec_vertex->chiSquared(), gamma_dec_vertex->degreesOfFreedom());
145 the_vertex = *gamma_dec_vertex;
157 LogDebug(
"ConversionVertexFinder") <<
"ConversionVertexFinder run pair size " << pair.size() <<
"\n";
168 const std::string
metname =
"ConversionVertexFinder| ConversionVertexFinder";
171 transientVtx = fitter.
vertex(pair);
176 edm::LogWarning(metname) <<
"cms::Exception caught in ConversionVertexFinder::run\n"
ConversionVertexFinder(const edm::ParameterSet &config)
T getParameter(std::string const &) const
RefCountedKinematicTree fit(std::vector< RefCountedKinematicParticle > part)
const std::string metname
virtual std::string explainSelf() const
double minChiSqImprovement_
virtual CachingVertex< 5 > vertex(const std::vector< reco::TransientTrack > &tracks) const
void setParameters(const edm::ParameterSet &pSet)
TransientVertex run(std::vector< reco::TransientTrack > pair)
float ChiSquaredProbability(double chiSquared, double nrDOF)
RefCountedKinematicTree fit(std::vector< RefCountedKinematicParticle > part)
~ConversionVertexFinder()
KinematicConstrainedVertexFitter * kcvFitter_
RefCountedKinematicParticle particle(const reco::TransientTrack &initialTrack, const ParticleMass &massGuess, float chiSquared, float degreesOfFr, float &m_sigma) const