CMS 3D CMS Logo

BPHMassFitSelect.h
Go to the documentation of this file.
1 #ifndef HeavyFlavorAnalysis_SpecificDecay_BPHMassFitSelect_h
2 #define HeavyFlavorAnalysis_SpecificDecay_BPHMassFitSelect_h
3 
12 //----------------------
13 // Base Class Headers --
14 //----------------------
17 
18 //------------------------------------
19 // Collaborating Class Declarations --
20 //------------------------------------
24 
25 //---------------
26 // C++ Headers --
27 //---------------
28 #include <string>
29 
30 // ---------------------
31 // -- Class Interface --
32 // ---------------------
33 
34 class BPHMassFitSelect : public BPHFitSelect, public BPHMassCuts {
35 public:
38  BPHMassFitSelect(double minMass, double maxMass) : BPHMassCuts(minMass, maxMass) { setFitConstraint(); }
39 
40  BPHMassFitSelect(const std::string& name, double mass, double sigma, double minMass, double maxMass)
41  : BPHMassCuts(minMass, maxMass) {
42  setFitConstraint(name, mass, sigma);
43  }
44 
45  BPHMassFitSelect(const std::string& name, double mass, double minMass, double maxMass)
46  : BPHMassCuts(minMass, maxMass) {
47  setFitConstraint(name, mass);
48  }
49 
51  : BPHMassCuts(minMass, maxMass) {
52  setFitConstraint(name, c);
53  }
54 
56  : BPHMassCuts(minMass, maxMass) {
57  setFitConstraint(name, c);
58  }
59 
62  ~BPHMassFitSelect() override {}
63 
66  bool accept(const BPHKinematicFit& cand) const override {
68  switch (type) {
69  default:
70  case none:
71  break;
72  case mcss:
74  break;
75  case mcst:
76  cand.kinematicTree(cName, cMass);
77  break;
78  case kf:
79  cand.kinematicTree(cName, kc);
80  break;
81  case mtkf:
82  cand.kinematicTree(cName, mtkc);
83  break;
84  }
85  double mass = cand.p4().mass();
86  return ((mass > mMin) && (mass < mMax));
87  }
88 
91  type = none;
92  cName = "";
93  cMass = -1.0;
94  cSigma = -1.0;
95  kc = nullptr;
96  mtkc = nullptr;
97  }
98  void setFitConstraint(const std::string& name, double mass) {
99  type = mcst;
100  cName = name;
101  cMass = mass;
102  cSigma = -1.0;
103  kc = nullptr;
104  mtkc = nullptr;
105  }
106  void setFitConstraint(const std::string& name, double mass, double sigma) {
107  type = mcss;
108  cName = name;
109  cMass = mass;
110  cSigma = sigma;
111  kc = nullptr;
112  mtkc = nullptr;
113  }
115  type = kf;
116  cName = name;
117  cMass = -1.0;
118  cSigma = -1.0;
119  kc = c;
120  mtkc = nullptr;
121  }
123  type = mtkf;
124  cName = name;
125  cMass = -1.0;
126  cSigma = -1.0;
127  kc = nullptr;
128  mtkc = c;
129  }
130 
132  const std::string& getConstrainedName() const { return cName; }
133  double getMass() const { return cMass; }
134  double getSigma() const { return cSigma; }
135  KinematicConstraint* getKC() const { return kc; }
137 
138 private:
139  // private copy and assigment constructors
140  BPHMassFitSelect(const BPHMassFitSelect& x) = delete;
141  BPHMassFitSelect& operator=(const BPHMassFitSelect& x) = delete;
142 
143  enum fit_type { none, mcss, mcst, kf, mtkf };
144 
147  double cMass;
148  double cSigma;
151 };
152 
153 #endif
~BPHMassFitSelect() override
type
Definition: HCALResponse.h:21
virtual const math::XYZTLorentzVector & p4() const
compute total momentum after the fit
void setFitConstraint(const std::string &name, double mass, double sigma)
void setFitConstraint()
set fit constraint
double getMass() const
BPHMassFitSelect(const std::string &name, double mass, double sigma, double minMass, double maxMass)
void setFitConstraint(const std::string &name, double mass)
const std::string & getConstrainedName() const
get fit constraint
bool accept(const BPHKinematicFit &cand) const override
select particle
double mMax
Definition: BPHMassCuts.h:63
virtual const RefCountedKinematicTree & kinematicTree() const
perform the kinematic fit and get the result
BPHMassFitSelect(double minMass, double maxMass)
double getSigma() const
void setFitConstraint(const std::string &name, KinematicConstraint *c)
MultiTrackKinematicConstraint * getMultiTrackKC() const
void setFitConstraint(const std::string &name, MultiTrackKinematicConstraint *c)
KinematicConstraint * getKC() const
BPHMassFitSelect(const std::string &name, MultiTrackKinematicConstraint *c, double minMass, double maxMass)
double mMin
Definition: BPHMassCuts.h:62
KinematicConstraint * kc
MultiTrackKinematicConstraint * mtkc
BPHMassFitSelect(const std::string &name, KinematicConstraint *c, double minMass, double maxMass)
BPHMassFitSelect & operator=(const BPHMassFitSelect &x)=delete
BPHMassFitSelect(const std::string &name, double mass, double minMass, double maxMass)