Go to the documentation of this file.00001 #ifndef SimDataFormats_CaloHit_H
00002 #define SimDataFormats_CaloHit_H
00003
00004
00005
00007
00008 #include <boost/cstdint.hpp>
00009 #include <iostream>
00010 #include <cmath>
00011
00012 class CaloHit {
00013
00014 public:
00015
00016 CaloHit(int deti, int layi, double ei, double etai, double phii, double timi,
00017 uint32_t idi=0);
00018 CaloHit();
00019 CaloHit(const CaloHit&);
00020 virtual ~CaloHit();
00021
00022 int det() const {return deth;}
00023 int layer() const {return layerh;}
00024 double e() const {return eh;}
00025 double eta() const {return etah;}
00026 double phi() const {return phih;}
00027 double t() const {return timeh;}
00028 uint32_t id() const {return idh;}
00029 void setId(const uint32_t idi) {idh = idi;}
00030
00031 bool operator<( const CaloHit& hit) const;
00032
00033 private:
00034
00035 int deth, layerh;
00036 double eh, etah, phih, timeh;
00037 uint32_t idh;
00038
00039 };
00040
00041 class CaloHitMore {
00042
00043 public:
00044
00045 bool operator() (const CaloHit* a, const CaloHit* b) {
00046 return (a->t() < b->t());
00047 }
00048 };
00049
00050 class CaloHitIdMore {
00051
00052 public:
00053
00054 bool operator() (const CaloHit* a, const CaloHit* b) {
00055 if (a->id() < b->id()) {
00056 return true;
00057 } else if (a->id() > b->id()) {
00058 return false;
00059 } else {
00060 return (a->t() < b->t());
00061 }
00062 }
00063 };
00064
00065 class CaloHitELess {
00066
00067 public:
00068
00069 bool operator() (const CaloHit* a, const CaloHit* b) {
00070 return (a->e() > b->e());
00071 }
00072 };
00073
00074 class CaloHitEtLess {
00075
00076 public:
00077
00078 bool operator() (const CaloHit* a, const CaloHit* b) {
00079 return (a->e()/std::cosh(a->eta()) > b->e()/std::cosh(b->eta()));
00080 }
00081 };
00082
00083 std::ostream& operator<<(std::ostream&, const CaloHit&);
00084 #endif