00001 #ifndef Fireworks_Calo_FWCaloTowerProxyBuilder_h 00002 #define Fireworks_Calo_FWCaloTowerProxyBuilder_h 00003 // -*- C++ -*- 00004 // 00005 // Package: Calo 00006 // Class : FWCaloTowerProxyBuilderBase 00007 // 00016 // 00017 // Original Author: Chris Jones 00018 // Created: Wed Dec 3 11:28:08 EST 2008 00019 // $Id: FWCaloTowerProxyBuilder.h,v 1.16 2010/12/16 11:39:38 amraktad Exp $ 00020 // 00021 00022 #include "Rtypes.h" 00023 #include <string> 00024 00025 #include "Fireworks/Calo/interface/FWCaloDataProxyBuilderBase.h" 00026 #include "Fireworks/Calo/src/FWFromTEveCaloDataSelector.h" 00027 #include "DataFormats/CaloTowers/interface/CaloTower.h" 00028 #include "DataFormats/CaloTowers/interface/CaloTowerFwd.h" 00029 00030 00031 class TH2F; 00032 // 00033 // base 00034 // 00035 00036 class FWCaloTowerProxyBuilderBase : public FWCaloDataProxyBuilderBase { 00037 00038 public: 00039 FWCaloTowerProxyBuilderBase(); 00040 virtual ~FWCaloTowerProxyBuilderBase(); 00041 00042 // ---------- const member functions --------------------- 00043 virtual double getEt(const CaloTower&) const = 0; 00044 00045 // ---------- static member functions -------------------- 00046 // ---------- member functions --------------------------- 00047 00048 protected: 00049 virtual void setCaloData(const fireworks::Context&); 00050 virtual void fillCaloData(); 00051 bool assertCaloDataSlice(); 00052 00053 virtual void itemBeingDestroyed(const FWEventItem*); 00054 private: 00055 FWCaloTowerProxyBuilderBase(const FWCaloTowerProxyBuilderBase&); // stop default 00056 const FWCaloTowerProxyBuilderBase& operator=(const FWCaloTowerProxyBuilderBase&); // stop default 00057 virtual void build(const FWEventItem* iItem, 00058 TEveElementList* product, const FWViewContext*); 00059 00060 // ---------- member data -------------------------------- 00061 const CaloTowerCollection* m_towers; 00062 TH2F* m_hist; 00063 }; 00064 00065 // 00066 // Ecal 00067 // 00068 00069 class FWECalCaloTowerProxyBuilder : public FWCaloTowerProxyBuilderBase { 00070 public: 00071 FWECalCaloTowerProxyBuilder() { 00072 } 00073 virtual ~FWECalCaloTowerProxyBuilder() { 00074 } 00075 00076 // ---------- const member functions --------------------- 00077 00078 virtual double getEt(const CaloTower& iTower) const { 00079 return iTower.emEt(); 00080 } 00081 00082 REGISTER_PROXYBUILDER_METHODS(); 00083 private: 00084 FWECalCaloTowerProxyBuilder(const FWECalCaloTowerProxyBuilder&); // stop default 00085 const FWECalCaloTowerProxyBuilder& operator=(const FWECalCaloTowerProxyBuilder&); // stop default 00086 }; 00087 00088 00089 // 00090 // Hcal 00091 // 00092 00093 class FWHCalCaloTowerProxyBuilder : public FWCaloTowerProxyBuilderBase { 00094 public: 00095 FWHCalCaloTowerProxyBuilder() { 00096 } 00097 virtual ~FWHCalCaloTowerProxyBuilder(){ 00098 } 00099 00100 // ---------- const member functions --------------------- 00101 00102 virtual double getEt(const CaloTower& iTower) const { 00103 return iTower.hadEt(); 00104 } 00105 00106 REGISTER_PROXYBUILDER_METHODS(); 00107 private: 00108 FWHCalCaloTowerProxyBuilder(const FWHCalCaloTowerProxyBuilder&); // stop default 00109 00110 const FWHCalCaloTowerProxyBuilder& operator=(const FWHCalCaloTowerProxyBuilder&); // stop default 00111 }; 00112 00113 // 00114 // HCal Outer 00115 // 00116 00117 class FWHOCaloTowerProxyBuilder : public FWCaloTowerProxyBuilderBase { 00118 public: 00119 FWHOCaloTowerProxyBuilder() { 00120 } 00121 virtual ~FWHOCaloTowerProxyBuilder(){ 00122 } 00123 00124 // ---------- const member functions --------------------- 00125 00126 virtual double getEt(const CaloTower& iTower) const { 00127 return iTower.outerEt(); 00128 } 00129 00130 REGISTER_PROXYBUILDER_METHODS(); 00131 00132 private: 00133 FWHOCaloTowerProxyBuilder(const FWHOCaloTowerProxyBuilder&); // stop default 00134 const FWHOCaloTowerProxyBuilder& operator=(const FWHOCaloTowerProxyBuilder&); // stop default 00135 }; 00136 00137 00138 #endif