2 #include "G4Electron.hh"
3 #include "G4Positron.hh"
4 #include "G4VProcess.hh"
5 #include "G4SDManager.hh"
6 #include "G4PrimaryParticle.hh"
7 #include "G4PrimaryVertex.hh"
29 histFile_ =
new TFile(histFileName_.c_str(),
"RECREATE");
31 TH1::AddDirectory(kTRUE);
34 em_incE =
new TH1F(
"em_incE",
"Incoming energy at Ecal;E (GeV);Number of Events",500,0.0,500.0);
35 em_vtx_rho =
new TH1F(
"em_vtx_rho",
"vertex position;#rho (cm);Number of Events",100,0.0,10.0);
36 em_vtx_z =
new TH1F(
"em_vtx_z",
"vertex position;z (cm);Number of Events",100,-10.0,10.0);
38 eb_ssp_rho =
new TH1F(
"eb_ssp_rho",
"Shower starting position;#rho (cm);Number of Events",200,0.0,200.0);
39 eb_hit_long =
new TH1F(
"eb_hit_long",
"longitudinal hit position;shower depth (cm);Number of energy weighted hits",400,0.0,200.0);
40 eb_hit_lat =
new TH1F(
"eb_hit_lat",
"lateral hit position;arm (cm);Number of energy weighted hits",100,0.0,5.0);
41 eb_hit_rz =
new TH2F(
"eb_hit_rz",
"hit position along the shower direction;shower depth (cm);arm (cm)",400,0.0,200.0,100,0.0,5.0);
42 eb_hit_long_sd =
new TH1F(
"eb_hit_long_sd",
"longitudinal hit position in Sensitive Detector;shower depth (cm);Number of energy weighted hits",400,0.0,200.0);
43 eb_hit_lat_sd =
new TH1F(
"eb_hit_lat_sd",
"lateral hit position in Sensitive Detector;arm (cm);Number of energy weighted hits",100,0.0,5.0);
44 eb_hit_rz_sd =
new TH2F(
"eb_hit_rz_sd",
"hit position along the shower direction in Sensitive Detector;shower depth (cm);arm (cm)",400,0.0,200.0,100,0.0,5.0);
46 ee_ssp_z =
new TH1F(
"ee_ssp_z",
"Shower starting position;z (cm);Number of Events",800,-400.0,400.0);
47 ee_hit_long =
new TH1F(
"ee_hit_long",
"longitudinal hit position;shower depth (cm);Number of energy weighted hits",800,0.0,400.0);
48 ee_hit_lat =
new TH1F(
"ee_hit_lat",
"lateral hit position;arm (cm);Number of energy weighted hits",100,0.0,5.0);
49 ee_hit_rz =
new TH2F(
"ee_hit_rz",
"hit position along the shower direction;shower depth (cm);arm (cm)",800,0.0,400.0,100,0.0,5.0);
50 ee_hit_long_sd =
new TH1F(
"ee_hit_long_sd",
"longitudinal hit position in Sensitive Detector;shower depth (cm);Number of energy weighted hits",800,0.0,400.0);
51 ee_hit_lat_sd =
new TH1F(
"ee_hit_lat_sd",
"lateral hit position in Sensitive Detector;arm (cm);Number of energy weighted hits",100,0.0,5.0);
52 ee_hit_rz_sd =
new TH2F(
"ee_hit_rz_sd",
"hit position along the shower direction in Sensitive Detector;shower depth (cm);arm (cm)",800,0.0,400.0,100,0.0,5.0);
68 const G4Event* evt = (*g4Event)();
69 inc_vertex = evt->GetPrimaryVertex(0)->GetPosition();
71 inc_direction = evt->GetPrimaryVertex(0)->GetPrimary(0)->GetMomentum().unit();
72 inc_energy = evt->GetPrimaryVertex(0)->GetPrimary(0)->GetMomentum().mag();
90 if(aStep ==
NULL)
return;
92 double hitEnergy = aStep->GetTotalEnergyDeposit();
94 if(hitEnergy < 1.0
e-6)
return;
101 G4ThreeVector hitPosition = aStep->GetPreStepPoint()->GetPosition();
107 G4VSensitiveDetector* aSensitive = aStep->GetPreStepPoint()->GetSensitiveDetector();
113 eb_hit_rz->Fill(diff_z/cm,diff_r/cm,hitEnergy/GeV);
124 ee_hit_rz->Fill(diff_z/cm,diff_r/cm,hitEnergy/GeV);
T getParameter(std::string const &) const
#define DEFINE_SIMWATCHER(type)
void update(const BeginOfEvent *)
This routine will be called when the appropriate signal arrives.
G4ThreeVector inc_position
Sin< T >::type sin(const T &t)
G4ThreeVector inc_direction
GflashG4Watcher(const edm::ParameterSet &p)
double recoEnergyScaleEE_
Cos< T >::type cos(const T &t)
std::string histFileName_
double recoEnergyScaleEB_
T angle(T x1, T y1, T z1, T x2, T y2, T z2)