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 00042 // End class description 00043 // 00048 // 00049 // --------------------------------------------------------------------------// 00060 // --------------------------------------------------------------------------// 00061 00062 #ifndef _MJVWAVEFORMDETECTOR_HH 00063 #define _MJVWAVEFORMDETECTOR_HH 00064 00065 //---------------------------------------------------------------------------// 00066 00067 #include <string> 00068 00069 #include "CLHEP/Units/SystemOfUnits.h" 00070 00071 #include "TFile.h" 00072 00073 #include "MJVWaveformCrystal.hh" 00074 00075 //---------------------------------------------------------------------------// 00076 00077 class MJVWaveformDetector 00078 { 00079 public: 00080 00081 //default constructor 00082 MJVWaveformDetector(); 00083 00084 //copy constructor 00085 MJVWaveformDetector(const MJVWaveformDetector &); 00086 00087 //destructor 00088 virtual ~MJVWaveformDetector(); 00089 00090 //public interface 00091 virtual void BeginOfEventAction() = 0; 00092 virtual void BeginOfRunAction() {;} 00093 virtual void Construct() = 0; 00094 virtual void EndOfEventAction() = 0; 00095 virtual void EndOfRunAction() {;} 00096 virtual void EventSteppingAction() = 0; 00097 virtual void GenerateSignals(); 00098 00099 //protected members 00100 protected: 00101 void AddCrystal(MJVWaveformCrystal *crystal); 00102 00103 //private members 00104 private: 00105 00106 MJVWaveformCrystal *fFirstCrystal; // First crystal in linked list. 00107 MJVWaveformCrystal *fLastCrystal; // Last crystal in linked list. 00108 char *fName; 00109 HepInt fNumberOfCrystals; // Number of crystals in linked list. 00110 HepBoolean fConstructed; // True if the Construct() method has 00111 // been invoked. Has to be set in derived 00112 // method! 00113 00114 void DeleteCrystals(); 00115 00116 }; 00117 #endif