File indexing completed on 2023-03-17 11:05:35
0001 #ifndef HeavyFlavorAnalysis_SpecificDecay_BPHDecayToTkpTknSymChargeBuilder_h
0002 #define HeavyFlavorAnalysis_SpecificDecay_BPHDecayToTkpTknSymChargeBuilder_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayGenericBuilderBase.h"
0018 #include "HeavyFlavorAnalysis/SpecificDecay/interface/BPHDecayGenericBuilder.h"
0019
0020
0021
0022
0023 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHRecoBuilder.h"
0024 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHRecoCandidate.h"
0025 #include "HeavyFlavorAnalysis/RecoDecay/interface/BPHPlusMinusCandidate.h"
0026
0027 class BPHEventSetupWrapper;
0028 class BPHParticlePtSelect;
0029 class BPHParticleEtaSelect;
0030 class BPHChi2Select;
0031 class BPHMassSelect;
0032
0033
0034
0035
0036 #include <string>
0037 #include <vector>
0038
0039
0040
0041
0042
0043 class BPHDecayToTkpTknSymChargeBuilder : public virtual BPHDecayGenericBuilderBase,
0044 public virtual BPHDecayGenericBuilder<BPHPlusMinusCandidate> {
0045 public:
0046
0047
0048 BPHDecayToTkpTknSymChargeBuilder(const BPHEventSetupWrapper& es,
0049 const std::string& daug1Name,
0050 double daug1Mass,
0051 double daug1Sigma,
0052 const std::string& daug2Name,
0053 double daug2Mass,
0054 double daug2Sigma,
0055 const BPHRecoBuilder::BPHGenericCollection* posCollection,
0056 const BPHRecoBuilder::BPHGenericCollection* negCollection,
0057 double expectedMass);
0058
0059
0060 BPHDecayToTkpTknSymChargeBuilder(const BPHDecayToTkpTknSymChargeBuilder& x) = delete;
0061 BPHDecayToTkpTknSymChargeBuilder& operator=(const BPHDecayToTkpTknSymChargeBuilder& x) = delete;
0062
0063
0064
0065 ~BPHDecayToTkpTknSymChargeBuilder() override = default;
0066
0067
0068
0069
0070
0071 void setTrk1PtMin(double pt);
0072 void setTrk2PtMin(double pt);
0073 void setTrk1EtaMax(double eta);
0074 void setTrk2EtaMax(double eta);
0075 void setDzMax(double dz);
0076
0077
0078 double getTrk1PtMin() const { return pt1Min; }
0079 double getTrk2PtMin() const { return pt2Min; }
0080 double getTrk1EtaMax() const { return eta1Max; }
0081 double getTrk2EtaMax() const { return eta2Max; }
0082 double getDzMax() const { return dzMax; }
0083
0084 private:
0085 std::string d1Name;
0086 double d1Mass;
0087 double d1Sigma;
0088 std::string d2Name;
0089 double d2Mass;
0090 double d2Sigma;
0091 double eMass;
0092
0093 const BPHRecoBuilder::BPHGenericCollection* pCollection;
0094 const BPHRecoBuilder::BPHGenericCollection* nCollection;
0095
0096 double pt1Min;
0097 double pt2Min;
0098 double eta1Max;
0099 double eta2Max;
0100 double dzMax;
0101
0102 class Particle {
0103 public:
0104 Particle(const reco::Candidate* c, const reco::Track* tk, double x, double y, double z, double f, double g)
0105 : cand(c), track(tk), px(x), py(y), pz(z), e1(f), e2(g) {}
0106 const reco::Candidate* cand;
0107 const reco::Track* track;
0108 double px;
0109 double py;
0110 double pz;
0111 double e1;
0112 double e2;
0113 };
0114 void addParticle(const BPHRecoBuilder::BPHGenericCollection* collection, int charge, std::vector<Particle*>& list);
0115
0116
0117 void fillRecList() override;
0118 };
0119
0120 #endif