35 #include "TrackingAction.hh"
37 #include "DetectorConstruction.hh"
38 #include "RunAction.hh"
39 #include "HistoManager.hh"
48 :fDetector(DET), fRunAction(RA)
68 if (charge == 0.0)
return;
69 if (position.z() <
fZend)
return;
70 if (direction.z() <= 0.)
return;
77 G4double ux = direction.x(), uy = direction.y(), uz = direction.z();
80 analysisManager->FillH1(ih, thetax);
81 analysisManager->FillH1(ih, thetay);
85 G4double x = position.x(), y = position.y();
88 dr = analysisManager->GetH1Width(ih);
89 rmin = ((int)(r/dr))*dr;
90 ds = twopi*(rmin + 0.5*dr)*dr;
91 analysisManager->FillH1(ih, r, 1/ds);
96 dr = analysisManager->GetH1Width(ih);
97 rmin = ((int)(r/dr))*dr;
98 ds = twopi*(rmin + 0.5*dr)*dr;
99 analysisManager->FillH1(ih, r, 1/(uz*ds));
110 G4double dtheta = analysisManager->GetH1Width(ih);
111 G4double unit = analysisManager->GetH1Unit(ih);
113 G4double weight = unit*unit/(twopi*std::sin(theta)*dtheta);
114 analysisManager->FillH1(ih, theta, weight);
122 G4double thetam = std::atan(r/dist);
124 G4double dtheta = analysisManager->GetH1Width(ih);
125 G4double unit = analysisManager->GetH1Unit(ih);
127 G4double weight = unit*unit/(twopi*std::sin(thetam)*dtheta);
128 analysisManager->FillH1(ih, thetam, weight);
G4ParticleDefinition * GetDefinition() const
CLHEP::Hep3Vector G4ThreeVector
const G4ThreeVector & GetPosition() const
G4double GetThicknessFrame()
G4double GetThicknessWorld()
void PreUserTrackingAction(const G4Track *)
ExG4HbookAnalysisManager G4AnalysisManager
void PostUserTrackingAction(const G4Track *)
const G4ThreeVector & GetMomentumDirection() const
Detector construction class to demonstrate various ways of placement.
G4double GetPDGCharge() const
DetectorConstruction * fDetector
void SumFluence(G4double, G4double)