CMS 3D CMS Logo

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