source: trunk/examples/advanced/underground_physics/src/DMXScintSD.cc @ 1304

Last change on this file since 1304 was 807, checked in by garnier, 16 years ago

update

File size: 4.9 KB
Line 
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//
27// --------------------------------------------------------------
28//   GEANT 4 - Underground Dark Matter Detector Advanced Example
29//
30//      For information related to this code contact: Alex Howard
31//      e-mail: alexander.howard@cern.ch
32// --------------------------------------------------------------
33// Comments
34//
35//                  Underground Advanced
36//               by A. Howard and H. Araujo
37//                    (27th November 2001)
38//
39// ScintSD (scintillator sensitive detector definition) program
40// --------------------------------------------------------------
41
42#include "DMXScintSD.hh"
43
44#include "DMXScintHit.hh"
45#include "DMXDetectorConstruction.hh"
46
47#include "G4VPhysicalVolume.hh"
48#include "G4HCofThisEvent.hh"
49#include "G4Step.hh"
50#include "G4SDManager.hh"
51#include "G4ParticleDefinition.hh"
52#include "G4ParticleTypes.hh"
53#include "G4Ions.hh"
54#include "G4ios.hh"
55
56//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
57
58DMXScintSD::DMXScintSD(G4String name,DMXDetectorConstruction* DMXSD) 
59  :G4VSensitiveDetector(name),DMXDetector(DMXSD)
60{
61  G4String HCname="scintillatorCollection";
62  collectionName.insert(HCname);
63}
64
65//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
66
67DMXScintSD::~DMXScintSD(){ }
68
69//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
70
71void DMXScintSD::Initialize(G4HCofThisEvent*)
72{
73  scintillatorCollection = new DMXScintHitsCollection
74    (SensitiveDetectorName,collectionName[0]);
75
76  HitID = -1;
77}
78
79//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
80
81G4bool DMXScintSD::ProcessHits(G4Step* aStep, G4TouchableHistory*)
82{
83  G4double edep = aStep->GetTotalEnergyDeposit();
84  G4ParticleDefinition* particleType = aStep->GetTrack()->GetDefinition();
85  G4String particleName = particleType->GetParticleName();
86
87  G4double stepl = 0.;
88  if (particleType->GetPDGCharge() != 0.)
89    stepl = aStep->GetStepLength();
90 
91  if ((edep==0.)&&(stepl==0.)) return false;     
92
93
94  // fill in hit
95  DMXScintHit* newHit = new DMXScintHit();
96  newHit->SetEdep(edep);
97  newHit->SetPos(aStep->GetPostStepPoint()->GetPosition());
98  newHit->SetTime(aStep->GetPreStepPoint()->GetGlobalTime());
99  newHit->SetParticle(particleName);
100  newHit->SetParticleEnergy(aStep->GetPreStepPoint()->GetKineticEnergy() );
101
102  HitID = scintillatorCollection->insert(newHit);
103 
104  return true;
105}
106
107
108//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
109
110void DMXScintSD::EndOfEvent(G4HCofThisEvent* HCE)
111{
112
113  G4String HCname = collectionName[0];
114  static G4int HCID = -1;
115  if(HCID<0)
116    HCID = G4SDManager::GetSDMpointer()->GetCollectionID(HCname);
117  HCE->AddHitsCollection(HCID,scintillatorCollection);
118
119  G4int nHits = scintillatorCollection->entries();
120  if (verboseLevel>=1)
121    G4cout << "     LXe collection: " <<  nHits << " hits" << G4endl;
122  if (verboseLevel>=2)
123    scintillatorCollection->PrintAllHits();
124
125}
126
127//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
128
129void DMXScintSD::clear()
130{} 
131
132//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
133
134void DMXScintSD::DrawAll()
135{} 
136
137//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
138
139void DMXScintSD::PrintAll()
140{} 
141
142//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
143
Note: See TracBrowser for help on using the repository browser.