File indexing completed on 2024-04-06 12:11:50
0001 #ifndef Fireworks_Calo_FWPFCandTowerProxyBuilder_h
0002 #define Fireworks_Calo_FWPFCandTowerProxyBuilder_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include "Rtypes.h"
0022 #include <string>
0023
0024 #include "Fireworks/Calo/interface/FWCaloDataHistProxyBuilder.h"
0025 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0026 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0027
0028 class FWHistSliceSelector;
0029
0030 class FWPFCandidateTowerProxyBuilder : public FWCaloDataHistProxyBuilder {
0031 public:
0032 FWPFCandidateTowerProxyBuilder();
0033 ~FWPFCandidateTowerProxyBuilder() override;
0034
0035 virtual double getEt(const reco::PFCandidate&) const = 0;
0036
0037 FWPFCandidateTowerProxyBuilder(const FWPFCandidateTowerProxyBuilder&) = delete;
0038 const FWPFCandidateTowerProxyBuilder& operator=(const FWPFCandidateTowerProxyBuilder&) = delete;
0039
0040 protected:
0041 void fillCaloData() override;
0042 FWHistSliceSelector* instantiateSliceSelector() override;
0043 void build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*) override;
0044
0045 private:
0046
0047 const reco::PFCandidateCollection* m_towers;
0048 };
0049
0050
0051
0052
0053
0054 class FWECalPFCandidateProxyBuilder : public FWPFCandidateTowerProxyBuilder {
0055 public:
0056 FWECalPFCandidateProxyBuilder() {}
0057 ~FWECalPFCandidateProxyBuilder() override {}
0058
0059
0060
0061 double getEt(const reco::PFCandidate& iTower) const override {
0062 return iTower.ecalEnergy() * TMath::Sin(iTower.theta());
0063 }
0064
0065 REGISTER_PROXYBUILDER_METHODS();
0066
0067 FWECalPFCandidateProxyBuilder(const FWECalPFCandidateProxyBuilder&) = delete;
0068 const FWECalPFCandidateProxyBuilder& operator=(const FWECalPFCandidateProxyBuilder&) = delete;
0069 };
0070
0071
0072
0073
0074
0075 class FWHCalPFCandidateProxyBuilder : public FWPFCandidateTowerProxyBuilder {
0076 public:
0077 FWHCalPFCandidateProxyBuilder() {}
0078 ~FWHCalPFCandidateProxyBuilder() override {}
0079
0080
0081
0082 double getEt(const reco::PFCandidate& iTower) const override {
0083 return iTower.hcalEnergy() * TMath::Sin(iTower.theta());
0084 }
0085
0086 REGISTER_PROXYBUILDER_METHODS();
0087
0088 FWHCalPFCandidateProxyBuilder(const FWHCalPFCandidateProxyBuilder&) = delete;
0089
0090 const FWHCalPFCandidateProxyBuilder& operator=(const FWHCalPFCandidateProxyBuilder&) = delete;
0091 };
0092
0093 #endif