File indexing completed on 2024-09-07 04:35:57
0001 #ifndef DataFormats_TauReco_RecoTauPiZero_h
0002 #define DataFormats_TauReco_RecoTauPiZero_h
0003
0004 #include "DataFormats/Candidate/interface/CompositePtrCandidate.h"
0005
0006 namespace reco {
0007 class RecoTauPiZero : public CompositePtrCandidate {
0008 public:
0009 enum PiZeroAlgorithm {
0010
0011 kUndefined = 0,
0012 kTrivial = 1,
0013 kCombinatoric = 2,
0014 kStrips = 3
0015 };
0016
0017 RecoTauPiZero() : CompositePtrCandidate(), algoName_(kUndefined), bendCorrEta_(0.), bendCorrPhi_(0.) {
0018 this->setPdgId(111);
0019 }
0020
0021 RecoTauPiZero(PiZeroAlgorithm algoName)
0022 : CompositePtrCandidate(), algoName_(algoName), bendCorrEta_(0.), bendCorrPhi_(0.) {
0023 this->setPdgId(111);
0024 }
0025
0026
0027 RecoTauPiZero(Charge q,
0028 const LorentzVector& p4,
0029 const Point& vtx = Point(0, 0, 0),
0030 int pdgId = 111,
0031 int status = 0,
0032 bool integerCharge = true,
0033 PiZeroAlgorithm algoName = kUndefined)
0034 : CompositePtrCandidate(q, p4, vtx, pdgId, status, integerCharge),
0035 algoName_(algoName),
0036 bendCorrEta_(0.),
0037 bendCorrPhi_(0.) {}
0038
0039
0040 RecoTauPiZero(Charge q,
0041 const PolarLorentzVector& p4,
0042 const Point& vtx = Point(0, 0, 0),
0043 int pdgId = 111,
0044 int status = 0,
0045 bool integerCharge = true,
0046 PiZeroAlgorithm algoName = kUndefined)
0047 : CompositePtrCandidate(q, p4, vtx, pdgId, status, integerCharge),
0048 algoName_(algoName),
0049 bendCorrEta_(0.),
0050 bendCorrPhi_(0.) {}
0051
0052
0053 explicit RecoTauPiZero(const Candidate& p, PiZeroAlgorithm algoName = kUndefined)
0054 : CompositePtrCandidate(p), algoName_(algoName), bendCorrEta_(0.), bendCorrPhi_(0.) {
0055 this->setPdgId(111);
0056 }
0057
0058
0059 ~RecoTauPiZero() override {}
0060
0061
0062 size_t numberOfGammas() const;
0063
0064
0065 size_t numberOfElectrons() const;
0066
0067
0068 double maxDeltaPhi() const;
0069
0070
0071 double maxDeltaEta() const;
0072
0073
0074 PiZeroAlgorithm algo() const;
0075
0076
0077 bool algoIs(PiZeroAlgorithm algo) const;
0078
0079
0080
0081 float bendCorrEta() const { return bendCorrEta_; }
0082 float bendCorrPhi() const { return bendCorrPhi_; }
0083 void setBendCorrEta(float bendCorrEta) { bendCorrEta_ = bendCorrEta; }
0084 void setBendCorrPhi(float bendCorrPhi) { bendCorrPhi_ = bendCorrPhi; }
0085
0086 void print(std::ostream& out = std::cout) const;
0087
0088 private:
0089 PiZeroAlgorithm algoName_;
0090
0091 float bendCorrEta_;
0092 float bendCorrPhi_;
0093 };
0094
0095 std::ostream& operator<<(std::ostream& out, const RecoTauPiZero& c);
0096
0097 }
0098
0099 #endif