Belle II Software  release-08-01-10
GFRaveVertex.cc
1 /* Copyright 2008-2010, Technische Universitaet Muenchen,
2  Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3 
4  This file is part of GENFIT.
5 
6  GENFIT is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  GENFIT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 
21 #include "GFRaveVertex.h"
22 #include "GFRaveConverters.h"
23 #include <Exception.h>
24 
25 #include <iostream>
26 
27 namespace genfit {
28 
29 //#define COUNT
30 
31 #ifdef COUNT
32 static int instCount(0);
33 #endif
34 
35 GFRaveVertex::GFRaveVertex() :
36  cov_(3,3),
37  ndf_(0),
38  chi2_(0),
39  id_(-1)
40 {
41 #ifdef COUNT
42  std::cerr << "GFRaveVertex::GFRaveVertex() - Number of objects: " << ++instCount << std::endl;
43 #endif
44 }
45 
46 
47 GFRaveVertex::GFRaveVertex(const TVector3 & pos, const TMatrixDSym& cov,
48  const std::vector < GFRaveTrackParameters* > & smoothedTracks,
49  double ndf, double chi2, int id) :
50  pos_(pos),
51  cov_(cov),
52  ndf_(ndf),
53  chi2_(chi2),
54  id_(id),
55  smoothedTracks_(smoothedTracks)
56 {
57  if (cov_.GetNrows()!=3 || cov_.GetNcols()!=3) {
58  Exception exc("GFRaveVertex ==> Covariance is not 3x3!",__LINE__,__FILE__);
59  throw exc;
60  }
61 
62 #ifdef COUNT
63  std::cerr << "GFRaveVertex::GFRaveVertex(...) - Number of objects: " << ++instCount << std::endl;
64 #endif
65 }
66 
67 
68 GFRaveVertex::GFRaveVertex(const GFRaveVertex & vertex) :
69  TObject(vertex),
70  pos_(vertex.pos_),
71  cov_(vertex.cov_),
72  ndf_(vertex.ndf_),
73  chi2_(vertex.chi2_),
74  id_(vertex.id_)
75 {
76  unsigned int nPar = vertex.smoothedTracks_.size();
77  smoothedTracks_.reserve(nPar);
78  for (unsigned int i=0; i<nPar; ++i) {
79  smoothedTracks_.push_back(new GFRaveTrackParameters(*(vertex.smoothedTracks_[i])));
80  }
81 
82 #ifdef COUNT
83  std::cerr << "GFRaveVertex::GFRaveVertex(GFRaveVertex) - Number of objects: " << ++instCount << std::endl;
84 #endif
85 }
86 
87 
88 GFRaveVertex& GFRaveVertex::operator=(GFRaveVertex other) {
89  swap(other);
90  return *this;
91 }
92 
93 
94 void GFRaveVertex::swap(GFRaveVertex& other) {
95  std::swap(this->pos_, other.pos_);
96  this->cov_.ResizeTo(other.cov_);
97  std::swap(this->cov_, other.cov_);
98  std::swap(this->ndf_, other.ndf_);
99  std::swap(this->chi2_, other.chi2_);
100  std::swap(this->id_, other.id_);
101  std::swap(this->smoothedTracks_, other.smoothedTracks_);
102 }
103 
104 
105 GFRaveVertex::~GFRaveVertex(){
106  unsigned int nPar = smoothedTracks_.size();
107  for (unsigned int i=0; i<nPar; ++i) {
108  delete smoothedTracks_[i];
109  }
110 
111 #ifdef COUNT
112  std::cerr << "GFRaveVertex::~GFRaveVertex() - Number of objects: " << --instCount << std::endl;
113 #endif
114 }
115 
116 
117 void
118 GFRaveVertex::Print(const Option_t*) const {
119  std::cout << "GFRaveVertex\n";
120  std::cout << "Position: "; getPos().Print();
121  std::cout << "Covariance: "; getCov().Print();
122  std::cout << "Ndf: " << getNdf() << ", Chi2: " << getChi2() << ", Id: " << getId() << "\n";
123  std::cout << "Number of tracks: " << getNTracks() << "\n";
124  for (unsigned int i=0; i<getNTracks(); ++i) {
125  std::cout << " track " << i << ":\n"; getParameters(i)->Print();
126  }
127 }
128 
129 } /* End of namespace genfit */
130 
Defines for I/O streams used for error and debug printing.