CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
ConversionVertexFinder Class Reference

#include <ConversionVertexFinder.h>

Public Member Functions

 ConversionVertexFinder (const edm::ParameterSet &config)
 
TransientVertex run (std::vector< reco::TransientTrack > pair)
 
bool run (std::vector< reco::TransientTrack > pair, reco::Vertex &the_vertex)
 
 ~ConversionVertexFinder ()
 

Private Attributes

edm::ParameterSet conf_
 
KinematicConstrainedVertexFitterkcvFitter_
 
double maxDelta_
 
int maxNbrOfIterations_
 
double maxReducedChiSq_
 
double minChiSqImprovement_
 

Detailed Description

Author
N. Marinelli - Univ. of Notre Dame
Version

Definition at line 29 of file ConversionVertexFinder.h.

Constructor & Destructor Documentation

ConversionVertexFinder::ConversionVertexFinder ( const edm::ParameterSet config)

Definition at line 25 of file ConversionVertexFinder.cc.

References conf_, edm::ParameterSet::getParameter(), kcvFitter_, LogDebug, maxDelta_, maxNbrOfIterations_, maxReducedChiSq_, and minChiSqImprovement_.

25  :
26  conf_(config)
27 {
28  LogDebug("ConversionVertexFinder") << "ConversionVertexFinder CTOR " << "\n";
29  maxDelta_ = conf_.getParameter<double>("maxDelta");
30  maxReducedChiSq_ = conf_.getParameter<double>("maxReducedChiSq");
31  minChiSqImprovement_ = conf_.getParameter<double>("minChiSqImprovement");
32  maxNbrOfIterations_ = conf_.getParameter<int>("maxNbrOfIterations");
34  kcvFitter_->setParameters(conf_);
35 
36 }
#define LogDebug(id)
T getParameter(std::string const &) const
KinematicConstrainedVertexFitter * kcvFitter_
ConversionVertexFinder::~ConversionVertexFinder ( )

Definition at line 38 of file ConversionVertexFinder.cc.

References kcvFitter_, and LogDebug.

38  {
39 
40  LogDebug("ConversionVertexFinder") << "ConversionVertexFinder DTOR " << "\n";
41  delete kcvFitter_;
42 
43 }
#define LogDebug(id)
KinematicConstrainedVertexFitter * kcvFitter_

Member Function Documentation

TransientVertex ConversionVertexFinder::run ( std::vector< reco::TransientTrack pair)

Definition at line 141 of file ConversionVertexFinder.cc.

References alignCSCRings::e, cms::Exception::explainSelf(), LogDebug, metname, and KalmanVertexFitter::vertex().

Referenced by ConvertedPhotonProducer::buildCollections(), and ConversionProducer::checkVertex().

141  {
142  LogDebug("ConversionVertexFinder") << "ConversionVertexFinder run pair size " << pair.size() << "\n";
143 
144  //for ( std::vector<reco::TransientTrack>::const_iterator iTk=pair.begin(); iTk!=pair.end(); ++iTk) {
145  // LogDebug("ConversionVertexFinder") << " ConversionVertexFinder Tracks in the pair charge " << iTk->charge() << " Num of RecHits " << iTk->recHitsSize() << " inner momentum " << iTk->track().innerMomentum() << "\n";
146  //}
147 
148 
149  reco::Vertex theVertex;
150  KalmanVertexFitter fitter(true);
151  TransientVertex transientVtx;
152 
153  const std::string metname = "ConversionVertexFinder| ConversionVertexFinder";
154  try{
155 
156  transientVtx = fitter.vertex(pair);
157 
158  } catch ( cms::Exception& e ) {
159 
160 
161  edm::LogWarning(metname) << "cms::Exception caught in ConversionVertexFinder::run\n"
162  << e.explainSelf();
163 
164  }
165 
166 
167  return transientVtx;
168 
169 
170 
171 }
#define LogDebug(id)
const std::string metname
virtual std::string explainSelf() const
Definition: Exception.cc:146
bool ConversionVertexFinder::run ( std::vector< reco::TransientTrack pair,
reco::Vertex the_vertex 
)

Definition at line 45 of file ConversionVertexFinder.cc.

References ChiSquaredProbability(), conf_, gather_cfg::cout, KinematicConstrainedVertexFitter::fit(), KinematicConstrainedVertexFitterT< nTrk, nConstraint >::fit(), newFWLiteAna::found, KinematicConstrainedVertexFitter::getNit(), KinematicConstrainedVertexFitterT< nTrk, nConstraint >::getNit(), kcvFitter_, GetRecoTauVFromDQM_MC_cff::kk, scaleCards::mass, KinematicParticleFactoryFromTransientTrack::particle(), ColinearityKinematicConstraint::PhiTheta, and KinematicConstrainedVertexFitterT< nTrk, nConstraint >::setParameters().

45  {
46  bool found= false;
47 
48  if ( pair.size() < 2) return found;
49 
50  float sigma = 0.00000001;
51  float chi = 0.;
52  float ndf = 0.;
53  float mass = 0.000511;
54 
55 
57 
58  std::vector<RefCountedKinematicParticle> particles;
59 
60  particles.push_back(pFactory.particle (pair[0],mass,chi,ndf,sigma,*pair[0].innermostMeasurementState().freeState()));
61  particles.push_back(pFactory.particle (pair[1],mass,chi,ndf,sigma,*pair[1].innermostMeasurementState().freeState()));
62 
63 
64 #ifdef OldKineFit
66 
67  RefCountedKinematicTree myTree = kcvFitter_->fit(particles, &constr);
68 #else
69 
70  // bizzare way to the get the field...
71  const MagneticField* mf = pair[0].field();
72 
75  kcvFitter.setParameters(conf_);
76  RefCountedKinematicTree myTree = kcvFitter.fit(particles, &constr);
77 
78 #ifdef KineFitDebug
79 
81 
82  RefCountedKinematicTree oldTree = kcvFitter_->fit(particles, &oldconstr);
83 
84 
85  if( oldTree->isValid() ) {
86  std::cout << "old " << kcvFitter_->getNit() << std::endl;
87  RefCountedKinematicVertex gamma_dec_vertex = oldTree->currentDecayVertex();
88  if( gamma_dec_vertex->vertexIsValid())
89  std::cout << gamma_dec_vertex->chiSquared() << " " << gamma_dec_vertex->degreesOfFreedom() << std::endl;
90  std::cout << oldTree->currentParticle()->currentState().globalMomentum() <<
91  oldTree->currentParticle()->currentState().globalPosition()<< std::endl;
92  std::vector<RefCountedKinematicParticle> fStates=oldTree->finalStateParticles();
93  for (unsigned int kk=0; kk<fStates.size(); kk++) {
94  std::cout << fStates[kk]->currentState().globalMomentum() <<
95  fStates[kk]->currentState().globalPosition() << std::endl;
96  std::cout << fStates[kk]->currentState().kinematicParametersError().matrix()<<std::endl;
97  }
98  } else std::cout << "old invalid " << kcvFitter_->getNit() << std::endl;
99 
100  if( myTree->isValid() ) {
101  std::cout << "new " << kcvFitter.getNit() << std::endl;
102  RefCountedKinematicVertex gamma_dec_vertex = myTree->currentDecayVertex();
103  if( gamma_dec_vertex->vertexIsValid())
104  std::cout << gamma_dec_vertex->chiSquared() << " " << gamma_dec_vertex->degreesOfFreedom() << std::endl;
105  std::cout << myTree->currentParticle()->currentState().globalMomentum() <<
106  myTree->currentParticle()->currentState().globalPosition()<< std::endl;
107  std::vector<RefCountedKinematicParticle> fStates=myTree->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;
112  }
113  } else std::cout << "new invalid " << kcvFitter.getNit() << std::endl;
114 
115 #endif // TemplateKineFitDebug
116 
117 #endif
118 
119  if( myTree->isValid() ) {
120  myTree->movePointerToTheTop();
121  RefCountedKinematicParticle the_photon = myTree->currentParticle();
122  if (the_photon->currentState().isValid()){
123  //const ParticleMass photon_mass = the_photon->currentState().mass();
124  RefCountedKinematicVertex gamma_dec_vertex;
125  gamma_dec_vertex = myTree->currentDecayVertex();
126  if( gamma_dec_vertex->vertexIsValid() ){
127  const float chi2Prob = ChiSquaredProbability(gamma_dec_vertex->chiSquared(), gamma_dec_vertex->degreesOfFreedom());
128  if (chi2Prob>0.){// no longer cut here, only ask positive probability here
129  //const math::XYZPoint vtxPos(gamma_dec_vertex->position());
130  the_vertex = *gamma_dec_vertex;
131  found = true;
132  }
133  }
134  }
135  }
136 
137  return found;
138 }
RefCountedKinematicTree fit(std::vector< RefCountedKinematicParticle > part)
float ChiSquaredProbability(double chiSquared, double nrDOF)
tuple mass
Definition: scaleCards.py:27
KinematicConstrainedVertexFitter * kcvFitter_
RefCountedKinematicParticle particle(const reco::TransientTrack &initialTrack, const ParticleMass &massGuess, float chiSquared, float degreesOfFr, float &m_sigma) const
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

edm::ParameterSet ConversionVertexFinder::conf_
private

Definition at line 45 of file ConversionVertexFinder.h.

Referenced by ConversionVertexFinder(), and run().

KinematicConstrainedVertexFitter* ConversionVertexFinder::kcvFitter_
private

Definition at line 50 of file ConversionVertexFinder.h.

Referenced by ConversionVertexFinder(), run(), and ~ConversionVertexFinder().

double ConversionVertexFinder::maxDelta_
private

Definition at line 46 of file ConversionVertexFinder.h.

Referenced by ConversionVertexFinder().

int ConversionVertexFinder::maxNbrOfIterations_
private

Definition at line 49 of file ConversionVertexFinder.h.

Referenced by ConversionVertexFinder().

double ConversionVertexFinder::maxReducedChiSq_
private

Definition at line 47 of file ConversionVertexFinder.h.

Referenced by ConversionVertexFinder().

double ConversionVertexFinder::minChiSqImprovement_
private

Definition at line 48 of file ConversionVertexFinder.h.

Referenced by ConversionVertexFinder().