Belle II Software  release-05-02-19
SensitiveDetectorDebugHelper.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Ritter *
7  * *
8  * This software is provided "as is" without any warranty. *
9  N**************************************************************************/
10 
11 #pragma once
12 #ifndef VXD_SIMULATION_SENSITIVEDETECTORDEBUGHELPER_H
13 #define VXD_SIMULATION_SENSITIVEDETECTORDEBUGHELPER_H
14 
15 #include <vxd/simulation/SensorTraversal.h>
16 #include <vxd/dataobjects/VxdID.h>
17 #include <vxd/dataobjects/VXDTrueHit.h>
18 #include <vxd/dataobjects/VXDSimHit.h>
19 
20 #include <TFile.h>
21 #include <TTree.h>
22 
23 namespace Belle2 {
28  namespace VXD {
29 
44  public:
48  void startTraversal(VxdID sensorID, const SensorTraversal& traversal);
50  void addTrueHit(const VXDTrueHit* truehit);
52  void addSimHit(const VXDSimHit* simhit, int startPoint, int endPoint);
54  void finishTraversal() {
55  m_tree->Fill();
56  }
57  private:
66  m_tree->Write();
67  m_file->Close();
68  }
69 
71  TFile* m_file {0};
73  TTree* m_tree {0};
74 
75  enum {
77  MAX_STEPS = 5000,
79  MAX_HITS = 500,
81  MAX_EDEP = 10000,
82 
84  SIZE_STEP = 9,
86  SIZE_TRUE = 20,
88  SIZE_HITS = 13,
91  };
92 
94  struct info {
96  int sensorID;
98  int pdg;
102  int primary;
104  double length;
105 
107  int stepN;
110 
112  int trueN;
115 
117  int edepN;
120 
122  int simhitN;
125  } m_info;
126  };
127  }
129 } //Belle2 namespace
130 #endif // VXD_SIMULATION_DEBUGFILE_H
Belle2::VXD::SensitiveDetectorDebugHelper
Small helper class to facilitate debugging of VXD::SensitiveDetector implementation.
Definition: SensitiveDetectorDebugHelper.h:43
Belle2::VXD::SensitiveDetectorDebugHelper::SIZE_EDEP
@ SIZE_EDEP
number of values per energy deposition point
Definition: SensitiveDetectorDebugHelper.h:90
Belle2::VXD::SensitiveDetectorDebugHelper::MAX_STEPS
@ MAX_STEPS
assume maximum number of steps per sensor traversal
Definition: SensitiveDetectorDebugHelper.h:77
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::VXD::SensitiveDetectorDebugHelper::MAX_HITS
@ MAX_HITS
assume maximum number of simhits per sensor traversal
Definition: SensitiveDetectorDebugHelper.h:79
Belle2::SensorTraversal
Class to keep track of the traversal of the sensitive volume for one track.
Definition: SensorTraversal.h:54
Belle2::VXD::SensitiveDetectorDebugHelper::MAX_EDEP
@ MAX_EDEP
assume maximum number of energy deposition points per sensor traversal
Definition: SensitiveDetectorDebugHelper.h:81
Belle2::VXD::SensitiveDetectorDebugHelper::info::trueN
int trueN
number of values used in trueInfo
Definition: SensitiveDetectorDebugHelper.h:112
Belle2::VXD::SensitiveDetectorDebugHelper::SensitiveDetectorDebugHelper
SensitiveDetectorDebugHelper()
Singleton class: private constructor.
Definition: SensitiveDetectorDebugHelper.cc:36
Belle2::VXD::SensitiveDetectorDebugHelper::m_file
TFile * m_file
ROOT File to write information to.
Definition: SensitiveDetectorDebugHelper.h:71
Belle2::VXD::SensitiveDetectorDebugHelper::finishTraversal
void finishTraversal()
Finish the entry by calling Fill()
Definition: SensitiveDetectorDebugHelper.h:54
Belle2::VXDTrueHit
Class VXDTrueHit - Records of tracks that either enter or leave the sensitive volume.
Definition: VXDTrueHit.h:38
Belle2::VXD::SensitiveDetectorDebugHelper::info::length
double length
track length
Definition: SensitiveDetectorDebugHelper.h:104
Belle2::VXD::SensitiveDetectorDebugHelper::addSimHit
void addSimHit(const VXDSimHit *simhit, int startPoint, int endPoint)
Write the information normally used when creating SimHits to the entry.
Definition: SensitiveDetectorDebugHelper.cc:113
Belle2::VXD::SensitiveDetectorDebugHelper::info::stepInfo
double stepInfo[SIZE_STEP *MAX_STEPS]
values for the step points
Definition: SensitiveDetectorDebugHelper.h:109
Belle2::VXD::SensitiveDetectorDebugHelper::SIZE_HITS
@ SIZE_HITS
number of values per simhit
Definition: SensitiveDetectorDebugHelper.h:88
Belle2::VXD::SensitiveDetectorDebugHelper::info
struct with all the branches needed
Definition: SensitiveDetectorDebugHelper.h:94
Belle2::VXD::SensitiveDetectorDebugHelper::SIZE_TRUE
@ SIZE_TRUE
number of values per truehit
Definition: SensitiveDetectorDebugHelper.h:86
Belle2::VXD::SensitiveDetectorDebugHelper::info::sensorID
int sensorID
id of the sensor for the current track
Definition: SensitiveDetectorDebugHelper.h:96
Belle2::VXD::SensitiveDetectorDebugHelper::m_tree
TTree * m_tree
ROOT Tree to write information to.
Definition: SensitiveDetectorDebugHelper.h:73
Belle2::VXD::SensitiveDetectorDebugHelper::info::edepN
int edepN
number of values used in edepInfo
Definition: SensitiveDetectorDebugHelper.h:117
Belle2::VXD::SensitiveDetectorDebugHelper::SIZE_STEP
@ SIZE_STEP
number of values per step
Definition: SensitiveDetectorDebugHelper.h:84
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::VXD::SensitiveDetectorDebugHelper::info::edepInfo
double edepInfo[SIZE_EDEP *MAX_EDEP]
values for the energy deposition
Definition: SensitiveDetectorDebugHelper.h:119
Belle2::VXD::SensitiveDetectorDebugHelper::addTrueHit
void addTrueHit(const VXDTrueHit *truehit)
Write the information normally used when creating TrueHits to the entry.
Definition: SensitiveDetectorDebugHelper.cc:88
Belle2::VXD::SensitiveDetectorDebugHelper::startTraversal
void startTraversal(VxdID sensorID, const SensorTraversal &traversal)
Start writing a new sensor traversal: Geant4 steps will be added to the ROOT entry.
Definition: SensitiveDetectorDebugHelper.cc:60
Belle2::VXD::SensitiveDetectorDebugHelper::info::trueInfo
double trueInfo[SIZE_TRUE]
values for the truehit
Definition: SensitiveDetectorDebugHelper.h:114
Belle2::VXD::SensitiveDetectorDebugHelper::getInstance
static SensitiveDetectorDebugHelper & getInstance()
Singleton class: get instance.
Definition: SensitiveDetectorDebugHelper.cc:30
Belle2::VXD::SensitiveDetectorDebugHelper::m_info
struct Belle2::VXD::SensitiveDetectorDebugHelper::info m_info
object to store all variables
Belle2::VXD::SensitiveDetectorDebugHelper::info::stepN
int stepN
number of values used in stepInfo
Definition: SensitiveDetectorDebugHelper.h:107
Belle2::VXD::SensitiveDetectorDebugHelper::info::pdg
int pdg
pdg code for the current track
Definition: SensitiveDetectorDebugHelper.h:98
Belle2::VXD::SensitiveDetectorDebugHelper::info::primary
int primary
whether or not the track is from a primary particle
Definition: SensitiveDetectorDebugHelper.h:102
Belle2::VXD::SensitiveDetectorDebugHelper::info::simhitN
int simhitN
number of values used in simhitInfo
Definition: SensitiveDetectorDebugHelper.h:122
Belle2::VXD::SensitiveDetectorDebugHelper::info::simhitInfo
double simhitInfo[SIZE_HITS *MAX_HITS]
values for the simhits
Definition: SensitiveDetectorDebugHelper.h:124
Belle2::VXD::SensitiveDetectorDebugHelper::info::contained
int contained
whether or not the track was contained in the senitive volume
Definition: SensitiveDetectorDebugHelper.h:100
Belle2::VXD::SensitiveDetectorDebugHelper::operator=
SensitiveDetectorDebugHelper & operator=(const SensitiveDetectorDebugHelper &)=delete
Singleton class: no assignment operator.
Belle2::VXD::SensitiveDetectorDebugHelper::~SensitiveDetectorDebugHelper
~SensitiveDetectorDebugHelper()
Destructor: write root file.
Definition: SensitiveDetectorDebugHelper.h:65
Belle2::VXDSimHit
Class VXDSimHit - Geant4 simulated hit for the VXD.
Definition: VXDSimHit.h:32