![]() |
![]() |
00001 #ifndef MYCLUSTER_H 00002 #define MYCLUSTER_H 00003 #include "CLHEP/Vector/LorentzVector.h" 00004 00005 enum {ClusterEm=0,ClusterHd=1,ClusterEmHd=2,ClusterTower=3,RecHitEm=4,RecHitHd=5,CaloTowerEm=6,CaloTowerHd=7}; 00006 00007 struct MatchParam{ 00008 int index; 00009 double distance; 00010 }; 00011 00012 struct CalCell{ 00013 CLHEP::HepLorentzVector Momentum; 00014 int pid; 00015 bool used; 00016 }; 00017 00018 00019 struct CalCluster{ 00020 CLHEP::HepLorentzVector Momentum; 00021 double em; 00022 double hd; 00023 int type; 00024 int ncells; 00025 std::vector<CalCell> clusterCellList; 00026 std::vector<MatchParam> MatchedClusters; 00027 std::vector<CalCluster> SubClusterList; 00028 }; 00029 00030 class CellGreater { 00031 public: 00032 bool operator () (const CalCell& i, const CalCell& j) { 00033 return (i.Momentum.e() > j.Momentum.e()); 00034 } 00035 }; 00036 00037 class CellEtGreater { 00038 public: 00039 bool operator () (const CalCell& i, const CalCell& j) { 00040 return (i.Momentum.perp() > j.Momentum.perp()); 00041 } 00042 }; 00043 00044 class ClusterGreater { 00045 public: 00046 bool operator () (const CalCluster& i, const CalCluster& j) { 00047 return (i.Momentum.e() > j.Momentum.e()); 00048 } 00049 }; 00050 00051 class ClusterEtGreater { 00052 public: 00053 bool operator () (const CalCluster& i, const CalCluster& j) { 00054 return (i.Momentum.perp() > j.Momentum.perp()); 00055 } 00056 }; 00057 class ClusterPtGreater { 00058 public: 00059 00060 bool operator () (const CalCluster& i, const CalCluster& j) { 00061 return (i.Momentum.perp() > j.Momentum.perp()); 00062 } 00063 }; 00064 00065 00066 #endif