00001 //---------------------------------------------------------------------------// 00002 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu// 00003 // // 00004 // MAJORANA Simulation // 00005 // // 00006 // This code implementation is the intellectual property of the // 00007 // MAJORANA Collaboration. It is based on Geant4, an intellectual // 00008 // property of the RD44 GEANT4 collaboration. // 00009 // // 00010 // ********************* // 00011 // // 00012 // Neither the authors of this software system, nor their employing // 00013 // institutes, nor the agencies providing financial support for this // 00014 // work make any representation or warranty, express or implied, // 00015 // regarding this software system or assume any liability for its use. // 00016 // By copying, distributing or modifying the Program (or any work based // 00017 // on on the Program) you indicate your acceptance of this statement, // 00018 // and all its terms. // 00019 // // 00020 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu// 00021 //---------------------------------------------------------------------------// 00032 // Begin description of class here 00040 // End class description 00041 // 00046 // 00047 // --------------------------------------------------------------------------// 00057 // --------------------------------------------------------------------------// 00058 00059 #ifndef _MJVWAVEFORMSEGMENT_HH 00060 #define _MJVWAVEFORMSEGMENT_HH 00061 00062 //---------------------------------------------------------------------------// 00063 00064 #include <CLHEP/Units/SystemOfUnits.h> 00065 #include <CLHEP/Vector/ThreeVector.h> 00066 00067 #include "waveform/MJVWaveform.hh" 00068 00069 //---------------------------------------------------------------------------// 00070 00071 class MJWaveformChargePoint; 00072 class MJVWaveformCrystal; 00073 00074 class MJVWaveformSegment : public MJVWaveform 00075 { 00076 public: 00077 00078 //default constructor 00079 MJVWaveformSegment(); 00080 00081 //copy constructor 00082 MJVWaveformSegment(const MJVWaveformSegment &); 00083 00084 //destructor 00085 virtual ~MJVWaveformSegment(); 00086 00087 //public interface 00093 virtual void GetWeighingFieldVector(const Hep3Vector *pos, Hep3Vector *Ew)=0; 00094 00095 virtual void AddWaveformPoint(MJWaveformChargePoint *chgpt); 00096 00102 virtual void CalculateResponseFunction(); 00103 00104 virtual void Construct() = 0; 00105 00106 virtual void Dump(); 00107 00108 00109 // Getters and Setters. 00110 MJVWaveformCrystal *GetCrystal() { return fCrystal; } 00111 MJVWaveformSegment *GetNextSegment() { return fNextSegment; } 00112 MJVWaveformSegment *GetPreviousSegment() { return fPreviousSegment; } 00113 void SetCrystal(MJVWaveformCrystal *xtal) { fCrystal = xtal; } 00114 void SetNextSegment(MJVWaveformSegment *seg) { fNextSegment = seg; } 00115 void SetPreviousSegment(MJVWaveformSegment *seg) 00116 { fPreviousSegment = seg; } 00117 00118 //protected members 00119 protected: 00120 00121 //private members 00122 private: 00123 00128 MJVWaveformSegment *fNextSegment; 00129 MJVWaveformSegment *fPreviousSegment; 00130 00134 MJVWaveformCrystal *fCrystal; 00135 00139 char *fName; 00140 00141 }; 00142 #endif