Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FCALTBEventAction.cc
Go to the documentation of this file.
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 // $Id: FCALTBEventAction.cc 73002 2013-08-15 08:09:37Z gcosmo $
27 //
28 //
29 
30 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
32 
33 #include "FCALTBEventAction.hh"
35 #include "FCALRunAction.hh"
36 #include "FCALCalorHit.hh"
37 #include <vector>
38 
39 #include "G4Event.hh"
40 #include "G4EventManager.hh"
41 #include "G4HCofThisEvent.hh"
42 #include "G4VHitsCollection.hh"
43 #include "G4SDManager.hh"
44 #include "G4UImanager.hh"
45 #include "G4ios.hh"
46 #include "G4UnitsTable.hh"
47 #include "Randomize.hh"
48 #include "FCALSteppingAction.hh"
49 
50 #include "FCALAnalysisManager.hh"
51 
52 #include "G4ios.hh"
53 #include <fstream>
54 #include <iostream>
55 
56 #include "G4SystemOfUnits.hh"
57 
58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
59 
61  :drawFlag("all"),printModulo(10), StepAction(SA), eventMessenger(0)
62 {
63  eventMessenger = new FCALTBEventActionMessenger(this);
64 }
65 
66 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
67 
69 {
70  delete eventMessenger;
71  eventMessenger = 0;
72 }
73 
74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
75 
77 {
78  G4int evtNb = evt->GetEventID();
79  if (evtNb%printModulo == 0)
80  {
81  G4cout << "\n---> Begin of event: " << evtNb+1 << G4endl;
82 // HepRandom::showEngineStatus();
83  }
84 
85  NTracksOutOfWorld = 0;
86  NSecondaries = 0;
87 
88  StepAction->initialize(evtNb+1);
89 }
90 
91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
92 
94 {
95  // Fill histograms
96  G4AnalysisManager* man = G4AnalysisManager::Instance();
97 
98  G4int i,j;
99  NTracksOutOfWorld = StepAction->GetOutOfWorldTracks(0, 0);
100  G4cout << "N Tracks out of world " << NTracksOutOfWorld << G4endl;
101 
102  // Write Leaving Particles in File
103  //--------------------------------
104  G4String FileName1 = "OutTracks_802_1mm.dat";
105  std::ios::openmode iostemp1;
106  if(Init1 == 0) {
107  iostemp1 = std::ios::out;
108  Init1++;
109  } else {
110  iostemp1 = std::ios::out|std::ios::app; // std::ios::app;
111  };
112  std::ofstream OutTracks(FileName1, iostemp1);
113 
114  OutTracks << NTracksOutOfWorld << G4endl;
115 
116  G4double OutOfWorld;
117  for(i=1; i<= NTracksOutOfWorld ; i++){
118  for(j=1; j<11 ; j++) {
119  // G4double OutOfWorld = StepAction->GetOutOfWorldTracks(i,j);
120  OutOfWorld = StepAction->GetOutOfWorldTracks(i,j);
121  OutTracks << OutOfWorld << " " ;
122  }
123  OutTracks << std::endl;
124  // G4double OutOfWorld2 = StepAction->GetOutOfWorldTracks(i,j);
125  }
126  OutTracks.close();
127 
128  man->FillH1(1,NTracksOutOfWorld);
129 
130  NSecondaries = StepAction->GetSecondaries(0,0);
131  G4cout << "N Scondaries " << NSecondaries << G4endl;
132 
133  // Write Secondary Particles in File
134  //----------------------------------
135  G4String FileName2 = "SecndTracks_802_1mm.dat";
136  std::ios::openmode iostemp2;
137  if(Init2 == 0) {
138  iostemp2 = std::ios::out;
139  Init2++;
140  } else {
141  iostemp2 = std::ios::out|std::ios::app; // std::ios::app;
142  };
143 
144  std::ofstream SecndTracks(FileName2, iostemp2);
145 
146  SecndTracks << NSecondaries << std::endl;
147 
148  G4double Secondary;
149  for(i=1; i<= NSecondaries ; i++){
150  for(j=1; j<11 ; j++) {
151  Secondary = StepAction->GetSecondaries(i,j);
152  SecndTracks << Secondary << " " ;
153  }
154  SecndTracks << std::endl;
155  // G4double Secondary2 = StepAction->GetSecondaries(i,j);
156  }
157  SecndTracks.close();
158 
159  man->FillH1(2,NSecondaries);
160 
161  // Write Edep in FCAL1 and FCAL2
162  G4String FileName3 = "EdepFCAL_802_1mm.dat";
163  std::ios::openmode iostemp3;
164  if(Init3 == 0) {
165  iostemp3 = std::ios::out;
166  Init3++;
167  } else {
168  iostemp3 = std::ios::out|std::ios::app; // std::ios::app;
169  };
170 
171  std::ofstream EdepFCAL(FileName3, iostemp3);
172 
173  G4double EmEdep = StepAction->GetEdepFCAL("FCALEm");
174  G4double HadEdep = StepAction->GetEdepFCAL("FCALHad");
175 
176  EdepFCAL << EmEdep << " ";
177  EdepFCAL << HadEdep;
178  EdepFCAL << std::endl;
179  EdepFCAL.close();
180 
181  man->FillH1(3,EmEdep/MeV);
182  man->FillH1(4,HadEdep/MeV);
183 
184 
185  G4cout<<"EmEdep is="<<EmEdep/MeV << " MeV " << G4endl;
186  G4cout<<"HadEdep is="<<HadEdep << " MeV" << G4endl;
187 
188  G4cout << "Edep in FCAL1 FCAl2 : " << StepAction->GetEdepFCAL("FCALEm") << " ";
189  G4cout << StepAction->GetEdepFCAL("FCALHad") << G4endl;
190 }
191 
192 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
G4double GetSecondaries(G4int, G4int)
int G4int
Definition: G4Types.hh:78
virtual void BeginOfEventAction(const G4Event *)
G4int GetEventID() const
Definition: G4Event.hh:140
G4GLOB_DLL std::ostream G4cout
FCALTBEventAction(FCALSteppingAction *)
G4double GetOutOfWorldTracks(G4int, G4int)
G4double GetEdepFCAL(G4String)
G4bool FillH1(G4int id, G4double value, G4double weight=1.0)
virtual void EndOfEventAction(const G4Event *)
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
virtual ~FCALTBEventAction()