LCFIVertex  0.7.2
decaysignificance.cpp
1 #include <algo/inc/decaysignificance.h>
2 #include <inc/vertex.h>
3 #include <inc/decaychain.h>
4 #include <inc/jet.h>
5 #include <inc/event.h>
6 
7 #include <vector>
8 #include <string>
9 #include <map>
10 
11 
12 namespace vertex_lcfi
13 {
15  {
16  return _Name;
17  }
18 
19  std::vector<string> VertexDecaySignificance::parameterNames() const
20  {
21  return _ParameterNames;
22  }
23 
24  std::vector<string> VertexDecaySignificance::parameterValues() const
25  {
26  return _ParameterValues;
27  }
28 
29  void VertexDecaySignificance::setStringParameter(const string & Parameter, const string & Value)
30  {
31  this->badParameter(Parameter);
32  }
33 
34  void VertexDecaySignificance::setDoubleParameter(const string & Parameter, const double Value)
35  {
36  this->badParameter(Parameter);
37  }
38 
39  void VertexDecaySignificance::setPointerParameter(const string & Parameter, void * Value)
40  {
41  this->badParameter(Parameter);
42  }
43 
44  std::map<DecaySignificanceType ,double> VertexDecaySignificance::calculateFor(DecayChain* MyDecayChain) const
45  {
46  double distance = 0;
47  double significance = 0;
48  double maxsig = 0;
49  double maxdistance = 0;
50  double error = 0;
51  std::map<DecaySignificanceType,double> ResultMap;
52 
53  if (MyDecayChain->vertices().size()>1) //If we have more than just the IP
54  {
55  //Look at the distances between vertices.
56  for (std::vector<Vertex*>::const_iterator iVertex= ++(MyDecayChain->vertices().begin()); iVertex != MyDecayChain->vertices().end() ;++iVertex)
57  {
58  Vertex* previousVertex;
59  //If this is the first secondary then we chould use the event IP not the vertex result IP
60  if (iVertex == ++(MyDecayChain->vertices().begin()))
61  {
62  previousVertex = MyDecayChain->jet()->event()->ipVertex();
63  }
64  else
65  {
66  previousVertex = *(iVertex - 1);
67  }
68  //Calculate the significance.
69  distance = (*iVertex)->distanceToVertex( previousVertex ,vertex_lcfi::util::ThreeD );
70  error = (*iVertex)->distanceToVertexError( previousVertex ,vertex_lcfi::util::ThreeD );
71  significance = distance/error;
72 
73  //keep biggest
74  if (significance > maxsig)
75  {
76  maxsig = significance;
77  maxdistance = distance;
78  }
79  }
80  }
81 
82  ResultMap[Significance] = maxsig;
83  ResultMap[Distance] = maxdistance;
84  //return distance
85  return ResultMap;
86  }
87 
88 
89 
90 
91 }
Vertex * ipVertex() const
Event Vertex.
Definition: event.cpp:60
std::vector< string > parameterValues() const
Parameter Values.
Event * event() const
Event.
Definition: jet.cpp:18
void setStringParameter(const string &Parameter, const string &Value)
Set String Parameter.
std::vector< string > parameterNames() const
Parameter Names.
const std::vector< Vertex * > & vertices() const
Vertices contained in DecayChain.
Definition: decaychain.cpp:80
double distanceToVertex(Vertex *FarVertex, Projection Proj) const
Distance to another vertex.
Definition: vertex.cpp:90
std::map< DecaySignificanceType, double > calculateFor(DecayChain *MyDecayChain) const
Run the algorithm on a Jet.
void setDoubleParameter(const string &Parameter, const double Value)
Set Double Parameter.
void setPointerParameter(const string &Parameter, void *Value)
Set Pointer Parameter.