Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/biasing/ReverseMC01/src/RMC01SD.cc

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 ]

Diff markup

Differences between /examples/extended/biasing/ReverseMC01/src/RMC01SD.cc (Version 11.3.0) and /examples/extended/biasing/ReverseMC01/src/RMC01SD.cc (Version 9.5.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 /// \file biasing/ReverseMC01/src/RMC01SD.cc   <<  26 // $Id: RMC01SD.cc,v 1.1 2009-11-19 22:41:18 ldesorgh Exp $
 27 /// \brief Implementation of the RMC01SD class <<  27 // GEANT4 tag $Name: not supported by cvs2svn $
 28 //                                             << 
 29 //                                                 28 //
 30 //////////////////////////////////////////////     29 //////////////////////////////////////////////////////////////
 31 //      Class Name:        RMC01SD             <<  30 //      Class Name: RMC01SD
 32 //        Author:               L. Desorgher   <<  31 //  Author:         L. Desorgher
 33 //         Organisation:         SpaceIT GmbH  <<  32 //  Organisation:   SpaceIT GmbH
 34 //        Contract:        ESA contract 21435/ <<  33 //  Contract: ESA contract 21435/08/NL/AT
 35 //         Customer:             ESA/ESTEC     <<  34 //  Customer:       ESA/ESTEC
 36 //////////////////////////////////////////////     35 //////////////////////////////////////////////////////////////
 37                                                << 
 38 //....oooOO0OOooo........oooOO0OOooo........oo << 
 39 //....oooOO0OOooo........oooOO0OOooo........oo << 
 40                                                << 
 41 #include "RMC01SD.hh"                              36 #include "RMC01SD.hh"
 42                                                <<  37 #include "G4Step.hh"
 43 #include "G4HCofThisEvent.hh"                      38 #include "G4HCofThisEvent.hh"
 44 #include "G4LogicalVolume.hh"                  <<  39 #include "G4Track.hh"
 45 #include "G4LogicalVolumeStore.hh"             <<  40 #include "G4SDManager.hh"
                                                   >>  41 #include "G4ios.hh"
 46 #include "G4ParticleDefinition.hh"                 42 #include "G4ParticleDefinition.hh"
                                                   >>  43 #include "G4VProcess.hh"
                                                   >>  44 #include "G4LogicalVolumeStore.hh"
                                                   >>  45 #include "G4LogicalVolume.hh"
 47 #include "G4PhysicalVolumeStore.hh"                46 #include "G4PhysicalVolumeStore.hh"
 48 #include "G4SDManager.hh"                      << 
 49 #include "G4Step.hh"                           << 
 50 #include "G4Track.hh"                          << 
 51 #include "G4VPhysicalVolume.hh"                    47 #include "G4VPhysicalVolume.hh"
 52 #include "G4VProcess.hh"                       << 
 53 #include "G4ios.hh"                            << 
 54                                                    48 
 55 // #include "G4AdjointAnalysisManager.hh"      <<  49 
                                                   >>  50 //#include "G4AdjointAnalysisManager.hh"
                                                   >>  51 #include "G4THitsCollection.hh"
                                                   >>  52 #include "G4RunManager.hh"
 56 #include "G4Electron.hh"                           53 #include "G4Electron.hh"
 57 #include "G4Gamma.hh"                              54 #include "G4Gamma.hh"
 58 #include "G4Proton.hh"                             55 #include "G4Proton.hh"
 59 #include "G4RunManager.hh"                     << 
 60 #include "G4THitsCollection.hh"                << 
 61                                                    56 
 62 class G4Step;                                  << 
 63                                                    57 
 64 //....oooOO0OOooo........oooOO0OOooo........oo << 
 65                                                    58 
 66 RMC01SD::RMC01SD(G4String name)                << 
 67   : G4VSensitiveDetector(name),                << 
 68     fTotalEventEdep(0.),                       << 
 69     fEventEdepCollection(0),                   << 
 70     fProtonCurrentCollection(0),               << 
 71     fGammaCurrentCollection(0),                << 
 72     fElectronCurrentCollection(0)              << 
 73 {                                              << 
 74   collectionName.insert("edep");               << 
 75   collectionName.insert("current_electron");   << 
 76   collectionName.insert("current_proton");     << 
 77   collectionName.insert("current_gamma");      << 
 78 }                                              << 
 79                                                    59 
 80 //....oooOO0OOooo........oooOO0OOooo........oo <<  60 class G4Step;
 81                                                    61 
                                                   >>  62 RMC01SD::RMC01SD(G4String name)
                                                   >>  63 :G4VSensitiveDetector(name)
                                                   >>  64 {  
                                                   >>  65    collectionName.insert("edep"); 
                                                   >>  66    collectionName.insert("current_electron"); 
                                                   >>  67    collectionName.insert("current_proton"); 
                                                   >>  68    collectionName.insert("current_gamma");
                                                   >>  69 ;
                                                   >>  70 }
                                                   >>  71 ////////////////////////////////////////////////////////////////////////////////
                                                   >>  72 //
 82 RMC01SD::~RMC01SD()                                73 RMC01SD::~RMC01SD()
 83 {                                              <<  74 {; 
 84   ;                                            << 
 85 }                                                  75 }
 86                                                <<  76 ////////////////////////////////////////////////////////////////////////////////
 87 //....oooOO0OOooo........oooOO0OOooo........oo <<  77 //
 88                                                << 
 89 void RMC01SD::Initialize(G4HCofThisEvent* HCE)     78 void RMC01SD::Initialize(G4HCofThisEvent* HCE)
 90 {                                              <<  79 {  TotalEventEdep=0.;
 91   fTotalEventEdep = 0.;                        <<  80    static G4int HCID = -1;
 92   static G4int HCID = -1;                      <<  81    
 93                                                <<  82    EventEdepCollection = new G4THitsCollection<RMC01DoubleWithWeightHit>(SensitiveDetectorName,collectionName[0]);
 94   fEventEdepCollection =                       <<  83    HCID = GetCollectionID(0);
 95     new G4THitsCollection<RMC01DoubleWithWeigh <<  84    HCE->AddHitsCollection(HCID,EventEdepCollection);
 96   HCID = GetCollectionID(0);                   <<  85   
 97   HCE->AddHitsCollection(HCID, fEventEdepColle <<  86    ElectronCurrentCollection = new G4THitsCollection<RMC01DoubleWithWeightHit>(SensitiveDetectorName,collectionName[1]);
 98                                                <<  87    HCID = GetCollectionID(1);
 99   fElectronCurrentCollection =                 <<  88    HCE->AddHitsCollection(HCID,ElectronCurrentCollection);
100     new G4THitsCollection<RMC01DoubleWithWeigh <<  89  
101   HCID = GetCollectionID(1);                   <<  90    ProtonCurrentCollection = new G4THitsCollection<RMC01DoubleWithWeightHit>(SensitiveDetectorName,collectionName[2]);
102   HCE->AddHitsCollection(HCID, fElectronCurren <<  91    HCID = GetCollectionID(2);
103                                                <<  92    HCE->AddHitsCollection(HCID,ProtonCurrentCollection);
104   fProtonCurrentCollection =                   <<  93   
105     new G4THitsCollection<RMC01DoubleWithWeigh <<  94    GammaCurrentCollection = new G4THitsCollection<RMC01DoubleWithWeightHit>(SensitiveDetectorName,collectionName[3]);
106   HCID = GetCollectionID(2);                   <<  95    HCID = GetCollectionID(3);
107   HCE->AddHitsCollection(HCID, fProtonCurrentC <<  96    HCE->AddHitsCollection(HCID,GammaCurrentCollection); 
108                                                <<  97   
109   fGammaCurrentCollection =                    <<  98    
110     new G4THitsCollection<RMC01DoubleWithWeigh <<  99    
111   HCID = GetCollectionID(3);                   << 
112   HCE->AddHitsCollection(HCID, fGammaCurrentCo << 
113 }                                                 100 }
114                                                << 101 ////////////////////////////////////////////////////////////////////////////////
115 //....oooOO0OOooo........oooOO0OOooo........oo << 102 //
116                                                << 103 G4bool RMC01SD::ProcessHits(G4Step*aStep,G4TouchableHistory* )
117 G4bool RMC01SD::ProcessHits(G4Step* aStep, G4T << 
118 {                                                 104 {
119   G4double weight = aStep->GetTrack()->GetWeig << 105   G4double weight =aStep->GetTrack()->GetWeight();
120   G4double edep = aStep->GetTotalEnergyDeposit << 106   G4double edep= aStep->GetTotalEnergyDeposit();
121   if (edep > 0) fEventEdepCollection->insert(n << 107   if (edep >0) EventEdepCollection->insert(new RMC01DoubleWithWeightHit(edep,weight)); 
122                                                << 108   
123   G4StepPoint* preStepPoint = aStep->GetPreSte << 109   G4StepPoint* preStepPoint =aStep->GetPreStepPoint();
124                                                << 110   
125   if (preStepPoint->GetStepStatus() == fGeomBo << 111   if (preStepPoint->GetStepStatus() == fGeomBoundary ){
126     // Entering the sensitive volume           << 112   
127     weight = preStepPoint->GetWeight();        << 113      // Entering the sensitive volume
128     G4double eKin = preStepPoint->GetKineticEn << 114      weight=preStepPoint->GetWeight();
129     G4ParticleDefinition* thePartDef = aStep-> << 115      G4double eKin = preStepPoint->GetKineticEnergy();
130     if (thePartDef == G4Electron::Electron())  << 116      G4ParticleDefinition* thePartDef = aStep->GetTrack()->GetDefinition(); 
131       fElectronCurrentCollection->insert(new R << 117      if (thePartDef == G4Electron::Electron())  ElectronCurrentCollection->insert(new RMC01DoubleWithWeightHit(eKin,weight));
132     else if (thePartDef == G4Gamma::Gamma())   << 118      else if (thePartDef == G4Gamma::Gamma())   GammaCurrentCollection->insert(new RMC01DoubleWithWeightHit(eKin,weight));
133       fGammaCurrentCollection->insert(new RMC0 << 119      else if (thePartDef == G4Proton::Proton()) ProtonCurrentCollection->insert(new RMC01DoubleWithWeightHit(eKin,weight));
134     else if (thePartDef == G4Proton::Proton()) << 120   
135       fProtonCurrentCollection->insert(new RMC << 121   }   
136   }                                            << 122   return true;   
137   return true;                                 << 123 }  
138 }                                              << 124 ////////////////////////////////////////////////////////////////////////////////
139                                                << 125 //
140 //....oooOO0OOooo........oooOO0OOooo........oo << 
141                                                << 
142 void RMC01SD::EndOfEvent(G4HCofThisEvent*)        126 void RMC01SD::EndOfEvent(G4HCofThisEvent*)
143 {                                              << 127 { EventEdepCollection->insert(new RMC01DoubleWithWeightHit(TotalEventEdep,1.)); 
144   fEventEdepCollection->insert(new RMC01Double << 
145 }                                                 128 }
146                                                << 129 ////////////////////////////////////////////////////////////////////////////////
147 //....oooOO0OOooo........oooOO0OOooo........oo << 130 //
148                                                << 131 void RMC01SD::clear()
149 void RMC01SD::Clear()                          << 132 {;
150 {                                              << 
151   ;                                            << 
152 }                                                 133 }
153                                                << 134 ////////////////////////////////////////////////////////////////////////////////
154 //....oooOO0OOooo........oooOO0OOooo........oo << 135 //
155                                                << 
156 void RMC01SD::DrawAll()                           136 void RMC01SD::DrawAll()
157 {                                              << 137 {;
158   ;                                            << 138 } 
159 }                                              << 139 ////////////////////////////////////////////////////////////////////////////////
160                                                << 140 //
161 //....oooOO0OOooo........oooOO0OOooo........oo << 
162                                                << 
163 void RMC01SD::PrintAll()                          141 void RMC01SD::PrintAll()
164 {                                              << 142 {;
165   ;                                            << 
166 }                                                 143 }
167                                                   144 
168 //....oooOO0OOooo........oooOO0OOooo........oo << 
169                                                   145