CMS 3D CMS Logo

TEcnaParHistos.cc
Go to the documentation of this file.
1 //----------Author's Name: B.Fabbro DSM/IRFU/SPP CEA-Saclay
2 //----------Copyright: Those valid for CEA sofware
3 //----------Modified:10/10/2011
4 
7 
8 //--------------------------------------
9 // TEcnaParHistos.cc
10 // Class creation: 19 May 2005
11 // Documentation: see TEcnaParHistos.h
12 //--------------------------------------
13 
15 //______________________________________________________________________________
16 //
17 
19  //destructor
20 
21  //if (fEcalNumbering != 0){delete fEcalNumbering; fCdelete++;}
22  //if (fEcal != 0){delete fEcal; fCdelete++;}
23 
24  //std::cout << "[Info Management] CLASS: TEcnaParHistos. DESTROY OBJECT: this = " << this << std::endl;
25 }
26 
27 //===================================================================
28 //
29 // Constructors
30 //
31 //===================================================================
33  // Constructor without argument
34 
35  //std::cout << "[Info Management] CLASS: TEcnaParHistos. CREATE OBJECT: this = " << this << std::endl;
36 
37  Init();
38 }
39 
40 TEcnaParHistos::TEcnaParHistos(TEcnaObject* pObjectManager, const TString& SubDet) {
41  // Constructor without argument
42 
43  //std::cout << "[Info Management] CLASS: TEcnaParHistos. CREATE OBJECT: this = " << this << std::endl;
44 
45  Init();
46  Long_t i_this = (Long_t)this;
47  pObjectManager->RegisterPointer("TEcnaParHistos", i_this);
48 
49  //............................ fEcal => to be changed in fParEcal
50  fEcal = nullptr;
51  Long_t iParEcal = pObjectManager->GetPointerValue("TEcnaParEcal");
52  if (iParEcal == 0) {
53  fEcal = new TEcnaParEcal(pObjectManager, SubDet.Data()); /*fCnew++*/
54  } else {
55  fEcal = (TEcnaParEcal*)iParEcal;
56  }
57 
58  //............................ fEcalNumbering
59  fEcalNumbering = nullptr;
60  Long_t iEcalNumbering = pObjectManager->GetPointerValue("TEcnaNumbering");
61  if (iEcalNumbering == 0) {
62  fEcalNumbering = new TEcnaNumbering(pObjectManager, SubDet.Data()); /*fCnew++*/
63  } else {
64  fEcalNumbering = (TEcnaNumbering*)iEcalNumbering;
65  }
66 
67  SetEcalSubDetector(SubDet.Data());
68 }
69 
70 TEcnaParHistos::TEcnaParHistos(const TString& SubDet, const TEcnaParEcal* pEcal, const TEcnaNumbering* pEcalNumbering) {
71  // Constructor with argument
72 
73  //std::cout << "[Info Management] CLASS: TEcnaParHistos. CREATE OBJECT: this = " << this << std::endl;
74 
75  Init();
76  SetEcalSubDetector(SubDet.Data(), pEcal, pEcalNumbering);
77 }
78 
80  fgMaxCar = (Int_t)512; // max number of characters in TStrings
81 
82  fTTBELL = '\007';
83 
84  //................ Init CNA Command and error numbering
85  fCnaCommand = 0;
86  fCnaError = 0;
87 
88  //........................................................................................
89 
90  fMaxColorNumber = (Int_t)4; // number_of_colors - 1 for histos in option SAME
91 
92  fMarginAutoMinMax = (Double_t)0.05; // factor for automatic margin plots:
93  // plot min = min - (max-min)*fMarginAutoMinMax
94  // plot max = max + (max-min)*fMarginAutoMinMax
95 
96  fNbOfRunsDisplayed = (Int_t)20; // Nb of run numbers displayed on the top of the plot
97  // in stability/evolution plots, option ONLYONE
98 
99  fMaxNbOfRunsInLists = (Int_t)5000; // Maximum number of runs in the ListOfRun files
100  // used for the stability/evolution plots.
101 
102  //........................ init code plot type (Init)
103  Int_t MaxCar = fgMaxCar;
104  fOnlyOnePlot.Resize(MaxCar);
105  fOnlyOnePlot = "ONLYONE";
106 
107  MaxCar = fgMaxCar;
108  fSeveralPlot.Resize(MaxCar);
109  fSeveralPlot = "SAME";
110 
111  MaxCar = fgMaxCar;
112  fSameOnePlot.Resize(MaxCar);
113  fSameOnePlot = "SAME n";
114 
115  MaxCar = fgMaxCar;
116  fAllXtalsInStinPlot.Resize(MaxCar);
117  fAllXtalsInStinPlot = "SAME in Stin";
118 
120 
121 } // end of Init()
122 
124  // Set Subdetector (EB or EE)
125 
126  Int_t MaxCar = fgMaxCar;
127  fFlagSubDet.Resize(MaxCar);
129 }
130 
132  const TEcnaParEcal* pEcal,
133  const TEcnaNumbering* pEcalNumbering) {
134  // Set Subdetector (EB or EE)
135 
136  fEcal = nullptr;
137  if (pEcal == nullptr) {
138  fEcal = new TEcnaParEcal(SubDet.Data()); /*fCnew++*/
139  ;
140  } else {
141  fEcal = (TEcnaParEcal*)pEcal;
142  }
143 
144  Int_t MaxCar = fgMaxCar;
145  fFlagSubDet.Resize(MaxCar);
147 
148  fEcalNumbering = nullptr;
149  if (pEcalNumbering == nullptr) {
150  fEcalNumbering = new TEcnaNumbering(fFlagSubDet.Data(), fEcal); /*fCnew++*/
151  ;
152  } else {
153  fEcalNumbering = (TEcnaNumbering*)pEcalNumbering;
154  }
155 }
156 
158 
159 //---------------------------------------------------------------------------------------------
160 // HistoCode list modification (06/10/09)
161 //
162 // D = Detector Plot ChNb = Channel Number
163 // ChDs = Channel Distribution (Y projection)
164 //
165 // H = History Plot Date = date in format YYMMJJ hhmmss
166 // RuDs = Run distribution
167 //
168 // old code new code
169 //
170 // * 1 H1NbOfEvtsGlobal D_NOE_ChNb NOE = Number Of Events
171 // * 2 H1NbOfEvtsProj D_NOE_ChDs
172 // * 3 H1EvEvGlobal D_Ped_ChNb Ped = Pedestal
173 // * 4 H1EvEvProj D_Ped_ChDs
174 // * 5 H1EvSigGlobal D_TNo_ChNb TNo = Total Noise
175 // * 6 H1EvSigProj D_TNo_ChDs
176 // * 7 H1SigEvGlobal D_LFN_ChNb LFN = Low Frequency noise
177 // * 8 H1SigEvProj D_LFN_ChDs
178 // * 9 H1SigSigGlobal D_HFN_ChNb HFN = High Frequency noise
179 // * 10 H1SigSigProj D_HFN_ChDs
180 // * 11 H1EvCorssGlobal D_MCs_ChNb MCs = Mean correlations between samples
181 // * 12 H1EvCorssProj D_MCs_ChDs
182 // * 13 H1SigCorssGlobal D_SCs_ChNb SCs = Sigma of the correlations between samples
183 // * 14 H1SigCorssProj D_SCs_ChDs
184 // * 15 Ev D_MSp_SpNb MSp = Mean samples
185 // * 16 EvProj D_MSp_SpDs
186 // * 17 Sigma D_SSp_SpNb SSp = Sigma of the samples
187 // * 18 SigmaProj D_SSp_SpDs
188 // * 19 SampTime D_Adc_EvNb Adc = ADC count as a function of Event number
189 // * 20 AdcProj D_Adc_EvDs
190 // * 21 EvolEvEv H_Ped_Date
191 // * 22 EvolEvEvProj H_Ped_RuDs
192 // * 23 EvolEvSig H_TNo_Date
193 // * 24 EvolEvSigProj H_TNo_RuDs
194 // * 25 EvolSigEv H_LFN_Date
195 // * 26 EvolSigEvProj H_LFN_RuDs
196 // * 27 EvolSigSig H_HFN_Date
197 // * 28 EvolSigSigProj H_HFN_RuDs
198 // * 29 EvolEvCorss H_MCs_Date
199 // * 30 EvolEvCorssProj H_MCs_RuDs
200 // * 31 EvolSigCorss H_SCs_Date
201 // * 32 EvolSigCorssProj H_SCs_RuDs
202 //
203 //===========================================================================
204 //
205 // SetCanvasWidth, SetCanvasHeight,
206 // CanvasFormatW, CanvasFormatH,
207 //
208 //===========================================================================
209 UInt_t TEcnaParHistos::SetCanvasWidth(const TString& HistoCode, const TString& opt_plot) {
210  //........................................ Taille/format canvas
211 
212  UInt_t canv_w = CanvasFormatW("petit");
213 
214  if (HistoCode == "D_Adc_EvNb" || HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" ||
215  HistoCode == "D_LFN_ChNb" || HistoCode == "D_TNo_ChNb" || HistoCode == "D_HFN_ChNb" ||
216  HistoCode == "D_MCs_ChNb" || HistoCode == "D_SCs_ChNb" || HistoCode == "H_Ped_Date" ||
217  HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" || HistoCode == "H_LFN_Date" ||
218  HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" || (HistoCode == "D_MSp_SpNb" && opt_plot != "ONLYONE") ||
219  (HistoCode == "D_SSp_SpNb" && opt_plot != "ONLYONE")) {
220  canv_w = CanvasFormatH("moyen"); // format 29.7*21 ( = 21*29.7 en paysage)
221  }
222 
223  if ((HistoCode == "D_Adc_EvDs" || HistoCode == "D_NOE_ChDs" || HistoCode == "D_Ped_ChDs" ||
224  HistoCode == "D_LFN_ChDs" || HistoCode == "D_TNo_ChDs" || HistoCode == "D_HFN_ChDs" ||
225  HistoCode == "D_MCs_ChDs" || HistoCode == "D_SCs_ChDs" || HistoCode == "D_MSp_SpDs" ||
226  HistoCode == "D_SSp_SpDs" || HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" ||
227  HistoCode == "H_MCs_RuDs" || HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" ||
228  HistoCode == "H_SCs_RuDs") &&
229  opt_plot != "ONLYONE") {
230  canv_w = CanvasFormatH("moyen"); // format 29.7*21 ( = 21*29.7 en paysage)
231  }
232 
233  return canv_w;
234 }
235 
236 UInt_t TEcnaParHistos::SetCanvasHeight(const TString& HistoCode, const TString& opt_plot) {
237  //........................................ Taille/format canvas
238 
239  UInt_t canv_h = CanvasFormatH("petit");
240 
241  if (HistoCode == "D_Adc_EvNb" || HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" ||
242  HistoCode == "D_LFN_ChNb" || HistoCode == "D_TNo_ChNb" || HistoCode == "D_HFN_ChNb" ||
243  HistoCode == "D_MCs_ChNb" || HistoCode == "D_SCs_ChNb" || HistoCode == "H_Ped_Date" ||
244  HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" || HistoCode == "H_LFN_Date" ||
245  HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" || (HistoCode == "D_MSp_SpNb" && opt_plot != "ONLYONE") ||
246  (HistoCode == "D_SSp_SpNb" && opt_plot != "ONLYONE")) {
247  canv_h = CanvasFormatW("moyen"); // format 29.7*21 ( = 21*29.7 en paysage)
248  }
249 
250  if ((HistoCode == "D_Adc_EvDs" || HistoCode == "D_NOE_ChDs" || HistoCode == "D_Ped_ChDs" ||
251  HistoCode == "D_LFN_ChDs" || HistoCode == "D_TNo_ChDs" || HistoCode == "D_HFN_ChDs" ||
252  HistoCode == "D_MCs_ChDs" || HistoCode == "D_SCs_ChDs" || HistoCode == "D_MSp_SpDs" ||
253  HistoCode == "D_SSp_SpDs" || HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" ||
254  HistoCode == "H_MCs_RuDs" || HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" ||
255  HistoCode == "H_SCs_RuDs") &&
256  opt_plot != "ONLYONE") {
257  canv_h = CanvasFormatW("moyen"); // format 29.7*21 ( = 21*29.7 en paysage)
258  }
259 
260  return canv_h;
261 }
262 
263 UInt_t TEcnaParHistos::CanvasFormatW(const TString& chformat) {
264  //Set Canvas width
265 
266  UInt_t canv_w = 375; // default = "petit"
267 
268  if (chformat == "petit") {
269  canv_w = 375;
270  } // 21x29.7 portrait
271  if (chformat == "moyen") {
272  canv_w = 450;
273  } // 21x29.7 portrait
274  if (chformat == "grand") {
275  canv_w = 572;
276  } // 21x29.7 portrait
277 
278  if (chformat == "etaphiSM") {
279  canv_w = 760;
280  } // landscape etroit en hauteur pour plot SM
281  if (chformat == "phietaEB") {
282  canv_w = 636;
283  } // landscape pour plot EB (32 SMs)
284 
285  if (chformat == "IXIYDee") {
286  canv_w = 320;
287  } // portrait etroit en largeur pour plot Dee
288  if (chformat == "IYIXEE") {
289  canv_w = 636;
290  } // landscape pour plot EE (4 dees)
291  return canv_w;
292 }
293 //......................................................................
294 UInt_t TEcnaParHistos::CanvasFormatH(const TString& chformat) {
295  //Set Canvas height
296 
297  UInt_t canv_h = 530; // default = "petit"
298 
299  if (chformat == "petit") {
300  canv_h = 530;
301  } // 21x29.7 portrait
302  if (chformat == "moyen") {
303  canv_h = 636;
304  } // 21x29.7 portrait
305  if (chformat == "grand") {
306  canv_h = 810;
307  } // 21x29.7 portrait
308 
309  if (chformat == "etaphiSM") {
310  canv_h = 306;
311  } // landscape etroit en hauteur pour plot SM
312  if (chformat == "phietaEB") {
313  canv_h = 450;
314  } // landscape pour plot EB (32 SMs)
315 
316  if (chformat == "IXIYDee") {
317  canv_h = 720;
318  } // portrait etroit en largeur pour plot Dee
319  if (chformat == "IYIXEE") {
320  canv_h = 450;
321  } // landscape pour plot EE (4 dees)
322  return canv_h;
323 }
324 
325 //===========================================================================
326 //
327 // BoxLeftX, BoxRightX, BoxBottomY, BoxTopY
328 //
329 //===========================================================================
330 Double_t TEcnaParHistos::BoxLeftX(const TString& chtype) {
331  //Set the x left coordinate of the box
332 
333  Double_t value = 0.4;
334 
335  if (chtype == "general_comment") {
336  value = 0.015;
337  }
338 
339  if (chtype == "top_left_box_SM") {
340  value = 0.015;
341  }
342  if (chtype == "top_left_box_EB") {
343  value = 0.015;
344  }
345  if (chtype == "top_mid_box_EB") {
346  value = 0.350;
347  }
348  if (chtype == "top_right_box_EB") {
349  value = 0.630;
350  }
351 
352  if (chtype == "top_left_box_Dee") {
353  value = 0.015;
354  }
355  if (chtype == "top_left_box_EE") {
356  value = 0.015;
357  }
358  if (chtype == "top_mid_box_EE") {
359  value = 0.240;
360  }
361  if (chtype == "top_right_box_EE") {
362  value = 0.610;
363  }
364 
365  if (chtype == "bottom_left_box") {
366  value = 0.015;
367  }
368  if (chtype == "bottom_left_box_evol") {
369  value = 0.015;
370  }
371  if (chtype == "bottom_mid_box") {
372  value = 0.250;
373  }
374  if (chtype == "bottom_right_box") {
375  value = 0.455;
376  }
377  if (chtype == "bottom_right_box_evol") {
378  value = 0.540;
379  }
380  if (chtype == "bottom_right_box_evpr") {
381  value = 0.540;
382  }
383 
384  if (chtype == "several_plots_box") {
385  value = 0.015;
386  }
387  if (chtype == "several_evol_box") {
388  value = 0.015;
389  }
390  if (chtype == "several_evpr_box") {
391  value = 0.015;
392  }
393 
394  return value;
395 }
396 //.................................................................
397 Double_t TEcnaParHistos::BoxRightX(const TString& chtype) {
398  //Set the x right coordinate of the box
399 
400  Double_t value = 0.6;
401 
402  if (chtype == "general_comment") {
403  value = 0.680;
404  }
405 
406  if (chtype == "top_left_box_SM") {
407  value = 0.125;
408  }
409  if (chtype == "top_left_box_EB") {
410  value = 0.349;
411  }
412  if (chtype == "top_mid_box_EB") {
413  value = 0.629;
414  }
415  if (chtype == "top_right_box_EB") {
416  value = 0.985;
417  }
418 
419  if (chtype == "top_left_box_Dee") {
420  value = 0.425;
421  }
422  if (chtype == "top_left_box_EE") {
423  value = 0.260;
424  }
425  if (chtype == "top_mid_box_EE") {
426  value = 0.609;
427  }
428  if (chtype == "top_right_box_EE") {
429  value = 0.985;
430  }
431 
432  if (chtype == "bottom_left_box") {
433  value = 0.445;
434  }
435  if (chtype == "bottom_left_box_evol") {
436  value = 0.450;
437  } // ex 370
438  if (chtype == "bottom_mid_box") {
439  value = 0.750;
440  }
441  if (chtype == "bottom_right_box") {
442  value = 0.985;
443  }
444  if (chtype == "bottom_right_box_evol") {
445  value = 0.985;
446  }
447  if (chtype == "bottom_right_box_evpr") {
448  value = 0.985;
449  }
450 
451  if (chtype == "several_plots_box") {
452  value = 0.985;
453  }
454  if (chtype == "several_evol_box") {
455  value = 0.635;
456  }
457  if (chtype == "several_evpr_box") {
458  value = 0.635;
459  }
460 
461  return value;
462 }
463 //.................................................................
464 Double_t TEcnaParHistos::BoxBottomY(const TString& chtype) {
465  //Set the y bottom coordinate of the box
466 
467  Double_t value = 0.8;
468 
469  if (chtype == "general_comment") {
470  value = 0.960;
471  }
472 
473  if (chtype == "top_left_box_SM") {
474  value = 0.880;
475  }
476  if (chtype == "top_left_box_EB") {
477  value = 0.880;
478  }
479  if (chtype == "top_mid_box_EB") {
480  value = 0.880;
481  }
482  if (chtype == "top_right_box_EB") {
483  value = 0.880;
484  }
485 
486  if (chtype == "top_left_box_Dee") {
487  value = 0.925;
488  }
489  if (chtype == "top_left_box_EE") {
490  value = 0.880;
491  }
492  if (chtype == "top_mid_box_EE") {
493  value = 0.880;
494  }
495  if (chtype == "top_right_box_EE") {
496  value = 0.880;
497  }
498 
499  if (chtype == "bottom_left_box") {
500  value = 0.010;
501  }
502  if (chtype == "bottom_left_box_evol") {
503  value = 0.010;
504  }
505  if (chtype == "bottom_right_box") {
506  value = 0.010;
507  }
508  if (chtype == "bottom_right_box_evol") {
509  value = 0.010;
510  }
511  if (chtype == "bottom_right_box_evpr") {
512  value = 0.010;
513  }
514  if (chtype == "several_plots_box") {
515  value = 0.010;
516  }
517  if (chtype == "several_evol_box") {
518  value = 0.010;
519  }
520  if (chtype == "several_evpr_box") {
521  value = 0.010;
522  }
523 
524  return value;
525 }
526 //.................................................................
527 Double_t TEcnaParHistos::BoxTopY(const TString& chtype) {
528  //Set the y top coordinate of the box
529 
530  Double_t value = 0.9;
531 
532  if (chtype == "general_comment") {
533  value = 0.999;
534  }
535 
536  if (chtype == "top_left_box_SM") {
537  value = 0.955;
538  }
539  if (chtype == "top_left_box_EB") {
540  value = 0.955;
541  }
542  if (chtype == "top_mid_box_EB") {
543  value = 0.955;
544  }
545  if (chtype == "top_right_box_EB") {
546  value = 0.955;
547  }
548 
549  if (chtype == "top_left_box_Dee") {
550  value = 0.969;
551  }
552  if (chtype == "top_left_box_EE") {
553  value = 0.955;
554  }
555  if (chtype == "top_mid_box_EE") {
556  value = 0.955;
557  }
558  if (chtype == "top_right_box_EE") {
559  value = 0.955;
560  }
561 
562  if (chtype == "bottom_left_box") {
563  value = 0.120;
564  }
565  if (chtype == "bottom_left_box_evol") {
566  value = 0.120;
567  }
568  if (chtype == "bottom_right_box") {
569  value = 0.120;
570  }
571  if (chtype == "bottom_right_box_Dee") {
572  value = 0.100;
573  }
574 
575  if (chtype == "bottom_right_box_evol") {
576  value = 0.120;
577  }
578  if (chtype == "bottom_right_box_evpr") {
579  value = 0.120;
580  }
581  if (chtype == "several_plots_box") {
582  value = 0.200;
583  }
584  if (chtype == "several_evol_box") {
585  value = 0.200;
586  }
587  if (chtype == "several_evpr_box") {
588  value = 0.200;
589  }
590 
591  return value;
592 }
593 
594 //===========================================================================
595 //
596 // SetColorPalette, ColorTab, ColorDefinition
597 //
598 //===========================================================================
599 
600 void TEcnaParHistos::SetColorPalette(const TString& user_color_palette) {
601  //Set color number for palette
602 
603  fMaxColorNumber = 4; // default: 4 ==> Black/Red/Blue/Green/Braun
604 
605  if (!(user_color_palette == "Rainbow" || user_color_palette == "rainbow")) {
606  fMaxColorNumber = 5;
607  }
608  if (user_color_palette == "Rainbow" || user_color_palette == "rainbow") {
609  fMaxColorNumber = 6;
610  }
611 }
612 //...........................................................................
613 Color_t TEcnaParHistos::ColorTab(const Int_t& user_color_number) {
614  //Set color from user color number
615 
616  //=========> Color definition: see ROOT User's guide p.151
617 
618  TColor* my_color = new TColor();
619 
620  Color_t couleur = ColorDefinition("noir"); // default = "noir"
621 
622  if (fMaxColorNumber != 6) {
623  //................... Standard: 6 colors (fMaxColorNumber = 5)
624  if (user_color_number == 0) {
625  couleur = ColorDefinition("noir");
626  } // noir black 1
627  if (user_color_number == 1) {
628  couleur = ColorDefinition("rouge");
629  } // rouge red 2
630  if (user_color_number == 2) {
631  couleur = ColorDefinition("bleu");
632  } // bleu blue 9
633  if (user_color_number == 3) {
634  couleur = (Color_t)my_color->GetColor("#009900");
635  } // vert green
636  if (user_color_number == 4) {
637  couleur = ColorDefinition("marron28");
638  } // marron 28 braun 28
639  if (user_color_number == 5) {
640  couleur = (Color_t)my_color->GetColor("#9900BB");
641  } // violet purple
642  }
643  if (fMaxColorNumber == 6) {
644  //................... Rainbow:7 colors (fMaxColorNumber = 6)
645  if (user_color_number == 0) {
646  couleur = (Color_t)my_color->GetColor("#EE0000");
647  } // rouge
648  if (user_color_number == 1) {
649  couleur = (Color_t)my_color->GetColor("#FF6611");
650  } // orange
651  if (user_color_number == 2) {
652  couleur = (Color_t)my_color->GetColor("#FFCC00");
653  } // jaune
654  if (user_color_number == 3) {
655  couleur = (Color_t)my_color->GetColor("#009900");
656  } // vert
657  if (user_color_number == 4) {
658  couleur = (Color_t)my_color->GetColor("#0044EE");
659  } // bleu
660  if (user_color_number == 5) {
661  couleur = (Color_t)my_color->GetColor("#6633BB");
662  } // indigo
663  if (user_color_number == 6) {
664  couleur = (Color_t)my_color->GetColor("#9900BB");
665  } // violet
666  }
667 
668  if (user_color_number < 0 || user_color_number > fMaxColorNumber) {
669  couleur = 0;
670  }
671 
672  return couleur;
673 }
674 // end of ColorTab
675 
676 Color_t TEcnaParHistos::ColorDefinition(const TString& chcolor) {
677  //Set color from color name
678 
679  //=========> Color definition: see ROOT User's guide p.151
680 
681  Color_t couleur = 1; // default = "noir"
682 
683  if (chcolor == "noir") {
684  couleur = 1;
685  }
686  if (chcolor == "rouge") {
687  couleur = 2;
688  }
689  if (chcolor == "vert_fonce") {
690  couleur = 3;
691  }
692  if (chcolor == "bleu_fonce") {
693  couleur = 4;
694  }
695  if (chcolor == "jaune") {
696  couleur = 5;
697  }
698  if (chcolor == "rose") {
699  couleur = 6;
700  }
701  if (chcolor == "bleu_clair") {
702  couleur = 7;
703  }
704  if (chcolor == "vert") {
705  couleur = 8;
706  }
707  if (chcolor == "bleu") {
708  couleur = 9;
709  }
710  if (chcolor == "blanc") {
711  couleur = 10;
712  }
713 
714  if (chcolor == "marron23") {
715  couleur = 23;
716  }
717  if (chcolor == "marron24") {
718  couleur = 24;
719  }
720  if (chcolor == "marron25") {
721  couleur = 24;
722  }
723  if (chcolor == "marron27") {
724  couleur = 27;
725  }
726  if (chcolor == "marron28") {
727  couleur = 28;
728  }
729 
730  if (chcolor == "bleu33") {
731  couleur = 33;
732  }
733  if (chcolor == "bleu36") {
734  couleur = 36;
735  }
736  if (chcolor == "bleu38") {
737  couleur = 38;
738  }
739  if (chcolor == "bleu39") {
740  couleur = 39;
741  }
742 
743  if (chcolor == "orange41") {
744  couleur = 41;
745  }
746  if (chcolor == "orange42") {
747  couleur = 42;
748  }
749 
750  if (chcolor == "rouge44") {
751  couleur = 44;
752  }
753  if (chcolor == "rouge46") {
754  couleur = 46;
755  }
756  if (chcolor == "rouge47") {
757  couleur = 47;
758  }
759  if (chcolor == "rouge48") {
760  couleur = 48;
761  }
762  if (chcolor == "rouge49") {
763  couleur = 49;
764  }
765  if (chcolor == "rouge50") {
766  couleur = 50;
767  }
768 
769  if (chcolor == "vert31") {
770  couleur = 31;
771  }
772  if (chcolor == "vert32") {
773  couleur = 32;
774  }
775  if (chcolor == "vert36") {
776  couleur = 36;
777  }
778  if (chcolor == "vert37") {
779  couleur = 37;
780  }
781 
782  if (chcolor == "violet") {
783  couleur = 49;
784  }
785 
786  if (chcolor == "turquoise29") {
787  couleur = 29;
788  }
789 
790  if (chcolor == "gris12") {
791  couleur = 12;
792  }
793  if (chcolor == "gris13") {
794  couleur = 13;
795  }
796  if (chcolor == "gris14") {
797  couleur = 14;
798  }
799  if (chcolor == "gris15") {
800  couleur = 15;
801  }
802  if (chcolor == "gris16") {
803  couleur = 16;
804  }
805  if (chcolor == "gris17") {
806  couleur = 17;
807  }
808  if (chcolor == "gris18") {
809  couleur = 18;
810  }
811 
812  return couleur;
813 }
814 // end of ColorDefinition
815 
816 //===========================================================================
817 // GetMaxNbOfColors, GetMarginAutoMinMax, GetNbOfRunsDisplayed
818 //===========================================================================
822 
823 //===========================================================================
824 //
825 // SetViewHistoStyle, SetViewHistoPadMargins
826 //
827 //===========================================================================
829  // Set style parameters for histo view
830 
831  //......................... Palette
832  gStyle->SetPalette(1, nullptr); // default: rainbow spectrum
833 
834  //............................... Date
835  gStyle->SetOptDate(0);
836 
837  //............................... Histo title size
838  gStyle->SetTitleW(0.5);
839  gStyle->SetTitleH(0.075); // default
840 
841  if (HistoType == "colz" || HistoType == "lego" || HistoType == "surf" || HistoType == "Stin") {
842  gStyle->SetTitleW(0.8);
843  gStyle->SetTitleH(0.075);
844  }
845 
846  if ((HistoType == "H1Basic") || (HistoType == "Evol")) {
847  gStyle->SetTitleW(0.5);
848  gStyle->SetTitleH(0.075);
849  }
850 
851  if (HistoType == "Stex2DEB") {
852  gStyle->SetTitleW(0.2);
853  gStyle->SetTitleH(0.095);
854  }
855 
856  if (HistoType == "Stex2DEE") {
857  gStyle->SetTitleW(0.45);
858  gStyle->SetTitleH(0.08);
859  }
860 
861  if (HistoType == "Stex2DEENb") {
862  gStyle->SetTitleW(0.85);
863  gStyle->SetTitleH(0.08);
864  }
865 
866  if (HistoType == "Stas2DEB" || HistoType == "Stas2DEE") {
867  gStyle->SetTitleW(0.225);
868  gStyle->SetTitleH(0.095);
869  }
870 
871  if (HistoType == "Global" || HistoType == "Proj" || HistoType == "SampProj" || HistoType == "EvolProj") {
872  gStyle->SetTitleW(0.5);
873  gStyle->SetTitleH(0.08);
874  }
875 
876  //............................. Statistics box style
877  gStyle->SetOptStat(1110);
878 
879  //............................. Statistics box size
880  if (HistoType == "colz" || HistoType == "lego" || HistoType == "surf" || HistoType == "Stin") {
881  gStyle->SetStatW(0.55);
882  gStyle->SetStatH(0.2);
883  gStyle->SetStatY(1);
884  }
885 
886  if (HistoType == "Global") {
887  gStyle->SetStatW(0.375);
888  gStyle->SetStatH(0.180);
889  gStyle->SetStatY(0.9875);
890  }
891  if (HistoType == "Proj" || HistoType == "SampProj" || HistoType == "EvolProj") {
892  gStyle->SetStatW(0.375);
893  gStyle->SetStatH(0.180);
894  gStyle->SetStatY(0.9875);
895  }
896 
897  if ((HistoType == "H1Basic") || (HistoType == "Evol")) {
898  gStyle->SetStatW(0.375);
899  gStyle->SetStatH(0.180);
900  gStyle->SetStatY(0.9875);
901  }
902 
903  //....... Marker and line style
904 
905  gStyle->SetMarkerStyle(1);
906  if (HistoType == "Global") {
907  gStyle->SetMarkerStyle(20);
908  }
909 }
910 //------- (end of SetViewHistoStyle) ----------------
911 
912 void TEcnaParHistos::SetViewHistoPadMargins(const TString& HistoType, const TString& opt_plot) {
913  // Set active pad margins for histo view
914 
915  //.......... default
916  gStyle->SetPadBottomMargin(0.125);
917  gStyle->SetPadTopMargin(0.125);
918  gStyle->SetPadLeftMargin(0.125);
919  gStyle->SetPadRightMargin(0.125);
920 
921  if (HistoType == "colz" || HistoType == "lego" || HistoType == "surf" || HistoType == "Stin") {
922  gStyle->SetPadBottomMargin(0.125);
923  gStyle->SetPadTopMargin(0.135);
924  gStyle->SetPadLeftMargin(0.135);
925  gStyle->SetPadRightMargin(0.135);
926  }
927 
928  if (HistoType == "Stex2DEB") {
929  gStyle->SetPadBottomMargin(0.145);
930  gStyle->SetPadTopMargin(0.135);
931  gStyle->SetPadLeftMargin(0.125);
932  gStyle->SetPadRightMargin(0.125);
933  }
934 
935  if (HistoType == "Stex2DEE" || HistoType == "Stex2DEENb") {
936  gStyle->SetPadBottomMargin(0.120);
937  gStyle->SetPadTopMargin(0.110);
938  gStyle->SetPadLeftMargin(0.130);
939  gStyle->SetPadRightMargin(0.130);
940  }
941  if (HistoType == "Stas2DEB") {
942  gStyle->SetPadBottomMargin(0.145);
943  gStyle->SetPadTopMargin(0.135);
944  gStyle->SetPadLeftMargin(0.125);
945  gStyle->SetPadRightMargin(0.125);
946  }
947 
948  if (HistoType == "Stas2DEE") {
949  gStyle->SetPadBottomMargin(0.145);
950  gStyle->SetPadTopMargin(0.135);
951  gStyle->SetPadLeftMargin(0.105);
952  gStyle->SetPadRightMargin(0.115);
953  }
954  if (HistoType == "Global") {
955  gStyle->SetPadBottomMargin((Float_t)0.125);
956  gStyle->SetPadTopMargin((Float_t)0.175);
957  gStyle->SetPadLeftMargin((Float_t)0.115);
958  gStyle->SetPadRightMargin((Float_t)0.05);
959  }
960 
961  if (HistoType == "Proj" || HistoType == "SampProj") {
962  gStyle->SetPadBottomMargin(0.115);
963  gStyle->SetPadTopMargin(0.155);
964  gStyle->SetPadLeftMargin(0.15);
965  gStyle->SetPadRightMargin(0.05);
966  }
967 
968  if (HistoType == "H1Basic") {
969  gStyle->SetPadBottomMargin(0.1275);
970  gStyle->SetPadTopMargin(0.165);
971  gStyle->SetPadLeftMargin(0.15);
972  gStyle->SetPadRightMargin(0.05);
973  }
974 
975  if (HistoType == "Evol" && opt_plot == "ONLYONE") {
976  gStyle->SetPadBottomMargin(0.110);
977  gStyle->SetPadTopMargin(0.2);
978  gStyle->SetPadLeftMargin(0.115);
979  gStyle->SetPadRightMargin(0.035);
980  }
981  if (HistoType == "Evol" && opt_plot == "SAME") {
982  gStyle->SetPadBottomMargin(0.110);
983  gStyle->SetPadTopMargin(0.185);
984  gStyle->SetPadLeftMargin(0.115);
985  gStyle->SetPadRightMargin(0.035);
986  }
987  if (HistoType == "Evol" && opt_plot == "SAME n") {
988  gStyle->SetPadBottomMargin(0.110);
989  gStyle->SetPadTopMargin(0.1);
990  gStyle->SetPadLeftMargin(0.115);
991  gStyle->SetPadRightMargin(0.035);
992  }
993 
994  if (HistoType == "EvolProj" && opt_plot == "ONLYONE") {
995  gStyle->SetPadBottomMargin(0.1275);
996  gStyle->SetPadTopMargin(0.165);
997  gStyle->SetPadLeftMargin(0.15);
998  gStyle->SetPadRightMargin(0.05);
999  }
1000  if (HistoType == "EvolProj" && opt_plot == "SAME") {
1001  gStyle->SetPadBottomMargin(0.110);
1002  gStyle->SetPadTopMargin(0.185);
1003  gStyle->SetPadLeftMargin(0.115);
1004  gStyle->SetPadRightMargin(0.035);
1005  }
1006  if (HistoType == "EvolProj" && opt_plot == "SAME n") {
1007  gStyle->SetPadBottomMargin(0.110);
1008  gStyle->SetPadTopMargin(0.1);
1009  gStyle->SetPadLeftMargin(0.115);
1010  gStyle->SetPadRightMargin(0.035);
1011  }
1012 }
1013 //------- (end of SetViewHistoPadMargins) ----------------
1014 
1015 //===========================================================================
1016 //
1017 // SetViewHistoStats, SetViewHistoOffsets,
1018 // AxisTitleOffset, AxisTitleSize, AxisLabelOffset,
1019 // AxisLabelSize, AxisTickSize, DeeOffsetX, DeeNameOffsetX,
1020 // SetViewGraphOffsets
1021 //
1022 //===========================================================================
1024  // Set stats box for histo view
1025 
1026  Bool_t b_true = kTRUE;
1027  Bool_t b_false = kFALSE;
1028 
1029  histo->SetStats(b_false);
1030 
1031  if (HistoType == "Global") {
1032  histo->SetStats(b_false);
1033  }
1034  if (HistoType == "Proj" || HistoType == "SampProj") {
1035  histo->SetStats(b_true);
1036  }
1037 }
1038 
1039 void TEcnaParHistos::SetViewHistoOffsets(TH1D* histo, const TString& HistoType, const TString& opt_plot) {
1040  // Set offsets of labels, title axis, etc... for histo view
1041 
1042  if (HistoType == "Global") {
1043  //....................... x axis
1044  histo->GetXaxis()->SetTitleOffset((Float_t)1.05);
1045  histo->GetXaxis()->SetTitleSize((Float_t)0.04);
1046 
1047  histo->GetXaxis()->SetLabelOffset((Float_t)0.006);
1048  histo->GetXaxis()->SetLabelSize((Float_t)0.04);
1049 
1050  histo->GetXaxis()->SetTickLength((Float_t)0.03);
1051  histo->GetXaxis()->SetNdivisions((Int_t)510);
1052 
1053  //....................... y axis
1054  histo->GetYaxis()->SetTitleOffset((Float_t)1.5);
1055  histo->GetYaxis()->SetTitleSize((Float_t)0.04);
1056 
1057  histo->GetYaxis()->SetLabelOffset((Float_t)0.01);
1058  histo->GetYaxis()->SetLabelSize((Float_t)0.04);
1059 
1060  histo->GetYaxis()->SetTickLength((Float_t)0.03);
1061  histo->GetYaxis()->SetNdivisions((Int_t)510);
1062  }
1063 
1064  if (HistoType == "Proj" || HistoType == "SampGlobal" || HistoType == "SampProj") {
1065  //....................... x axis
1066  histo->GetXaxis()->SetTitleOffset((Float_t)1.05);
1067  histo->GetXaxis()->SetTitleSize((Float_t)0.04);
1068 
1069  histo->GetXaxis()->SetLabelOffset((Float_t)0.006);
1070  histo->GetXaxis()->SetLabelSize((Float_t)0.04);
1071 
1072  histo->GetXaxis()->SetTickLength((Float_t)0.03);
1073  histo->GetXaxis()->SetNdivisions((Int_t)510);
1074 
1075  //....................... y axis
1076  histo->GetYaxis()->SetTitleOffset((Float_t)1.75);
1077  histo->GetYaxis()->SetTitleSize((Float_t)0.04);
1078 
1079  histo->GetYaxis()->SetLabelOffset((Float_t)0.01);
1080  histo->GetYaxis()->SetLabelSize((Float_t)0.04);
1081 
1082  histo->GetYaxis()->SetTickLength((Float_t)0.03);
1083  histo->GetYaxis()->SetNdivisions((Int_t)510);
1084  }
1085 
1086  if (HistoType == "H1Basic" || HistoType == "Evol" ||
1087  (HistoType == "EvolProj" && !(opt_plot == "SAME" || opt_plot == "SAME n"))) {
1088  //....................... x axis
1089  histo->GetXaxis()->SetTitleOffset((Float_t)1.25);
1090  histo->GetXaxis()->SetTitleSize((Float_t)0.04);
1091 
1092  histo->GetXaxis()->SetLabelOffset((Float_t)0.005);
1093  histo->GetXaxis()->SetLabelSize((Float_t)0.04);
1094 
1095  histo->GetXaxis()->SetTickLength((Float_t)0.03);
1096  histo->GetXaxis()->SetNdivisions((Int_t)510);
1097 
1098  //....................... y axis
1099  histo->GetYaxis()->SetTitleOffset((Float_t)1.75);
1100  histo->GetYaxis()->SetTitleSize((Float_t)0.04);
1101 
1102  histo->GetYaxis()->SetLabelOffset((Float_t)0.01);
1103  histo->GetYaxis()->SetLabelSize((Float_t)0.04);
1104 
1105  histo->GetYaxis()->SetTickLength((Float_t)0.03);
1106  histo->GetYaxis()->SetNdivisions((Int_t)510);
1107  }
1108 
1109  if (HistoType == "EvolProj" && (opt_plot == "SAME" || opt_plot == "SAME n")) {
1110  //....................... x axis
1111  histo->GetXaxis()->SetTitleOffset((Float_t)1.25);
1112  histo->GetXaxis()->SetTitleSize((Float_t)0.04);
1113 
1114  histo->GetXaxis()->SetLabelOffset((Float_t)0.005);
1115  histo->GetXaxis()->SetLabelSize((Float_t)0.04);
1116 
1117  histo->GetXaxis()->SetTickLength((Float_t)0.03);
1118  histo->GetXaxis()->SetNdivisions((Int_t)510);
1119 
1120  //....................... y axis
1121  histo->GetYaxis()->SetTitleOffset((Float_t)1.25);
1122  histo->GetYaxis()->SetTitleSize((Float_t)0.04);
1123 
1124  histo->GetYaxis()->SetLabelOffset((Float_t)0.01);
1125  histo->GetYaxis()->SetLabelSize((Float_t)0.04);
1126 
1127  histo->GetYaxis()->SetTickLength((Float_t)0.03);
1128  histo->GetYaxis()->SetNdivisions((Int_t)510);
1129  }
1130 
1131  if (HistoType == "colz") {
1132  //....................... x axis
1133  histo->GetXaxis()->SetTitleOffset((Float_t)1.25);
1134  histo->GetXaxis()->SetTitleSize((Float_t)0.04);
1135 
1136  histo->GetXaxis()->SetLabelOffset((Float_t)0.005);
1137  histo->GetXaxis()->SetLabelSize((Float_t)0.04);
1138 
1139  histo->GetXaxis()->SetTickLength((Float_t)0.03);
1140  histo->GetXaxis()->SetNdivisions((Int_t)510);
1141 
1142  //....................... y axis
1143  histo->GetYaxis()->SetTitleOffset((Float_t)1.45);
1144  histo->GetYaxis()->SetTitleSize((Float_t)0.04);
1145 
1146  histo->GetYaxis()->SetLabelOffset((Float_t)0.01);
1147  histo->GetYaxis()->SetLabelSize((Float_t)0.04);
1148 
1149  histo->GetYaxis()->SetTickLength((Float_t)0.03);
1150  histo->GetYaxis()->SetNdivisions((Int_t)510);
1151  }
1152 
1153  if (HistoType == "lego" || HistoType == "surf") {
1154  //....................... x axis
1155  histo->GetXaxis()->SetTitleOffset((Float_t)1.7);
1156  histo->GetXaxis()->SetTitleSize((Float_t)0.04);
1157 
1158  histo->GetXaxis()->SetLabelOffset((Float_t)0.005);
1159  histo->GetXaxis()->SetLabelSize((Float_t)0.04);
1160 
1161  histo->GetXaxis()->SetTickLength((Float_t)0.03);
1162  histo->GetXaxis()->SetNdivisions((Int_t)510);
1163 
1164  //....................... y axis
1165  histo->GetYaxis()->SetTitleOffset((Float_t)1.85);
1166  histo->GetYaxis()->SetTitleSize((Float_t)0.04);
1167 
1168  histo->GetYaxis()->SetLabelOffset((Float_t)0.01);
1169  histo->GetYaxis()->SetLabelSize((Float_t)0.04);
1170 
1171  histo->GetYaxis()->SetTickLength((Float_t)0.03);
1172  histo->GetYaxis()->SetNdivisions((Int_t)510);
1173  }
1174 
1175  if (HistoType == "Stin") {
1176  //.......... x axis (remove labels and ticks)
1177  histo->GetXaxis()->SetTitleOffset((Float_t)9999.);
1178  histo->GetXaxis()->SetTitleSize((Float_t)0.05);
1179 
1180  histo->GetXaxis()->SetLabelOffset((Float_t)9999.);
1181  histo->GetXaxis()->SetLabelSize((Float_t)0.);
1182 
1183  histo->GetXaxis()->SetNdivisions((Int_t)1);
1184  histo->GetXaxis()->SetTickLength((Float_t)0.);
1185 
1186  //.......... y axis (remove labels and ticks)
1187  histo->GetYaxis()->SetTitleOffset((Float_t)9999.);
1188  histo->GetYaxis()->SetTitleSize((Float_t)0.05);
1189 
1190  histo->GetYaxis()->SetLabelOffset((Float_t)9999.);
1191  histo->GetYaxis()->SetLabelSize((Float_t)0.);
1192 
1193  histo->GetYaxis()->SetNdivisions((Int_t)1);
1194  histo->GetYaxis()->SetTickLength((Float_t)0.);
1195  }
1196 
1197  if (HistoType == "Stex2DEB" || HistoType == "Stex2DEE" || HistoType == "Stex2DEENb" || HistoType == "Stas2DEB" ||
1198  HistoType == "Stas2DEE") {
1199  //.......... x axis (remove labels and ticks)
1200  histo->GetXaxis()->SetTitleOffset((Float_t)9999.);
1201  histo->GetXaxis()->SetTitleSize((Float_t)0.075);
1202 
1203  histo->GetXaxis()->SetLabelOffset((Float_t)9999.);
1204  histo->GetXaxis()->SetLabelSize((Float_t)0.);
1205 
1206  histo->GetXaxis()->SetNdivisions((Int_t)1);
1207  histo->GetXaxis()->SetTickLength((Float_t)0.);
1208 
1209  //.......... y axis (remove labels and ticks)
1210  histo->GetYaxis()->SetTitleOffset((Float_t)9999.);
1211  histo->GetYaxis()->SetTitleSize((Float_t)0.075);
1212 
1213  histo->GetYaxis()->SetLabelOffset((Float_t)9999.);
1214  histo->GetYaxis()->SetLabelSize((Float_t)0.);
1215 
1216  histo->GetYaxis()->SetNdivisions((Int_t)1);
1217  histo->GetYaxis()->SetTickLength((Float_t)0.);
1218  }
1219 }
1220 
1221 //----------------------------------------------
1223 Float_t TEcnaParHistos::AxisTitleOffset(const TString& opt) {
1224  Float_t tit_off = 1.;
1225 
1226  if (opt == "") {
1227  tit_off = 0.055;
1228  }
1229  if (opt == "Towx") {
1230  tit_off = 1.15;
1231  }
1232  if (opt == "Towy") {
1233  tit_off = 1.15;
1234  }
1235  if (opt == "SMx") {
1236  tit_off = 1.15;
1237  }
1238  if (opt == "SMy") {
1239  tit_off = 0.5;
1240  }
1241  if (opt == "SMyInEB") {
1242  tit_off = 0.7;
1243  }
1244  if (opt == "EBy") {
1245  tit_off = 1.;
1246  }
1247  if (opt == "EBx") {
1248  tit_off = 1.3;
1249  }
1250 
1251  if (opt == "SCx") {
1252  tit_off = 1.15;
1253  }
1254  if (opt == "SCy") {
1255  tit_off = 1.15;
1256  }
1257  if (opt == "Deex") {
1258  tit_off = 0.75;
1259  }
1260  if (opt == "Deey") {
1261  tit_off = 1.2;
1262  }
1263  if (opt == "EEx") {
1264  tit_off = 1.2;
1265  }
1266  if (opt == "EEy") {
1267  tit_off = 1.;
1268  }
1269 
1270  return tit_off;
1271 }
1272 //............................................
1274 Float_t TEcnaParHistos::AxisTitleSize(const TString& opt) {
1275  Float_t tit_siz = 0.045;
1276  if (opt == "") {
1277  tit_siz = 0.045;
1278  }
1279  return tit_siz;
1280 }
1281 //............................................
1283 Float_t TEcnaParHistos::AxisLabelOffset(const TString& opt) {
1284  Float_t lab_off = 0.02;
1285  if (opt == "") {
1286  lab_off = 0.02;
1287  }
1288 
1289  if (opt == "Towx") {
1290  lab_off = 0.01;
1291  }
1292  if (opt == "Towy") {
1293  lab_off = 0.03;
1294  }
1295  if (opt == "SMx") {
1296  lab_off = 0.01;
1297  }
1298  if (opt == "SMy") {
1299  lab_off = 0.015;
1300  }
1301  if (opt == "EBx") {
1302  lab_off = 0.03;
1303  }
1304  if (opt == "EBy") {
1305  lab_off = 0.015;
1306  }
1307 
1308  if (opt == "SCx") {
1309  lab_off = 0.01;
1310  }
1311  if (opt == "SCy") {
1312  lab_off = 0.03;
1313  }
1314  if (opt == "Deex") {
1315  lab_off = 0.002;
1316  }
1317  if (opt == "Deey") {
1318  lab_off = 0.03;
1319  }
1320  if (opt == "EEx") {
1321  lab_off = 0.015;
1322  }
1323  if (opt == "EEy") {
1324  lab_off = 0.02;
1325  }
1326 
1327  return lab_off;
1328 }
1329 //............................................
1331 Float_t TEcnaParHistos::AxisLabelSize(const TString& opt) {
1332  Float_t lab_siz = 0.035;
1333  if (opt == "SMx") {
1334  lab_siz = 0.05;
1335  }
1336  if (opt == "SMy") {
1337  lab_siz = 0.05;
1338  }
1339  if (opt == "EBx") {
1340  lab_siz = 0.04;
1341  }
1342  if (opt == "EBy") {
1343  lab_siz = 0.04;
1344  }
1345  return lab_siz;
1346 }
1347 //............................................
1349 Float_t TEcnaParHistos::AxisTickSize(const TString& opt) {
1350  //.......... works only with option "S" in TGaxis
1351  Float_t tic_siz = 0.;
1352  if (opt == "Dee") {
1353  tic_siz = 0.;
1354  }
1355  if (opt == "Deex") {
1356  tic_siz = 0.01;
1357  }
1358  if (opt == "Deey") {
1359  tic_siz = 0.02;
1360  }
1361  if (opt == "SMx") {
1362  tic_siz = 0.03;
1363  }
1364  if (opt == "SMy") {
1365  tic_siz = 0.0075;
1366  }
1367  if (opt == "EEx") {
1368  tic_siz = 0.06;
1369  }
1370  if (opt == "EEy") {
1371  tic_siz = 0.005;
1372  }
1373 
1374  return tic_siz;
1375 }
1376 //-----------------------------------------------
1377 
1378 void TEcnaParHistos::SetViewGraphOffsets(TGraph* graph, const TString& HistoType) {
1379  // Set offsets of labels, title axis, etc... for histo view
1380 
1381  if ((HistoType == "H1Basic") || (HistoType == "Evol")) {
1382  //....................... x axis
1383  graph->GetXaxis()->SetTitleOffset((Float_t)1.10);
1384  graph->GetXaxis()->SetTitleSize((Float_t)0.04);
1385 
1386  graph->GetXaxis()->SetLabelOffset((Float_t)0.015);
1387  graph->GetXaxis()->SetLabelSize((Float_t)0.04);
1388 
1389  graph->GetXaxis()->SetTickLength((Float_t)0.02);
1390  graph->GetXaxis()->SetNdivisions((Int_t)510);
1391 
1392  //....................... y axis
1393  graph->GetYaxis()->SetTitleOffset((Float_t)1.25);
1394  graph->GetYaxis()->SetTitleSize((Float_t)0.04);
1395 
1396  graph->GetYaxis()->SetLabelOffset((Float_t)0.01);
1397  graph->GetYaxis()->SetLabelSize((Float_t)0.04);
1398 
1399  graph->GetYaxis()->SetTickLength((Float_t)0.03);
1400  graph->GetYaxis()->SetNdivisions((Int_t)510);
1401  }
1402 }
1403 //-----------------------------------------------
1404 Float_t TEcnaParHistos::DeeOffsetX(const TString& opt_plot, const Int_t& DeeNumber) {
1405  Float_t offset = 0;
1406  if (opt_plot == "Dee") {
1407  offset = 0;
1408  }
1409  if (opt_plot == "EE") {
1410  Double_t vertic_empty_strip_1 = 1.;
1411  if (DeeNumber == 1) {
1412  offset = vertic_empty_strip_1 + fEcal->MaxStinHocoInStex() + 2 * fEcal->MaxStinHocoInStex() + 1.;
1413  }
1414  if (DeeNumber == 2) {
1415  offset = vertic_empty_strip_1 + 2 * fEcal->MaxStinHocoInStex() + 1.;
1416  }
1417  if (DeeNumber == 3) {
1418  offset = vertic_empty_strip_1 + fEcal->MaxStinHocoInStex();
1419  }
1420  if (DeeNumber == 4) {
1421  offset = vertic_empty_strip_1 + 0.;
1422  }
1423  }
1424  return offset;
1425 }
1426 
1427 //-----------------------------------------------
1428 Float_t TEcnaParHistos::DeeNameOffsetX(const Int_t& DeeNumber) {
1429  Float_t offset = 0;
1430 
1431  if (DeeNumber == 1) {
1432  offset = 8.;
1433  }
1434  if (DeeNumber == 2) {
1435  offset = 0.;
1436  }
1437  if (DeeNumber == 3) {
1438  offset = 7.6;
1439  }
1440  if (DeeNumber == 4) {
1441  offset = -0.5;
1442  }
1443 
1444  return offset;
1445 }
1446 //-----------------------------------------------
1447 Float_t TEcnaParHistos::DeeNumberOffsetX(const TString& opt_plot, const Int_t& DeeNumber) {
1448  Float_t offset = 0;
1449 
1450  if (opt_plot == "Dee") {
1451  if (DeeNumber == 1) {
1452  offset = 2.5;
1453  }
1454  if (DeeNumber == 2) {
1455  offset = 41.5;
1456  }
1457  if (DeeNumber == 3) {
1458  offset = 2.5;
1459  }
1460  if (DeeNumber == 4) {
1461  offset = 41.5;
1462  }
1463  }
1464  if (opt_plot == "EE") {
1465  if (DeeNumber == 1) {
1466  offset = 0.42;
1467  }
1468  if (DeeNumber == 2) {
1469  offset = 8.15;
1470  }
1471  if (DeeNumber == 3) {
1472  offset = 0.42;
1473  }
1474  if (DeeNumber == 4) {
1475  offset = 8.15;
1476  }
1477  }
1478  return offset;
1479 }
1480 //===========================================================================
1481 //
1482 // SetPaveGeneralComment,
1483 // SetPaveAnalysisRun, SetPaveNbOfEvts,
1484 // SetPaveEvolNbOfEvtsAna, SetPaveEvolRuns,
1485 // SetOptionSamePaveBorder
1486 //
1487 //
1488 // W A R N I N G
1489 //
1490 // ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
1491 //
1492 // WARNING => Paves for plot option "SEVERAL" and "SAMEONE" are treated
1493 // in TEcnaHistos
1494 //
1495 // ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
1496 //
1497 //===========================================================================
1498 
1499 TPaveText* TEcnaParHistos::SetPaveGeneralComment(const TString& comment) {
1500  // General comment
1501 
1502  TPaveText* title_g1;
1503 
1504  if (comment != "") {
1505  fCnew++;
1506 
1507  Double_t pav_gen_xgauche = BoxLeftX("general_comment");
1508  Double_t pav_gen_xdroite = BoxRightX("general_comment");
1509  Double_t pav_gen_ybas = BoxBottomY("general_comment");
1510  Double_t pav_gen_yhaut = BoxTopY("general_comment");
1511 
1512  title_g1 = new TPaveText(pav_gen_xgauche, pav_gen_ybas, pav_gen_xdroite, pav_gen_yhaut);
1513  fCnewRoot++;
1514 
1515  Option_t* opt_pav = "arc";
1516  title_g1->SetOption(opt_pav); // <= NE MARCHE PAS
1517 
1518  TString tit_gen = comment.Data();
1519 
1520  //<<<<<<< TEcnaParHistos.cc
1521  //sprintf( f_in, tit_gen.Data());
1522  //title_g1->AddText(f_in);
1523  //=======
1524  title_g1->AddText(tit_gen);
1525  //>>>>>>> 1.5
1526 
1527  // 1 = left adjusted, 2 = vertically centered
1528  Int_t cTextPaveAlign = 12;
1529  title_g1->SetTextAlign(cTextPaveAlign);
1530  // 10*10 = 10*(ID10 = Courier New) // 10*4 = 10*(ID4 = Arial)
1531  Int_t cTextPaveFont = 40;
1532  title_g1->SetTextFont(cTextPaveFont);
1533  // 0.95 = 95% of the pave size
1534  Float_t cTextPaveSize = 0.04;
1535  title_g1->SetTextSize(cTextPaveSize);
1536  Int_t cTextBorderSize = 0;
1537  title_g1->SetBorderSize(cTextBorderSize);
1538  Double_t cTextPaveRadius = 5.;
1539  title_g1->SetCornerRadius(cTextPaveRadius); // <= NE MARCHE PAS
1540  // Int_t cTextPaveShadCol = 0; title_g1->SetShadowColor(cTextPaveShadCol); // <= methode non reconnue
1541 
1542  fCdelete++;
1543  } else {
1544  title_g1 = new TPaveText(0, 0, 0, 0);
1545  title_g1 = nullptr;
1546  fCnewRoot++;
1547  }
1548  return title_g1;
1549 }
1550 
1551 TPaveText* TEcnaParHistos::SetPaveAnalysisRun(const TString& ana_type,
1552  const Int_t& nb_of_samples,
1553  const Int_t& run_number,
1554  const TString& run_type,
1555  const Int_t& first_evt,
1556  const Int_t& last_evt,
1557  const TString& nb_col) {
1558  // Analysis name + Nb of samples + run number comment
1559 
1560  char f_in[fgMaxCar];
1561 
1562  //...................... Pave Analysis name/run number (bottom_left_box)
1563  Double_t pav_bot_left_xgauche = BoxLeftX("bottom_left_box");
1564  Double_t pav_bot_left_xdroite = BoxRightX("bottom_left_box");
1565  Double_t pav_bot_left_ybas = BoxBottomY("bottom_left_box");
1566  Double_t pav_bot_left_yhaut = BoxTopY("bottom_left_box");
1567 
1568  TPaveText* com_bot_left =
1569  new TPaveText(pav_bot_left_xgauche, pav_bot_left_ybas, pav_bot_left_xdroite, pav_bot_left_yhaut);
1570  fCnewRoot++;
1571 
1572  // (1 = left adjusted, 2 = centered adjusted, 3 = left adjusted), 2 = vertically centered
1573  Int_t cTextPaveAlign = 12;
1574  com_bot_left->SetTextAlign(cTextPaveAlign);
1575  // 10*10 = 10*(ID10 = Courier New) // 10*4 = 10*(ID4 = Arial)
1576  Int_t cTextPaveFont = 100;
1577  com_bot_left->SetTextFont(cTextPaveFont);
1578  // 0.95 = 95% of the pave size
1579  Float_t cTextPaveSize = 0.025;
1580  com_bot_left->SetTextSize(cTextPaveSize);
1581  // Int_t cTextPaveShadCol = 0; com_bot_left->SetShadowColor(cTextPaveShadCol);
1582  Int_t cTextBorderSize = 1;
1583  com_bot_left->SetBorderSize(cTextBorderSize);
1584 
1585  if (nb_col == "TwoCol") {
1586  cTextPaveSize = 0.035;
1587  com_bot_left->SetTextSize(cTextPaveSize);
1588  snprintf(f_in, fgMaxCar, "Run: %d Samples: 1 - %d", run_number, nb_of_samples);
1589  com_bot_left->AddText(f_in);
1590  cTextPaveSize = 0.035;
1591  com_bot_left->SetTextSize(cTextPaveSize);
1592  snprintf(f_in, fgMaxCar, "Type: %-20s", run_type.Data());
1593  com_bot_left->AddText(f_in);
1594  snprintf(f_in, fgMaxCar, "Analysis: %-10s Evts range: %d - %d ", ana_type.Data(), first_evt, last_evt);
1595  com_bot_left->AddText(f_in);
1596  } else {
1597  cTextPaveSize = 0.0225;
1598  com_bot_left->SetTextSize(cTextPaveSize);
1599  snprintf(f_in, fgMaxCar, "Run: %d ", run_number);
1600  com_bot_left->AddText(f_in);
1601  snprintf(f_in, fgMaxCar, "Type: %-20s", run_type.Data());
1602  com_bot_left->AddText(f_in);
1603  snprintf(f_in, fgMaxCar, "Analysis: %-10s ", ana_type.Data());
1604  com_bot_left->AddText(f_in);
1605  Int_t un = 1;
1606  snprintf(f_in, fgMaxCar, "Samples: %d - %d", un, nb_of_samples);
1607  com_bot_left->AddText(f_in);
1608  snprintf(f_in, fgMaxCar, "Evts range: %d - %d", first_evt, last_evt);
1609  com_bot_left->AddText(f_in);
1610  }
1611 
1612  return com_bot_left;
1613 }
1614 
1615 TPaveText* TEcnaParHistos::SetPaveNbOfEvts(const Int_t& nb_of_evts,
1616  const TString& start_date,
1617  const TString& stop_date,
1618  const TString& nb_col) {
1619  // Number of events box
1620 
1621  char f_in[fgMaxCar];
1622 
1623  //...................... Pave number of events (bottom_right_box)
1624 
1625  Double_t pav_bot_right_xgauche = BoxLeftX("bottom_right_box");
1626  Double_t pav_bot_right_xdroite = BoxRightX("bottom_right_box");
1627  Double_t pav_bot_right_ybas = BoxBottomY("bottom_right_box");
1628  Double_t pav_bot_right_yhaut = BoxTopY("bottom_right_box");
1629  TPaveText* com_bot_right =
1630  new TPaveText(pav_bot_right_xgauche, pav_bot_right_ybas, pav_bot_right_xdroite, pav_bot_right_yhaut);
1631  fCnewRoot++;
1632 
1633  // 1 = left adjusted, 2 = vertically centered
1634  Int_t cTextPaveAlign = 12;
1635  com_bot_right->SetTextAlign(cTextPaveAlign);
1636  // 10*4 = 10*(ID4 = Arial) // 10*10 = 10*(ID10 = Courier New)
1637  Int_t cTextPaveFont = 100;
1638  com_bot_right->SetTextFont(cTextPaveFont);
1639  // 0.05 = 5% of the pave size
1640  Float_t cTextPaveSize = 0.025;
1641  com_bot_right->SetTextSize(cTextPaveSize);
1642  //Int_t cTextPaveShadCol = 0; com_bot_right->SetShadowColor(cTextPaveShadCol);
1643  Int_t cTextBorderSize = 1;
1644  com_bot_right->SetBorderSize(cTextBorderSize);
1645 
1646  if (nb_col == "TwoCol") {
1647  cTextPaveSize = 0.0325;
1648  com_bot_right->SetTextSize(cTextPaveSize);
1649  snprintf(f_in, fgMaxCar, "First evt: %s %8d events ", start_date.Data(), nb_of_evts);
1650  com_bot_right->AddText(f_in);
1651  snprintf(f_in, fgMaxCar, "Last evt: %s ", stop_date.Data());
1652  com_bot_right->AddText(f_in);
1653  } else {
1654  cTextPaveSize = 0.0225;
1655  com_bot_right->SetTextSize(cTextPaveSize);
1656  snprintf(f_in, fgMaxCar, "%d events", nb_of_evts);
1657  com_bot_right->AddText(f_in);
1658  snprintf(f_in, fgMaxCar, "First evt: %s ", start_date.Data());
1659  com_bot_right->AddText(f_in);
1660  snprintf(f_in, fgMaxCar, "Last evt: %s ", stop_date.Data());
1661  com_bot_right->AddText(f_in);
1662  }
1663 
1664  return com_bot_right;
1665 }
1666 
1667 TPaveText* TEcnaParHistos::SetPaveEvolNbOfEvtsAna(const TString& ana_type,
1668  const Int_t& nb_of_samples,
1669  const Int_t& first_req_evt,
1670  const Int_t& last_req_evt,
1671  const TString& HistoType) {
1672  // Analysis name + run number comment
1673 
1674  char f_in[fgMaxCar];
1675 
1676  //...................... Pave Analysis name/run number (bottom_left_box)
1677  Double_t pav_bot_left_xgauche = BoxLeftX("bottom_left_box");
1678  Double_t pav_bot_left_xdroite = BoxRightX("bottom_left_box");
1679  Double_t pav_bot_left_ybas = BoxBottomY("bottom_left_box");
1680  Double_t pav_bot_left_yhaut = BoxTopY("bottom_left_box");
1681 
1682  if (HistoType == "EvolProj") {
1683  pav_bot_left_xgauche = BoxLeftX("bottom_left_box_evol");
1684  pav_bot_left_xdroite = BoxRightX("bottom_left_box_evol");
1685  pav_bot_left_ybas = BoxBottomY("bottom_left_box_evol");
1686  pav_bot_left_yhaut = BoxTopY("bottom_left_box_evol");
1687  }
1688 
1689  TPaveText* com_bot_left =
1690  new TPaveText(pav_bot_left_xgauche, pav_bot_left_ybas, pav_bot_left_xdroite, pav_bot_left_yhaut);
1691  fCnewRoot++;
1692 
1693  // 1 = left adjusted, 2 = vertically centered
1694  Int_t cTextPaveAlign = 12;
1695  com_bot_left->SetTextAlign(cTextPaveAlign);
1696  // 10*10 = 10*(ID10 = Courier New) // 10*4 = 10*(ID4 = Arial)
1697  Int_t cTextPaveFont = 100;
1698  com_bot_left->SetTextFont(cTextPaveFont);
1699  // 0.95 = 95% of the pave size
1700  Float_t cTextPaveSize = 0.03;
1701  com_bot_left->SetTextSize(cTextPaveSize);
1702  Int_t cTextBorderSize = 1;
1703  com_bot_left->SetBorderSize(cTextBorderSize);
1704 
1705  TString analysis_name = ana_type.Data();
1706 
1707  snprintf(f_in, fgMaxCar, "Analysis: %s", analysis_name.Data());
1708  com_bot_left->AddText(f_in);
1709  snprintf(f_in, fgMaxCar, "Samples: 1 - %d", nb_of_samples);
1710  com_bot_left->AddText(f_in);
1711  snprintf(f_in, fgMaxCar, "Evts range: %d - %d ", first_req_evt, last_req_evt);
1712  com_bot_left->AddText(f_in);
1713 
1714  return com_bot_left;
1715 }
1716 
1717 TPaveText* TEcnaParHistos::SetPaveEvolRuns(const Int_t& start_evol_run,
1718  const TString& start_evol_date,
1719  const Int_t& stop_evol_run,
1720  const TString& stop_evol_date,
1721  const TString& opt_plot,
1722  const TString& HistoType) {
1723  // First and last run of the list of runs
1724 
1725  char f_in[fgMaxCar];
1726 
1727  //...................... Pave first and last runs (bottom_right_box)
1728  Double_t pav_border_xgauche = BoxLeftX("bottom_right_box_evol");
1729  Double_t pav_border_xdroite = BoxRightX("bottom_right_box_evol");
1730  Double_t pav_border_ybas = BoxBottomY("bottom_right_box_evol");
1731  Double_t pav_border_yhaut = BoxTopY("bottom_right_box_evol");
1732 
1733  if (opt_plot == "SAME n") {
1734  pav_border_xgauche = BoxLeftX("bottom_right_box_evpr");
1735  pav_border_xdroite = BoxRightX("bottom_right_box_evpr");
1736  pav_border_ybas = BoxBottomY("top_right_box_EB");
1737  pav_border_yhaut = BoxTopY("top_right_box_EB");
1738  }
1739 
1740  TPaveText* pav_evol_runs = new TPaveText(pav_border_xgauche, pav_border_ybas, pav_border_xdroite, pav_border_yhaut);
1741  fCnewRoot++;
1742 
1743  // 1 = left adjusted, 2 = vertically centered
1744  Int_t cTextPaveAlign = 12;
1745  pav_evol_runs->SetTextAlign(cTextPaveAlign);
1746  // 10*4 = 10*(ID4 = Courier helvetica-medium-r-normal = Arial)
1747  // 10*10 = 10*(ID10 = Courier bold-r-normal = Courier New)
1748  Int_t cTextPaveFont = 100;
1749  pav_evol_runs->SetTextFont(cTextPaveFont);
1750  // 0.03 = 3% of the pave height
1751  Float_t cTextPaveSize = 0.025;
1752  if (HistoType == "Evol" || HistoType == "EvolProj") {
1753  cTextPaveSize = 0.0225;
1754  }
1755 
1756  pav_evol_runs->SetTextSize(cTextPaveSize);
1757  Int_t cTextBorderSize = 1;
1758  pav_evol_runs->SetBorderSize(cTextBorderSize);
1759 
1760  if (!((HistoType == "Evol" && opt_plot == "SAME n") || (HistoType == "EvolProj" && opt_plot == "SAME n"))) {
1761  snprintf(f_in, fgMaxCar, "First run: %d", start_evol_run);
1762  pav_evol_runs->AddText(f_in);
1763  snprintf(f_in, fgMaxCar, "(%s) ", start_evol_date.Data());
1764  pav_evol_runs->AddText(f_in);
1765  snprintf(f_in, fgMaxCar, "Last run: %d", stop_evol_run);
1766  pav_evol_runs->AddText(f_in);
1767  snprintf(f_in, fgMaxCar, "(%s) ", stop_evol_date.Data());
1768  pav_evol_runs->AddText(f_in);
1769  }
1770 
1771  if ((HistoType == "Evol" && opt_plot == "SAME n") || (HistoType == "EvolProj" && opt_plot == "SAME n")) {
1772  snprintf(f_in, fgMaxCar, "First run: %d (%s) ", start_evol_run, start_evol_date.Data());
1773  pav_evol_runs->AddText(f_in);
1774  snprintf(f_in, fgMaxCar, "Last run: %d (%s)", stop_evol_run, stop_evol_date.Data());
1775  pav_evol_runs->AddText(f_in);
1776  }
1777 
1778  return pav_evol_runs;
1779 }
1780 
1781 TPaveText* TEcnaParHistos::SetOptionSamePaveBorder(const TString& chopt, const TString& HistoType) {
1782  // Pave for plots with option SAME and SAME n.
1783  // Gives just the size/border and return the pointer to the Pave. No text.
1784  // The Pave text is drawn in TEcnaHistos.cc
1785 
1786  //.................................. DEFAULT OPTION: "several"
1787 
1788  Double_t pav_left_xgauche = BoxLeftX("several_plots_box");
1789  Double_t pav_left_xdroite = BoxRightX("several_plots_box");
1790  Double_t pav_left_ybas = BoxBottomY("several_plots_box");
1791  Double_t pav_left_yhaut = BoxTopY("several_plots_box");
1792 
1793  if (chopt == "sevevol") {
1794  pav_left_xgauche = BoxLeftX("several_evol_box");
1795  pav_left_xdroite = BoxRightX("several_evol_box");
1796  pav_left_ybas = BoxBottomY("several_evol_box");
1797  pav_left_yhaut = BoxTopY("several_evol_box");
1798 
1799  if (HistoType == "EvolProj") {
1800  pav_left_xgauche = BoxLeftX("several_evpr_box");
1801  pav_left_xdroite = BoxRightX("several_evpr_box");
1802  pav_left_ybas = BoxBottomY("several_evpr_box");
1803  pav_left_yhaut = BoxTopY("several_evpr_box");
1804  }
1805  }
1806 
1807  TPaveText* com_several = new TPaveText(pav_left_xgauche, pav_left_ybas, pav_left_xdroite, pav_left_yhaut);
1808  fCnewRoot++;
1809 
1810  return com_several;
1811 }
1812 //.... end of SetOptionSamePaveBorder
1813 //===========================================================================
1814 //
1815 // SetPaveSM, SetPaveTower, SetPaveTowersXY,
1816 // SetPaveEBCrystal, SetPaveEBCrystalSample,
1817 // SetPaveLVRB, SetColorsForNumbers
1818 //
1819 //===========================================================================
1821  char f_in[fgMaxCar];
1822  //.................................. DEFAULT OPTION: "standard"
1823  Double_t pav_top_left_xgauche = BoxLeftX("top_left_box_SM");
1824  Double_t pav_top_left_xdroite = BoxRightX("top_left_box_SM");
1825  Double_t pav_top_left_ybas = BoxBottomY("top_left_box_SM");
1826  Double_t pav_top_left_yhaut = BoxTopY("top_left_box_SM");
1827 
1828  TPaveText* com_top_left =
1829  new TPaveText(pav_top_left_xgauche, pav_top_left_ybas, pav_top_left_xdroite, pav_top_left_yhaut);
1830  fCnewRoot++;
1831 
1832  // 1 = left adjusted, 2 = vertically centered
1833  Int_t cTextPaveAlign = 12;
1834  com_top_left->SetTextAlign(cTextPaveAlign);
1835  // 10*10 = 10*(ID10 = Courier New)
1836  Int_t cTextPaveFont = 100;
1837  com_top_left->SetTextFont(cTextPaveFont);
1838  // 0.95 = 95% of the pave size
1839  Float_t cTextPaveSize = 0.04;
1840  com_top_left->SetTextSize(cTextPaveSize);
1841  Int_t cTextBorderSize = 1;
1842  com_top_left->SetBorderSize(cTextBorderSize);
1843 
1844  if (fFlagSubDet == "EB") {
1845  snprintf(f_in, fgMaxCar, "EB");
1846  }
1847  if (fFlagSubDet == "EE") {
1848  snprintf(f_in, fgMaxCar, "EE");
1849  }
1850 
1851  com_top_left->AddText(f_in);
1852 
1853  return com_top_left;
1854 }
1855 
1856 TPaveText* TEcnaParHistos::SetPaveSM(const TString& chopt, const Int_t& SM_number, const TString& EB_type) {
1857  // Pave for Super-module plots
1858 
1859  char f_in[fgMaxCar];
1860 
1861  //.................................. DEFAULT OPTION: "standard"
1862  Double_t pav_top_left_xgauche = BoxLeftX("top_left_box_SM");
1863  Double_t pav_top_left_xdroite = BoxRightX("top_left_box_SM");
1864  Double_t pav_top_left_ybas = BoxBottomY("top_left_box_SM");
1865  Double_t pav_top_left_yhaut = BoxTopY("top_left_box_SM");
1866 
1867  if (chopt == "standard" || (chopt == "standGH" && EB_type == "EB-")) {
1868  pav_top_left_xgauche = BoxLeftX("top_left_box_EB");
1869  pav_top_left_xdroite = BoxRightX("top_left_box_EB");
1870  pav_top_left_ybas = BoxBottomY("top_left_box_EB");
1871  pav_top_left_yhaut = BoxTopY("top_left_box_EB");
1872  }
1873 
1874  if (chopt == "standSM" || chopt == "standStex" || (chopt == "standGH" && EB_type == "EB+")) {
1875  pav_top_left_xgauche = BoxLeftX("top_left_box_SM");
1876  pav_top_left_xdroite = BoxRightX("top_left_box_SM");
1877  pav_top_left_ybas = BoxBottomY("top_left_box_SM");
1878  pav_top_left_yhaut = BoxTopY("top_left_box_SM");
1879  }
1880 
1881  if (chopt == "several") {
1882  pav_top_left_xgauche = BoxLeftX("several_plots_box");
1883  pav_top_left_xdroite = BoxRightX("several_plots_box");
1884  pav_top_left_ybas = BoxBottomY("several_plots_box");
1885  pav_top_left_yhaut = BoxTopY("several_plots_box");
1886  }
1887 
1888  if (chopt == "sevevol") {
1889  pav_top_left_xgauche = BoxLeftX("several_evol_box");
1890  pav_top_left_xdroite = BoxRightX("several_evol_box");
1891  pav_top_left_ybas = BoxBottomY("several_evol_box");
1892  pav_top_left_yhaut = BoxTopY("several_evol_box");
1893  }
1894 
1895  TPaveText* com_top_left =
1896  new TPaveText(pav_top_left_xgauche, pav_top_left_ybas, pav_top_left_xdroite, pav_top_left_yhaut);
1897  fCnewRoot++;
1898 
1899  // 1 = left adjusted, 2 = vertically centered
1900  Int_t cTextPaveAlign = 12;
1901  com_top_left->SetTextAlign(cTextPaveAlign);
1902  // 10*10 = 10*(ID10 = Courier New)
1903  Int_t cTextPaveFont = 100;
1904  com_top_left->SetTextFont(cTextPaveFont);
1905  // 0.95 = 95% of the pave size
1906  Float_t cTextPaveSize = 0.04;
1907  com_top_left->SetTextSize(cTextPaveSize);
1908  Int_t cTextBorderSize = 1;
1909  com_top_left->SetBorderSize(cTextBorderSize);
1910 
1911  if (chopt == "standard" || chopt == "standSM" || chopt == "standStex" || chopt == "standGH") {
1912  Int_t sm_nb = SM_number;
1913  if (EB_type == "EB+") {
1914  snprintf(f_in, fgMaxCar, "EB+%d", sm_nb);
1915  }
1916  if (EB_type == "EB-") {
1917  sm_nb = -SM_number + fEcal->MaxSMInEB() / 2;
1918  snprintf(f_in, fgMaxCar, "EB%d (SM%d)", sm_nb, SM_number);
1919  }
1920  com_top_left->AddText(f_in);
1921  }
1922 
1923  return com_top_left;
1924 }
1925 
1926 TPaveText* TEcnaParHistos::SetPaveTower(const Int_t& SMtower_X) {
1927  // Tower comment
1928 
1929  char f_in[fgMaxCar];
1930  //...................... Pave tower/crystal(channel)/sample (top_right_box)
1931  Double_t pav_top_mid_xgauche = BoxLeftX("top_mid_box_EB");
1932  Double_t pav_top_mid_xdroite = BoxRightX("top_mid_box_EB");
1933  Double_t pav_top_mid_ybas = BoxBottomY("top_mid_box_EB");
1934  Double_t pav_top_mid_yhaut = BoxTopY("top_mid_box_EB");
1935  TPaveText* com_top_mid = new TPaveText(pav_top_mid_xgauche, pav_top_mid_ybas, pav_top_mid_xdroite, pav_top_mid_yhaut);
1936  fCnewRoot++;
1937 
1938  // 1 = left adjusted, 2 = vertically centered
1939  Int_t cTextPaveAlign = 12;
1940  com_top_mid->SetTextAlign(cTextPaveAlign);
1941  // 10*10 = 10*(ID10 = Courier New)
1942  Int_t cTextPaveFont = 100;
1943  com_top_mid->SetTextFont(cTextPaveFont);
1944  // 0.95 = 95% of the pave size
1945  Float_t cTextPaveSize = 0.03;
1946  com_top_mid->SetTextSize(cTextPaveSize);
1947  Int_t cTextBorderSize = 1;
1948  com_top_mid->SetBorderSize(cTextBorderSize);
1949 
1950  snprintf(f_in, fgMaxCar, " Tower: %d ", SMtower_X);
1951  com_top_mid->AddText(f_in);
1952 
1953  return com_top_mid;
1954 }
1955 
1956 TPaveText* TEcnaParHistos::SetPaveTowersXY(const Int_t& SMtower_X, const Int_t& SMtower_Y) {
1957  // Towers X and Y for (TowEcha,TowEcha) cov or cor matrix
1958 
1959  char f_in[fgMaxCar];
1960  //...................... Pave tower/TowEcha(channel)/sample (top_right_box)
1961  Double_t pav_top_mid_xgauche = BoxLeftX("top_mid_box_EB");
1962  Double_t pav_top_mid_xdroite = BoxRightX("top_mid_box_EB");
1963  Double_t pav_top_mid_ybas = BoxBottomY("top_mid_box_EB");
1964  Double_t pav_top_mid_yhaut = BoxTopY("top_mid_box_EB");
1965  TPaveText* com_top_mid = new TPaveText(pav_top_mid_xgauche, pav_top_mid_ybas, pav_top_mid_xdroite, pav_top_mid_yhaut);
1966  fCnewRoot++;
1967 
1968  // 1 = left adjusted, 2 = vertically centered
1969  Int_t cTextPaveAlign = 12;
1970  com_top_mid->SetTextAlign(cTextPaveAlign);
1971  // 10*10 = 10*(ID10 = Courier New)
1972  Int_t cTextPaveFont = 100;
1973  com_top_mid->SetTextFont(cTextPaveFont);
1974  // 0.95 = 95% of the pave size
1975  Float_t cTextPaveSize = 0.03;
1976  com_top_mid->SetTextSize(cTextPaveSize);
1977  Int_t cTextBorderSize = 1;
1978  com_top_mid->SetBorderSize(cTextBorderSize);
1979 
1980  snprintf(f_in, fgMaxCar, " Tower X: %d ", SMtower_X);
1981  com_top_mid->AddText(f_in);
1982  snprintf(f_in, fgMaxCar, " Tower Y: %d ", SMtower_Y);
1983  com_top_mid->AddText(f_in);
1984 
1985  return com_top_mid;
1986 }
1987 
1988 TPaveText* TEcnaParHistos::SetPaveCrystal(const Int_t& StexCrys, const Int_t& StexStinA, const Int_t& StinEcha) {
1989  Int_t arg_AlreadyRead = 0;
1990  Int_t flag_all_samples = 0;
1991  return SetPaveCrystal(StexCrys, StexStinA, StinEcha, arg_AlreadyRead, flag_all_samples);
1992 }
1993 
1994 TPaveText* TEcnaParHistos::SetPaveCrystal(const Int_t& StexCrys,
1995  const Int_t& StexStinA,
1996  const Int_t& StinEcha,
1997  const Int_t& arg_AlreadyRead,
1998  const Int_t& flag_all_samples) {
1999  // Tower + StinEcha comment. StexCrys range: [1,max]
2000 
2001  char f_in[fgMaxCar];
2002  //...................... Pave tower/StinEcha(channel)/sample (top_right_box)
2003 
2004  Double_t pav_top_right_xgauche = BoxLeftX("top_right_box_EB");
2005  Double_t pav_top_right_xdroite = BoxRightX("top_right_box_EB");
2006  Double_t pav_top_right_ybas = BoxBottomY("top_right_box_EB");
2007  Double_t pav_top_right_yhaut = BoxTopY("top_right_box_EB");
2008  if (fFlagSubDet == "EE") {
2009  pav_top_right_xgauche = BoxLeftX("top_right_box_EE");
2010  pav_top_right_xdroite = BoxRightX("top_right_box_EE");
2011  pav_top_right_ybas = BoxBottomY("top_right_box_EE");
2012  pav_top_right_yhaut = BoxTopY("top_right_box_EE");
2013  }
2014 
2015  TPaveText* com_top_right =
2016  new TPaveText(pav_top_right_xgauche, pav_top_right_ybas, pav_top_right_xdroite, pav_top_right_yhaut);
2017  fCnewRoot++;
2018 
2019  // 1 = left adjusted, 2 = vertically centered
2020  Int_t cTextPaveAlign = 12;
2021  com_top_right->SetTextAlign(cTextPaveAlign);
2022  // 10*10 = 10*(ID10 = Courier New)
2023  Int_t cTextPaveFont = 100;
2024  com_top_right->SetTextFont(cTextPaveFont);
2025  // 0.95 = 95% of the pave size
2026  Float_t cTextPaveSize = 0.03;
2027  com_top_right->SetTextSize(cTextPaveSize);
2028  Int_t cTextBorderSize = 1;
2029  com_top_right->SetBorderSize(cTextBorderSize);
2030 
2031  if (fFlagSubDet == "EB") {
2032  if (arg_AlreadyRead == 0 || (arg_AlreadyRead == 1 && flag_all_samples == 0)) {
2033  snprintf(f_in, fgMaxCar, "Channel: %d ", StinEcha);
2034  } // EB => range = [0,24]
2035  if (arg_AlreadyRead == 1 && flag_all_samples == 1) {
2036  snprintf(f_in, fgMaxCar, "Channel: 0 to %d", fEcal->MaxCrysInStin() - 1);
2037  }
2038  com_top_right->AddText(f_in);
2039  if (arg_AlreadyRead == 0 || (arg_AlreadyRead == 1 && flag_all_samples == 0)) {
2040  snprintf(f_in, fgMaxCar, "Crystal in SM: %d ", StexCrys);
2041  com_top_right->AddText(f_in);
2042  }
2043  }
2044 
2045  if (fFlagSubDet == "EE") {
2046  Int_t StinEchap = StinEcha + 1;
2047  if (arg_AlreadyRead == 0 || (arg_AlreadyRead == 1 && flag_all_samples == 0)) {
2048  snprintf(f_in, fgMaxCar, "Xtal in SC: %d ", StinEchap);
2049  } // EE => range = [1,25]
2050  if (arg_AlreadyRead == 1 && flag_all_samples == 1) {
2051  snprintf(f_in, fgMaxCar, "Xtal in SC: 1 to %d", fEcal->MaxCrysInStin());
2052  }
2053  com_top_right->AddText(f_in);
2054  if (arg_AlreadyRead == 0 || (arg_AlreadyRead == 1 && flag_all_samples == 0)) {
2055  Int_t IX_Dee_crys = StexCrys / fEcal->MaxCrysIYInDee() + 1;
2056  Int_t IY_Dee_crys = StexCrys % fEcal->MaxCrysIYInDee();
2057  if (IY_Dee_crys == 0) {
2058  IX_Dee_crys--;
2059  IY_Dee_crys = fEcal->MaxCrysIYInDee();
2060  }
2061  snprintf(f_in, fgMaxCar, "(IX,IY)[Xtal]=(%d,%d)", IX_Dee_crys, IY_Dee_crys);
2062  com_top_right->AddText(f_in);
2063  }
2064  }
2065 
2066  return com_top_right;
2067 }
2068 
2069 TPaveText* TEcnaParHistos::SetPaveCrystalSample(const Int_t& StexCrys,
2070  const Int_t& StexStinA,
2071  const Int_t& StinEcha,
2072  const Int_t& iSample) {
2073  // Tower + StinEcha + sample comment
2074 
2075  char f_in[fgMaxCar];
2076  //...................... Pave tower/StinEcha(channel)/sample (top_right_box)
2077  Double_t pav_top_right_xgauche = BoxLeftX("top_right_box_EB");
2078  Double_t pav_top_right_xdroite = BoxRightX("top_right_box_EB");
2079  Double_t pav_top_right_ybas = BoxBottomY("top_right_box_EB");
2080  Double_t pav_top_right_yhaut = BoxTopY("top_right_box_EB");
2081  if (fFlagSubDet == "EE") {
2082  pav_top_right_xgauche = BoxLeftX("top_right_box_EE");
2083  pav_top_right_xdroite = BoxRightX("top_right_box_EE");
2084  pav_top_right_ybas = BoxBottomY("top_right_box_EE");
2085  pav_top_right_yhaut = BoxTopY("top_right_box_EE");
2086  }
2087 
2088  TPaveText* com_top_right =
2089  new TPaveText(pav_top_right_xgauche, pav_top_right_ybas, pav_top_right_xdroite, pav_top_right_yhaut);
2090  fCnewRoot++;
2091 
2092  // 1 = left adjusted, 2 = vertically centered
2093  Int_t cTextPaveAlign = 12;
2094  com_top_right->SetTextAlign(cTextPaveAlign);
2095  // 10*10 = 10*(ID10 = Courier New)
2096  Int_t cTextPaveFont = 100;
2097  com_top_right->SetTextFont(cTextPaveFont);
2098  // 0.95 = 95% of the pave size
2099  Float_t cTextPaveSize = 0.03;
2100  com_top_right->SetTextSize(cTextPaveSize);
2101  Int_t cTextBorderSize = 1;
2102  com_top_right->SetBorderSize(cTextBorderSize);
2103 
2104  if (fFlagSubDet == "EB") {
2105  snprintf(f_in, fgMaxCar, " Channel: %d ", StinEcha);
2106  com_top_right->AddText(f_in);
2107  snprintf(f_in, fgMaxCar, " Crystal in SM: %d ", StexCrys);
2108  com_top_right->AddText(f_in);
2109  }
2110 
2111  if (fFlagSubDet == "EE") {
2112  Int_t StinEchap = StinEcha + 1;
2113  snprintf(f_in, fgMaxCar, " Channel: %d ", StinEchap); // EE => range = [1,25]
2114  com_top_right->AddText(f_in);
2115  Int_t IX_Dee_crys = StexCrys / fEcal->MaxCrysIYInDee() + 1;
2116  Int_t IY_Dee_crys = StexCrys % fEcal->MaxCrysIYInDee();
2117  if (IY_Dee_crys == 0) {
2118  IX_Dee_crys--;
2119  IY_Dee_crys = fEcal->MaxCrysIYInDee();
2120  }
2121  snprintf(f_in, fgMaxCar, "(IX,IY)[Xtal]=(%d,%d)", IX_Dee_crys, IY_Dee_crys);
2122  com_top_right->AddText(f_in);
2123  }
2124 
2125  Int_t iSample_p = iSample + 1;
2126  snprintf(f_in, fgMaxCar, " Sample: %d ", iSample_p);
2127  com_top_right->AddText(f_in);
2128 
2129  return com_top_right;
2130 }
2131 
2132 TPaveText* TEcnaParHistos::SetPaveLVRB(const Int_t& SMNumber, const Int_t& SMtower) {
2133  // LVRB at the top or at the bottom comment
2134 
2135  //....................... GRAND pave "LVRB"
2136  Double_t pav_bot_xgauche = BoxLeftX("bottom_left_box");
2137  Double_t pav_bot_xdroite = BoxRightX("bottom_right_box");
2138  Double_t pav_bot_ybas = BoxBottomY("bottom_left_box");
2139  Double_t pav_bot_yhaut = BoxTopY("bottom_left_box");
2140  TPaveText* com_bot_mid = new TPaveText(pav_bot_xgauche, pav_bot_ybas, pav_bot_xdroite, pav_bot_yhaut);
2141  fCnewRoot++;
2142 
2143  Color_t couleur_noir = ColorDefinition("noir");
2144  Color_t couleur_rouge = SetColorsForNumbers("lvrb_top");
2145  Color_t couleur_bleu_fonce = SetColorsForNumbers("lvrb_bottom");
2146 
2147  if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
2148  TText* t1 = com_bot_mid->AddText(" <= IP (#eta = 0) (#eta = +85) => ");
2149  t1->SetTextColor(couleur_noir);
2150  }
2151 
2152  if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
2153  TText* t2 = com_bot_mid->AddText(" <= (#eta = -85) IP (#eta = 0) => ");
2154  t2->SetTextColor(couleur_noir);
2155  }
2156 
2157  if (fEcalNumbering->GetTowerLvrbType(SMtower) == "top") {
2158  TText* t3 = nullptr;
2159  if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
2160  t3 = com_bot_mid->AddText(" <=== LVRB ");
2161  }
2162  if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
2163  t3 = com_bot_mid->AddText(" LVRB ===> ");
2164  }
2165  t3->SetTextColor(couleur_rouge);
2166  }
2167 
2168  if (fEcalNumbering->GetTowerLvrbType(SMtower) == "bottom") {
2169  TText* t4 = nullptr;
2170  if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
2171  t4 = com_bot_mid->AddText(" LVRB ===> ");
2172  }
2173  if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
2174  t4 = com_bot_mid->AddText(" <=== LVRB ");
2175  }
2176  t4->SetTextColor(couleur_bleu_fonce);
2177  }
2178  return com_bot_mid;
2179 
2180 } // end of SetPaveLVRB
2181 
2182 Color_t TEcnaParHistos::SetColorsForNumbers(const TString& chtype_number) {
2183  //Set color of the numbers for SuperModule- or Tower- numbering plots
2184 
2185  Color_t couleur = ColorDefinition("noir"); // default = "noir"
2186 
2187  if (chtype_number == "crystal") {
2188  couleur = ColorDefinition("noir");
2189  }
2190  if (chtype_number == "lvrb_top") {
2191  couleur = ColorDefinition("rouge");
2192  }
2193  if (chtype_number == "lvrb_bottom") {
2194  couleur = ColorDefinition("bleu_fonce");
2195  }
2196 
2197  return couleur;
2198 }
2199 
2200 //===========================================================================
2201 //
2202 // SetPaveDee, SetPaveSC, SetPaveSCsXY,
2203 // SetPaveEECrystal
2204 //
2205 //===========================================================================
2206 
2207 TPaveText* TEcnaParHistos::SetPaveDee(const TString& chopt, const Int_t& DeeNumber, const TString& DeeType) {
2208  // Dee pav. Called only once.
2209 
2210  char f_in[fgMaxCar];
2211 
2212  //.................................. DEFAULT OPTION: "standard"
2213  Double_t pav_top_left_xgauche = BoxLeftX("top_left_box_EE");
2214  Double_t pav_top_left_xdroite = BoxRightX("top_left_box_EE");
2215  Double_t pav_top_left_ybas = BoxBottomY("top_left_box_EE");
2216  Double_t pav_top_left_yhaut = BoxTopY("top_left_box_EE");
2217 
2218  if (chopt == "standard" || chopt == "standGH") {
2219  pav_top_left_xgauche = BoxLeftX("top_left_box_EE");
2220  pav_top_left_xdroite = BoxRightX("top_left_box_EE");
2221  pav_top_left_ybas = BoxBottomY("top_left_box_EE");
2222  pav_top_left_yhaut = BoxTopY("top_left_box_EE");
2223  }
2224 
2225  if (chopt == "standDee" || chopt == "standStex") {
2226  pav_top_left_xgauche = BoxLeftX("top_left_box_Dee");
2227  pav_top_left_xdroite = BoxRightX("top_left_box_Dee");
2228  pav_top_left_ybas = BoxBottomY("top_left_box_Dee");
2229  pav_top_left_yhaut = BoxTopY("top_left_box_Dee");
2230  }
2231 
2232  if (chopt == "several") {
2233  pav_top_left_xgauche = BoxLeftX("several_plots_box");
2234  pav_top_left_xdroite = BoxRightX("several_plots_box");
2235  pav_top_left_ybas = BoxBottomY("several_plots_box");
2236  pav_top_left_yhaut = BoxTopY("several_plots_box");
2237  }
2238  if (chopt == "sevevol") {
2239  pav_top_left_xgauche = BoxLeftX("several_evol_box");
2240  pav_top_left_xdroite = BoxRightX("several_evol_box");
2241  pav_top_left_ybas = BoxBottomY("several_evol_box");
2242  pav_top_left_yhaut = BoxTopY("several_evol_box");
2243  }
2244 
2245  TPaveText* com_top_left =
2246  new TPaveText(pav_top_left_xgauche, pav_top_left_ybas, pav_top_left_xdroite, pav_top_left_yhaut);
2247  fCnewRoot++;
2248 
2249  // 1 = left adjusted, 2 = vertically centered
2250  Int_t cTextPaveAlign = 12;
2251  com_top_left->SetTextAlign(cTextPaveAlign);
2252  // 10*10 = 10*(ID10 = Courier New)
2253  Int_t cTextPaveFont = 100;
2254  com_top_left->SetTextFont(cTextPaveFont);
2255  // 0.95 = 95% of the pave size
2256  Float_t cTextPaveSize = 0.04;
2257  com_top_left->SetTextSize(cTextPaveSize);
2258  Int_t cTextBorderSize = 1;
2259  com_top_left->SetBorderSize(cTextBorderSize);
2260 
2261  if (chopt == "standard") {
2262  snprintf(f_in, fgMaxCar, " Dee: %d", DeeNumber);
2263  com_top_left->AddText(f_in);
2264  snprintf(f_in, fgMaxCar, " (%s)", DeeType.Data());
2265  com_top_left->AddText(f_in);
2266  }
2267 
2268  if (chopt == "standDee" || chopt == "standStex" || chopt == "standGH") {
2269  snprintf(f_in, fgMaxCar, " Dee: %d (%s) ", DeeNumber, DeeType.Data());
2270  com_top_left->AddText(f_in);
2271  }
2272 
2273  return com_top_left;
2274 }
2275 
2276 TPaveText* TEcnaParHistos::SetPaveSC(const Int_t& DeeSC_X, const Int_t& DeeNumber) {
2277  // SC comment
2278 
2279  char f_in[fgMaxCar];
2280  //...................... Pave SC/crystal(channel)/sample (top_right_box)
2281  Double_t pav_top_mid_xgauche = BoxLeftX("top_mid_box_EE");
2282  Double_t pav_top_mid_xdroite = BoxRightX("top_mid_box_EE");
2283  Double_t pav_top_mid_ybas = BoxBottomY("top_mid_box_EE");
2284  Double_t pav_top_mid_yhaut = BoxTopY("top_mid_box_EE");
2285  TPaveText* com_top_mid = new TPaveText(pav_top_mid_xgauche, pav_top_mid_ybas, pav_top_mid_xdroite, pav_top_mid_yhaut);
2286  fCnewRoot++;
2287 
2288  // 1 = left adjusted, 2 = vertically centered
2289  Int_t cTextPaveAlign = 12;
2290  com_top_mid->SetTextAlign(cTextPaveAlign);
2291  // 10*10 = 10*(ID10 = Courier New)
2292  Int_t cTextPaveFont = 100;
2293  com_top_mid->SetTextFont(cTextPaveFont);
2294  // 0.95 = 95% of the pave size
2295  Float_t cTextPaveSize = 0.03;
2296  com_top_mid->SetTextSize(cTextPaveSize);
2297  Int_t cTextBorderSize = 1;
2298  com_top_mid->SetBorderSize(cTextBorderSize);
2299 
2300  snprintf(f_in,
2301  fgMaxCar,
2302  "Sector: S%d, SC: %d",
2303  fEcalNumbering->GetDSFrom1DeeSCEcna(DeeNumber, DeeSC_X),
2304  fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, DeeSC_X));
2305  com_top_mid->AddText(f_in);
2306  snprintf(f_in, fgMaxCar, "SC for const.: %d", fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(DeeNumber, DeeSC_X));
2307  com_top_mid->AddText(f_in);
2308  snprintf(f_in, fgMaxCar, "Quadrant: %s", fEcalNumbering->GetSCQuadFrom1DeeSCEcna(DeeSC_X).Data());
2309  com_top_mid->AddText(f_in);
2310 
2311  return com_top_mid;
2312 }
2313 
2314 TPaveText* TEcnaParHistos::SetPaveSCsXY(const Int_t& DeeSC_X, const Int_t& DeeSC_Y) {
2315  // SCs X and Y for (SCEcha,SCEcha) cov or cor matrix
2316 
2317  char f_in[fgMaxCar];
2318  //...................... Pave SC/SCEcha(channel)/sample (top_right_box)
2319  Double_t pav_top_mid_xgauche = BoxLeftX("top_mid_box_EE");
2320  Double_t pav_top_mid_xdroite = BoxRightX("top_mid_box_EE");
2321  Double_t pav_top_mid_ybas = BoxBottomY("top_mid_box_EE");
2322  Double_t pav_top_mid_yhaut = BoxTopY("top_mid_box_EE");
2323  TPaveText* com_top_mid = new TPaveText(pav_top_mid_xgauche, pav_top_mid_ybas, pav_top_mid_xdroite, pav_top_mid_yhaut);
2324  fCnewRoot++;
2325 
2326  // 1 = left adjusted, 2 = vertically centered
2327  Int_t cTextPaveAlign = 12;
2328  com_top_mid->SetTextAlign(cTextPaveAlign);
2329  // 10*10 = 10*(ID10 = Courier New)
2330  Int_t cTextPaveFont = 100;
2331  com_top_mid->SetTextFont(cTextPaveFont);
2332  // 0.95 = 95% of the pave size
2333  Float_t cTextPaveSize = 0.03;
2334  com_top_mid->SetTextSize(cTextPaveSize);
2335  Int_t cTextBorderSize = 1;
2336  com_top_mid->SetBorderSize(cTextBorderSize);
2337 
2338  snprintf(f_in, fgMaxCar, "SC X: %d", DeeSC_X);
2339  com_top_mid->AddText(f_in);
2340  snprintf(f_in, fgMaxCar, "SC Y: %d", DeeSC_Y);
2341  com_top_mid->AddText(f_in);
2342 
2343  return com_top_mid;
2344 }
2345 
2346 TPaveText* TEcnaParHistos::SetPaveCxyz(const Int_t& DeeNumber) {
2347  // Cxyz at the top or at the bottom comment
2348 
2349  //....................... GRAND pave "Cxyz"
2350  Double_t pav_bot_xgauche = BoxRightX("bottom_mid_box");
2351  Double_t pav_bot_xdroite = BoxLeftX("bottom_mid_box");
2352  Double_t pav_bot_ybas = BoxBottomY("bottom_left_box");
2353  Double_t pav_bot_yhaut = BoxTopY("bottom_left_box");
2354  TPaveText* com_bot_mid = new TPaveText(pav_bot_xgauche, pav_bot_ybas, pav_bot_xdroite, pav_bot_yhaut);
2355  fCnewRoot++;
2356 
2357  //com_bot_mid->SetOption("arc");
2358  //com_bot_mid->SetCornerRadius((Double_t)0.5);
2359  //Int_t cTextPaveFont = 100; com_bot_mid->SetTextFont(cTextPaveFont);
2360 
2361  com_bot_mid->SetTextSize(0.0325);
2362  //........................................... (SetPaveCxyz)
2363  if (DeeNumber == 1) {
2364  com_bot_mid->AddText(" y ");
2365  com_bot_mid->AddText(" #uparrow ");
2366  com_bot_mid->AddText(" (Near) x #leftarrow #otimes z (Far) ");
2367  }
2368  if (DeeNumber == 2) {
2369  com_bot_mid->AddText(" y ");
2370  com_bot_mid->AddText(" #uparrow ");
2371  com_bot_mid->AddText(" (Near) x #leftarrow #otimes z (Far) ");
2372  }
2373  if (DeeNumber == 3) {
2374  com_bot_mid->AddText(" y ");
2375  com_bot_mid->AddText(" #uparrow ");
2376  com_bot_mid->AddText(" (Far) z (#bullet) #rightarrow x (Near) ");
2377  }
2378  if (DeeNumber == 4) {
2379  com_bot_mid->AddText(" y ");
2380  com_bot_mid->AddText(" #uparrow ");
2381  com_bot_mid->AddText(" (Far) z (#bullet) #rightarrow x (Near) ");
2382  }
2383 
2384  // com_bot_mid->AddText(" (from IP) " );
2385  return com_bot_mid;
2386 }
2387 //===========================================================================
2388 //
2389 // SetPaveStex, SetPaveStin
2390 //
2391 //===========================================================================
2392 
2393 TPaveText* TEcnaParHistos::SetPaveStex(const TString& chopt, const Int_t& StexNumber) {
2394  TPaveText* pav_text = nullptr;
2395 
2396  if (StexNumber > 0) {
2397  if (fFlagSubDet == "EB") {
2398  TString EB_type = fEcalNumbering->GetSMHalfBarrel(StexNumber);
2399  pav_text = SetPaveSM(chopt, StexNumber, EB_type);
2400  }
2401  if (fFlagSubDet == "EE") {
2402  TString dee_type = fEcalNumbering->GetEEDeeType(StexNumber);
2403  pav_text = SetPaveDee(chopt, StexNumber, dee_type);
2404  }
2405  }
2406  if (StexNumber == 0) {
2407  pav_text = SetPaveStas();
2408  }
2409 
2410  return pav_text;
2411 }
2412 
2413 TPaveText* TEcnaParHistos::SetPaveStin(const Int_t& StinNumber, const Int_t& StexNumber) {
2414  TPaveText* pav_text = nullptr;
2415  if (fFlagSubDet == "EB") {
2416  pav_text = SetPaveTower(StinNumber);
2417  }
2418  if (fFlagSubDet == "EE") {
2419  pav_text = SetPaveSC(StinNumber, StexNumber);
2420  }
2421  return pav_text;
2422 }
2423 
2424 TPaveText* TEcnaParHistos::SetPaveStinsXY(const Int_t& StexStin_X, const Int_t& StexStin_Y) {
2425  TPaveText* pav_text = nullptr;
2426  if (fFlagSubDet == "EB") {
2427  pav_text = SetPaveTowersXY(StexStin_X, StexStin_Y);
2428  }
2429  if (fFlagSubDet == "EE") {
2430  pav_text = SetPaveSCsXY(StexStin_X, StexStin_Y);
2431  }
2432  return pav_text;
2433 }
2434 
2435 //===========================================================================
2436 //
2437 // GetHistoType, GetQuantityName
2438 //
2439 //===========================================================================
2440 TString TEcnaParHistos::GetHistoType(const TString& HistoCode) {
2441  // Type of the quantity as a function of the quantity code
2442  // Histo type <=> Variable in X coordinate
2443 
2444  TString HistoType;
2445  Int_t MaxCar = fgMaxCar;
2446  HistoType.Resize(MaxCar);
2447  HistoType = "(no quantity type info)";
2448 
2449  //.(1a)............................ Global
2450  if (HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" || HistoCode == "D_TNo_ChNb" ||
2451  HistoCode == "D_LFN_ChNb" || HistoCode == "D_HFN_ChNb" || HistoCode == "D_MCs_ChNb" ||
2452  HistoCode == "D_SCs_ChNb") {
2453  HistoType = "Global";
2454  } // X coordinate = Xtals for SM or Dee
2455  // Tower for EB
2456  // SC for EE
2457  //.(1b)............................ Proj
2458  if (HistoCode == "D_NOE_ChDs" || HistoCode == "D_Ped_ChDs" || HistoCode == "D_TNo_ChDs" ||
2459  HistoCode == "D_LFN_ChDs" || HistoCode == "D_HFN_ChDs" || HistoCode == "D_MCs_ChDs" ||
2460  HistoCode == "D_SCs_ChDs") {
2461  HistoType = "Proj";
2462  } // X coordinate = bin number
2463 
2464  //.(2)............................ H1Basic
2465  if (HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb") {
2466  HistoType = "H1Basic";
2467  } // X coordinate = sample number
2468 
2469  //.(2)............................ H1BasicProj
2470  if (HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs") {
2471  HistoType = "H1BasicProj";
2472  } // X coordinate = total noise
2473 
2474  //.(3a)............................ SampGlobal
2475  if (HistoCode == "D_Adc_EvNb") {
2476  HistoType = "SampGlobal";
2477  } // X coordinate = event number
2478  //.(3b)............................ SampProj
2479  if (HistoCode == "D_Adc_EvDs") {
2480  HistoType = "SampProj";
2481  } // X coordinate = bin number
2482 
2483  //.(4a)............................ Evol
2484  if (HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
2485  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date") {
2486  HistoType = "Evol";
2487  } // X coordinate = date
2488 
2489  //.(4b)............................ EvolProj
2490  if (HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
2491  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs") {
2492  HistoType = "EvolProj";
2493  } // X coordinate = bin number
2494 
2495  return HistoType;
2496 } // end of GetHistoType(...)
2497 
2498 TString TEcnaParHistos::GetXVarHisto(const TString& HistoCode, const TString& SubDet, const Int_t& StexNumber) {
2499  // Type of the quantity as a function of the quantity code
2500  // Histo type <=> Variable in X coordinate
2501 
2502  TString HistoType = GetHistoType(HistoCode.Data());
2503 
2504  TString XVarHisto;
2505  Int_t MaxCar = fgMaxCar;
2506  XVarHisto.Resize(MaxCar);
2507  XVarHisto = "(no X variable info)";
2508 
2509  if (HistoType == "Global") {
2510  if (StexNumber == 0 && SubDet == "EB") {
2511  XVarHisto = "Tower number";
2512  }
2513  if (StexNumber == 0 && SubDet == "EE") {
2514  XVarHisto = "SC number";
2515  }
2516  if (StexNumber != 0) {
2517  XVarHisto = "Xtal number";
2518  }
2519  }
2520  if (HistoType == "Proj") {
2521  XVarHisto = "Bin number";
2522  }
2523 
2524  if (HistoType == "H1Basic") {
2525  XVarHisto = "Sample number";
2526  }
2527  if (HistoType == "H1BasicProj") {
2528  XVarHisto = "Total noise";
2529  }
2530 
2531  if (HistoType == "SampGlobal") {
2532  XVarHisto = "Event number";
2533  }
2534 
2535  if (HistoType == "SampProj") {
2536  XVarHisto = "ADC count";
2537  }
2538 
2539  if (HistoType == "Evol") {
2540  XVarHisto = "Date";
2541  }
2542 
2543  if (HistoType == "EvolProj") {
2544  XVarHisto = "Bin number";
2545  }
2546 
2547  return XVarHisto;
2548 
2549 } // end of GetXVarHisto(...)
2550 
2551 TString TEcnaParHistos::GetYVarHisto(const TString& HistoCode, const TString& SubDet, const Int_t& StexNumber) {
2552  // Type of the quantity as a function of the quantity code
2553  // Histo type <=> Variable in Y coordinate
2554 
2555  TString HistoType = GetHistoType(HistoCode.Data());
2556 
2557  TString YVarHisto;
2558  Int_t MaxCar = fgMaxCar;
2559  YVarHisto.Resize(MaxCar);
2560  YVarHisto = "(no Y variable info)";
2561 
2562  if (HistoType == "Global") {
2563  if (HistoCode == "D_NOE_ChNb") {
2564  YVarHisto = "Nb of events";
2565  }
2566  if (HistoCode == "D_Ped_ChNb") {
2567  YVarHisto = "Pedestal";
2568  }
2569  if (HistoCode == "D_TNo_ChNb") {
2570  YVarHisto = "Total Noise";
2571  }
2572  if (HistoCode == "D_MCs_ChNb") {
2573  YVarHisto = "Mean Cor(s,s')";
2574  }
2575  if (HistoCode == "D_LFN_ChNb") {
2576  YVarHisto = "Low Freq. Noise";
2577  }
2578  if (HistoCode == "D_HFN_ChNb") {
2579  YVarHisto = "High Freq. Noise";
2580  }
2581  if (HistoCode == "D_SCs_ChNb") {
2582  YVarHisto = "Sigma Cor(s,s')";
2583  }
2584  }
2585 
2586  if (HistoType == "Proj") {
2587  if (StexNumber == 0 && SubDet == "EB") {
2588  YVarHisto = "Number of towers";
2589  }
2590  if (StexNumber == 0 && SubDet == "EE") {
2591  YVarHisto = "Number of SCs";
2592  }
2593  if (StexNumber != 0) {
2594  YVarHisto = "Number of Xtals";
2595  }
2596  }
2597 
2598  if (HistoType == "H1Basic") {
2599  YVarHisto = "ADC count";
2600  }
2601  if (HistoType == "H1BasicProj") {
2602  YVarHisto = "Number of samples";
2603  }
2604 
2605  if (HistoType == "SampGlobal") {
2606  YVarHisto = "ADC count";
2607  }
2608 
2609  if (HistoType == "SampProj") {
2610  YVarHisto = "Number of events";
2611  }
2612 
2613  if (HistoType == "EvolProj") {
2614  YVarHisto = "Number of runs";
2615  }
2616 
2617  if (HistoType == "Evol") {
2618  if (HistoCode == "H_Ped_Date") {
2619  YVarHisto = "Pedestal";
2620  }
2621  if (HistoCode == "H_TNo_Date") {
2622  YVarHisto = "Total Noise";
2623  }
2624  if (HistoCode == "H_MCs_Date") {
2625  YVarHisto = "Mean Cor(s,s')";
2626  }
2627  if (HistoCode == "H_LFN_Date") {
2628  YVarHisto = "Low Freq. Noise";
2629  }
2630  if (HistoCode == "H_HFN_Date") {
2631  YVarHisto = "High Freq. Noise";
2632  }
2633  if (HistoCode == "H_SCs_Date") {
2634  YVarHisto = "Sigma Cor(s,s')";
2635  }
2636  }
2637 
2638  // std::cout << std::endl << "*TEcnaParHistos::GetYVarHisto(...)> HistoType = " << HistoType
2639  // << ", HistoCode = " << HistoCode
2640  // << ", StexNumber = " << StexNumber
2641  // << ", YVarHisto = " << YVarHisto << std::endl;
2642 
2643  return YVarHisto;
2644 
2645 } // end of GetYVarHisto(...)
2646 
2647 TString TEcnaParHistos::GetQuantityName(const TString& chqcode) {
2648  // Name of the quantity as a function of the histo code
2649 
2650  TString chqname;
2651  Int_t MaxCar = fgMaxCar;
2652  chqname.Resize(MaxCar);
2653  chqname = "(no quantity name info)";
2654 
2655  if (chqcode == "D_NOE_ChNb") {
2656  chqname = "Number of events";
2657  }
2658  if (chqcode == "D_NOE_ChDs") {
2659  chqname = "Nb of events";
2660  }
2661  if (chqcode == "D_Ped_ChNb") {
2662  chqname = "Pedestal";
2663  }
2664  if (chqcode == "D_Ped_ChDs") {
2665  chqname = "Pedestal";
2666  }
2667  if (chqcode == "D_TNo_ChNb") {
2668  chqname = "Total Noise";
2669  }
2670  if (chqcode == "D_TNo_ChDs") {
2671  chqname = "Total Noise";
2672  }
2673  if (chqcode == "D_MCs_ChNb") {
2674  chqname = "Mean Cor(s,s')";
2675  }
2676  if (chqcode == "D_MCs_ChDs") {
2677  chqname = "Mean Cor(s,s')";
2678  }
2679  if (chqcode == "D_LFN_ChNb") {
2680  chqname = "Low Freq. Noise";
2681  }
2682  if (chqcode == "D_LFN_ChDs") {
2683  chqname = "Low Freq. Noise";
2684  }
2685  if (chqcode == "D_HFN_ChNb") {
2686  chqname = "High Freq. Noise";
2687  }
2688  if (chqcode == "D_HFN_ChDs") {
2689  chqname = "High Freq. Noise";
2690  }
2691  if (chqcode == "D_SCs_ChNb") {
2692  chqname = "Sigma Cor(s,s')";
2693  }
2694  if (chqcode == "D_SCs_ChDs") {
2695  chqname = "Sigma Cor(s,s')";
2696  }
2697  if (chqcode == "D_MSp_SpNb") {
2698  chqname = "Sample means";
2699  }
2700  if (chqcode == "D_MSp_SpDs") {
2701  chqname = "Sample means";
2702  }
2703  if (chqcode == "D_SSp_SpNb") {
2704  chqname = "Sample sigmas";
2705  }
2706  if (chqcode == "D_SSp_SpDs") {
2707  chqname = "Sample sigmas";
2708  }
2709  if (chqcode == "D_Adc_EvNb") {
2710  chqname = "Sample ADC";
2711  }
2712  if (chqcode == "D_Adc_EvDs") {
2713  chqname = "Sample ADC distribution";
2714  }
2715  if (chqcode == "H_Ped_Date") {
2716  chqname = "Pedestal";
2717  }
2718  if (chqcode == "H_TNo_Date") {
2719  chqname = "Total Noise";
2720  }
2721  if (chqcode == "H_MCs_Date") {
2722  chqname = "Mean Cor(s,s')";
2723  }
2724  if (chqcode == "H_LFN_Date") {
2725  chqname = "Low Freq. Noise";
2726  }
2727  if (chqcode == "H_HFN_Date") {
2728  chqname = "High Freq. Noise";
2729  }
2730  if (chqcode == "H_SCs_Date") {
2731  chqname = "Sigma Cor(s,s')";
2732  }
2733  if (chqcode == "H_Ped_RuDs") {
2734  chqname = "Pedestal";
2735  }
2736  if (chqcode == "H_TNo_RuDs") {
2737  chqname = "Total Noise";
2738  }
2739  if (chqcode == "H_MCs_RuDs") {
2740  chqname = "Mean Cor(s,s')";
2741  }
2742  if (chqcode == "H_LFN_RuDs") {
2743  chqname = "Low Freq. Noise";
2744  }
2745  if (chqcode == "H_HFN_RuDs") {
2746  chqname = "High Freq. Noise";
2747  }
2748  if (chqcode == "H_SCs_RuDs") {
2749  chqname = "Sigma Cor(s,s')";
2750  }
2751  return chqname;
2752 }
2753 
2754 Double_t TEcnaParHistos::GetYminDefaultValue(const TString& chqcode) {
2755  Double_t vmin = (Double_t)0.;
2756 
2757  if (chqcode == "H2LFccMosMatrix") {
2758  vmin = (Double_t)-1.;
2759  }
2760  if (chqcode == "H2HFccMosMatrix") {
2761  vmin = (Double_t)-1.;
2762  }
2763  if (chqcode == "H2CorccInStins") {
2764  vmin = (Double_t)-1.;
2765  }
2766 
2767  if (chqcode == "D_NOE_ChNb") {
2768  vmin = (Double_t)0.;
2769  }
2770  if (chqcode == "D_Ped_ChNb") {
2771  vmin = (Double_t)0.;
2772  }
2773  if (chqcode == "D_TNo_ChNb") {
2774  vmin = (Double_t)0.;
2775  }
2776  if (chqcode == "D_MCs_ChNb") {
2777  vmin = (Double_t)-1.;
2778  }
2779  if (chqcode == "D_LFN_ChNb") {
2780  vmin = (Double_t)0.;
2781  }
2782  if (chqcode == "D_HFN_ChNb") {
2783  vmin = (Double_t)0.;
2784  }
2785  if (chqcode == "D_SCs_ChNb") {
2786  vmin = (Double_t)-1.;
2787  }
2788 
2789  if (chqcode == "D_NOE_ChDs") {
2790  vmin = (Double_t)0.1;
2791  }
2792  if (chqcode == "D_Ped_ChDs") {
2793  vmin = (Double_t)0.1;
2794  }
2795  if (chqcode == "D_TNo_ChDs") {
2796  vmin = (Double_t)0.1;
2797  }
2798  if (chqcode == "D_MCs_ChDs") {
2799  vmin = (Double_t)0.1;
2800  }
2801  if (chqcode == "D_LFN_ChDs") {
2802  vmin = (Double_t)0.1;
2803  }
2804  if (chqcode == "D_HFN_ChDs") {
2805  vmin = (Double_t)0.1;
2806  }
2807  if (chqcode == "D_SCs_ChDs") {
2808  vmin = (Double_t)0.1;
2809  }
2810 
2811  if (chqcode == "D_MSp_SpNb") {
2812  vmin = (Double_t)0.;
2813  }
2814  if (chqcode == "D_MSp_SpDs") {
2815  vmin = (Double_t)0.1;
2816  }
2817  if (chqcode == "D_SSp_SpNb") {
2818  vmin = (Double_t)0.;
2819  }
2820  if (chqcode == "D_SSp_SpDs") {
2821  vmin = (Double_t)0.1;
2822  }
2823 
2824  if (chqcode == "D_Adc_EvNb") {
2825  vmin = (Double_t)0.;
2826  }
2827  if (chqcode == "D_Adc_EvDs") {
2828  vmin = (Double_t)0.1;
2829  }
2830 
2831  if (chqcode == "H_Ped_Date") {
2832  vmin = (Double_t)0.;
2833  }
2834  if (chqcode == "H_TNo_Date") {
2835  vmin = (Double_t)0.;
2836  }
2837  if (chqcode == "H_MCs_Date") {
2838  vmin = (Double_t)-1.;
2839  }
2840  if (chqcode == "H_LFN_Date") {
2841  vmin = (Double_t)0.;
2842  }
2843  if (chqcode == "H_HFN_Date") {
2844  vmin = (Double_t)0.;
2845  }
2846  if (chqcode == "H_SCs_Date") {
2847  vmin = (Double_t)0.;
2848  }
2849 
2850  if (chqcode == "H_Ped_RuDs") {
2851  vmin = (Double_t)0.1;
2852  }
2853  if (chqcode == "H_TNo_RuDs") {
2854  vmin = (Double_t)0.1;
2855  }
2856  if (chqcode == "H_MCs_RuDs") {
2857  vmin = (Double_t)0.1;
2858  }
2859  if (chqcode == "H_LFN_RuDs") {
2860  vmin = (Double_t)0.1;
2861  }
2862  if (chqcode == "H_HFN_RuDs") {
2863  vmin = (Double_t)0.1;
2864  }
2865  if (chqcode == "H_SCs_RuDs") {
2866  vmin = (Double_t)0.1;
2867  }
2868 
2869  return vmin;
2870 }
2871 
2872 Double_t TEcnaParHistos::GetYmaxDefaultValue(const TString& chqcode) {
2873  Double_t vmax = (Double_t)0.;
2874 
2875  if (fFlagSubDet == "EB") {
2876  if (chqcode == "H2LFccMosMatrix") {
2877  vmax = (Double_t)1.;
2878  }
2879  if (chqcode == "H2HFccMosMatrix") {
2880  vmax = (Double_t)1.;
2881  }
2882  if (chqcode == "H2CorccInStins") {
2883  vmax = (Double_t)1.;
2884  }
2885 
2886  if (chqcode == "D_NOE_ChNb") {
2887  vmax = (Double_t)500.;
2888  }
2889  if (chqcode == "D_Ped_ChNb") {
2890  vmax = (Double_t)500.;
2891  }
2892  if (chqcode == "D_TNo_ChNb") {
2893  vmax = (Double_t)2.5;
2894  }
2895  if (chqcode == "D_LFN_ChNb") {
2896  vmax = (Double_t)2.5;
2897  }
2898  if (chqcode == "D_HFN_ChNb") {
2899  vmax = (Double_t)2.5;
2900  }
2901  if (chqcode == "D_MCs_ChNb") {
2902  vmax = (Double_t)1.;
2903  }
2904  if (chqcode == "D_SCs_ChNb") {
2905  vmax = (Double_t)1.5;
2906  }
2907 
2908  if (chqcode == "D_NOE_ChDs") {
2909  vmax = (Double_t)5000.;
2910  }
2911  if (chqcode == "D_Ped_ChDs") {
2912  vmax = (Double_t)5000.;
2913  }
2914  if (chqcode == "D_TNo_ChDs") {
2915  vmax = (Double_t)5000.;
2916  }
2917  if (chqcode == "D_LFN_ChDs") {
2918  vmax = (Double_t)5000.;
2919  }
2920  if (chqcode == "D_HFN_ChDs") {
2921  vmax = (Double_t)5000.;
2922  }
2923  if (chqcode == "D_MCs_ChDs") {
2924  vmax = (Double_t)5000.;
2925  }
2926  if (chqcode == "D_SCs_ChDs") {
2927  vmax = (Double_t)5000.;
2928  }
2929 
2930  if (chqcode == "D_MSp_SpNb") {
2931  vmax = (Double_t)500.;
2932  }
2933  if (chqcode == "D_MSp_SpDs") {
2934  vmax = (Double_t)10.;
2935  }
2936  if (chqcode == "D_SSp_SpNb") {
2937  vmax = (Double_t)5.;
2938  }
2939  if (chqcode == "D_SSp_SpDs") {
2940  vmax = (Double_t)10.;
2941  }
2942 
2943  if (chqcode == "D_Adc_EvNb") {
2944  vmax = (Double_t)500.;
2945  }
2946  if (chqcode == "D_Adc_EvDs") {
2947  vmax = (Double_t)150.;
2948  }
2949 
2950  if (chqcode == "H_Ped_Date") {
2951  vmax = (Double_t)500.;
2952  }
2953  if (chqcode == "H_TNo_Date") {
2954  vmax = (Double_t)5.;
2955  }
2956  if (chqcode == "H_LFN_Date") {
2957  vmax = (Double_t)5.;
2958  }
2959  if (chqcode == "H_HFN_Date") {
2960  vmax = (Double_t)5.;
2961  }
2962  if (chqcode == "H_MCs_Date") {
2963  vmax = (Double_t)1.;
2964  }
2965  if (chqcode == "H_SCs_Date") {
2966  vmax = (Double_t)0.5;
2967  }
2968 
2969  if (chqcode == "H_Ped_RuDs") {
2970  vmax = (Double_t)1000.;
2971  }
2972  if (chqcode == "H_TNo_RuDs") {
2973  vmax = (Double_t)1000.;
2974  }
2975  if (chqcode == "H_LFN_RuDs") {
2976  vmax = (Double_t)1000.;
2977  }
2978  if (chqcode == "H_HFN_RuDs") {
2979  vmax = (Double_t)1000.;
2980  }
2981  if (chqcode == "H_MCs_RuDs") {
2982  vmax = (Double_t)1000.;
2983  }
2984  if (chqcode == "H_SCs_RuDs") {
2985  vmax = (Double_t)1000.;
2986  }
2987  }
2988 
2989  if (fFlagSubDet == "EE") {
2990  if (chqcode == "H2LFccMosMatrix") {
2991  vmax = (Double_t)1.;
2992  }
2993  if (chqcode == "H2HFccMosMatrix") {
2994  vmax = (Double_t)1.;
2995  }
2996  if (chqcode == "H2CorccInStins") {
2997  vmax = (Double_t)0.05;
2998  }
2999 
3000  if (chqcode == "D_NOE_ChNb") {
3001  vmax = (Double_t)500.;
3002  }
3003  if (chqcode == "D_Ped_ChNb") {
3004  vmax = (Double_t)500.;
3005  }
3006  if (chqcode == "D_TNo_ChNb") {
3007  vmax = (Double_t)5.;
3008  }
3009  if (chqcode == "D_LFN_ChNb") {
3010  vmax = (Double_t)5.;
3011  }
3012  if (chqcode == "D_HFN_ChNb") {
3013  vmax = (Double_t)5.;
3014  }
3015  if (chqcode == "D_MCs_ChNb") {
3016  vmax = (Double_t)1.;
3017  }
3018  if (chqcode == "D_SCs_ChNb") {
3019  vmax = (Double_t)2.5;
3020  }
3021 
3022  if (chqcode == "D_NOE_ChDs") {
3023  vmax = (Double_t)1000.;
3024  }
3025  if (chqcode == "D_Ped_ChDs") {
3026  vmax = (Double_t)1000.;
3027  }
3028  if (chqcode == "D_TNo_ChDs") {
3029  vmax = (Double_t)1000.;
3030  }
3031  if (chqcode == "D_LFN_ChDs") {
3032  vmax = (Double_t)1000.;
3033  }
3034  if (chqcode == "D_HFN_ChDs") {
3035  vmax = (Double_t)1000.;
3036  }
3037  if (chqcode == "D_MCs_ChDs") {
3038  vmax = (Double_t)1000.;
3039  }
3040  if (chqcode == "D_SCs_ChDs") {
3041  vmax = (Double_t)1000.;
3042  }
3043 
3044  if (chqcode == "D_MSp_SpNb") {
3045  vmax = (Double_t)500.;
3046  }
3047  if (chqcode == "D_MSp_SpDs") {
3048  vmax = (Double_t)1000.;
3049  }
3050  if (chqcode == "D_SSp_SpNb") {
3051  vmax = (Double_t)5.;
3052  }
3053  if (chqcode == "D_SSp_SpDs") {
3054  vmax = (Double_t)100.;
3055  }
3056 
3057  if (chqcode == "D_Adc_EvNb") {
3058  vmax = (Double_t)500.;
3059  }
3060  if (chqcode == "D_Adc_EvDs") {
3061  vmax = (Double_t)1000.;
3062  }
3063 
3064  if (chqcode == "H_Ped_Date") {
3065  vmax = (Double_t)500.;
3066  }
3067  if (chqcode == "H_TNo_Date") {
3068  vmax = (Double_t)5.;
3069  }
3070  if (chqcode == "H_LFN_Date") {
3071  vmax = (Double_t)5.;
3072  }
3073  if (chqcode == "H_HFN_Date") {
3074  vmax = (Double_t)5.;
3075  }
3076  if (chqcode == "H_MCs_Date") {
3077  vmax = (Double_t)1.;
3078  }
3079  if (chqcode == "H_SCs_Date") {
3080  vmax = (Double_t)0.5;
3081  }
3082 
3083  if (chqcode == "H_Ped_RuDs") {
3084  vmax = (Double_t)1000.;
3085  }
3086  if (chqcode == "H_TNo_RuDs") {
3087  vmax = (Double_t)1000.;
3088  }
3089  if (chqcode == "H_LFN_RuDs") {
3090  vmax = (Double_t)1000.;
3091  }
3092  if (chqcode == "H_HFN_RuDs") {
3093  vmax = (Double_t)1000.;
3094  }
3095  if (chqcode == "H_MCs_RuDs") {
3096  vmax = (Double_t)1000.;
3097  }
3098  if (chqcode == "H_SCs_RuDs") {
3099  vmax = (Double_t)1000.;
3100  }
3101  }
3102  return vmax;
3103 }
3104 
3105 //---------------------------------------------------------------------------------------
3106 //
3107 // BuildStandardDetectorCode, BuildStandardPlotOption,
3108 // BuildStandard1DHistoCodeX, BuildStandard1DHistoCodeY,
3109 // BuildStandardCovOrCorCode, BuildStandardBetweenWhatCode,
3110 //
3111 //---------------------------------------------------------------------------------------
3112 //----------------------- BuildStandardDetectorCode
3113 TString TEcnaParHistos::BuildStandardDetectorCode(const TString& UserDetector) {
3114  TString StandardDetectorCode = "?";
3115 
3116  if (UserDetector == "Super-module" || UserDetector == "SuperModule" || UserDetector == "super-module" ||
3117  UserDetector == "SM" || UserDetector == " " || UserDetector == "") // (default)
3118  {
3119  StandardDetectorCode = "SM";
3120  }
3121 
3122  if (UserDetector == "DEE" || UserDetector == "Dee") {
3123  StandardDetectorCode = "Dee";
3124  }
3125 
3126  if (UserDetector == "Ecal barrel" || UserDetector == "EcalBarrel" || UserDetector == "ecal barrel" ||
3127  UserDetector == "Barrel" || UserDetector == "barrel" || UserDetector == "EB") {
3128  StandardDetectorCode = "EB";
3129  }
3130 
3131  if (UserDetector == "Ecal endcap" || UserDetector == "EcalEndcap" || UserDetector == "ecal endcap" ||
3132  UserDetector == "Endcap" || UserDetector == "endcap" || UserDetector == "EE") {
3133  StandardDetectorCode = "EE";
3134  }
3135 
3136  if (StandardDetectorCode == "?") {
3137  std::cout << "*TEcnaParHistos::BuildStandardDetectorCode(...)> UserDetector = " << UserDetector
3138  << " : code not found." << fTTBELL << std::endl;
3139 
3140  ListOfStandardCodes("DetectorCode");
3141  }
3142  return StandardDetectorCode;
3143 }
3144 
3145 //----------------------- BuildStandardPlotOption
3146 TString TEcnaParHistos::BuildStandardPlotOption(const TString& CallingMethod, const TString& UserPlotOption) {
3147  TString StandardPlotOption = "?";
3148 
3149  if (CallingMethod == "1D" || CallingMethod == "2DS" || CallingMethod == "Time") {
3150  if (UserPlotOption == "ONLY ONE" || UserPlotOption == "only one" || UserPlotOption == "onlyone" ||
3151  UserPlotOption == "Only one" || UserPlotOption == "OnlyOne" || UserPlotOption == "ONLYONE" ||
3152  UserPlotOption == fOnlyOnePlot || UserPlotOption == " " || UserPlotOption == "") // (default)
3153  {
3154  StandardPlotOption = fOnlyOnePlot;
3155  }
3156 
3157  if (UserPlotOption == "SAME" || UserPlotOption == "Same" || UserPlotOption == fSeveralPlot) {
3158  StandardPlotOption = fSeveralPlot;
3159  }
3160 
3161  if (UserPlotOption == "SAME n" || UserPlotOption == "Same n" || UserPlotOption == fSameOnePlot) {
3162  StandardPlotOption = fSameOnePlot;
3163  }
3164 
3165  if (UserPlotOption == fAllXtalsInStinPlot) // called with 1D after call with 1DX (special case "SAME in Stin")
3166  {
3167  StandardPlotOption = fAllXtalsInStinPlot;
3168  }
3169  }
3170 
3171  if (CallingMethod == "1DX") {
3172  if (UserPlotOption == "ALL XTALS IN TOWER" || UserPlotOption == "ALL CHANNELS IN TOWER" ||
3173  UserPlotOption == "AllXtalsInTower" || UserPlotOption == "AllChannelsInTower" ||
3174  UserPlotOption == "ALL XTALS IN TOW" || UserPlotOption == "ALL CHANNELS IN TOW" ||
3175  UserPlotOption == "AllXtalsInTow" || UserPlotOption == "AllChannelsInTow" ||
3176  UserPlotOption == "ALL XTALS IN SC" || UserPlotOption == "ALL CHANNELS IN SC" ||
3177  UserPlotOption == "AllXtalsInSC" || UserPlotOption == "AllChannelsInSC" || UserPlotOption == "SAME IN TOWER" ||
3178  UserPlotOption == "SameInTower" || UserPlotOption == "SAME IN TOW" || UserPlotOption == "SameInTow" ||
3179  UserPlotOption == "SAME IN SC" || UserPlotOption == "SameInSC" || UserPlotOption == "Same in tower" ||
3180  UserPlotOption == "Same in tow" || UserPlotOption == "Same in SC" || UserPlotOption == "SameInSC" ||
3181  UserPlotOption == fAllXtalsInStinPlot || UserPlotOption == " " || UserPlotOption == "") // (default)
3182  {
3183  StandardPlotOption = fAllXtalsInStinPlot;
3184  }
3185  }
3186 
3187  if (CallingMethod == "2D") {
3188  if (UserPlotOption == "COLZ" || UserPlotOption == " " || UserPlotOption == "") // (default)
3189  {
3190  StandardPlotOption = "COLZ";
3191  }
3192  if (UserPlotOption == "BOX") {
3193  StandardPlotOption = "BOX";
3194  }
3195  if (UserPlotOption == "TEXT") {
3196  StandardPlotOption = "TEXT";
3197  }
3198  if (UserPlotOption == "CONTZ") {
3199  StandardPlotOption = "CONTZ";
3200  }
3201  if (UserPlotOption == "LEGO2Z") {
3202  StandardPlotOption = "LEGO2Z";
3203  }
3204  if (UserPlotOption == "SURF1Z") {
3205  StandardPlotOption = "SURF1Z";
3206  }
3207  if (UserPlotOption == "SURF2Z") {
3208  StandardPlotOption = "SURF2Z";
3209  }
3210  if (UserPlotOption == "SURF3Z") {
3211  StandardPlotOption = "SURF3Z";
3212  }
3213  if (UserPlotOption == "SURF4") {
3214  StandardPlotOption = "SURF4";
3215  }
3216  if (UserPlotOption == "ASCII") {
3217  StandardPlotOption = "ASCII";
3218  }
3219  }
3220 
3221  //...................................................
3222  if (StandardPlotOption == "?") {
3223  std::cout << "*TEcnaParHistos::BuildStandardPlotOption(...)> UserPlotOption = " << UserPlotOption
3224  << " : code not found." << fTTBELL << std::endl;
3225 
3226  ListOfStandardCodes("PlotOption");
3227  }
3228  return StandardPlotOption;
3229 }
3230 
3231 //----------------------- BuildStandard1DHistoCodeX
3232 TString TEcnaParHistos::BuildStandard1DHistoCodeX(const TString& CallingMethod, const TString& UserHistoCode) {
3233  //........................... user code -> standard code
3234  TString StandardHistoCode = "?";
3235  if (CallingMethod == "1D" || CallingMethod == "2DS" || CallingMethod == "Time") {
3236  //======================================== Only X Quantity for 1D Histos
3237  if (UserHistoCode == "Tower" || UserHistoCode == "tower" || UserHistoCode == "tow" ||
3238  UserHistoCode == "Tower number" || UserHistoCode == "tower number" || UserHistoCode == "tow nb" ||
3239  UserHistoCode == "Tower#" || UserHistoCode == "tower#" || UserHistoCode == "tow#" || UserHistoCode == "Tow#" ||
3240  UserHistoCode == "Tow") {
3241  StandardHistoCode = "Tow";
3242  }
3243 
3244  if (UserHistoCode == "Super crystal" || UserHistoCode == "SuperCrystal" || UserHistoCode == "SuperXtal" ||
3245  UserHistoCode == "Super crystal number" || UserHistoCode == "SuperCrystalNumber" ||
3246  UserHistoCode == "SuperXtalNumber" || UserHistoCode == "Super crystal nb" || UserHistoCode == "SuperCrystal#" ||
3247  UserHistoCode == "SuperXtal#" || UserHistoCode == "SC#" || UserHistoCode == "SC") {
3248  StandardHistoCode = "SC";
3249  }
3250 
3251  if (UserHistoCode == "Crystal" || UserHistoCode == "crystal" || UserHistoCode == "Xtal" ||
3252  UserHistoCode == "Crystal number" || UserHistoCode == "crystal number" || UserHistoCode == "Xtal number" ||
3253  UserHistoCode == "Crystal#" || UserHistoCode == "crystal#" || UserHistoCode == "Xtal#" ||
3254  UserHistoCode == "Xtal") {
3255  StandardHistoCode = "Xtal";
3256  }
3257 
3258  if (StandardHistoCode == "Tow" || StandardHistoCode == "SC" || StandardHistoCode == "Xtal") {
3259  StandardHistoCode = "XtalORStin";
3260  } // management by means of fFapStexNumber ( >0 => Xtal ; =0 => Tow .OR. SC )
3261 
3262  if (UserHistoCode == "Sample number" || UserHistoCode == "SampleNumber" || UserHistoCode == "Sample#" ||
3263  UserHistoCode == "Samp#" || UserHistoCode == "Sample" || UserHistoCode == "sample" || UserHistoCode == "Smp") {
3264  StandardHistoCode = "Smp";
3265  }
3266 
3267  if (UserHistoCode == "Event" || UserHistoCode == "event" || UserHistoCode == "Event number" ||
3268  UserHistoCode == "event number" || UserHistoCode == "EventNumber" || UserHistoCode == "Event#" ||
3269  UserHistoCode == "EvtNumber" || UserHistoCode == "Evt#" || UserHistoCode == "Evt number" ||
3270  UserHistoCode == "evt number" || UserHistoCode == "Evt") {
3271  StandardHistoCode = "Evt";
3272  }
3273 
3274  //======================================== X or Y Quantity for 1D Histos
3275  if (StandardHistoCode == "?") {
3276  StandardHistoCode = BuildStandard1DHistoCodeXY(UserHistoCode);
3277  }
3278  }
3279 
3280  //---------------------------------------------
3281  if (StandardHistoCode == "?") {
3282  std::cout << "*TEcnaParHistos::BuildStandard1DHistoCodeX(...)> UserHistoCode = " << UserHistoCode
3283  << " : code not found." << fTTBELL << std::endl;
3284 
3285  ListOfStandardCodes("1DHistoCodeX");
3286  }
3287  return StandardHistoCode;
3288 }
3289 
3290 //----------------------- BuildStandard1DHistoCodeY
3291 TString TEcnaParHistos::BuildStandard1DHistoCodeY(const TString& CallingMethod, const TString& UserHistoCode) {
3292  //........................... user code -> standard code
3293  TString StandardHistoCode = "?";
3294 
3295  if (CallingMethod == "1D" || CallingMethod == "2DS" || CallingMethod == "Time") {
3296  //======================================== Only Y Quantity for 1D Histos
3297  if (UserHistoCode == "Number of crystals" || UserHistoCode == "NumberOfCrystals" ||
3298  UserHistoCode == "Nb of crystals" || UserHistoCode == "NbOfCrystals" || UserHistoCode == "Number of xtals" ||
3299  UserHistoCode == "NumberOfXtals" || UserHistoCode == "Nb of xtals" || UserHistoCode == "NbOfXtals" ||
3300  UserHistoCode == "nox" || UserHistoCode == "NOX") {
3301  StandardHistoCode = "NOX";
3302  }
3303 
3304  if (UserHistoCode == "Number of samples" || UserHistoCode == "NumberOfSamples" ||
3305  UserHistoCode == "Nb of samples" || UserHistoCode == "NbOfSamples" || UserHistoCode == "nos" ||
3306  UserHistoCode == "NOS") {
3307  StandardHistoCode = "NOS";
3308  }
3309 
3310  if (UserHistoCode == "Number of runs" || UserHistoCode == "NumberOfRuns" || UserHistoCode == "Nb of runs" ||
3311  UserHistoCode == "NbOfRuns" || UserHistoCode == "nor" || UserHistoCode == "NOR") {
3312  StandardHistoCode = "NOR";
3313  }
3314 
3315  //======================================== X or Y Quantity for 1D Histos
3316  if (StandardHistoCode == "?") {
3317  StandardHistoCode = BuildStandard1DHistoCodeXY(UserHistoCode);
3318  }
3319  }
3320  //---------------------------------------------
3321  if (StandardHistoCode == "?") {
3322  std::cout << "*TEcnaParHistos::BuildStandard1DHistoCodeY(...)> UserHistoCode = " << UserHistoCode
3323  << " : code not found." << fTTBELL << std::endl;
3324 
3325  ListOfStandardCodes("1DHistoCodeY");
3326  }
3327  return StandardHistoCode;
3328 }
3329 
3330 //----------------------- BuildStandard1DHistoCodeXY
3331 TString TEcnaParHistos::BuildStandard1DHistoCodeXY(const TString& UserHistoCode) {
3332  //........................... user code -> standard code
3333  TString StandardHistoCode = "?";
3334 
3335  //======================================== X or Y Quantity for 1D Histos
3336  if (UserHistoCode == "Number of events" || UserHistoCode == "Nb of evts" || UserHistoCode == "NumberbOfEvents" ||
3337  UserHistoCode == "NbOfEvts" || UserHistoCode == "number of events" || UserHistoCode == "noe" ||
3338  UserHistoCode == "NOE" || UserHistoCode == " " || UserHistoCode == "") // (default)
3339  {
3340  StandardHistoCode = "NOE";
3341  }
3342 
3343  if (UserHistoCode == "Pedestals" || UserHistoCode == "Pedestal" || UserHistoCode == "pedestals" ||
3344  UserHistoCode == "pedestal" || UserHistoCode == "ped" || UserHistoCode == "Ped") {
3345  StandardHistoCode = "Ped";
3346  }
3347 
3348  if (UserHistoCode == "Total noise" || UserHistoCode == "TotalNoise" || UserHistoCode == "total noise" ||
3349  UserHistoCode == "TN" || UserHistoCode == "tn" || UserHistoCode == "TNo") {
3350  StandardHistoCode = "TNo";
3351  }
3352 
3353  if (UserHistoCode == "Low frequency noise" || UserHistoCode == "LowFrequencyNoise" || UserHistoCode == "LF noise" ||
3354  UserHistoCode == "LFNoise" || UserHistoCode == "low frequency noise" || UserHistoCode == "lfn" ||
3355  UserHistoCode == "LFN") {
3356  StandardHistoCode = "LFN";
3357  }
3358 
3359  if (UserHistoCode == "High frequency noise" || UserHistoCode == "HighFrequencyNoise" || UserHistoCode == "HF noise" ||
3360  UserHistoCode == "HFNoise" || UserHistoCode == "high frequency noise" || UserHistoCode == "hfn" ||
3361  UserHistoCode == "HFN") {
3362  StandardHistoCode = "HFN";
3363  }
3364 
3365  if (UserHistoCode == "Mean correlations between samples" || UserHistoCode == "MeanCorrelationsBetweenSamples" ||
3366  UserHistoCode == "Correlations between samples" || UserHistoCode == "CorrelationsBetweenSamples" ||
3367  UserHistoCode == "Mean corss" || UserHistoCode == "MeanCorss" || UserHistoCode == "Corss" ||
3368  UserHistoCode == "corss" || UserHistoCode == "Css" || UserHistoCode == "css" ||
3369  UserHistoCode == "mean correlations between samples" || UserHistoCode == "mcs" || UserHistoCode == "MCs") {
3370  StandardHistoCode = "MCs";
3371  }
3372 
3373  if (UserHistoCode == "Sigma of correlations between samples" ||
3374  UserHistoCode == "SigmaOfCorrelationsBetweenSamples" || UserHistoCode == "Sigma corss" ||
3375  UserHistoCode == "SigmaCorss" || UserHistoCode == "SigCorss" || UserHistoCode == "sigcorss" ||
3376  UserHistoCode == "SCss" || UserHistoCode == "scss" || UserHistoCode == "sigma of correlations between samples" ||
3377  UserHistoCode == "scs" || UserHistoCode == "SCs") {
3378  StandardHistoCode = "SCs";
3379  }
3380 
3381  if (UserHistoCode == "Sample mean" || UserHistoCode == "SampleMean" || UserHistoCode == "Sample average" ||
3382  UserHistoCode == "SampleAverage" || UserHistoCode == "SampMean" || UserHistoCode == "SampAverage" ||
3383  UserHistoCode == "MSp") {
3384  StandardHistoCode = "MSp";
3385  }
3386 
3387  if (UserHistoCode == "Sample sigma" || UserHistoCode == "SampleSigma" || UserHistoCode == "Sigma of samples" ||
3388  UserHistoCode == "SigmaOfSamples" || UserHistoCode == "SampSigma" || UserHistoCode == "SSp") {
3389  StandardHistoCode = "SSp";
3390  }
3391 
3392  if (UserHistoCode == "date" || UserHistoCode == "Date" || UserHistoCode == "time" || UserHistoCode == "Time") {
3393  StandardHistoCode = "Time";
3394  }
3395 
3396  if (UserHistoCode == "ADC value" || UserHistoCode == "ADCValue" || UserHistoCode == "Adc value" ||
3397  UserHistoCode == "AdcValue" || UserHistoCode == "Sample ADC" || UserHistoCode == "SampleAdc" ||
3398  UserHistoCode == "ADC" || UserHistoCode == "Adc") {
3399  StandardHistoCode = "Adc";
3400  }
3401 
3402  //---------------------------------------------
3403  if (StandardHistoCode == "?") {
3404  std::cout << "*TEcnaParHistos::BuildStandard1DHistoCodeXY(...)> UserHistoCode = " << UserHistoCode
3405  << " : code not found." << fTTBELL << std::endl;
3406 
3407  ListOfStandardCodes("1DHistoCodeXY");
3408  }
3409  return StandardHistoCode;
3410 }
3411 
3412 //----------------------- BuildStandardCovOrCorCode
3413 TString TEcnaParHistos::BuildStandardCovOrCorCode(const TString& CallingMethod, const TString& UserHistoCode) {
3414  //........................... user code -> standard code
3415  TString StandardHistoCode = "?";
3416  if (CallingMethod == "2D") {
3417  //======================================== Correlation or covariance (CorOrCov)
3418  if (UserHistoCode == "Correlation" || UserHistoCode == "Correlations" || UserHistoCode == "correlation" ||
3419  UserHistoCode == "correlations" || UserHistoCode == "Correl" || UserHistoCode == "correl" ||
3420  UserHistoCode == "cor" || UserHistoCode == "Cor" || UserHistoCode == " " || UserHistoCode == "") // (default)
3421  {
3422  StandardHistoCode = "Cor";
3423  }
3424 
3425  if (UserHistoCode == "Covariance" || UserHistoCode == "Covariances" || UserHistoCode == "covariance" ||
3426  UserHistoCode == "covariances" || UserHistoCode == "Covar" || UserHistoCode == "covar" ||
3427  UserHistoCode == "cov" || UserHistoCode == "Cov") {
3428  StandardHistoCode = "Cov";
3429  }
3430  }
3431  //---------------------------------------------
3432  if (StandardHistoCode == "?") {
3433  std::cout << "*TEcnaParHistos::BuildStandardCovOrCorCode(...)> UserHistoCode = " << UserHistoCode
3434  << " : code not found." << fTTBELL << std::endl;
3435 
3436  ListOfStandardCodes("CovOrCorCode");
3437  }
3438  return StandardHistoCode;
3439 }
3440 
3441 //----------------------- BuildStandardBetweenWhatCode
3442 TString TEcnaParHistos::BuildStandardBetweenWhatCode(const TString& CallingMethod, const TString& UserHistoCode) {
3443  //........................... user code -> standard code
3444  TString StandardHistoCode = "?";
3445  if (CallingMethod == "2D") {
3446  //======================================== Quantity for correlations (BetweenWhat)
3447  if (UserHistoCode == "Samples" || UserHistoCode == "Between samples" || UserHistoCode == "samples" ||
3448  UserHistoCode == "between samples" || UserHistoCode == "BetweenSamples" || UserHistoCode == "Samp" ||
3449  UserHistoCode == "samp" || UserHistoCode == "ss" || UserHistoCode == "Mss") {
3450  StandardHistoCode = "Mss";
3451  }
3452 
3453  if (UserHistoCode == "LF channels" || UserHistoCode == "LF between channels" || UserHistoCode == "LFChannels" ||
3454  UserHistoCode == "LFBetweenChannels" || UserHistoCode == "LFChan" || UserHistoCode == "lfchan" ||
3455  UserHistoCode == "LFcc" || UserHistoCode == "lfcc" || UserHistoCode == "MccLF") {
3456  StandardHistoCode = "MccLF";
3457  }
3458 
3459  if (UserHistoCode == "HF channels" || UserHistoCode == "HF between channels" || UserHistoCode == "HFChannels" ||
3460  UserHistoCode == "HFBetweenChannels" || UserHistoCode == "HFChan" || UserHistoCode == "hfchan" ||
3461  UserHistoCode == "HFcc" || UserHistoCode == "hfcc" || UserHistoCode == "MccHF") {
3462  StandardHistoCode = "MccHF";
3463  }
3464 
3465  if (UserHistoCode == "LF towers" || UserHistoCode == "LF between towers" || UserHistoCode == "LFTowers" ||
3466  UserHistoCode == "LFBetweenTowers" || UserHistoCode == "LFTow" || UserHistoCode == "lftow" ||
3467  UserHistoCode == "LFtt" || UserHistoCode == "lftt" || UserHistoCode == "LF SCs" ||
3468  UserHistoCode == "LF between SCs" || UserHistoCode == "LFSCs" || UserHistoCode == "LFBetweenSCs" ||
3469  UserHistoCode == "LFSuperXtals" || UserHistoCode == "lfsc" || UserHistoCode == "LFSC" ||
3470  UserHistoCode == "lfsx" || UserHistoCode == "MttLF") {
3471  StandardHistoCode = "MttLF";
3472  }
3473 
3474  if (UserHistoCode == "HF towers" || UserHistoCode == "HF between towers" || UserHistoCode == "HFTowers" ||
3475  UserHistoCode == "HFBetweenTowers" || UserHistoCode == "HFTow" || UserHistoCode == "hftow" ||
3476  UserHistoCode == "HFtt" || UserHistoCode == "hftt" || UserHistoCode == "HF SCs" ||
3477  UserHistoCode == "HF between SCs" || UserHistoCode == "HFSCs" || UserHistoCode == "HFBetweenSCs" ||
3478  UserHistoCode == "HFSuperXtals" || UserHistoCode == "hfsc" || UserHistoCode == "HFSC" ||
3479  UserHistoCode == "hfsx" || UserHistoCode == "MttHF") {
3480  StandardHistoCode = "MttHF";
3481  }
3482  }
3483 
3484  //---------------------------------------------
3485  if (StandardHistoCode == "?") {
3486  std::cout << "*TEcnaParHistos::BuildStandardBetweenWhatCode(...)> UserHistoCode = " << UserHistoCode
3487  << " : code not found." << fTTBELL << std::endl;
3488 
3489  ListOfStandardCodes("BetweenWhatCode");
3490  }
3491  return StandardHistoCode;
3492 }
3493 
3494 //========================== ListOfStandardCodes ==========================
3495 
3496 void TEcnaParHistos::ListOfStandardCodes(const TString& TypeOfCode) {
3497  //------ Lists of Standard codes for Plot Histos methods
3498 
3499  if (TypeOfCode == "DetectorCode") {
3500  std::cout << "*--------------------------------------- Standard detector codes:" << std::endl;
3501  std::cout << " EB (ECAL Barrel) " << std::endl;
3502  std::cout << " EE (ECAL Endcap) " << std::endl;
3503  std::cout << " SM (Barrel Super Module) " << std::endl;
3504  std::cout << " Dee (Encap Dee) " << std::endl;
3505  std::cout << " Other codes are available" << std::endl;
3506  std::cout << " See source file: TEcnaParHistos::BuildStandardDetectorCode(...)." << std::endl;
3507  std::cout << "*----------------------------------------------------------------" << std::endl;
3508  }
3509 
3510  if (TypeOfCode == "PlotOption") {
3511  std::cout << "*--------------------------------------- Standard plot options:" << std::endl;
3512  std::cout << " All ROOT DRAW options and: " << std::endl;
3513  std::cout << " (nothing) " << std::endl;
3514  std::cout << " SAME n " << std::endl;
3515  std::cout << " ASCII " << std::endl;
3516  std::cout << " Other codes are available" << std::endl;
3517  std::cout << " See source file: TEcnaParHistos::BuildStandardPlotOption(...)." << std::endl;
3518  std::cout << "*--------------------------------------------------------------" << std::endl;
3519  }
3520 
3521  if (TypeOfCode == "1DHistoCodeX") {
3522  std::cout << "*---------------------- Standard 1D histo codes for X coordinate:" << std::endl;
3523  std::cout << " Tow (SM tower) " << std::endl;
3524  std::cout << " SC (Dee super crystal) " << std::endl;
3525  std::cout << " Xtal (crystal) " << std::endl;
3526  std::cout << " Smp (Adc sample) " << std::endl;
3527  std::cout << " Evt (event) " << std::endl;
3528  std::cout << " Other codes are available" << std::endl;
3529  std::cout << " See source file: TEcnaParHistos::BuildStandard1DHistoCodeX(...)." << std::endl;
3530  std::cout << "*----------------------------------------------------------------" << std::endl;
3531  }
3532 
3533  if (TypeOfCode == "1DHistoCodeY") {
3534  std::cout << "*---------------------- Standard 1D histo codes for Y coordinate;" << std::endl;
3535  std::cout << " NOX (number of crystals) " << std::endl;
3536  std::cout << " NOS (number of samples) " << std::endl;
3537  std::cout << " NOR (number of runs) " << std::endl;
3538  std::cout << " Other codes are available" << std::endl;
3539  std::cout << " See source file: TEcnaParHistos::BuildStandard1DHistoCodeY(...)." << std::endl;
3540  std::cout << "*----------------------------------------------------------------" << std::endl;
3541  }
3542 
3543  if (TypeOfCode == "1DHistoCodeXY") {
3544  std::cout << "*------------------ Standard 1D histo codes for X or Y coordinate;" << std::endl;
3545  std::cout << " NOE (number of events) " << std::endl;
3546  std::cout << " Ped (pedestal) " << std::endl;
3547  std::cout << " TNo (total noise) " << std::endl;
3548  std::cout << " LFN (low frequency noise) " << std::endl;
3549  std::cout << " HFN (high frequency noise) " << std::endl;
3550  std::cout << " MCs (mean correlation between samples) " << std::endl;
3551  std::cout << " SCs (sigma of correlations between samples) " << std::endl;
3552  std::cout << " MSp (sample mean) " << std::endl;
3553  std::cout << " SSp (sample sigma) " << std::endl;
3554  std::cout << " Time (time, date) " << std::endl;
3555  std::cout << " Adc (ADC sample value) " << std::endl;
3556  std::cout << " Other codes are available" << std::endl;
3557  std::cout << " See source file: TEcnaParHistos::BuildStandard1DHistoCodeXY(...)." << std::endl;
3558  std::cout << "*-----------------------------------------------------------------" << std::endl;
3559  }
3560 
3561  if (TypeOfCode == "CovOrCorCode") {
3562  std::cout << "*-------- Standard codes for matrix type (correlation or covariance);" << std::endl;
3563  std::cout << " Cor (correlation) " << std::endl;
3564  std::cout << " cov (covariance) " << std::endl;
3565  std::cout << " Other codes are available" << std::endl;
3566  std::cout << " See source file: TEcnaParHistos::BuildStandardCovOrCorCode(...)." << std::endl;
3567  std::cout << "*--------------------------------------------------------------------" << std::endl;
3568  }
3569 
3570  if (TypeOfCode == "BetweenWhatCode") {
3571  std::cout << "*-------- Standard codes for quantities in correlation or covariance;" << std::endl;
3572  std::cout << " Mss (between samples) " << std::endl;
3573  std::cout << " MccLF (low frequency between channels) " << std::endl;
3574  std::cout << " MccHF (high frequency between channels) " << std::endl;
3575  std::cout << " MttLF (low frequency between towers [if EB] or SC [if EE]) " << std::endl;
3576  std::cout << " MttLF (high frequency between towers [if EB] or SC [if EE]) " << std::endl;
3577  std::cout << " Other codes are available" << std::endl;
3578  std::cout << " See source file: TEcnaParHistos::BuildStandardBetweenWhatCode(...)." << std::endl;
3579  std::cout << "*--------------------------------------------------------------------" << std::endl;
3580  }
3581 }
3582 
3583 //========================== GetTechHistoCode ==========================
3584 
3585 TString TEcnaParHistos::GetTechHistoCode(const TString& StandardHistoCode) {
3586  TString TechHistoCode = "?";
3587 
3588  //.................... standard code -> technical code for ViewMatrix, ViewStex, ViewStas
3589  if (StandardHistoCode == "NOE") {
3590  TechHistoCode = "D_NOE_ChNb";
3591  }
3592  if (StandardHistoCode == "Ped") {
3593  TechHistoCode = "D_Ped_ChNb";
3594  }
3595  if (StandardHistoCode == "TNo") {
3596  TechHistoCode = "D_TNo_ChNb";
3597  }
3598  if (StandardHistoCode == "LFN") {
3599  TechHistoCode = "D_LFN_ChNb";
3600  }
3601  if (StandardHistoCode == "HFN") {
3602  TechHistoCode = "D_HFN_ChNb";
3603  }
3604  if (StandardHistoCode == "MCs") {
3605  TechHistoCode = "D_MCs_ChNb";
3606  }
3607  if (StandardHistoCode == "SCs") {
3608  TechHistoCode = "D_SCs_ChNb";
3609  }
3610 
3611  if (TechHistoCode == "?") {
3612  std::cout << "*TEcnaParHistos::GetTechHistoCode(...)> StandardHistoCode = " << StandardHistoCode
3613  << " : code not found " << fTTBELL << std::endl;
3614  }
3615  return TechHistoCode;
3616 }
3617 //.......................................................................................................
3618 TString TEcnaParHistos::GetTechHistoCode(const TString& X_Quantity, const TString& Y_Quantity) {
3619  //........................... (X,Y) standard codes -> technical code
3620  TString TechHistoCode = "?";
3621 
3622  //........................... Matrix or Histo type
3623  if (X_Quantity == "XtalORStin" && Y_Quantity == "NOE") {
3624  TechHistoCode = "D_NOE_ChNb";
3625  }
3626  if (X_Quantity == "XtalORStin" && Y_Quantity == "Ped") {
3627  TechHistoCode = "D_Ped_ChNb";
3628  }
3629  if (X_Quantity == "XtalORStin" && Y_Quantity == "TNo") {
3630  TechHistoCode = "D_TNo_ChNb";
3631  }
3632  if (X_Quantity == "XtalORStin" && Y_Quantity == "LFN") {
3633  TechHistoCode = "D_LFN_ChNb";
3634  }
3635  if (X_Quantity == "XtalORStin" && Y_Quantity == "HFN") {
3636  TechHistoCode = "D_HFN_ChNb";
3637  }
3638  if (X_Quantity == "XtalORStin" && Y_Quantity == "MCs") {
3639  TechHistoCode = "D_MCs_ChNb";
3640  }
3641  if (X_Quantity == "XtalORStin" && Y_Quantity == "SCs") {
3642  TechHistoCode = "D_SCs_ChNb";
3643  }
3644 
3645  if (X_Quantity == "NOE" && Y_Quantity == "NOX") {
3646  TechHistoCode = "D_NOE_ChDs";
3647  }
3648  if (X_Quantity == "Ped" && Y_Quantity == "NOX") {
3649  TechHistoCode = "D_Ped_ChDs";
3650  }
3651  if (X_Quantity == "TNo" && Y_Quantity == "NOX") {
3652  TechHistoCode = "D_TNo_ChDs";
3653  }
3654  if (X_Quantity == "LFN" && Y_Quantity == "NOX") {
3655  TechHistoCode = "D_LFN_ChDs";
3656  }
3657  if (X_Quantity == "HFN" && Y_Quantity == "NOX") {
3658  TechHistoCode = "D_HFN_ChDs";
3659  }
3660  if (X_Quantity == "MCs" && Y_Quantity == "NOX") {
3661  TechHistoCode = "D_MCs_ChDs";
3662  }
3663  if (X_Quantity == "SCs" && Y_Quantity == "NOX") {
3664  TechHistoCode = "D_SCs_ChDs";
3665  }
3666 
3667  if (X_Quantity == "Smp" && Y_Quantity == "MSp") {
3668  TechHistoCode = "D_MSp_SpNb";
3669  }
3670  if (X_Quantity == "MSp" && Y_Quantity == "NOS") {
3671  TechHistoCode = "D_MSp_SpDs";
3672  }
3673  if (X_Quantity == "Smp" && Y_Quantity == "SSp") {
3674  TechHistoCode = "D_SSp_SpNb";
3675  }
3676  if (X_Quantity == "SSp" && Y_Quantity == "NOS") {
3677  TechHistoCode = "D_SSp_SpDs";
3678  }
3679 
3680  if (X_Quantity == "Evt" && Y_Quantity == "Adc") {
3681  TechHistoCode = "D_Adc_EvNb";
3682  }
3683  if (X_Quantity == "Adc" && Y_Quantity == "NOE") {
3684  TechHistoCode = "D_Adc_EvDs";
3685  }
3686 
3687  //................................ Histime type
3688  if (X_Quantity == "Time" && Y_Quantity == "Ped") {
3689  TechHistoCode = "H_Ped_Date";
3690  }
3691  if (X_Quantity == "Ped" && Y_Quantity == "NOR") {
3692  TechHistoCode = "H_Ped_RuDs";
3693  }
3694 
3695  if (X_Quantity == "Time" && Y_Quantity == "TNo") {
3696  TechHistoCode = "H_TNo_Date";
3697  }
3698  if (X_Quantity == "TNo" && Y_Quantity == "NOR") {
3699  TechHistoCode = "H_TNo_RuDs";
3700  }
3701 
3702  if (X_Quantity == "Time" && Y_Quantity == "LFN") {
3703  TechHistoCode = "H_LFN_Date";
3704  }
3705  if (X_Quantity == "LFN" && Y_Quantity == "NOR") {
3706  TechHistoCode = "H_LFN_RuDs";
3707  }
3708 
3709  if (X_Quantity == "Time" && Y_Quantity == "HFN") {
3710  TechHistoCode = "H_HFN_Date";
3711  }
3712  if (X_Quantity == "HFN" && Y_Quantity == "NOR") {
3713  TechHistoCode = "H_HFN_RuDs";
3714  }
3715 
3716  if (X_Quantity == "Time" && Y_Quantity == "MCs") {
3717  TechHistoCode = "H_MCs_Date";
3718  }
3719  if (X_Quantity == "MCs" && Y_Quantity == "NOR") {
3720  TechHistoCode = "H_MCs_RuDs";
3721  }
3722 
3723  if (X_Quantity == "Time" && Y_Quantity == "SCs") {
3724  TechHistoCode = "H_SCs_Date";
3725  }
3726  if (X_Quantity == "SCs" && Y_Quantity == "NOR") {
3727  TechHistoCode = "H_SCs_RuDs";
3728  }
3729 
3730  if (TechHistoCode == "?") {
3731  std::cout << "TEcnaParHistos::GetTechHistoCode(...)> HistoCode not found. X_Quantity = " << X_Quantity
3732  << ", Y_Quantity = " << Y_Quantity << std::endl;
3733  }
3734  return TechHistoCode;
3735 }
3736 
3742 
3743 //================== End of TEcnaParHistos.cc ========================
TPaveText * SetPaveTowersXY(const Int_t &, const Int_t &)
TPaveText * SetPaveSCsXY(const Int_t &, const Int_t &)
Int_t fNbOfRunsDisplayed
Int_t MaxCrysIYInDee()
void SetViewHistoStats(TH1D *, const TString &)
Color_t SetColorsForNumbers(const TString &)
TString BuildStandard1DHistoCodeX(const TString &, const TString &)
TPaveText * SetPaveStinsXY(const Int_t &, const Int_t &)
TString GetSCQuadFrom1DeeSCEcna(const Int_t &)
TString BuildStandardPlotOption(const TString &, const TString &)
Float_t AxisTitleOffset()
Int_t GetCodePlotAllXtalsInStin()
void SetViewHistoPadMargins(const TString &, const TString &)
TString GetCodeSameOnePlot()
Double_t fMarginAutoMinMax
TString BuildStandard1DHistoCodeXY(const TString &)
TPaveText * SetPaveSM(const TString &, const Int_t &, const TString &)
TString BuildStandard1DHistoCodeY(const TString &, const TString &)
Float_t DeeNameOffsetX(const Int_t &)
TString fAllXtalsInStinPlot
TString fOnlyOnePlot
TString GetSMHalfBarrel(const Int_t &)
Int_t fMaxNbOfRunsInLists
TString GetEEDeeType(const Int_t &)
UInt_t CanvasFormatH(const TString &)
TPaveText * SetPaveEvolRuns(const Int_t &, const TString &, const Int_t &, const TString &, const TString &, const TString &)
Double_t GetYminDefaultValue(const TString &)
Double_t BoxLeftX(const TString &)
UInt_t SetCanvasWidth(const TString &, const TString &)
void SetViewHistoOffsets(TH1D *, const TString &, const TString &)
TPaveText * SetPaveLVRB(const Int_t &, const Int_t &)
void SetViewHistoStyle(const TString &)
TString GetXVarHisto(const TString &, const TString &, const Int_t &)
Double_t GetYmaxDefaultValue(const TString &)
Float_t DeeNumberOffsetX(const TString &, const Int_t &)
TString BuildStandardBetweenWhatCode(const TString &, const TString &)
Float_t AxisTitleSize()
TPaveText * SetPaveNbOfEvts(const Int_t &, const TString &, const TString &, const TString &)
Bool_t RegisterPointer(const TString &, const Long_t &)
Definition: TEcnaObject.cc:100
TString GetTowerLvrbType(const Int_t &)
TPaveText * SetPaveEvolNbOfEvtsAna(const TString &, const Int_t &, const Int_t &, const Int_t &, const TString &)
ClassImp(TEcnaParHistos)
TPaveText * SetPaveStex(const TString &, const Int_t &)
TString BuildStandardDetectorCode(const TString &)
Float_t AxisLabelOffset()
UInt_t CanvasFormatW(const TString &)
TString GetCodeSeveralPlot()
Int_t MaxNbOfRunsInLists()
TString GetCodeAllXtalsInStinPlot()
Color_t ColorTab(const Int_t &)
TPaveText * SetPaveCxyz(const Int_t &)
UInt_t SetCanvasHeight(const TString &, const TString &)
TString GetQuantityName(const TString &)
Float_t DeeOffsetX(const TString &, const Int_t &)
Int_t GetDSSCFrom1DeeSCEcna(const Int_t &, const Int_t &, const Int_t &)
TPaveText * SetPaveGeneralComment(const TString &)
Float_t AxisTickSize()
Definition: value.py:1
TString GetHistoType(const TString &)
TPaveText * SetPaveTower(const Int_t &)
Int_t MaxCrysInStin()
TEcnaParEcal * fEcal
Int_t GetDSFrom1DeeSCEcna(const Int_t &, const Int_t &)
Int_t GetDeeSCConsFrom1DeeSCEcna(const Int_t &, const Int_t &)
Int_t fPlotAllXtalsInStin
TPaveText * SetPaveCrystal(const Int_t &, const Int_t &, const Int_t &)
TString fFlagSubDet
TString GetYVarHisto(const TString &, const TString &, const Int_t &)
TString fSameOnePlot
Color_t ColorDefinition(const TString &)
TPaveText * SetPaveStin(const Int_t &, const Int_t &)
TPaveText * SetPaveAnalysisRun(const TString &, const Int_t &, const Int_t &, const TString &, const Int_t &, const Int_t &, const TString &)
TString GetTechHistoCode(const TString &)
Double_t BoxTopY(const TString &)
TString BuildStandardCovOrCorCode(const TString &, const TString &)
void SetColorPalette(const TString &)
TPaveText * SetPaveDee(const TString &, const Int_t &, const TString &)
Int_t GetNbOfRunsDisplayed()
TPaveText * SetPaveCrystalSample(const Int_t &, const Int_t &, const Int_t &, const Int_t &)
TPaveText * SetOptionSamePaveBorder(const TString &, const TString &)
Int_t MaxSMInEB()
void SetEcalSubDetector(const TString &)
TString GetCodeOnlyOnePlot()
Double_t GetMarginAutoMinMax()
~TEcnaParHistos() override
Double_t BoxRightX(const TString &)
TString GetEcalSubDetector()
Int_t GetMaxNbOfColors()
Int_t MaxStinHocoInStex()
TEcnaNumbering * fEcalNumbering
TPaveText * SetPaveSC(const Int_t &, const Int_t &)
Double_t BoxBottomY(const TString &)
void SetViewGraphOffsets(TGraph *, const TString &)
void ListOfStandardCodes(const TString &)
Long_t GetPointerValue(const TString &)
Definition: TEcnaObject.cc:209
Float_t AxisLabelSize()
TPaveText * SetPaveStas()
TString fSeveralPlot