Belle II Software development
TOPInterimFENtupleModule.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <framework/core/HistoModule.h>
12
13#include <TTree.h>
14
15namespace Belle2 {
20
25
26 public:
27
32
37 virtual void initialize() override;
38
42 virtual void event() override;
43
47 virtual void defineHisto() override;
48
49 private:
50
54 enum { c_NWindow = 4, c_NModule = 16, c_NSamplePerWindow = 64, c_NWaveformSample = 256,
55 c_NSampleTBC = 256, c_NPixelPerModule = 512, c_NWindowRingBuffer = 512,
56 c_NMaxHitPerChannel = 5, c_NMaxHitEvent = 5000, c_NTotalScrod = 64
57 };
58
59 TTree* m_tree = 0;
60 unsigned m_calibrationChannel = 0;
61 bool m_saveWaveform = false;
62 bool m_useDoublePulse = true;
63 // float m_averageSamplingRate = 2.71394; /**< sampling rate with assumption of uniform interval in a unit of GHz */
65 600;
67 450;
70 float m_timePerWin = 23.581939;
72 1;
74 0;
75
76 int m_nHit = 0;
77 unsigned m_eventNumCopper[c_NModule] = {0};
78 unsigned m_ttuTime[c_NModule] = {0};
79 unsigned m_ttcTime[c_NModule] = {0};
80 short m_slotNum[c_NMaxHitEvent] = {0};
81 short m_pixelId[c_NMaxHitEvent] = {0};
82 short m_channelId[c_NMaxHitEvent] = {0};
83 bool m_isCalCh[c_NMaxHitEvent] = {0};
84 unsigned m_eventNum = 0;
85 short m_winNum[c_NMaxHitEvent] = {0};
86 short m_eventWinNum[c_NMaxHitEvent] = {0};
87 short m_trigWinNum[c_NMaxHitEvent] = {0};
88 short m_revo9Counter[c_NMaxHitEvent] = {0};
89 short m_winNumList[c_NMaxHitEvent][c_NWindow] = {{0}};
90 bool m_windowsInOrder[c_NMaxHitEvent] = {0};
91 unsigned char m_hitQuality[c_NMaxHitEvent] = {0};
92 bool m_isReallyJunk[c_NMaxHitEvent] = {0};
93 float m_time[c_NMaxHitEvent] = {0};
94 float m_rawTime[c_NMaxHitEvent] = {0};
95 float m_refTime[c_NMaxHitEvent] = {0};
97 0;
98 unsigned short m_sample[c_NMaxHitEvent] = {0};
99 float m_height[c_NMaxHitEvent] = {0};
100 float m_integral[c_NMaxHitEvent] = {0};
101 float m_width[c_NMaxHitEvent] = {0};
102 unsigned short m_peakSample[c_NMaxHitEvent] = {0};
103 char m_offlineFlag[c_NMaxHitEvent] = {0};
104 short m_nHitOfflineFE[c_NMaxHitEvent] = {0};
105 short m_waveformStartSample[c_NMaxHitEvent] = {0};
106 unsigned short m_nWaveformSample[c_NMaxHitEvent] = {0};
107 short m_waveform[c_NMaxHitEvent][c_NWaveformSample] = {{0}};
108
109 short m_nFEHeader = 0;
111 short m_nWaveform = 0;
112 unsigned m_errorFlag = 0;
113
114 unsigned m_eventErrorFlag = 0;
115
116
117 int m_nDebugInfo = 0;
118 unsigned short m_scrodCtime[c_NTotalScrod] = { 0 };
119 unsigned short m_phase[c_NTotalScrod] = { 0 };
120 unsigned short m_asicMask[c_NTotalScrod] = { 0 };
121 unsigned short m_eventQueuDepth[c_NTotalScrod] = { 0 };
122 unsigned short m_eventNumberByte[c_NTotalScrod] = { 0 };
123
124
131 void getReferenceTiming();
132
133 };
134
136} //namespace Belle2
HistoModule()
Constructor.
Definition HistoModule.h:32
unsigned short m_scrodCtime[c_NTotalScrod]
ctime recorded in scrod header
bool m_useDoublePulse
set true when you require both of double calibration pulses for reference timing
float m_calibrationPulseInterval
nominal DeltaT value (time interval of two calibration signals) in a unit of ns
short m_nWaveform
m_waveforms in TOPInterimFEInfo, # of waveformes
short m_nFEHeader
m_FEHeaders in TOPInterimFEInfo, the total # of FE headers found
short m_winNumList[c_NMaxHitEvent][c_NWindow]
list of window numbers for recorded waveform, valid only when waveform analysis is enabled
float m_integral[c_NMaxHitEvent]
"m_integral" in TOPDigit, but not available
unsigned m_eventNum
event number taken from EventMetaData
short m_slotNum[c_NMaxHitEvent]
"m_moduleID" in TOPDigit, slot number
short m_channelId[c_NMaxHitEvent]
"m_channel" in TOPDigit
short m_winNum[c_NMaxHitEvent]
"m_window" in TOPRawDigit
int m_globalRefSlotNum
slot number used to define "global" reference timing (a single reference timing in an event for all t...
short m_waveformStartSample[c_NMaxHitEvent]
start sample number of waveform segment (only for production FW)
unsigned short m_eventNumberByte[c_NTotalScrod]
least significant byte of FE event number
float m_calibrationPulseIntervalRange
tolerable shift of DeltaT from its nominal before calibration in a unit of ns
unsigned short m_sample[c_NMaxHitEvent]
(m_rawTDC+m_winNum*64)%256, for time base correction
unsigned short m_peakSample[c_NMaxHitEvent]
sample number for peak
float m_calibrationPulseThreshold2
minimum pulse height for the second calibration pulse to be qualified as calibration signals
int m_nDebugInfo
number of ProductionEventDebug (in a unit of number of boardstack)
float m_refTime[c_NMaxHitEvent]
time of the first calibration signal as reference timing.
int m_nHit
number of hits for the event
unsigned m_errorFlag
m_errorFlags in TOPInterimFEInfo, defined in the TOPInterimFEInfo.h
float m_height[c_NMaxHitEvent]
"m_pulseHeight" in new TOPDigit (update at May, 2017)
short m_trigWinNum[c_NMaxHitEvent]
"m_lastWriteAddr" in TOPRawDigit, window # when trigger is issued
unsigned short m_eventQueuDepth[c_NTotalScrod]
trigger FIRO queue depth
char m_offlineFlag[c_NMaxHitEvent]
=-1 if the channel does not have waveform information, =0 when the hit comes from online FE,...
short m_revo9Counter[c_NMaxHitEvent]
"m_revo9Counter" in TOPRawDigit
float m_width[c_NMaxHitEvent]
"m_pulseWidth" in TOPDigit, full width at half maximum of the pulse, converted into unit of samples f...
short m_eventWinNum[c_NMaxHitEvent]
"m_firstWindow" in TOPDigit
unsigned m_eventErrorFlag
m_errorFlags in EventMetaData, 0x1 : CRC error
float m_time[c_NMaxHitEvent]
time in a unit of ns, defined as m_rawTime+64*m_winNum.
short m_waveform[c_NMaxHitEvent][c_NWaveformSample]
waveform from TOPRawWaveform, if not exist, filled with -32767
unsigned m_ttuTime[c_NModule]
counter for TTclock, stored in COPPER
short m_pixelId[c_NMaxHitEvent]
"m_pixelID" in TOPDigit
float m_timePerWin
time interval of own window (=64 samples) [ns]
unsigned m_calibrationChannel
asic channel number where the calibration pulses are routed
short m_nHitOfflineFE[c_NMaxHitEvent]
number of hits for each pixel
float m_calibrationPulseThreshold1
minimum pulse height for the first calibration pulse to be qualified as calibration signals
unsigned char m_hitQuality[c_NMaxHitEvent]
"m_quality" in TOPDigit, =0:junk, =1:good, =2:charge sharing, =3:cross talk, =4:cal.
bool m_windowsInOrder[c_NMaxHitEvent]
"areWindowsInOrder()" ; false if the window number of all (4) windows taken from TOPRawWaveform::getR...
unsigned m_eventNumCopper[c_NModule]
event number stored in COPPER
int m_globalRefAsicNum
asic number used to define "global" reference timing.
float m_globalRefTime
refTime of the specific asic, which is specified by parameters "globalRefSlotNum" and "globalRefAsicN...
unsigned short m_phase[c_NTotalScrod]
event phase
unsigned short m_asicMask[c_NTotalScrod]
asic mask bit pattern
float m_rawTime[c_NMaxHitEvent]
"m_rawTime" [0-256] in new TOPDigit (update at May, 2017) in sample(time bin) unit
bool m_isCalCh[c_NMaxHitEvent]
true if the hit is in the calibration channel
unsigned m_ttcTime[c_NModule]
counter for TTclock, stored in COPPER
bool m_isReallyJunk[c_NMaxHitEvent]
true if pedestal jump or other invalid hit is detected, not saved
short m_nEmptyFEHeader
m_emptyFEHeaders in TOPInterimFEInfo, the total # of empty FE headers
unsigned short m_nWaveformSample[c_NMaxHitEvent]
number of waveform samples
bool m_saveWaveform
set true when you want to save waveform data
void getReferenceTiming()
Find reference timing.
virtual void initialize() override
Initialize the Module.
virtual void event() override
Event processor.
virtual void defineHisto() override
Module functions to define histograms.
Abstract base class for different kinds of events.