Project
Loading...
Searching...
No Matches
RecoParamZDC.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#include "Framework/Logger.h"
14
16
17void o2::zdc::RecoParamZDC::setBit(uint32_t ibit, bool val)
18{
19 if (ibit >= 0 && ibit < NTDCChannels) {
20 bitset[ibit] = val;
21 } else {
22 LOG(fatal) << __func__ << " bit " << ibit << " not in allowed range";
23 }
24}
25
27{
28 bool printed = false;
29 if (low_pass_filter >= 0 || full_interpolation >= 0 || corr_signal >= 0 || corr_background >= 0) {
30 if (!printed) {
31 LOG(info) << "RecoParamZDC::print()";
32 printed = true;
33 }
34 if (low_pass_filter >= 0) {
35 printf(" LowPassFilter=%d", low_pass_filter);
36 }
37 if (full_interpolation >= 0) {
38 printf(" FullInterpolation=%d", full_interpolation);
39 }
40 if (corr_signal >= 0) {
41 printf(" CorrSignal=%d", corr_signal);
42 }
43 if (corr_background >= 0) {
44 printf(" CorrBackground=%d", corr_background);
45 }
46 printf("\n");
47 }
48 if (!printed) {
49 printed = true;
50 LOG(info) << "RecoParamZDC::print()";
51 }
52 if (triggerCondition == 0x1) {
53 LOG(info) << "SINGLE trigger condition in RecoParamZDC";
54 } else if (triggerCondition == 0x3) {
55 LOG(info) << "DOUBLE trigger condition in RecoParamZDC";
56 } else if (triggerCondition == 0x7) {
57 LOG(info) << "TRIPLE trigger condition in RecoParamZDC";
58 }
59 /*
60 Int_t tsh[NTDCChannels] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4}; // Trigger shift
61 Int_t tth[NTDCChannels] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8}; // Trigger threshold
62 bool bitset[NTDCChannels] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Set bits in coincidence
63 void setBit(uint32_t ibit, bool val = true);
64
65 // Signal processing
66 int low_pass_filter = -1; // Low pass filtering
67 int full_interpolation = -1; // Full interpolation of waveform
68 int corr_signal = -1; // TDC signal correction
69 int corr_background = -1; // TDC pile-up correction
70
71 // TDC
72 Int_t tmod[NTDCChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Position of TDC channel in raw data
73 Int_t tch[NTDCChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Position of TDC channel in raw data
74 float tdc_shift[NTDCChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Correction of TDC position (0-25 ns, units of ~10 ps)
75 float tdc_calib[NTDCChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Correction of TDC amplitude
76 float tdc_search[NTDCChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Search zone for a TDC signal ideally 2.5 ns (units of ~10 ps)
77
78 // Charge integration
79 Int_t amod[NChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Position of ADC channel in raw data
80 Int_t ach[NChannels] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; // Position of ADC channel in raw data
81 // Beginning and end of integration range: signal
82 Int_t beg_int[NChannels] = {DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange};
83 Int_t end_int[NChannels] = {DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange};
84 // Beginning and end of integration range: pedestal
85 Int_t beg_ped_int[NChannels] = {DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange};
86 Int_t end_ped_int[NChannels] = {DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange, DummyIntRange};
87 // Pedestal thresholds for pile-up detection
88 float ped_thr_hi[NChannels] = {ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange};
89 float ped_thr_lo[NChannels] = {ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange, ADCRange};
90 */
91 bool modified = false;
92 for (int i = 0; i < o2::zdc::NChannels; i++) {
93 if (energy_calib[i] != 0) {
94 modified = true;
95 break;
96 }
97 }
98 if (modified) {
99 if (!printed) {
100 printed = true;
101 LOG(info) << "RecoParamZDC::print()";
102 }
103 printf("energ_calib: ");
104 for (int i = 0; i < o2::zdc::NChannels; i++) {
105 if (energy_calib[i] != 0) {
106 printf(" %s=%f", o2::zdc::ChannelNames[i].data(), energy_calib[i]);
107 }
108 }
109 printf("\n");
110 }
111 modified = false;
112 for (int i = 0; i < o2::zdc::NChannels; i++) {
113 if (tower_calib[i] != 0) {
114 modified = true;
115 break;
116 }
117 }
118 if (modified) {
119 if (!printed) {
120 printed = true;
121 LOG(info) << "RecoParamZDC::print()";
122 }
123 printf("tower_calib: ");
124 for (int i = 0; i < o2::zdc::NChannels; i++) {
125 if (tower_calib[i] != 0) {
126 printf(" %s=%f", o2::zdc::ChannelNames[i].data(), tower_calib[i]);
127 }
128 }
129 printf("\n");
130 }
131}
#define O2ParamImpl(classname)
int32_t i
ZDC reconstruction parameters.
GLboolean * data
Definition glcorearb.h:298
GLuint GLfloat * val
Definition glcorearb.h:1582
constexpr int NTDCChannels
Definition Constants.h:90
constexpr int NChannels
Definition Constants.h:65
constexpr std::string_view ChannelNames[]
Definition Constants.h:147
void setBit(uint32_t ibit, bool val=true)
bool bitset[NTDCChannels]
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"