00001 #ifndef XANASuperCluster_h
00002 #define XANASuperCluster_h
00003
00012 class XANACluster;
00013 class XANAElectronCandidate;
00014 #include <XANADOO/XANAClusters/interface/XANAPreshowerInfo.h>
00015 #include <XANADOO/XANAClusters/interface/XANASymMatrix.h>
00016 #include <CLHEP/Geometry/Point3D.h>
00017 #include <CLHEP/Matrix/SymMatrix.h>
00018 #include <TRefArray.h>
00019 #include <TRef.h>
00020 #include <TObject.h>
00021 #include <Rtypes.h>
00022
00023 using namespace CLHEP;
00024 using namespace HepGeom;
00025
00026 class XANASuperCluster : public TObject {
00027
00028 public:
00029
00030 XANASuperCluster();
00032 XANASuperCluster(Float_t energy, HepPoint3D position, Float_t sum1, Float_t sum4,
00033 Float_t sum9, Float_t sum25, Float_t hadronicOverEm, Float_t caloIsolation,
00034 Float_t disc1, Float_t disc2, Float_t disc3, HepSymMatrix positionCovarianceMatrix,
00035 Float_t energyScaleFactor, std::string algoName);
00036 XANASuperCluster(const XANASuperCluster &right);
00037 virtual ~XANASuperCluster();
00038
00039
00040 Float_t getEnergy() const {return energy_;}
00041 HepPoint3D getPosition() const {return position_;}
00042 Float_t getSum1() const {return sum1_;}
00043 Float_t getSum4() const {return sum4_;}
00044 Float_t getSum9() const {return sum9_;}
00045 Float_t getSum25() const {return sum25_;}
00046 Float_t getHadronicOverEm() const {return hadronicOverEm_;}
00047 Float_t getCaloIsolation() const {return caloIsolation_;}
00048 Float_t getDisc1() const {return disc1_;}
00049 Float_t getDisc2() const {return disc2_;}
00050 Float_t getDisc3() const {return disc3_;}
00051 HepSymMatrix getPositionCovarianceMatrix() const {return positionCovarianceMatrix_;}
00052 Float_t getEnergyScaleFactor() const {return energyScaleFactor_;}
00053 std::string getAlgoName() const {return std::string(algoName_);}
00054 char *getCharAlgoName() const {return algoName_;}
00055
00056
00057 void setEnergy(Float_t energy) {energy_=energy;}
00058 void setPosition(HepPoint3D position) {position_=position;}
00059 void setSum1(Float_t sum1) {sum1_=sum1;}
00060 void setSum4(Float_t sum4) {sum4_=sum4;}
00061 void setSum9(Float_t sum9) {sum9_=sum9;}
00062 void setSum25(Float_t sum25) {sum25_=sum25;}
00063 void setHadronicOverEm(Float_t hadronicOverEm) {hadronicOverEm_=hadronicOverEm;}
00064 void setCaloIsolation(Float_t caloIsolation) {caloIsolation_=caloIsolation;}
00065 void setDisc1(Float_t disc1) {disc1_=disc1;}
00066 void setDisc2(Float_t disc2) {disc2_=disc2;}
00067 void setDisc3(Float_t disc3) {disc3_=disc3;}
00068 void setPositionCovarianceMatrix(const HepSymMatrix &positionCovarianceMatrix) {
00069 positionCovarianceMatrix_=positionCovarianceMatrix;
00070 }
00071 void setEnergyScaleFactor(Float_t energyScaleFactor) {energyScaleFactor_=energyScaleFactor;}
00072 void setAlgoName(std::string algoName) {sprintf(algoName_,algoName.c_str());}
00073
00074 void addCluster(XANACluster *clu, Int_t iflag);
00075 void setSeedCluster(XANACluster *seed);
00076 void setPreshowerInfo(XANAPreshowerInfo *preshowerInfo);
00077 void addBremCluster(XANACluster *brem);
00078 void clear();
00079
00080
00081 const XANASuperCluster &operator=(const XANASuperCluster &right);
00082
00083
00084 bool operator==(const XANASuperCluster&) const;
00085 bool operator<(const XANASuperCluster&) const;
00086
00087
00088
00089 XANACluster *getSeedCluster() const {return (XANACluster *)(seedCluster_.GetObject());}
00090
00091 Short_t getNumberOfBrems() {return numberOfBrems_;}
00092 TRefArray *getBremClusters() const {return brems_;}
00093
00094 XANAPreshowerInfo *getPreshowerInfo() const {return (XANAPreshowerInfo *)(preshowerInfo_.GetObject());}
00095 XANAElectronCandidate *getElectronCandidate() const {return (XANAElectronCandidate *)(electronCandidate_.GetObject());}
00096 void setElectronCandidate(XANAElectronCandidate *electron);
00097
00099 Bool_t IsUsed() const {return locked_;}
00100
00101 protected:
00102
00104 Float_t energy_;
00106 HepPoint3D position_;
00108 Float_t sum1_;
00109 Float_t sum4_;
00110 Float_t sum9_;
00111 Float_t sum25_;
00113 Float_t hadronicOverEm_;
00115 Float_t caloIsolation_;
00117 Float_t disc1_;
00118 Float_t disc2_;
00119 Float_t disc3_;
00121
00122 XANASymMatrix positionCovarianceMatrix_;
00124 Float_t energyScaleFactor_;
00126 TRef seedCluster_;
00128 Short_t numberOfBrems_;
00130 TRefArray *brems_;
00132 TRef preshowerInfo_;
00134 TRef electronCandidate_;
00136 Int_t algoLen_;
00137 char *algoName_;
00138
00139 private:
00140
00141 const static Int_t strLen_;
00142 Bool_t locked_;
00143 void lock() {locked_ = true;}
00144 void unlock() { locked_ = false;}
00145
00146 ClassDef(XANASuperCluster,1)
00147
00148 };
00149
00150 #endif
00151
00152
00153
00154
00155
00156
00157