00001 /*************************************************************************** 00002 * 00003 * $Id: StMcHitT.hh,v 2.3 2010/05/04 23:58:43 fine Exp $ 00004 * $Log: StMcHitT.hh,v $ 00005 * Revision 2.3 2010/05/04 23:58:43 fine 00006 * Vertex, and emc models 00007 * 00008 * Revision 2.2 2010/04/28 20:15:45 fine 00009 * Implementation if the new OO for Mc hits 00010 * 00011 * Revision 2.1 2010/04/28 18:10:11 fine 00012 * New OO model for Mc event components 00013 * 00014 * Revision 2.10 2005/11/22 21:44:52 fisyak 00015 * Add compress Print for McEvent, add Ssd collections 00016 * 00017 * 00018 **************************************************************************/ 00019 #ifndef StMcHitT_hh 00020 #define StMcHitT_hh 00021 00022 #include "StEventObject.h" 00023 #include "StMcHitI.h" 00024 00025 template <class T> 00026 class StMcHitT : public StEventObject<T>, public StMcHitI { 00027 protected: 00028 StMcHitT(){;} 00029 public: 00030 StMcHitT(T data) :StEventObject<T>(data) {;} 00031 // StMcHitT(const StSvtHit&); use default 00032 // const StMcHitT & operator=(const StMcHitT&); use default 00033 virtual ~StMcHitT(){;} 00034 00035 int operator==(const StMcHitT&r) const 00036 { return StEventObject<T>::operator==(r); } 00037 int operator!=(const StMcHitT&r) const 00038 { return StEventObject<T>::operator!=(r); } 00039 // "Get" Methods 00040 virtual float x() const { return StEventObject<T>::fData->x[0]; } 00041 virtual float y() const { return StEventObject<T>::fData->x[1]; } 00042 virtual float z() const { return StEventObject<T>::fData->x[2]; } 00043 virtual float px() const { return StEventObject<T>::fData->p[0]; } 00044 virtual float py() const { return StEventObject<T>::fData->p[1]; } 00045 virtual float pz() const { return StEventObject<T>::fData->p[2]; } 00046 virtual float dE() const { return StEventObject<T>::fData->de; } 00047 virtual float dS() const { return StEventObject<T>::fData->ds; } 00048 virtual long key() const { return StEventObject<T>::fData->id; } 00049 virtual long volumeId() const { return StEventObject<T>::fData->volume_id; } 00050 virtual long parentTrackIndex() const { return StEventObject<T>::fData->track_p; } 00051 virtual float tof() const { return StEventObject<T>::fData->tof; } 00052 }; 00053 00054 struct g2t_emc_hit_st; 00055 template <> 00056 class StMcHitT<g2t_emc_hit_st*> : public StEventObject<g2t_emc_hit_st*>, public StMcHitI { 00057 protected: 00058 StMcHitT(){;} 00059 public: 00060 StMcHitT(g2t_emc_hit_st *data) :StEventObject<g2t_emc_hit_st*>(data) {;} 00061 // StMcHitT(const StSvtHit&); use default 00062 // const StMcHitT & operator=(const StMcHitT&); use default 00063 virtual ~StMcHitT(){;} 00064 #if 0 00065 int operator==(const StMcHitT&r) const 00066 { return StEventObject<g2t_emc_hit_st*>::operator==(r); } 00067 int operator!=(const StMcHitT&r) const 00068 { return StEventObject<g2t_emc_hit_st*>::operator!=(r); } 00069 #endif 00070 // "Get" Methods 00071 virtual float dE() const { return StEventObject<g2t_emc_hit_st*>::fData->de; } 00072 virtual long key() const { return StEventObject<g2t_emc_hit_st*>::fData->id; } 00073 virtual long volumeId() const { return StEventObject<g2t_emc_hit_st*>::fData->volume_id; } 00074 virtual long parentTrackIndex() const { return StEventObject<g2t_emc_hit_st*>::fData->track_p; } 00075 }; 00076 00077 #endif 00078
1.5.9