00001 #ifndef FastSimulation_CalorimeterProperties_Calorimeter_h 00002 #define FastSimulation_CalorimeterProperties_Calorimeter_h 00003 00004 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00005 00006 class PreshowerLayer1Properties; 00007 class PreshowerLayer2Properties; 00008 class ECALProperties; 00009 class ECALBarrelProperties; 00010 class ECALEndcapProperties; 00011 class HCALProperties; 00012 class HCALBarrelProperties; 00013 class HCALEndcapProperties; 00014 class HCALForwardProperties; 00015 class CaloSubdetectorGeometry; 00016 class CaloTopology; 00017 class CaloSubdetectorTopology; 00018 class EcalBarrelGeometry; 00019 class EcalEndcapGeometry; 00020 class EcalPreshowerGeometry; 00021 00022 namespace edm { 00023 class ParameterSet; 00024 } 00025 00026 class Calorimeter{ 00027 public: 00028 Calorimeter(); 00029 Calorimeter(const edm::ParameterSet& caloParameters); 00030 ~Calorimeter(); 00031 00032 // Setup the geometry 00033 void setupGeometry(const CaloGeometry& pG); 00034 00035 // Setup the topology 00036 void setupTopology(const CaloTopology&); 00037 00038 00040 const ECALProperties* ecalProperties(int onEcal) const; 00041 00043 const HCALProperties* hcalProperties(int onHcal) const; 00044 00046 const PreshowerLayer1Properties* layer1Properties(int onLayer1) const; 00047 00049 const PreshowerLayer2Properties* layer2Properties(int onLayer2) const; 00050 00051 inline const EcalBarrelGeometry * getEcalBarrelGeometry() const {return EcalBarrelGeometry_;} 00052 00053 inline const EcalEndcapGeometry * getEcalEndcapGeometry() const {return EcalEndcapGeometry_;} 00054 00055 inline const EcalPreshowerGeometry * getEcalPreshowerGeometry() const {return PreshowerGeometry_;} 00056 00057 inline const CaloSubdetectorGeometry * getHcalGeometry() const {return HcalGeometry_;} 00058 00059 const CaloSubdetectorGeometry * getEcalGeometry(int subdetn) const; 00060 00061 const CaloSubdetectorTopology * getEcalTopology(int subdetn) const; 00062 00063 00064 00065 protected: 00066 00067 //Calorimeter properties 00068 PreshowerLayer1Properties* myPreshowerLayer1Properties_ ; 00069 PreshowerLayer2Properties* myPreshowerLayer2Properties_ ; 00070 ECALBarrelProperties* myECALBarrelProperties_ ; 00071 ECALEndcapProperties* myECALEndcapProperties_ ; 00072 HCALBarrelProperties* myHCALBarrelProperties_ ; 00073 HCALEndcapProperties* myHCALEndcapProperties_ ; 00074 HCALForwardProperties* myHCALForwardProperties_ ; 00075 00076 // The subdetectors geometry 00077 const EcalBarrelGeometry* EcalBarrelGeometry_; 00078 const EcalEndcapGeometry* EcalEndcapGeometry_; 00079 const CaloSubdetectorGeometry* HcalGeometry_; 00080 const EcalPreshowerGeometry* PreshowerGeometry_; 00081 00082 // The ECAL topologies 00083 const CaloSubdetectorTopology* EcalBarrelTopology_; 00084 const CaloSubdetectorTopology* EcalEndcapTopology_; 00085 00086 }; 00087 00088 #endif