00001
00002
00003
00004 #ifndef STJTOWERENERGYLIST_H
00005 #define STJTOWERENERGYLIST_H
00006
00007 #include <TObject.h>
00008
00009 #include <vector>
00010 #include <ostream>
00011 #include <cmath>
00012
00013 class StjTowerEnergy : public TObject {
00014 public:
00015 int runNumber;
00016 int eventId;
00017 int detectorId;
00018 int towerId;
00019 double towerR;
00020 double towerEta;
00021 double towerPhi;
00022 double vertexX;
00023 double vertexY;
00024 double vertexZ;
00025 double energy;
00026 unsigned int adc;
00027 float pedestal;
00028 float rms;
00029 int status;
00030 ClassDef(StjTowerEnergy, 1)
00031 };
00032
00033 typedef std::vector<StjTowerEnergy> StjTowerEnergyList;
00034
00035 inline bool operator==(const StjTowerEnergy& v1, const StjTowerEnergy& v2)
00036 {
00037 if(v1.runNumber != v2.runNumber) return false;
00038 if(v1.eventId != v2.eventId) return false;
00039 if(v1.detectorId != v2.detectorId) return false;
00040 if(v1.towerId != v2.towerId) return false;
00041 if(v1.towerR != v2.towerR) return false;
00042 if(v1.towerEta != v2.towerEta) return false;
00043 if(v1.towerPhi != v2.towerPhi) return false;
00044 if(v1.vertexX != v2.vertexX) return false;
00045 if(v1.vertexY != v2.vertexY) return false;
00046 if(v1.vertexZ != v2.vertexZ) return false;
00047 if(fabs(v1.energy - v2.energy) > 0.0001*fabs(v1.energy)) return false;
00048 if(v1.adc != v2.adc) return false;
00049 if(v1.pedestal != v2.pedestal) return false;
00050 if(v1.rms != v2.rms) return false;
00051 if(v1.status != v2.status) return false;
00052 return true;
00053 }
00054
00055 inline bool operator!=(const StjTowerEnergy& v1, const StjTowerEnergy& v2)
00056 {
00057 return(!(v1 == v2));
00058 }
00059
00060 inline bool operator==(const StjTowerEnergyList& v1, const StjTowerEnergyList& v2){
00061 if(v1.size() != v2.size()) return false;
00062 for(size_t i = 0; i < v1.size(); ++i) if(v1[i] != v2[i]) return false;
00063 return true;
00064 }
00065
00066 inline std::ostream& operator<<(std::ostream& out, const StjTowerEnergy& v)
00067 {
00068 out << "towerId: " << v.towerId << ", energy: " << v.energy << ", .... ";
00069 return out;
00070 }
00071
00072 inline std::ostream& operator<<(std::ostream& out, const StjTowerEnergyList& v)
00073 {
00074 out << "TowerEnergyList size: " << v.size();
00075 return out;
00076 }
00077
00078 #endif // STJTOWERENERGYLIST_H