Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

XANAElectronCandidate.h

Go to the documentation of this file.
00001 #ifndef XANAElectronCandidate_h
00002 #define XANAElectronCandidate_h
00003 
00012 class XANASuperCluster;
00013 class XANACluster;
00014 class XANAElectronTrack;
00015 #include <CLHEP/Vector/LorentzVector.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 XANAElectronCandidate : public TObject {
00027 
00028 public:
00029 
00030   XANAElectronCandidate();
00031    
00033   XANAElectronCandidate(HepLorentzVector momentum, 
00034    HepLorentzVector superClusterMomentum, HepLorentzVector trackMomentumAtCalo, 
00035    Float_t superClusterEnergy, HepPoint3D superClusterPosition, HepPoint3D trackPositionAtCalo,
00036    Float_t eSuperClusterOverP, Float_t eSeedClusterOverP, Float_t deltaEtaSuperCluster, 
00037    Float_t deltaPhiSuperCluster, Float_t deltaEtaSeedCluster, Float_t deltaPhiSeedCluster,  
00038    Float_t trackIsolation, Float_t caloIsolation, Float_t hadOverEm, std::string algoName);
00039   
00040   virtual ~XANAElectronCandidate();
00041 
00042   // data access methods
00043   
00044   // particle behaviour
00046   HepLorentzVector getMomentumAtVertex() const {return momentum_;}
00048   Float_t getPt() const {return momentum_.perp();}
00050   Float_t getEta() const {return momentum_.rapidity();}
00052   Float_t getPhi() const {return momentum_.phi();}
00054   Short_t getCharge() const {return charge_;}
00055   
00056   // supercluster and electron track related quantities
00058   HepLorentzVector getSuperClusterMomentum() const {return clusterMomentum_;}
00060   HepLorentzVector getTrackMomentumAtCalo() const {return trackMomentumAtCalo_;}
00062   Float_t getSuperClusterEnergy() const {return superClusterEnergy_;}
00064   HepPoint3D getSuperClusterPosition() const {return superClusterPosition_;}
00066   HepPoint3D getTrackPositionAtCalo() const {return trackPositionAtCalo_;}
00068   Float_t getESuperClusterOverP() const {return eSuperClusterOverP_;}
00070   Float_t getESeedClusterOverP() const {return eSeedClusterOverP_;}
00072   Float_t getDeltaEtaSuperClusterAtVtx() const {return deltaEtaSuperClusterAtVtx_;}
00074   Float_t getDeltaEtaSuperClusterAtCalo() const {return deltaEtaSuperClusterAtCalo_;}
00076   Float_t getDeltaEtaSeedClusterAtCalo() const {return deltaEtaSeedClusterAtCalo_;}
00078   Float_t getDeltaPhiSuperClusterAtVtx() const {return deltaPhiSuperClusterAtVtx_;}
00080   Float_t getDeltaPhiSuperClusterAtCalo() const {return deltaPhiSuperClusterAtCalo_;}
00082   Float_t getDeltaPhiSeedClusterAtCalo() const {return deltaPhiSeedClusterAtCalo_;}
00083   // the isolation from tracker
00084   Float_t getTrackIsolation() const {return trackIsolation_;}
00086   Float_t getCaloIsolation() const {return caloIsolation_;}
00088   Float_t getHadronicOverEm() const {return hadOverEm_;}
00089   
00091   std::string getAlgoName() const {return std::string(algoName_);}
00092   char *getCharAlgoName() const {return algoName_;}
00093   
00094   // set methods
00095   void setMomentumAtVertex(HepLorentzVector momentum) {momentum_=momentum;}
00096   void setCharge(Short_t q) {charge_=q;}
00097   void setSuperClusterMomentum(HepLorentzVector momentum) {clusterMomentum_=momentum;}
00098   void setTrackMomentumAtCalo(HepLorentzVector momentum) {trackMomentumAtCalo_=momentum;}
00099   void setSuperClusterEnergy(Float_t superClusterEnergy) {superClusterEnergy_=superClusterEnergy;}
00100   void setSuperClusterPosition(HepPoint3D superClusterPosition) {superClusterPosition_=superClusterPosition;}
00101   void setTrackPositionAtCalo(HepPoint3D trackPositionAtCalo) {trackPositionAtCalo_=trackPositionAtCalo;}
00102   void setESuperClusterOverP(Float_t eSuperClusterOverP) {eSuperClusterOverP_=eSuperClusterOverP;}
00103   void setESeedClusterOverP(Float_t eSeedClusterOverP) {eSeedClusterOverP_=eSeedClusterOverP;}
00104   void setDeltaEtaSuperClusterAtVtx(Float_t deltaEtaSuperCluster) {deltaEtaSuperClusterAtVtx_=deltaEtaSuperCluster;}
00105   void setDeltaEtaSuperClusterAtCalo(Float_t deltaEtaSuperCluster) {deltaEtaSuperClusterAtCalo_=deltaEtaSuperCluster;}
00106   void setDeltaEtaSeedClusterAtCalo(Float_t deltaEtaSeedCluster) {deltaEtaSeedClusterAtCalo_=deltaEtaSeedCluster;}
00107   void setDeltaPhiSuperClusterAtVtx(Float_t deltaPhiSuperCluster) {deltaPhiSuperClusterAtVtx_=deltaPhiSuperCluster;}
00108   void setDeltaPhiSuperClusterAtCalo(Float_t deltaPhiSuperCluster) {deltaPhiSuperClusterAtCalo_=deltaPhiSuperCluster;}
00109   void setDeltaPhiSeedClusterAtCalo(Float_t deltaPhiSeedCluster) {deltaPhiSeedClusterAtCalo_=deltaPhiSeedCluster;}
00110   void setTrackIsolation(Float_t trackIsolation) {trackIsolation_=trackIsolation;}
00111   void setCaloIsolation(Float_t caloIsolation) {caloIsolation_=caloIsolation;}
00112   void setHadronicOverEm(Float_t hadOverEm) {hadOverEm_=hadOverEm;}
00113   void setAlgoName(std::string algoName) {sprintf(algoName_,algoName.c_str());}
00114 
00115   void clear();
00116   
00117   // copy xonstructor
00118   XANAElectronCandidate(const XANAElectronCandidate &right);
00119   
00120   // operators
00121   const XANAElectronCandidate &operator=(const XANAElectronCandidate &right);
00122   
00123   // comparison methods
00124   bool operator==(const XANAElectronCandidate&) const;
00125   bool operator<(const XANAElectronCandidate&) const;
00126   
00127   // relationships
00128   void setSuperCluster(XANASuperCluster *clu);
00130   XANASuperCluster *getSuperCluster() const {return (XANASuperCluster *)(superCluster_.GetObject());}
00132   XANACluster *getSeedCluster() const {return (XANACluster *)(seedCluster_.GetObject());}
00134   Short_t getNumberOfBrems() {return numberOfBrems_;} 
00136   TRefArray *getBremClusters() const {return brems_;}
00137   void setElectronTrack(XANAElectronTrack *track);
00139   XANAElectronTrack *getElectronTrack() const {return (XANAElectronTrack *)(track_.GetObject());}
00140   
00142   Bool_t IsUsed() const {return locked_;}
00143 
00144 protected:
00145 
00146   // particle behaviour
00148   Short_t charge_; 
00150   HepLorentzVector momentum_; 
00151   
00152   // Calorimetric and tracker measurements
00154   HepLorentzVector clusterMomentum_; 
00156   HepLorentzVector trackMomentumAtCalo_; 
00158   Float_t superClusterEnergy_;
00160   HepPoint3D superClusterPosition_;
00162   HepPoint3D trackPositionAtCalo_;
00163   
00164   // matching
00166   Float_t eSuperClusterOverP_;
00168   Float_t eSeedClusterOverP_;
00169 
00171   Float_t deltaEtaSuperClusterAtCalo_;
00173   Float_t deltaEtaSuperClusterAtVtx_;
00175   Float_t deltaEtaSeedClusterAtCalo_;
00177   Float_t deltaPhiSuperClusterAtCalo_;
00179   Float_t deltaPhiSuperClusterAtVtx_;
00181   Float_t deltaPhiSeedClusterAtCalo_;
00182   
00183   // isolation
00184   // the isolation from tracker
00185   Float_t trackIsolation_;
00187   Float_t caloIsolation_;
00189   Float_t hadOverEm_;
00190   
00191   // relationships
00193   TRef superCluster_; 
00195   TRef seedCluster_; 
00197   Short_t numberOfBrems_;
00199   TRefArray *brems_; 
00201   TRef track_; 
00203   Int_t algoLen_;
00204   char *algoName_; //[algoLen_]
00205 
00206 private:
00207 
00208   const static Int_t strLen_;
00209   Bool_t locked_;
00210   void lock() {locked_ = true;}
00211   void unlock() { locked_ = false;}
00212        
00213   ClassDef(XANAElectronCandidate,1)
00214 
00215 };
00216 
00217 #endif
00218 
00219 
00220 
00221 
00222 
00223 
00224 

Generated on Tue May 10 10:01:24 2005 for XANADOO by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002