Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions
XrayTelAnalysis Class Reference

#include <XrayTelAnalysis.hh>

Public Member Functions

 ~XrayTelAnalysis ()
 
void book ()
 
void finish ()
 
void analyseStepping (const G4Track &track, G4bool entering)
 

Static Public Member Functions

static XrayTelAnalysisgetInstance ()
 

Detailed Description

Definition at line 58 of file XrayTelAnalysis.hh.

Constructor & Destructor Documentation

XrayTelAnalysis::~XrayTelAnalysis ( )

Definition at line 66 of file XrayTelAnalysis.cc.

67 {
68  if (asciiFile)
69  delete asciiFile;
70 }

Member Function Documentation

void XrayTelAnalysis::analyseStepping ( const G4Track track,
G4bool  entering 
)

Definition at line 124 of file XrayTelAnalysis.cc.

References G4VAnalysisManager::AddNtupleRow(), G4VAnalysisManager::FillH1(), G4VAnalysisManager::FillH2(), G4VAnalysisManager::FillNtupleDColumn(), G4endl, G4Track::GetKineticEnergy(), G4Track::GetMomentumDirection(), G4Track::GetPosition(), python.hepunit::keV, python.hepunit::mm, right, CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

Referenced by XrayTelSteppingAction::UserSteppingAction().

125 {
126  eKin = track.GetKineticEnergy()/keV;
127  G4ThreeVector pos = track.GetPosition()/mm;
128  y = pos.y();
129  z = pos.z();
130  G4ThreeVector dir = track.GetMomentumDirection();
131  dirX = dir.x();
132  dirY = dir.y();
133  dirZ = dir.z();
134 
135  // Fill histograms
136  G4AnalysisManager* man = G4AnalysisManager::Instance();
137  man->FillH1(1,eKin);
138  man->FillH2(1,y,z);
139 
140  // Fill histograms and ntuple, tracks entering the detector
141  if (entering) {
142  // Fill and plot histograms
143  man->FillH1(2,eKin);
144  man->FillH2(2,y,z);
145 
146  man->FillNtupleDColumn(0,eKin);
147  man->FillNtupleDColumn(1,x);
148  man->FillNtupleDColumn(2,y);
149  man->FillNtupleDColumn(3,z);
150  man->FillNtupleDColumn(4,dirX);
151  man->FillNtupleDColumn(5,dirY);
152  man->FillNtupleDColumn(6,dirZ);
153  man->AddNtupleRow();
154  }
155 
156 
157  // Write to file
158  if (entering) {
159  if(asciiFile->is_open()) {
160  (*asciiFile) << std::setiosflags(std::ios::fixed)
161  << std::setprecision(3)
162  << std::setiosflags(std::ios::right)
163  << std::setw(10);
164  (*asciiFile) << eKin;
165  (*asciiFile) << std::setiosflags(std::ios::fixed)
166  << std::setprecision(3)
167  << std::setiosflags(std::ios::right)
168  << std::setw(10);
169  (*asciiFile) << x;
170  (*asciiFile) << std::setiosflags(std::ios::fixed)
171  << std::setprecision(3)
172  << std::setiosflags(std::ios::right)
173  << std::setw(10);
174  (*asciiFile) << y;
175  (*asciiFile) << std::setiosflags(std::ios::fixed)
176  << std::setprecision(3)
177  << std::setiosflags(std::ios::right)
178  << std::setw(10);
179  (*asciiFile) << z
180  << G4endl;
181  }
182  }
183 }
double x() const
const G4ThreeVector & GetPosition() const
double z() const
G4double GetKineticEnergy() const
G4bool FillNtupleDColumn(G4int id, G4double value)
const G4ThreeVector & GetMomentumDirection() const
G4bool FillH2(G4int id, G4double xvalue, G4double yvalue, G4double weight=1.0)
G4bool FillH1(G4int id, G4double value, G4double weight=1.0)
double y() const
#define G4endl
Definition: G4ios.hh:61
void XrayTelAnalysis::book ( )

Definition at line 80 of file XrayTelAnalysis.cc.

References G4VAnalysisManager::CreateH1(), G4VAnalysisManager::CreateH2(), G4VAnalysisManager::CreateNtuple(), G4VAnalysisManager::CreateNtupleDColumn(), G4VAnalysisManager::FinishNtuple(), G4cout, G4endl, G4VAnalysisManager::OpenFile(), and G4VAnalysisManager::SetFirstHistoId().

Referenced by XrayTelRunAction::BeginOfRunAction().

81 {
82  // Get/create analysis manager
83  G4AnalysisManager* man = G4AnalysisManager::Instance();
84 
85  // Open an output file
86  G4cout << "Opening output file " << histFileName << " ... ";
87  man->OpenFile(histFileName);
88  man->SetFirstHistoId(1);
89  G4cout << " done" << G4endl;
90 
91  // Book 1D histograms
92  man->CreateH1("1","Energy, all /keV", 100,0.,100.);
93  man->CreateH1("2","Energy, entering detector /keV", 500,0.,500.);
94 
95  // Book 2D histograms (notice: the numbering is independent)
96  man->CreateH2("1","y-z, all /mm", 100,-500.,500.,100,-500.,500.);
97  man->CreateH2("2","y-z, entering detector /mm", 200,-50.,50.,200,-50.,50.);
98 
99  // Book ntuples
100  man->CreateNtuple("10", "Track ntuple");
101  man->CreateNtupleDColumn("energy");
102  man->CreateNtupleDColumn("x");
103  man->CreateNtupleDColumn("y");
104  man->CreateNtupleDColumn("z");
105  man->CreateNtupleDColumn("dirx");
106  man->CreateNtupleDColumn("diry");
107  man->CreateNtupleDColumn("dirz");
108  man->FinishNtuple();
109 }
G4bool SetFirstHistoId(G4int firstId)
G4int CreateH1(const G4String &name, const G4String &title, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none", const G4String &binSchemeName="linear")
G4int CreateNtuple(const G4String &name, const G4String &title)
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
G4int CreateNtupleDColumn(const G4String &name)
G4int CreateH2(const G4String &name, const G4String &title, G4int nxbins, G4double xmin, G4double xmax, G4int nybins, G4double ymin, G4double ymax, const G4String &xunitName="none", const G4String &yunitName="none", const G4String &xfcnName="none", const G4String &yfcnName="none", const G4String &xbinScheme="linear", const G4String &ybinScheme="linear")
void XrayTelAnalysis::finish ( )

Definition at line 112 of file XrayTelAnalysis.cc.

References G4VAnalysisManager::CloseFile(), and G4VAnalysisManager::Write().

Referenced by XrayTelRunAction::EndOfRunAction().

113 {
114  asciiFile->close();
115 
116  // Save histograms
117  G4AnalysisManager* man = G4AnalysisManager::Instance();
118  man->Write();
119  man->CloseFile();
120  // Complete clean-up
121  delete G4AnalysisManager::Instance();
122 }
XrayTelAnalysis * XrayTelAnalysis::getInstance ( )
static

Definition at line 73 of file XrayTelAnalysis.cc.

Referenced by XrayTelRunAction::BeginOfRunAction(), XrayTelRunAction::EndOfRunAction(), and XrayTelSteppingAction::UserSteppingAction().

74 {
75  if (instance == 0) instance = new XrayTelAnalysis;
76  return instance;
77 }

The documentation for this class was generated from the following files: