26 init(alpha0, beta0, width0, chi20);
30 init(tAB, alpha0, beta0, width0, chi20);
39 for (
int cris = 0; cris < fNchsel; cris++) {
44 alpha_val[cris] = alpha0;
45 beta_val[cris] = beta0;
46 width_val[cris] = width0;
47 chi2_val[cris] = chi20;
50 alpha_init[cris] = alpha0;
51 beta_init[cris] = beta0;
52 width_init[cris] = width0;
53 chi2_init[cris] = chi20;
62 assignChannel(cris, cris);
67 init(alpha0, beta0, width0, chi20);
69 tABinit = tAB->CloneTree();
98 tABinit->SetBranchAddress(
"iphi", &iphii, &b_iphi);
99 tABinit->SetBranchAddress(
"ieta", &ietai, &b_ieta);
100 tABinit->SetBranchAddress(
"side", &sidei, &b_side);
101 tABinit->SetBranchAddress(
"dccID", &dccIDi, &b_dccID);
102 tABinit->SetBranchAddress(
"towerID", &towerIDi, &b_towerID);
103 tABinit->SetBranchAddress(
"channelID", &channelIDi, &b_channelID);
104 tABinit->SetBranchAddress(
"alpha", &alphai, &b_alpha);
105 tABinit->SetBranchAddress(
"beta", &betai, &b_beta);
106 tABinit->SetBranchAddress(
"width", &widthi, &b_width);
107 tABinit->SetBranchAddress(
"chi2", &chi2i, &b_chi2);
108 tABinit->SetBranchAddress(
"flag", &flagi, &b_flag);
110 nchsel = tABinit->GetEntries();
111 assert(nchsel <= fNchsel);
113 for (
int cris = 0; cris < nchsel; cris++) {
114 tABinit->GetEntry(cris);
118 putalphaVal(cris, alphai);
119 putchi2Val(cris, chi2i);
120 putbetaVal(cris, betai);
121 putwidthVal(cris, widthi);
122 putflagVal(cris, flagi);
124 putalphaInit(cris, alphai);
125 putchi2Init(cris, chi2i);
126 putbetaInit(cris, betai);
127 putwidthInit(cris, widthi);
128 putflagInit(cris, flagi);
129 putetaInit(cris, ietai);
130 putphiInit(cris, iphii);
154 printf(
" number of channels exceed maximum allowed\n");
166 timestart = ((
long int)timecur);
172 timestop = ((
long int)timecur);
177 tower_init[ch] = side;
179 side_init[ch] = side;
188 for (
i = 0;
i < nchsel;
i++)
193 if (npass[
n] <
nevt) {
194 for (
k = 0;
k < nsamplecristal;
k++) {
195 rawsglu[
n][npass[
n]][
k] = sampl[
k];
201 printf(
"no index found for ch=%d\n", ch);
206 double tm_atmax[200];
209 double chi2_all = 0.;
212 dbi =
new double *[200];
213 for (
int k = 0;
k < 200;
k++)
214 dbi[
k] =
new double[2];
217 signalu =
new double *[200];
218 for (
int k = 0;
k < 200;
k++)
219 signalu[
k] =
new double[10];
223 for (
int i = 0;
i < nchsel;
i++) {
225 if (npass[
i] <= 10) {
226 putalphaVal(
i, alpha_init[
i]);
227 putbetaVal(
i, beta_init[
i]);
228 putwidthVal(
i, width_init[
i]);
229 putchi2Val(
i, chi2_init[
i]);
233 pjf->
set_const(nsamplecristal, sampbmax, sampamax, alpha_init[
i], beta_init[
i], npass[
i]);
235 for (
int pass = 0; pass < npass[
i]; pass++) {
237 for (
int k = 0;
k < presample;
k++) {
238 ped += rawsglu[
i][pass][
k];
240 ped /= double(presample);
242 for (
int k = 0;
k < nsamplecristal;
k++) {
243 signalu[pass][
k] = rawsglu[
i][pass][
k] - ped;
250 if (parout[0] >= 0.0 && parout[1] >= 0.0 && chi2_all <= chi2cut && chi2_all > 0.0) {
251 putalphaVal(
i, parout[0]);
252 putbetaVal(
i, parout[1]);
253 putchi2Val(
i, chi2_all);
257 putalphaVal(
i, alpha_init[
i]);
258 putbetaVal(
i, beta_init[
i]);
259 putwidthVal(
i, width_init[
i]);
260 putchi2Val(
i, chi2_init[
i]);
264 for (
int kj = 0; kj < npass[
i]; kj++) {
265 tm_atmax[kj] = dbi[kj][1];
267 computetmaxVal(
i, &tm_atmax[0]);
273 tABinit = tAB->CloneTree();
294 TBranch *b_channelID;
302 tABinit->SetBranchAddress(
"iphi", &iphii, &b_iphi);
303 tABinit->SetBranchAddress(
"ieta", &ietai, &b_ieta);
304 tABinit->SetBranchAddress(
"side", &sidei, &b_side);
305 tABinit->SetBranchAddress(
"dccID", &dccIDi, &b_dccID);
306 tABinit->SetBranchAddress(
"towerID", &towerIDi, &b_towerID);
307 tABinit->SetBranchAddress(
"channelID", &channelIDi, &b_channelID);
308 tABinit->SetBranchAddress(
"alpha", &alphai, &b_alpha);
309 tABinit->SetBranchAddress(
"beta", &betai, &b_beta);
310 tABinit->SetBranchAddress(
"width", &widthi, &b_width);
311 tABinit->SetBranchAddress(
"chi2", &chi2i, &b_chi2);
312 tABinit->SetBranchAddress(
"flag", &flagi, &b_flag);
315 TFile *fABout =
new TFile(namefile.c_str(),
"RECREATE");
316 tABout =
new TTree(
"ABCol0",
"ABCol0");
331 tABout->Branch(
"iphi", &
iphi,
"iphi/I");
332 tABout->Branch(
"ieta", &
ieta,
"ieta/I");
333 tABout->Branch(
"side", &side,
"side/I");
334 tABout->Branch(
"dccID", &dccID,
"dccID/I");
335 tABout->Branch(
"towerID", &
towerID,
"towerID/I");
336 tABout->Branch(
"channelID", &channelID,
"channelID/I");
337 tABout->Branch(
"alpha", &
alpha,
"alpha/D");
338 tABout->Branch(
"beta", &
beta,
"beta/D");
339 tABout->Branch(
"width", &
width,
"width/D");
340 tABout->Branch(
"chi2", &
chi2,
"chi2/D");
341 tABout->Branch(
"flag", &
flag,
"flag/I");
343 tABout->SetBranchAddress(
"ieta", &
ieta);
344 tABout->SetBranchAddress(
"iphi", &
iphi);
345 tABout->SetBranchAddress(
"side", &side);
346 tABout->SetBranchAddress(
"dccID", &dccID);
347 tABout->SetBranchAddress(
"towerID", &
towerID);
348 tABout->SetBranchAddress(
"channelID", &channelID);
349 tABout->SetBranchAddress(
"alpha", &
alpha);
350 tABout->SetBranchAddress(
"beta", &
beta);
351 tABout->SetBranchAddress(
"width", &
width);
352 tABout->SetBranchAddress(
"chi2", &
chi2);
353 tABout->SetBranchAddress(
"flag", &
flag);
355 for (
int i = 0;
i < nchsel;
i++) {
357 tABinit->GetEntry(
i);
363 channelID = channelIDi;
371 channelID = ch_init[
i];
393 for (
int k = 0;
k < npass[
i] - 1;
k++) {
394 if (1. < tm_val[
k] && tm_val[
k] < 10.) {
399 if (npassok[
i] <= 0) {
402 for (
int k = 0;
k < npass[
i] - 1;
k++) {
403 if (1. < tm_val[
k] && tm_val[
k] < 10.) {
404 tm_mean = tm / npassok[
i];
409 putwidthVal(
i, tm_mean);
434 std::vector<double>
v;
436 v.push_back(alpha_val[
n]);
437 v.push_back(beta_val[
n]);
438 v.push_back(width_val[
n]);
439 v.push_back(chi2_val[
n]);
440 v.push_back(flag_val[
n]);
445 std::vector<double>
v;
447 v.push_back(alpha_init[
n]);
448 v.push_back(beta_init[
n]);
449 v.push_back(width_init[
n]);
450 v.push_back(chi2_init[
n]);
451 v.push_back(flag_init[
n]);
459 sprintf(
filename,
"runABW%d.pedestal", gRunNumber);
462 printf(
"Error while opening file : %s\n",
filename);
464 for (
int i = 0;
i < nchsel;
i++) {
467 double trise = alpha_val[
i] * beta_val[
i];
469 "%d %d 1 %ld %ld %f %f %f %f\n",
480 int iret = fclose(
fd);
481 printf(
" Closing file : %d\n", iret);
void putbetaInit(int, double)
void putchi2Val(int, double)
void putwidthVal(int, double)
void putflagVal(int, int)
void putDateStart(long int)
void init(double, double, double, double)
void computeShape(std::string namefile, TTree *)
void putAllVals(int, double *, int, int)
void putbetaVal(int, double)
void putDateStop(long int)
TShapeAnalysis(double, double, double, double)
void assignChannel(int, int)
void putetaInit(int, int)
~TShapeAnalysis() override
void set_const(int, int, int, double, double, int)
void putflagInit(int, int)
std::vector< double > getInitVals(int)
void putalphaVal(int, double)
void putchi2Init(int, double)
void putalphaInit(int, double)
void putwidthInit(int, double)
std::vector< double > getVals(int)
void set_const(int, int, int, int, int, double, double)
void computetmaxVal(int, double *)
EcalLogicID towerID(EcalElectronicsId const &)
double fitpj(double **, double *, double **, double noise_val, int debug)
void putphiInit(int, int)