Go to the documentation of this file.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