22 m_ps(0), m_buf(0), m_DEBUG(false), m_rndm(nullptr) {
29 m_ps(
ps), m_buf(buf), m_DEBUG(dd_DEBUG) {
47 double y =
y1 +
y2 + pedestal;
66 std::unique_ptr<TileSampleBuffer> bufall = std::make_unique<TileSampleBuffer>(nPul, -25*((nPul-1)/2), 25.);
69 cout <<
"Pileup pulses:" << std::endl;
70 for (std::vector<float>::const_iterator
i = amp_pu.begin();
i != amp_pu.end(); ++
i)
71 std::cout << *
i <<
' ';
72 std::cout << std::endl;
77 double tin, amp_it_out;
78 int nPul = amp_pu.size();
80 vector<float> amp_pu_out(nPul);
82 double amp_total = pedestal;
85 cout <<
"sample to compute: " <<
i <<
" " << amp_total << std::endl;
87 for (
int j = 0; j < nPul ; j++) {
92 cout <<
"pileupsample to compute " << j << std::endl;
94 cout <<
" time in " <<
i <<
" " << j <<
" " << (
x +
i - j) <<
" " <<
" buf " << bufall->
getTime(
x +
i - j) <<
" time_out " <<
t[j] << std::endl;
98 amp_pu_out[j] =
m_ps->
eval(
t[j]) * amp_pu.at(j);
99 amp_total += amp_pu_out[j];
102 cout <<
" amp_pu " << amp_pu.at(j) <<
" ps " <<
m_ps->
eval(
t[j]) <<
" amp_out " << amp_pu_out[j] << std::endl;
104 cout <<
" amp_total " << amp_total << std::endl;
108 amp_it_out =
m_ps->
eval(tin) * amp_it;
109 amp_total += amp_it_out;
112 cout <<
" INTIME amp_it " << amp_it <<
" ps " <<
m_ps->
eval(tin) <<
" amp_it_out " << amp_it_out << std::endl;
114 std::cout <<
" amp_total " << amp_total << std::endl;
122 cout <<
" FINAL " << amp_total << std::endl;
132 std::unique_ptr<TileSampleBuffer> bufall = std::make_unique<TileSampleBuffer>(nPul, -25*((nPul-1)/2), 25.);
135 std::cout <<
"Pileup pulses:" << std::endl;
136 for (std::vector<float>::const_iterator
i = amp_pu.begin();
i != amp_pu.end(); ++
i)
137 std::cout << *
i <<
' ';
138 std::cout << std::endl;
141 double amp_it_out = pedestal;
144 for (
int pul=0; pul < nPul; pul++){
149 amp_it_out +=
m_ps->
eval(
t[pul],
false,
true) * amp_pu.at(pul);
152 amp_it_out += (
m_ps->
eval(
t[pul],
false,
true) * amp_pu.at(pul)) / 40;
156 std::cout <<
"nPul-1-pul: " << pul <<
" getTime(nPul-1-pul) " << bufall->
getTime(pul) <<
" ps " <<
m_ps->
eval(bufall->
getTime(pul),
false,
true) << std::endl;
157 std::cout <<
"PU sample " << pul <<
", pulse shape evaluated for t'=" <<
t[pul] << std::endl;
158 std::cout <<
"Contribution for in time amp " <<
m_ps->
eval(
t[pul],
false,
true) <<
" * " << amp_pu.at(pul) << std::endl;
159 std::cout << std::endl;
164 amp_it_out +=
pdf->GetRandom();
185 float amp_total[7] = { 0, 0, 0, 0, 0, 0, 0 };
187 const float Q_1pe = 17.;
188 const float tail_prob = 0.18;
190 for (
int i = 0;
i < 7;
i++) {
196 tail_Q = Q_1pe *
m_rndm->Binomial((
int) (amp_pu[
i] / Q_1pe), tail_prob);
198 amp_total[
i] += amp_pu[
i] - tail_Q;
200 amp_total[
i + 1] += tail_Q;
204 tail_Q = Q_1pe *
m_rndm->Binomial((
int) amp_it / Q_1pe, tail_prob);
206 amp_total[3] += amp_it - tail_Q;
207 amp_total[4] += tail_Q;
222 for (
unsigned int i = 0;
i < 7;
i++) {