ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
XrayFluoHPGeSD.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file XrayFluoHPGeSD.cc
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 // Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it)
29 //
30 // History:
31 // -----------
32 // 28 Nov 2001 Elena Guardincerri Created
33 // 29 Nov 2002 Energy deposition bug fixed (Alfonso.mantero@ge.infn.it)
34 // -------------------------------------------------------------------
35 
36 #include "XrayFluoHPGeSD.hh"
37 #include "XrayFluoSensorHit.hh"
39 #include "G4VPhysicalVolume.hh"
40 #include "G4Step.hh"
41 #include "G4VTouchable.hh"
42 #include "G4TouchableHistory.hh"
43 #include "G4SDManager.hh"
44 #include "G4ios.hh"
45 #include "G4VProcess.hh"
46 
47 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
48 
51 :G4VSensitiveDetector(name),Detector(det)
52 {
53  collectionName.insert("HPGeCollection");
54  HitHPGeID = new G4int[500];
55  //G4cout << "XrayFluoHPGeSD created" << G4endl;
56 
57 }
58 
59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
60 
62 {
63 
64  delete [] HitHPGeID;
65 
66  // delete HPGeCollection;
67 
68  G4cout << "XrayFluoHPGeSD deleted" << G4endl;
69 }
70 
71 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
72 
74 
75 //initializes HCE with the hits collection(s) created by this
76  //sensitive detector
77 {
78  if (HCE){
79 
82  for (G4int j=0;j<Detector->GetNbOfPixels();j++)
83  {HitHPGeID [j]= -1;};
84  }
85 }
86 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
87 
89 {
90 
91  if (ROhist){
92 
94  // G4String particleName = aStep->GetTrack()->GetDynamicParticle()->GetDefinition()->GetParticleName();
95  // G4String processName = aStep->GetTrack()->GetCreatorProcess()->GetProcessName();
96 
97  // G4double partEnergy = aStep->GetPreStepPoint()->GetKineticEnergy();
98  // G4double secondEnergy = aStep->GetPostStepPoint()->GetKineticEnergy();
99  // G4cout << " la particella che deposita e': " << particleName << " ha una energia di keV "
100  // << partEnergy << " e deposita "<< edep << G4endl;
101  // G4cout << " la particella creata deposita: " << secondEnergy << G4endl;
102  // if (processName){
103 
104 
105 
106  // G4cout << " la particella viene da: " << processName << G4endl;
107  // }
108 
109  // else {G4cout << " il deposito proviene da: Rayleugh" << G4endl;}
110 
111  if (edep==0.) return false;
112 
113  // G4cout << " edep = " << edep << G4endl;
114 
115  G4TouchableHistory* theTouchable
117 
118  G4VPhysicalVolume* physVol = theTouchable->GetVolume();
119  // theTouchable->MoveUpHistory();
120  G4int PixelNumber = 0;
121  if (Detector->GetNbOfPixels()>1) PixelNumber= physVol->GetCopyNo() ;
122  if ( HitHPGeID[PixelNumber]==-1)
123  {
124  XrayFluoSensorHit* HPGeHit = new XrayFluoSensorHit();
125  HPGeHit->AddEnergy(edep);
126  HitHPGeID[PixelNumber] = HPGeCollection->insert(HPGeHit) - 1;
127  if (verboseLevel>0){
128  G4cout << " New Hit on pixel: " << PixelNumber << G4endl;
129  }
130  }
131  else
132  {
133  (*HPGeCollection)[HitHPGeID[PixelNumber]]->AddEnergy(edep);
134  //G4double ED =(*HPGeCollection)[HitHPGeID[PixelNumber]]->GetEdepTot();
135  if (verboseLevel>0)
136  G4cout << " Energy added to Pixel: " << PixelNumber << G4endl;
137  }
138 
139  return true;
140  }
141  else {return false;}
142 
143 }
144 
145 
146 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
147 
149 {
150  static G4int HCID = -1;
151  if(HCID<0)
154 }
155 
156 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
157 
159 {}
160 
161 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
162 
164 {}
165 
166 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
167 
169 {}
170 
171 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
172 
173 
174 
175 
176 
177 
178 
179 
180 
181 
182 
183 
184 
185 
186