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