CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
GflashG4Watcher Class Reference

#include <GflashG4Watcher.h>

Inheritance diagram for GflashG4Watcher:
SimWatcher Observer< const BeginOfEvent * > Observer< const EndOfEvent * > Observer< const G4Step * >

Public Member Functions

 GflashG4Watcher (const edm::ParameterSet &p)
 
 ~GflashG4Watcher () override
 
- Public Member Functions inherited from SimWatcher
 SimWatcher ()
 
virtual ~SimWatcher ()
 
- Public Member Functions inherited from Observer< const BeginOfEvent * >
 Observer ()
 
void slotForUpdate (const BeginOfEvent * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const EndOfEvent * >
 Observer ()
 
void slotForUpdate (const EndOfEvent * iT)
 
virtual ~Observer ()
 
- Public Member Functions inherited from Observer< const G4Step * >
 Observer ()
 
void slotForUpdate (const G4Step * iT)
 
virtual ~Observer ()
 

Private Member Functions

void update (const BeginOfEvent *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const EndOfEvent *) override
 This routine will be called when the appropriate signal arrives. More...
 
void update (const G4Step *) override
 This routine will be called when the appropriate signal arrives. More...
 

Private Attributes

TH1F * eb_hit_lat
 
TH1F * eb_hit_lat_sd
 
TH1F * eb_hit_long
 
TH1F * eb_hit_long_sd
 
TH2F * eb_hit_rz
 
TH2F * eb_hit_rz_sd
 
TH1F * eb_ssp_rho
 
TH1F * ee_hit_lat
 
TH1F * ee_hit_lat_sd
 
TH1F * ee_hit_long
 
TH1F * ee_hit_long_sd
 
TH2F * ee_hit_rz
 
TH2F * ee_hit_rz_sd
 
TH1F * ee_ssp_z
 
TH1F * em_incE
 
TH1F * em_vtx_rho
 
TH1F * em_vtx_z
 
TFile * histFile_
 
std::string histFileName_
 
G4ThreeVector inc_direction
 
G4double inc_energy
 
G4bool inc_flag
 
G4ThreeVector inc_position
 
G4ThreeVector inc_vertex
 
G4double out_energy
 
double recoEnergyScaleEB_
 
double recoEnergyScaleEE_
 

Additional Inherited Members

Detailed Description

Definition at line 22 of file GflashG4Watcher.h.

Constructor & Destructor Documentation

GflashG4Watcher::GflashG4Watcher ( const edm::ParameterSet p)

Definition at line 21 of file GflashG4Watcher.cc.

References edm::ParameterSet::getParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

21  {
22 
23  edm::ParameterSet myP = p.getParameter<edm::ParameterSet>("GflashG4Watcher");
24  histFileName_ = myP.getParameter<std::string>("histFileName");
25  recoEnergyScaleEB_ = myP.getParameter<double>("recoEnergyScaleEB");
26  recoEnergyScaleEE_ = myP.getParameter<double>("recoEnergyScaleEE");
27 
28 
29  histFile_ = new TFile(histFileName_.c_str(),"RECREATE");
30 
31  TH1::AddDirectory(kTRUE);
32 
33 
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);
37 
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);
45 
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);
53 
54 }
T getParameter(std::string const &) const
double recoEnergyScaleEE_
std::string histFileName_
double recoEnergyScaleEB_
GflashG4Watcher::~GflashG4Watcher ( )
override

Definition at line 57 of file GflashG4Watcher.cc.

57  {
58  histFile_->cd();
59  histFile_->Write();
60  histFile_->Close();
61 }

Member Function Documentation

void GflashG4Watcher::update ( const BeginOfEvent )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const BeginOfEvent * >.

Definition at line 64 of file GflashG4Watcher.cc.

References funct::abs(), and GeV.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), MatrixUtil.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

64  {
65 
66  inc_flag = false;
67 
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();
73  out_energy = 0;
74 
75  em_incE->Fill(inc_energy/GeV);
76  em_vtx_rho->Fill(inc_vertex.rho()/cm);
77  em_vtx_z->Fill(inc_vertex.z()/cm);
78 
79  if(std::abs(inc_direction.eta()) < 1.5) eb_ssp_rho->Fill(inc_position.rho()/cm);
80  else ee_ssp_z->Fill(inc_position.z()/cm);
81 
82 }
const double GeV
Definition: MathUtil.h:16
G4ThreeVector inc_position
G4ThreeVector inc_direction
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
G4ThreeVector inc_vertex
void GflashG4Watcher::update ( const EndOfEvent )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const EndOfEvent * >.

Definition at line 85 of file GflashG4Watcher.cc.

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), MatrixUtil.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

85 { }
void GflashG4Watcher::update ( const G4Step *  )
overrideprivatevirtual

This routine will be called when the appropriate signal arrives.

Implements Observer< const G4Step * >.

Definition at line 88 of file GflashG4Watcher.cc.

References funct::abs(), angle(), funct::cos(), DEFINE_SIMWATCHER, diffTreeTool::diff, MillePedeFileConverter_cfg::e, GeV, and funct::sin().

Referenced by progressbar.ProgressBar::__next__(), MatrixUtil.Matrix::__setitem__(), MatrixUtil.Steps::__setitem__(), Vispa.Gui.VispaWidget.VispaWidget::autosize(), Vispa.Views.LineDecayView.LineDecayContainer::createObject(), Vispa.Views.LineDecayView.LineDecayContainer::deselectAllObjects(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::deselectAllWidgets(), Vispa.Gui.VispaWidget.VispaWidget::enableAutosizing(), progressbar.ProgressBar::finish(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseMoveEvent(), Vispa.Gui.MenuWidget.MenuWidget::mouseMoveEvent(), Vispa.Views.LineDecayView.LineDecayContainer::mouseMoveEvent(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::mouseReleaseEvent(), Vispa.Views.LineDecayView.LineDecayContainer::objectMoved(), MatrixUtil.Steps::overwrite(), Vispa.Views.LineDecayView.LineDecayContainer::removeObject(), Vispa.Gui.ConnectableWidget.ConnectableWidget::removePorts(), Vispa.Gui.FindDialog.FindDialog::reset(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Gui.VispaWidget.VispaWidget::setText(), Vispa.Gui.VispaWidget.VispaWidget::setTitle(), Vispa.Gui.ZoomableWidget.ZoomableWidget::setZoom(), Vispa.Views.LineDecayView.LineDecayContainer::setZoom(), and Vispa.Gui.PortConnection.PointToPointConnection::updateConnection().

88  {
89 
90  if(aStep == nullptr) return;
91 
92  double hitEnergy = aStep->GetTotalEnergyDeposit();
93 
94  if(hitEnergy < 1.0e-6) return;
95 
96  bool inEB = std::abs(inc_direction.eta()) < 1.5;
97 
98  out_energy += hitEnergy; // to check outgoing energy
99 
100  // This is to calculate shower depth and arm of hits from the shower direction
101  G4ThreeVector hitPosition = aStep->GetPreStepPoint()->GetPosition();
102  G4ThreeVector diff = hitPosition - inc_position;
103  double angle = diff.angle(inc_direction);
104  double diff_z = std::abs(diff.mag() * std::cos(angle));
105  double diff_r = std::abs(diff.mag() * std::sin(angle));
106 
107  G4VSensitiveDetector* aSensitive = aStep->GetPreStepPoint()->GetSensitiveDetector();
108 
109  if(inEB){ // showers in barrel crystals
110  hitEnergy *= recoEnergyScaleEB_;
111  eb_hit_long->Fill(diff_z/cm,hitEnergy/GeV);
112  eb_hit_lat->Fill(diff_r/cm,hitEnergy/GeV);
113  eb_hit_rz->Fill(diff_z/cm,diff_r/cm,hitEnergy/GeV);
114  if(aSensitive){
115  eb_hit_long_sd->Fill(diff_z/cm,hitEnergy/GeV);
116  eb_hit_lat_sd->Fill(diff_r/cm,hitEnergy/GeV);
117  eb_hit_rz_sd->Fill(diff_z/cm,diff_r/cm,hitEnergy/GeV);
118  }
119  }
120  else{ // showers in endcap crystals
121  hitEnergy *= recoEnergyScaleEE_;
122  ee_hit_long->Fill(diff_z/cm,hitEnergy/GeV);
123  ee_hit_lat->Fill(diff_r/cm,hitEnergy/GeV);
124  ee_hit_rz->Fill(diff_z/cm,diff_r/cm,hitEnergy/GeV);
125  if(aSensitive){
126  ee_hit_long_sd->Fill(diff_z/cm,hitEnergy/GeV);
127  ee_hit_lat_sd->Fill(diff_r/cm,hitEnergy/GeV);
128  ee_hit_rz_sd->Fill(diff_z/cm,diff_r/cm,hitEnergy/GeV);
129  }
130  }
131 
132 
133 }
const double GeV
Definition: MathUtil.h:16
G4ThreeVector inc_position
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
G4ThreeVector inc_direction
double recoEnergyScaleEE_
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double recoEnergyScaleEB_
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11

Member Data Documentation

TH1F* GflashG4Watcher::eb_hit_lat
private

Definition at line 58 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::eb_hit_lat_sd
private

Definition at line 61 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::eb_hit_long
private

Definition at line 57 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::eb_hit_long_sd
private

Definition at line 60 of file GflashG4Watcher.h.

TH2F* GflashG4Watcher::eb_hit_rz
private

Definition at line 59 of file GflashG4Watcher.h.

TH2F* GflashG4Watcher::eb_hit_rz_sd
private

Definition at line 62 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::eb_ssp_rho
private

Definition at line 56 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::ee_hit_lat
private

Definition at line 66 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::ee_hit_lat_sd
private

Definition at line 69 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::ee_hit_long
private

Definition at line 65 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::ee_hit_long_sd
private

Definition at line 68 of file GflashG4Watcher.h.

TH2F* GflashG4Watcher::ee_hit_rz
private

Definition at line 67 of file GflashG4Watcher.h.

TH2F* GflashG4Watcher::ee_hit_rz_sd
private

Definition at line 70 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::ee_ssp_z
private

Definition at line 64 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::em_incE
private

Definition at line 52 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::em_vtx_rho
private

Definition at line 53 of file GflashG4Watcher.h.

TH1F* GflashG4Watcher::em_vtx_z
private

Definition at line 54 of file GflashG4Watcher.h.

TFile* GflashG4Watcher::histFile_
private

Definition at line 50 of file GflashG4Watcher.h.

std::string GflashG4Watcher::histFileName_
private

Definition at line 46 of file GflashG4Watcher.h.

G4ThreeVector GflashG4Watcher::inc_direction
private

Definition at line 37 of file GflashG4Watcher.h.

G4double GflashG4Watcher::inc_energy
private

Definition at line 34 of file GflashG4Watcher.h.

G4bool GflashG4Watcher::inc_flag
private

Definition at line 33 of file GflashG4Watcher.h.

G4ThreeVector GflashG4Watcher::inc_position
private

Definition at line 38 of file GflashG4Watcher.h.

G4ThreeVector GflashG4Watcher::inc_vertex
private

Definition at line 36 of file GflashG4Watcher.h.

G4double GflashG4Watcher::out_energy
private

Definition at line 35 of file GflashG4Watcher.h.

double GflashG4Watcher::recoEnergyScaleEB_
private

Definition at line 47 of file GflashG4Watcher.h.

double GflashG4Watcher::recoEnergyScaleEE_
private

Definition at line 48 of file GflashG4Watcher.h.