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 _MJOUTPUTSOLIDBLOCK_HH 00060 #define _MJOUTPUTSOLIDBLOCK_HH 00061 00062 //---------------------------------------------------------------------------// 00063 00064 #include "TObject.h" 00065 00066 #include "G4ThreeVector.hh" 00067 00068 #include "io/MJOutputRoot.hh" 00069 00070 //---------------------------------------------------------------------------// 00071 00072 using namespace std; 00073 00074 class TH1D; 00075 class G4DynamicParticle; 00076 00077 class MJOutputSolidBlock : public MJOutputRoot 00078 { 00079 public: 00080 00081 //default constructor 00082 MJOutputSolidBlock(G4bool isMother); 00083 00084 //copy constructor 00085 MJOutputSolidBlock(const MJOutputSolidBlock &); 00086 00087 //destructor 00088 ~MJOutputSolidBlock(); 00089 00090 //public interface 00091 void BeginOfEventAction(const G4Event *event); 00092 void BeginOfRunAction(); 00093 void DefineSchema(); 00094 void EndOfEventAction(const G4Event *event); 00095 void EndOfRunAction(); 00096 void RootSteppingAction(const G4Step *step); 00097 G4bool ConvertCoordinateToGridPoint(G4ThreeVector pos, G4int *gpt); 00098 00099 //protected members 00100 protected: 00101 00102 00103 //private members 00104 private: 00105 00106 G4int fMaxNumParticles; 00107 const G4DynamicParticle *fPrimarye; // Primary particle (e-) 00108 G4double fTrackLength; // Accumulated track length of primary. 00109 G4int feNSteps; // Number of Step Primary particle makes. 00110 G4int fEdepArraySize; // Length of flattened Edep array 00111 G4bool fPrimaryDemiseRecorded; // Has the demise of the primary particle 00112 // being recorded? 00113 G4double fOldKineticEnergy; // Kinetic energy in previous step. 00114 G4ThreeVector fOrigin; // Origin of primary electron 00115 00116 // Root histograms. 00117 TH1D *feTrackDistanceHisto; // Distance of each step os primary particle 00118 TH1D *feEdepHisto; // Energy deposits for other particles 00119 TH1D *feVertexDistance; // Distance of primary e- from vertex at end 00120 TH1D *feNStepsHisto; // Number of steps primary e- takes. 00121 TH1D *feEdepStep; // Energy deposit per step for primary e- 00122 TH1D *feEAtEnd; // Energy of primary e- at end of track. 00123 TH1D *feAccTrackLen; // Accumulated Track Length 00124 TH1D *feG4Distance; // Track length from G4. 00125 TH1D *feKEnergyHisto; // Kinetic energy at each step. 00126 TH1D *fEDistance; // Energydeposit/r^2 as fn of r. 00127 00128 // MC Data ---> Begin 00129 // Note : MC data does not follow TAligent naming convention 00130 // to distinguish it from "normal" class fields. 00131 00132 UInt_t EventNumber; 00133 Int_t NumberOfParticles; 00134 Int_t *Particle; 00135 Float_t *MomentumX; 00136 Float_t *MomentumY; 00137 Float_t *MomentumZ; 00138 Float_t *PositionX; 00139 Float_t *PositionY; 00140 Float_t *PositionZ; 00141 00142 Int_t nX; // Number of points in the x direction 00143 Int_t nY; // Number of points in the y direction 00144 Int_t nZ; // Number of points in the z direction 00145 00146 Float_t dX; // Size (cm) of x step 00147 Float_t dY; // Size (cm) of y step 00148 Float_t dZ; // Size (cm) of z step 00149 00150 Float_t OriginX; // Origin of block in mother coordinates. (cm) 00151 Float_t OriginY; 00152 Float_t OriginZ; 00153 00154 Float_t *Edep; // 3-D array of energy deposits saved as flat array 00155 00156 Float_t EdepOutside; // Energy deposit outside block. 00157 // MC Data --> End 00158 00159 }; 00160 #endif