Belle II Software  release-05-01-25
SensitiveDetector.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Poyuan Chen *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef ECLSENSITIVEDETECTOR_H_
12 #define ECLSENSITIVEDETECTOR_H_
13 
14 #include <simulation/kernel/SensitiveDetectorBase.h>
15 #include <simulation/dataobjects/BeamBackHit.h>
16 #include <framework/datastore/StoreArray.h>
17 #include <framework/datastore/RelationArray.h>
18 #include <framework/database/DBObjPtr.h>
19 #include <ecl/dataobjects/ECLSimHit.h>
20 #include <ecl/dataobjects/ECLHit.h>
21 #include <ecl/dbobjects/ECLHadronComponentEmissionFunction.h>
22 
23 #include "G4EmCalculator.hh"
24 
25 #include "TGraph.h"
26 
27 namespace Belle2 {
32  namespace ECL {
33  class ECLGeometryPar;
35  class SensitiveDetector: public Simulation::SensitiveDetectorBase {
36  public:
38  SensitiveDetector(G4String, G4double, G4double);
39 
42 
44  void Initialize(G4HCofThisEvent* HCTE) override;
45 
47  bool step(G4Step* aStep, G4TouchableHistory* history) override;
48 
50  void EndOfEvent(G4HCofThisEvent* eventHC) override;
51 
52  private:
53  TGraph* m_HadronEmissionFunction = nullptr;
54  double GetHadronIntensityFromDEDX(double);
56  int saveSimHit(G4int, G4int, G4int, G4double, G4double, const G4ThreeVector&, const G4ThreeVector&, double);
57  // members of SensitiveDetector
58  // G4double m_thresholdEnergyDeposit;// Energy Deposit threshold
59  // G4double m_thresholdKineticEnergy;// Kinetic Energy threshold
60  G4EmCalculator m_emCal;
62  StoreArray<ECLSimHit> m_eclSimHits;
63  StoreArray<ECLHit> m_eclHits;
64  StoreArray<MCParticle> m_mcParticles;
65  RelationArray m_eclSimHitRel;
66  RelationArray m_eclHitRel;
67  int m_trackID;
68  double m_WeightedTime;
69  double m_energyDeposit;
71  G4ThreeVector m_WeightedPos;
72  G4ThreeVector m_momentum;
75  };
78  public:
80  explicit SensitiveDiode(const G4String&);
81 
84 
86  void Initialize(G4HCofThisEvent* HCTE) override;
87 
89  bool step(G4Step* aStep, G4TouchableHistory* history) override;
90 
92  void EndOfEvent(G4HCofThisEvent* eventHC) override;
93 
94  private:
95  // members of SensitiveDiode
98  struct hit_t {
99  int cellId;
100  double e;
101  double t;
102  };
103  int m_trackID;
104  double m_tsum;
105  double m_esum;
107  std::vector<hit_t> m_hits;
108  std::vector<int> m_cells;
110  };
111 
114  public:
116  explicit BkgSensitiveDiode(const G4String&);
117 
119  bool step(G4Step* aStep, G4TouchableHistory* history) override;
120  private:
121  int m_trackID;
122  TVector3 m_startPos;
123  TVector3 m_startMom;
124  double m_startTime;
125  double m_startEnergy;
126  double m_energyDeposit;
127  double m_trackLength;
132  };
133  } // end of namespace ecl
135 } // end of namespace Belle2
136 
137 #endif /* ECLSENSITIVEDETECTOR_H_ */
Belle2::ECL::SensitiveDetector::m_WeightedTime
double m_WeightedTime
average track time weighted by energy deposition
Definition: SensitiveDetector.h:76
Belle2::ECL::SensitiveDiode::m_esum
double m_esum
total energy deposited in a volume by a track
Definition: SensitiveDetector.h:113
Belle2::RelationArray
Low-level class to create/modify relations between StoreArrays.
Definition: RelationArray.h:72
Belle2::ECL::SensitiveDetector::m_eclHits
StoreArray< ECLHit > m_eclHits
ECLHit array.
Definition: SensitiveDetector.h:71
Belle2::ECL::BkgSensitiveDiode::m_eclBeamBkgHitRel
RelationArray m_eclBeamBkgHitRel
MCParticle to BeamBackHit relation array.
Definition: SensitiveDetector.h:139
Belle2::ECL::SensitiveDiode::EndOfEvent
void EndOfEvent(G4HCofThisEvent *eventHC) override
Do what you want to do at the end of each event.
Definition: SensitiveDetector.cc:269
Belle2::ECL::SensitiveDetector::step
bool step(G4Step *aStep, G4TouchableHistory *history) override
Process each step and calculate variables defined in ECLHit.
Definition: SensitiveDetector.cc:79
Belle2::ECL::SensitiveDetector::m_hadronenergyDeposit
double m_hadronenergyDeposit
energy deposited resulting in hadronic scint component
Definition: SensitiveDetector.h:78
Belle2::ECL::BkgSensitiveDiode::m_energyDeposit
double m_energyDeposit
energy deposited in volume
Definition: SensitiveDetector.h:134
Belle2::ECL::SensitiveDetector::EndOfEvent
void EndOfEvent(G4HCofThisEvent *eventHC) override
Do what you want to do at the end of each event.
Definition: SensitiveDetector.cc:140
Belle2::ECL::SensitiveDiode::hit_t::cellId
int cellId
cell id
Definition: SensitiveDetector.h:107
Belle2::ECL::BkgSensitiveDiode::m_eclp
ECLGeometryPar * m_eclp
pointer to ECLGeometryPar
Definition: SensitiveDetector.h:136
Belle2::ECL::SensitiveDetector::SensitiveDetector
SensitiveDetector(G4String, G4double, G4double)
Constructor.
Belle2::ECL::SensitiveDiode::hit_t::e
double e
energy deposition in a crystal
Definition: SensitiveDetector.h:108
Belle2::ECL::SensitiveDiode
Class for ECL Sensitive Detector.
Definition: SensitiveDetector.h:85
Belle2::ECL::SensitiveDetector::m_trackID
int m_trackID
current track id
Definition: SensitiveDetector.h:75
Belle2::ECL::BkgSensitiveDiode::step
bool step(G4Step *aStep, G4TouchableHistory *history) override
Process each step and calculate variables defined in ECLHit.
Definition: SensitiveDetector.cc:324
Belle2::ECL::SensitiveDiode::step
bool step(G4Step *aStep, G4TouchableHistory *history) override
Process each step and calculate variables defined in ECLHit.
Definition: SensitiveDetector.cc:216
Belle2::Simulation::SensitiveDetectorBase
Base class for all Sensitive Detectors to create hits during simulation.
Definition: SensitiveDetectorBase.h:32
Belle2::ECL::SensitiveDetector::m_momentum
G4ThreeVector m_momentum
initial momentum of track before energy deposition inside sensitive volume
Definition: SensitiveDetector.h:80
Belle2::ECL::SensitiveDiode::m_eclp
ECLGeometryPar * m_eclp
pointer to ECLGeometryPar
Definition: SensitiveDetector.h:104
Belle2::ECL::SensitiveDetector::m_eclSimHitRel
RelationArray m_eclSimHitRel
MCParticle to ECLSimHit relation array.
Definition: SensitiveDetector.h:73
Belle2::ECL::SensitiveDetector::m_energyDeposit
double m_energyDeposit
total energy deposited in a volume by a track
Definition: SensitiveDetector.h:77
Belle2::ECL::SensitiveDiode::m_eclHits
StoreArray< ECLHit > m_eclHits
ECLHit array.
Definition: SensitiveDetector.h:117
Belle2::ECL::SensitiveDetector::m_eclSimHits
StoreArray< ECLSimHit > m_eclSimHits
ECLSimHit array.
Definition: SensitiveDetector.h:70
Belle2::ECL::BkgSensitiveDiode::m_trackLength
double m_trackLength
length of the track in the volume
Definition: SensitiveDetector.h:135
Belle2::ECL::SensitiveDetector::m_HadronEmissionFunction
TGraph * m_HadronEmissionFunction
Graph for hadron scintillation component emission function.
Definition: SensitiveDetector.h:61
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::ECL::SensitiveDiode::~SensitiveDiode
~SensitiveDiode()
Destructor.
Definition: SensitiveDetector.cc:203
Belle2::ECL::SensitiveDetector::GetHadronIntensityFromDEDX
double GetHadronIntensityFromDEDX(double)
Evaluates hadron scintillation component emission function.
Definition: SensitiveDetector.cc:56
Belle2::ECL::BkgSensitiveDiode::m_startEnergy
double m_startEnergy
particle energy at the entrance in volume
Definition: SensitiveDetector.h:133
Belle2::ECL::BkgSensitiveDiode::m_eclBeamBkgHits
StoreArray< BeamBackHit > m_eclBeamBkgHits
BeamBackHit array.
Definition: SensitiveDetector.h:138
Belle2::ECL::SensitiveDetector::saveSimHit
int saveSimHit(G4int, G4int, G4int, G4double, G4double, const G4ThreeVector &, const G4ThreeVector &, double)
Create ECLSimHit and ECLHit and relations from MCParticle and put them in datastore.
Definition: SensitiveDetector.cc:182
Belle2::ECL::SensitiveDiode::m_trackID
int m_trackID
current track id
Definition: SensitiveDetector.h:111
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ECL::SensitiveDetector::~SensitiveDetector
~SensitiveDetector()
Destructor.
Definition: SensitiveDetector.cc:46
Belle2::ECL::BkgSensitiveDiode::m_startPos
TVector3 m_startPos
particle position at the entrance in volume
Definition: SensitiveDetector.h:130
Belle2::ECL::SensitiveDiode::m_hits
std::vector< hit_t > m_hits
array of hits
Definition: SensitiveDetector.h:115
Belle2::ECL::SensitiveDiode::m_tsum
double m_tsum
average track time weighted by energy deposition
Definition: SensitiveDetector.h:112
Belle2::ECL::SensitiveDiode::SensitiveDiode
SensitiveDiode(const G4String &)
Constructor.
Definition: SensitiveDetector.cc:193
Belle2::ECL::SensitiveDetector::m_emCal
G4EmCalculator m_emCal
Used to get dE/dx for pulse shape simulations.
Definition: SensitiveDetector.h:68
Belle2::ECL::BkgSensitiveDiode::BkgSensitiveDiode
BkgSensitiveDiode(const G4String &)
Constructor.
Definition: SensitiveDetector.cc:305
Belle2::ECL::SensitiveDetector::Initialize
void Initialize(G4HCofThisEvent *HCTE) override
Register ECL hits collection into G4HCofThisEvent.
Definition: SensitiveDetector.cc:50
Belle2::ECL::SensitiveDetector::m_WeightedPos
G4ThreeVector m_WeightedPos
average track position weighted by energy deposition
Definition: SensitiveDetector.h:79
Belle2::ECL::BkgSensitiveDiode::m_startMom
TVector3 m_startMom
particle momentum at the entrance in volume
Definition: SensitiveDetector.h:131
Belle2::ECL::BkgSensitiveDiode::m_mcParticles
StoreArray< MCParticle > m_mcParticles
MCParticle array.
Definition: SensitiveDetector.h:137
Belle2::ECL::SensitiveDiode::Initialize
void Initialize(G4HCofThisEvent *HCTE) override
Register ECL hits collection into G4HCofThisEvent.
Definition: SensitiveDetector.cc:207
Belle2::ECL::ECLGeometryPar
The Class for ECL Geometry Parameters.
Definition: ECLGeometryPar.h:45
Belle2::ECL::BkgSensitiveDiode::m_trackID
int m_trackID
track id
Definition: SensitiveDetector.h:129
Belle2::PXD::SensitiveDetector
VXD::SensitiveDetector< PXDSimHit, PXDTrueHit > SensitiveDetector
The PXD Sensitive Detector class.
Definition: SensitiveDetector.h:36
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::ECL::SensitiveDiode::hit_t::t
double t
time of energy deposition in a crystal
Definition: SensitiveDetector.h:109
Belle2::ECL::BkgSensitiveDiode::m_startTime
double m_startTime
global time
Definition: SensitiveDetector.h:132
Belle2::ECL::BkgSensitiveDiode
Class for ECL Sensitive Detector for neutron background study.
Definition: SensitiveDetector.h:121
Belle2::ECL::SensitiveDetector::m_mcParticles
StoreArray< MCParticle > m_mcParticles
MCParticle array.
Definition: SensitiveDetector.h:72
Belle2::ECL::SensitiveDiode::m_cells
std::vector< int > m_cells
array of hitted crystals
Definition: SensitiveDetector.h:116
Belle2::ECL::SensitiveDetector::m_ECLHadronComponentEmissionFunction
DBObjPtr< ECLHadronComponentEmissionFunction > m_ECLHadronComponentEmissionFunction
Hadron Component Emission Function.
Definition: SensitiveDetector.h:81
Belle2::ECL::SensitiveDetector::m_eclHitRel
RelationArray m_eclHitRel
MCParticle to ECLHit relation array.
Definition: SensitiveDetector.h:74