1 |
loizides |
1.1 |
//--------------------------------------------------------------------------------------------------
|
2 |
paus |
1.4 |
// $Id: DecayPart.h,v 1.3 2008/07/31 13:29:35 bendavid Exp $
|
3 |
loizides |
1.1 |
//
|
4 |
|
|
// DecayPart
|
5 |
|
|
//
|
6 |
|
|
// Implementation of a decay particle class for use in vertexing based analyses. The contents of a
|
7 |
|
|
// decay particle is basically its link to the particles it decays to. This will be hopefully at
|
8 |
|
|
// some point a useful and good implementation. See the double dispatcher doAction(MyAction).
|
9 |
|
|
//
|
10 |
|
|
// Author List: Ch.Paus
|
11 |
|
|
//--------------------------------------------------------------------------------------------------
|
12 |
|
|
|
13 |
|
|
#ifndef MITEDM_DECAYPART_H
|
14 |
|
|
#define MITEDM_DECAYPART_H
|
15 |
|
|
|
16 |
|
|
#include <iostream>
|
17 |
|
|
#include <vector>
|
18 |
|
|
#include "CLHEP/Vector/LorentzVector.h"
|
19 |
|
|
#include "CLHEP/Geometry/Point3D.h"
|
20 |
|
|
#include "CLHEP/Matrix/SymMatrix.h"
|
21 |
|
|
#include "MitEdm/DataFormats/interface/Types.h"
|
22 |
|
|
#include "MitEdm/DataFormats/interface/BasePart.h"
|
23 |
bendavid |
1.2 |
#include "MitEdm/DataFormats/interface/BasePartFwd.h"
|
24 |
loizides |
1.1 |
|
25 |
|
|
namespace mitedm
|
26 |
|
|
{
|
27 |
|
|
class BasePartAction;
|
28 |
|
|
class DecayPart : public BasePart
|
29 |
|
|
{
|
30 |
|
|
|
31 |
|
|
public:
|
32 |
|
|
// Decay type
|
33 |
|
|
enum DecayType {Fast, Slow};
|
34 |
|
|
|
35 |
|
|
DecayPart() {}
|
36 |
|
|
DecayPart(int pid) {}
|
37 |
bendavid |
1.3 |
DecayPart(int pid, DecayType dType);
|
38 |
loizides |
1.1 |
|
39 |
|
|
// Accessors
|
40 |
|
|
DecayType decayType () const { return decayType_; }
|
41 |
|
|
|
42 |
|
|
// Override recursion helper method
|
43 |
|
|
virtual void doAction (BasePartAction *action) const;
|
44 |
|
|
virtual double charge () const { return 0.; }
|
45 |
|
|
|
46 |
|
|
// Extend the particle contents
|
47 |
bendavid |
1.2 |
void addChild (BasePartBaseRef partRef) { children_.push_back(partRef); }
|
48 |
loizides |
1.1 |
|
49 |
bendavid |
1.2 |
const BasePart* getChild (int i) const { return children_.at(i).get(); }
|
50 |
|
|
const BasePartBaseRef getChildRef (int i) const { return children_.at(i); }
|
51 |
loizides |
1.1 |
int nChild () const { return children_.size(); }
|
52 |
|
|
|
53 |
|
|
virtual void print (std::ostream& os = std::cout) const;
|
54 |
|
|
|
55 |
|
|
//----------------------------------------------------------------------------------------------
|
56 |
|
|
// Accessors/Setter: Base Vertex fit info from this level
|
57 |
|
|
//----------------------------------------------------------------------------------------------
|
58 |
|
|
// Fit quality (does not belong here)
|
59 |
|
|
double prob() const { return prob_; }
|
60 |
|
|
double chi2() const { return chi2_; }
|
61 |
|
|
int ndof() const { return ndof_; }
|
62 |
|
|
void setProb(double prob) { prob_ = prob;}
|
63 |
|
|
void setChi2(double chi2) { chi2_ = chi2;}
|
64 |
|
|
void setNdof(int ndof) { ndof_ = ndof;}
|
65 |
|
|
|
66 |
|
|
// Fitted Mass
|
67 |
|
|
double fittedMass() const { return fittedMass_; }
|
68 |
|
|
void setFittedMass(double fittedMass) { fittedMass_ = fittedMass;}
|
69 |
|
|
// Fitted Mass Error
|
70 |
|
|
double fittedMassError() const { return fittedMassError_; }
|
71 |
|
|
void setFittedMassError(double fittedMassError) { fittedMassError_ = fittedMassError;}
|
72 |
|
|
// Lxy
|
73 |
|
|
double lxy() const { return lxy_; }
|
74 |
|
|
void setLxy(double lxy) { lxy_ = lxy;}
|
75 |
|
|
// Lxy Error
|
76 |
|
|
double lxyError() const { return lxyError_; }
|
77 |
|
|
void setLxyError(double lxyError) { lxyError_ = lxyError;}
|
78 |
|
|
// LxyToPv (length to primary vertex)
|
79 |
|
|
double lxyToPv() const { return lxyToPv_; }
|
80 |
|
|
void setLxyToPv(double lxyToPv) { lxyToPv_ = lxyToPv;}
|
81 |
|
|
// LxyToPv Error
|
82 |
|
|
double lxyToPvError() const { return lxyToPvError_; }
|
83 |
|
|
void setLxyToPvError(double lxyToPvError) { lxyToPvError_ = lxyToPvError;}
|
84 |
|
|
// Dxy (two dimensional impact parameter)
|
85 |
|
|
double dxy() const { return dxy_; }
|
86 |
|
|
void setDxy(double dxy) { dxy_ = dxy;}
|
87 |
|
|
// Dxy Error
|
88 |
|
|
double dxyError() const { return dxyError_; }
|
89 |
|
|
void setDxyError(double dxyError) { dxyError_ = dxyError;}
|
90 |
|
|
// DxyToPv (two dimensional impact parameter with respect to primary vertex)
|
91 |
|
|
double dxyToPv() const { return dxyToPv_; }
|
92 |
|
|
void setDxyToPv(double dxyToPv) { dxyToPv_ = dxyToPv;}
|
93 |
|
|
// DlxyToPv Error
|
94 |
|
|
double dxyToPvError() const { return dxyToPvError_; }
|
95 |
|
|
void setDxyToPvError(double dxyToPvError) { dxyToPvError_ = dxyToPvError;}
|
96 |
|
|
// Lz
|
97 |
|
|
double lz() const { return lz_; }
|
98 |
|
|
void setLz(double lz) { lz_ = lz;}
|
99 |
|
|
// Lz Error
|
100 |
|
|
double lzError() const { return lzError_; }
|
101 |
|
|
void setLzError(double lzError) { lzError_ = lzError;}
|
102 |
|
|
// LzToPv (length to primary vertex)
|
103 |
|
|
double lzToPv() const { return lzToPv_; }
|
104 |
|
|
void setLzToPv(double lzToPv) { lzToPv_ = lzToPv;}
|
105 |
|
|
// LzToPv Error
|
106 |
|
|
double lzToPvError() const { return lzToPvError_; }
|
107 |
|
|
void setLzToPvError(double lzToPvError) { lzToPvError_ = lzToPvError;}
|
108 |
|
|
// CTau
|
109 |
|
|
double cTau() const { return cTau_; }
|
110 |
|
|
void setCTau(double cTau) { cTau_ = cTau;}
|
111 |
|
|
// CTau Error
|
112 |
|
|
double cTauError() const { return cTauError_; }
|
113 |
|
|
void setCTauError(double cTauError) { cTauError_ = cTauError;}
|
114 |
|
|
// Pt
|
115 |
|
|
double pt() const { return pt_; }
|
116 |
|
|
void setPt(double pt) { pt_ = pt;}
|
117 |
|
|
// Pt Error
|
118 |
|
|
double ptError() const { return ptError_; }
|
119 |
|
|
void setPtError(double ptError) { ptError_ = ptError;}
|
120 |
|
|
// Four momentum
|
121 |
|
|
const FourVector &fourMomentum() const { return fourMomentum_; }
|
122 |
|
|
void setFourMomentum(const FourVector &fourMomentum)
|
123 |
|
|
{ fourMomentum_ = fourMomentum;}
|
124 |
|
|
//----------------------------------------------------------------------------------------------
|
125 |
|
|
// Accessors/Setter: Extended Vertex fit info from this level
|
126 |
|
|
//----------------------------------------------------------------------------------------------
|
127 |
|
|
// Position
|
128 |
|
|
const ThreeVector &position() const { return position_; }
|
129 |
|
|
void setPosition(const ThreeVector &position) { position_ = position; }
|
130 |
|
|
// Error
|
131 |
bendavid |
1.2 |
const ThreeSymMatrix &error() const { return error_; }
|
132 |
|
|
void setError(const ThreeSymMatrix &error) { error_ = error; }
|
133 |
loizides |
1.1 |
// Big 7x7 Error Matrix
|
134 |
bendavid |
1.2 |
const SevenSymMatrix &bigError() const { return bigError_; }
|
135 |
|
|
void setBigError(const SevenSymMatrix &bigError) { bigError_ = bigError; }
|
136 |
loizides |
1.1 |
|
137 |
|
|
private:
|
138 |
|
|
// Decay type (either fast of slow)
|
139 |
paus |
1.4 |
DecayType decayType_;
|
140 |
loizides |
1.1 |
// Fit quality
|
141 |
paus |
1.4 |
double prob_;
|
142 |
|
|
double chi2_;
|
143 |
|
|
int ndof_;
|
144 |
loizides |
1.1 |
// Base vertex fit info
|
145 |
paus |
1.4 |
double fittedMass_;
|
146 |
|
|
double fittedMassError_;
|
147 |
|
|
double normalizedMass_;
|
148 |
|
|
double lxy_;
|
149 |
|
|
double lxyError_;
|
150 |
|
|
double lxyToPv_;
|
151 |
|
|
double lxyToPvError_;
|
152 |
|
|
double dxy_;
|
153 |
|
|
double dxyError_;
|
154 |
|
|
double dxyToPv_;
|
155 |
|
|
double dxyToPvError_;
|
156 |
|
|
double lz_;
|
157 |
|
|
double lzError_;
|
158 |
|
|
double lzToPv_;
|
159 |
|
|
double lzToPvError_;
|
160 |
|
|
double cTau_;
|
161 |
|
|
double cTauError_;
|
162 |
|
|
double pt_;
|
163 |
|
|
double ptError_;
|
164 |
|
|
FourVector fourMomentum_;
|
165 |
loizides |
1.1 |
// Extended vertex fit info
|
166 |
paus |
1.4 |
ThreeVector position_;
|
167 |
|
|
ThreeSymMatrix error_;
|
168 |
|
|
SevenSymMatrix bigError_;
|
169 |
loizides |
1.1 |
|
170 |
|
|
// Contents of the decay
|
171 |
bendavid |
1.2 |
BasePartBaseRefVector children_;
|
172 |
loizides |
1.1 |
|
173 |
|
|
};
|
174 |
|
|
}
|
175 |
|
|
#endif
|