Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/doiPET/include/doiPETRun.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 //
  2 // ********************************************************************
  3 // * License and Disclaimer                                           *
  4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.                             *
 10 // *                                                                  *
 11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                                                  *
 18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // ********************************************************************
 25 //
 26 /// \file electromagnetic/TestEm11/include/doiPETRun.hh
 27 /// \brief Definition of the doiPETRun class
 28 //
 29 // $Id: doiPETRun.hh 71375 2013-06-14 07:39:33Z maire $
 30 //
 31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 33 
 34 #ifndef doiPETRun_h
 35 #define doiPETRun_h 1
 36 
 37 #include "G4Run.hh"
 38 #include "G4VProcess.hh"
 39 #include "globals.hh"
 40 
 41 #include <iostream>
 42 #include <fstream>
 43 #include <sstream>
 44 #include <map>
 45 #include <set>
 46 class doiPETDetectorConstruction;
 47 class G4ParticleDefinition;
 48 class doiPETRunAction;
 49 
 50 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 51 class InteractionInformation; 
 52 class doiPETAnalysis;
 53 class doiPETRun : public G4Run
 54 {
 55 public:
 56   doiPETRun(/*doiPETDetectorConstruction**/);
 57   ~doiPETRun();
 58 
 59 public:
 60   //
 61   void GetIntractionInfomation(InteractionInformation*);
 62   void FindInteractingCrystal();
 63   void Clear();
 64   void OpenRun(G4String);
 65   void GetEventIDRun(G4int);
 66   void CalulateAcquisitionTime();
 67   void SetAnnihilationTime(G4double);
 68   void SetEventID(G4int);
 69   virtual void Merge(const G4Run*);
 70   G4ThreeVector CenterOfMassInteractionPos(const std::vector<G4int>&, const std::vector<G4double>&, G4double, const std::vector<G4ThreeVector>&);
 71   //void EndOfRun();     
 72 
 73 private:
 74 
 75   std::multimap< G4int, InteractionInformation* > mapBlockInteraction;
 76   std::set<G4int> setBlockInteraction;
 77   std::ofstream ofs;
 78 
 79   std::vector<G4int> crystalID_vec;
 80   std::vector<G4ThreeVector> posInter_vec;
 81   std::vector<G4double>edepInCry_vec;
 82 
 83   //center of mass interaction of position
 84   G4ThreeVector posInterInCrystal;
 85 
 86   G4int eventID;
 87   doiPETRunAction* fRunAction;
 88   doiPETAnalysis* fAnalysis;
 89   G4double totalEdep;
 90   G4int blockID, crystalID;
 91 
 92   G4double totalTime;
 93   G4double prev_totalTime;
 94   G4double timeInterval;
 95 
 96   G4ThreeVector interactionPos;
 97   //
 98   G4double interactionTime;
 99   G4double timeOfAnnihil;
100 
101   G4int numberofInteractions;
102   G4double edep;
103   G4double edepMax;
104   G4double edep_AfterCrystalBlurring;
105 
106 };
107 
108 
109 //The following is to get interaction information
110 class InteractionInformation
111 {
112 
113 public:
114   InteractionInformation(){;};
115   ~InteractionInformation(){;};
116 
117   //set energy deposition
118   void SetEdep(G4double e) {edep=e;};
119 
120   //set block number
121   void SetBlockNo(G4int n) {blockNo=n;};
122 
123   //set crystal ID (this is continuous numbering of crystals)
124   void SetCrystalNo(G4int n) {crystalNo=n;};
125 
126   //set global time
127   void SetGlobalTime(G4double t){globalTime=t;};
128 
129   //set interaction position with respect to the crystal axis (local position)
130   void SetInteractionPositionInCrystal(G4ThreeVector pos){crystalPosition = pos;};
131 
132 
133   G4double GetEdep() {return edep;};
134   G4int GetBlockNo() {return blockNo;};
135   G4int GetCrystalNo() {return crystalNo;};
136   G4double GetGlobalTime() {return globalTime;};
137 
138   //Interaction position in the detector
139   G4ThreeVector GetInteractionPositionInCrystal(){return crystalPosition;};
140 
141 
142 private:
143   G4double edep;
144   G4double globalTime;
145   G4int blockNo;
146   G4int crystalNo;
147   G4ThreeVector crystalPosition;
148 
149 };
150 
151 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
152 
153 #endif
154 
155