File indexing completed on 2024-04-06 12:29:40
0001 #ifndef SimDataFormats_CaloHit_H
0002 #define SimDataFormats_CaloHit_H
0003
0004
0005
0006
0007
0008 #include <iostream>
0009 #include <cmath>
0010 #include <cstdint>
0011
0012 class CaloHit {
0013 public:
0014 CaloHit(int deti, int layi, double ei, double etai, double phii, double timi, uint32_t idi = 0);
0015 CaloHit();
0016 virtual ~CaloHit();
0017
0018 int det() const { return deth; }
0019 int layer() const { return layerh; }
0020 double e() const { return eh; }
0021 double eta() const { return etah; }
0022 double phi() const { return phih; }
0023 double t() const { return timeh; }
0024 uint32_t id() const { return idh; }
0025 void setId(const uint32_t idi) { idh = idi; }
0026
0027 bool operator<(const CaloHit& hit) const;
0028
0029 private:
0030 int deth, layerh;
0031 double eh, etah, phih, timeh;
0032 uint32_t idh;
0033 };
0034
0035 class CaloHitMore {
0036 public:
0037 bool operator()(const CaloHit* a, const CaloHit* b) { return (a->t() < b->t()); }
0038 };
0039
0040 class CaloHitIdMore {
0041 public:
0042 bool operator()(const CaloHit* a, const CaloHit* b) {
0043 if (a->id() < b->id()) {
0044 return true;
0045 } else if (a->id() > b->id()) {
0046 return false;
0047 } else {
0048 return (a->t() < b->t());
0049 }
0050 }
0051 };
0052
0053 class CaloHitELess {
0054 public:
0055 bool operator()(const CaloHit* a, const CaloHit* b) { return (a->e() > b->e()); }
0056 };
0057
0058 class CaloHitEtLess {
0059 public:
0060 bool operator()(const CaloHit* a, const CaloHit* b) {
0061 return (a->e() / std::cosh(a->eta()) > b->e() / std::cosh(b->eta()));
0062 }
0063 };
0064
0065 std::ostream& operator<<(std::ostream&, const CaloHit&);
0066 #endif