CMS 3D CMS Logo

TEcnaHistos.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: 30/01/2014
4 
6 
7 //--------------------------------------
8 // TEcnaHistos.cc
9 // Class creation: 18 April 2005
10 // Documentation: see TEcnaHistos.h
11 //--------------------------------------
12 
14 //______________________________________________________________________________
15 //
16 
17 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
18 //
19 // (attributes) ===> TEcnaParPaths --->|
20 // TEcnaParEcal --->|
21 // TEcnaWrite ---> TEcnaParPaths --->|
22 // TEcnaParCout --->|
23 // TEcnaParEcal --->|
24 // TEcnaNumbering ---> TEcnaParEcal --->|
25 // TEcnaParHistos ---> TEcnaParEcal --->|
26 // TEcnaNumbering ---> TEcnaParEcal --->|
27 // TEcnaNumbering ---> TEcnaParEcal --->|
28 //
29 // TEcnaRead ---> TEcnaParCout --->|
30 // TEcnaParPaths --->|
31 // TEcnaHeader --->|
32 // TEcnaParEcal --->|
33 // TEcnaWrite ---> TEcnaParPaths --->|
34 // TEcnaParCout --->|
35 // TEcnaParEcal --->|
36 // TEcnaNumbering ---> TEcnaParEcal --->|
37 // TEcnaNumbering ---> TEcnaParEcal --->|
38 //
39 //
40 // Terminal classes: TEcnaParPaths, TEcnaParEcal, TEcnaParCout, TEcnaHeader, TEcnaNArrayD,
41 // TEcnaObject, TEcnaResultType, TEcnaRootFile
42 // Non terminal classes: TEcnaGui, TEcnaHistos, TEcnaParHistos, TEcnaNumbering, TEcnaRead,
43 // TEcnaRun, TEcnaWrite
44 //
45 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
46 
48 {
49  //destructor
50 
51  if (fT1DRunNumber != nullptr){delete [] fT1DRunNumber; fCdelete++;}
52 
53  //if (fCnaParHistos != 0){delete fCnaParHistos; fCdelete++;}
54  //if (fCnaParPaths != 0){delete fCnaParPaths; fCdelete++;}
55  //if (fCnaParCout != 0){delete fCnaParCout; fCdelete++;}
56  //if (fCnaWrite != 0){delete fCnaWrite; fCdelete++;}
57  //if (fEcal != 0){delete fEcal; fCdelete++;}
58  //if (fEcalNumbering != 0){delete fEcalNumbering; fCdelete++;}
59 
60  //if (fMyRootFile != 0){delete fMyRootFile; fCdelete++;}
61  //if (fReadHistoDummy != 0){delete fReadHistoDummy; fCdelete++;}
62 
63 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
64 
65  if ( fCnew != fCdelete )
66  {
67  std::cout << "*TEcnaHistos> WRONG MANAGEMENT OF ALLOCATIONS: fCnew = "
68  << fCnew << ", fCdelete = " << fCdelete << fTTBELL << std::endl;
69  }
70  else
71  {
72  // std::cout << "*TEcnaHistos> BRAVO! GOOD MANAGEMENT OF ALLOCATIONS: fCnew = "
73  // << fCnew << ", fCdelete = " << fCdelete << std::endl;
74  }
75 
76 #define MGRA
77 #ifndef MGRA
78  if ( fCnewRoot != fCdeleteRoot )
79  {
80  std::cout << "*TEcnaHistos> WRONG MANAGEMENT OF ROOT ALLOCATIONS: fCnewRoot = "
81  << fCnewRoot << ", fCdeleteRoot = " << fCdeleteRoot << std::endl;
82  }
83  else
84  {
85  std::cout << "*TEcnaHistos> BRAVO! GOOD MANAGEMENT OF ROOT ALLOCATIONS:"
86  << " fCnewRoot = " << fCnewRoot <<", fCdeleteRoot = "
87  << fCdeleteRoot << std::endl;
88  }
89 #endif // MGRA
90 
91  // std::cout << "TEcnaHistos> Leaving destructor" << std::endl;
92  // std::cout << " fCnew = " << fCnew << ", fCdelete = " << fCdelete << std::endl;
93 
94  // std::cout << "[Info Management] CLASS: TEcnaHistos. DESTROY OBJECT: this = " << this << std::endl;
95 
96 }
97 
98 //===================================================================
99 //
100 // Constructors
101 //
102 //===================================================================
104 // Constructor without argument. Call to Init()
105 
106  // std::cout << "[Info Management] CLASS: TEcnaHistos. CREATE OBJECT: this = " << this << std::endl;
107 
108  Init();
109 }
110 
111 TEcnaHistos::TEcnaHistos(TEcnaObject* pObjectManager, const TString& SubDet)
112 {
113  // std::cout << "[Info Management] CLASS: TEcnaHistos. CREATE OBJECT: this = " << this << std::endl;
114 
115 
116  Long_t i_this = (Long_t)this;
117  pObjectManager->RegisterPointer("TEcnaHistos", i_this);
118 
119  Init();
120 
121  //----------------------- Object management
122 
123  //............................ fCnaParCout
124  fCnaParCout = nullptr;
125  Long_t iCnaParCout = pObjectManager->GetPointerValue("TEcnaParCout");
126  if( iCnaParCout == 0 )
127  {fCnaParCout = new TEcnaParCout(pObjectManager); /*fCnew++*/}
128  else
129  {fCnaParCout = (TEcnaParCout*)iCnaParCout;}
130 
131  //............................ fCnaParPaths
132  fCnaParPaths = nullptr;
133  Long_t iCnaParPaths = pObjectManager->GetPointerValue("TEcnaParPaths");
134  if( iCnaParPaths == 0 )
135  {fCnaParPaths = new TEcnaParPaths(pObjectManager); /*fCnew++*/}
136  else
137  {fCnaParPaths = (TEcnaParPaths*)iCnaParPaths;}
138 
141 
142  //............................ fEcal => to be changed in fParEcal
143  fEcal = nullptr;
144  Long_t iParEcal = pObjectManager->GetPointerValue("TEcnaParEcal");
145  if( iParEcal == 0 )
146  {fEcal = new TEcnaParEcal(pObjectManager, SubDet.Data()); /*fCnew++*/}
147  else
148  {fEcal = (TEcnaParEcal*)iParEcal;}
149 
150  //............................ fEcalNumbering
151  fEcalNumbering = nullptr;
152  Long_t iEcalNumbering = pObjectManager->GetPointerValue("TEcnaNumbering");
153  if( iEcalNumbering == 0 )
154  {fEcalNumbering = new TEcnaNumbering(pObjectManager, SubDet.Data()); /*fCnew++*/}
155  else
156  {fEcalNumbering = (TEcnaNumbering*)iEcalNumbering;}
157 
158  //............................ fCnaParHistos
159  fCnaParHistos = nullptr;
160  Long_t iCnaParHistos = pObjectManager->GetPointerValue("TEcnaParHistos");
161  if( iCnaParHistos == 0 )
162  {fCnaParHistos = new TEcnaParHistos(pObjectManager, SubDet.Data()); /*fCnew++*/}
163  else
164  {fCnaParHistos = (TEcnaParHistos*)iCnaParHistos;}
165 
166  //............................ fCnaWrite
167  fCnaWrite = nullptr;
168  Long_t iCnaWrite = pObjectManager->GetPointerValue("TEcnaWrite");
169  if( iCnaWrite == 0 )
170  {fCnaWrite = new TEcnaWrite(pObjectManager, SubDet.Data()); /*fCnew++*/}
171  else
172  {fCnaWrite = (TEcnaWrite*)iCnaWrite;}
173 
174  //............................ fMyRootFile
175  fMyRootFile = nullptr;
176  Long_t iMyRootFile = pObjectManager->GetPointerValue("TEcnaRead");
177  if( iMyRootFile == 0 )
178  {fMyRootFile = new TEcnaRead(pObjectManager, SubDet.Data()); /*fCnew++*/}
179  else
180  {fMyRootFile = (TEcnaRead*)iMyRootFile;}
181 
183 
184  //------------------- creation objet TEcnaRead fMyRootFile (a reprendre plus clairement)
185  //fFileHeader = 0;
186  //fMyRootFile = new TEcnaRead(fFlagSubDet.Data(), fCnaParPaths, fCnaParCout,
187  // fFileHeader, fEcalNumbering, fCnaWrite); fCnew++;
188  //fMyRootFile->PrintNoComment();
189 
190 
191  SetEcalSubDetector(SubDet.Data());
192  //......... init ymin,ymax histos -> Default values for Ymin and Ymax
194 }
195 
196 
198 {
199 //========================= GENERAL INITIALISATION
200  fCnew = 0;
201  fCdelete = 0;
202  fCnewRoot = 0;
203  fCdeleteRoot = 0;
204 
205  fCnaCommand = 0;
206  fCnaError = 0;
207 
208  //------------------------------ initialisations ----------------------
209  fTTBELL = '\007';
210 
211  fT1DRunNumber = nullptr;
212 
213  //.......... init flags Same plot
231  //.......... init flags colors (Init)
249 
250  //.......... init counter Same canvas
268  //................. Flag Scale X anf Y set to "LIN" and flag color palete set to "Black/Red/Blue"
269 
270  fFlagScaleX.Resize(charArrLen);
271  fFlagScaleX = "LIN";
272 
273  fFlagScaleY.Resize(charArrLen);
274  fFlagScaleY = "LIN";
275 
276  fFlagColPal.Resize(charArrLen);
277  fFlagColPal = "Black/Red/Blue";
278 
279  //................. Flag General Title set to empty string
281  fFlagGeneralTitle = "";
282 
283  //................. Init codes Options
284  fOptScaleLinx = 31400;
285  fOptScaleLogx = 31401;
286  fOptScaleLiny = 31402;
287  fOptScaleLogy = 31403;
288 
289  fOptVisLine = 1101;
290  fOptVisPolm = 1102;
291 
292  //............................ (Init)
294  fCovarianceMatrix = "Cov";
296  fCorrelationMatrix = "Cor";
297 
298  fLFBetweenStins.Resize(charArrLen);
299  fLFBetweenStins = "MttLF";
300  fHFBetweenStins.Resize(charArrLen);
301  fHFBetweenStins = "MttHF";
302 
304  fLFBetweenChannels = "MccLF";
306  fHFBetweenChannels = "MccHF";
307 
308  fBetweenSamples.Resize(charArrLen);
309  fBetweenSamples = "Mss";
310 
311  //.................................. text pave alignement for pave "SeveralChanging" (HistimePlot)
312  fTextPaveAlign = 12; // 1 = left adjusted, 2 = vertically centered
313  fTextPaveFont = 100; // 10*10 = 10*(ID10 = Courier New)
314  fTextPaveSize = (Float_t)0.025; // 0.0xxx = xxx% of the pave size
315  fTextBorderSize = 1; // Pave Border (=>Shadow)
316 
317  //................................. Init Xvar, Yvar, NbBins management for options SAME and SAME n
318  fXMemoH1SamePlus = "";
319  fXMemoD_NOE_ChNb = "";
320  fXMemoD_NOE_ChDs = "";
321  fXMemoD_Ped_ChNb = "";
322  fXMemoD_Ped_ChDs = "";
323  fXMemoD_TNo_ChNb = "";
324  fXMemoD_TNo_ChDs = "";
325  fXMemoD_MCs_ChNb = "";
326  fXMemoD_MCs_ChDs = "";
327  fXMemoD_LFN_ChNb = "";
328  fXMemoD_LFN_ChDs = "";
329  fXMemoD_HFN_ChNb = "";
330  fXMemoD_HFN_ChDs = "";
331  fXMemoD_SCs_ChNb = "";
332  fXMemoD_SCs_ChDs = "";
333  fXMemoD_MSp_SpNb = "";
334  fXMemoD_MSp_SpDs = "";
335  fXMemoD_SSp_SpNb = "";
336  fXMemoD_SSp_SpDs = "";
337  fXMemoD_Adc_EvDs = "";
338  fXMemoD_Adc_EvNb = "";
339  fXMemoH_Ped_Date = "";
340  fXMemoH_TNo_Date = "";
341  fXMemoH_MCs_Date = "";
342  fXMemoH_LFN_Date = "";
343  fXMemoH_HFN_Date = "";
344  fXMemoH_SCs_Date = "";
345  fXMemoH_Ped_RuDs = "";
346  fXMemoH_TNo_RuDs = "";
347  fXMemoH_MCs_RuDs = "";
348  fXMemoH_LFN_RuDs = "";
349  fXMemoH_HFN_RuDs = "";
350  fXMemoH_SCs_RuDs = "";
351 
352  fYMemoH1SamePlus = "";
353  fYMemoD_NOE_ChNb = "";
354  fYMemoD_NOE_ChDs = "";
355  fYMemoD_Ped_ChNb = "";
356  fYMemoD_Ped_ChDs = "";
357  fYMemoD_TNo_ChNb = "";
358  fYMemoD_TNo_ChDs = "";
359  fYMemoD_MCs_ChNb = "";
360  fYMemoD_MCs_ChDs = "";
361  fYMemoD_LFN_ChNb = "";
362  fYMemoD_LFN_ChDs = "";
363  fYMemoD_HFN_ChNb = "";
364  fYMemoD_HFN_ChDs = "";
365  fYMemoD_SCs_ChNb = "";
366  fYMemoD_SCs_ChDs = "";
367  fYMemoD_MSp_SpNb = "";
368  fYMemoD_MSp_SpDs = "";
369  fYMemoD_SSp_SpNb = "";
370  fYMemoD_SSp_SpDs = "";
371  fYMemoD_Adc_EvDs = "";
372  fYMemoD_Adc_EvNb = "";
373  fYMemoH_Ped_Date = "";
374  fYMemoH_TNo_Date = "";
375  fYMemoH_MCs_Date = "";
376  fYMemoH_LFN_Date = "";
377  fYMemoH_HFN_Date = "";
378  fYMemoH_SCs_Date = "";
379  fYMemoH_Ped_RuDs = "";
380  fYMemoH_TNo_RuDs = "";
381  fYMemoH_MCs_RuDs = "";
382  fYMemoH_LFN_RuDs = "";
383  fYMemoH_HFN_RuDs = "";
384  fYMemoH_SCs_RuDs = "";
385 
419 
420  //.................................. Init canvas/pad pointers (Init)
421  fCurrentCanvas = nullptr;
422 
423  fCurrentCanvasName = "?";
424 
425  fCanvH1SamePlus = nullptr;
426  fCanvD_NOE_ChNb = nullptr;
427  fCanvD_NOE_ChDs = nullptr;
428  fCanvD_Ped_ChNb = nullptr;
429  fCanvD_Ped_ChDs = nullptr;
430  fCanvD_TNo_ChNb = nullptr;
431  fCanvD_TNo_ChDs = nullptr;
432  fCanvD_MCs_ChNb = nullptr;
433  fCanvD_MCs_ChDs = nullptr;
434  fCanvD_LFN_ChNb = nullptr;
435  fCanvD_LFN_ChDs = nullptr;
436  fCanvD_HFN_ChNb = nullptr;
437  fCanvD_HFN_ChDs = nullptr;
438  fCanvD_SCs_ChNb = nullptr;
439  fCanvD_SCs_ChDs = nullptr;
440  fCanvD_MSp_SpNb = nullptr;
441  fCanvD_MSp_SpDs = nullptr;
442  fCanvD_SSp_SpNb = nullptr;
443  fCanvD_SSp_SpDs = nullptr;
444  fCanvD_Adc_EvDs = nullptr;
445  fCanvD_Adc_EvNb = nullptr;
446  fCanvH_Ped_Date = nullptr;
447  fCanvH_TNo_Date = nullptr;
448  fCanvH_MCs_Date = nullptr;
449  fCanvH_LFN_Date = nullptr;
450  fCanvH_HFN_Date = nullptr;
451  fCanvH_SCs_Date = nullptr;
452  fCanvH_Ped_RuDs = nullptr;
453  fCanvH_TNo_RuDs = nullptr;
454  fCanvH_MCs_RuDs = nullptr;
455  fCanvH_LFN_RuDs = nullptr;
456  fCanvH_HFN_RuDs = nullptr;
457  fCanvH_SCs_RuDs = nullptr;
458 
459 
460  fClosedH1SamePlus = kFALSE; // (Canvas Closed SIGNAL)
461  fClosedD_NOE_ChNb = kFALSE;
462  fClosedD_NOE_ChDs = kFALSE;
463  fClosedD_Ped_ChNb = kFALSE;
464  fClosedD_Ped_ChDs = kFALSE;
465  fClosedD_TNo_ChNb = kFALSE;
466  fClosedD_TNo_ChDs = kFALSE;
467  fClosedD_MCs_ChNb = kFALSE;
468  fClosedD_MCs_ChDs = kFALSE;
469  fClosedD_LFN_ChNb = kFALSE;
470  fClosedD_LFN_ChDs = kFALSE;
471  fClosedD_HFN_ChNb = kFALSE;
472  fClosedD_HFN_ChDs = kFALSE;
473  fClosedD_SCs_ChNb = kFALSE;
474  fClosedD_SCs_ChDs = kFALSE;
475  fClosedD_MSp_SpNb = kFALSE;
476  fClosedD_MSp_SpDs = kFALSE;
477  fClosedD_SSp_SpNb = kFALSE;
478  fClosedD_SSp_SpDs = kFALSE;
479  fClosedD_Adc_EvDs = kFALSE;
480  fClosedD_Adc_EvNb = kFALSE;
481  fClosedH_Ped_Date = kFALSE;
482  fClosedH_TNo_Date = kFALSE;
483  fClosedH_MCs_Date = kFALSE;
484  fClosedH_LFN_Date = kFALSE;
485  fClosedH_HFN_Date = kFALSE;
486  fClosedH_SCs_Date = kFALSE;
487  fClosedH_Ped_RuDs = kFALSE;
488  fClosedH_TNo_RuDs = kFALSE;
489  fClosedH_MCs_RuDs = kFALSE;
490  fClosedH_LFN_RuDs = kFALSE;
491  fClosedH_HFN_RuDs = kFALSE;
492  fClosedH_SCs_RuDs = kFALSE;
493 
494  fCurrentPad = nullptr; // (Init)
495 
496  fPadH1SamePlus = nullptr;
497  fPadD_NOE_ChNb = nullptr;
498  fPadD_NOE_ChDs = nullptr;
499  fPadD_Ped_ChNb = nullptr;
500  fPadD_Ped_ChDs = nullptr;
501  fPadD_TNo_ChNb = nullptr;
502  fPadD_TNo_ChDs = nullptr;
503  fPadD_MCs_ChNb = nullptr;
504  fPadD_MCs_ChDs = nullptr;
505  fPadD_LFN_ChNb = nullptr;
506  fPadD_LFN_ChDs = nullptr;
507  fPadD_HFN_ChNb = nullptr;
508  fPadD_HFN_ChDs = nullptr;
509  fPadD_SCs_ChNb = nullptr;
510  fPadD_SCs_ChDs = nullptr;
511  fPadD_MSp_SpNb = nullptr;
512  fPadD_MSp_SpDs = nullptr;
513  fPadD_SSp_SpNb = nullptr;
514  fPadD_SSp_SpDs = nullptr;
515  fPadD_Adc_EvDs = nullptr;
516  fPadD_Adc_EvNb = nullptr;
517  fPadH_Ped_Date = nullptr;
518  fPadH_TNo_Date = nullptr;
519  fPadH_MCs_Date = nullptr;
520  fPadH_LFN_Date = nullptr;
521  fPadH_HFN_Date = nullptr;
522  fPadH_SCs_Date = nullptr;
523  fPadH_Ped_RuDs = nullptr;
524  fPadH_TNo_RuDs = nullptr;
525  fPadH_MCs_RuDs = nullptr;
526  fPadH_LFN_RuDs = nullptr;
527  fPadH_HFN_RuDs = nullptr;
528  fPadH_SCs_RuDs = nullptr;
529 
530  fPavTxtH1SamePlus = nullptr; // (Init)
531  fPavTxtD_NOE_ChNb = nullptr;
532  fPavTxtD_NOE_ChDs = nullptr;
533  fPavTxtD_Ped_ChNb = nullptr;
534  fPavTxtD_Ped_ChDs = nullptr;
535  fPavTxtD_TNo_ChNb = nullptr;
536  fPavTxtD_TNo_ChDs = nullptr;
537  fPavTxtD_MCs_ChNb = nullptr;
538  fPavTxtD_MCs_ChDs = nullptr;
539  fPavTxtD_LFN_ChNb = nullptr;
540  fPavTxtD_LFN_ChDs = nullptr;
541  fPavTxtD_HFN_ChNb = nullptr;
542  fPavTxtD_HFN_ChDs = nullptr;
543  fPavTxtD_SCs_ChNb = nullptr;
544  fPavTxtD_SCs_ChDs = nullptr;
545  fPavTxtD_MSp_SpNb = nullptr;
546  fPavTxtD_MSp_SpDs = nullptr;
547  fPavTxtD_SSp_SpNb = nullptr;
548  fPavTxtD_SSp_SpDs = nullptr;
549  fPavTxtD_Adc_EvDs = nullptr;
550  fPavTxtD_Adc_EvNb = nullptr;
551  fPavTxtH_Ped_Date = nullptr;
552  fPavTxtH_TNo_Date = nullptr;
553  fPavTxtH_MCs_Date = nullptr;
554  fPavTxtH_LFN_Date = nullptr;
555  fPavTxtH_HFN_Date = nullptr;
556  fPavTxtH_SCs_Date = nullptr;
557  fPavTxtH_Ped_RuDs = nullptr;
558  fPavTxtH_TNo_RuDs = nullptr;
559  fPavTxtH_MCs_RuDs = nullptr;
560  fPavTxtH_LFN_RuDs = nullptr;
561  fPavTxtH_HFN_RuDs = nullptr;
562  fPavTxtH_SCs_RuDs = nullptr;
563 
564  fImpH1SamePlus = nullptr; // (Init)
565  fImpD_NOE_ChNb = nullptr;
566  fImpD_NOE_ChDs = nullptr;
567  fImpD_Ped_ChNb = nullptr;
568  fImpD_Ped_ChDs = nullptr;
569  fImpD_TNo_ChNb = nullptr;
570  fImpD_TNo_ChDs = nullptr;
571  fImpD_MCs_ChNb = nullptr;
572  fImpD_MCs_ChDs = nullptr;
573  fImpD_LFN_ChNb = nullptr;
574  fImpD_LFN_ChDs = nullptr;
575  fImpD_HFN_ChNb = nullptr;
576  fImpD_HFN_ChDs = nullptr;
577  fImpD_SCs_ChNb = nullptr;
578  fImpD_SCs_ChDs = nullptr;
579  fImpD_MSp_SpNb = nullptr;
580  fImpD_MSp_SpDs = nullptr;
581  fImpD_SSp_SpNb = nullptr;
582  fImpD_SSp_SpDs = nullptr;
583  fImpD_Adc_EvDs = nullptr;
584  fImpD_Adc_EvNb = nullptr;
585  fImpH_Ped_Date = nullptr;
586  fImpH_TNo_Date = nullptr;
587  fImpH_MCs_Date = nullptr;
588  fImpH_LFN_Date = nullptr;
589  fImpH_HFN_Date = nullptr;
590  fImpH_SCs_Date = nullptr;
591  fImpH_Ped_RuDs = nullptr;
592  fImpH_TNo_RuDs = nullptr;
593  fImpH_MCs_RuDs = nullptr;
594  fImpH_LFN_RuDs = nullptr;
595  fImpH_HFN_RuDs = nullptr;
596  fImpH_SCs_RuDs = nullptr;
597 
598  fNbBinsProj = 100; // number of bins for histos in option Projection
599 
600  //.................................... Miscellaneous parameters (Init)
601 
608 
615 
616  fNbOfExistingRuns = 0;
617 
618  fFapNbOfRuns = -1; // INIT NUMBER OF RUNS: set to -1
619  fFapMaxNbOfRuns = -1; // INIT MAXIMUM NUMBER OF RUNS: set to -1
620 
621  fFapFileRuns.Resize(charArrLen);
622  fFapFileRuns = "(file with list of runs parameters: no info)";
623 
624  fStartEvolTime = 0;
625  fStopEvolTime = 0;
626  fStartEvolDate = "Start date: not known";
627  fStopEvolDate = "Stop date: not known";
628 
629  fStartEvolRun = 0;
630  fStopEvolRun = 0;
631 
632  fRunType = "Run type: not known";
633 
634  fFapNbOfEvts = 0;
635 
636  fMyRootFileName.Resize(charArrLen);
637  fMyRootFileName = "No ROOT file name available (fMyRootFileName).";
638 
639  fFapAnaType = "Analysis name: not known"; // Init Type of analysis
640  fFapNbOfSamples = 0; // Init Nb of required samples
641  fFapRunNumber = 0; // Init Run number
642  fFapFirstReqEvtNumber = 0; // Init First requested event number
643  fFapLastReqEvtNumber = 0; // Init Last requested event number
644  fFapReqNbOfEvts = 0; // Init Requested number of events
645  fFapStexNumber = 0; // Init Stex number
646 
647  //------------------ Init read file flags
648  fAlreadyRead = 1;
649  fMemoAlreadyRead = 0;
650  fTobeRead = 0;
651  fZerv = 0;
652  fUnev = 1;
653  TVectorD fReadHistoDummy(fUnev);
654  TMatrixD fReadMatrixDummy(fUnev, fUnev);
655 
656  //------------------ Init fAsciiFileName
657  fAsciiFileName = "?";
658 
659 } // end of Init()
660 
661 //----------------------------------------------------------------------------------------
663 {
664  // Set Subdetector (EB or EE)
665 
666  fFlagSubDet.Resize(charArrLen);
667  fFlagSubDet = fEcal->GetEcalSubDetector(); // fFlagSubDet = "EB" or "EE"
668 
669  //.................................. Init specific EB/EE parameters ( SetEcalSubDetector(...) )
670  fFapStexName.Resize(charArrLen);
671  fFapStexName = "no info for Stex";
672  fFapStinName.Resize(charArrLen);
673  fFapStinName = "no info for Stin";
674  fFapXtalName.Resize(charArrLen);
675  fFapXtalName = "no info for Xtal";
676  fFapEchaName.Resize(charArrLen);
677  fFapEchaName = "no info for Echa";
678 
679  if( fFlagSubDet == "EB" )
680  {
681  fFapStexName = "SM";
682  fFapStinName = "Tower";
683  fFapXtalName = "Xtal";
684  fFapEchaName = "Chan";
686  }
687 
688  if( fFlagSubDet == "EE" )
689  {
690  fFapStexName = "Dee";
691  fFapStinName = "SC";
692  fFapXtalName = "Xtal";
693  fFapEchaName = "Chan";
695  fFapStexDir = "right";
696  fFapStinQuadType = "top";
697  }
698 
699  //........................ init code plot type (SetEcalSubDetector)
700  fOnlyOnePlot.Resize(charArrLen);
702 
703  fSeveralPlot.Resize(charArrLen);
705 
706  fSameOnePlot.Resize(charArrLen);
708 
711 
713 
714 } // ---------------- end of SetEcalSubDetector(...) ----------------
715 
716 //--------------------------------------------------------------------------------------------
717 //
718 // FileParameters(s)(...)
719 //
720 //--------------------------------------------------------------------------------------------
721 
722 //===> DON'T SUPPRESS: THESE METHODS ARE CALLED BY TEcnaGui and can be called by any other program
723 void TEcnaHistos::FileParameters(const TString& xArgAnaType, const Int_t& xArgNbOfSamples,
724  const Int_t& xArgRunNumber, const Int_t& xArgFirstReqEvtNumber,
725  const Int_t& xArgLastReqEvtNumber, const Int_t& xArgReqNbOfEvts,
726  const Int_t& xArgStexNumber)
727 {
728 // Set parameters for reading the right ECNA results file
729 
730  fFapAnaType = xArgAnaType;
731  fFapNbOfSamples = xArgNbOfSamples;
732  fFapRunNumber = xArgRunNumber;
733  fFapFirstReqEvtNumber = xArgFirstReqEvtNumber;
734  fFapLastReqEvtNumber = xArgLastReqEvtNumber;
735  fFapReqNbOfEvts = xArgReqNbOfEvts;
736  fFapStexNumber = xArgStexNumber;
737 
738  InitSpecParBeforeFileReading(); // SpecPar = Special Parameters (dates, times, run types)
739 }
740 
742 {
743 // Set parameters for reading the right ECNA results file
744 
745  InitSpecParBeforeFileReading(); // SpecPar = Special Parameters (dates, times, run types)
746 
747  //............... Filename parameter values
748  fFapAnaType = MyRootFile->GetAnalysisName();
749  fFapNbOfSamples = MyRootFile->GetNbOfSamples();
750  fFapRunNumber = MyRootFile->GetRunNumber();
753  fFapReqNbOfEvts = MyRootFile->GetReqNbOfEvts();
754  fFapStexNumber = MyRootFile->GetStexNumber();
755 
756  //............... parameter values from file contents
757  fStartDate = MyRootFile->GetStartDate();
758  fStopDate = MyRootFile->GetStopDate();
759  fRunType = MyRootFile->GetRunType();
760 
762 }
763 
764 //=============================================================================================
765 // Set general title
766 // Set lin or log scale on X or Y axis
767 // Set color palette
768 // Set start and stop date
769 // Set run type
770 //=============================================================================================
771 //............................................................................................
772 void TEcnaHistos::GeneralTitle(const TString& title)
773 {
774  fFlagGeneralTitle = title.Data();
775 }
776 void TEcnaHistos::SetHistoScaleX(const TString& option_scale)
777 {
778  fFlagScaleX = "LIN";
779  if ( option_scale == "LOG" ){fFlagScaleX = "LOG";}
780 }
781 void TEcnaHistos::SetHistoScaleY(const TString& option_scale)
782 {
783  fFlagScaleY = "LIN";
784  if ( option_scale == "LOG" ){fFlagScaleY = "LOG";}
785 }
786 void TEcnaHistos::SetHistoColorPalette (const TString& option_palette)
787 {
788  fFlagColPal = "Black/Red/Blue";
789  if ( !(option_palette == "Rainbow" || option_palette == "rainbow") ){fFlagColPal = "Black/Red/Blue";}
790  if ( option_palette == "Rainbow" || option_palette == "rainbow" ){fFlagColPal = "Rainbow";}
791 }
792 void TEcnaHistos::StartStopDate(const TString& start_date, const TString& stop_date)
793 {
794  fStartDate = start_date.Data();
795  fStopDate = stop_date.Data();
796 }
797 void TEcnaHistos::RunType(const TString& run_type)
798 {
799  fRunType = run_type.Data();
800 }
801 void TEcnaHistos::NumberOfEvents(const Int_t& nb_of_evts)
802 {
803  fFapNbOfEvts = nb_of_evts;
804 }
805 //====================== return status for root file and data existence
808 
809 //=======================================================================================
810 //
811 // ( R e a d A n d ) P l o t (1D , 2D , History)
812 //
813 //=======================================================================================
814 //---------------------------------------------------------------------------------------------
815 // TechHistoCode list modification (06/10/09)
816 //
817 // D = Detector Plot ChNb = Channel Number
818 // ChDs = Channel Distribution (Y projection)
819 //
820 // H = History Plot Date = date in format YYMMJJ hhmmss
821 // RuDs = Run distribution
822 //
823 // old code new code std code X std code Y (std = standard)
824 //
825 // * 1 H1NbOfEvtsGlobal D_NOE_ChNb Xtal NOE NOE = Number Of Events
826 // * 2 H1NbOfEvtsProj D_NOE_ChDs NOE NOX NOX = Number Of Xtals
827 // * 3 H1EvEvGlobal D_Ped_ChNb Xtal Ped Ped = Pedestal
828 // * 4 H1EvEvProj D_Ped_ChDs Ped NOX
829 // * 5 H1EvSigGlobal D_TNo_ChNb Xtal TNo TNo = Total Noise
830 // * 6 H1EvSigProj D_TNo_ChDs TNo NOX
831 // * 7 H1SigEvGlobal D_LFN_ChNb Xtal LFN LFN = Low Frequency noise
832 // * 8 H1SigEvProj D_LFN_ChDs LFN NOX
833 // * 9 H1SigSigGlobal D_HFN_ChNb Xtal HFN HFN = High Frequency noise
834 // * 10 H1SigSigProj D_HFN_ChDs HFN NOX
835 // * 11 H1EvCorssGlobal D_MCs_ChNb Xtal MCs MCs = Mean correlations between samples
836 // * 12 H1EvCorssProj D_MCs_ChDs MCs NOX
837 // * 13 H1SigCorssGlobal D_SCs_ChNb Xtal SCs SCs = Sigma of the correlations between samples
838 // * 14 H1SigCorssProj D_SCs_ChDs SCs NOX
839 // * 15 Ev D_MSp_SpNb Sample MSp MSp = Means of the samples
840 // * 16 EvProj D_MSp_SpDs MSp NOS NOS = Number of samples
841 // * 17 Sigma D_SSp_SpNb Sample SSp SSp = Sigmas of the samples
842 // * 18 SigmaProj D_SSp_SpDs SSp NOS
843 // * 19 SampTime D_Adc_EvNb Event Adc Adc = ADC count as a function of Event number
844 // * 20 AdcProj D_Adc_EvDs Adc NOE EvDs = Event distribution
845 // * 21 EvolEvEv H_Ped_Date Time Ped Time = date YY/MM/DD hh:mm:ss
846 // * 22 EvolEvEvProj H_Ped_RuDs Ped NOR NOR = Number Of Runs
847 // * 23 EvolEvSig H_TNo_Date Time TNo
848 // * 24 EvolEvSigProj H_TNo_RuDs TNo NOR
849 // * 25 EvolSigEv H_LFN_Date Time LFN
850 // * 26 EvolSigEvProj H_LFN_RuDs LFN NOR
851 // * 27 EvolSigSig H_HFN_Date Time HFN
852 // * 28 EvolSigSigProj H_HFN_RuDs HFN NOR
853 // * 29 EvolEvCorss H_MCs_Date Time MCs
854 // * 30 EvolEvCorssProj H_MCs_RuDs MCs NOR
855 // * 31 EvolSigCorss H_SCs_Date Time SCs
856 // * 32 EvolSigCorssProj H_SCs_RuDs SCs NOR
857 //
858 //---------------------------------------------------------------------------------------------
859 
860 //---------------------------------------------------------------------------------------
861 //
862 // (ReadAnd)PlotMatrix
863 //
864 //---------------------------------------------------------------------------------------
865 //................................ Corcc[for 1 Stex] (big matrix), Cortt[for 1 Stex]
866 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix_corcc,
867  const TString& UserCorOrCov, const TString& UserBetweenWhat)
868 {PlotMatrix(read_matrix_corcc, UserCorOrCov, UserBetweenWhat, "");}
869 
870 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix_corcc,
871  const TString& UserCorOrCov, const TString& UserBetweenWhat,
872  const TString& UserPlotOption)
873 {
874  TString CallingMethod = "2D";
875 
876  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
877 
878  TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
879  TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
880 
881  if( BetweenWhat != "?" && CorOrCov != "?" )
882  {
883  if( BetweenWhat == "MttLF" || BetweenWhat == "MttHF" )
884  {
885  fAlreadyRead = 1;
886  ViewMatrix(read_matrix_corcc, fAlreadyRead,
887  fZerv, fZerv, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
888  }
889  if( BetweenWhat == "MccLF" ){StexHocoVecoLHFCorcc("LF");} // forced to Read file and Plot
890  if( BetweenWhat == "MccHF" ){StexHocoVecoLHFCorcc("HF");} // forced to Read file and Plot
891  }
892  else
893  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
894  std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;}
895 }
896 
897 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat)
898 {PlotMatrix(UserCorOrCov, UserBetweenWhat, "");}
899 
900 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat,
901  const TString& UserPlotOption)
902 {
903  TString CallingMethod = "2D";
904 
905  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
906 
907  TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
908  TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
909 
910  if( BetweenWhat != "?" && CorOrCov != "?" )
911  {
912  if( BetweenWhat == "MttLF" || BetweenWhat == "MttHF" )
913  {
915  fZerv, fZerv, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
916  }
917  if( BetweenWhat == "MccLF" ){StexHocoVecoLHFCorcc("LF");} // Plot only
918  if( BetweenWhat == "MccHF" ){StexHocoVecoLHFCorcc("HF");} // Plot only
919  }
920  else
921  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
922  std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;}
923 }
924 
925 //....................................... Corcc for channels (cStexStin_A, cStexStin_B)
926 // Corss, Covss for one channel (-> i0StinEcha)
927 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix,
928  const TString& UserCorOrCov, const TString& UserBetweenWhat,
929  const Int_t& arg_n1, const Int_t& arg_n2)
930 {PlotMatrix(read_matrix, UserCorOrCov, UserBetweenWhat, arg_n1, arg_n2, "");}
931 
932 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix,
933  const TString& UserCorOrCov, const TString& UserBetweenWhat,
934  const Int_t& arg_n1, const Int_t& arg_n2,
935  const TString& UserPlotOption)
936 {
937  TString CallingMethod = "2D";
938 
939  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
940 
941  TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
942  TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
943 
944  if( BetweenWhat != "?" && CorOrCov != "?" )
945  {
946  if( BetweenWhat == "MccLF" || BetweenWhat == "MccHF" )
947  {
948  Int_t cStexStin_A = arg_n1;
949  Int_t cStexStin_B = arg_n2;
950  fAlreadyRead = 1;
951  ViewMatrix(read_matrix, fAlreadyRead,
952  cStexStin_A, cStexStin_B, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
953  }
954 
955  if( BetweenWhat == "Mss" )
956  {
957  Int_t n1StexStin = arg_n1;
958  Int_t i0StinEcha = arg_n2;
959  if( fFlagSubDet == "EE" ){n1StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, arg_n1);}
960  fAlreadyRead = 1;
961  ViewMatrix(read_matrix, fAlreadyRead,
962  n1StexStin, fZerv, i0StinEcha, CorOrCov, BetweenWhat, StandardPlotOption);
963  }
964  }
965  else
966  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
967  std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;}
968 }
969 
970 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat,
971  const Int_t& arg_n1, const Int_t& arg_n2)
972 {PlotMatrix(UserCorOrCov, UserBetweenWhat, arg_n1, arg_n2, "");}
973 
974 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat,
975  const Int_t& arg_n1, const Int_t& arg_n2,
976  const TString& UserPlotOption)
977 {
978  TString CallingMethod = "2D";
979 
980  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
981 
982  TString StandardBetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
983  TString StandardCorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
984 
985  if( StandardBetweenWhat != "?" && StandardCorOrCov != "?" )
986  {
987  if( StandardBetweenWhat == "MccLF" || StandardBetweenWhat == "MccHF" )
988  {
989  Int_t cStexStin_A = arg_n1;
990  Int_t cStexStin_B = arg_n2;
992  cStexStin_A, cStexStin_B, fZerv, StandardCorOrCov, StandardBetweenWhat, StandardPlotOption);
993  }
994 
995  if( StandardBetweenWhat == "Mss" )
996  {
997  Int_t n1StexStin = arg_n1;
998  Int_t i0StinEcha = arg_n2;
999  if( fFlagSubDet == "EE" ){n1StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, arg_n1);}
1000 
1002  n1StexStin, fZerv, i0StinEcha, StandardCorOrCov, StandardBetweenWhat, StandardPlotOption);
1003  }
1004  }
1005  else
1006  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1007  std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1008 }
1009 
1010 //---------------------------------------------------------------------------------------
1011 //
1012 // (ReadAnd)PlotDetector
1013 //
1014 //---------------------------------------------------------------------------------------
1015 //.................................... 2D plots for Stex OR Stas
1016 void TEcnaHistos::PlotDetector(const TString& UserHistoCode, const TString& UserDetector)
1017 {
1018  TString CallingMethod = "2DS";
1019 
1020  TString StandardHistoCode = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, UserHistoCode);
1021  if( StandardHistoCode != "?" )
1022  {
1023  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(StandardHistoCode);
1024  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1025  if( StandardDetectorCode != "?" )
1026  {
1027  //if( StandardDetectorCode == "SM" || StandardDetectorCode == "EB" )
1028  // {fEcal->SetEcalSubDetector("EB");}
1029  //if( StandardDetectorCode == "Dee" || StandardDetectorCode == "EE" )
1030  // {fEcal->SetEcalSubDetector("EE");}
1031 
1032  if( StandardDetectorCode == "SM" || StandardDetectorCode == "Dee" )
1033  {ViewStex(fReadHistoDummy, fTobeRead, TechHistoCode);}
1034  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" )
1035  {ViewStas(fReadHistoDummy, fTobeRead, TechHistoCode);}
1036  }
1037  else
1038  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1039  std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1040  }
1041  else
1042  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1043  std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1044 }
1045 
1046 void TEcnaHistos::PlotDetector(const TVectorD& read_histo, const TString& UserHistoCode, const TString& UserDetector)
1047 {
1048  TString CallingMethod = "2DS";
1049 
1050  TString StandardHistoCode = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, UserHistoCode);
1051  if( StandardHistoCode != "?" )
1052  {
1053  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(StandardHistoCode);
1054  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1055  if( StandardDetectorCode != "?" )
1056  {
1057  fAlreadyRead = 1;
1058 
1059  //if( StandardDetectorCode == "SM" || StandardDetectorCode == "EB" )
1060  // {fEcal->SetEcalSubDetector("EB");}
1061  //if( StandardDetectorCode == "Dee" || StandardDetectorCode == "EE" )
1062  // {fEcal->SetEcalSubDetector("EE");}
1063 
1064  if( StandardDetectorCode == "SM" || StandardDetectorCode == "Dee" )
1065  {ViewStex(read_histo, fAlreadyRead, TechHistoCode);}
1066  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" )
1067  {ViewStas(read_histo, fAlreadyRead, TechHistoCode);}
1068  }
1069  else
1070  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1071  std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1072  }
1073  else
1074  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1075  std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1076 }
1077 
1078 //---------------------------------------------------------------------------------------
1079 //
1080 // (ReadAnd)Plot1DHisto
1081 //
1082 //---------------------------------------------------------------------------------------
1083 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1084  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1085  const TString& UserDetector)
1086 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, UserDetector, "");}
1087 
1088 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1089  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1090  const TString& UserDetector,
1091  const TString& UserPlotOption)
1092 {
1093  TString CallingMethod = "1D";
1094 
1095  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1096 
1097  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1098  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1099 
1100  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1101  {
1102  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1103  if( fAlreadyRead > 1 ){fAlreadyRead = 1;}
1104  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1105  if( StandardDetectorCode != "?" )
1106  {
1107  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" ){fFapStexNumber = 0;}
1108  ViewHisto(InputHisto, fAlreadyRead, fZerv, fZerv, fZerv, TechHistoCode, StandardPlotOption);
1109  }
1110  else
1111  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1112  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1113  }
1114  else
1115  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1116  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1117 }
1118 
1119 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1120  const TString& UserDetector)
1121 {Plot1DHisto(User_X_Quantity, User_Y_Quantity, UserDetector, "");}
1122 
1123 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1124  const TString& UserDetector, const TString& UserPlotOption)
1125 {
1126  TString CallingMethod = "1D";
1127 
1128  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1129 
1130  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1131  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1132 
1133  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1134  {
1135  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1136  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1137  if( StandardDetectorCode != "?" )
1138  {
1139  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" ){fFapStexNumber = 0;}
1140  ViewHisto(fReadHistoDummy, fTobeRead, fZerv, fZerv, fZerv, TechHistoCode, StandardPlotOption);
1141  }
1142  else
1143  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1144  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1145  }
1146  else
1147  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1148  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1149 }
1150 
1151 
1152 
1153 //=> BUG SCRAM? Si on enleve la methode ci-dessous, ca passe a la compilation de test/EcnaHistosExample2.cc
1154 // (qui appelle cette methode) et ca se plante a l'execution (voir test/TEcnaHistosExample2.cc).
1155 #define PLUD
1156 #ifdef PLUD
1157 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1158  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1159  const Int_t& n1StexStin)
1160 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, "");}
1161 
1162 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1163  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1164  const Int_t& n1StexStin,
1165  const TString& UserPlotOption)
1166 {
1167  TString CallingMethod = "1DX";
1168  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1169  Int_t i0StinEcha = 0;
1170  Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, StandardPlotOption);
1171 }
1172 #endif // PLUD
1173 
1174 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1175  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1176  const Int_t& n1StexStin, const Int_t& i0StinEcha)
1177 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, "");}
1178 
1179 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1180  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1181  const Int_t& n1StexStin, const Int_t& i0StinEcha,
1182  const TString& UserPlotOption)
1183 {
1184  TString CallingMethod = "1D";
1185  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1186  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1187  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1188 
1189  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1190 
1191  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1192  {
1193  fAlreadyRead = 1;
1194  if( StandardPlotOption != fAllXtalsInStinPlot )
1195  {
1196  ViewHisto(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, fZerv, TechHistoCode, StandardPlotOption);
1197  }
1198 
1199  if( StandardPlotOption == fAllXtalsInStinPlot && fAlreadyRead >= 1 && fAlreadyRead <= fEcal->MaxCrysInStin() )
1200  {
1201  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "MSp" )
1202  {XtalSamplesEv(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1203  if( Standard_X_Quantity == "MSp" && Standard_Y_Quantity == "NOS" )
1204  {EvSamplesXtals(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1205  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "SSp" )
1206  {XtalSamplesSigma(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1207  if( Standard_X_Quantity == "SSp" && Standard_Y_Quantity == "NOS" )
1208  {SigmaSamplesXtals(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1209  }
1210  }
1211  else
1212  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1213  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1214 }
1215 
1216 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1217  const Int_t& n1StexStin, const Int_t& i0StinEcha)
1218 {Plot1DHisto(User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, "");}
1219 
1220 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1221  const Int_t& n1StexStin, const Int_t& i0StinEcha,
1222  const TString& UserPlotOption)
1223 {
1224  TString CallingMethod = "1D";
1225 
1226  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1227 
1228  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1229  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1230 
1231  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1232  {
1233  if( StandardPlotOption != fAllXtalsInStinPlot )
1234  {
1235  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1236  ViewHisto(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, fZerv, TechHistoCode, StandardPlotOption);
1237  }
1238  if( StandardPlotOption == fAllXtalsInStinPlot && fAlreadyRead >= 1 && fAlreadyRead <= fEcal->MaxCrysInStin() )
1239  {
1240  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "MSp" )
1241  {XtalSamplesEv(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1242  if( Standard_X_Quantity == "MSp" && Standard_Y_Quantity == "NOS" )
1243  {EvSamplesXtals(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1244  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "SSp" )
1245  {XtalSamplesSigma(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1246  if( Standard_X_Quantity == "SSp" && Standard_Y_Quantity == "NOS" )
1247  {SigmaSamplesXtals(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1248  }
1249  }
1250  else
1251  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1252  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1253 }
1254 
1255 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1256  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1257  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample)
1258 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, n1Sample, "");}
1259 
1260 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1261  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1262  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample,
1263  const TString& UserPlotOption)
1264 {
1265  TString CallingMethod = "1D";
1266 
1267  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1268 
1269  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1270  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1271 
1272  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1273 
1274  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1275  {
1276  Int_t i0Sample = n1Sample-1;
1277  fAlreadyRead = 1;
1278  ViewHisto(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, i0Sample, TechHistoCode, StandardPlotOption);
1279  }
1280  else
1281  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1282  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1283 }
1284 
1285 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1286  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample)
1287 {Plot1DHisto(User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, n1Sample, "");}
1288 
1289 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1290  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample,
1291  const TString& UserPlotOption)
1292 {
1293  TString CallingMethod = "1D";
1294 
1295  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1296 
1297  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1298  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1299 
1300  Int_t i0Sample = n1Sample-1;
1301 
1302  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1303  {
1304  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1305  ViewHisto(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, i0Sample, TechHistoCode, StandardPlotOption);
1306  }
1307  else
1308  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1309  std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1310 }
1311 
1312 //---------------------------------------------------------------------------------------
1313 //
1314 // (ReadAnd)PlotHistory
1315 //
1316 //---------------------------------------------------------------------------------------
1317 void TEcnaHistos::PlotHistory(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1318  const TString& list_of_run_file_name,
1319  const Int_t& StexStin_A, const Int_t& i0StinEcha)
1320 {PlotHistory(User_X_Quantity, User_Y_Quantity, list_of_run_file_name, StexStin_A, i0StinEcha, "");}
1321 
1322 void TEcnaHistos::PlotHistory(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1323  const TString& list_of_run_file_name,
1324  const Int_t& StexStin_A, const Int_t& i0StinEcha,
1325  const TString& UserPlotOption)
1326 {
1327  TString CallingMethod = "Time";
1328 
1329  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1330 
1331  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1332  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1333 
1334  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1335  {
1336  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1337  ViewHistime(list_of_run_file_name, StexStin_A, i0StinEcha, TechHistoCode, StandardPlotOption);
1338  }
1339  else
1340  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1341  std::cout << "!TEcnaHistos::PlotHistory(...)> Histo cannot be reached." << fTTBELL << std::endl;}
1342 }
1343 
1344 //=============================================================================================
1345 //
1346 // " V I E W " M E T H O D S
1347 //
1348 //=============================================================================================
1349 
1350 //=============================================================================================================
1351 //
1352 // ViewMatrix(***)
1353 //
1354 // arg_read_matrix: 2D array
1355 // arg_AlreadyRead: =1 <=> use arg_read_matrix
1356 // =0 <=> read the 2D array in this method with TEcnaRead
1357 // StexStin_A: tower number in SM (if EB) OR SC "ECNA" number in Dee (if EE)
1358 // StexStin_B: tower' number in SM (if EB) OR SC' "ECNA" number in Dee (if EE)
1359 // MatrixBinIndex: channel number in tower (if EB) OR in SC (if EE)
1360 // CorOrCov: flag CORRELATION/COVARIANCE
1361 // BetweenWhat: flag BETWEEN SAMPLES / BETWEEN CHANNELS / BETWEEN TOWERS / BETWEEN SCs / LF, HF, ...
1362 // PlotOption: ROOT 2D histos draw options (COLZ, LEGO, ...) + additional (ASCII)
1363 //
1364 // MatrixBinIndex: = i0StinEcha if cov(s,s'), cor(s,s')
1365 // = 0 if cov(c,c'), cor(c,c'), cov(Stin,Stin'), cor(Stin,Stin')
1366 //
1367 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1368 // ViewMatrix(StexStin_A, 0, i0StinEcha, CorOrCov, "Mss", PlotOption)
1369 // Output:
1370 // Plot of cov(s,s') or cor(s,s') matrix for i0StinEcha of StexStin_A
1371 //
1372 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1373 // ViewMatrix(StexStin_A, StexStin_B, 0, CorOrCov, "Mcc", PlotOption)
1374 // Output:
1375 // Plot LF-HF Corcc matrix for Stins: (StexStin_A, StexStin_B)
1376 //
1377 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1378 // ViewMatrix( 0, 0, 0, CorOrCov, "Mcc", PlotOption)
1379 // Output:
1380 // Plot of LF-HF Corcc matrix for Stex (big matrix)
1381 //
1382 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1383 // ViewMatrix( 0, 0, 0, CorOrCov, "Mtt", PlotOption)
1384 // Output:
1385 // Plot of LF-HF Cortt matrix
1386 //
1387 //=============================================================================================================
1388 void TEcnaHistos::ViewMatrix(const TMatrixD& arg_read_matrix, const Int_t& arg_AlreadyRead,
1389  const Int_t& StexStin_A, const Int_t& StexStin_B,
1390  const Int_t& MatrixBinIndex, const TString& CorOrCov,
1391  const TString& BetweenWhat, const TString& PlotOption)
1392 {
1393  //Plot correlation or covariance matrix between samples or channels or Stins
1394 
1395  if( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) )
1396  {
1397  Bool_t OKArray = kFALSE;
1398  Bool_t OKData = kFALSE;
1399  TVectorD vStin(fEcal->MaxStinEcnaInStex());
1400 
1401  if( arg_AlreadyRead == fTobeRead )
1402  {
1408  OKArray = fMyRootFile->LookAtRootFile();
1409  if( OKArray == kTRUE )
1410  {
1412  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
1413  // std::cout << "*TEcnaHistos::ViewMatrix(...)> Data are analyzed from file ----> "
1414  // << fp_name_short << std::endl;
1415  //...................................................................... (ViewMatrix)
1416  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vStin(i)=(Double_t)0.;}
1418 
1422 
1423  if( fMyRootFile->DataExist() == kTRUE ){OKData = kTRUE;}
1424  }
1425 
1426  }
1427  if( arg_AlreadyRead >= 1 )
1428  {
1429  OKArray = kTRUE;
1430  OKData = kTRUE;
1431  if( fFlagSubDet == "EB")
1432  {
1433  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vStin(i)=i;}
1434  }
1435  if( fFlagSubDet == "EE")
1436  {
1437  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++)
1438  {vStin(i)= fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i));}
1439  }
1440  }
1441 
1442  if ( OKArray == kTRUE ) // (ViewMatrix)
1443  {
1444  fStatusFileFound = kTRUE;
1445 
1446  if( OKData == kTRUE )
1447  {
1448  fStatusDataExist = kTRUE;
1449 
1450  Int_t Stin_X_ok = 0;
1451  Int_t Stin_Y_ok = 0;
1452 
1453  if( (BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) )
1454  {Stin_X_ok = 1; Stin_Y_ok = 1;}
1455  if( BetweenWhat == fBetweenSamples )
1456  {Stin_Y_ok = 1;}
1457 
1458  for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++)
1459  {
1460  if ( vStin(index_Stin) == StexStin_A ){Stin_X_ok = 1;}
1461  if ( vStin(index_Stin) == StexStin_B ){Stin_Y_ok = 1;}
1462  }
1463  //................................................................. (ViewMatrix)
1464  if( Stin_X_ok == 1 && Stin_Y_ok == 1 )
1465  {
1466  Int_t MatSize = -1;
1467  Int_t ReadMatSize = -1;
1468  Int_t i0StinEcha = -1;
1469 
1470  //-------------------------- Set values of ReadMatSize, MatSize, i0StinEcha
1471  if( BetweenWhat == fBetweenSamples )
1472  {ReadMatSize = fFapNbOfSamples; MatSize = fEcal->MaxSampADC(); i0StinEcha=(Int_t)MatrixBinIndex;}
1473 
1474  if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels )
1475  {ReadMatSize = fEcal->MaxCrysInStin(); MatSize = fEcal->MaxCrysInStin(); /*i0Sample=MatrixBinIndex;*/}
1476 
1477  if( (BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) )
1478  {ReadMatSize = fEcal->MaxStinEcnaInStex(); MatSize = fEcal->MaxStinInStex();}
1479 
1480  //------------------------------------------------------------------------------------- (ViewMatrix)
1481  if( ( BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins ) ||
1482  ( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels
1483  /* && (i0Sample >= 0) && (i0Sample < fFapNbOfSamples ) */ ) ||
1484  ( (BetweenWhat == fBetweenSamples) && (i0StinEcha >= 0) && (i0StinEcha < fEcal->MaxCrysInStin()) ) )
1485  {
1486  TMatrixD read_matrix(ReadMatSize, ReadMatSize);
1487  for(Int_t i=0; i-ReadMatSize<0; i++)
1488  {for(Int_t j=0; j-ReadMatSize<0; j++){read_matrix(i,j)=(Double_t)0.;}}
1489 
1490  Bool_t OKData = kFALSE;
1491  if( arg_AlreadyRead == fTobeRead )
1492  {
1493  if( BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix )
1494  {read_matrix =
1495  fMyRootFile->ReadCovariancesBetweenSamples(StexStin_A, i0StinEcha, ReadMatSize);}
1496 
1497  if( BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix )
1498  {read_matrix =
1499  fMyRootFile->ReadCorrelationsBetweenSamples(StexStin_A, i0StinEcha, ReadMatSize);}
1500 
1501  if( BetweenWhat == fLFBetweenChannels && CorOrCov == fCovarianceMatrix )
1502  {read_matrix =
1503  fMyRootFile->ReadLowFrequencyCovariancesBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1504 
1505  if( BetweenWhat == fLFBetweenChannels && CorOrCov == fCorrelationMatrix )
1506  {read_matrix =
1507  fMyRootFile->ReadLowFrequencyCorrelationsBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1508 
1509  if( BetweenWhat == fHFBetweenChannels && CorOrCov == fCovarianceMatrix )
1510  {read_matrix =
1511  fMyRootFile->ReadHighFrequencyCovariancesBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1512 
1513  if( BetweenWhat == fHFBetweenChannels && CorOrCov == fCorrelationMatrix )
1514  {read_matrix =
1515  fMyRootFile->ReadHighFrequencyCorrelationsBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1516 
1517  if( BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix )
1518  {read_matrix =
1520 
1521  if( BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix )
1522  {read_matrix =
1524  }
1525 
1526  OKData = fMyRootFile->DataExist();
1527  }
1528  else
1529  {
1530  read_matrix = arg_read_matrix;
1531  OKData = kTRUE;
1532  }
1533  //.......................................................... (ViewMatrix)
1534  if( OKData == kTRUE )
1535  {
1536  fStatusDataExist = kTRUE;
1537 
1538  if( PlotOption == "ASCII" )
1539  {
1540  WriteMatrixAscii(BetweenWhat, CorOrCov,
1541  StexStin_A, MatrixBinIndex, ReadMatSize, read_matrix);
1542  }
1543  else
1544  {
1545  //......................... matrix title (ViewMatrix)
1546  char f_in_mat_tit[charArrLen];
1547 
1548  if( BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix )
1549  {sprintf(f_in_mat_tit, "Covariance(Sample, Sample')");}
1550  if( BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix )
1551  {sprintf(f_in_mat_tit, "Correlation(Sample, Sample')");}
1552 
1553  if(fFlagSubDet == "EB" )
1554  {
1555  if( BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix )
1556  {sprintf(f_in_mat_tit,
1557  "Mean LF |Cor(Xtal,Xtal')| for each (Tower,Tower')");}
1558  if( BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix )
1559  {sprintf(f_in_mat_tit,
1560  "Mean HF |Cor(Xtal,Xtal')| for each (Tower,Tower')");}
1561  }
1562  if(fFlagSubDet == "EE" )
1563  {
1564  if( BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix )
1565  {sprintf(f_in_mat_tit,
1566  "Mean LF |Cor(Xtal,Xtal')| for each (SC,SC')");}
1567  if( BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix )
1568  {sprintf(f_in_mat_tit,
1569  "Mean HF |Cor(Xtal,Xtal')| for each (SC,SC')");}
1570  }
1571 
1572  if( BetweenWhat == fLFBetweenChannels && CorOrCov == fCorrelationMatrix )
1573  {
1574  if( fFlagSubDet == "EB" )
1575  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (Tow,Tow')");}
1576  if( fFlagSubDet == "EE" )
1577  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (SC,SC')");}
1578  }
1579  if( BetweenWhat == fHFBetweenChannels && CorOrCov == fCorrelationMatrix )
1580  {
1581  if( fFlagSubDet == "EB" )
1582  {sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') matrix elts for (Tow,Tow')");}
1583  if( fFlagSubDet == "EE" )
1584  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (SC,SC')");}
1585  }
1586 
1587  //................................. Axis parameters (ViewMatrix)
1588  TString axis_x_var_name;
1589  TString axis_y_var_name;
1590 
1591  char f_in_axis_x[charArrLen];
1592  char f_in_axis_y[charArrLen];
1593 
1594  if( BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins )
1595  {
1596  if( fFlagSubDet == "EB" )
1597  {sprintf(f_in_axis_x, " %s number ", fFapStinName.Data());}
1598  if( fFlagSubDet == "EE" )
1599  {sprintf(f_in_axis_x, " %s number for construction ", fFapStinName.Data());}
1600 
1601  axis_x_var_name = f_in_axis_x; axis_y_var_name = f_in_axis_x;
1602  }
1603  if( BetweenWhat == fBetweenSamples)
1604  {
1605  axis_x_var_name = " Sample "; axis_y_var_name = " Sample ";
1606  }
1607  if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels ){
1608  sprintf(f_in_axis_x, " Crystal %s %d ", fFapStinName.Data(), StexStin_A);
1609  sprintf(f_in_axis_y, " Crystal %s %d ", fFapStinName.Data(),StexStin_B);
1610  axis_x_var_name = f_in_axis_x; axis_y_var_name = f_in_axis_y;}
1611 
1612  Int_t nb_binx = MatSize;
1613  Int_t nb_biny = MatSize;
1614  Axis_t xinf_bid = (Axis_t)0.;
1615  Axis_t xsup_bid = (Axis_t)MatSize;
1616  Axis_t yinf_bid = (Axis_t)0.;
1617  Axis_t ysup_bid = (Axis_t)MatSize;
1618 
1619  if( (fFlagSubDet == "EE") &&
1620  (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins) )
1621  {
1622  if( fFapStexNumber == 1 || fFapStexNumber == 3 )
1623  {
1624  xinf_bid += fEcal->MaxStinInStex();
1625  xsup_bid += fEcal->MaxStinInStex();
1626  yinf_bid += fEcal->MaxStinInStex();
1627  ysup_bid += fEcal->MaxStinInStex();
1628  }
1629  }
1630  //................................................... histogram booking (ViewMatrix)
1631  TH2D* h_fbid0 = new TH2D("bidim", f_in_mat_tit,
1632  nb_binx, xinf_bid, xsup_bid,
1633  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
1634  h_fbid0->Reset();
1635 
1636  h_fbid0->GetXaxis()->SetTitle(axis_x_var_name);
1637  h_fbid0->GetYaxis()->SetTitle(axis_y_var_name);
1638 
1639  //------------------------------------------------ F I L L H I S T O (ViewMatrix)
1640  if( (fFlagSubDet == "EE") &&
1641  (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins) )
1642  {
1643  for(Int_t i = 0 ; i < ReadMatSize ; i++)
1644  {
1645  for(Int_t j = 0 ; j < ReadMatSize ; j++)
1646  {
1647  Int_t ip = i+1;
1648  Double_t xi_bid =
1650  Int_t jp = j+1;
1651  Double_t xj_bid =
1653  if( xi_bid > 0 && xj_bid > 0 )
1654  {
1655  Int_t xi_bid_m = xi_bid-1;
1656  Int_t xj_bid_m = xj_bid-1;
1657  h_fbid0->Fill(xi_bid_m, xj_bid_m, read_matrix(i,j));
1658  }
1659  }
1660  }
1661  }
1662  else
1663  {
1664  for(Int_t i = 0 ; i - ReadMatSize < 0 ; i++)
1665  {
1666  Double_t xi = (Double_t)i;
1667  for(Int_t j = 0 ; j < ReadMatSize ; j++)
1668  {
1669  Double_t xj = (Double_t)j;
1670  Double_t mat_val = (Double_t)read_matrix(i,j);
1671  h_fbid0->Fill(xi, xj, (Double_t)mat_val);
1672  }
1673  }
1674  }
1675  //--------------- H I S T O M I N / M A X M A N A G E M E N T (ViewMatrix)
1676 
1677  //................................ Put histo min max values
1678  TString quantity_code = "D_MCs_ChNb";
1679  if ( CorOrCov == fCorrelationMatrix )
1680  {
1681  if( BetweenWhat == fBetweenSamples ){quantity_code = "D_MCs_ChNb";}
1682 
1683  if( BetweenWhat == fLFBetweenChannels ){quantity_code = "H2LFccMosMatrix";}
1684  if( BetweenWhat == fHFBetweenChannels ){quantity_code = "H2HFccMosMatrix";}
1685 
1686  if( BetweenWhat == fLFBetweenStins ){quantity_code = "H2LFccMosMatrix";}
1687  if( BetweenWhat == fHFBetweenStins ){quantity_code = "H2HFccMosMatrix";}
1688  }
1689  if( CorOrCov == fCovarianceMatrix ){quantity_code = "H2HFccMosMatrix";}
1690  //.......... default if flag not set to "ON"
1691  SetYminMemoFromValue(quantity_code, fCnaParHistos->GetYminDefaultValue(quantity_code));
1692  SetYmaxMemoFromValue(quantity_code, fCnaParHistos->GetYmaxDefaultValue(quantity_code));
1693 
1694  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
1695  //................................. User's min and/or max (ViewMatrix)
1696  if( fFlagUserHistoMin == "ON" )
1697  {SetYminMemoFromValue(quantity_code, fUserHistoMin); fFlagUserHistoMin = "OFF";}
1698  if( fFlagUserHistoMax == "ON" )
1699  {SetYmaxMemoFromValue(quantity_code, fUserHistoMax); fFlagUserHistoMax = "OFF";}
1700  //................................. automatic min and/or max
1701  if( fFlagUserHistoMin == "AUTO" )
1702  {SetYminMemoFromValue(quantity_code, h_fbid0->GetMinimum()); fFlagUserHistoMin = "OFF";}
1703  if( fFlagUserHistoMax == "AUTO" )
1704  {SetYmaxMemoFromValue(quantity_code, h_fbid0->GetMaximum()); fFlagUserHistoMax = "OFF";}
1705  //...................................... histo set ymin and ymax (ViewMatrix)
1706  if( CorOrCov == fCorrelationMatrix )
1707  {
1708  if(BetweenWhat == fBetweenSamples)
1709  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "D_MCs_ChNb");}
1710  if( BetweenWhat == fLFBetweenStins || BetweenWhat == fLFBetweenChannels )
1711  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2LFccMosMatrix");}
1712  if( BetweenWhat == fHFBetweenStins || BetweenWhat == fHFBetweenChannels )
1713  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2HFccMosMatrix");}
1714  //************************** A GARDER EN RESERVE ******************************
1715  //............. special contour level for correlations (square root wise scale)
1716  // Int_t nb_niv = 9;
1717  // Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
1718  // SqrtContourLevels(nb_niv, &cont_niv[0]);
1719  // h_fbid0->SetContour(nb_niv, &cont_niv[0]);
1720  // delete [] cont_niv; fCdelete++;
1721  //******************************** (FIN RESERVE) ******************************
1722  }
1723  if( CorOrCov == fCovarianceMatrix )
1724  {
1725  if (BetweenWhat == fBetweenSamples)
1726  {SetYminMemoFromPreviousMemo("D_TNo_ChNb"); // covariance => same level as sigmas
1727  SetYmaxMemoFromPreviousMemo("D_TNo_ChNb");
1728  SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "D_TNo_ChNb");}
1729  if ( BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins ||
1730  BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels )
1731  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2HFccMosMatrix");}
1732  }
1733 
1734  // ----------------------------------------------- P L O T S (ViewMatrix)
1735  char f_in[charArrLen];
1736  //...................... Taille/format canvas
1737  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
1738  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
1739 
1740  //............................. options generales
1741  TString HistoType;
1742  HistoType.Resize(charArrLen);
1743  HistoType = "(no quantity type info)";
1744 
1745  if (PlotOption == "COLZ" ){HistoType = "colz";}
1746  if (PlotOption == "BOX" ){HistoType = "colz";}
1747  if (PlotOption == "TEXT" ){HistoType = "colz";}
1748  if (PlotOption == "CONTZ" ){HistoType = "colz";}
1749  if (PlotOption == "LEGO2Z"){HistoType = "lego";}
1750  if (PlotOption == "SURF1Z"){HistoType = "surf";}
1751  if (PlotOption == "SURF2Z"){HistoType = "surf";}
1752  if (PlotOption == "SURF3Z"){HistoType = "surf";}
1753  if (PlotOption == "SURF4" ){HistoType = "surf";}
1754 
1755  if( fFlagSubDet == "EB" )
1756  {
1758  SetAllPavesViewMatrix(BetweenWhat.Data(), StexStin_A, StexStin_B, i0StinEcha);
1759  }
1760  if( fFlagSubDet == "EE" )
1761  {
1764  SetAllPavesViewMatrix(BetweenWhat.Data(), StexStin_A, StexStin_B, i0StinEcha);
1765  }
1766 
1767  //---------------------------------------- Canvas name (ViewMatrix)
1768  TString name_cov_cor;
1769  name_cov_cor.Resize(charArrLen);
1770  name_cov_cor = "?";
1771  if( CorOrCov == fCovarianceMatrix){name_cov_cor = "Covariance";}
1772  if( CorOrCov == fCorrelationMatrix){name_cov_cor = "Correlation";}
1773 
1774  TString name_chan_samp;
1775  name_chan_samp.Resize(charArrLen);
1776  name_chan_samp = "?";
1777 
1778  if( BetweenWhat == fLFBetweenStins ){name_chan_samp = "LFccMos";}
1779  if( BetweenWhat == fHFBetweenStins ){name_chan_samp = "HFccMos"; }
1780 
1781  if( BetweenWhat == fLFBetweenChannels ){name_chan_samp = "LF_cc";}
1782  if( BetweenWhat == fHFBetweenChannels ){name_chan_samp = "HF_cc";}
1783 
1784  if(BetweenWhat == fBetweenSamples)
1785  {
1786  name_chan_samp = "Between_Samples"; // MatrixBinIndex = i0StinEcha
1787  }
1788 
1789  TString name_visu;
1790  name_visu.Resize(charArrLen);
1791  name_visu = "?";
1792 
1793  name_visu = PlotOption;
1794 
1795  if( (BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) ){
1796  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%s",
1797  name_cov_cor.Data(), name_chan_samp.Data(),
1800  fFapStexName.Data(), fFapStexNumber,
1801  name_visu.Data());}
1802 
1803  if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels ){
1804  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%sX%d_%sY%d_%s",
1805  name_cov_cor.Data(), name_chan_samp.Data(),
1808  fFapStexName.Data(), fFapStexNumber,
1809  fFapStexName.Data(), StexStin_A, fFapStexName.Data(), StexStin_B,
1810  name_visu.Data());}
1811 
1812  if( BetweenWhat == fBetweenSamples ){
1813  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%sX%d_%sY%d_ElecChannel_%d_%s",
1814  name_cov_cor.Data(), name_chan_samp.Data(),
1817  fFapStexName.Data(), fFapStexNumber,
1818  fFapStexName.Data(), StexStin_A, fFapStexName.Data(), StexStin_B,
1819  MatrixBinIndex,
1820  name_visu.Data());}
1821 
1822  //---------------------------------------------------------- (ViewMatrix)
1823 
1824  SetHistoPresentation((TH1D*)h_fbid0, HistoType);
1825  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w , canv_h); fCnewRoot++;
1826  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
1827 
1828  // std::cout << "*TEcnaHistos::ViewMatrix(...)> Plot is displayed on canvas ----> "
1829  // << fCurrentCanvasName << std::endl;
1830  // std::cout << "*TEcnaHistos::ViewMatrix(...)> fCurrentCanvas = " << fCurrentCanvas << std::endl;
1831 
1832  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
1833  fPavComStex->Draw();
1834 
1835  if(BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels)
1836  {fPavComStin->Draw();}
1837  if(BetweenWhat == fBetweenSamples)
1838  {fPavComStin->Draw(); fPavComXtal->Draw();}
1839 
1840  fPavComAnaRun->Draw();
1841  fPavComNbOfEvts->Draw();
1842 
1843  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
1844  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
1845  MainCanvas->Divide(1, 1, x_margin, y_margin);
1846  gPad->cd(1);
1847 
1848  //---------------------------------------------------------- (ViewMatrix)
1849  Int_t logy = 0;
1850  gPad->SetLogy(logy);
1851  if( (BetweenWhat == fLFBetweenStins) ||
1852  (BetweenWhat == fHFBetweenStins) ){gPad->SetGrid(1,1);}
1853  h_fbid0->DrawCopy(PlotOption);
1854  h_fbid0->SetStats(true);
1855  gPad->Update();
1856  h_fbid0->Delete(); h_fbid0 = nullptr; fCdeleteRoot++;
1857 
1858  //MainCanvas->Delete(); fCdeleteRoot++;
1859  }
1860  } // end of if ( OKData == kTRUE )
1861  else
1862  {
1863  fStatusDataExist = kFALSE;
1864  }
1865  } // end of if ((BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) ) ||
1866  //( (BetweenWhat == fBetweenSamples) && (i0StinEcha>= 0) && (i0StinEcha<fEcal->MaxCrysInStin())) ||
1867  //( (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels)
1868  // /* && (i0Sample >= 0) && (i0Sample < fFapNbOfSamples ) */ ) )
1869  else
1870  {
1871  if(BetweenWhat == fBetweenSamples)
1872  {
1873  std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* ==> Wrong channel number in "
1874  << fFapStinName.Data() << ". Value = "
1875  << i0StinEcha << " (required range: [0, "
1876  << fEcal->MaxCrysInStin()-1 << "] )"
1877  << fTTBELL << std::endl;
1878  }
1879 
1880  // if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels )
1881  // {
1882  // std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* ==> Wrong sample index. Value = "
1883  // << i0Sample << " (required range: [0, "
1884  // << fFapNbOfSamples-1 << "] )"
1885  // << fTTBELL << std::endl;
1886  //}
1887  }
1888  }
1889  else // else of the if ( Stin_X_ok ==1 && Stin_Y_ok ==1 )
1890  {
1891  //---------------------------------------------------------- (ViewMatrix)
1892  if ( Stin_X_ok != 1 )
1893  {
1894  if( fFlagSubDet == "EB")
1895  {
1896  std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1897  << fFapStinName.Data() << " "
1898  << StexStin_A << ", "
1899  << fFapStinName.Data() << " not found. Available numbers = ";
1900  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
1901  {
1902  if( vStin(i) > 0 )
1903  {
1904  std::cout << vStin(i) << ", ";
1905  }
1906  }
1907  }
1908 
1909  if( fFlagSubDet == "EE")
1910  {
1911  std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1912  << fFapStinName.Data() << " "
1914  << fFapStinName.Data() << " not found. Available numbers = ";
1915  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
1916  {
1917  if( vStin(i) > 0 )
1918  {
1920  }
1921  }
1922  }
1923  std::cout << fTTBELL << std::endl;
1924  }
1925  if ( Stin_Y_ok != 1 )
1926  {
1927 
1928  if( fFlagSubDet == "EB")
1929  {
1930  std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1931  << fFapStinName.Data() << " "
1932  << StexStin_B << ", "
1933  << fFapStinName.Data() << " not found. Available numbers = ";
1934  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
1935  {
1936  if( vStin(i) > 0 )
1937  {
1938  std::cout << vStin(i) << ", ";
1939  }
1940  }
1941  }
1942 
1943  if( fFlagSubDet == "EE")
1944  {
1945  std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1946  << fFapStinName.Data() << " "
1948  << fFapStinName.Data() << " not found. Available numbers = ";
1949  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
1950  {
1951  if( vStin(i) > 0 )
1952  {
1954  }
1955  }
1956  }
1957  std::cout << fTTBELL << std::endl;
1958  }
1959  }
1960  } // end of if ( fMyRootFile->DataExist() == kTRUE )
1961  else
1962  {
1963  fStatusDataExist = kFALSE;
1964  std::cout << "!TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1965  << " Histo not available." << fTTBELL << std::endl;
1966  fFlagUserHistoMin = "OFF";
1967  fFlagUserHistoMax = "OFF";
1968  }
1969  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
1970  else
1971  {
1972  fStatusFileFound = kFALSE;
1973  std::cout << "!TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1974  << " ROOT file not found" << fTTBELL << std::endl;
1975  }
1976  } // ---- end of if( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) ) -----
1977  else
1978  {
1979  std::cout << "!TEcnaHistos::ViewMatrix(...)> " << fFapStexName.Data()
1980  << " = " << fFapStexNumber << ". Out of range (range = [1,"
1981  << fEcal->MaxStexInStas() << "]) " << fTTBELL << std::endl;
1982  }
1983 } // end of ViewMatrix(...)
1984 
1985 //==========================================================================
1986 //
1987 // ViewStin ( => option COLZ )
1988 //
1989 //==========================================================================
1990 
1991 void TEcnaHistos::CorrelationsBetweenSamples(const Int_t& StinNumber)
1992 {
1993  TString CorOrCov = fCorrelationMatrix;
1994  ViewStin(StinNumber, CorOrCov);
1995 }
1996 
1997 void TEcnaHistos::CovariancesBetweenSamples(const Int_t& StinNumber)
1998 {
1999  TString CorOrCov = fCovarianceMatrix;
2000  ViewStin(StinNumber, CorOrCov);
2001 }
2002 
2003 //==========================================================================
2004 //
2005 // ViewStin ( => option COLZ )
2006 //
2007 // StexStin ==>
2008 // (sample,sample) cor or cov matrices for all the crystal of StexStin
2009 //
2010 //
2011 //==========================================================================
2012 void TEcnaHistos::ViewStin(const Int_t& cStexStin, const TString& CorOrCov)
2013 {
2014  //cor(s,s') or cov(s,s') matrices for all the crystals of one given Stin. Option COLZ mandatory.
2015 
2016  // cStexStin = number for cons (in case of EE)
2017  // StexStin = ECNA number
2018 
2019  if( (fFapStexNumber > 0) && fFapStexNumber <= fEcal->MaxStexInStas() )
2020  {
2021  Int_t StexStin = cStexStin;
2022  if(fFlagSubDet == "EE" )
2023  {StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, cStexStin);}
2024 
2030 
2031  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (ViewStin)
2032  {
2033  fStatusFileFound = kTRUE;
2034 
2036  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
2037  // std::cout << "*TEcnaHistos::ViewStin(...)> Data are analyzed from file ----> "
2038  // << fp_name_short << std::endl;
2039 
2040  TVectorD vStin(fEcal->MaxStinEcnaInStex());
2041  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vStin(i)=(Double_t)0.;}
2043 
2044  if ( fMyRootFile->DataExist() == kTRUE )
2045  {
2046  fStatusDataExist = kTRUE;
2047 
2048  Int_t Stin_ok = 0;
2049  for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++)
2050  {
2051  if ( vStin(index_Stin) == StexStin ){Stin_ok++;}
2052  }
2053 
2054  if( Stin_ok == 1)
2055  {
2059 
2060  //......................... matrix title (ViewStin)
2061  char f_in_mat_tit[charArrLen];
2062 
2063  if ( CorOrCov == fCovarianceMatrix )
2064  {sprintf(f_in_mat_tit, "Xtal's Cov(s,s') matrices in %s.",
2065  fFapStinName.Data());}
2066  if ( CorOrCov == fCorrelationMatrix )
2067  {sprintf(f_in_mat_tit, "Xtal's Cor(s,s') matrices in %s.",
2068  fFapStinName.Data());}
2069 
2070  //................................. Bidim parameters
2071  Int_t GeoBidSize = fEcal->MaxSampADC()*fEcal->MaxCrysHocoInStin();
2072  Int_t nb_binx = GeoBidSize;
2073  Int_t nb_biny = GeoBidSize;
2074  Axis_t xinf_bid = (Axis_t)0.;
2075  Axis_t xsup_bid = (Axis_t)GeoBidSize;
2076  Axis_t yinf_bid = (Axis_t)0.;
2077  Axis_t ysup_bid = (Axis_t)GeoBidSize;
2078 
2079  //--------------------------------------------------------- (ViewStin)
2080  //............. matrices reading and histogram filling
2081 
2082  TH2D* h_geo_bid = new TH2D("geobidim_ViewStin", f_in_mat_tit,
2083  nb_binx, xinf_bid, xsup_bid,
2084  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
2085 
2086  h_geo_bid->Reset();
2087 
2088  //======================================================== (ViewStin)
2089 
2090  //----------------------------------------------- Geographical bidim filling
2091  Int_t ReadMatSize = fFapNbOfSamples;
2092  Int_t MatSize = fEcal->MaxSampADC();
2093  TMatrixD read_matrix(ReadMatSize, ReadMatSize);
2094  for(Int_t i=0; i-ReadMatSize < 0; i++){for(Int_t j=0; j-ReadMatSize < 0; j++)
2095  {read_matrix(i,j)=(Double_t)0.;}}
2096 
2097  Int_t i_data_exist = 0;
2098 
2099  for(Int_t n_crys = 0; n_crys < fEcal->MaxCrysInStin(); n_crys++)
2100  {
2101  if( CorOrCov == fCovarianceMatrix )
2102  {read_matrix = fMyRootFile->ReadCovariancesBetweenSamples(StexStin, n_crys, ReadMatSize);}
2103  if ( CorOrCov == fCorrelationMatrix )
2104  {read_matrix = fMyRootFile->ReadCorrelationsBetweenSamples(StexStin, n_crys, ReadMatSize);}
2105 
2106  if( fMyRootFile->DataExist() == kFALSE )
2107  {
2108  fStatusDataExist = kFALSE;
2109  break; // <= if no data: exiting loop over the channels
2110  }
2111  else
2112  {
2113  fStatusDataExist = kTRUE;
2114  i_data_exist++;
2115 
2116  for(Int_t i_samp = 0 ; i_samp < ReadMatSize ; i_samp++)
2117  {
2118  Int_t i_xgeo = GetXSampInStin(fFapStexNumber, StexStin, n_crys, i_samp);
2119  for(Int_t j_samp = 0; j_samp < ReadMatSize ; j_samp++)
2120  {
2121  Int_t j_ygeo = GetYSampInStin(fFapStexNumber,
2122  StexStin, n_crys, j_samp);
2123  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)j_ygeo,
2124  (Double_t)read_matrix(i_samp, j_samp));
2125  }
2126  }
2127  }
2128  }
2129 
2130  //=========== H I S T O M I N / M A X M A N A G E M E N T ======== (ViewStin)
2131  //................................ Put histo min max values
2132  TString quantity_code = "D_MCs_ChNb";
2133  if( CorOrCov == fCorrelationMatrix ){quantity_code = "D_MCs_ChNb";}
2134  if( CorOrCov == fCovarianceMatrix ){quantity_code = "H2HFccMosMatrix";}
2135 
2136  //.......... default if flag not set to "ON"
2137  SetYminMemoFromValue(quantity_code, fCnaParHistos->GetYminDefaultValue(quantity_code));
2138  SetYmaxMemoFromValue(quantity_code, fCnaParHistos->GetYmaxDefaultValue(quantity_code));
2139 
2140  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
2141  //.......... user's min and/or max values
2142  if( fFlagUserHistoMin == "ON" )
2143  {SetYminMemoFromValue(quantity_code, fUserHistoMin); fFlagUserHistoMin = "OFF";}
2144  if( fFlagUserHistoMax == "ON" )
2145  {SetYmaxMemoFromValue(quantity_code, fUserHistoMax); fFlagUserHistoMax = "OFF";}
2146  //................................. automatic min and/or max
2147  if( fFlagUserHistoMin == "AUTO" )
2148  {SetYminMemoFromValue(quantity_code, h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
2149  if( fFlagUserHistoMax == "AUTO" )
2150  {SetYmaxMemoFromValue(quantity_code, h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
2151  //...................................... histo set ymin and ymax (ViewStin)
2152  if ( CorOrCov == fCorrelationMatrix )
2153  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, "D_MCs_ChNb");
2154 
2155  // ************************** A GARDER EN RESERVE *******************************
2156  //............. special contour level for correlations (square root wise scale)
2157  //Int_t nb_niv = 9;
2158  //Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
2159  //SqrtContourLevels(nb_niv, &cont_niv[0]);
2160  //h_geo_bid->SetContour(nb_niv, &cont_niv[0]);
2161  //delete [] cont_niv; fCdelete++;
2162  // ******************************** (FIN RESERVE) *******************************
2163  }
2164  if ( CorOrCov == fCovarianceMatrix )
2165  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, "D_TNo_ChNb");}
2166 
2167  // =================================== P L O T S ======================== (ViewStin)
2168  if( i_data_exist > 0 )
2169  {
2170  char f_in[charArrLen];
2171 
2172  //...................... Taille/format canvas
2173  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2174  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2175 
2176  //.................................................. paves commentaires (ViewStin)
2177  SetAllPavesViewStin(StexStin);
2178 
2179  //------------------------------------ Canvas name ----------------- (ViewStin)
2180  TString name_cov_cor;
2181  name_cov_cor.Resize(charArrLen);
2182  name_cov_cor = "?";
2183  if( CorOrCov == fCovarianceMatrix ){name_cov_cor = "CovSS_Matrices_in_";}
2184  if( CorOrCov == fCorrelationMatrix){name_cov_cor = "CorSS_Matrices_in_";}
2185 
2186  TString name_visu;
2187  name_visu.Resize(charArrLen);
2188  name_visu = "colz";
2189 
2190  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%s%d_%s",
2191  name_cov_cor.Data(), fFapStinName.Data(),
2194  fFapStexName.Data(), fFapStexNumber,
2195  fFapStinName.Data(), StexStin, name_visu.Data());
2196 
2197  SetHistoPresentation((TH1D*)h_geo_bid, "Stin");
2198 
2199  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
2200  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
2201 
2202  // std::cout << "*TEcnaHistos::ViewStin(...)> Plot is displayed on canvas ----> " << f_in << std::endl;
2203 
2204  //------------------------ Canvas draw and update ------------ (ViewStin)
2205  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
2206  fPavComStex->Draw();
2207  fPavComStin->Draw();
2208  fPavComAnaRun->Draw();
2209  fPavComNbOfEvts->Draw();
2210 
2211  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2212  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2213  MainCanvas->Divide(1, 1, x_margin, y_margin);
2214  gPad->cd(1);
2215 
2216  Int_t logy = 0;
2217  gPad->SetLogy(logy);
2218 
2219  h_geo_bid->DrawCopy("COLZ");
2220 
2221  //--------------------------------------------------------------------------- (ViewStin)
2222  Int_t size_Hoco = fEcal->MaxCrysHocoInStin();
2223  Int_t size_Veco = fEcal->MaxCrysVecoInStin();
2224 
2225  ViewStinGrid(fFapStexNumber, StexStin, MatSize, size_Hoco, size_Veco, " ");
2226 
2227  gPad->Update();
2228 
2229  h_geo_bid->SetStats(true);
2230 
2231  // delete MainCanvas; fCdeleteRoot++;
2232  }
2233 
2234  h_geo_bid->Delete(); h_geo_bid = nullptr; fCdeleteRoot++;
2235  }
2236  else
2237  {
2238  std::cout << "!TEcnaHistos::ViewStin(...)> *ERROR* =====> "
2239  << fFapStinName.Data() << " "
2240  << cStexStin << " not found."
2241  << " Available numbers = ";
2242  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
2243  {
2244  if( vStin(i) > 0 )
2245  {
2246  if( fFlagSubDet == "EB" ){std::cout << (Int_t)vStin(i) << ", ";}
2247  if( fFlagSubDet == "EE" )
2248  {std::cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";}
2249  }
2250  }
2251  std::cout << fTTBELL << std::endl;
2252  }
2253  } // end of if ( myRootFile->DataExist() == kTRUE )
2254  else
2255  {
2256  fStatusDataExist = kFALSE;
2257  }
2258  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
2259  else
2260  {
2261  fStatusFileFound = kFALSE;
2262 
2263  std::cout << "!TEcnaHistos::ViewStin(...)> *ERROR* =====> "
2264  << " ROOT file not found" << fTTBELL << std::endl;
2265  }
2266  }
2267  else
2268  {
2269  std::cout << "!TEcnaHistos::ViewStin(...)> " << fFapStexName.Data()
2270  << " = " << fFapStexNumber << ". Out of range (range = [1,"
2271  << fEcal->MaxStexInStas() << "]) " << fTTBELL << std::endl;
2272  }
2273 } // end of ViewStin(...)
2274 
2275 //====================================================================================
2276 //
2277 // StinCrystalNumbering
2278 // independent of the ROOT file => StexNumber as argument
2279 //
2280 //====================================================================================
2281 void TEcnaHistos::StinCrystalNumbering(const Int_t& StexNumber, const Int_t& cStexStin)
2282 {
2283 //display the crystal numbering of one Stin
2284 // cStexStin = Tower number in case of EB or SC number for construction in case of EE
2285 
2286  if( fFlagSubDet == "EB" ){TowerCrystalNumbering(StexNumber, cStexStin);}
2287  if( fFlagSubDet == "EE" ){SCCrystalNumbering(StexNumber, cStexStin);}
2288 }
2289 //----------------> end of StinCrystalNumbering()
2290 
2291 //====================================================================================
2292 //
2293 // TowerCrystalNumbering
2294 // independent of the ROOT file => SMNumber as argument
2295 //
2296 //====================================================================================
2297 void TEcnaHistos::TowerCrystalNumbering(const Int_t& SMNumber, const Int_t& n1SMTow)
2298 {
2299  //display the crystal numbering of one tower
2300 
2301  if( (SMNumber > 0) && (SMNumber <= fEcal->MaxSMInEB()) )
2302  {
2304 
2305  Int_t MatSize = fEcal->MaxSampADC();
2306  Int_t size_eta = fEcal->MaxCrysEtaInTow();
2307  Int_t size_phi = fEcal->MaxCrysPhiInTow();
2308 
2309  //---------------------------------- bidim
2310 
2311  Int_t nb_bins = fEcal->MaxSampADC();
2312  Int_t nx_gbins = nb_bins*size_eta;
2313  Int_t ny_gbins = nb_bins*size_phi;
2314 
2315  Axis_t xinf_gbid = (Axis_t)0.;
2316  Axis_t xsup_gbid = (Axis_t)fEcal->MaxSampADC()*size_eta;
2317  Axis_t yinf_gbid = (Axis_t)0.;
2318  Axis_t ysup_gbid = (Axis_t)fEcal->MaxSampADC()*size_phi;
2319 
2320  TString fg_name = "M0' crystals";
2321  TString fg_tit = "Xtal numbering (chan. in tow, chan. in SM, Xtal in SM, hashed)";
2322 
2323  //----------------------- empty 2D histo for pave coordinates registration
2324  TH2D *h_gbid;
2325  h_gbid = new TH2D(fg_name.Data(), fg_tit.Data(),
2326  nx_gbins, xinf_gbid, xsup_gbid,
2327  ny_gbins, yinf_gbid, ysup_gbid); fCnewRoot++;
2328  h_gbid->Reset();
2329 
2330  //----------------- T R A C E D E S P L O T S ------ (TowerCrystalNumbering)
2331 
2332  char f_in[charArrLen];
2333 
2334  //...................... Taille/format canvas
2335 
2336  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2337  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2338 
2339  //........................................ couleurs
2340  Color_t couleur_noir = fCnaParHistos->SetColorsForNumbers("crystal");
2341  Color_t couleur_rouge = fCnaParHistos->SetColorsForNumbers("lvrb_top");
2342  Color_t couleur_bleu_fonce = fCnaParHistos->SetColorsForNumbers("lvrb_bottom");
2343 
2344  gStyle->SetPalette(1,nullptr); // Rainbow spectrum
2345 
2346  //.................................... options generales
2348 
2349  //.................................... paves commentaires (TowerCrystalNumbering)
2350 
2351  SetAllPavesViewStinCrysNb(SMNumber, n1SMTow);
2352 
2353  //---------------------------------------------- (TowerCrystalNumbering)
2354 
2355  //..................... Canvas name
2356  sprintf(f_in, "Crystal_Numbering_for_%s_X_%d_%s%d",
2357  fFapStinName.Data(), n1SMTow, fFapStexName.Data(), SMNumber);
2358 
2359  SetHistoPresentation((TH1D*)h_gbid, "Stin");
2360 
2361  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w , canv_h); fCnewRoot++;
2362  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
2363 
2364  // std::cout << "*TEcnaHistosEB::TowerCrystalNumbering(...)> Plot is displayed on canvas ----> "
2365  // << f_in << std::endl;
2366 
2367  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2368  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2369  MainCanvas->Divide(1, 1, x_margin, y_margin);
2370 
2371  fPavComStex->Draw();
2372  fPavComStin->Draw();
2373  fPavComLVRB->Draw();
2374 
2375  Bool_t b_true = true;
2376  Bool_t b_false = false;
2377  gPad->cd(1);
2378 
2379  gStyle->SetMarkerColor(couleur_rouge);
2380 
2381  Int_t logy = 0;
2382  gPad->SetLogy(logy);
2383 
2384  //............................... bidim .......... (TowerCrystalNumbering)
2385 
2386  h_gbid->SetStats(b_false);
2387  h_gbid->DrawCopy("COLZ");
2388 
2389  //..... Ecriture des numeros de channels dans la grille..... (TowerCrystalNumbering)
2390  // et des numeros SM des cristaux
2391 
2392  //............... prepa arguments fixes appels [TText]->DrawText()
2393  char f_in_elec[charArrLen];
2394  TString TowerLvrbType = fEcalNumbering->GetTowerLvrbType(n1SMTow) ;
2395  TText *text_elec_num = new TText(); fCnewRoot++;
2396  if ( TowerLvrbType == "top" ){text_elec_num->SetTextColor(couleur_rouge);}
2397  if ( TowerLvrbType == "bottom" ){text_elec_num->SetTextColor(couleur_bleu_fonce);}
2398  text_elec_num->SetTextSize(0.04);
2399 
2400  char f_in_sme[charArrLen];
2401  TText *text_sme_num = new TText(); fCnewRoot++;
2402  if ( TowerLvrbType == "top" ){text_sme_num->SetTextColor(couleur_rouge);}
2403  if ( TowerLvrbType == "bottom" ){text_sme_num->SetTextColor(couleur_bleu_fonce);}
2404  text_sme_num->SetTextSize(0.03);
2405 
2406  char f_in_sm[charArrLen];
2407  TText *text_sm_num = new TText(); fCnewRoot++;
2408  text_sm_num->SetTextColor(couleur_noir);
2409  text_sm_num->SetTextSize(0.03);
2410 
2411  char f_in_hsd[charArrLen];
2412  TText *text_hsd_num = new TText(); fCnewRoot++;
2413  text_hsd_num->SetTextColor(couleur_noir);
2414  text_hsd_num->SetTextSize(0.03);
2415 
2416  //............... prepa arguments fixes appels GetXGeo(...) et GetYGeo(...)
2417  Int_t i_samp = 0;
2418  //Double_t off_set = (Double_t)(fEcal->MaxSampADC()/4);
2419  Double_t off_set = (Double_t)1.;
2420 
2421  //------------------ LOOP ON THE CRYSTAL ELECTRONIC CHANNEL NUMBER (TowerCrystalNumbering)
2422 
2423  for (Int_t i_chan = 0; i_chan < fEcal->MaxCrysInTow(); i_chan++)
2424  {
2425  Int_t i_xgeo = GetXSampInStin(SMNumber, n1SMTow, i_chan, i_samp);
2426  Int_t i_ygeo = GetYSampInStin(SMNumber, n1SMTow, i_chan, i_samp);
2427 
2428  Double_t xgi = i_xgeo + 3.*off_set;
2429  Double_t ygj = i_ygeo + 7.*off_set;
2430 
2431  Double_t xgi_sme = i_xgeo + 3.*off_set;
2432  Double_t ygj_sme = i_ygeo + 5.*off_set;
2433 
2434  Double_t xgi_sm = i_xgeo + 3.*off_set;
2435  Double_t ygj_sm = i_ygeo + 3.*off_set;
2436 
2437  Double_t xgi_hsd = i_xgeo + 3.*off_set;
2438  Double_t ygj_hsd = i_ygeo + 1.*off_set;
2439 
2440  Int_t i_crys_sme = fEcalNumbering->Get0SMEchaFrom1SMTowAnd0TowEcha(n1SMTow, i_chan);
2441  Int_t i_crys_sm = fEcalNumbering->Get1SMCrysFrom1SMTowAnd0TowEcha(n1SMTow, i_chan);
2442 
2443  Double_t Eta = fEcalNumbering->GetEta(SMNumber, n1SMTow, i_chan);
2444  Double_t Phi = fEcalNumbering->GetPhi(SMNumber, n1SMTow, i_chan);
2445 
2446  Int_t i_crys_hsd = fEcalNumbering->GetHashedNumberFromIEtaAndIPhi((Int_t)Eta, (Int_t)Phi);
2447 
2448  //------------------------------------------------------- TowerCrystalNumbering
2449 
2450  sprintf(f_in_elec, "%d", i_chan);
2451  text_elec_num->DrawText(xgi, ygj, f_in_elec);
2452 
2453  sprintf(f_in_sme, "%d", i_crys_sme);
2454  text_sme_num->DrawText(xgi_sme, ygj_sme, f_in_sme);
2455 
2456  sprintf(f_in_sm, "%d", i_crys_sm);
2457  text_sm_num->DrawText(xgi_sm, ygj_sm, f_in_sm);
2458 
2459  sprintf(f_in_hsd, "%d", i_crys_hsd);
2460  text_sm_num->DrawText(xgi_hsd, ygj_hsd, f_in_hsd);
2461  }
2462  text_sm_num->Delete(); text_sm_num = nullptr; fCdeleteRoot++;
2463  text_sme_num->Delete(); text_sme_num = nullptr; fCdeleteRoot++;
2464  text_elec_num->Delete(); text_elec_num = nullptr; fCdeleteRoot++;
2465  text_hsd_num->Delete(); text_hsd_num = nullptr; fCdeleteRoot++;
2466 
2467  ViewStinGrid(SMNumber, n1SMTow, MatSize, size_eta, size_phi, "CrystalNumbering");
2468 
2469  gPad->Update();
2470  h_gbid->SetStats(b_true);
2471 
2472  h_gbid->Delete(); h_gbid = nullptr; fCdeleteRoot++;
2473 
2474  }
2475  else
2476  {
2477  std::cout << "!TEcnaHistos::TowerCrystalNumbering(...)> SM = " << SMNumber
2478  << ". Out of range ( range = [1," << fEcal->MaxSMInEB() << "] )" << fTTBELL << std::endl;
2479  }
2480 }
2481 //----------------> end of TowerCrystalNumbering()
2482 
2483 //====================================================================================
2484 //
2485 // SCCrystalNumbering
2486 // independent of the ROOT file => DeeNumber and n1DeeSCEcna as argument
2487 //
2488 //====================================================================================
2489 void TEcnaHistos::SCCrystalNumbering(const Int_t& DeeNumber, const Int_t& n1DeeSCCons)
2490 {
2491  //display the crystal numbering of one SC
2492 
2493  if( (DeeNumber > 0) && (DeeNumber <= fEcal->MaxDeeInEE()) )
2494  {
2495  Int_t n1DeeSCEcna = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(DeeNumber, n1DeeSCCons);
2498 
2499  //Int_t MatSize = fEcal->MaxSampADC();
2500  Int_t size_IX = fEcal->MaxCrysIXInSC();
2501  Int_t size_IY = fEcal->MaxCrysIYInSC();
2502 
2503  //---------------------------------- bidim
2504 
2505  Int_t nb_bins = fEcal->MaxSampADC();
2506  Int_t nx_gbins = nb_bins*size_IX;
2507  Int_t ny_gbins = nb_bins*size_IY;
2508 
2509  Axis_t xinf_gbid = (Axis_t)0.;
2510  Axis_t xsup_gbid = (Axis_t)fEcal->MaxSampADC()*size_IX;
2511  Axis_t yinf_gbid = (Axis_t)0.;
2512  Axis_t ysup_gbid = (Axis_t)fEcal->MaxSampADC()*size_IY;
2513 
2514  TString fg_name = "crystalnbring";
2515  TString fg_tit = "Xtal numbering for construction";
2516 
2517  TH2D *h_gbid;
2518  h_gbid = new TH2D(fg_name.Data(), fg_tit.Data(),
2519  nx_gbins, xinf_gbid, xsup_gbid,
2520  ny_gbins, yinf_gbid, ysup_gbid); fCnewRoot++;
2521  h_gbid->Reset();
2522 
2523  //----------------- T R A C E D E S P L O T S ------ (SCCrystalNumbering)
2524 
2525  char f_in[charArrLen];
2526 
2527  //...................... Taille/format canvas
2528 
2529  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2530  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2531  //........................................ couleurs
2532  // Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
2533  Color_t couleur_rouge = fCnaParHistos->ColorDefinition("rouge");
2534  // Color_t couleur_bleu_fonce = fCnaParHistos->ColorDefinition("bleu_fonce");
2535 
2536  gStyle->SetPalette(1,nullptr); // Rainbow spectrum
2537  //.................................... options generales
2539 
2540  //.................................... paves commentaires (SCCrystalNumbering)
2541  SetAllPavesViewStinCrysNb(DeeNumber, n1DeeSCEcna);
2542 
2543  //---------------------------------------------- (SCCrystalNumbering)
2544  //..................... Canvas name
2545  sprintf(f_in, "Crystal_Numbering_for_%s_X_%d_%s%d",
2546  fFapStinName.Data(), n1DeeSCEcna, fFapStexName.Data(), DeeNumber);
2547 
2548  SetHistoPresentation((TH1D*)h_gbid, "Stin");
2549 
2550  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w , canv_h); fCnewRoot++;
2551  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
2552 
2553  // std::cout << "*TEcnaHistosEE::SCCrystalNumbering(...)> Plot is displayed on canvas ----> "
2554  // << f_in << std::endl;
2555 
2556  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2557  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2558 
2559  MainCanvas->Divide(1, 1, x_margin, y_margin);
2560 
2561  fPavComStex->Draw();
2562  fPavComStin->Draw();
2563  fPavComCxyz->Draw();
2564 
2565  Bool_t b_true = true;
2566  Bool_t b_false = false;
2567  gPad->cd(1);
2568 
2569  gStyle->SetMarkerColor(couleur_rouge);
2570 
2571  Int_t logy = 0;
2572  gPad->SetLogy(logy);
2573 
2574  //............................... bidim .......... (SCCrystalNumbering)
2575  h_gbid->SetStats(b_false);
2576  fCnaParHistos->SetViewHistoOffsets((TH1D*)h_gbid, "Stin", " ");
2577  h_gbid->DrawCopy("COLZ");
2578 
2579  //..... Ecriture des numeros de channels dans la grille..... (SCCrystalNumbering)
2580  // et des numeros Dee des cristaux
2581  TString SCQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
2582  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
2583  TString DeeEndcap = fEcalNumbering->GetEEDeeEndcap(DeeNumber);
2584  Color_t couleur_SC = GetSCColor(DeeEndcap, DeeDir, SCQuadType);
2585  //............... prepa arguments fixes appels [TText]->DrawText()
2586  char f_in_elec[charArrLen];
2587  TText *text_elec_num = new TText(); fCnewRoot++;
2588  text_elec_num->SetTextColor(couleur_SC);
2589  text_elec_num->SetTextSize(0.06);
2590 
2591  //............... prepa arguments fixes appels GetXGeo(...) et GetYGeo(...)
2592  Int_t i_samp = 0;
2593  Double_t off_set = (Double_t)(fEcal->MaxSampADC()/3);
2594 
2595  //------------------ LOOP ON THE CRYSTAL ELECTRONIC CHANNEL NUMBER (SCCrystalNumbering)
2596 
2597  for (Int_t i_chan = 0; i_chan < fEcal->MaxCrysInSC(); i_chan++)
2598  {
2599  Int_t i_xgeo = GetXSampInStin(DeeNumber, n1DeeSCEcna, i_chan, i_samp);
2600  Int_t i_ygeo = GetYSampInStin(DeeNumber, n1DeeSCEcna, i_chan, i_samp);
2601 
2602  Double_t xgi = i_xgeo + off_set;
2603  Double_t ygj = i_ygeo + 2*off_set;
2604 
2605  //------------------------------------------------------- SCCrystalNumbering
2606  Int_t i_chan_p = i_chan+1;
2607  sprintf(f_in_elec, "%d", i_chan_p); // offset = +1 (Xtal for construction numbering, CMS NOTE 2006/027)
2608  text_elec_num->DrawText(xgi, ygj, f_in_elec);
2609  }
2610  text_elec_num->Delete(); text_elec_num = nullptr; fCdeleteRoot++;
2611 
2612  ViewStinGrid(DeeNumber, n1DeeSCEcna, fEcal->MaxSampADC(), size_IX, size_IY, "CrystalNumbering");
2613 
2614  gPad->Update();
2615  h_gbid->SetStats(b_true);
2616 
2617  h_gbid->Delete(); h_gbid = nullptr; fCdeleteRoot++;
2618 
2619  }
2620  else
2621  {
2622  std::cout << "!TEcnaHistos::SCCrystalNumbering(...)> Dee = " << DeeNumber
2623  << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )" << fTTBELL << std::endl;
2624  }
2625 }
2626 //----------------> end of SCCrystalNumbering()
2627 
2628 //==================================================================================
2629 //
2630 // GetXSampInStin, GetYSampInStin
2631 //
2632 //==================================================================================
2633 Int_t TEcnaHistos::GetXSampInStin(const Int_t& StexNumber, const Int_t& StexStin,
2634  const Int_t& i0StinEcha, const Int_t& i_samp)
2635 {
2636 //Gives the X coordinate in the geographic view of one Stin
2637 
2638  Int_t ix_geo = -1;
2639 
2640  if( fFlagSubDet == "EB" )
2641  {TString ctype = fEcalNumbering->GetStinLvrbType(StexStin);
2642  TString btype = fEcalNumbering->GetStexHalfStas(StexNumber);
2643  if( (btype == "EB+" && ctype == "bottom") || (btype == "EB-" && ctype == "top") )
2644  {ix_geo = ( (fEcal->MaxCrysHocoInStin()-1)-(i0StinEcha/fEcal->MaxCrysHocoInStin()) )
2645  *fEcal->MaxSampADC() + i_samp;}
2646  if( (btype == "EB+" && ctype == "top") || (btype == "EB-" && ctype == "bottom") )
2647  {ix_geo = ( i0StinEcha/fEcal->MaxCrysHocoInStin() )*fEcal->MaxSampADC() + i_samp;}}
2648 
2649  if( fFlagSubDet == "EE" )
2650  { TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(StexNumber);
2651  if( DeeDir == "right" )
2652  {ix_geo = (fEcalNumbering->GetIXCrysInSC(StexNumber, StexStin, i0StinEcha)-1)*fEcal->MaxSampADC() + i_samp;}
2653  if( DeeDir == "left" )
2654  {ix_geo = (fEcal->MaxCrysHocoInStin() - fEcalNumbering->GetIXCrysInSC(StexNumber, StexStin, i0StinEcha))*
2655  fEcal->MaxSampADC() + i_samp;}}
2656 
2657  return ix_geo;
2658 }
2659 //--------------------------------------------------------------------------------------------
2660 Int_t TEcnaHistos::GetYSampInStin(const Int_t& StexNumber, const Int_t& StexStin,
2661  const Int_t& i0StinEcha, const Int_t& j_samp)
2662 {
2663 //Gives the Y coordinate in the geographic view of one Stin
2664 
2665  Int_t jy_geo = -1;
2666 
2667  if( fFlagSubDet == "EB" )
2668  {
2669  TString ctype = fEcalNumbering->GetStinLvrbType(StexStin);
2670  TString btype = fEcalNumbering->GetStexHalfStas(StexNumber);
2671 
2672  //.......................... jy_geo for the EB+ (and beginning for the EB-)
2673 
2674  if( (btype == "EB+" && ctype == "top") || (btype == "EB-" && ctype == "bottom") )
2675  {
2676  if( i0StinEcha >= 0 && i0StinEcha <= 4 ) {jy_geo = (i0StinEcha - 0)*fEcal->MaxSampADC() + j_samp;}
2677  if( i0StinEcha >= 5 && i0StinEcha <= 9 ) {jy_geo = -(i0StinEcha - 9)*fEcal->MaxSampADC() + j_samp;}
2678  if( i0StinEcha >= 10 && i0StinEcha <= 14 ) {jy_geo = (i0StinEcha - 10)*fEcal->MaxSampADC() + j_samp;}
2679  if( i0StinEcha >= 15 && i0StinEcha <= 19 ) {jy_geo = -(i0StinEcha - 19)*fEcal->MaxSampADC() + j_samp;}
2680  if( i0StinEcha >= 20 && i0StinEcha <= 24 ) {jy_geo = (i0StinEcha - 20)*fEcal->MaxSampADC() + j_samp;}
2681  }
2682 
2683  if( (btype == "EB+" && ctype == "bottom") || (btype == "EB-" && ctype == "top") )
2684  {
2685  if( i0StinEcha >= 0 && i0StinEcha <= 4 )
2686  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) - (i0StinEcha- 0))*fEcal->MaxSampADC() + j_samp;}
2687  if( i0StinEcha >= 5 && i0StinEcha <= 9 )
2688  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) + (i0StinEcha- 9))*fEcal->MaxSampADC() + j_samp;}
2689  if( i0StinEcha >= 10 && i0StinEcha <= 14 )
2690  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) - (i0StinEcha-10))*fEcal->MaxSampADC() + j_samp;}
2691  if( i0StinEcha >= 15 && i0StinEcha <= 19 )
2692  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) + (i0StinEcha-19))*fEcal->MaxSampADC() + j_samp;}
2693  if( i0StinEcha >= 20 && i0StinEcha <= 24 )
2694  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) - (i0StinEcha-20))*fEcal->MaxSampADC() + j_samp;}
2695  }
2696  }
2697 
2698  if( fFlagSubDet == "EE" )
2699  {jy_geo =
2700  (fEcalNumbering->GetJYCrysInSC(StexNumber, StexStin, i0StinEcha) - 1)*fEcal->MaxSampADC() + j_samp;}
2701 
2702  return jy_geo;
2703 }
2704 
2705 //===============================================================================
2706 //
2707 // ViewStinGrid
2708 // independent of the ROOT file => StexNumber as argument
2709 //
2710 //===============================================================================
2711 void TEcnaHistos::ViewStinGrid(const Int_t& StexNumber,
2712  const Int_t& StexStin, const Int_t& MatSize,
2713  const Int_t& size_Hoco, const Int_t& size_Veco,
2714  const TString& chopt)
2715 {
2716  //Grid of one Stin with axis Hoco and Veco
2717 
2718  if( fFlagSubDet == "EB"){ViewTowerGrid(StexNumber, StexStin, MatSize,
2719  size_Hoco, size_Veco, chopt);}
2720  if( fFlagSubDet == "EE"){ViewSCGrid(StexNumber, StexStin, MatSize,
2721  size_Hoco, size_Veco, chopt);}
2722 
2723 } // end of ViewStinGrid
2724 
2725 //===============================================================================
2726 //
2727 // ViewTowerGrid
2728 // independent of the ROOT file => SMNumber as argument
2729 //
2730 //===============================================================================
2731 void TEcnaHistos::ViewTowerGrid(const Int_t& SMNumber,
2732  const Int_t& n1SMTow, const Int_t& MatSize,
2733  const Int_t& size_eta, const Int_t& size_phi,
2734  const TString& chopt)
2735 {
2736  //Grid of one tower with axis eta and phi
2737  //.......................... lignes verticales
2738  Double_t xline = 0.;
2739 
2740  Double_t yline_bot = 0.;
2741  Double_t yline_top = (Double_t)(MatSize*size_eta);
2742 
2743  for( Int_t i = 0 ; i < size_eta ; i++)
2744  {
2745  xline = xline + (Double_t)MatSize;
2746  TLine *lin;
2747  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
2748  lin->Draw();
2749  // delete lin; fCdeleteRoot++;
2750  }
2751  //............................. lignes horizontales
2752  Double_t xline_left = 0;
2753  Double_t xline_right = (Double_t)(MatSize*size_eta);
2754 
2755  Double_t yline = -(Double_t)MatSize;
2756 
2757  for( Int_t j = 0 ; j < size_eta+1 ; j++)
2758  {
2759  yline = yline + (Double_t)MatSize;
2760  TLine *lin;
2761  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
2762  lin->Draw();
2763  // delete lin; fCdeleteRoot++;
2764  }
2765 
2766  //------------------ trace axes en eta et phi --------------- ViewTowerGrid
2767 
2768  //...................................................... Axe i(eta) (x bottom) (ViewTowerGrid)
2769 
2770  Double_t eta_min = fEcalNumbering->GetIEtaMin(SMNumber, n1SMTow);
2771  Double_t eta_max = fEcalNumbering->GetIEtaMax(SMNumber, n1SMTow);
2772 
2773  TString x_var_name = GetEtaPhiAxisTitle("ietaTow");
2774  TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
2775 
2776  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
2777  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
2778  Float_t tic_siz_x = fCnaParHistos->AxisTickSize();
2779  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("Towx");
2780  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("Towx");
2781 
2782  new TF1("f1", x_direction.Data(), eta_min, eta_max); fCnewRoot++;
2783 
2784  TGaxis* sup_axis_x = nullptr;
2785 
2786  if ( x_direction == "-x" ) // NEVER IN THIS CASE: xmin->xmax <=> right->left ("-x") direction
2787  {sup_axis_x = new TGaxis( -(Float_t)MatSize, (Float_t)0, (Float_t)(size_eta*MatSize), (Float_t)0.,
2788  "f1", size_eta, "BCS" , 0.); fCnewRoot++;
2789  std::cout << "TEcnaHistosEB::ViewTowerGrid()> non foreseen case. eta with -x direction." << fTTBELL << std::endl;}
2790 
2791  if ( x_direction == "x" ) // ALWAYS IN THIS CASE: xmin->xmax <=> left->right ("x") direction
2792  {sup_axis_x = new TGaxis( (Float_t)0. , (Float_t)0., (Float_t)(size_eta*MatSize), (Float_t)0.,
2793  "f1", size_eta, "CS" , 0.); fCnewRoot++;}
2794 
2795  sup_axis_x->SetTitle(x_var_name);
2796  sup_axis_x->SetTitleSize(tit_siz_x);
2797  sup_axis_x->SetTitleOffset(tit_off_x);
2798  sup_axis_x->SetLabelSize(lab_siz_x);
2799  sup_axis_x->SetLabelOffset(lab_off_x);
2800  sup_axis_x->SetTickSize(tic_siz_x);
2801  sup_axis_x->Draw("SAME");
2802 
2803  //...................................................... Axe phi (y right) (ViewTowerGrid)
2804  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
2805  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
2806  Float_t tic_siz_y = fCnaParHistos->AxisTickSize();
2807  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Towy");
2808  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Towy");
2809 
2810  if( chopt == "CrystalNumbering" )
2811  {
2812  Double_t phi_min = fEcalNumbering->GetPhiMin(SMNumber, n1SMTow);
2813  Double_t phi_max = fEcalNumbering->GetPhiMax(SMNumber, n1SMTow);
2814 
2815  TString y_var_name = GetEtaPhiAxisTitle("phi");
2816  TString y_direction = fEcalNumbering->GetYDirectionEB(SMNumber);
2817 
2818  new TF1("f2", y_direction.Data(), phi_min, phi_max); fCnewRoot++;
2819  TGaxis* sup_axis_y = nullptr;
2820 
2821  if ( y_direction == "-x" ) // ALWAYS IN THIS CASE: ymin->ymax <=> top->bottom ("-x") direction
2822  {sup_axis_y = new TGaxis( (Float_t)(size_eta*MatSize), (Float_t)0.,
2823  (Float_t)(size_eta*MatSize), (Float_t)(size_phi*MatSize),
2824  "f2", size_phi, "+CS", 0.); fCnewRoot++;}
2825 
2826  if ( y_direction == "x" ) // NEVER IN THIS CASE: ymin->ymax <=> bottom->top ("x") direction
2827  {sup_axis_y = new TGaxis( (Float_t)0., (Float_t)0., (Float_t) 0., (Float_t)(size_phi*MatSize),
2828  "f2", size_phi, "BCS", 0.); fCnewRoot++;}
2829 
2830  sup_axis_y->SetTitle(y_var_name);
2831  sup_axis_y->SetTitleSize(tit_siz_y);
2832  sup_axis_y->SetTitleOffset(tit_off_y);
2833  sup_axis_y->SetLabelSize(lab_siz_y);
2834  sup_axis_y->SetLabelOffset(lab_off_y);
2835  sup_axis_y->SetTickSize(tic_siz_y);
2836  sup_axis_y->Draw("SAME");
2837  }
2838  //...................................................... Axe j(phi) (y left) (ViewTowerGrid)
2839 
2840  Double_t j_phi_min = fEcalNumbering->GetJPhiMin(SMNumber, n1SMTow);
2841  Double_t j_phi_max = fEcalNumbering->GetJPhiMax(SMNumber, n1SMTow);
2842 
2843  TString jy_var_name = GetEtaPhiAxisTitle("jphiTow");
2844  TString jy_direction = fEcalNumbering->GetJYDirectionEB(SMNumber);
2845 
2846  new TF1("f3", jy_direction.Data(), j_phi_min, j_phi_max); fCnewRoot++;
2847  TGaxis* sup_axis_jy = nullptr;
2848 
2849  sup_axis_jy = new TGaxis( (Float_t)0., (Float_t)0.,
2850  (Float_t)0., (Float_t)(size_phi*MatSize),
2851  "f3", size_phi, "SC", 0.); fCnewRoot++;
2852 
2853  sup_axis_jy->SetTitle(jy_var_name);
2854  sup_axis_jy->SetTitleSize(tit_siz_y);
2855  sup_axis_jy->SetTitleOffset(tit_off_y);
2856  sup_axis_jy->SetLabelSize(lab_siz_y);
2857  sup_axis_jy->SetLabelOffset(lab_off_y);
2858  sup_axis_jy->SetTickSize(tic_siz_y);
2859  sup_axis_jy->Draw("SAME");
2860 } // end of ViewTowerGrid
2861 
2862 //===============================================================================
2863 //
2864 // ViewSCGrid
2865 // independent of the ROOT file => DeeNumber as argument
2866 //
2867 //===============================================================================
2868 void TEcnaHistos::ViewSCGrid(const Int_t& DeeNumber, const Int_t& n1DeeSCEcna,
2869  const Int_t& MatSize, const Int_t& size_IX,
2870  const Int_t& size_IY, const TString& chopt)
2871 {
2872  //Grid of one SC with axis IX and IY
2873  //.......................... lignes verticales
2874  Double_t xline = 0.;
2875 
2876  Double_t yline_bot = 0.;
2877  Double_t yline_top = (Double_t)(MatSize*size_IX);
2878 
2879  for( Int_t i = 0 ; i < size_IX ; i++)
2880  {
2881  xline = xline + (Double_t)MatSize;
2882  TLine *lin;
2883  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
2884  lin->Draw();
2885  // delete lin; fCdeleteRoot++;
2886  }
2887  //............................. lignes horizontales
2888  Double_t xline_left = 0;
2889  Double_t xline_right = (Double_t)(MatSize*size_IX);
2890 
2891  Double_t yline = -(Double_t)MatSize;
2892 
2893  for( Int_t j = 0 ; j < size_IX+1 ; j++)
2894  {
2895  yline = yline + (Double_t)MatSize;
2896  TLine *lin;
2897  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
2898  lin->Draw();
2899  // delete lin; fCdeleteRoot++;
2900  }
2901 
2902  //------------------ trace axes en IX et IY --------------- ViewSCGrid
2903 
2904  //...................................................... Axe i(IX) (x bottom) (ViewSCGrid)
2905 
2906  Double_t IX_min = fEcalNumbering->GetIIXMin(n1DeeSCEcna) - 0.5;
2907  Double_t IX_max = fEcalNumbering->GetIIXMax(n1DeeSCEcna) + 0.5;
2908 
2909  Float_t axis_x_inf = 0;
2910  Float_t axis_x_sup = 0;
2911  Float_t axis_y_inf = 0;
2912  Float_t axis_y_sup = 0;
2913  Int_t axis_nb_div = 1;
2914  Double_t IX_values_min = 0;
2915  Double_t IX_values_max = 0;
2916  Option_t* axis_chopt = "CS";
2917 
2918  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
2919  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
2920  Float_t tic_siz_x = fCnaParHistos->AxisTickSize();
2921  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("SCx");
2922  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("SCx");
2923 
2924  TString StrDee = "iIXSC";
2925  if( DeeNumber == 1 ){StrDee = "iIXDee1";}
2926  if( DeeNumber == 2 ){StrDee = "iIXDee2";}
2927  if( DeeNumber == 3 ){StrDee = "iIXDee3";}
2928  if( DeeNumber == 4 ){StrDee = "iIXDee4";}
2929 
2930  TString x_var_name = GetIXIYAxisTitle(StrDee.Data());
2931  TString x_direction = fEcalNumbering->GetXDirectionEE(DeeNumber);
2932 
2933  TGaxis* sup_axis_x = nullptr;
2934 
2935  if( DeeNumber == 1 ) // -xmin -> -xmax <=> left->right
2936  {
2937  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2938  axis_nb_div = size_IX;
2939  IX_values_min = -IX_min ; IX_values_max = -IX_max; axis_chopt = "CS";
2940  }
2941  if( DeeNumber == 2 ) // xmin -> xmax <=> right->left
2942  {
2943  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2944  axis_nb_div = size_IX;
2945  IX_values_min = IX_min ; IX_values_max = IX_max; axis_chopt = "CS";
2946  }
2947  if( DeeNumber == 3 ) // xmin -> xmax <=> left->right
2948  {
2949  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2950  axis_nb_div = size_IX;
2951  IX_values_min = IX_min ; IX_values_max = IX_max; axis_chopt = "CS";
2952  }
2953  if( DeeNumber == 4 ) // -xmin -> -xmax <=> right->left
2954  {
2955  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2956  axis_nb_div = size_IX;
2957  IX_values_min = -IX_min ; IX_values_max = -IX_max; axis_chopt = "CS";
2958  }
2959 
2960  new TF1("f1", x_direction.Data(), IX_values_min, IX_values_max); fCnewRoot++;
2961  sup_axis_x = new TGaxis( axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup,
2962  "f1", axis_nb_div, axis_chopt , 0.); fCnewRoot++;
2963 
2964  sup_axis_x->SetTitle(x_var_name);
2965  sup_axis_x->SetTitleSize(tit_siz_x);
2966  sup_axis_x->SetTitleOffset(tit_off_x);
2967  sup_axis_x->SetLabelSize(lab_siz_x);
2968  sup_axis_x->SetLabelOffset(lab_off_x);
2969  sup_axis_x->SetTickSize(tic_siz_x); // <===== NE MARCHE QU'AVEC L'OPTION "S"
2970  sup_axis_x->Draw("SAME");
2971 
2972  //...................................................... Axe j(IY) (ViewSCGrid)
2973 
2974  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
2975  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
2976  Float_t tic_siz_y = fCnaParHistos->AxisTickSize();
2977  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("SCy");
2978  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("SCy");
2979 
2980  Double_t j_IY_min = fEcalNumbering->GetJIYMin(DeeNumber, n1DeeSCEcna) - 0.5;
2981  Double_t j_IY_max = fEcalNumbering->GetJIYMax(DeeNumber, n1DeeSCEcna) + 0.5;
2982 
2983  TString jy_var_name = GetIXIYAxisTitle("jIYSC");
2984  TString jy_direction = fEcalNumbering->GetJYDirectionEE(DeeNumber);
2985 
2986  new TF1("f2", jy_direction.Data(), j_IY_min, j_IY_max); fCnewRoot++;
2987 
2988  TGaxis* sup_axis_jy = new TGaxis( (Float_t)0., (Float_t)0.,
2989  (Float_t)0., (Float_t)(size_IY*MatSize),
2990  "f2", size_IY, "CS", 0.); fCnewRoot++;
2991 
2992  sup_axis_jy->SetTitle(jy_var_name);
2993  sup_axis_jy->SetTitleSize(tit_siz_y);
2994  sup_axis_jy->SetTitleOffset(tit_off_y);
2995  sup_axis_jy->SetLabelSize(lab_siz_y);
2996  sup_axis_jy->SetLabelOffset(lab_off_y);
2997  sup_axis_jy->SetTickSize(tic_siz_y); // <===== NE MARCHE QU'AVEC L'OPTION "S"
2998  sup_axis_jy->Draw();
2999 
3000 } // end of ViewSCGrid
3001 
3002 //=======================================================================================
3003 //
3004 // ViewStex(***)
3005 //
3006 // (Hoco,Veco) matrices for all the Stins of a Stex
3007 //
3008 // arg_read_histo: 1D array containing the quantity for each channel in the Stex
3009 // (dim = MaxCrysInStex())
3010 // arg_AlreadyRead: =1 <=> arg_read_histo
3011 // =0 <=> read the 1D array in this method with TEcnaRead
3012 //
3013 // HistoCode: code for the plotted quantity
3014 //
3015 //=======================================================================================
3016 void TEcnaHistos::ViewStex(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
3017  const TString& HistoCode)
3018 {
3019 // (Hoco, Veco) matrices for all the Stins of a Stex
3020 
3021  Bool_t OKFileExists = kFALSE;
3022  Bool_t OKData = kFALSE;
3023 
3024  Int_t n1StexStin = -1;
3025 
3026  if( arg_AlreadyRead == fTobeRead )
3027  {
3033 
3034  if( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;}
3035 
3036  if( OKFileExists == kTRUE )
3037  {
3039  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
3040  // std::cout << "*TEcnaHistos::ViewStex(...)> Data are analyzed from file ----> "
3041  // << fp_name_short << std::endl;
3042 
3046  }
3047  }
3048  if( arg_AlreadyRead >= 1 )
3049  {
3050  OKFileExists = kTRUE;
3051  }
3052 
3053  if( OKFileExists == kTRUE )
3054  {
3055  fStatusFileFound = kTRUE;
3056 
3057  //......................... matrix title (ViewStex)
3058  char f_in_mat_tit[charArrLen];
3059  sprintf(f_in_mat_tit, "?");
3060 
3061  if (HistoCode == "D_NOE_ChNb") {sprintf(f_in_mat_tit, "Number of events");}
3062  if (HistoCode == "D_Ped_ChNb") {sprintf(f_in_mat_tit, "Pedestals");}
3063  if (HistoCode == "D_TNo_ChNb") {sprintf(f_in_mat_tit, "Total noise");}
3064  if (HistoCode == "D_MCs_ChNb") {sprintf(f_in_mat_tit, "Mean cor(s,s')");}
3065  if (HistoCode == "D_LFN_ChNb") {sprintf(f_in_mat_tit, "Low frequency noise");}
3066  if (HistoCode == "D_HFN_ChNb") {sprintf(f_in_mat_tit, "High frequency noise");}
3067  if (HistoCode == "D_SCs_ChNb") {sprintf(f_in_mat_tit, "Sigma of cor(s,s')");}
3068 
3069  //................................. Axis parameters
3070  Int_t GeoBidSizeHoco = fEcal->MaxStinHocoInStex()*fEcal->MaxCrysHocoInStin();
3071  Int_t GeoBidSizeVeco = fEcal->MaxStinVecoInStex()*fEcal->MaxCrysVecoInStin();
3072 
3073  Int_t nb_binx = GeoBidSizeHoco;
3074  Int_t nb_biny = GeoBidSizeVeco;
3075  Axis_t xinf_bid = (Axis_t)0.;
3076  Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
3077  Axis_t yinf_bid = (Axis_t)0.;
3078  Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
3079 
3080  TString axis_x_var_name = " #Hoco ";
3081  TString axis_y_var_name = " #Veco ";
3082 
3083  //............. matrices reading and histogram filling (ViewStex)
3084 
3085  TH2D* h_geo_bid = new TH2D("geobidim_ViewStex", f_in_mat_tit,
3086  nb_binx, xinf_bid, xsup_bid,
3087  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
3088 
3089  h_geo_bid->Reset();
3090 
3091  //............................................... 1D histo reading (ViewStex)
3092  TVectorD partial_histp(fEcal->MaxCrysEcnaInStex());
3093  for(Int_t i=0; i<fEcal->MaxCrysEcnaInStex(); i++){partial_histp(i)=(Double_t)0.;}
3094 
3095  if( arg_AlreadyRead == fTobeRead )
3096  {
3097  if (HistoCode == "D_NOE_ChNb" ){partial_histp = fMyRootFile->ReadNumberOfEvents(fEcal->MaxCrysEcnaInStex());}
3098  if (HistoCode == "D_Ped_ChNb" ){
3099  partial_histp = fMyRootFile->ReadPedestals(fEcal->MaxCrysEcnaInStex());}
3100  if (HistoCode == "D_TNo_ChNb" ){
3101  partial_histp = fMyRootFile->ReadTotalNoise(fEcal->MaxCrysEcnaInStex());}
3102  if (HistoCode == "D_MCs_ChNb" ){
3104  if (HistoCode == "D_LFN_ChNb" ){
3106  if (HistoCode == "D_HFN_ChNb" ){
3108  if (HistoCode == "D_SCs_ChNb" ){
3110 
3111  OKData = fMyRootFile->DataExist();
3112  }
3113 
3114  if( arg_AlreadyRead >= 1 )
3115  {
3116  partial_histp = arg_read_histo;
3117  OKData = kTRUE;
3118  }
3119 
3120  //------------------------------- Build 2D matrix to be ploted from 1D read histo (ViewStex)
3121  TMatrixD read_matrix(nb_binx, nb_biny);
3122  for(Int_t i=0; i<nb_binx; i++)
3123  {for(Int_t j=0; j<nb_biny; j++){read_matrix(i,j)=(Double_t)0.;}}
3124 
3125  if ( OKData == kTRUE )
3126  {
3127  fStatusDataExist = kTRUE;
3128 
3129  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
3130  {
3131  if( arg_AlreadyRead == fTobeRead )
3132  {n1StexStin = fMyRootFile->GetStexStinFromIndex(i0StexStinEcna);}
3133  if( arg_AlreadyRead >= 1 )
3134  {n1StexStin = i0StexStinEcna+1;}
3135 
3136  if (n1StexStin != -1)
3137  {
3138  //------------------ Geographical bidim filling (ViewStex)
3139  for(Int_t i0StinEcha=0; i0StinEcha<fEcal->MaxCrysInStin(); i0StinEcha++)
3140  {
3141  Int_t iStexEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + i0StinEcha;
3142  Int_t i_xgeo = GetXCrysInStex(fFapStexNumber, n1StexStin, i0StinEcha);
3143  Int_t i_ygeo = GetYCrysInStex(fFapStexNumber, n1StexStin, i0StinEcha);
3144 
3145  if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
3146  {
3147  read_matrix(i_xgeo, i_ygeo) = partial_histp(iStexEcha);
3148  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
3149  (Double_t)read_matrix(i_xgeo, i_ygeo));
3150  }
3151  }
3152  }
3153  }
3154 
3155  //=============== H I S T O M I N / M A X M A N A G E M E N T ============ (ViewStex)
3156 
3157  //................................ Put histo min max values
3158  //.......... default if flag not set to "ON"
3159  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
3160  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
3161 
3162  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
3163  //.......... user's value if flag set to "ON"
3164  if( fFlagUserHistoMin == "ON" )
3165  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
3166  if( fFlagUserHistoMax == "ON" )
3167  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
3168  //................................. automatic min and/or max
3169  if( fFlagUserHistoMin == "AUTO" )
3170  {SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
3171  if( fFlagUserHistoMax == "AUTO" )
3172  {SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
3173  //...................................... histo set ymin and ymax
3174  SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
3175 
3176  // ************************** A GARDER EN RESERVE *******************************
3177  //............. special contour level for correlations (square root wise scale)
3178  //if ( HistoCode == "D_MCs_ChNb" )
3179  //{
3180  // Int_t nb_niv = 9;
3181  // Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
3182  // SqrtContourLevels(nb_niv, &cont_niv[0]);
3183  // h_geo_bid->SetContour(nb_niv, &cont_niv[0]);
3184  // delete [] cont_niv; fCdelete++;
3185  //}
3186  // ******************************** (FIN RESERVE) *******************************
3187 
3188  // =================================== P L O T S ======================== (ViewStex)
3189 
3190  char f_in[charArrLen];
3191 
3192  //...................... Taille/format canvas
3193  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
3194  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
3195 
3196  if( fFlagSubDet == "EB")
3197  {canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3198  canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");}
3199  if( fFlagSubDet == "EE")
3200  {canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
3201  canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");}
3202 
3203  //............................................... paves commentaires (ViewStex)
3205 
3206  //------------------------------------ Canvas name ----------------- (ViewStex)
3207  TString name_cov_cor;
3208  name_cov_cor.Resize(charArrLen);
3209  name_cov_cor = "?";
3210 
3211  if( HistoCode == "D_NOE_ChNb"){name_cov_cor = "Nb_Of_D_Adc_EvDs";}
3212  if( HistoCode == "D_Ped_ChNb"){name_cov_cor = "Pedestals";}
3213  if( HistoCode == "D_TNo_ChNb"){name_cov_cor = "Total_noise";}
3214  if( HistoCode == "D_MCs_ChNb"){name_cov_cor = "Mean_Corss";}
3215  if( HistoCode == "D_LFN_ChNb"){name_cov_cor = "Low_Fq_Noise";}
3216  if( HistoCode == "D_HFN_ChNb"){name_cov_cor = "High_Fq_Noise";}
3217  if( HistoCode == "D_SCs_ChNb"){name_cov_cor = "Sigma_Corss";}
3218 
3219  TString name_visu;
3220  name_visu.Resize(charArrLen);
3221  name_visu = "colz";
3222 
3223  TString flag_already_read;
3224  flag_already_read.Resize(charArrLen);
3225  flag_already_read = "?";
3226  sprintf(f_in,"M%d", arg_AlreadyRead); flag_already_read = f_in;
3227 
3228  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%s%d_%s_HocoVeco_R%s",
3229  name_cov_cor.Data(), fFapAnaType.Data(), fFapNbOfSamples, fFapRunNumber,
3231  name_visu.Data(), flag_already_read.Data());
3232 
3233  if( fFlagSubDet == "EB" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEB");}
3234  if( fFlagSubDet == "EE" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEE");}
3235 
3236  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
3237  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
3238 
3239  // std::cout << "*TEcnaHistos::ViewStex(...)> Plot is displayed on canvas ----> " << f_in << std::endl;
3240 
3241  //------------------------ Canvas draw and update ------------ (ViewStex)
3242  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
3243  fPavComStex->Draw();
3244  fPavComAnaRun->Draw();
3245  fPavComNbOfEvts->Draw();
3246 
3247  //----------------------------------------------------------- pad margins
3248  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3249  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
3250  Double_t x_margin = x_low;
3251  Double_t y_margin = y_low;
3252  MainCanvas->Divide( 1, 1, x_margin, y_margin);
3253  // Divide(nx, ny, x_margin, y_margin, color);
3254  gPad->cd(1);
3255  //........................... specific EE
3256  if( fFlagSubDet == "EE" )
3257  {Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
3258  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
3259  TVirtualPad* main_subpad = gPad;
3260  main_subpad->SetPad(x_low, y_low, x_up, y_up);}
3261 
3262  //------------------------------------------------------------
3263  h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
3264  h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
3265 
3266  h_geo_bid->DrawCopy("COLZ");
3267 
3268  // trace de la grille: un rectangle = une tour ou un SC ---------------- (ViewStex)
3270  gPad->Draw();
3271  gPad->Update();
3272 
3273  //..................... retour aux options standard
3274  Bool_t b_true = true;
3275  h_geo_bid->SetStats(b_true);
3276  h_geo_bid->Delete(); h_geo_bid = nullptr; fCdeleteRoot++;
3277 
3278  // delete MainCanvas; fCdeleteRoot++;
3279  } // end of if OKData == kTRUE )
3280  } // end of if OKFileExists == kTRUE )
3281  else
3282  {
3283  fStatusFileFound = kFALSE;
3284 
3285  std::cout << "!TEcnaHistos::ViewStex(...)> *ERROR* =====> "
3286  << " ROOT file not found" << fTTBELL << std::endl;
3287  }
3288 } // end of ViewStex(...)
3289 
3290 //===========================================================================
3291 //
3292 // StexHocoVecoLHFCorcc(***)
3293 //
3294 // Geographical view of the cor(c,c) matrices (mean over samples) of
3295 // all (Stin_A,Stin_A) [case A=B only] of a given Stex (BIG MATRIX)
3296 //
3297 //===========================================================================
3298 void TEcnaHistos::StexHocoVecoLHFCorcc(const TString& Freq)
3299 {
3300 // (Hoco, Veco) matrices for all the Stins of a Stex
3301 
3307 
3308  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (StexHocoVecoLHFCorcc)
3309  {
3310  fStatusFileFound = kTRUE;
3311 
3313  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
3314  //std::cout << "*TEcnaHistos::StexHocoVecoLHFCorcc(...)> Data are analyzed from file ----> "
3315  // << fp_name_short << std::endl;
3316 
3320 
3321  //......................... matrix title
3322  char f_in_mat_tit[charArrLen];
3323 
3324  if( fFlagSubDet == "EB" && Freq == "LF" )
3325  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') for each tower in SM");}
3326  if( fFlagSubDet == "EB" && Freq == "HF" )
3327  {sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') for each tower in SM");}
3328  if( fFlagSubDet == "EE" && Freq == "LF" )
3329  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') for each SC in Dee");}
3330  if( fFlagSubDet == "EE" && Freq == "HF" )
3331  {sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') for each SC in Dee");}
3332 
3333  //................................. Axis parameters
3334  Int_t GeoBidSizeHoco = fEcal->MaxStinHocoInStex()*fEcal->MaxCrysInStin();
3335  Int_t GeoBidSizeVeco = fEcal->MaxStinVecoInStex()*fEcal->MaxCrysInStin();
3336 
3337  Int_t nb_binx = GeoBidSizeHoco;
3338  Int_t nb_biny = GeoBidSizeVeco;
3339  Axis_t xinf_bid = (Axis_t)0.;
3340  Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
3341  Axis_t yinf_bid = (Axis_t)0.;
3342  Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
3343 
3344  TString axis_x_var_name = " #Hoco ";
3345  TString axis_y_var_name = " #varVeco ";
3346 
3347  //======================================================== (StexHocoVecoLHFCorcc)
3348  TVectorD Stin_numbers(fEcal->MaxStinEcnaInStex());
3349  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){Stin_numbers(i)=(Double_t)0.;}
3350  Stin_numbers = fMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
3351 
3352  if ( fMyRootFile->DataExist() == kTRUE )
3353  {
3354  fStatusDataExist = kTRUE;
3355 
3356  //............. matrices reading and histogram filling
3357  TMatrixD partial_matrix(fEcal->MaxCrysEcnaInStex(), fEcal->MaxCrysEcnaInStex());
3358  for(Int_t i=0; i<fEcal->MaxCrysEcnaInStex(); i++)
3359  {for(Int_t j=0; j<fEcal->MaxCrysEcnaInStex(); j++){partial_matrix(i,j)=(Double_t)0.;}}
3360 
3361  if( Freq == "LF")
3362  {
3364  }
3365  if( Freq == "HF")
3366  {
3368  }
3369 
3370  if ( fMyRootFile->DataExist() == kTRUE )
3371  {
3372  fStatusDataExist = kTRUE;
3373 
3374  //............................... 2D histo booking
3375  TH2D* h_geo_bid = new TH2D("geobidim_HocoVecoLHFCorcc", f_in_mat_tit,
3376  nb_binx, xinf_bid, xsup_bid,
3377  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
3378  h_geo_bid->Reset();
3379 
3381 
3382  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
3383  {
3384  Int_t n1StexStin = (Int_t)Stin_numbers(i0StexStinEcna);
3385  Int_t offset_x = ((n1StexStin-1)/fEcal->MaxStinVecoInStex())*fEcal->MaxCrysInStin();
3386  Int_t offset_y = ((n1StexStin-1)%fEcal->MaxStinVecoInStex())*fEcal->MaxCrysInStin();
3387 
3388  if (n1StexStin != -1)
3389  {
3390  //================================================= (StexHocoVecoLHFCorcc)
3391  //------------------ Geographical bidim filling
3392  for(Int_t i0StinEcha=0; i0StinEcha<fEcal->MaxCrysInStin(); i0StinEcha++)
3393  {
3394  for(Int_t j0StinEcha=0; j0StinEcha<fEcal->MaxCrysInStin(); j0StinEcha++)
3395  {
3396  Int_t i_xgeo = offset_x + i0StinEcha;
3397  Int_t i_ygeo = offset_y + j0StinEcha;
3398 
3399  if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
3400  {
3401  Int_t iEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + i0StinEcha;
3402  Int_t jEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + j0StinEcha;
3403 
3404  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
3405  (Double_t)partial_matrix(iEcha, jEcha));
3406  }
3407  }
3408  }
3409  }
3410  }
3411 
3412  //=============== H I S T O M I N / M A X M A N A G E M E N T ============ (StexHocoVecoLHFCorcc)
3413 
3414  TString HistoCode = "H2CorccInStins";
3415 
3416  //................................ Put histo min max values
3417  //.......... default if flag not set to "ON"
3418  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
3419  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
3420 
3421  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
3422  //.......... user's value if flag set to "ON"
3423  if( fFlagUserHistoMin == "ON" )
3424  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
3425  if( fFlagUserHistoMax == "ON" )
3426  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
3427  //................................. automatic min and/or max
3428  if( fFlagUserHistoMin == "AUTO" )
3429  {SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
3430  if( fFlagUserHistoMax == "AUTO" )
3431  {SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
3432  //...................................... histo set ymin and ymax
3433  SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
3434 
3435  // ----------------------------------- P L O T S (StexHocoVecoLHFCorcc)
3436 
3437  char f_in[charArrLen];
3438 
3439  //...................... Taille/format canvas
3440 
3441  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
3442  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
3443 
3444  if( fFlagSubDet == "EB")
3445  {canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3446  canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");}
3447  if( fFlagSubDet == "EE")
3448  {canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
3449  canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");}
3450 
3451  //..................................... paves commentaires (StexHocoVecoLHFCorcc)
3453 
3454  //----------------- Canvas name ------- (StexHocoVecoLHFCorcc)
3455  TString name_cov_cor;
3456  name_cov_cor.Resize(charArrLen);
3457  if( Freq == "LF" ){name_cov_cor = "StexLFCorcc";}
3458  if( Freq == "HF" ){name_cov_cor = "StexHFCorcc";}
3459 
3460  TString name_visu;
3461  name_visu.Resize(charArrLen);
3462  name_visu = "colz";
3463 
3464  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_Stex%s%d_%s_HocoVeco",
3465  name_cov_cor.Data(), fFapAnaType.Data(), fFapNbOfSamples, fFapRunNumber,
3467  name_visu.Data());
3468 
3469  if( fFlagSubDet == "EB" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEB");}
3470  if( fFlagSubDet == "EE" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEE");}
3471 
3472  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
3473  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
3474 
3475  // std::cout << "*TEcnaHistos::StexHocoVecoLHFCorcc(...)> Plot is displayed on canvas ----> "
3476  // << f_in << std::endl;
3477 
3478  //------------ Canvas draw and update ------ (StexHocoVecoLHFCorcc)
3479  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
3480  fPavComStex->Draw();
3481  fPavComAnaRun->Draw();
3482  fPavComNbOfEvts->Draw();
3483 
3484  //----------------------------------------------------------- pad margins
3485  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3486  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
3487  Double_t x_margin = x_low;
3488  Double_t y_margin = y_low;
3489  MainCanvas->Divide( 1, 1, x_margin, y_margin);
3490  // Divide(nx, ny, x_margin, y_margin, color);
3491  gPad->cd(1);
3492  //........................... specific EE
3493  if( fFlagSubDet == "EE" )
3494  {
3495  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
3496  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
3497  TVirtualPad* main_subpad = gPad;
3498  main_subpad->SetPad(x_low, y_low, x_up, y_up);
3499  }
3500 
3501  h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
3502  h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
3503 
3504  h_geo_bid->DrawCopy("COLZ");
3505 
3506  // trace de la grille: un rectangle = une tour (StexHocoVecoLHFCorcc)
3507  ViewStexGrid(fFapStexNumber, "corcc");
3508  gPad->Draw();
3509  gPad->Update();
3510 
3511  //..................... retour aux options standard
3512  Bool_t b_true = true;
3513  h_geo_bid->SetStats(b_true);
3514  h_geo_bid->Delete(); h_geo_bid = nullptr; fCdeleteRoot++;
3515 
3516  // delete MainCanvas; fCdeleteRoot++;
3517  }
3518  }
3519  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
3520  else
3521  {
3522  fStatusFileFound = kFALSE;
3523 
3524  std::cout << "!TEcnaHistos::StexHocoVecoLHFCorcc(...)> *ERROR* =====> "
3525  << " ROOT file not found" << fTTBELL << std::endl;
3526  }
3527 } // end of StexHocoVecoLHFCorcc
3528 
3529 //==================================================================================
3530 //
3531 // GetXCrysInStex, GetYCrysInStex
3532 //
3533 //==================================================================================
3534 Int_t TEcnaHistos::GetXCrysInStex(const Int_t& StexNumber, const Int_t& n1StexStin,
3535  const Int_t& i0StinEcha)
3536 {
3537 //Gives the X crystal coordinate in the geographic view of one Stex
3538 // (X = 0 to MaxStinHocoInStex*NbCrysHocoInStin - 1)
3539 
3540  Int_t ix_geo = 0;
3541 
3542  if( fFlagSubDet == "EB")
3543  {TString ctype = fEcalNumbering->GetStexHalfStas(StexNumber);
3544  Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(n1StexStin, i0StinEcha, StexNumber);
3545  ix_geo = (n1StexCrys-1)/fEcal->MaxCrysVecoInStex(); // ix_geo for EB+
3546  if( ctype == "EB-"){ix_geo = fEcal->MaxCrysHocoInStex() - ix_geo - 1;}}
3547 
3548  if( fFlagSubDet == "EE")
3549  {TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(StexNumber);
3550  ix_geo = 0;
3551  if( DeeDir == "right" )
3552  {ix_geo = fEcalNumbering->GetIXCrysInDee(StexNumber, n1StexStin, i0StinEcha) - 1;}
3553  if( DeeDir == "left" )
3554  {ix_geo = fEcal->MaxCrysIXInDee() - fEcalNumbering->GetIXCrysInDee(StexNumber, n1StexStin, i0StinEcha);}}
3555 
3556  return ix_geo;
3557 }
3558 
3559 Int_t TEcnaHistos::GetYCrysInStex(const Int_t& StexNumber, const Int_t& n1StexStin,
3560  const Int_t& j0StinEcha)
3561 {
3562 //Gives the Y crystal coordinate in the geographic view of one Stex
3563 // (Y = 0 to MaxStinVecoInStex*NbCrysVecoInStin - 1)
3564 
3565  Int_t iy_geo = 0;
3566 
3567  if( fFlagSubDet == "EB")
3568  {TString ctype = fEcalNumbering->GetStexHalfStas(StexNumber);
3569  Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(n1StexStin, j0StinEcha, StexNumber);
3570  Int_t ix_geo = (n1StexCrys-1)/fEcal->MaxCrysVecoInStex(); // ix_geo for EB+
3571  iy_geo = n1StexCrys - 1 - ix_geo*fEcal->MaxCrysVecoInStex(); // iy_geo for EB+
3572  if( ctype == "EB-"){iy_geo = fEcal->MaxCrysVecoInStex() - iy_geo - 1;}}
3573 
3574  if( fFlagSubDet == "EE")
3575  {iy_geo = fEcalNumbering->GetJYCrysInDee(StexNumber, n1StexStin, j0StinEcha) - 1;}
3576 
3577  return iy_geo;
3578 }
3579 
3580 //===========================================================================
3581 //
3582 // StexStinNumbering, ViewStexStinNumberingPad
3583 //
3584 // independent of the ROOT file => StexNumber as argument
3585 //
3586 //===========================================================================
3587 void TEcnaHistos::StexStinNumbering(const Int_t& StexNumber)
3588 {
3589 //display the Stin numbering of the Stex
3590 
3591  if( fFlagSubDet == "EB" ){SMTowerNumbering(StexNumber);}
3592  if( fFlagSubDet == "EE" ){DeeSCNumbering(StexNumber);}
3593 }
3594 // end of StexStinNumbering
3595 
3596 //=============================================================================
3597 //
3598 // ViewStexStinNumberingPad
3599 // independent of the ROOT file => StexNumber as argument
3600 //
3601 //=============================================================================
3602 void TEcnaHistos::ViewStexStinNumberingPad(const Int_t& StexNumber)
3603 {
3604 //display the Stin numbering of the Stex in a Pad
3605 
3606  if( fFlagSubDet == "EB"){ViewSMTowerNumberingPad(StexNumber);}
3607  if( fFlagSubDet == "EE"){ViewDeeSCNumberingPad(StexNumber);}
3608 }
3609 //----------------> end of ViewStexStinNumberingPad()
3610 
3611 //==========================================================================
3612 //
3613 // ViewStexGrid
3614 // independent of the ROOT file => StexNumber as argument
3615 //
3616 //==========================================================================
3617 void TEcnaHistos::ViewStexGrid(const Int_t& StexNumber, const TString& c_option)
3618 {
3619  //Grid of one Stex with axis Hoco and Veco
3620 
3621  if( fFlagSubDet == "EB"){ViewSMGrid(StexNumber, c_option);}
3622  if( fFlagSubDet == "EE"){ViewDeeGrid(StexNumber, c_option);}
3623 
3624 } // end of ViewStexGrid
3625 
3626 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& S P E C I F I C &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3627 
3628 //======================================= BARREL ===============================
3629 void TEcnaHistos::SMTowerNumbering(const Int_t& SMNumber)
3630 {
3631  //display the tower numbering of the super-module
3632 
3633  if( (SMNumber > 0) && (SMNumber <= fEcal->MaxSMInEB()) )
3634  {
3635  Int_t GeoBidSizeEta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysEtaInTow();
3636  Int_t GeoBidSizePhi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow();
3637 
3638  Int_t nb_binx = GeoBidSizeEta;
3639  Int_t nb_biny = GeoBidSizePhi;
3640  Axis_t xinf_bid = (Axis_t)0.;
3641  Axis_t xsup_bid = (Axis_t)GeoBidSizeEta;
3642  Axis_t yinf_bid = (Axis_t)0.;
3643  Axis_t ysup_bid = (Axis_t)GeoBidSizePhi;
3644 
3645  TString axis_x_var_name = " #eta ";
3646  TString axis_y_var_name = " #varphi ";
3647 
3648  //------------------------------------------------------------------- SMTowerNumbering
3649 
3650  //............. matrices reading and histogram filling
3651  char f_in_mat_tit[charArrLen];
3652 
3653  if( SMNumber <= fEcal->MaxSMPhiInEB() )
3654  {sprintf(f_in_mat_tit, " SM tower numbering");}
3655  if( SMNumber > fEcal->MaxSMPhiInEB() )
3656  {sprintf(f_in_mat_tit, " SM tower numbering ");}
3657 
3658  // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
3659 
3660  TH2D* h_empty_bid = new TH2D("grid_bidim_eta_phi", f_in_mat_tit,
3661  nb_binx, xinf_bid, xsup_bid,
3662  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
3663  h_empty_bid->Reset();
3664 
3665  h_empty_bid->GetXaxis()->SetTitle(axis_x_var_name);
3666  h_empty_bid->GetYaxis()->SetTitle(axis_y_var_name);
3667 
3668  // ------------------------------------------------ P L O T S (SMTowerNumbering)
3669 
3670  char f_in[charArrLen];
3671 
3672  //...................... Taille/format canvas
3673 
3674  UInt_t canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3675  UInt_t canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");
3676 
3677  //............................................... options generales
3678 
3680 
3681  //............................................... paves commentaires (SMTowerNumbering)
3682  SetAllPavesViewStex("Numbering", SMNumber);
3683 
3684  //------------------------------------ Canvas name ----------------- (SMTowerNumbering)
3685 
3686  sprintf(f_in, "tower_numbering_for_SuperModule_SM%d", SMNumber);
3687 
3688  SetHistoPresentation((TH1D*)h_empty_bid,"Stex2DEB");
3689 
3690  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
3691  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
3692 
3693  // std::cout << "*TEcnaHistosEB::ViewSM(...)> Plot is displayed on canvas ----> " << f_in << std::endl;
3694 
3695  //------------------------ Canvas draw and update ------------ (SMTowerNumbering)
3696  fPavComStex->Draw();
3697 
3698  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3699  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
3700  MainCanvas->Divide(1, 1, x_margin, y_margin);
3701  gPad->cd(1);
3702 
3703  h_empty_bid->DrawCopy("COL"); // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
3704 
3705  ViewSMTowerNumberingPad(SMNumber);
3706  gPad->Update();
3707 
3708  //..................... retour aux options standard
3709  Bool_t b_true = true;
3710  h_empty_bid->SetStats(b_true);
3711 
3712  h_empty_bid->Delete(); h_empty_bid = nullptr; fCdeleteRoot++;
3713 
3714  // delete MainCanvas; fCdeleteRoot++;
3715 
3716  }
3717  else
3718  {
3719  std::cout << "!TEcnaHistos::SMTowerNumbering(...)> SM = " << SMNumber
3720  << ". Out of range ( range = [1," << fEcal->MaxSMInEB() << "] )" << fTTBELL << std::endl;
3721  }
3722 }
3723 // end of SMTowerNumbering
3724 
3725 void TEcnaHistos::ViewSMTowerNumberingPad(const Int_t& SMNumber)
3726 {
3727  //display the tower numbering of the super-module in a Pad
3728 
3729  gStyle->SetTitleW(0.2); // taille titre histos
3730  gStyle->SetTitleH(0.07);
3731 
3732  ViewSMGrid(SMNumber, " ");
3733 
3734  Color_t couleur_rouge = fCnaParHistos->SetColorsForNumbers("lvrb_top");
3735  Color_t couleur_bleu_fonce = fCnaParHistos->SetColorsForNumbers("lvrb_bottom");
3736 
3737  //..... Ecriture des numeros de tours dans la grille..... (ViewSMTowerNumberingPad)
3738 
3739  char f_in[charArrLen];
3740  gStyle->SetTextSize(0.075);
3741 
3742  // x_channel, y_channel: coordinates of the text "Txx"
3743  Int_t y_channel = 12;
3744  Int_t x_channel = 12;
3745 
3746  Int_t max_tow_phi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow();
3747 
3748  //------------------ LOOP ON THE SM_TOWER NUMBER (ViewSMTowerNumberingPad)
3749 
3750  TText *text_SMtow_num = new TText(); fCnewRoot++;
3751 
3752  for (Int_t i_SMtow = 1; i_SMtow <= fEcal->MaxTowInSM(); i_SMtow++)
3753  {
3754  if(fEcalNumbering->GetTowerLvrbType(i_SMtow) == "top")
3755  {text_SMtow_num->SetTextColor(couleur_rouge);}
3756  if(fEcalNumbering->GetTowerLvrbType(i_SMtow) == "bottom")
3757  {text_SMtow_num->SetTextColor(couleur_bleu_fonce);}
3758 
3759  //................................ x from eta
3760  Double_t x_from_eta = fEcalNumbering->GetEta(SMNumber, i_SMtow, x_channel) - (Double_t)1;
3761  if(fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-")
3762  {x_from_eta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysEtaInTow() + x_from_eta + (Double_t)1;}
3763 
3764  //................................ y from phi
3765  Double_t y_from_phi = max_tow_phi - 1
3766  - (fEcalNumbering->GetPhi(SMNumber, i_SMtow, y_channel) - fEcalNumbering->GetPhiMin(SMNumber));
3767  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-")
3768  {y_from_phi = - y_from_phi + fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow() - (Double_t)1;}
3769 
3770  sprintf(f_in, "%d", i_SMtow);
3771  text_SMtow_num->DrawText(x_from_eta, y_from_phi, f_in); // <=== prend du temps si on mets "T%d" dans le sprintf
3772  }
3773 
3774  text_SMtow_num->Delete(); text_SMtow_num = nullptr; fCdeleteRoot++;
3775 
3776  //.................................................... legende (ViewSMTowerNumberingPad)
3777  Double_t offset_tow_tex_eta = (Double_t)8.;
3778  Double_t offset_tow_tex_phi = (Double_t)15.;
3779 
3780  Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
3781  Double_t x_legend = (Double_t)0.;
3782  Double_t y_legend = (Double_t)0.;
3783 
3784  Int_t ref_tower = fEcal->MaxTowInSM();
3785 
3786  //................................................. LVRB TOP (ViewSMTowerNumberingPad)
3787  gStyle->SetTextSize(0.075);
3788  gStyle->SetTextColor(couleur_rouge);
3789  x_legend = fEcalNumbering->GetEta(SMNumber, ref_tower, x_channel);
3790  y_legend = fEcalNumbering->GetPhi(SMNumber, ref_tower, y_channel) - fEcalNumbering->GetPhiMin(SMNumber);
3791 
3792  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" )
3793  {
3794  x_legend = x_legend + offset_tow_tex_eta;
3795  y_legend = y_legend + offset_tow_tex_phi;
3796  }
3797  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" )
3798  {
3799  x_legend = -x_legend + offset_tow_tex_eta;
3800  y_legend = y_legend + offset_tow_tex_phi;
3801  }
3802 
3803  sprintf( f_in, "xx");
3804  TText *text_legend_rouge = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3805  text_legend_rouge->Draw();
3806  gStyle->SetTextSize(0.05);
3807  x_legend = x_legend - (Double_t)3.5;
3808  y_legend = y_legend - (Double_t)2.;
3809  sprintf(f_in, " LVRB ");
3810  TText *text_legend_rouge_expl = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3811  text_legend_rouge_expl->Draw();
3812  y_legend = y_legend - (Double_t)1.75;
3813  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" ){sprintf(f_in, " <--- ");}
3814  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" ){sprintf(f_in, " ---> ");}
3815  TText *text_legend_rouge_expm = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3816  text_legend_rouge_expm->Draw();
3817  //text_legend_rouge_expl->Delete(); text_legend_rouge_expl = 0; fCdeleteRoot++;
3818 
3819  //................................................. LVRB BOTTOM (ViewSMTowerNumberingPad)
3820  gStyle->SetTextSize(0.075);
3821  gStyle->SetTextColor(couleur_bleu_fonce);
3822  x_legend = fEcalNumbering->GetEta(SMNumber, ref_tower, x_channel);
3823  y_legend = fEcalNumbering->GetPhi(SMNumber, ref_tower, y_channel) - fEcalNumbering->GetPhiMin(SMNumber);
3824 
3825  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" )
3826  {
3827  x_legend = x_legend + offset_tow_tex_eta;
3828  y_legend = y_legend + offset_tow_tex_phi/3;
3829  }
3830  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" )
3831  {
3832  x_legend = -x_legend + offset_tow_tex_eta;
3833  y_legend = y_legend + offset_tow_tex_phi/3;
3834  }
3835 
3836  sprintf(f_in, "xx");
3837  TText *text_legend_bleu = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3838  text_legend_bleu->Draw();
3839  //text_legend_bleu->Delete(); text_legend_bleu = 0; fCdeleteRoot++;
3840  gStyle->SetTextSize(0.05);
3841  x_legend = x_legend - (Double_t)3.5;
3842  y_legend = y_legend - (Double_t)2.;
3843  sprintf( f_in, " LVRB ");
3844  TText *text_legend_bleu_expl = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3845  text_legend_bleu_expl->Draw();
3846  y_legend = y_legend - (Double_t)1.75;
3847  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" ){sprintf( f_in, " ---> ");}
3848  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" ){sprintf( f_in, " <--- ");}
3849  TText *text_legend_bleu_expm = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3850  text_legend_bleu_expm->Draw();
3851  //text_legend_bleu_expl->Delete(); text_legend_bleu_expl = 0; fCdeleteRoot++;
3852 
3853  gStyle->SetTextColor(couleur_noir);
3854 }
3855 //----------------> end of ViewSMTowerNumberingPad()
3856 
3857 void TEcnaHistos::ViewSMGrid(const Int_t& SMNumber, const TString& c_option)
3858 {
3859  //Grid of one supermodule with axis eta and phi
3860 
3861  Int_t GeoBidSizeEta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysEtaInTow();
3862  Int_t GeoBidSizePhi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow();
3863 
3864  if ( c_option == "corcc")
3865  {
3866  GeoBidSizeEta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysInTow();
3867  GeoBidSizePhi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysInTow();
3868  }
3869 
3870  Int_t nb_binx = GeoBidSizeEta;
3871  Int_t nb_biny = GeoBidSizePhi;
3872  Axis_t xinf_bid = (Axis_t)0.;
3873  Axis_t xsup_bid = (Axis_t)GeoBidSizeEta;
3874  Axis_t yinf_bid = (Axis_t)0.;
3875  Axis_t ysup_bid = (Axis_t)GeoBidSizePhi;
3876 
3877  //---------------- trace de la grille: un rectangle = une tour
3878 
3879  Int_t size_eta = fEcal->MaxCrysEtaInTow();
3880  Int_t size_phi = fEcal->MaxCrysPhiInTow();
3881  if ( c_option == "corcc")
3882  {
3883  size_eta = fEcal->MaxCrysInTow();
3884  size_phi = fEcal->MaxCrysInTow();
3885  }
3886  Int_t max_x = nb_binx/size_eta;
3887  Int_t max_y = nb_biny/size_phi;
3888 
3889  //............................. lignes horizontales
3890  Double_t yline = (Double_t)yinf_bid;
3891 
3892  Double_t xline_left = (Double_t)xinf_bid;
3893  Double_t xline_right = (Double_t)xsup_bid;
3894 
3895  for( Int_t j = 0 ; j < max_y ; j++)
3896  {
3897  yline = yline + (Double_t)size_phi;
3898  TLine *lin;
3899  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
3900  lin->Draw();
3901  // delete lin; fCdeleteRoot++;
3902  }
3903 
3904  //.......................... lignes verticales
3905  Double_t xline = (Double_t)xinf_bid - (Double_t)size_eta;
3906 
3907  Double_t yline_bot = (Double_t)yinf_bid;
3908  Double_t yline_top = (Double_t)ysup_bid;
3909 
3910  Color_t coul_surligne = fCnaParHistos->ColorDefinition("noir");
3911  Color_t coul_textmodu = fCnaParHistos->ColorDefinition("vert36");
3912 
3913  //............................ Mj text
3914  gStyle->SetTextColor(coul_textmodu);
3915  gStyle->SetTextSize(0.075);
3916 
3917  char f_in[charArrLen];
3918 
3919  for( Int_t i = 0 ; i < max_x ; i++)
3920  {
3921  xline = xline + (Double_t)size_eta;
3922  TLine *lin;
3923  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
3924 
3925  //............. Surlignage separateur des modules
3926  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") && (i == 4 || i == 8 || i == 12) )
3927  {lin->SetLineWidth(2); lin->SetLineColor(coul_surligne);}
3928  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") && (i == 5 || i == 9 || i == 13) )
3929  {lin->SetLineWidth(2); lin->SetLineColor(coul_surligne);}
3930 
3931  lin->Draw();
3932  // delete lin; fCdeleteRoot++;
3933 
3934  //............. Numeros des modules
3935  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") && (i == 2 || i == 6 || i == 10 || i == 14) )
3936  {
3937  if( i == 2 ){sprintf( f_in, "M4");}
3938  if( i == 6 ){sprintf( f_in, "M3");}
3939  if( i == 10 ){sprintf( f_in, "M2");}
3940  if( i == 14 ){sprintf( f_in, "M1");}
3941 
3942  TText *text_num_module = new TText(xline + 1, yline_top + 1, f_in); fCnewRoot++;
3943  text_num_module->Draw();
3944  //text_num_module->Delete(); text_num_module = 0; fCdeleteRoot++;
3945  }
3946  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") && (i == 3 || i == 7 || i == 11 || i == 15) )
3947  {
3948  if( i == 3 ){sprintf( f_in, "M1");}
3949  if( i == 7 ){sprintf( f_in, "M2");}
3950  if( i == 11 ){sprintf( f_in, "M3");}
3951  if( i == 15 ){sprintf( f_in, "M4");}
3952 
3953  TText *text_num_module = new TText(xline, yline_top + 1, f_in); fCnewRoot++;
3954  text_num_module->Draw();
3955  //text_num_module->Delete(); text_num_module = 0; fCdeleteRoot++;
3956  }
3957  }
3958 
3959  //------------------ trace axes en eta et phi --------------- ViewSMGrid
3960 
3961  Int_t MatSize = fEcal->MaxCrysEtaInTow();
3962  if ( c_option == "corcc"){MatSize = fEcal->MaxCrysInTow();}
3963 
3964  Int_t size_eta_sm = fEcal->MaxTowEtaInSM();
3965  Int_t size_phi_sm = fEcal->MaxTowPhiInSM();
3966 
3967  //...................................................... Axe i(eta) (bottom x) ViewSMGrid
3968  Double_t eta_min = fEcalNumbering->GetIEtaMin(SMNumber);
3969  Double_t eta_max = fEcalNumbering->GetIEtaMax(SMNumber);
3970 
3971  TString x_var_name = GetHocoVecoAxisTitle("ietaSM");;
3972  TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
3973 
3974  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
3975  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize("SMx");
3976  Float_t tic_siz_x = fCnaParHistos->AxisTickSize("SMx");
3977  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("SMx");
3978  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("SMx");
3979 
3980  new TF1("f1", x_direction.Data(), eta_min, eta_max); fCnewRoot++;
3981  TGaxis* sup_axis_x = nullptr;
3982 
3983  if( x_direction == "-x" ) // NEVER IN THIS CASE: xmin->xmax <=> right->left ("-x") direction
3984  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_eta_sm*MatSize), (Float_t)0.,
3985  "f1", size_eta_sm, "SC" , 0.); fCnewRoot++;}
3986 
3987  if( x_direction == "x" ) // ALWAYS IN THIS CASE: xmin->xmax <=> left->right ("x") direction
3988  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_eta_sm*MatSize), (Float_t)0.,
3989  "f1", size_eta_sm, "SC" , 0.); fCnewRoot++;}
3990 
3991  sup_axis_x->SetTitle(x_var_name);
3992  sup_axis_x->SetTitleSize(tit_siz_x);
3993  sup_axis_x->SetTitleOffset(tit_off_x);
3994  sup_axis_x->SetLabelSize(lab_siz_x);
3995  sup_axis_x->SetLabelOffset(lab_off_x);
3996  sup_axis_x->SetTickSize(tic_siz_x);
3997  sup_axis_x->Draw("SAME");
3998 
3999  //...................................................... Axe phi (y) ViewSMGrid
4000  Double_t phi_min = fEcalNumbering->GetPhiMin(SMNumber);
4001  Double_t phi_max = fEcalNumbering->GetPhiMax(SMNumber);
4002 
4003  TString y_var_name = GetHocoVecoAxisTitle("phi");
4004  TString y_direction = fEcalNumbering->GetYDirectionEB(SMNumber);
4005 
4006  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
4007  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize("SMy");
4008  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("SMy");
4009  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("SMy");
4010  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("SMy");
4011 
4012  new TF1("f2", y_direction.Data(), phi_min, phi_max); fCnewRoot++;
4013  TGaxis* sup_axis_y = nullptr;
4014 
4015  if ( y_direction == "-x" ) // ALWAYS IN THIS CASE: ymin->ymax <=> top->bottom ("-x") direction
4016  {sup_axis_y = new TGaxis(-(Float_t)1.5*(Float_t)size_eta, (Float_t)0.,
4017  -(Float_t)1.5*(Float_t)size_eta, (Float_t)(size_phi_sm*MatSize),
4018  "f2", (Int_t)size_phi_sm, "SC", 0.); fCnewRoot++;}
4019 
4020  if ( y_direction == "x" ) // NEVER IN THIS CASE: ymin->ymax <=> bottom->top ("x") direction
4021  {sup_axis_y = new TGaxis(-(Float_t)1.5*(Float_t)size_eta, (Float_t)0.,
4022  -(Float_t)1.5*(Float_t)size_eta, (Float_t)(size_phi_sm*MatSize),
4023  "f2", (Int_t)size_phi_sm, "SC", 0.); fCnewRoot++;}
4024 
4025  sup_axis_y->SetTitle(y_var_name);
4026  sup_axis_y->SetTitleSize(tit_siz_y);
4027  sup_axis_y->SetTitleOffset(tit_off_y);
4028  sup_axis_y->SetLabelSize(lab_siz_y);
4029  sup_axis_y->SetLabelOffset(lab_off_y);
4030  sup_axis_y->SetTickSize(tic_siz_y);
4031  sup_axis_y->Draw("SAME");
4032 
4033  //...................................................... Axe jphi (jy) ViewSMGrid
4034  Double_t jphi_min = fEcalNumbering->GetJPhiMin(SMNumber);
4035  Double_t jphi_max = fEcalNumbering->GetJPhiMax(SMNumber);
4036 
4037  TString jy_var_name = " ";
4038  TString jy_direction = fEcalNumbering->GetJYDirectionEB(SMNumber);
4039 
4040  new TF1("f3", jy_direction.Data(), jphi_min, jphi_max); fCnewRoot++;
4041  TGaxis* sup_axis_jy = nullptr;
4042 
4043  //............; essai
4044  sup_axis_jy = new TGaxis((Float_t)0., (Float_t)0.,
4045  (Float_t)0., (Float_t)(size_phi_sm*MatSize),
4046  "f3", (Int_t)size_phi_sm, "SC", 0.); fCnewRoot++;
4047 
4048  if ( jy_direction == "-x" ) // IN THIS CASE FOR EB+: ymin->ymax <=> top->bottom ("-x") direction
4049  {jy_var_name = GetEtaPhiAxisTitle("jphiSMB+");}
4050 
4051  if ( jy_direction == "x" ) // IN THIS CASE FOR EB-: ymin->ymax <=> bottom->top ("x") direction
4052  {jy_var_name = GetEtaPhiAxisTitle("jphiSMB-");}
4053 
4054  lab_off_y = fCnaParHistos->AxisLabelOffset("SMyInEB");
4055 
4056  sup_axis_jy->SetTitle(jy_var_name);
4057  sup_axis_jy->SetTitleSize(tit_siz_y);
4058  sup_axis_jy->SetTitleOffset(tit_off_y);
4059  sup_axis_jy->SetLabelSize(lab_siz_y);
4060  sup_axis_jy->SetLabelOffset(lab_off_y);
4061  sup_axis_jy->SetTickSize(tic_siz_y);
4062  sup_axis_jy->Draw("SAME");
4063 
4064  //--------------------------- ViewSMGrid
4065 
4066  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
4067 
4068 } // end of ViewSMGrid
4069 
4070 //======================================= ENDCAP ===============================
4071 void TEcnaHistos::DeeSCNumbering(const Int_t& DeeNumber)
4072 {
4073  //display the SC numbering of the Dee
4074 
4075  if( (DeeNumber > 0) && (DeeNumber <= fEcal->MaxDeeInEE()) )
4076  {
4077  Int_t GeoBidSizeIX = fEcal->MaxSCIXInDee()*fEcal->MaxCrysIXInSC();
4078  Int_t GeoBidSizeIY = fEcal->MaxSCIYInDee()*fEcal->MaxCrysIYInSC();
4079 
4080  Int_t nb_binx = GeoBidSizeIX;
4081  Int_t nb_biny = GeoBidSizeIY;
4082  Axis_t xinf_bid = (Axis_t)0.;
4083  Axis_t xsup_bid = (Axis_t)GeoBidSizeIX;
4084  Axis_t yinf_bid = (Axis_t)0.;
4085  Axis_t ysup_bid = (Axis_t)GeoBidSizeIY;
4086 
4087  TString axis_x_var_name = " IX ";
4088  TString axis_y_var_name = " IY ";
4089 
4090  //------------------------------------------------------------------- DeeSCNumbering
4091 
4092  //........................................... empty histogram filling
4093  char f_in_mat_tit[charArrLen];
4094 
4095  sprintf(f_in_mat_tit, " Dee SC numbering ");
4096 
4097  // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
4098 
4099  TH2D* h_empty_bid = new TH2D("grid_bidim_IX_IY", f_in_mat_tit,
4100  nb_binx, xinf_bid, xsup_bid,
4101  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
4102 
4103  h_empty_bid->Reset();
4104 
4105  h_empty_bid->GetXaxis()->SetTitle(axis_x_var_name);
4106  h_empty_bid->GetYaxis()->SetTitle(axis_y_var_name);
4107 
4108  // ------------------------------------------------ P L O T S (DeeSCNumbering)
4109 
4110  char f_in[charArrLen];
4111 
4112  //...................... Taille/format canvas
4113 
4114  UInt_t canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
4115  UInt_t canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");
4116 
4117  //............................................... options generales
4119 
4120  //............................................... paves commentaires (DeeSCNumbering)
4121  SetAllPavesViewStex("Numbering", DeeNumber);
4122 
4123  //------------------------------------ Canvas name ----------------- (DeeSCNumbering)
4124 
4125  sprintf(f_in, "SC_numbering_for_Dee_Dee%d", DeeNumber);
4126  SetHistoPresentation((TH1D*)h_empty_bid,"Stex2DEENb");
4127  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
4128  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
4129 
4130  // std::cout << "*TEcnaHistosEE::ViewDee(...)> Plot is displayed on canvas ----> " << f_in << std::endl;
4131 
4132  //------------------------ Canvas draw and update ------------ (DeeSCNumbering)
4133  fPavComStex->Draw();
4134  fPavComCxyz->Draw();
4135 
4136  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
4137  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
4138  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
4139  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
4140 
4141  Double_t x_margin = x_low;
4142  Double_t y_margin = y_low;
4143 
4144  MainCanvas->Divide( 1, 1, x_margin, y_margin);
4145  // Divide(nx, ny, x_margin, y_margin, color);
4146 
4147  gPad->cd(1);
4148  TVirtualPad* main_subpad = gPad;
4149  main_subpad->SetPad(x_low, y_low, x_up, y_up);
4150 
4151  h_empty_bid->DrawCopy("COL"); // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
4152 
4153  ViewDeeSCNumberingPad(DeeNumber);
4154 
4155  gPad->Update(); // prend beaucoup de temps...
4156 
4157  //..................... retour aux options standard
4158  Bool_t b_true = true;
4159  h_empty_bid->SetStats(b_true);
4160 
4161  h_empty_bid->Delete(); h_empty_bid = nullptr; fCdeleteRoot++;
4162 
4163  // delete MainCanvas; fCdeleteRoot++;
4164  }
4165  else
4166  {
4167  std::cout << "!TEcnaHistos::DeeSCNumbering(...)> Dee = " << DeeNumber
4168  << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )" << fTTBELL << std::endl;
4169  }
4170 }
4171 // end of DeeSCNumbering
4172 
4173 void TEcnaHistos::ViewDeeSCNumberingPad(const Int_t& DeeNumber)
4174 {
4175 //display the SC numbering of the Dee in a Pad
4176 
4177  gStyle->SetTitleW(0.4); // taille titre histos
4178  gStyle->SetTitleH(0.08);
4179 
4180  ViewDeeGrid(DeeNumber, " ");
4181 
4182  //..... SC numbers writing in the grid .... (ViewDeeSCNumberingPad)
4183 
4184  char f_in[charArrLen];
4185  gStyle->SetTextSize(0.0325);
4186 
4187  //------------------ LOOP ON THE Dee_SC NUMBER (ViewDeeSCNumberingPad)
4188  Int_t x_channel = 0; // => defined here after according to DeeDir and SCQuadType
4189  TText *text_DSSC_num = new TText(); fCnewRoot++;
4190  TText *text_DeeSCCons_num = new TText(); fCnewRoot++;
4191 
4192  for (Int_t n1DeeSCEcna = 1; n1DeeSCEcna <= fEcal->MaxSCEcnaInDee(); n1DeeSCEcna++)
4193  {
4194  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
4195  TString SCQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
4196  if( SCQuadType == "top" && DeeDir == "right"){x_channel = 13;}
4197  if( SCQuadType == "top" && DeeDir == "left" ){x_channel = 7;}
4198  if( SCQuadType == "bottom" && DeeDir == "left" ){x_channel = 11;}
4199  if( SCQuadType == "bottom" && DeeDir == "right"){x_channel = 17;}
4200  Int_t i_SCEcha = (Int_t)x_channel;
4201 
4202  Double_t x_from_IX = (Double_t)GetXCrysInStex(DeeNumber, n1DeeSCEcna, i_SCEcha);
4203  Double_t y_from_IY = (Double_t)GetYCrysInStex(DeeNumber, n1DeeSCEcna, i_SCEcha);
4204  Double_t y_from_IYp = y_from_IY + (Double_t)1.;
4205  Double_t y_from_IYm = y_from_IY - (Double_t)1.;
4206 
4207  TString DeeEndcap = fEcalNumbering->GetEEDeeEndcap(DeeNumber);
4208  Color_t couleur_SC = GetSCColor(DeeEndcap, DeeDir, SCQuadType);
4209  text_DSSC_num->SetTextColor(couleur_SC);
4210  text_DeeSCCons_num->SetTextColor((Color_t)1);
4211 
4212  Int_t i_DSSC = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
4213  Int_t i_DeeSCCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
4214  if( i_DSSC > 0 )
4215  {
4216  if(
4217  //.................................................... (D2,S9) , (D4,S1)
4218  !(i_DeeSCCons == 33 && n1DeeSCEcna == 60) &&
4219  !(i_DeeSCCons == 33 && n1DeeSCEcna == 119) &&
4220  //................................................... (D2,S8) , (D4,S2)
4221  !(i_DeeSCCons == 29 && n1DeeSCEcna == 32) && // !(29c and 58c)
4222  !(i_DeeSCCons == 29 && n1DeeSCEcna == 138) &&
4223  !(i_DeeSCCons == 29 && n1DeeSCEcna == 157) &&
4224  !(i_DeeSCCons == 58 && n1DeeSCEcna == 176) &&
4225  !(i_DeeSCCons == 58 && n1DeeSCEcna == 193) &&
4226  //.................................................... (D2,S7) , (D4,S3)
4227  !(i_DeeSCCons == 149 && n1DeeSCEcna == 188) &&
4228  //.................................................... (D2,S6) , (D4,S4)
4229  !(i_DeeSCCons == 112 && n1DeeSCEcna == 29) &&
4230  !(i_DeeSCCons == 112 && n1DeeSCEcna == 144) &&
4231  !(i_DeeSCCons == 112 && n1DeeSCEcna == 165) &&
4232  !(i_DeeSCCons == 119 && n1DeeSCEcna == 102) &&
4233  !(i_DeeSCCons == 119 && n1DeeSCEcna == 123) &&
4234  //.................................................... (D2,S5) , (D4,S5)
4235  !(i_DeeSCCons == 132 && n1DeeSCEcna == 41) &&
4236  //----------------------------------------------------------------------
4237  //.................................................... (D1,S1) , (D3,S9)
4238  !(i_DeeSCCons == 182 && n1DeeSCEcna == 60) &&
4239  !(i_DeeSCCons == 182 && n1DeeSCEcna == 119) &&
4240  //.................................................... (D1,S2) , (D3,S8)
4241  !(i_DeeSCCons == 178 && n1DeeSCEcna == 32) && // !(178c and 207c)
4242  !(i_DeeSCCons == 178 && n1DeeSCEcna == 138) &&
4243  !(i_DeeSCCons == 178 && n1DeeSCEcna == 157) &&
4244  !(i_DeeSCCons == 207 && n1DeeSCEcna == 176) &&
4245  !(i_DeeSCCons == 207 && n1DeeSCEcna == 193) &&
4246  //.................................................... (D1,S3) , (D3,S7)
4247  !(i_DeeSCCons == 298 && n1DeeSCEcna == 188) &&
4248  //.................................................... (D1,S4) , (D3,S6)
4249  !(i_DeeSCCons == 261 && n1DeeSCEcna == 29) && // !(261a and 268a)
4250  !(i_DeeSCCons == 261 && n1DeeSCEcna == 144) &&
4251  !(i_DeeSCCons == 261 && n1DeeSCEcna == 165) &&
4252  !(i_DeeSCCons == 268 && n1DeeSCEcna == 102) &&
4253  !(i_DeeSCCons == 268 && n1DeeSCEcna == 123) &&
4254  //.................................................... (D1,S5) , (D3,S5)
4255  !(i_DeeSCCons == 281 && n1DeeSCEcna == 41)
4256  )
4257  {
4258  sprintf(f_in, "%d", i_DSSC);
4259  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in); // <=== DrawText: prend du temps
4260  sprintf(f_in, "%d", i_DeeSCCons);
4261  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in); // <=== DrawText: prend du temps
4262  }
4263 
4264  //.................................................... (D2,S9) , (D4,S1)
4265 
4266  if( i_DeeSCCons == 33 && n1DeeSCEcna == 60 )
4267  {
4268  sprintf(f_in, "30a");
4269  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4270  sprintf(f_in, "33a");
4271  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4272  }
4273  if( i_DeeSCCons == 33 && n1DeeSCEcna == 119 )
4274  {
4275  sprintf(f_in, "30b");
4276  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4277  sprintf(f_in, "33b");
4278  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4279  }
4280  //.................................................... (D2,S8) , (D4,S2)
4281  if( i_DeeSCCons == 29 && n1DeeSCEcna == 32 )
4282  {
4283  sprintf(f_in, " 3c-25c");
4284  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4285  sprintf(f_in, "29c-58c");
4286  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4287  }
4288  if( i_DeeSCCons == 29 && n1DeeSCEcna == 138 )
4289  {
4290  sprintf(f_in, "3a");
4291  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4292  sprintf(f_in, "29a");
4293  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4294  }
4295  if( i_DeeSCCons == 29 && n1DeeSCEcna == 157 )
4296  {
4297  sprintf(f_in, "3b");
4298  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4299  sprintf(f_in, "29b");
4300  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4301  }
4302 
4303  if( i_DeeSCCons == 58 && n1DeeSCEcna == 176 )
4304  {
4305  sprintf(f_in, "25a");
4306  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4307  sprintf(f_in, "58a");
4308  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4309  }
4310  if( i_DeeSCCons == 58 && n1DeeSCEcna == 193 )
4311  {
4312  sprintf(f_in, "25b");
4313  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4314  sprintf(f_in, "58b");
4315  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4316  }
4317  //.................................................... (D2,S7) , (D4,S3)
4318  if( i_DeeSCCons == 149 && n1DeeSCEcna == 188 )
4319  {
4320  sprintf(f_in, "34a");
4321  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4322  sprintf(f_in, "149a");
4323  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4324  }
4325  //.................................................... (D2,S6) , (D4,S4)
4326  if( i_DeeSCCons == 112 && n1DeeSCEcna == 29 )
4327  {
4328  sprintf(f_in, " 14a-21a");
4329  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4330  sprintf(f_in, "112a-119a");
4331  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4332  }
4333  if( i_DeeSCCons == 112 && n1DeeSCEcna == 144 )
4334  {
4335  sprintf(f_in, "14c");
4336  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4337  sprintf(f_in, "112c");
4338  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4339  }
4340  if( i_DeeSCCons == 112 && n1DeeSCEcna == 165 )
4341  {
4342  sprintf(f_in, "14b");
4343  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4344  sprintf(f_in, "112b");
4345  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4346  }
4347 
4348  if( i_DeeSCCons == 119 && n1DeeSCEcna == 102 )
4349  {
4350  sprintf(f_in, "21c");
4351  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4352  sprintf(f_in, "119c");
4353  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4354  }
4355  if( i_DeeSCCons == 119 && n1DeeSCEcna == 123 )
4356  {
4357  sprintf(f_in, "21b");
4358  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4359  sprintf(f_in, "119b");
4360  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4361  }
4362  //.................................................... (D2,S5) , (D4,S5)
4363  if( i_DeeSCCons == 132 && n1DeeSCEcna == 41 )
4364  {
4365  sprintf(f_in, "3a");
4366  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4367  sprintf(f_in, "132a");
4368  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4369  }
4370 
4371  //.................................................... (D1,S1) , (D3,S9)
4372  if( i_DeeSCCons == 182 && n1DeeSCEcna == 60 )
4373  {
4374  sprintf(f_in, "30a");
4375  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4376  sprintf(f_in, "182a");
4377  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4378  }
4379  if( i_DeeSCCons == 182 && n1DeeSCEcna == 119 )
4380  {
4381  sprintf(f_in, "30b");
4382  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4383  sprintf(f_in, "182b");
4384  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4385  }
4386  //.................................................... (D1,S2) , (D3,S8)
4387  if( i_DeeSCCons == 178 && n1DeeSCEcna == 32 )
4388  {
4389  sprintf(f_in, " 3c-25c");
4390  text_DSSC_num->DrawText(x_from_IX-6, y_from_IYp, f_in);
4391  sprintf(f_in, "178c-207c");
4392  text_DeeSCCons_num->DrawText(x_from_IX-6, y_from_IYm, f_in);
4393  }
4394  if( i_DeeSCCons == 178 && n1DeeSCEcna == 138 )
4395  {
4396  sprintf(f_in, "3a");
4397  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4398  sprintf(f_in, "178a");
4399  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4400  }
4401  if( i_DeeSCCons == 178 && n1DeeSCEcna == 157 )
4402  {
4403  sprintf(f_in, "3b");
4404  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4405  sprintf(f_in, "178b");
4406  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4407  }
4408 
4409  if( i_DeeSCCons == 207 && n1DeeSCEcna == 176 )
4410  {
4411  sprintf(f_in, "25a");
4412  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4413  sprintf(f_in, "207a");
4414  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4415  }
4416  if( i_DeeSCCons == 207 && n1DeeSCEcna == 193 )
4417  {
4418  sprintf(f_in, "25b");
4419  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4420  sprintf(f_in, "207b");
4421  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4422  }
4423  //.................................................... (D1,S3) , (D3,S7)
4424  if( i_DeeSCCons == 298 && n1DeeSCEcna == 188 )
4425  {
4426  sprintf(f_in, "34a");
4427  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4428  sprintf(f_in, "298a");
4429  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4430  }
4431  //.................................................... (D1,S4) , (D3,S6)
4432  if( i_DeeSCCons == 261 && n1DeeSCEcna == 29 )
4433  {
4434  sprintf(f_in, " 14a-21a");
4435  text_DSSC_num->DrawText(x_from_IX-6, y_from_IYp, f_in);
4436  sprintf(f_in, "261a-268a");
4437  text_DeeSCCons_num->DrawText(x_from_IX-6, y_from_IYm, f_in);
4438  }
4439  if( i_DeeSCCons == 261 && n1DeeSCEcna == 144 )
4440  {
4441  sprintf(f_in, "14c");
4442  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4443  sprintf(f_in, "261c");
4444  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4445  }
4446  if( i_DeeSCCons == 261 && n1DeeSCEcna == 165 )
4447  {
4448  sprintf(f_in, "14b");
4449  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4450  sprintf(f_in, "261b");
4451  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4452  }
4453 
4454  if( i_DeeSCCons == 268 && n1DeeSCEcna == 102 )
4455  {
4456  sprintf(f_in, "21c");
4457  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4458  sprintf(f_in, "268c");
4459  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4460  }
4461  if( i_DeeSCCons == 268 && n1DeeSCEcna == 123 )
4462  {
4463  sprintf(f_in, "21b");
4464  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4465  sprintf(f_in, "268b");
4466  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4467  }
4468  //.................................................... (D1,S5) , (D3,S5)
4469  if( i_DeeSCCons == 281 && n1DeeSCEcna == 41 )
4470  {
4471  sprintf(f_in, "20a");
4472  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4473  sprintf(f_in, "281a");
4474  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4475  }
4476  }
4477  }
4478 
4479  // delete text_DSSC_num; fCdeleteRoot++;
4480 
4481  //......................... mention "color, black"
4482  Color_t coul_textcolors = fCnaParHistos->ColorDefinition("noir");
4483  sprintf( f_in, "color: nb in Data Sector, black: nb for construction");
4484  Int_t x_colors = 3;
4485  Int_t y_colors = -14;
4486 
4487  TText *text_colors = new TText(x_colors, y_colors, f_in); fCnewRoot++;
4488  text_colors->SetTextSize(0.03);
4489  text_colors->SetTextColor(coul_textcolors);
4490  text_colors->Draw();
4491 
4492  Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
4493  gStyle->SetTextColor(couleur_noir);
4494 }
4495 //----------------> end of ViewDeeSCNumberingPad()
4496 
4497 void TEcnaHistos::ViewDeeGrid(const Int_t& DeeNumber, const TString& c_option)
4498 {
4499  //Grid of one Dee with axis IX and IY
4500 
4501  Int_t GeoBidSizeIX = fEcal->MaxSCIXInDee()*fEcal->MaxCrysIXInSC();
4502  Int_t GeoBidSizeIY = fEcal->MaxSCIYInDee()*fEcal->MaxCrysIYInSC();
4503 
4504  if ( c_option == "corcc")
4505  {
4506  GeoBidSizeIX = fEcal->MaxSCIXInDee()*fEcal->MaxCrysInSC();
4507  GeoBidSizeIY = fEcal->MaxSCIYInDee()*fEcal->MaxCrysInSC();
4508  }
4509 
4510  Int_t nb_binx = GeoBidSizeIX;
4511  Int_t nb_biny = GeoBidSizeIY;
4512  Axis_t xinf_bid = (Axis_t)0.;
4513  Axis_t xsup_bid = (Axis_t)GeoBidSizeIX;
4514 
4515  Axis_t yinf_bid = (Axis_t)0.;
4516  Axis_t ysup_bid = (Axis_t)GeoBidSizeIY;
4517  Double_t ymid_bid = (Double_t)(ysup_bid-yinf_bid)/2.;
4518 
4519  //---------------- trace de la grille: un rectangle = un super-cristal
4520 
4521  Int_t size_IX = fEcal->MaxCrysIXInSC();
4522  Int_t size_IY = fEcal->MaxCrysIYInSC();
4523 
4524  if ( c_option == "corcc"){size_IX = fEcal->MaxCrysInSC(); size_IY = fEcal->MaxCrysInSC();}
4525 
4526  Int_t max_x = nb_binx/size_IX;
4527  Int_t max_y = nb_biny/size_IY;
4528  Int_t max_yd = max_y/2;
4529 
4530  //= SURLIGNAGES (unite de coordonnees: le cristal ou 5 fois le cristal si option corcc)
4531  //........................... multplicative coefficient for corcc option
4532  Int_t coefcc_x = (Int_t)1;
4533  Int_t coefcc_y = (Int_t)1;
4534  if ( c_option == "corcc"){coefcc_x = fEcal->MaxCrysIXInSC(); coefcc_y = fEcal->MaxCrysIYInSC();}
4535 
4536  //............................. lignes horizontales
4537  Double_t yline = (Double_t)yinf_bid - (Double_t)size_IY;
4538 
4539  Double_t xline_beg = (Double_t)xinf_bid;
4540  Double_t xline_end = (Double_t)xsup_bid;
4541 
4542  // k = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10
4543  Int_t x_min[11] = {11,11, 7, 0, 0, 0, 0, 0, 0, 0, 0};
4544  Int_t x_max[11] = {50,50,47,45,45,42,37,35,30,15,50};
4545  for(Int_t i=0;i<11;i++){x_min[i] = coefcc_x*x_min[i]; x_max[i] = coefcc_x*x_max[i];}
4546 
4547  for( Int_t j = 0 ; j < max_y ; j++)
4548  {
4549  if( j < max_yd ) // j = 0,1,2,3,4,5,6,7,8,9
4550  {
4551  if( DeeNumber == 1 || DeeNumber == 3 )
4552  {
4553  xline_beg = xinf_bid + (Double_t)x_min[10-j];
4554  xline_end = xinf_bid + (Double_t)x_max[10-j];
4555  }
4556  if( DeeNumber == 2 || DeeNumber == 4 )
4557  {
4558  xline_beg = xsup_bid - (Double_t)x_max[10-j];
4559  xline_end = xsup_bid - (Double_t)x_min[10-j];
4560  }
4561  }
4562 
4563  if( j == max_yd ) // j = 10
4564  {
4565  if( DeeNumber == 1 || DeeNumber == 3 )
4566  {
4567  xline_beg = xinf_bid + (Double_t)x_min[0];
4568  xline_end = xinf_bid + (Double_t)x_max[0];
4569  }
4570  if( DeeNumber == 2 || DeeNumber == 4 )
4571  {
4572  xline_beg = xsup_bid - (Double_t)x_max[0];
4573  xline_end = xsup_bid - (Double_t)x_min[0];
4574  }
4575  }
4576 
4577  if( j > max_yd ) // j = 11,12,13,14,15,16,17,18,19,20
4578  {
4579  if( DeeNumber == 1 || DeeNumber == 3 )
4580  {
4581  xline_beg = xinf_bid + (Double_t)x_min[j-10];
4582  xline_end = xinf_bid + (Double_t)x_max[j-10];
4583  }
4584  if( DeeNumber == 2 || DeeNumber == 4 )
4585  {
4586  xline_beg = xsup_bid - (Double_t)x_max[j-10];
4587  xline_end = xsup_bid - (Double_t)x_min[j-10];
4588  }
4589  }
4590 
4591  yline = yline + (Double_t)size_IY;
4592  TLine *lin;
4593  lin = new TLine(xline_beg, yline, xline_end, yline); fCnewRoot++;
4594  lin->Draw();
4595  //lin->Delete(); // => si on delete, pas de trace de la ligne
4596  // delete lin; fCdeleteRoot++;
4597  }
4598 
4599  //.......................... lignes verticales
4600  Double_t xline = (Double_t)xinf_bid - (Double_t)size_IX;
4601 
4602  Double_t yline_haut_bot = (Double_t)ymid_bid;
4603  Double_t yline_haut_top = (Double_t)ysup_bid;
4604 
4605  Double_t yline_bas_bot = (Double_t)yinf_bid;
4606  Double_t yline_bas_top = (Double_t)ymid_bid;
4607 
4608  // coordonnees demi-lignes
4609  // l = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10
4610  Int_t y_min[11] = { 0,11, 7, 0, 0, 0, 0, 0, 0, 0, 0};
4611  Int_t y_max[11] = {50,50,47,45,45,42,38,35,30,15,10};
4612  for(Int_t i=0;i<11;i++){y_min[i] = coefcc_y*y_min[i]; y_max[i] = coefcc_y*y_max[i];}
4613 
4614  gStyle->SetTextSize(0.075); // ===> pourquoi pas avant?
4615 
4616  for( Int_t i = 0 ; i <= max_x ; i++)
4617  {
4618  if( DeeNumber == 1 || DeeNumber == 3 )
4619  {
4620  yline_haut_bot = ymid_bid + (Double_t)y_min[i];
4621  yline_haut_top = ymid_bid + (Double_t)y_max[i];
4622  }
4623  if( DeeNumber == 2 || DeeNumber == 4 )
4624  {
4625  yline_haut_bot = ymid_bid + (Double_t)y_min[10-i];
4626  yline_haut_top = ymid_bid + (Double_t)y_max[10-i];
4627  }
4628  yline_bas_bot = ysup_bid - yline_haut_top;
4629  yline_bas_top = ysup_bid - yline_haut_bot;
4630 
4631  xline = xline + (Double_t)size_IX;
4632  TLine *lin_haut;
4633  lin_haut = new TLine(xline, yline_haut_bot, xline, yline_haut_top); fCnewRoot++;
4634  lin_haut->Draw();
4635  // delete lin_haut; fCdeleteRoot++;
4636  TLine *lin_bas;
4637  lin_bas = new TLine(xline, yline_bas_bot, xline, yline_bas_top); fCnewRoot++;
4638  lin_bas->Draw();
4639  // delete lin_bas; fCdeleteRoot++;
4640  }
4641 
4642 
4643  Float_t fcoefcc_x = (Float_t)coefcc_x;
4644  Float_t fcoefcc_y = (Float_t)coefcc_y;
4645 
4646  EEDataSectors(fcoefcc_x, fcoefcc_y, DeeNumber, "Dee");
4647  EEGridAxis(DeeNumber, "Dee", c_option);
4648 
4649 } // end of ViewDeeGrid
4650 
4651 //=================================================================================
4652 //
4653 // SqrtContourLevels(const Int_t& nb_niv, Double_t* cont_niv)
4654 //
4655 //=================================================================================
4656 void TEcnaHistos::SqrtContourLevels(const Int_t& nb_niv, Double_t* cont_niv)
4657 {
4658 //Calculation of levels in z coordinate for 3D plots. Square root scale
4659 
4660  Int_t nb_niv2 = (nb_niv+1)/2;
4661 
4662  for (Int_t num_niv = 0; num_niv < nb_niv2; num_niv++)
4663  {
4664  Int_t ind_niv = num_niv + nb_niv2 - 1;
4665  if ( ind_niv < 0 || ind_niv > nb_niv )
4666  {
4667  std::cout << "!TEcnaHistos::ContourLevels(...)> *** ERROR *** "
4668  << "wrong contour levels for correlation matrix"
4669  << fTTBELL << std::endl;
4670  }
4671  else
4672  {
4673  cont_niv[ind_niv] =
4674  (Double_t)(num_niv*num_niv)/
4675  ((Double_t)((nb_niv2-1)*(nb_niv2-1)));
4676  }
4677  }
4678  for (Int_t num_niv = -1; num_niv > -nb_niv2; num_niv--)
4679  {
4680  Int_t ind_niv = num_niv + nb_niv2 - 1;
4681  if ( ind_niv < 0 || ind_niv > nb_niv )
4682  {
4683  std::cout << "!TEcnaHistos::ContourLevels(...)> *** ERROR *** "
4684  << "wrong contour levels for correlation matrix"
4685  << fTTBELL << std::endl;
4686  }
4687  else
4688  {
4689  cont_niv[ind_niv] =
4690  -(Double_t)(num_niv*num_niv)/
4691  ((Double_t)((nb_niv2-1)*(nb_niv2-1)));
4692  }
4693  }
4694 }
4695 
4696 //==========================================================================
4697 //
4698 // GetHocoVecoAxisTitle
4699 //
4700 //==========================================================================
4701 TString TEcnaHistos::GetHocoVecoAxisTitle(const TString& chcode)
4702 {
4703  TString xname = " ";
4704 
4705  if ( fFlagSubDet == "EB" ){xname = GetEtaPhiAxisTitle(chcode);}
4706  if ( fFlagSubDet == "EE" ){xname = GetIXIYAxisTitle(chcode);}
4707 
4708  return xname;
4709 }
4710 
4711 TString TEcnaHistos::GetEtaPhiAxisTitle(const TString& chcode)
4712 {
4713  TString xname = " ";
4714 
4715  if ( chcode == "ietaEB" ){xname = "i#eta Xtal ";}
4716  if ( chcode == "ietaSM" ){xname = "i#eta Xtal ";}
4717  if ( chcode == "ietaTow"){xname = "i#eta Xtal ";}
4718 
4719  if ( chcode == "iphiEB" ){xname = " i#varphi Xtal";}
4720  if ( chcode == "jphiEB+" ){xname = " i#varphi Xtal";}
4721  if ( chcode == "jphiEB-" ){xname = " i#varphi Xtal";}
4722  if ( chcode == "jphiSMB+" ){xname = " i#varphi Xtal";}
4723  if ( chcode == "jphiSMB-" ){xname = "i#varphi Xtal ";}
4724  if ( chcode == "jphiTow" ){xname = "i#varphi Xtal in SM ";}
4725  if ( chcode == "phi" ){xname = "i#varphi Xtal in EB ";}
4726 
4727  return xname;
4728 }
4729 
4730 TString TEcnaHistos::GetIXIYAxisTitle(const TString& chcode)
4731 {
4732  TString xname = " ";
4733 
4734  if ( chcode == "iIXDee" ){xname = "IX(SC)";}
4735 
4736  if ( chcode == "iIXDee1" ){xname = " -IX Xtal";}
4737  if ( chcode == "iIXDee2" ){xname = " IX Xtal ";}
4738  if ( chcode == "iIXDee3" ){xname = " IX Xtal";}
4739  if ( chcode == "iIXDee4" ){xname = "-IX Xtal ";}
4740 
4741  if ( chcode == "iIXEE" ){xname = " IX Xtal";}
4742 
4743  if ( chcode == "iIXSC" ){xname = "IX Xtal";}
4744 
4745  if ( chcode == "jIYDee" ){xname = "IY Xtal";}
4746  if ( chcode == "jIYSC" ){xname = "IY Xtal";}
4747  if ( chcode == "IY" ){xname = "IY";}
4748 
4749  return xname;
4750 }
4751 
4752 //=======================================================================================
4753 //
4754 // ViewStas(***)
4755 //
4756 // (Hoco,Veco) matrices for all the Stex's of a Stas
4757 // Stas = EB or EE
4758 //
4759 //=======================================================================================
4760 void TEcnaHistos::ViewStas(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
4761  const TString& HistoCode)
4762 {
4763 // (Hoco, Veco) matrices for all the Stex's of a Stas
4764 
4765  //......................... matrix title
4766  char f_in_mat_tit[charArrLen];
4767 
4768  if (HistoCode == "D_NOE_ChNb"){sprintf(f_in_mat_tit, "Number of Events");}
4769  if (HistoCode == "D_Ped_ChNb"){sprintf(f_in_mat_tit, "Pedestals");}
4770  if (HistoCode == "D_TNo_ChNb"){sprintf(f_in_mat_tit, "Total noise");}
4771  if (HistoCode == "D_MCs_ChNb"){sprintf(f_in_mat_tit, "Mean cor(s,s')");}
4772  if (HistoCode == "D_LFN_ChNb"){sprintf(f_in_mat_tit, "Low frequency noise");}
4773  if (HistoCode == "D_HFN_ChNb"){sprintf(f_in_mat_tit, "High frequency noise");}
4774  if (HistoCode == "D_SCs_ChNb"){sprintf(f_in_mat_tit, "Sigma of cor(s,s')");}
4775 
4776  //.... Axis parameters: *** WARNING *** EB ===> x (Bid Hoco) = phi (StinVeco), y (Bid Veco) = eta (StinHoco)
4777  Int_t GeoBidSizeHoco = fEcal->MaxStinVecoInStas();
4778  Int_t GeoBidSizeVeco = fEcal->MaxStinHocoInStas();
4779 
4780  Int_t vertic_empty_strips = 3;
4781  Int_t vertic_empty_strip_1 = 1;
4782 
4783  if ( fFlagSubDet == "EE" )
4784  {
4785  // for empty vertical strips: before EE-, between EE- and EE+, after EE+ on plot
4786  GeoBidSizeHoco = fEcal->MaxStinHocoInStas() + vertic_empty_strips;
4787  GeoBidSizeVeco = fEcal->MaxStinVecoInStas();
4788  }
4789 
4790  Int_t nb_binx = GeoBidSizeHoco;
4791  Int_t nb_biny = GeoBidSizeVeco;
4792  Axis_t xinf_bid = (Axis_t)0.;
4793  Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
4794  Axis_t yinf_bid = (Axis_t)0.;
4795  Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
4796 
4797  TString axis_x_var_name = " #Hoco ";
4798  TString axis_y_var_name = " #varVeco ";
4799 
4800  //............. matrices reading and histogram filling (ViewStas)
4801 
4802  TH2D* h_geo_bid = new TH2D("geobidim_ViewStas", f_in_mat_tit,
4803  nb_binx, xinf_bid, xsup_bid,
4804  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
4805  h_geo_bid->Reset();
4806 
4807  Int_t CounterExistingFile = 0;
4808  Int_t CounterDataExist = 0;
4809 
4810  Int_t* xFapNbOfEvts = new Int_t[fEcal->MaxStexInStas()]; fCnew++;
4811  for(Int_t i=0; i<fEcal->MaxStexInStas(); i++){xFapNbOfEvts[i]=0;}
4812 
4813  //Int_t* NOFE_int = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
4814 
4815  //......................................................................... (ViewStas)
4816  for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
4817  {
4818  TVectorD partial_histp(fEcal->MaxStinEcnaInStex());
4819  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){partial_histp(i)=(Double_t)0.;}
4820 
4821  Bool_t OKFileExists = kFALSE;
4822  Bool_t OKDataExist = kFALSE;
4823 
4824  if( arg_AlreadyRead == fTobeRead )
4825  {
4827  Int_t n1StasStex = iStasStex+1;
4831  n1StasStex, fCfgResultsRootFilePath.Data());
4832 
4833  if ( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;} // (ViewStas)
4834 
4835  if( OKFileExists == kTRUE )
4836  {
4837  xFapNbOfEvts[iStasStex] = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, n1StasStex);
4838  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
4839  // std::cout << "*TEcnaHistos::ViewStas(...)> Data are analyzed from file ----> "
4840  // << fp_name_short << std::endl;
4841 
4842  //....................... search for first and last dates
4843  if( iStasStex == 0 )
4844  {
4849  }
4850 
4851  time_t xStartTime = fMyRootFile->GetStartTime();
4852  time_t xStopTime = fMyRootFile->GetStopTime();
4853  TString xStartDate = fMyRootFile->GetStartDate();
4854  TString xStopDate = fMyRootFile->GetStopDate();
4855 
4856  if( xStartTime < fStartTime ){fStartTime = xStartTime; fStartDate = xStartDate;}
4857  if( xStopTime > fStopTime ){fStopTime = xStopTime; fStopDate = xStopDate;}
4858 
4860 
4861  //----------------------------------------------------------------------------- file reading (ViewStas)
4862  if( HistoCode == "D_NOE_ChNb" ){
4864  if( HistoCode == "D_Ped_ChNb" ){
4866  if (HistoCode == "D_TNo_ChNb" ){
4868  if( HistoCode == "D_MCs_ChNb" ){
4870  if( HistoCode == "D_LFN_ChNb" ){
4872  if( HistoCode == "D_HFN_ChNb" ){
4874  if( HistoCode == "D_SCs_ChNb" ){
4876 
4877  if ( fMyRootFile->DataExist() == kTRUE ){OKDataExist = kTRUE;}
4878  }
4879  else
4880  {
4881  fStatusFileFound = kFALSE;
4882  std::cout << "!TEcnaHistos::ViewStas(...)> *ERROR* =====> "
4883  << " ROOT file not found" << fTTBELL << std::endl;
4884  }
4885  }
4886 
4887  if( arg_AlreadyRead == 1 )
4888  {
4889  OKDataExist = kTRUE;
4890  for(Int_t i0Stin=0; i0Stin<fEcal->MaxStinEcnaInStex(); i0Stin++)
4891  {
4892  partial_histp(i0Stin) = arg_read_histo(fEcal->MaxStinEcnaInStex()*iStasStex+i0Stin);
4893  }
4894  }
4895 
4896  if( OKDataExist == kTRUE)
4897  {
4898  fStatusFileFound = kTRUE;
4899  CounterExistingFile++;
4900 
4901  //................................................................. (ViewStas)
4902  TMatrixD read_matrix(nb_binx, nb_biny);
4903  for(Int_t i=0; i<nb_binx; i++)
4904  {for(Int_t j=0; j<nb_biny; j++){read_matrix(i,j)=(Double_t)0.;}}
4905 
4906  if ( OKDataExist == kTRUE )
4907  {
4908  fStatusDataExist = kTRUE;
4909  CounterDataExist++;
4910 
4911  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
4912  {
4913  //-------------------------------------- Geographical bidim filling (ViewStas)
4914  Int_t i_xgeo = GetXStinInStas(iStasStex, i0StexStinEcna, vertic_empty_strip_1);
4915  Int_t i_ygeo = GetYStinInStas(iStasStex, i0StexStinEcna);
4916 
4917  if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
4918  {
4919  Int_t n1StexStinEcna = i0StexStinEcna+1;
4920 
4921  if( fFlagSubDet == "EB" )
4922  {
4923  read_matrix(i_xgeo, i_ygeo) = partial_histp(i0StexStinEcna);
4924  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
4925  (Double_t)read_matrix(i_xgeo, i_ygeo));
4926  }
4927 
4928  if( fFlagSubDet == "EE" )
4929  {
4930  //---------------------> do not draw bin for SCEcna = 10 or 11 (ViewStas)
4931  if( !( (n1StexStinEcna == 10 || n1StexStinEcna == 11 ||
4932  n1StexStinEcna == 29 || n1StexStinEcna == 32) ) )
4933  {
4934  read_matrix(i_xgeo, i_ygeo) = partial_histp(i0StexStinEcna);
4935  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
4936  (Double_t)read_matrix(i_xgeo, i_ygeo));
4937  }
4938  if( n1StexStinEcna == 29 )
4939  {
4940  //----------------------------------------------------------------- (ViewStas)
4941  // Average on SCEcna 29 (x1+x2+x3+x6+x7) and SCEcna 10: (x11)
4942  // (x = Xtal# in SC; see CMS NOTE 2006/027, p.10)
4943  //
4944  // (x1+x2+x3+x6+x7)/5 = partial_histp(29-1) ; x11 = partial_histp(10-1)
4945  //
4946  // => (x1+x2+x3+x6+x7+x11)/6 = partial_histp(29-1)*5/6 + partial_histp(10-1)/6
4947  //
4948  // // except for "D_NOE_ChNb" because average done in ReadAverageNumberOfEvents
4949  // // (no averaged NbOfEvts in root file)
4950  //---------------------------------------------------------------------------------
4951  read_matrix(i_xgeo, i_ygeo) =
4952  partial_histp(i0StexStinEcna)*(Double_t)(5./6.) + partial_histp(9)/(Double_t)6.;
4953  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
4954  (Double_t)read_matrix(i_xgeo, i_ygeo));
4955  }
4956  //if( n1StexStinEcna == 32 && HistoCode != "D_NOE_ChNb" ) (ViewStas)
4957  if( n1StexStinEcna == 32 )
4958  {
4959  //---- same as previous case: replace SCEcna 29 by 32 AND SCEcna 10 by 11
4960  //----> (x1+x2+x3+x6+x7+x11)/6 = partial_histp(32-1)*5/6 + partial_histp(11-1)/6
4961  read_matrix(i_xgeo, i_ygeo) =
4962  partial_histp(i0StexStinEcna)*(Double_t)(5./6.) + partial_histp(10)/(Double_t)6.;
4963  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
4964  (Double_t)read_matrix(i_xgeo, i_ygeo));
4965  }
4966  } // end of if( fFlagSubDet == "EE" )
4967  } // end of if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
4968  } // end of for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
4969  } // end of if ( fMyRootFile->DataExist() == kTRUE )
4970  else
4971  {
4972  fStatusDataExist = kFALSE;
4973 
4974  std::cout << "!TEcnaHistos::ViewStas(...)> "
4975  << " Data not available for " << fFapStexName << " " << iStasStex+1
4976  << " (Quantity not present in the ROOT file)" << fTTBELL << std::endl;
4977  }
4978  } // end of if( fMyRootFile->LookAtRootFile() == kTRUE ) (ViewStas)
4979  else
4980  {
4981  fStatusFileFound = kFALSE;
4982 
4983  std::cout << "!TEcnaHistos::ViewStas(...)> "
4984  << " Data not available for " << fFapStexName << " " << iStasStex+1
4985  << " (ROOT file not found)" << fTTBELL << std::endl;
4986  }
4987 
4988  if( fFapNbOfEvts <= xFapNbOfEvts[iStasStex] ){fFapNbOfEvts = xFapNbOfEvts[iStasStex];}
4989 
4990  } // end of for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
4991 
4992  //delete [] NOFE_int; NOFE_int = 0; fCdelete++;
4993  delete [] xFapNbOfEvts; xFapNbOfEvts = nullptr; fCdelete++;
4994 
4995  if( CounterExistingFile > 0 && CounterDataExist > 0 )
4996  {
4997  //=============== H I S T O M I N / M A X M A N A G E M E N T ============ (ViewStas)
4998  //................................ Put histo min max values
4999  //.......... default if flag not set to "ON"
5000  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
5001  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
5002 
5003  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
5004  //.......... user's value if flag set to "ON"
5005  if( fFlagUserHistoMin == "ON" )
5006  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
5007  if( fFlagUserHistoMax == "ON" )
5008  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
5009  //................................. automatic min and/or max
5010  if( fFlagUserHistoMin == "AUTO" )
5011  {SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
5012  if( fFlagUserHistoMax == "AUTO" )
5013  {SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
5014  //...................................... histo set ymin and ymax
5015  SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
5016 
5017  // ************************** A GARDER EN RESERVE *******************************
5018  //............. special contour level for correlations (square root wise scale)
5019  //if ( HistoCode == "D_MCs_ChNb" )
5020  //{
5021  // Int_t nb_niv = 9;
5022  // Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
5023  // SqrtContourLevels(nb_niv, &cont_niv[0]);
5024  // h_geo_bid->SetContour(nb_niv, &cont_niv[0]);
5025  // delete [] cont_niv; fCdelete++;
5026  //}
5027  // ******************************** (FIN RESERVE) *******************************
5028 
5029  // =================================== P L O T S ======================== (ViewStas)
5030 
5031  char f_in[charArrLen];
5032 
5033  //...................... Taille/format canvas
5034  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
5035  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
5036 
5037  if( fFlagSubDet == "EB")
5038  {canv_w = fCnaParHistos->CanvasFormatW("phietaEB");
5039  canv_h = fCnaParHistos->CanvasFormatH("phietaEB");}
5040  if( fFlagSubDet == "EE")
5041  {canv_w = fCnaParHistos->CanvasFormatW("IYIXEE");
5042  canv_h = fCnaParHistos->CanvasFormatH("IYIXEE");}
5043 
5044  //............................................... paves commentaires (ViewStas)
5046 
5047  //------------------------------------ Canvas name ----------------- (ViewStas)
5048  TString name_cov_cor;
5049  name_cov_cor.Resize(charArrLen);
5050  name_cov_cor = "?";
5051 
5052  if( HistoCode == "D_NOE_ChNb"){name_cov_cor = "Number_of_Events";}
5053  if( HistoCode == "D_Ped_ChNb"){name_cov_cor = "Pedestals";}
5054  if( HistoCode == "D_TNo_ChNb"){name_cov_cor = "Total_noise";}
5055  if( HistoCode == "D_MCs_ChNb"){name_cov_cor = "Mean_Corss";}
5056  if( HistoCode == "D_LFN_ChNb"){name_cov_cor = "Low_Fq_Noise";}
5057  if( HistoCode == "D_HFN_ChNb"){name_cov_cor = "High_Fq_Noise";}
5058  if( HistoCode == "D_SCs_ChNb"){name_cov_cor = "Sigma_Corss";}
5059 
5060  TString name_visu;
5061  name_visu.Resize(charArrLen);
5062  name_visu = "colz";
5063 
5064  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%s_%s_HocoVeco_R%d",
5065  name_cov_cor.Data(), fFapAnaType.Data(), fFapNbOfSamples, fFapRunNumber,
5067  name_visu.Data(), arg_AlreadyRead);
5068 
5069  if( fFlagSubDet == "EB" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stas2DEB");}
5070  if( fFlagSubDet == "EE" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stas2DEE");}
5071 
5072  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
5073  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
5074 
5075  // std::cout << "*TEcnaHistos::ViewStas(...)> Plot is displayed on canvas ----> " << f_in << std::endl;
5076 
5077  //------------------------ Canvas draw and update ------------ (ViewStas)
5078  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
5079 
5080  fPavComStas->Draw();
5081  fPavComAnaRun->Draw();
5082  fPavComNbOfEvts->Draw();
5083 
5084  //----------------------------------------------------------- pad margins
5085  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
5086  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
5087  Double_t x_margin = x_low;
5088  Double_t y_margin = y_low;
5089  MainCanvas->Divide( 1, 1, x_margin, y_margin);
5090  // Divide(nx, ny, x_margin, y_margin, color);
5091  gPad->cd(1);
5092  //........................... specific EE
5093  if( fFlagSubDet == "EE" ){
5094  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
5095  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_EE") - 0.005;
5096  TVirtualPad* main_subpad = gPad;
5097  main_subpad->SetPad(x_low, y_low, x_up, y_up);}
5098 
5099  //------------------------------------------------------------
5100  h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
5101  h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
5102 
5103  h_geo_bid->DrawCopy("COLZ");
5104 
5105  // trace de la grille ---------------- (ViewStas)
5106  ViewStasGrid(vertic_empty_strips);
5107  gPad->Draw();
5108  gPad->Update();
5109 
5110  // delete MainCanvas; fCdeleteRoot++;
5111  }
5112  //..................... retour aux options standard
5113 
5114  Bool_t b_true = true;
5115  h_geo_bid->SetStats(b_true);
5116  h_geo_bid->Delete(); h_geo_bid = nullptr; fCdeleteRoot++;
5117 
5118 } // end of ViewStas(...)
5119 
5120 //==================================================================================
5121 //
5122 // GetXStinInStas , GetYStinInStas
5123 //
5124 //==================================================================================
5125 Int_t TEcnaHistos::GetXStinInStas(const Int_t& iStasStex, const Int_t& StexStinEcna,
5126  const Int_t& vertic_empty_strip_1)
5127 {
5128 //Gives the X Stin coordinate in the geographic view of the Stas
5129 // (X = 0 to MaxStexHocoInStas*MaxStinHocoInStex - 1 + vertic_empty_strips(EE only))
5130 
5131  Int_t ix_geo = 0;
5132  Int_t n1StasStex = iStasStex+1;
5133  TString ctype = fEcalNumbering->GetStexHalfStas(n1StasStex);
5134 
5135  if( fFlagSubDet == "EB")
5136  {
5137  if( ctype == "EB-")
5138  {
5139  ix_geo = (iStasStex - fEcal->MaxStexInStasMinus())*fEcal->MaxStinVecoInStex()
5140  + StexStinEcna%fEcal->MaxStinVecoInStex();
5141  }
5142  if( ctype == "EB+")
5143  {
5144  ix_geo = iStasStex*fEcal->MaxStinVecoInStex()
5145  + fEcal->MaxStinVecoInStex()- 1 - StexStinEcna%fEcal->MaxStinVecoInStex();
5146  }
5147  }
5148 
5149  if( fFlagSubDet == "EE")
5150  {
5151  TString LeftRightFromIP = fEcalNumbering->GetDeeDirViewedFromIP(n1StasStex);
5152 
5153  if( ctype == "EE-" && LeftRightFromIP == "left" )
5154  {
5155  ix_geo = fEcal->MaxStinHocoInStex() - StexStinEcna/fEcal->MaxStinVecoInStex() - 1 + vertic_empty_strip_1;
5156  }
5157  if( ctype == "EE-" && LeftRightFromIP == "right" )
5158  {
5159  ix_geo = fEcal->MaxStinHocoInStex() + StexStinEcna/fEcal->MaxStinVecoInStex() + vertic_empty_strip_1;
5160  }
5161  if( ctype == "EE+" && LeftRightFromIP == "left" )
5162  {
5163  ix_geo = (Int_t)fCnaParHistos->DeeOffsetX(fFlagSubDet, n1StasStex)
5164  + fEcal->MaxStinHocoInStex() - StexStinEcna/fEcal->MaxStinVecoInStex() - 1;
5165  }
5166  if( ctype == "EE+" && LeftRightFromIP == "right" )
5167  {
5168  ix_geo = (Int_t)fCnaParHistos->DeeOffsetX(fFlagSubDet, n1StasStex)
5169  + StexStinEcna/fEcal->MaxStinVecoInStex();
5170  }
5171  }
5172  return ix_geo;
5173 }
5174 
5175 Int_t TEcnaHistos::GetYStinInStas(const Int_t& iStasStex, const Int_t& StexStinEcna)
5176 {
5177 //Gives the Y crystal coordinate in the geographic view of one Stex
5178 // (Y = 0 to MaxStexVecoInStas*MaxStinVecoInStex - 1)
5179 
5180  Int_t iy_geo = 0;
5181 
5182  if( fFlagSubDet == "EB")
5183  {
5184  Int_t n1StasStex = iStasStex+1;
5185  TString ctype = fEcalNumbering->GetStexHalfStas(n1StasStex);
5186  if( ctype == "EB+")
5187  {iy_geo = StexStinEcna/fEcal->MaxStinVecoInStex() + fEcal->MaxStinHocoInStex(); }
5188  if( ctype == "EB-")
5189  {iy_geo = fEcal->MaxStinHocoInStex() - 1 - StexStinEcna/fEcal->MaxStinVecoInStex();}
5190  }
5191 
5192  if( fFlagSubDet == "EE")
5193  {iy_geo = StexStinEcna%fEcal->MaxStinVecoInStex();}
5194  return iy_geo;
5195 }
5196 
5197 //==========================================================================
5198 //
5199 // ViewStasGrid
5200 // independent of the ROOT file
5201 //
5202 //==========================================================================
5203 void TEcnaHistos::ViewStasGrid(const Int_t & vertic_empty_strips)
5204 {
5205  //Grid of Stas with axis Hoco and Veco
5206 
5207  if( fFlagSubDet == "EB"){ViewEBGrid();}
5208  if( fFlagSubDet == "EE"){ViewEEGrid(vertic_empty_strips);}
5209 
5210 } // end of ViewStasGrid
5211 
5213 {
5214  //Grid of EB with axis Hoco and Veco
5215 
5216  Int_t GeoBidSizeEta = fEcal->MaxSMEtaInEB()*fEcal->MaxTowEtaInSM();
5217  Int_t GeoBidSizePhi = fEcal->MaxSMPhiInEB()*fEcal->MaxTowPhiInSM();
5218 
5219  Int_t size_y = fEcal->MaxTowEtaInSM();
5220  Int_t size_x = fEcal->MaxTowPhiInSM();
5221 
5222  Int_t nb_binx = GeoBidSizePhi;
5223  Int_t nb_biny = GeoBidSizeEta;
5224  Axis_t xinf_bid = (Axis_t)0.;
5225  Axis_t xsup_bid = (Axis_t)nb_binx;
5226  Axis_t yinf_bid = (Axis_t)0.;
5227  Axis_t ysup_bid = (Axis_t)nb_biny;
5228 
5229  //---------------- trace de la grille: un rectangle = un SM
5230 
5231  Int_t max_x = nb_binx/size_x; // = fEcal->MaxSMPhiInEB()
5232  Int_t max_y = nb_biny/size_y; // = fEcal->MaxSMEtaInEB()
5233 
5234  //............................. lignes horizontales (ViewEBGrid)
5235  Double_t yline = (Double_t)yinf_bid;
5236 
5237  Double_t xline_left = (Double_t)xinf_bid;
5238  Double_t xline_right = (Double_t)xsup_bid;
5239 
5240  for( Int_t j = 0 ; j < max_y ; j++)
5241  {
5242  yline = yline + (Double_t)size_y;
5243  TLine *lin;
5244  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
5245  lin->Draw();
5246  // delete lin; fCdeleteRoot++;
5247  }
5248 
5249  //-------------------------------- lignes verticales
5250  Double_t xline = (Double_t)xinf_bid - (Double_t)size_x;
5251 
5252  Double_t yline_bot = (Double_t)yinf_bid;
5253  Double_t yline_top = (Double_t)ysup_bid;
5254 
5255  for( Int_t i = 0 ; i < max_x ; i++)
5256  {
5257  xline = xline + (Double_t)size_x;
5258  TLine *lin;
5259  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5260  lin->Draw();
5261  }
5262 
5263  //-------------------------------- Numeros des SM
5264  Double_t yTextBot = yline_bot - (yline_top - yline_bot)/25.;
5265  Double_t yTextTop = yline_top + (yline_top - yline_bot)/120.;
5266  xline = (Double_t)xinf_bid - (Double_t)size_x;
5267 
5268  char f_in[charArrLen];
5269  TText *text_SM = new TText(); fCnewRoot++;
5270  for( Int_t i = 0 ; i < max_x ; i++)
5271  {
5272  xline = xline + (Double_t)size_x;
5273  text_SM->SetTextColor(fCnaParHistos->ColorDefinition("bleu_fonce"));
5274  text_SM->SetTextSize((Double_t)0.03);
5275  sprintf( f_in, " +%d", i+1 );
5276  text_SM->DrawText(xline, yTextTop, f_in);
5277  sprintf( f_in, " %d", -i-1 );
5278  text_SM->DrawText(xline, yTextBot, f_in);
5279  }
5280 
5281  //------------------ trace axes en eta et phi --------------- ViewEBGrid
5282 
5283  Int_t SMNumber = 1;
5284 
5285  //...................................................... Axe i(phi) (bottom x) ViewEBGrid
5286  Int_t MatSize = fEcal->MaxTowPhiInSM();
5287  Int_t size_x_eb = fEcal->MaxSMPhiInEB();
5288  Double_t phi_min = 0;
5289  Double_t phi_max = 360;
5290 
5291  TString x_var_name = GetHocoVecoAxisTitle("iphiEB");;
5292  TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
5293 
5294  new TF1("f1", x_direction.Data(), phi_min, phi_max); fCnewRoot++;
5295  TGaxis* sup_axis_x = nullptr;
5296 
5297  if( x_direction == "-x" ) // NEVER IN THIS CASE: xmin->xmax <=> right->left ("-x") direction
5298  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_x_eb*MatSize), (Float_t)0.,
5299  "f1", size_x_eb, "SC" , 0.); fCnewRoot++;}
5300 
5301  if( x_direction == "x" ) // ALWAYS IN THIS CASE: xmin->xmax <=> left->right ("x") direction
5302  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_x_eb*MatSize), (Float_t)0.,
5303  "f1", size_x_eb, "SC" , 0.); fCnewRoot++;}
5304 
5305  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
5306  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize("EBx");
5307  Float_t tic_siz_x = fCnaParHistos->AxisTickSize("SMx");
5308  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("EBx");
5309  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("EBx");
5310 
5311  sup_axis_x->SetTitle(x_var_name);
5312  sup_axis_x->SetTitleSize(tit_siz_x);
5313  sup_axis_x->SetTitleOffset(tit_off_x);
5314  sup_axis_x->SetLabelSize(lab_siz_x);
5315  sup_axis_x->SetLabelOffset(lab_off_x);
5316  sup_axis_x->SetTickSize(tic_siz_x);
5317  sup_axis_x->Draw("SAME");
5318 
5319  //...................................................... Axe eta (y) ViewEBGrid
5320  MatSize = fEcal->MaxTowEtaInSM();
5321  Int_t size_y_eb = fEcal->MaxSMEtaInEB();
5322 
5323  Double_t eta_min = (Double_t)(-85.);
5324  Double_t eta_max = (Double_t)85.;
5325 
5326  TString y_var_name = GetHocoVecoAxisTitle("ietaEB");
5327 
5328  TGaxis* sup_axis_y = nullptr;
5329  sup_axis_y = new TGaxis((Float_t)0., (Float_t)0.,
5330  (Float_t)0., (Float_t)(size_y_eb*MatSize),
5331  eta_min, eta_max, MatSize/2, "SC", 0.); fCnewRoot++;
5332 
5333  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
5334  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize("EBy");
5335  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("SMy");
5336  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("EBy");
5337  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("EBy");
5338 
5339  sup_axis_y->SetTitle(y_var_name);
5340  sup_axis_y->SetTitleSize(tit_siz_y);
5341  sup_axis_y->SetTitleOffset(tit_off_y);
5342  sup_axis_y->SetLabelColor(1);
5343  sup_axis_y->SetLabelSize(lab_siz_y);
5344  sup_axis_y->SetLabelOffset(lab_off_y);
5345  sup_axis_y->SetTickSize(tic_siz_y);
5346  sup_axis_y->Draw("SAME");
5347 
5348  //f2 = 0;
5349 
5350  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
5351 
5352 } // end of ViewEBGrid
5353 //---------------------------------------------------------------------
5354 void TEcnaHistos::ViewEEGrid(const Int_t& vertic_empty_strips)
5355 {
5356  //Grid of EE with axis Hoco and Veco
5357 
5358  Float_t coefcc_x = (Float_t)1./(Float_t)5.;
5359  Float_t coefcc_y = (Float_t)1./(Float_t)5.;
5360 
5361  for( Int_t DeeNumber = 1; DeeNumber <= 4; DeeNumber++)
5362  {
5363  EEDataSectors(coefcc_x, coefcc_y, DeeNumber, "EE");
5364  EEGridAxis(DeeNumber, "EE", " ");
5365  }
5366 
5367  // vertical line between the two endcaps
5368  Double_t xline = (Double_t)coefcc_x*( (Double_t)2.*fEcal->MaxCrysIXInDee()
5369  + ((Double_t)vertic_empty_strips)/(Double_t)2.*fEcal->MaxCrysIXInSC() );
5370 
5371  Double_t yline_bot = (Double_t)coefcc_y*(Double_t)0.;
5372  Double_t yline_top = (Double_t)coefcc_y*(Double_t)fEcal->MaxCrysIYInDee();
5373 
5374  TLine *lin;
5375  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5376  lin->Draw();
5377 
5378  // vertical line in the midles of the two endcaps
5379  // xline = xline + coefcc_x*( fEcal->MaxCrysIXInDee()+ 0.5*fEcal->MaxCrysIXInSC() );
5380  xline = (Double_t)coefcc_x*(3*fEcal->MaxCrysIXInDee()
5381  + ((Double_t)vertic_empty_strips-1.)*fEcal->MaxCrysIXInSC() );
5382  TLine *lin12;
5383  lin12 = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5384  lin12->SetLineStyle(2);
5385  lin12->Draw();
5386 
5387  xline = (Double_t)coefcc_x*(fEcal->MaxCrysIXInDee()
5388  + ((Double_t)vertic_empty_strips)/3.*fEcal->MaxCrysIXInSC() );
5389  TLine *lin34;
5390  lin34 = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5391  lin34->SetLineStyle(2);
5392  lin34->Draw();
5393 
5394  // horizontal line at IY = 50
5395  Double_t xline_end = (Double_t)coefcc_x*( 4*fEcal->MaxCrysIXInDee() + vertic_empty_strips*fEcal->MaxCrysIXInSC());
5396  Double_t yline_mid = (Double_t)coefcc_x*fEcal->MaxCrysIYInDee()/2;
5397 
5398  TLine *linh;
5399  linh = new TLine( 0., yline_mid, xline_end, yline_mid); fCnewRoot++;
5400  linh->SetLineStyle(2);
5401  linh->Draw();
5402 
5403 } // end of ViewEEGrid
5404 
5405 //==================================================================================================
5406 void TEcnaHistos::EEDataSectors(const Float_t& coefcc_x, const Float_t& coefcc_y,
5407  const Int_t& DeeNumber, const TString& opt_plot)
5408 {
5409  //Surlignage des bords du Dee et des Data Sectors. Numeros des secteurs.
5410 
5411  // Epaisseur du trait selon option
5412  Int_t LineWidth = 2; // DEFAULT => option "EE"
5413  if( opt_plot == "Dee" ){LineWidth = 3;}
5414 
5415  Int_t ngmax = 0;
5416  // surlignage du bord interne du Dee (unite de coordonnees: le cristal)
5417  ngmax = 13;
5418  Float_t xg_dee_int_bot[13] = { 0, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11};
5419  Float_t yg_dee_int_bot[13] = {39,39,40,40,41,41,42,42,43,43,45,45,50};
5420 
5421  for(Int_t i=0;i<ngmax;i++){
5422  xg_dee_int_bot[i] = coefcc_x*xg_dee_int_bot[i];
5423  yg_dee_int_bot[i] = coefcc_y*yg_dee_int_bot[i];}
5424 
5425  Float_t XgDeeIntBotRight[13]; Float_t YgDeeIntBotRight[13];
5426  Float_t XgDeeIntTopRight[13]; Float_t YgDeeIntTopRight[13];
5427 
5428  for( Int_t i=0; i<ngmax; i++)
5429  {
5430  XgDeeIntBotRight[i] = xg_dee_int_bot[i];
5431  YgDeeIntBotRight[i] = yg_dee_int_bot[i];
5432  XgDeeIntTopRight[i] = XgDeeIntBotRight[i];
5433  YgDeeIntTopRight[i] = coefcc_y*fEcal->MaxCrysIYInDee() - YgDeeIntBotRight[i];
5434  if ( DeeNumber == 2 || DeeNumber == 4 )
5435  {
5436  XgDeeIntBotRight[i] = -XgDeeIntBotRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5437  XgDeeIntTopRight[i] = -XgDeeIntTopRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5438  }
5439  XgDeeIntBotRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5440  XgDeeIntTopRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5441  }
5442 
5443  TGraph *BDeeIntBotRight = new TGraph(ngmax, XgDeeIntBotRight, YgDeeIntBotRight);
5444  BDeeIntBotRight->SetLineWidth(LineWidth);
5445  BDeeIntBotRight->DrawGraph(ngmax, XgDeeIntBotRight, YgDeeIntBotRight);
5446 
5447  TGraph *BDeeIntTopRight = new TGraph(ngmax, XgDeeIntTopRight, YgDeeIntTopRight);
5448  BDeeIntTopRight->SetLineWidth(LineWidth);
5449  BDeeIntTopRight->DrawGraph(ngmax, XgDeeIntTopRight, YgDeeIntTopRight);
5450 
5451  // surlignage du bord externe du Dee (unite de coordonnees: le cristal)
5452  ngmax = 21;
5453  Float_t xg_dee_ext_bot[21] = {0,10,10,15,15,25,25,30,30,35,35,37,37,42,42,45,45,47,47,50,50};
5454  Float_t yg_dee_ext_bot[21] = {0, 0, 3, 3, 5, 5, 8, 8,13,13,15,15,20,20,25,25,35,35,40,40,50};
5455  for(Int_t i=0;i<ngmax;i++){
5456  xg_dee_ext_bot[i] = coefcc_x*xg_dee_ext_bot[i];
5457  yg_dee_ext_bot[i] = coefcc_y*yg_dee_ext_bot[i];}
5458 
5459  Float_t XgDeeExtBotRight[21]; Float_t YgDeeExtBotRight[21];
5460  Float_t XgDeeExtTopRight[21]; Float_t YgDeeExtTopRight[21];
5461 
5462  for( Int_t i=0; i<ngmax; i++)
5463  {
5464  XgDeeExtBotRight[i] = xg_dee_ext_bot[i];
5465  YgDeeExtBotRight[i] = yg_dee_ext_bot[i];
5466  XgDeeExtTopRight[i] = XgDeeExtBotRight[i];
5467  YgDeeExtTopRight[i] = coefcc_y*fEcal->MaxCrysIYInDee() - YgDeeExtBotRight[i];
5468  if ( DeeNumber == 2 || DeeNumber == 4 )
5469  {
5470  XgDeeExtBotRight[i] = -XgDeeExtBotRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5471  XgDeeExtTopRight[i] = -XgDeeExtTopRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5472  }
5473  XgDeeExtBotRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5474  XgDeeExtTopRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5475  }
5476 
5477  TGraph *BDeeExtBotRight = new TGraph(ngmax, XgDeeExtBotRight, YgDeeExtBotRight);
5478  BDeeExtBotRight->SetLineWidth(LineWidth);
5479  BDeeExtBotRight->DrawGraph(ngmax, XgDeeExtBotRight, YgDeeExtBotRight);
5480 
5481  TGraph *BDeeExtTopRight = new TGraph(ngmax, XgDeeExtTopRight, YgDeeExtTopRight);
5482  BDeeExtTopRight->SetLineWidth(LineWidth);
5483  BDeeExtTopRight->DrawGraph(ngmax, XgDeeExtTopRight, YgDeeExtTopRight);
5484 
5485  char f_in[charArrLen];
5486 
5487  //............. Surlignage separateurs des secteurs en phi (Data sectors)
5488 
5489  //================== S9 -> S1 (EE-) option "EE" seulement
5490  if( opt_plot == "EE" )
5491  {
5492  ngmax = 2;
5493  Float_t xg_dee_data_sec9[2] = { 0, 0};
5494  Float_t yg_dee_data_sec9[2] = {61,100};
5495  for(Int_t i=0;i<ngmax;i++){
5496  xg_dee_data_sec9[i] = coefcc_x*xg_dee_data_sec9[i];
5497  yg_dee_data_sec9[i] = coefcc_y*yg_dee_data_sec9[i];}
5498 
5499  Float_t XgDeeDataSec9[11]; Float_t YgDeeDataSec9[11];
5500  for( Int_t i=0; i<ngmax; i++)
5501  {
5502  XgDeeDataSec9[i] = xg_dee_data_sec9[i]; YgDeeDataSec9[i] = yg_dee_data_sec9[i];
5503  if ( DeeNumber == 2 || DeeNumber == 4 )
5504  {
5505  XgDeeDataSec9[i] = -XgDeeDataSec9[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5506  }
5507  XgDeeDataSec9[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5508  }
5509  TGraph *BDeeDataSec9 = new TGraph(ngmax, XgDeeDataSec9, YgDeeDataSec9);
5510  BDeeDataSec9->SetLineWidth(LineWidth);
5511  BDeeDataSec9->DrawGraph(ngmax, XgDeeDataSec9, YgDeeDataSec9);
5512  }
5513 
5514  //================= S1->S2(EE-)
5515  ngmax = 11;
5516  Float_t xg_dee_data_sec1[11] = { 7,10,10,15,15,20,20,25,25,30,30};
5517  Float_t yg_dee_data_sec1[11] = {60,60,65,65,70,70,75,75,85,85,87};
5518  for(Int_t i=0;i<ngmax;i++){
5519  xg_dee_data_sec1[i] = coefcc_x*xg_dee_data_sec1[i];
5520  yg_dee_data_sec1[i] = coefcc_y*yg_dee_data_sec1[i];}
5521 
5522  Float_t XgDeeDataSec1[11]; Float_t YgDeeDataSec1[11];
5523  for( Int_t i=0; i<ngmax; i++)
5524  {
5525  XgDeeDataSec1[i] = xg_dee_data_sec1[i]; YgDeeDataSec1[i] = yg_dee_data_sec1[i];
5526  if ( DeeNumber == 2 || DeeNumber == 4 )
5527  {
5528  XgDeeDataSec1[i] = -XgDeeDataSec1[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5529  }
5530  XgDeeDataSec1[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5531  }
5532 
5533  TGraph *BDeeDataSec1 = new TGraph(ngmax, XgDeeDataSec1, YgDeeDataSec1);
5534  BDeeDataSec1->SetLineWidth(LineWidth);
5535  BDeeDataSec1->DrawGraph(ngmax, XgDeeDataSec1, YgDeeDataSec1);
5536 
5537  //================= S2->S3(EE-)
5538  ngmax = 6;
5539  Float_t xg_dee_data_sec2[6] = {11,15,15,40,40,47};
5540  Float_t yg_dee_data_sec2[6] = {50,50,55,55,60,60};
5541  for(Int_t i=0;i<ngmax;i++){
5542  xg_dee_data_sec2[i] = coefcc_x*xg_dee_data_sec2[i];
5543  yg_dee_data_sec2[i] = coefcc_y*yg_dee_data_sec2[i];}
5544 
5545  Float_t XgDeeDataSec2[6]; Float_t YgDeeDataSec2[6];
5546  for( Int_t i=0; i<ngmax; i++)
5547  {
5548  XgDeeDataSec2[i] = xg_dee_data_sec2[i]; YgDeeDataSec2[i] = yg_dee_data_sec2[i];
5549  if ( DeeNumber == 2 || DeeNumber == 4 )
5550  {
5551  XgDeeDataSec2[i] = -XgDeeDataSec2[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5552  }
5553  XgDeeDataSec2[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5554  }
5555  TGraph *BDeeDataSec2 = new TGraph(ngmax, XgDeeDataSec2, YgDeeDataSec2);
5556  BDeeDataSec2->SetLineWidth(LineWidth);
5557  BDeeDataSec2->DrawGraph(ngmax, XgDeeDataSec2, YgDeeDataSec2);
5558 
5559  //================= S3->S4(EE-)
5560  ngmax = 10;
5561  Float_t xg_dee_data_sec3[10] = {10,15,15,20,20,30,30,40,40,42};
5562  Float_t yg_dee_data_sec3[10] = {45,45,40,40,35,35,30,30,25,25};
5563  for(Int_t i=0;i<ngmax;i++){
5564  xg_dee_data_sec3[i] = coefcc_x*xg_dee_data_sec3[i];
5565  yg_dee_data_sec3[i] = coefcc_y*yg_dee_data_sec3[i];}
5566 
5567  Float_t XgDeeDataSec3[10]; Float_t YgDeeDataSec3[10];
5568  for( Int_t i=0; i<ngmax; i++)
5569  {
5570  XgDeeDataSec3[i] = xg_dee_data_sec3[i]; YgDeeDataSec3[i] = yg_dee_data_sec3[i];
5571  if ( DeeNumber == 2 || DeeNumber == 4 )
5572  {
5573  XgDeeDataSec3[i] = -XgDeeDataSec3[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5574  }
5575  XgDeeDataSec3[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5576  }
5577  TGraph *BDeeDataSec3 = new TGraph(ngmax, XgDeeDataSec3, YgDeeDataSec3);
5578  BDeeDataSec3->SetLineWidth(LineWidth);
5579  BDeeDataSec3->DrawGraph(ngmax, XgDeeDataSec3, YgDeeDataSec3);
5580 
5581  //================= S4->S5(EE-)
5582  ngmax = 6;
5583  Float_t xg_dee_data_sec4[6] = { 5, 5,10,10,15,15};
5584  Float_t yg_dee_data_sec4[6] = {40,30,30,15,15, 5};
5585  for(Int_t i=0;i<ngmax;i++){
5586  xg_dee_data_sec4[i] = coefcc_x*xg_dee_data_sec4[i];
5587  yg_dee_data_sec4[i] = coefcc_y*yg_dee_data_sec4[i];}
5588 
5589  Float_t XgDeeDataSec4[6]; Float_t YgDeeDataSec4[6];
5590  for( Int_t i=0; i<ngmax; i++)
5591  {
5592  XgDeeDataSec4[i] = xg_dee_data_sec4[i]; YgDeeDataSec4[i] = yg_dee_data_sec4[i];
5593  if ( DeeNumber == 2 || DeeNumber == 4 )
5594  {
5595  XgDeeDataSec4[i] = -XgDeeDataSec4[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5596  }
5597  XgDeeDataSec4[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5598  }
5599  TGraph *BDeeDataSec4 = new TGraph(ngmax, XgDeeDataSec4, YgDeeDataSec4);
5600  BDeeDataSec4->SetLineWidth(LineWidth);
5601  BDeeDataSec4->DrawGraph(ngmax, XgDeeDataSec4, YgDeeDataSec4);
5602 
5603 
5604  //..................................... Numeros des secteurs S_i (option "Dee" seulement)
5605  if( opt_plot == "Dee" || opt_plot == "EE" )
5606  {
5607  //............. Coordonnees des numeros de secteurs
5608  ngmax = 5;
5609  Float_t xg_coord_sector[5] = { 16, 41, 45, 33, -2};
5610  Float_t yg_coord_sector[5] = { 96, 83, 30, 5, -8};
5611 
5612  //....... Reprise secteurs 3 et 7
5613  if(opt_plot == "Dee" && (DeeNumber == 1) ){xg_coord_sector[2] += 0.5;}
5614  if(opt_plot == "Dee" && (DeeNumber == 2) ){xg_coord_sector[2] -= 1. ;}
5615  if(opt_plot == "Dee" && (DeeNumber == 3) ){xg_coord_sector[2] += 0.7;}
5616  if(opt_plot == "Dee" && (DeeNumber == 4) ){xg_coord_sector[2] -= 1.2;}
5617 
5618  if(opt_plot == "EE" && (DeeNumber == 2 || DeeNumber == 3) ){xg_coord_sector[2] += 0.55;}
5619  if(opt_plot == "EE" && (DeeNumber == 4 ) ){xg_coord_sector[2] -= 0.2;}
5620 
5621  for(Int_t i=0;i<ngmax;i++){
5622  xg_coord_sector[i] = coefcc_x*xg_coord_sector[i];
5623  yg_coord_sector[i] = coefcc_y*yg_coord_sector[i];}
5624 
5625  Float_t xg_sector[9];
5626  Float_t yg_sector[9];
5627  Int_t ns1 = 1;
5628  Int_t ns2 = 5;
5629  Float_t xinv_d2d4 = coefcc_x*44;
5630 
5631  if( DeeNumber == 1 )
5632  {
5633  ns1 = 1; ns2 = 5;
5634  xg_sector[1-ns1] = xg_coord_sector[1-ns1]; yg_sector[1-ns1] = yg_coord_sector[1-ns1];
5635  xg_sector[2-ns1] = xg_coord_sector[2-ns1]; yg_sector[2-ns1] = yg_coord_sector[2-ns1];
5636  xg_sector[3-ns1] = xg_coord_sector[3-ns1]; yg_sector[3-ns1] = yg_coord_sector[3-ns1];
5637  xg_sector[4-ns1] = xg_coord_sector[4-ns1]; yg_sector[4-ns1] = yg_coord_sector[4-ns1];
5638  xg_sector[5-ns1] = xg_coord_sector[5-ns1]; yg_sector[5-ns1] = yg_coord_sector[5-ns1];
5639  }
5640 
5641  if( DeeNumber == 2 )
5642  {
5643  ns1 = 5; ns2 = 9;
5644  xg_sector[ns2-1] = xinv_d2d4-xg_coord_sector[1-1]; yg_sector[ns2-1] = yg_coord_sector[1-1];
5645  xg_sector[ns2-2] = xinv_d2d4-xg_coord_sector[2-1]; yg_sector[ns2-2] = yg_coord_sector[2-1];
5646  xg_sector[ns2-3] = xinv_d2d4-xg_coord_sector[3-1]; yg_sector[ns2-3] = yg_coord_sector[3-1];
5647  xg_sector[ns2-4] = xinv_d2d4-xg_coord_sector[4-1]; yg_sector[ns2-4] = yg_coord_sector[4-1];
5648  xg_sector[ns2-5] = xinv_d2d4-xg_coord_sector[5-1]; yg_sector[ns2-5] = yg_coord_sector[5-1];
5649  }
5650  if( DeeNumber == 3 )
5651  {
5652  ns1 = 5; ns2 = 9;
5653  xg_sector[ns2-1]= xg_coord_sector[1-1]; yg_sector[ns2-1] = yg_coord_sector[1-1];
5654  xg_sector[ns2-2]= xg_coord_sector[2-1]; yg_sector[ns2-2] = yg_coord_sector[2-1];
5655  xg_sector[ns2-3]= xg_coord_sector[3-1]; yg_sector[ns2-3] = yg_coord_sector[3-1];
5656  xg_sector[ns2-4]= xg_coord_sector[4-1]; yg_sector[ns2-4] = yg_coord_sector[4-1];
5657  xg_sector[ns2-5]= xg_coord_sector[5-1]; yg_sector[ns2-5] = yg_coord_sector[5-1];
5658  }
5659  if( DeeNumber == 4 )
5660  {
5661  ns1 = 1; ns2 = 5;
5662  xg_sector[1-ns1]= xinv_d2d4-xg_coord_sector[1-ns1]; yg_sector[1-ns1] = yg_coord_sector[1-ns1];
5663  xg_sector[2-ns1]= xinv_d2d4-xg_coord_sector[2-ns1]; yg_sector[2-ns1] = yg_coord_sector[2-ns1];
5664  xg_sector[3-ns1]= xinv_d2d4-xg_coord_sector[3-ns1]; yg_sector[3-ns1] = yg_coord_sector[3-ns1];
5665  xg_sector[4-ns1]= xinv_d2d4-xg_coord_sector[4-ns1]; yg_sector[4-ns1] = yg_coord_sector[4-ns1];
5666  xg_sector[5-ns1]= xinv_d2d4-xg_coord_sector[5-ns1]; yg_sector[5-ns1] = yg_coord_sector[5-ns1];
5667  }
5668 
5669  Color_t coul_textsector = fCnaParHistos->ColorDefinition("vert37");
5670  for(Int_t ns=ns1; ns<= ns2; ns++)
5671  {
5672  xg_sector[ns-1] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5673  if( DeeNumber == 1 || DeeNumber == 2 ){sprintf( f_in, "+%d", ns);}
5674  if( DeeNumber == 3 || DeeNumber == 4 ){sprintf( f_in, "-%d", ns);}
5675  TText *text_num_module = new TText(xg_sector[ns-1], yg_sector[ns-1], f_in); fCnewRoot++;
5676  if(opt_plot == "Dee"){text_num_module->SetTextSize(0.065);}
5677  if(opt_plot == "EE" ){text_num_module->SetTextSize(0.045);}
5678  text_num_module->SetTextColor(coul_textsector);
5679  if( opt_plot == "Dee" ||
5680  ( opt_plot == "EE" && !( (DeeNumber == 3 && ns == 5) || (DeeNumber == 1 && ns == 5) ) ) )
5681  {text_num_module->Draw();}
5682 
5683  // text_num_module->Delete(); text_num_module = 0; fCdeleteRoot++;
5684  }
5685 
5686  //............................ numeros des dee's
5687  ngmax = 4;
5688  Float_t xg_coord_dee[4] = { 0, 0, 0, 0};
5689  Float_t yg_coord_dee[4] = {48, 48, 48, 48};
5690 
5691  xg_coord_dee[DeeNumber-1] = coefcc_x*xg_coord_dee[DeeNumber-1];
5692  yg_coord_dee[DeeNumber-1] = coefcc_y*yg_coord_dee[DeeNumber-1];
5693 
5694  Float_t xg_dee = xg_coord_dee[DeeNumber-1];
5695  Float_t yg_dee = yg_coord_dee[DeeNumber-1];
5696 
5697  Color_t coul_textdee = fCnaParHistos->ColorDefinition("noir");
5698 
5699  xg_dee += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber)
5700  + fCnaParHistos->DeeNumberOffsetX(opt_plot, DeeNumber);
5701 
5702  if( DeeNumber == 1 ){sprintf( f_in, "D1");}
5703  if( DeeNumber == 2 ){sprintf( f_in, "D2");}
5704  if( DeeNumber == 3 ){sprintf( f_in, "D3");}
5705  if( DeeNumber == 4 ){sprintf( f_in, "D4");}
5706 
5707  TText *text_num_module = new TText(xg_dee, yg_dee, f_in); fCnewRoot++;
5708  if( opt_plot == "EE" ){text_num_module->SetTextSize(0.045);}
5709  if( opt_plot == "Dee"){text_num_module->SetTextSize(0.085);}
5710  text_num_module->SetTextColor(coul_textdee);
5711  text_num_module->Draw();
5712  }
5713 
5714  //..................................... Numeros des Dee et indication EE+- (option "EE" seulement)
5715  if( opt_plot == "EE" )
5716  {
5717  //............................ indication EE+-
5718  ngmax = 4;
5719  Float_t xg_coord_eepm[4] = { 0, 0, 0, 0};
5720  Float_t yg_coord_eepm[4] = {95, 95, 95, 95};
5721 
5722  xg_coord_eepm[DeeNumber-1] = coefcc_x*xg_coord_eepm[DeeNumber-1];
5723  yg_coord_eepm[DeeNumber-1] = coefcc_y*yg_coord_eepm[DeeNumber-1];
5724 
5725  Float_t xg_eepm = xg_coord_eepm[DeeNumber-1];
5726  Float_t yg_eepm = yg_coord_eepm[DeeNumber-1];
5727 
5728  Color_t coul_texteepm = fCnaParHistos->ColorDefinition("noir");
5729 
5730  xg_eepm += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber)
5731  + fCnaParHistos->DeeNameOffsetX(DeeNumber);
5732 
5733  if( DeeNumber == 1 ){sprintf( f_in, "EE+F");}
5734  if( DeeNumber == 2 ){sprintf( f_in, "EE+N");}
5735  if( DeeNumber == 3 ){sprintf( f_in, "EE-N");}
5736  if( DeeNumber == 4 ){sprintf( f_in, "EE-F");}
5737 
5738  TText *text_num_eepm = new TText(xg_eepm, yg_eepm, f_in); fCnewRoot++;
5739  text_num_eepm->SetTextSize(0.04);
5740  text_num_eepm->SetTextColor(coul_texteepm);
5741  text_num_eepm->Draw();
5742  }
5743 
5744  //......................... mention "viewed from IP"
5745  Color_t coul_textfromIP = fCnaParHistos->ColorDefinition("rouge49");
5746  sprintf( f_in, "viewed from IP");
5747  Float_t x_from_ip = 15.;
5748  Float_t y_from_ip = -10.;
5749  if( opt_plot == "EE" ){y_from_ip = -16.;}
5750  x_from_ip = coefcc_x*x_from_ip;
5751  y_from_ip = coefcc_x*y_from_ip;
5752  if( opt_plot == "EE" && DeeNumber == 3 ){x_from_ip += 1.4*fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);}
5753  TText *text_from_ip = new TText(x_from_ip, y_from_ip, f_in); fCnewRoot++;
5754  text_from_ip->SetTextSize(0.045);
5755  if( opt_plot == "EE" ){text_from_ip->SetTextSize(0.035);}
5756  text_from_ip->SetTextColor(coul_textfromIP);
5757  if( opt_plot == "Dee" || (opt_plot == "EE" && DeeNumber == 3) ){text_from_ip->Draw();}
5758 
5759 } // ------ end of EEDataSectors() ------
5760 
5761 //==========================================================================================
5762 
5763 void TEcnaHistos::EEGridAxis( const Int_t& DeeNumber, const TString& opt_plot, const TString& c_option)
5764 {
5765  //------------------ trace axes en IX et IY --------------- EEGridAxis
5766  //=============================================================================== Axe IX
5767  Int_t size_IX_dee = fEcal->MaxSCIXInDee();
5768 
5769  Double_t IX_min = fEcalNumbering->GetIIXMin(1) - 0.5; // IX_min = 0.5 pour les 4 dee's
5770  Double_t IX_max = fEcalNumbering->GetIIXMax()*fEcal->MaxCrysIXInSC() + 0.5; // IX_max = 50.5 pour les 4 dee's
5771 
5772  Int_t MatSize = 1;
5773  if( opt_plot == "Dee" && c_option == "corcc" )
5774  {
5775  MatSize = fEcal->MaxCrysInSC();
5776  IX_min = fEcalNumbering->GetIIXMin() - 0.5;
5777  IX_max = fEcalNumbering->GetIIXMax() + 0.5;
5778  }
5779  if( opt_plot == "EE" && c_option == "corcc" ){return;} // => a voir...
5780 
5781  if( opt_plot == "Dee" && c_option != "corcc" ){MatSize = fEcal->MaxCrysIXInSC();}
5782  if( opt_plot == "EE" && c_option != "corcc" ){MatSize = 1;}
5783 
5784  TString x_var_name = " ";
5785 
5786  Float_t axis_x_inf = 0;
5787  Float_t axis_x_sup = 0;
5788  Float_t axis_y_inf = 0;
5789  Float_t axis_y_sup = 0;
5790  Int_t axis_nb_div = 205; // DEFAULT: option "EE"
5791  Double_t IX_values_min = 0;
5792  Double_t IX_values_max = 0;
5793  Option_t* chopt = "C";
5794 
5795  //........................................................................EEGridAxis
5796  if( DeeNumber == 1 ) // xmin -> xmax <=> right->left
5797  {
5798  //.....axis min->max/left->right: first draw axis with -ticksize and no label
5799  axis_x_inf = size_IX_dee*MatSize;
5800  axis_x_sup = 0;
5801  axis_y_inf = 0;
5802  axis_y_sup = 0;
5803  IX_values_min = -IX_max; // -50.5 right
5804  IX_values_max = -IX_min; // - 0.5 left
5805  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee1");}
5806  if( opt_plot == "EE" ){x_var_name = GetIXIYAxisTitle("iIXEE");}
5807  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5808  chopt = "-CSU";
5809  }
5810  if( DeeNumber == 2 ) // xmin -> xmax <=> right->left
5811  {
5812  //.....axis min->max/left->right: first draw axis with -ticksize and no label
5813  axis_x_inf = size_IX_dee*MatSize;
5814  axis_x_sup = 0;
5815  axis_y_inf = 0;
5816  axis_y_sup = 0;
5817  IX_values_min = IX_min; // + 0.5 right
5818  IX_values_max = IX_max; // +50.5 left
5819  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee2");}
5820  if( opt_plot == "EE" ){x_var_name = " ";}
5821  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5822  chopt = "-CSU";
5823  }
5824  if( DeeNumber == 3 ) // xmin -> xmax <=> left->right
5825  {
5826  axis_x_inf = 0;
5827  axis_x_sup = size_IX_dee*MatSize;
5828  axis_y_inf = 0;
5829  axis_y_sup = 0;
5830  IX_values_min = IX_min; // + 0.5 left
5831  IX_values_max = IX_max; // +50.5 right
5832  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee3");}
5833  if( opt_plot == "EE" ){x_var_name = " ";}
5834  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5835  chopt = "CS";
5836  }
5837  if( DeeNumber == 4 ) // xmin -> xmax <=> left->right
5838  {
5839  axis_x_inf = 0;
5840  axis_x_sup = size_IX_dee*MatSize;
5841  axis_y_inf = 0;
5842  axis_y_sup = 0;
5843  IX_values_min = -IX_max; // -50.5 left
5844  IX_values_max = -IX_min; // - 0.5 right
5845  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee4");}
5846  if( opt_plot == "EE" ){x_var_name = " ";}
5847  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5848  chopt = "CS";
5849  }
5850 
5851  //.................................................................... EEGridAxis
5852  axis_x_inf += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5853  axis_x_sup += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5854 
5855  TGaxis* sup_axis_x = nullptr;
5856  sup_axis_x = new TGaxis(axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup,
5857  IX_values_min, IX_values_max, axis_nb_div, chopt, 0.); fCnewRoot++;
5858 
5859  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
5860  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
5861 
5862  Float_t tic_siz_x = fCnaParHistos->AxisTickSize("Deex");
5863  if(opt_plot == "EE"){tic_siz_x = fCnaParHistos->AxisTickSize("EEx");}
5864 
5865  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("Deex");
5866  if(opt_plot == "EE"){tit_off_x = fCnaParHistos->AxisTitleOffset("EEx");}
5867 
5868  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("Deex");
5869  if(opt_plot == "EE"){lab_off_x = fCnaParHistos->AxisLabelOffset("EEx");}
5870 
5871  sup_axis_x->SetTitle(x_var_name);
5872  sup_axis_x->SetTitleSize(tit_siz_x);
5873  sup_axis_x->SetTitleOffset(tit_off_x);
5874  sup_axis_x->SetLabelSize(lab_siz_x);
5875  sup_axis_x->SetLabelOffset(lab_off_x);
5876  sup_axis_x->SetTickSize(tic_siz_x);
5877  sup_axis_x->Draw("SAME");
5878 
5879  //.....axis min->max/right->left: redraw axis with ticksize = 0 and with -labelOffset
5880  if( DeeNumber == 1 || DeeNumber == 2 )
5881  {
5882  chopt = "CS";
5883  TGaxis* sup_axis_x_bis = nullptr;
5884  sup_axis_x_bis = new TGaxis(axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup,
5885  IX_values_min, IX_values_max, axis_nb_div, chopt, 0.); fCnewRoot++;
5886  sup_axis_x_bis->SetTickSize(0.);
5887  lab_siz_x = sup_axis_x->GetLabelSize();
5888  sup_axis_x_bis->SetLabelSize(lab_siz_x);
5889  lab_off_x = sup_axis_x->GetLabelOffset();
5890  sup_axis_x_bis->SetLabelOffset(-lab_off_x);
5891  sup_axis_x_bis->Draw("SAME");
5892  }
5893 
5894  //================================================================== Axe IY EEGridAxis
5895 
5896  if( opt_plot == "Dee" || (opt_plot == "EE" && DeeNumber == 4) )
5897  {
5898  Int_t size_IY_dee = fEcal->MaxSCIYInDee();
5899  Int_t size_IY_axis = size_IY_dee;
5900 
5901  if( opt_plot == "Dee" ){axis_nb_div = size_IY_axis;}
5902  if( opt_plot == "EE" ){axis_nb_div = 210;}
5903 
5904  Double_t jIY_min = fEcalNumbering->GetJIYMin(DeeNumber, 1) - 0.5;
5905  Double_t jIY_max = fEcalNumbering->GetJIYMax(DeeNumber)*fEcal->MaxCrysIYInSC() + 0.5;
5906 
5907  TString jy_var_name = " ";
5908  TString jy_direction = "x";
5909 
5910  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
5911  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
5912 
5913  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("Deey");
5914  if(opt_plot == "EE"){tic_siz_y = fCnaParHistos->AxisTickSize("EEy");}
5915 
5916  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Deey");
5917  if(opt_plot == "EE"){tit_off_y = fCnaParHistos->AxisTitleOffset("EEy");}
5918 
5919  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Deey");
5920  if(opt_plot == "EE"){lab_off_y = fCnaParHistos->AxisLabelOffset("EEy");}
5921 
5922  TGaxis* axis_jy_plus = nullptr;
5923  axis_jy_plus = new TGaxis((Float_t)0., (Float_t)0.,
5924  (Float_t)0., (Float_t)(size_IY_axis*MatSize),
5925  jIY_min, jIY_max, axis_nb_div, "SC", 0.); fCnewRoot++;
5926 
5927  jy_var_name = GetIXIYAxisTitle("jIYDee");
5928  axis_jy_plus->SetTitle(jy_var_name);
5929  axis_jy_plus->SetTitleSize(tit_siz_y);
5930  axis_jy_plus->SetTitleOffset(tit_off_y);
5931  axis_jy_plus->SetLabelSize(lab_siz_y);
5932  axis_jy_plus->SetLabelOffset(lab_off_y);
5933  axis_jy_plus->SetTickSize(tic_siz_y);
5934  axis_jy_plus->Draw("SAME");
5935  }
5936 
5937 //---------------------------------- 2 axes (0,50) et (0,-50)
5938 #define IYAX
5939 #ifndef IYAX
5940  if( opt_plot == "Dee" || (opt_plot == "EE" && DeeNumber == 4) )
5941  {
5942  Int_t size_IY_dee = fEcal->MaxSCIYInDee();
5943  Int_t size_IY_axis = size_IY_dee/2;
5944 
5945  if( opt_plot == "Dee" ){axis_nb_div = (Int_t)size_IY_axis;}
5946  if( opt_plot == "EE" ){axis_nb_div = 5;}
5947 
5948  Double_t jIY_min = fEcalNumbering->GetJIYMin(DeeNumber, 1) - 0.5;
5949  Double_t jIY_max = (fEcalNumbering->GetJIYMax(DeeNumber)/2)*fEcal->MaxCrysIYInSC() + 0.5;
5950 
5951  TString jy_var_name = " ";
5952  TString jy_direction = "x";
5953 
5954  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
5955  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
5956 
5957  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("Deey");
5958  if(opt_plot == "EE"){tic_siz_y = fCnaParHistos->AxisTickSize("EEy");}
5959 
5960  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Deey");
5961  if(opt_plot == "EE"){tit_off_y = fCnaParHistos->AxisTitleOffset("EEy");}
5962 
5963  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Deey");
5964  if(opt_plot == "EE"){lab_off_y = fCnaParHistos->AxisLabelOffset("EEy");}
5965 
5966  TGaxis* axis_jy_plus = 0;
5967  axis_jy_plus = new TGaxis((Float_t)0., (Float_t)(size_IY_dee*MatSize/2),
5968  (Float_t)0., (Float_t)(2*size_IY_dee*MatSize/2),
5969  jIY_min, jIY_max, axis_nb_div, "SC", 0.); fCnewRoot++;
5970 
5971  jy_var_name = GetIXIYAxisTitle("jIYDee");
5972  axis_jy_plus->SetTitle(jy_var_name);
5973  axis_jy_plus->SetTitleSize(tit_siz_y);
5974  axis_jy_plus->SetTitleOffset(tit_off_y);
5975  axis_jy_plus->SetLabelSize(lab_siz_y);
5976  axis_jy_plus->SetLabelOffset(lab_off_y);
5977  axis_jy_plus->SetTickSize(tic_siz_y);
5978  axis_jy_plus->Draw("SAME");
5979 
5980  TGaxis* axis_jy_minus = 0;
5981  axis_jy_minus = new TGaxis((Float_t)0., (Float_t)(size_IY_dee*MatSize/2),
5982  (Float_t)0., (Float_t)0.,
5983  -jIY_min, -jIY_max, axis_nb_div, "-SC", 0.); fCnewRoot++;
5984 
5985  jy_var_name = GetIXIYAxisTitle("jIYDee");
5986  axis_jy_minus->SetTitle(jy_var_name);
5987  axis_jy_minus->SetTitleSize(tit_siz_y);
5988  axis_jy_minus->SetTitleOffset(tit_off_y);
5989  axis_jy_minus->SetLabelSize(lab_siz_y);
5990  axis_jy_minus->SetLabelOffset(lab_off_y);
5991  axis_jy_minus->SetTickSize(tic_siz_y);
5992  axis_jy_minus->Draw("SAME");
5993  }
5994 #endif // IYAX
5995 
5996 } // ------------- end of EEGridAxis(...) --------------
5997 
5998 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5999 //
6000 // ViewHisto(***)
6001 //
6002 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6003 //======================== D_MSp_SpNb
6004 void TEcnaHistos::XtalSamplesEv(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6005  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6006 {XtalSamplesEv(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6007 void TEcnaHistos::XtalSamplesEv(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6008  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6009  const TString& PlotOption)
6010 {
6011  if( fFapStexNumber > 0 )
6012  {
6013  if( PlotOption == fAllXtalsInStinPlot )
6014  {
6015  Int_t StexStin_A = n1StexStin;
6016  if( fFlagSubDet == "EE" )
6017  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6018 
6019  Bool_t aOKData = kFALSE;
6020  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6021 
6022  if( arg_AlreadyRead == fTobeRead )
6023  {
6029 
6030  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6031  {
6032  fStatusFileFound = kTRUE;
6033  read_histo = fMyRootFile->ReadSampleMeans(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6034  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6035  }
6036  else
6037  {
6038  fStatusFileFound = kFALSE;
6039  std::cout << "!TEcnaHistos::XtalSamplesEv(...)> Data not available (ROOT file not found)." << std::endl;
6040  }
6041  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6042  }
6043  if( arg_AlreadyRead >= 1 )
6044  {
6045  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6046  fStatusDataExist = kTRUE;
6047  aOKData = kTRUE;
6048  }
6049 
6050  if( aOKData == kTRUE )
6051  {
6052  TVectorD read_histo_samps(fFapNbOfSamples);
6053 
6054  Int_t xAlreadyRead = 1;
6055  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6056  {
6057  if( fFapStexName == "SM" )
6058  {std::cout << "*TEcnaHistos::XtalSamplesEv(...)> channel " << std::setw(2) << i0_stin_echa << ": ";}
6059  if( fFapStexName == "Dee" )
6060  {std::cout << "*TEcnaHistos::XtalSamplesEv(...)> Xtal " << std::setw(2) << i0_stin_echa+1 << ": ";}
6061 
6062  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6063  {
6064  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6065  std::cout << std::setprecision(4) << std::setw(8) << read_histo_samps(i0_samp) << ", " ;
6066  }
6067  std::cout << std::endl;
6068  ViewHisto(read_histo_samps, xAlreadyRead,
6069  StexStin_A, i0_stin_echa, fZerv, "D_MSp_SpNb", fAllXtalsInStinPlot);
6070  xAlreadyRead++;
6071  }
6072  xAlreadyRead = 0;
6073  }
6074  else
6075  {
6076  std::cout << "!TEcnaHistos::XtalSamplesEv(...)> Data not available." << std::endl;
6077  }
6078  }
6079 
6080  if( !(PlotOption == fAllXtalsInStinPlot) )
6081  {
6082  Int_t StexStin_A = n1StexStin;
6083  if( fFlagSubDet == "EE" )
6084  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6085  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_MSp_SpNb", PlotOption);
6086  }
6087  }
6088  else
6089  {
6090  std::cout << "!TEcnaHistos::XtalSamplesEv(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6091  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << std::endl;
6092  }
6093 }
6094 
6095 //======================== D_MSp_SpDs
6096 void TEcnaHistos::EvSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6097  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6098 {EvSamplesXtals(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6099 void TEcnaHistos::EvSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6100  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6101  const TString& PlotOption)
6102 {
6103  if( fFapStexNumber > 0 )
6104  {
6105  if( PlotOption == fAllXtalsInStinPlot )
6106  {
6107  Int_t StexStin_A = n1StexStin;
6108  if( fFlagSubDet == "EE" )
6109  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6110 
6111  Bool_t aOKData = kFALSE;
6112  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6113 
6114  if( arg_AlreadyRead == fTobeRead )
6115  {
6121 
6122  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6123  {
6124  fStatusFileFound = kTRUE;
6125  read_histo = fMyRootFile->ReadSampleMeans(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6126  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6127  }
6128  else
6129  {
6130  fStatusFileFound = kFALSE;
6131  std::cout << "!TEcnaHistos::EvSamplesXtals(...)> Data not available (ROOT file not found)." << std::endl;
6132  }
6133  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6134  }
6135  if( arg_AlreadyRead >= 1 )
6136  {
6137  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6138  fStatusDataExist = kTRUE;
6139  aOKData = kTRUE;
6140  }
6141  if( aOKData == kTRUE )
6142  {
6143  TVectorD read_histo_samps(fFapNbOfSamples);
6144 
6145  Int_t xAlreadyRead = 1;
6146  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6147  {
6148  if( fFapStexName == "SM" )
6149  {std::cout << "*TEcnaHistos::EvSamplesXtals(...)> channel " << std::setw(2) << i0_stin_echa << ": ";}
6150  if( fFapStexName == "Dee" )
6151  {std::cout << "*TEcnaHistos::EvSamplesXtals(...)> Xtal " << std::setw(2) << i0_stin_echa+1 << ": ";}
6152 
6153  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6154  {
6155  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6156  std::cout << std::setprecision(4) << std::setw(8) << read_histo_samps(i0_samp) << ", " ;
6157  }
6158  std::cout << std::endl;
6159  ViewHisto(read_histo_samps, xAlreadyRead,
6160  StexStin_A, i0_stin_echa, fZerv, "D_MSp_SpDs", fAllXtalsInStinPlot);
6161  xAlreadyRead++;
6162  }
6163  xAlreadyRead = 0;
6164  }
6165  else
6166  {
6167  std::cout << "!TEcnaHistos::EvSamplesXtals(...)> Data not available." << std::endl;
6168  }
6169  }
6170 
6171  if( !(PlotOption == fAllXtalsInStinPlot) )
6172  {
6173  Int_t StexStin_A = n1StexStin;
6174  if( fFlagSubDet == "EE" )
6175  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6176  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_MSp_SpDs", PlotOption);
6177  }
6178  }
6179  else
6180  {
6181  std::cout << "!TEcnaHistos::EvSamplesXtals(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6182  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << std::endl;
6183  }
6184 } // end of EvSamplesXtals(...)
6185 
6186 //======================== D_SSp_SpNb
6187 void TEcnaHistos::XtalSamplesSigma(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6188  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6189 {XtalSamplesSigma(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6190 void TEcnaHistos::XtalSamplesSigma(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6191  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6192  const TString& PlotOption)
6193 {
6194  if( fFapStexNumber > 0 )
6195  {
6196  if( PlotOption == fAllXtalsInStinPlot )
6197  {
6198  Int_t StexStin_A = n1StexStin;
6199  if( fFlagSubDet == "EE" )
6200  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6201 
6202  Bool_t aOKData = kFALSE;
6203  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6204 
6205  if( arg_AlreadyRead == fTobeRead )
6206  {
6212 
6213  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6214  {
6215  fStatusFileFound = kTRUE;
6216  read_histo = fMyRootFile->ReadSampleSigmas(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6217  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6218  }
6219  else
6220  {
6221  fStatusFileFound = kFALSE;
6222  std::cout << "!TEcnaHistos::XtalSamplesSigma(...)> Data not available (ROOT file not found)." << std::endl;
6223  }
6224  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6225  }
6226  if( arg_AlreadyRead >= 1 )
6227  {
6228  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6229  fStatusDataExist = kTRUE;
6230  aOKData = kTRUE;
6231  }
6232  if( aOKData == kTRUE )
6233  {
6234  TVectorD read_histo_samps(fFapNbOfSamples);
6235 
6236  Int_t xAlreadyRead = 1;
6237  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6238  {
6239  if( fFapStexName == "SM" )
6240  {std::cout << "*TEcnaHistos::XtalSamplesSigma(...)> channel " << std::setw(2) << i0_stin_echa << ": ";}
6241  if( fFapStexName == "Dee" )
6242  {std::cout << "*TEcnaHistos::XtalSamplesSigma(...)> Xtal " << std::setw(2) << i0_stin_echa+1 << ": ";}
6243 
6244  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6245  {
6246  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6247  std::cout << std::setprecision(3) << std::setw(6) << read_histo_samps(i0_samp) << ", " ;
6248  }
6249  std::cout << std::endl;
6250  ViewHisto(read_histo_samps, xAlreadyRead,
6251  StexStin_A, i0StinEcha, fZerv, "D_SSp_SpNb", fAllXtalsInStinPlot);
6252  xAlreadyRead++;
6253  }
6254  xAlreadyRead = 0;
6255  }
6256  else
6257  {
6258  std::cout << "!TEcnaHistos::XtalSamplesSigma(...)> Data not available." << std::endl;
6259  }
6260  }
6261 
6262  if( !(PlotOption == fAllXtalsInStinPlot) )
6263  {
6264  Int_t StexStin_A = n1StexStin;
6265  if( fFlagSubDet == "EE" )
6266  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6267  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_SSp_SpNb", PlotOption);
6268  }
6269  }
6270  else
6271  {
6272  std::cout << "!TEcnaHistos::XtalSamplesSigma(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6273  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << std::endl;
6274  }
6275 }
6276 
6277 
6278 //======================== D_SSp_SpDs
6279 void TEcnaHistos::SigmaSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6280  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6281 {SigmaSamplesXtals(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6282 void TEcnaHistos::SigmaSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6283  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6284  const TString& PlotOption)
6285 {
6286  if( fFapStexNumber > 0 )
6287  {
6288  if( PlotOption == fAllXtalsInStinPlot )
6289  {
6290  Int_t StexStin_A = n1StexStin;
6291  if( fFlagSubDet == "EE" )
6292  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6293 
6294  Bool_t aOKData = kFALSE;
6295  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6296 
6297  if( arg_AlreadyRead == fTobeRead )
6298  {
6304  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6305  {
6306  fStatusFileFound = kTRUE;
6307  read_histo = fMyRootFile->ReadSampleSigmas(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6308  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6309  }
6310  else
6311  {
6312  fStatusFileFound = kFALSE;
6313  std::cout << "!TEcnaHistos::SigmaSamplesXtals(...)> Data not available (ROOT file not found)." << std::endl;
6314  }
6315  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6316  }
6317 
6318  if( arg_AlreadyRead >= 1 )
6319  {
6320  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6321  fStatusDataExist = kTRUE;
6322  aOKData = kTRUE;
6323  }
6324  if( aOKData == kTRUE )
6325  {
6326  TVectorD read_histo_samps(fFapNbOfSamples);
6327 
6328  Int_t xAlreadyRead = 1;
6329  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6330  {
6331  if( fFapStexName == "SM" )
6332  {std::cout << "*TEcnaHistos::SigmaSamplesXtals(...)> channel " << std::setw(2) << i0_stin_echa << ": ";}
6333  if( fFapStexName == "Dee" )
6334  {std::cout << "*TEcnaHistos::SigmaSamplesXtals(...)> Xtal " << std::setw(2) << i0_stin_echa+1 << ": ";}
6335 
6336  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6337  {
6338  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6339  std::cout << std::setprecision(3) << std::setw(6) << read_histo_samps(i0_samp) << ", " ;
6340  }
6341  std::cout << std::endl;
6342  ViewHisto(read_histo_samps, xAlreadyRead,
6343  StexStin_A, i0StinEcha, fZerv, "D_SSp_SpDs", fAllXtalsInStinPlot);
6344  xAlreadyRead++;
6345  }
6346  xAlreadyRead = 0;
6347  }
6348  else
6349  {
6350  std::cout << "!TEcnaHistos::SigmaSamplesXtals(...)> Data not available." << std::endl;
6351  }
6352  }
6353 
6354  if( !(PlotOption == fAllXtalsInStinPlot) )
6355  {
6356  Int_t StexStin_A = n1StexStin;
6357  if( fFlagSubDet == "EE" )
6358  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6359  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_SSp_SpDs", PlotOption);
6360  }
6361  }
6362  else
6363  {
6364  std::cout << "!TEcnaHistos::SigmaSamplesXtals(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6365  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << std::endl;
6366  }
6367 } // end of SigmaSamplesXtals(...)
6368 
6369 //==========================================================================================
6370 //
6371 // ViewHisto
6372 //
6373 // arg_read_histo = array containing the values
6374 // arg_AlreadyRead = histo flag: =1 => arg_read_histo exists,
6375 // =0 => values will be read by internal
6376 // call to TEcnaRead inside ViewHisto
6377 // StexStin_A = [1,68] or [1,150] ==> tower# if EB, SC# if EE
6378 // i0StinEcha = [0,24] = Electronic channel# in tower (if EB) or SC (if EE)
6379 // i0Sample = [0,9] = sample#
6380 // HistoCode = String for histo type (pedestal, total noise, mean cor(s,s), ...)
6381 // opt_plot_arg = String for plot option (SAME or not SAME)
6382 //
6383 //===========================================================================================
6384 void TEcnaHistos::ViewHisto(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6385  const Int_t& StexStin_A, const Int_t& i0StinEcha,
6386  const Int_t& i0Sample, const TString& HistoCode,
6387  const TString& opt_plot_arg)
6388 {
6389  //Histogram of the quantities (one run)
6390 
6391  TString opt_plot = opt_plot_arg;
6392  fPlotAllXtalsInStin = 0;
6393 
6394  if( opt_plot_arg == fAllXtalsInStinPlot ){opt_plot = fOnlyOnePlot; fPlotAllXtalsInStin = 1;}
6395 
6396  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
6397 
6398  Int_t OKHisto = 0;
6399 
6400  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Canvas already closed in option SAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6401  Int_t xCanvasExists = 1; // a priori ==> Canvas exists // (ViewHisto)
6402  if( opt_plot != fOnlyOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6403  {
6404  TVirtualPad* main_subpad = nullptr;
6405  //---------------- Call to ActivePad
6406  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
6407  if( main_subpad == nullptr )
6408  {
6409  std::cout << "*TEcnaHistos::ViewHisto(...)> WARNING ===> Canvas has been closed in option SAME or SAME n."
6410  << std::endl
6411  << " Please, restart with a new canvas."
6412  << fTTBELL << std::endl;
6413 
6414  ReInitCanvas(HistoCode, opt_plot);
6415  xCanvasExists = 0;
6416  }
6417  }
6418  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6419 
6420  //%%%%%%%%%%%%%%%%%%%%%%%% Change of X variable in option SAME n with no proj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6421  Int_t SameXVarMemo = 1; // a priori ==> SAME n option: X variable OK (ViewHisto)
6422  if( !(HistoType == "Proj" || HistoType == "SampProj" || HistoType == "EvolProj") &&
6423  !(arg_AlreadyRead >= 1) )
6424  {
6425  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6426  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6427  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
6428  {
6429  SetXVarMemo(HistoCode, opt_plot, XVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameXVarMemo = 1;
6430  }
6431  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6432  {
6433  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
6434  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
6435 
6436  if( XVarHisto != XVariableMemo )
6437  {
6438  std::cout << "!TEcnaHistos::ViewHisto(...)> *** ERROR *** ===> X coordinate changed in option SAME n." << std::endl
6439  << " Present X = " << XVarHisto << std::endl
6440  << " Present Y = " << YVarHisto << std::endl
6441  << " Previous X = " << XVariableMemo << std::endl
6442  << " Previous Y = " << YVariableMemo
6443  << fTTBELL << std::endl;
6444  SameXVarMemo = 0;
6445  }
6446  else
6447  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
6448  }
6449  }
6450  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6451 
6452  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Change of Y variable in option SAME n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6453  Int_t SameYVarMemo = 1; // a priori ==> SAME n option: Y variable OK (ViewHisto)
6454  if( (HistoType == "Proj" || HistoType == "SampProj" || HistoType == "EvolProj") &&
6455  !(arg_AlreadyRead >= 1) )
6456  {
6457  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6458  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6459  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
6460  {
6461  SetYVarMemo(HistoCode, opt_plot, YVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameYVarMemo = 1;
6462  }
6463  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6464  {
6465  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
6466  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
6467 
6468  if( YVarHisto != YVariableMemo )
6469  {
6470  std::cout << "!TEcnaHistos::ViewHisto(...)> *** ERROR *** ===> Y coordinate changed in option SAME n." << std::endl
6471  << " Present X = " << XVarHisto << std::endl
6472  << " Present Y = " << YVarHisto << std::endl
6473  << " Previous X = " << XVariableMemo << std::endl
6474  << " Previous Y = " << YVariableMemo
6475  << fTTBELL << std::endl;
6476  SameYVarMemo = 0;
6477  }
6478  else
6479  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
6480  }
6481  }
6482  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6483 
6484  //%%%%%%%%%%%%%%%%%%%%%%%%%%% Number of bins change in option SAME or SAME n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6485  Int_t OkBinsMemoSameOne = 1; // a priori ==> SAME n option: Nb bins OK (ViewHisto)
6486 
6487  Int_t SizeForPlot = GetHistoSize(HistoCode.Data(), "plot");
6488  Int_t xNbBins = GetHistoNumberOfBins(HistoCode.Data(), SizeForPlot);
6489 
6490  if( (opt_plot == fSameOnePlot || opt_plot == fSeveralPlot) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
6491  {
6492  SetNbBinsMemo(HistoCode, opt_plot, xNbBins); OkBinsMemoSameOne = 1;
6493  }
6494 
6495  if( (opt_plot == fSameOnePlot || opt_plot == fSeveralPlot) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6496  {
6497  Int_t NbBinsMemo = GetNbBinsFromMemo(HistoCode, opt_plot);
6498  if( xNbBins != NbBinsMemo )
6499  {
6500  std::cout << "!TEcnaHistos::ViewHisto(...)> *** ERROR *** ===> Number of bins changed in option SAME or SAME n."
6501  << " Present number = " << xNbBins << ", requested number = " << NbBinsMemo << fTTBELL << std::endl;
6502  OkBinsMemoSameOne = 0;
6503  }
6504  }
6505 
6506  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6507 
6508  if( xCanvasExists == 1 && SameXVarMemo == 1 && SameYVarMemo == 1 && OkBinsMemoSameOne == 1 ){OKHisto = 1;}
6509 
6510  //======================== Histo accepted (ViewHisto)
6511  if( OKHisto == 1 )
6512  {
6513  Int_t opt_scale_x = fOptScaleLinx;
6514  if (fFlagScaleX == "LIN" ){opt_scale_x = fOptScaleLinx;}
6515  if (fFlagScaleX == "LOG" ){opt_scale_x = fOptScaleLogx;}
6516 
6517  Int_t opt_scale_y = fOptScaleLiny;
6518  if (fFlagScaleY == "LIN" ){opt_scale_y = fOptScaleLiny;}
6519  if (fFlagScaleY == "LOG" ){opt_scale_y = fOptScaleLogy;}
6520 
6522  TString fp_name_short = " ";
6523 
6524  //-------------------- read_histo size
6525  Int_t SizeForRead = GetHistoSize(HistoCode.Data(), "read");
6526 
6527  //............................................... allocation/init_histo
6528  TVectorD histo_for_plot(SizeForPlot);
6529  for(Int_t i=0; i<SizeForPlot; i++){histo_for_plot[i]=(Double_t)0;}
6530 
6531  TVectorD histo_for_plot_memo(SizeForPlot);
6532  for(Int_t i=0; i<SizeForPlot; i++){histo_for_plot_memo[i]=(Double_t)0;}
6533 
6534  Int_t i_data_exist = 0;
6535  Int_t OKPlot = 0;
6536 
6537  //------------------------------------- histos Global, (Global)Proj, SampGlobal and SampProj
6538  if( HistoType == "Global" || HistoType == "Proj" || HistoType == "SampGlobal" ||
6539  HistoType == "SampProj" )
6540  {
6541  if( fFapStexNumber == 0 )
6542  {
6543  Bool_t ok_view_histo = kFALSE;
6544 
6545  //--------------------------------------------------------------------- Stas Histo (ViewHisto)
6546  Int_t CounterExistingFile = 0;
6547  Int_t CounterDataExist = 0;
6548 
6549  Int_t* xFapNbOfEvts = new Int_t[fEcal->MaxStexInStas()]; fCnew++;
6550  for(Int_t i=0; i<fEcal->MaxStexInStas(); i++){xFapNbOfEvts[i]=0;}
6551 
6552  //Int_t* NOFE_int = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
6553 
6554  for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
6555  {
6556  Bool_t OKFileExists = kFALSE;
6557  Bool_t ok_data_exists = kFALSE;
6558 
6559  TVectorD read_histo(fEcal->MaxStinEcnaInStex());
6560  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){read_histo(i)=(Double_t)0.;}
6561 
6562  if( arg_AlreadyRead == 0 )
6563  {
6564  //----------------------------------------------------------------------------- file reading
6566  Int_t n1StasStex = iStasStex+1;
6570  n1StasStex, fCfgResultsRootFilePath.Data());
6571 
6572  if( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;} // (ViewHisto, Stas)
6573  if( OKFileExists == kTRUE )
6574  {
6575  xFapNbOfEvts[iStasStex] = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, n1StasStex);
6576  fp_name_short = fMyRootFile->GetRootFileNameShort();
6577  // std::cout << "*TEcnaHistos::ViewHisto(...)> Data are analyzed from file ----> "
6578  // << fp_name_short << std::endl;
6579  //....................... search for first and last dates
6580  if( iStasStex == 0 )
6581  {
6586  }
6587 
6588  time_t xStartTime = fMyRootFile->GetStartTime();
6589  time_t xStopTime = fMyRootFile->GetStopTime();
6590  TString xStartDate = fMyRootFile->GetStartDate();
6591  TString xStopDate = fMyRootFile->GetStopDate();
6592 
6593  if( xStartTime < fStartTime ){fStartTime = xStartTime; fStartDate = xStartDate;}
6594  if( xStopTime > fStopTime ){fStopTime = xStopTime; fStopDate = xStopDate;}
6595 
6597  ok_view_histo =
6598  GetOkViewHisto(fMyRootFile, StexStin_A, i0StinEcha, i0Sample, HistoCode.Data());
6599 
6600  if( ok_view_histo == kTRUE )
6601  {
6602  //............................................... histo reading (ViewHisto, Stas)
6603  if( HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" ){
6605  if( HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" ){
6607  if( HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs" ){
6609  if( HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" ){
6611  if( HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" ){
6613  if( HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" ){
6615  if( HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" ){
6617  if( fMyRootFile->DataExist() == kTRUE ){ok_data_exists = kTRUE;}
6618  }
6619  }
6620  }
6621 
6622  if( arg_AlreadyRead >= 1 )
6623  {
6624  ok_data_exists = kTRUE;
6625  for(Int_t i0Stin=0; i0Stin<fEcal->MaxStinEcnaInStex(); i0Stin++ )
6626  {read_histo(i0Stin) = arg_read_histo(fEcal->MaxStinEcnaInStex()*iStasStex+i0Stin);}
6627  }
6628 
6629  if( ok_data_exists == kTRUE )
6630  {
6631  fStatusFileFound = kTRUE;
6632  CounterExistingFile++;
6633 
6634 
6635  //...........................................................
6636  if( ok_data_exists == kTRUE )
6637  {
6638  fStatusDataExist = kTRUE;
6639  CounterDataExist++;
6640 
6641  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
6642  {
6643  //Int_t n1StexStinEcna = i0StexStinEcna+1;
6644  //-------------------------------------- Stas histo filling (ViewHisto, Stas)
6645  Int_t i_xgeo = -1;
6646  //...................................... EB
6647  if( fFlagSubDet == "EB" )
6648  {
6649  i_xgeo = iStasStex*fEcal->MaxStinEcnaInStex() + i0StexStinEcna;
6650  if( i_xgeo >= 0 && i_xgeo < SizeForPlot )
6651  {
6652  histo_for_plot[i_xgeo] = read_histo[i0StexStinEcna];
6653  }
6654  else
6655  {
6656  std::cout << "!TEcnaHistos::ViewHisto(...)> <EB> i_xgeo = " << i_xgeo
6657  << ". OUT OF RANGE ( range = [0,"<< SizeForPlot << "] " << std::endl;
6658  }
6659  }
6660  //...................................... EE (ViewHisto)
6661  //-------> Dee order: D4, D3, D2, D1
6662  if( fFlagSubDet == "EE" )
6663  {
6664  Int_t DeeOffset = 0;
6665  Int_t DSOffset = 0;
6666 
6667  Int_t DeeNumber = iStasStex+1;
6668  Int_t n1DeeSCEcna = i0StexStinEcna+1;
6669 
6670  //................................................ Dee offset
6671  if( DeeNumber == 3 ){DeeOffset += fEcal->MaxSCForConsInDee();} // 149
6672  if( DeeNumber == 2 ){DeeOffset += 3*fEcal->MaxSCForConsInDee()-1;} // 446
6673  if( DeeNumber == 1 ){DeeOffset += 4*fEcal->MaxSCForConsInDee()-1;} // 595
6674 
6675  //................................................ Data Sector offset (ViewHisto, Stas)
6676  Int_t StexDataSector = fEcalNumbering->GetDSFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
6677  //.... returns 0 if n1DeeSCEcna corresponds to an empty "ECNA-SC"
6678 
6679  //................................................ SC final coordinate (ViewHisto, Stas)
6680  Int_t StexDSStin = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
6681  //--> return StexDSStin = 25 (not 3) for n1DeeSCEcna = 32
6682  //--> return StexDSStin = 14 (not 21) for n1DeeSCEcna = 29
6683  //--> return StexDSStin = -1 for n1DeeSCEcna = 10 and n1DeeSCEcna = 11
6684 
6685  if( StexDataSector >= 1 && StexDataSector <= 9 )
6686  {
6687  if( DeeNumber == 4 ) // Sectors 1,2,3,4,5a
6688  {
6689  for(Int_t is=2; is<=5; is++)
6690  { if( StexDataSector >= is )
6691  {Int_t ism = is-1; DSOffset += fEcalNumbering->GetMaxSCInDS(ism);}}
6692  }
6693 
6694  if( DeeNumber == 3 ) // Sectors 5b,6,7,8,9
6695  {
6696  if( StexDataSector >= 6 )
6697  {DSOffset += fEcalNumbering->GetMaxSCInDS(5)/2;}
6698  for(Int_t is=7; is<=9; is++)
6699  { if( StexDataSector >= is )
6700  {Int_t ism = is-1; DSOffset += fEcalNumbering->GetMaxSCInDS(ism);}}
6701  }
6702 
6703  if( DeeNumber == 2 ) // Sectors 9,8,7,6,5a
6704  {
6705  if( StexDataSector >= 6 )
6706  {DSOffset -= fEcalNumbering->GetMaxSCInDS(5)/2;}
6707  for(Int_t is=7; is<=9; is++)
6708  {if( StexDataSector >= is )
6709  {Int_t ism = is-1; DSOffset -= fEcalNumbering->GetMaxSCInDS(ism);}}
6710  }
6711 
6712  if( DeeNumber == 1 ) // Sectors 5b,4,3,2,1
6713  {
6714  for(Int_t is=2; is<=5; is++)
6715  { if( StexDataSector >= is )
6716  {Int_t ism = is-1; DSOffset -= fEcalNumbering->GetMaxSCInDS(ism);}}
6717  }
6718 
6719  if( StexDSStin >=1 && StexDSStin <= fEcalNumbering->GetMaxSCInDS(StexDataSector) )
6720  {
6721  if( DeeNumber == 4 ) // Sectors 1,2,3,4,5a
6722  {
6723  if(StexDataSector != 5)
6724  {i_xgeo = DeeOffset + DSOffset + (StexDSStin - 1);}
6725  if( StexDataSector == 5)
6726  {i_xgeo = DeeOffset + DSOffset + (StexDSStin - 1);}
6727  }
6728  if( DeeNumber == 3 ) // Sectors 5b,6,7,8,9
6729  {
6730  if(StexDataSector != 5)
6731  {i_xgeo = DeeOffset + DSOffset + (StexDSStin - 1);}
6732  if( StexDataSector == 5)
6733  {i_xgeo = DeeOffset + DSOffset + (StexDSStin-17) - 1;}
6734  }
6735  if( DeeNumber == 2 ) // Sectors 5a,6,7,8,9
6736  {
6737  if(StexDataSector != 5)
6738  {i_xgeo = DeeOffset + DSOffset
6739  - fEcalNumbering->GetMaxSCInDS(StexDataSector) + StexDSStin;}
6740  if( StexDataSector == 5)
6741  {i_xgeo = DeeOffset + DSOffset
6742  - fEcalNumbering->GetMaxSCInDS(StexDataSector)/2 + StexDSStin;}
6743  }
6744  if( DeeNumber == 1 ) // Sectors 1,2,3,4,5b
6745  {
6746  if(StexDataSector != 5)
6747  {i_xgeo = DeeOffset + DSOffset
6748  - fEcalNumbering->GetMaxSCInDS(StexDataSector) + StexDSStin;}
6749  if( StexDataSector == 5)
6750  {i_xgeo = DeeOffset + DSOffset
6751  - fEcalNumbering->GetMaxSCInDS(StexDataSector)/2 +(StexDSStin-17);}
6752  }
6753 
6754  }// end of if(StexDSStin >=1 && StexDSStin <= fEcalNumbering->GetMaxSCInDS(StexDataSector))
6755  else
6756  {
6757  std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> StexDSStin = " << StexDSStin
6758  << ". OUT OF RANGE ( range = [1,"
6759  << fEcalNumbering->GetMaxSCInDS(StexDataSector)
6760  << "]. DeeNumber = " << DeeNumber
6761  << ", n1DeeSCEcna = " << n1DeeSCEcna
6762  << ", StexDataSector = " << StexDataSector
6763  << ", i_xgeo = " << i_xgeo << std::endl;
6764  }
6765  }// end of if( StexDataSector >= 1 && StexDataSector <= 9 )
6766  else
6767  {
6768  //std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> StexDataSector = " << StexDataSector
6769  // << ". OUT OF RANGE ( range = [1,9]. DeeNumber = " << DeeNumber
6770  // << ", n1DeeSCEcna = " << n1DeeSCEcna
6771  // << ", i_xgeo = " << i_xgeo << std::endl;
6772  }
6773  //......................................... transfert read_histo -> histo_for_plot
6774  if( i_xgeo >= -1 && i_xgeo < SizeForPlot )
6775  {
6776  // special treatement for not connected & mixed SC's
6777  if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 || // 261a, 207c, 268a, 178c
6778  // [ 14a, 25c, 21a, 3c]
6779  n1DeeSCEcna == 144 || n1DeeSCEcna == 165 || // 261c, 261b [14c, 14b]
6780  n1DeeSCEcna == 176 || n1DeeSCEcna == 193 || // 207a, 207b [25a, 25b]
6781  n1DeeSCEcna == 60 || n1DeeSCEcna == 119 || // 182a, 182b [30a, 30b]
6782  n1DeeSCEcna == 102 || n1DeeSCEcna == 123 || // 268c, 268b [21c, 21b]
6783  n1DeeSCEcna == 138 || n1DeeSCEcna == 157 ) // 178a, 178b [ 3a, 3b]
6784  {
6785  //--------------- DSSC 14
6786  if( n1DeeSCEcna == 29 && i_xgeo >= 0 )
6787  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna]/(Double_t)5.;}
6788  if( (n1DeeSCEcna == 144 || n1DeeSCEcna == 165) && i_xgeo >= 0 )
6789  {histo_for_plot[i_xgeo] +=
6790  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)25.;}
6791 
6792  //--------------- DSSC 25
6793  if( n1DeeSCEcna == 32 && i_xgeo >= 0 )
6794  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna]/(Double_t)5.;}
6795  if( (n1DeeSCEcna == 176 || n1DeeSCEcna == 193) && i_xgeo >= 0 )
6796  {histo_for_plot[i_xgeo] +=
6797  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)25.;}
6798 
6799  //--------------- DSSC 30
6800  if( (n1DeeSCEcna == 60 || n1DeeSCEcna == 119) && i_xgeo >= 0 )
6801  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna]/(Double_t)2.;}
6802 
6803  //--------------- DSSC 21 (Add SC translated at 10-1 only once, i_xgeo = -1 accepted)
6804  if( n1DeeSCEcna == 102 )
6805  {histo_for_plot[i_xgeo] += read_histo[9]/(Double_t)21.
6806  + read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6807  if( n1DeeSCEcna == 123 && i_xgeo >= 0 )
6808  {histo_for_plot[i_xgeo] +=
6809  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6810 
6811  //--------------- DSSC 3 (Add SC translated at 11-1 only once, i_xgeo = -1 accepted)
6812  if( n1DeeSCEcna == 138 )
6813  {histo_for_plot[i_xgeo] += read_histo[10]/(Double_t)21.
6814  + read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6815  if( n1DeeSCEcna == 157 && i_xgeo >= 0 )
6816  {histo_for_plot[i_xgeo] +=
6817  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6818  }
6819  else
6820  {
6821  if( i_xgeo >= 0 )
6822  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna];} // standard treatment
6823  }
6824  } // end of if( i_xgeo >= -1 && i_xgeo < SizeForPlot )
6825  else
6826  {
6827  //std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> i_xgeo = " << i_xgeo
6828  // << ". OUT OF RANGE ( range = [0,"<< SizeForPlot << "] " << std::endl;
6829  }
6830  }// end of if( fFlagSubDet == "EE" )
6831  }// end of for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
6832  }
6833  else
6834  {
6835  std::cout << "!TEcnaHistos::ViewHisto(...)> "
6836  << " Data not available for " << fFapStexName << " " << iStasStex+1
6837  << " (Quantity not present in the ROOT file)" << std::endl;
6838  }
6839  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE ) (ViewHisto/Stas)
6840  else
6841  {
6842  fStatusFileFound = kFALSE;
6843 
6844  std::cout << "!TEcnaHistos::ViewHisto(...)> "
6845  << " Data not available for " << fFapStexName << " " << iStasStex+1
6846  << " (ROOT file not found)" << std::endl;
6847  }
6848 
6849  if( fFapNbOfEvts <= xFapNbOfEvts[iStasStex] ){fFapNbOfEvts = xFapNbOfEvts[iStasStex];}
6850 
6851  } // end of for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
6852 
6853  //delete [] NOFE_int; NOFE_int = 0; fCdelete++;
6854  delete [] xFapNbOfEvts; xFapNbOfEvts = nullptr; fCdelete++;
6855 
6856  if( CounterExistingFile > 0 && CounterDataExist > 0 ){OKPlot = 1;}
6857 
6858  } // end of if( fFapStexNumber == 0 )
6859 
6860  //---------------------------------------------------------------------------- (ViewHisto [Stex])
6861 
6862  if( fFapStexNumber > 0 )
6863  {
6864  Bool_t OKFileExists = kFALSE ;
6865  Bool_t ok_view_histo = kFALSE;
6866 
6867  if( arg_AlreadyRead == 0 )
6868  {
6874 
6875  if ( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;} // (ViewHisto, Stex)
6876 
6877  if( OKFileExists == kTRUE )
6878  {
6880  fp_name_short = fMyRootFile->GetRootFileNameShort();
6881  // std::cout << "*TEcnaHistos::ViewHisto(...)> Data are analyzed from file ----> "
6882  // << fp_name_short << std::endl;
6883 
6887 
6888  ok_view_histo =
6889  GetOkViewHisto(fMyRootFile, StexStin_A, i0StinEcha, i0Sample, HistoCode.Data());
6890  }
6891  }
6892 
6893  if( arg_AlreadyRead >= 1 )
6894  {
6895  OKFileExists = kTRUE; ok_view_histo = kTRUE;
6896  }
6897 
6898  if( OKFileExists == kTRUE )
6899  {
6900  fStatusFileFound = kTRUE;
6901  //---------------------------------------------------------------------------- (ViewHisto [Stex])
6902 
6903  if( ok_view_histo == kTRUE )
6904  {
6905  //------------ EB or EE with SampGlobal or SampProj (histo_for_plot = read_histo)
6906  if( fFlagSubDet == "EB" ||
6907  ( fFlagSubDet == "EE" && ( HistoType == "SampGlobal" || HistoType == "SampProj" ) ) )
6908  {
6909  histo_for_plot = GetHistoValues(arg_read_histo, arg_AlreadyRead, fMyRootFile, HistoCode.Data(),
6910  SizeForPlot, SizeForRead,
6911  StexStin_A, i0StinEcha, i0Sample, i_data_exist);
6912  if( i_data_exist > 0 ){OKPlot = 1;}
6913  if( OKPlot == 1 && opt_plot == "ASCII" && ( HistoType == "Global" || HistoType == "Proj" ) )
6914  {WriteHistoAscii(HistoCode.Data(), SizeForPlot, histo_for_plot);}
6915  }
6916 
6917  //------------ EE except for SampGlobal and SampProj) (histo_for_plot # read_histo)
6918  if( fFlagSubDet == "EE" && !( HistoType == "SampGlobal" || HistoType == "SampProj" ) )
6919  {
6920  TVectorD read_histo(SizeForRead);
6921  for(Int_t i=0; i<SizeForRead; i++){read_histo(i)=(Double_t)0.;}
6922 
6923  read_histo = GetHistoValues(arg_read_histo, arg_AlreadyRead, fMyRootFile, HistoCode.Data(),
6924  SizeForRead, SizeForRead,
6925  StexStin_A, i0StinEcha, i0Sample, i_data_exist);
6926  if( i_data_exist > 0 ){OKPlot = 1;}
6927  if( OKPlot == 1 && opt_plot == "ASCII" )
6928  {
6929  WriteHistoAscii(HistoCode.Data(), fEcal->MaxCrysEcnaInDee(), read_histo);
6930  }
6931  if( OKPlot == 1 && opt_plot != "ASCII" )
6932  {
6933  //..................... Build histo_for_plot from read_histo (ViewHisto [Stex])
6934  Int_t DeeNumber = fFapStexNumber;
6935  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
6936 
6937  //%%%%%%%%%%%%%%%%%%%%%%%%%%%% LOOP ON Echa (Ecna) %%%%%%%%%%%%%%%%%%%%%%%%%% (ViewHisto [Stex])
6938  for(Int_t i0DeeEcha=0; i0DeeEcha<fEcal->MaxCrysEcnaInDee(); i0DeeEcha++)
6939  {
6940  Int_t n1SCEcha = fEcalNumbering->Get1SCEchaFrom0DeeEcha(i0DeeEcha);
6941  Int_t n1DeeSCEcna = i0DeeEcha/fEcal->MaxCrysInSC()+1;
6942 
6943  Int_t DataSector = fEcalNumbering->GetDSFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
6944  Int_t SC_in_DS = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna, n1SCEcha);
6945 
6946  Int_t i_xgeo = -1;
6947 
6948  if( n1SCEcha >= 1 && n1SCEcha <= fEcal->MaxCrysInSC() )
6949  {
6950  if( n1DeeSCEcna >= 1 && n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
6951  {
6952  if( DataSector >= 1 && DataSector <= 9 )
6953  {
6954  if( SC_in_DS >= 1 && SC_in_DS <= fEcalNumbering->GetMaxSCInDS(DataSector) )
6955  {
6956  if( read_histo[i0DeeEcha] != 0 )
6957  {
6958  //................................... Data Sector offset
6959  Int_t DSOffset = GetDSOffset(DeeNumber, DataSector);
6960 
6961  //........................ Super-Crystal (SC) offset (ViewHisto [Stex])
6962  Int_t SCOffset = GetSCOffset(DeeNumber, DataSector, SC_in_DS);
6963 
6964  //........................ Xtal final bin
6965  Int_t nSCCons = fEcalNumbering->
6966  GetDeeSCConsFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna, n1SCEcha);
6967 
6968  Int_t n1FinalSCEcha = n1SCEcha;
6969 
6970  if( fEcalNumbering->GetSCType(nSCCons) == "NotConnected" ||
6971  fEcalNumbering->GetSCType(nSCCons) == "NotComplete" )
6972  { //----- not complete and not connected SC's
6973  // no i_xgeo value if SC = 14 or 25 and channel 11
6974  if( !( (SC_in_DS == 14 || SC_in_DS == 25 ) && n1SCEcha == 11 ) )
6975  {
6976  n1FinalSCEcha =
6977  ModifiedSCEchaForNotConnectedSCs(DeeNumber, nSCCons, SC_in_DS,
6978  n1DeeSCEcna, n1SCEcha);
6979  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
6980  }
6981  // change SC 14 -> 21 and channel 11 -> 21
6982  if( SC_in_DS == 14 && n1SCEcha == 11 )
6983  {
6984  SCOffset = GetSCOffset(DeeNumber, DataSector, 21);
6985  n1FinalSCEcha = 21;
6986  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
6987  }
6988  // change SC 25 -> 3 for channel 11 -> 21
6989  if( SC_in_DS == 25 && n1SCEcha == 11 )
6990  {
6991  SCOffset = GetSCOffset(DeeNumber, DataSector, 3);
6992  n1FinalSCEcha = 21;
6993  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
6994  }
6995  }
6996  else
6997  { //----------- Complete SCs
6998  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
6999  }
7000 
7001  histo_for_plot_memo[i_xgeo]++;
7002  if( histo_for_plot_memo[i_xgeo] >= 2 )
7003  {
7004  std::cout << "! histo_memo[" << i_xgeo
7005  << "] = " << histo_for_plot_memo[i_xgeo]
7006  << ", nSCCons = " << nSCCons
7007  << ", SC_in_DS = " << SC_in_DS
7008  << ", DSOffset = " << DSOffset
7009  << ", SCOffset = " << SCOffset
7010  << ", n1DeeSCEcna = " << n1DeeSCEcna
7011  << ", n1SCEcha = " << n1SCEcha
7012  << ", n1FinalSCEcha = " << n1FinalSCEcha << std::endl;
7013  }
7014  //.............................. transfert read_histo -> histo_for_plot
7015  if( i_xgeo >= 0 && i_xgeo < SizeForPlot )
7016  {
7017  if( n1FinalSCEcha > 0 )
7018  {histo_for_plot[i_xgeo] += read_histo[i0DeeEcha];}
7019  }
7020  else
7021  {
7022  std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> i_xgeo = " << i_xgeo
7023  << ". OUT OF RANGE ( range = [0,"<< SizeForPlot << "] " << std::endl;
7024  }
7025  } // end of if( read_histo[i0DeeEcha] > 0 )
7026  } // end of if( SC_in_DS >= 1 && SC_in_DS <= fEcalNumbering->GetMaxSCInDS(DataSector) )
7027  else
7028  {
7029  std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> SC_in_DS = " << SC_in_DS
7030  << ". OUT OF RANGE ( range = [1,"
7031  << fEcalNumbering->GetMaxSCInDS(DataSector) << "] "
7032  << ", DataSector = " << DataSector
7033  << ", n1DeeSCEcna = " << n1DeeSCEcna
7034  << ", n1SCEcha = " << n1SCEcha
7035  << ", i0DeeEcha = " << i0DeeEcha
7036  << std::endl;
7037  }
7038  } // end of if( DataSector >= 1 && DataSector <= 9 )
7039  else
7040  {
7041  if( DataSector != 0 )
7042  {
7043  std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> DataSector = " << DataSector
7044  << ". OUT OF RANGE ( range = [1,9] "
7045  << ", n1DeeSCEcna = " << n1DeeSCEcna
7046  << ", n1SCEcha = " << n1SCEcha
7047  << ", i0DeeEcha = " << i0DeeEcha
7048  << std::endl;
7049  }
7050  }
7051  } // end of if( n1DeeSCEcna >= 1 && n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
7052  else
7053  {
7054  std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> n1DeeSCEcna = " << n1DeeSCEcna
7055  << ". OUT OF RANGE ( range = [1,"<< fEcal->MaxSCEcnaInDee() << "] "
7056  << ", n1SCEcha = " << n1SCEcha
7057  << ", i0DeeEcha = " << i0DeeEcha
7058  << std::endl;
7059  }
7060  } // end of if(n1SCEcha >= 1 && n1SCEcha <= fEcal->MaxCrysInSC() )
7061  else
7062  {
7063  std::cout << "!TEcnaHistos::ViewHisto(...)> <EE> n1SCEcha = " << n1SCEcha
7064  << ". OUT OF RANGE ( range = [1,"<< fEcal->MaxCrysInSC() << "] "
7065  << ", i0DeeEcha = " << i0DeeEcha
7066  << std::endl;
7067  }
7068  }
7069  } // end of if( OKPlot == 1 && opt_plot != "ASCII" )
7070  } // end of if(fFlagSubDet == "EE")
7071  } // end of if(ok_view_histo == kTRUE)
7072  else
7073  {
7074  std::cout << "!TEcnaHistos::ViewHisto(...)> *ERROR* =====> "
7075  << " ok_view_histo != kTRUE " << fTTBELL << std::endl;
7076  }
7077  } // end of if(fMyRootFile->LookAtRootFile() == kTRUE)
7078  else
7079  {
7080  fStatusFileFound = kFALSE;
7081 
7082  std::cout << "!TEcnaHistos::ViewHisto(...)> *ERROR* =====> "
7083  << " ROOT file not found" << fTTBELL << std::endl;
7084  }
7085  } // end of if(fFapStexNumber > 0)
7086  } // end of if( HistoType == "Global" || HistoType == "Proj" || HistoType == "SampGlobal" || HistoType == "SampProj" )
7087  else
7088  {
7089  //--------------------------------------------------------------------- not Global-Proj Histo
7090  if( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) )
7091  {
7092  Bool_t OKFileExists = kFALSE;
7093 
7094  if( !(arg_AlreadyRead > 1) )
7095  {
7101  OKFileExists = fMyRootFile->LookAtRootFile();
7102  if( OKFileExists == kTRUE ){fFapNbOfEvts = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);}
7103  }
7104  else
7105  {
7106  OKFileExists = kTRUE;
7107  }
7108 
7109  if( OKFileExists == kTRUE ) // (ViewHisto, not Global-Proj)
7110  {
7111  fStatusFileFound = kTRUE;
7112 
7113  for(Int_t i=0; i<SizeForPlot; i++){histo_for_plot[i]=(Double_t)0;}
7114 
7115  histo_for_plot = GetHistoValues(arg_read_histo, arg_AlreadyRead, fMyRootFile, HistoCode.Data(),
7116  SizeForPlot, SizeForRead,
7117  StexStin_A, i0StinEcha, i0Sample, i_data_exist);
7118 
7123 
7124  if( i_data_exist > 0 ){OKPlot = 1;}
7125  }
7126  else
7127  {
7128  std::cout << "!TEcnaHistos::ViewHisto(...)> *ERROR* =====> "
7129  << " ROOT file not found" << fTTBELL << std::endl;
7130  }
7131  }
7132  else
7133  {
7134  std::cout << "!TEcnaHistos::ViewHisto(...)> " << fFapStexName.Data()
7135  << " = " << fFapStexNumber << ". Out of range (range = [1,"
7136  << fEcal->MaxStexInStas() << "]) " << fTTBELL << std::endl;
7137  }
7138  }
7139 
7140  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PLOT accepted
7141 
7142  if( ( HistoType == "Global" || HistoType == "Proj" ||
7143  HistoType == "SampGlobal" || HistoType == "SampProj" ||
7144  HistoType == "H1Basic" || HistoType == "H1BasicProj" ) ||
7145  ( !( HistoType == "Global" || HistoType == "Proj" ||
7146  HistoType == "SampGlobal" || HistoType == "SampProj" ||
7147  HistoType == "H1Basic" || HistoType == "H1BasicProj" ) &&
7148  ( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) ) ) )
7149  {
7150  if( opt_plot != "ASCII" )
7151  {
7152  if( OKPlot > 0 )
7153  {
7154  //... Ymin and ymax default values will be taken if fFlagUserHistoMin/Max = "OFF"
7155  // and if "Free" for "SAME" and "SAME n" options
7156  if( (opt_plot == fOnlyOnePlot && ( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) ) ||
7157  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7158  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7159  {
7160  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
7161  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
7162  }
7163 
7164  //==== H I S T O P R O J X I N F / X S U P M A N A G E M E N T ======== (ViewHisto)
7165  //
7166  // must be done before booking because of the x <-> y permutation in case of "Proj"
7167  //
7168  //-----------------------------------------------------------------------------------------
7169  //
7170  // CASE: HistoType == "Proj" OR HistoType == "SampProj"
7171  //
7172  // Xinf and Xsup must be calculated from ymin and ymax
7173  // of the direct ("Global") histo
7174  //
7175  //-----------------------------------------------------------------------------------------
7176  if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" )
7177  {
7178  TString HistoCodi = HistoCode; // HistoCodi = direct histo
7179 
7180  if( HistoCode == "D_NOE_ChDs" ){HistoCodi = "D_NOE_ChNb";}
7181  if( HistoCode == "D_Ped_ChDs" ){HistoCodi = "D_Ped_ChNb";}
7182  if( HistoCode == "D_TNo_ChDs" ){HistoCodi = "D_TNo_ChNb";}
7183  if( HistoCode == "D_MCs_ChDs" ){HistoCodi = "D_MCs_ChNb";}
7184  if( HistoCode == "D_LFN_ChDs" ){HistoCodi = "D_LFN_ChNb";}
7185  if( HistoCode == "D_HFN_ChDs" ){HistoCodi = "D_HFN_ChNb";}
7186  if( HistoCode == "D_SCs_ChDs" ){HistoCodi = "D_SCs_ChNb";}
7187  if( HistoCode == "D_MSp_SpDs" ){HistoCodi = "D_MSp_SpNb";}
7188  if( HistoCode == "D_SSp_SpDs" ){HistoCodi = "D_SSp_SpNb";}
7189  if( HistoCode == "D_Adc_EvDs" ){HistoCodi = "D_Adc_EvNb";}
7190 
7191  TString TitleHisto = ";";
7192  if( opt_plot != fSameOnePlot )
7193  {TitleHisto = fCnaParHistos->GetQuantityName(HistoCodi);}
7194 
7195  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
7196 
7197  //--------------------------------------------------------------------------- (ViewHisto)
7198  //
7199  // fOnlyOnePlot => compute Xinf and Xsup at each time
7200  // fSeveralPlot => compute Xinf and Xsup once when flag = "Free" for each HistoCode
7201  // fSameOnePlot => compute Xinf and Xsup once
7202  //
7203  //--------------------------------------------------------------------------------------
7204  if( (opt_plot == fOnlyOnePlot && ( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) ) ||
7205  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, fSeveralPlot) == "Free" ) ||
7206  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, fSameOnePlot) == "Free" ) )
7207  {
7208  Double_t XinfProj =(Double_t)0;
7209  Double_t XsupProj =(Double_t)0;
7210 
7211  //...................................................................... (ViewHisto)
7212  if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
7213  {
7214  Int_t HisSiza = GetHistoSize(HistoCodi.Data(), "plot");
7215  Int_t ReadHisSiza = HisSiza;
7216  //.............................. prepa direct histogram booking (ViewHisto)
7217  Axis_t xinf_hisa = GetHistoXinf(HistoCodi.Data(), HisSiza, opt_plot);
7218  Axis_t xsup_hisa = GetHistoXsup(HistoCodi.Data(), HisSiza, opt_plot);
7219  Int_t nb_binxa = GetHistoNumberOfBins(HistoCodi.Data(), HisSiza);
7220  //.............................. direct ("Global") histogram booking (ViewHisto)
7221  TH1D* h_hisa =
7222  new TH1D("histoa", TitleHisto.Data(), nb_binxa, xinf_hisa, xsup_hisa); fCnewRoot++;
7223  h_hisa->Reset();
7224  //.... direct histogram filling to get its ymin (=> xminProj) and ymax (=> xmaxProj)
7225  FillHisto(h_hisa, histo_for_plot, HistoCodi.Data(), ReadHisSiza);
7226  //... Get direct histo ymin and/or ymax and keep them as xinf and xsup
7227  // in memo for the plotted histo
7228  XinfProj = fUserHistoMin;
7229  XsupProj = fUserHistoMax;
7230  if( fFlagUserHistoMin == "AUTO" ){XinfProj = h_hisa->GetMinimum();}
7231  if( fFlagUserHistoMax == "AUTO" ){XsupProj = h_hisa->GetMaximum();}
7232  XsupProj += (XsupProj-XinfProj)*fCnaParHistos->GetMarginAutoMinMax(); // to see the last bin
7233  h_hisa->Delete(); h_hisa = nullptr; fCdeleteRoot++;
7234  } // end of if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
7235  else
7236  {
7237  if( fFlagUserHistoMin == "OFF" )
7238  {
7239  SetYminMemoFromValue(HistoCode.Data(),
7240  fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
7241  XinfProj = GetYminValueFromMemo(HistoCode.Data());
7242  }
7243 
7244  if( fFlagUserHistoMax == "OFF" )
7245  {
7246  SetYmaxMemoFromValue(HistoCode.Data(),
7247  fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
7248  XsupProj = GetYmaxValueFromMemo(HistoCode.Data());
7249  }
7250  if( fFlagUserHistoMin == "ON" ){XinfProj = fUserHistoMin;}
7251  if( fFlagUserHistoMax == "ON" ){XsupProj = fUserHistoMax;}
7252  }
7253 
7254  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
7255  {
7256  SetXinfMemoFromValue(HistoCode.Data(), XinfProj);
7257  SetXsupMemoFromValue(HistoCode.Data(), XsupProj);
7258  }
7259  else
7260  {
7261  SetXinfMemoFromValue(XinfProj);
7262  SetXsupMemoFromValue(XsupProj);
7263  }
7264  } // end of if( (opt_plot == fOnlyOnePlot) ||
7265  // (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7266  // (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7267  } // end of if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" )
7268 
7269  //=============== H I S T O B O O K I N G A N D F I L L I N G ======== (ViewHisto)
7270  //.............................. prepa histogram booking (ViewHisto)
7271 
7272  //.......... Set number of bins: forcing to fNbBinsProj if "HistoType" == "Proj"
7273  Int_t xNbBins = GetHistoNumberOfBins(HistoCode.Data(), SizeForPlot);
7274 
7275  Double_t cXinf = (Double_t)0.;
7276  Double_t cXsup = (Double_t)0.;
7277 
7278  //.......... Set Xinf and Xsup at each time because of simultaneous SAME options
7279  if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj")
7280  {
7281  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
7282  {
7283  cXinf = GetXinfValueFromMemo(HistoCode.Data());
7284  cXsup = GetXsupValueFromMemo(HistoCode.Data());
7285  }
7286  else
7287  {
7288  cXinf = GetXinfValueFromMemo();
7289  cXsup = GetXsupValueFromMemo();
7290  }
7291  }
7292  else
7293  {
7294  cXinf = GetHistoXinf(HistoCode.Data(), SizeForPlot, opt_plot);
7295  cXsup = GetHistoXsup(HistoCode.Data(), SizeForPlot, opt_plot);
7296  }
7297 
7298  //.............................. histogram booking (ViewHisto)
7299  Axis_t xinf_his = cXinf; // ancillary variables since no const in arguments of TH1D
7300  Axis_t xsup_his = cXsup;
7301  Int_t nb_binx = xNbBins;
7302 
7303  TString TitleHisto = ";";
7304  if( opt_plot != fSameOnePlot )
7305  {TitleHisto = fCnaParHistos->GetQuantityName(HistoCode.Data());}
7306  TH1D* h_his0 = new TH1D("histo", TitleHisto.Data(), nb_binx, xinf_his, xsup_his); fCnewRoot++;
7307  h_his0->Reset();
7308  //............................... histogram filling
7309  FillHisto(h_his0, histo_for_plot, HistoCode.Data(), SizeForPlot);
7310 
7311  //=============== H I S T O Y M I N / Y M A X M A N A G E M E N T =========== (ViewHisto)
7312  if( opt_plot == fOnlyOnePlot ||
7313  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7314  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7315  {
7316  if( opt_plot == fSameOnePlot ){fHistoCodeFirst = HistoCode;} // registration of first HistoCode
7317  //................................. Automatic min and/or max for other options than "Proj"
7318  if( HistoType != "Proj" && HistoType != "SampProj" && HistoType != "H1BasicProj" )
7319  {
7320  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
7321  //................................. user's min and/or max
7322  if( fFlagUserHistoMin == "ON" )
7323  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
7324  if( fFlagUserHistoMax == "ON" )
7325  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
7326  //................................. automatic min and/or max
7327  if( fFlagUserHistoMin == "AUTO" )
7328  {
7329  //.............. no bottom margin if ymin = 0
7330  Double_t ymin = GetYminFromHistoFrameAndMarginValue(h_his0, (Double_t)0.);
7331  if( ymin != (Double_t)0. )
7332  {ymin =
7334  SetYminMemoFromValue(HistoCode.Data(),ymin);
7335  fFlagUserHistoMin = "OFF";
7336  }
7337  if( fFlagUserHistoMax == "AUTO" )
7338  {
7339  Double_t ymax =
7341  SetYmaxMemoFromValue(HistoCode.Data(),ymax);
7342  fFlagUserHistoMax = "OFF";
7343  }
7344  //................................. Set YMin and YMax of histo (ViewHisto)
7345  SetYminMemoFromPreviousMemo(HistoCode);
7346  SetYmaxMemoFromPreviousMemo(HistoCode);
7347  } // end of if( HistoType != "Proj" && HistoType != "SampProj" && HistoType != "H1BasicProj" )
7348 
7349  //.......... Find maximum in case of Proj (LIN scale only) // PS: EvolProj => in ViewHistime
7350  if( ( HistoType == "Proj" || HistoType == "SampProj" ||
7351  HistoType == "H1BasicProj" ) && fFlagScaleY == "LIN" )
7352  {
7354  (HistoCode.Data(),
7356  }
7357  } // end of if( opt_plot == fOnlyOnePlot ||
7358  // (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7359  // (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7360 
7361  //--- Set ymin and ymax to the first HistoCode values for option SAME n
7362  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7363  {
7364  Double_t ymin = GetYminValueFromMemo(fHistoCodeFirst.Data());
7365  SetYminMemoFromValue(HistoCode.Data(), ymin);
7366 
7367  Double_t ymax = GetYmaxValueFromMemo(fHistoCodeFirst.Data());
7368  SetYmaxMemoFromValue(HistoCode.Data(), ymax);
7369  }
7370 
7371  //... histogram set ymin and ymax and consequently margin at top of the plot
7372  Int_t xFlagAutoYsupMargin = SetHistoFrameYminYmaxFromMemo(h_his0, HistoCode);
7373 
7374  //==================================== P L O T ============================== (ViewHisto)
7375  HistoPlot(h_his0, SizeForPlot, xinf_his, xsup_his,
7376  HistoCode.Data(), HistoType.Data(),
7377  StexStin_A, i0StinEcha, i0Sample,
7378  opt_scale_x, opt_scale_y, opt_plot, arg_AlreadyRead,
7379  xFlagAutoYsupMargin);
7380  h_his0->Delete(); h_his0 = nullptr; fCdeleteRoot++;
7381  //===========================================================================
7382 
7383  //--- Recover ymin and ymax from user's values in option SAME n
7384  if( (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy") )
7385  {
7386  SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
7387  SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
7388  }
7389  } // end of if( OKPlot > 0 )
7390  else
7391  {
7392  std::cout << "!TEcnaHistos::ViewHisto(...)> Histo not available."
7393  << fTTBELL << std::endl;
7394  }
7395  }
7396  }
7397  } // end of if( OKHisto == 1 )
7398 
7399 } // end of ViewHisto(...)
7400 
7401 //------------------------------------------------------------------------------------
7402 Int_t TEcnaHistos::GetDSOffset(const Int_t& DeeNumber, const Int_t& DataSector)
7403 {
7404  // gives the DataSector Offset on 1D histos for option "Global"
7405 
7406  Int_t DSOffset = 0;
7407 
7408  if( DeeNumber == 4 )
7409  {
7410  if( DataSector >= 1 ){}
7411  if( DataSector >= 2 ){DSOffset += fEcalNumbering->GetMaxSCInDS(1)*fEcal->MaxCrysInSC();}
7412  if( DataSector >= 3 ){DSOffset += fEcalNumbering->GetMaxSCInDS(2)*fEcal->MaxCrysInSC();}
7413  if( DataSector >= 4 ){DSOffset += fEcalNumbering->GetMaxSCInDS(3)*fEcal->MaxCrysInSC();}
7414  if( DataSector >= 5 ){DSOffset += fEcalNumbering->GetMaxSCInDS(4)*fEcal->MaxCrysInSC();}
7415  }
7416  if( DeeNumber == 3 )
7417  {
7418  if( DataSector >= 5 ){}
7419  if( DataSector >= 6 ){DSOffset += (fEcalNumbering->GetMaxSCInDS(5)/2)*fEcal->MaxCrysInSC();}
7420  if( DataSector >= 7 ){DSOffset += fEcalNumbering->GetMaxSCInDS(6)*fEcal->MaxCrysInSC();}
7421  if( DataSector >= 8 ){DSOffset += fEcalNumbering->GetMaxSCInDS(7)*fEcal->MaxCrysInSC();}
7422  if( DataSector >= 9 ){DSOffset += fEcalNumbering->GetMaxSCInDS(8)*fEcal->MaxCrysInSC();}
7423  }
7424  if( DeeNumber == 2 )
7425  {
7426  if( DataSector <= 9 ){}
7427  if( DataSector <= 8 ){DSOffset += fEcalNumbering->GetMaxSCInDS(9)*fEcal->MaxCrysInSC();}
7428  if( DataSector <= 7 ){DSOffset += fEcalNumbering->GetMaxSCInDS(8)*fEcal->MaxCrysInSC();}
7429  if( DataSector <= 6 ){DSOffset += fEcalNumbering->GetMaxSCInDS(7)*fEcal->MaxCrysInSC();}
7430  if( DataSector <= 5 ){DSOffset += fEcalNumbering->GetMaxSCInDS(6)*fEcal->MaxCrysInSC();}
7431  }
7432  if( DeeNumber == 1 )
7433  {
7434  if( DataSector <= 5 ){}
7435  if( DataSector <= 4 ){DSOffset += (fEcalNumbering->GetMaxSCInDS(5)/2)*fEcal->MaxCrysInSC();}
7436  if( DataSector <= 3 ){DSOffset += fEcalNumbering->GetMaxSCInDS(4)*fEcal->MaxCrysInSC();}
7437  if( DataSector <= 2 ){DSOffset += fEcalNumbering->GetMaxSCInDS(3)*fEcal->MaxCrysInSC();}
7438  if( DataSector <= 1 ){DSOffset += fEcalNumbering->GetMaxSCInDS(2)*fEcal->MaxCrysInSC();}
7439  }
7440  return DSOffset;
7441 }
7442 //------------------------------------------------------------------------------------
7443 Int_t TEcnaHistos::GetSCOffset(const Int_t& DeeNumber, const Int_t& DataSector, const Int_t& SC_in_DS)
7444 {
7445  // gives the SC (Super-Crystal) Offset on 1D histos for option "Global"
7446 
7447  Int_t SCOffset = 0;
7448 
7449  if( DeeNumber == 1 || DeeNumber == 3 )
7450  {
7451  if( DataSector == 5 ){SCOffset += ((SC_in_DS-17)-1)*fEcal->MaxCrysInSC();}
7452  if( DataSector != 5 ){SCOffset += (SC_in_DS-1)*fEcal->MaxCrysInSC();}
7453  }
7454 
7455  if( DeeNumber == 2 || DeeNumber == 4 ){SCOffset += (SC_in_DS-1)*fEcal->MaxCrysInSC();}
7456 
7457  return SCOffset;
7458 }
7459 //------------------------------------------------------------------------------------
7460 Int_t TEcnaHistos::ModifiedSCEchaForNotConnectedSCs(const Int_t& n1DeeNumber,
7461  const Int_t& nSCCons, const Int_t& SC_in_DS,
7462  const Int_t& n1DeeSCEcna, const Int_t& n1SCEcha)
7463 {
7464  //------------------------ Modification of n1SCEcha number for not connected SC's
7465 
7466  Int_t ModifiedSCEcha = -1;
7467  TString SCQuad = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna); // SCQuad = top OR bottom
7468  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(n1DeeNumber); // DeeDir = left OR right
7469 
7470  TString TypQuad = "?";
7471  if( SCQuad == "top" && DeeDir == "right" ){TypQuad = "TR";}
7472  if( SCQuad == "top" && DeeDir == "left" ){TypQuad = "TL";}
7473  if( SCQuad == "bottom" && DeeDir == "left" ){TypQuad = "BL";}
7474  if( SCQuad == "bottom" && DeeDir == "right" ){TypQuad = "BR";}
7475 
7476  //------------------------------------------------------------------------------------------- top
7477 
7478  //..... (D1,S1), (D3,S9) SC_in_DS = 30, n1DeeSCEcna = 60 -> 182a for construction top/right
7479  //..... (D1,S2), (D3,S8) SC_in_DS = 3, n1DeeSCEcna = 138 -> 178a for construction top/right
7480  if( (SC_in_DS == 30 && n1DeeSCEcna == 60 && TypQuad == "TR") ||
7481  (SC_in_DS == 3 && n1DeeSCEcna == 138 && TypQuad == "TR") ){if(n1SCEcha > 15){ModifiedSCEcha = n1SCEcha - 15;}}
7482 
7483  //..... (D4,S1), (D2,S9) SC_in_DS = 30, n1DeeSCEcna = 60 -> 33a for construction top/left
7484  //..... (D4,S2), (D2,S8) SC_in_DS = 3, n1DeeSCEcna = 138 -> 29a for construction top/left
7485  if( (SC_in_DS == 30 && n1DeeSCEcna == 60 && TypQuad == "TL") ||
7486  (SC_in_DS == 3 && n1DeeSCEcna == 138 && TypQuad == "TL") )
7487  {
7488  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7489  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7490  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7491  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7492  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7493  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7494  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7495  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7496  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7497  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7498  }
7499 
7500  //..... (D1,S1), (D3,S9) SC_in_DS = 30, n1DeeSCEcna = 119 -> 182b for construction top/right
7501  if( SC_in_DS == 30 && n1DeeSCEcna == 119 && TypQuad == "TR" ){if(n1SCEcha > 5){ModifiedSCEcha = n1SCEcha - 5;}}
7502 
7503  //..... (D4,S1), (D2,S9) SC_in_DS = 30, n1DeeSCEcna = 119 -> 33b for construction top/left
7504  if( SC_in_DS == 30 && n1DeeSCEcna == 119 && TypQuad == "TL" )
7505  {
7506  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7507  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7508  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7509  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7510  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7511  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7512  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7513  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7514  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7515  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7516  }
7517 
7518  //..... (D1,S1), (D3,S9) SC_in_DS = 12, n1DeeSCEcna = 13 -> 161 for construction top/right
7519  //..... (D4,S1), (D2,S9) SC_in_DS = 12, n1DeeSCEcna = 13 -> 12 for construction top/left
7520  if( SC_in_DS == 12 && n1DeeSCEcna == 13 && TypQuad == "TR" )
7521  {
7522  ModifiedSCEcha = n1SCEcha;
7523  }
7524  if( SC_in_DS == 12 && n1DeeSCEcna == 13 && TypQuad == "TL" )
7525  {
7526  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7527  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7528  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7529  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7530  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7531  }
7532 
7533  //..... (D1,S2), (D3,S8) SC_in_DS = 25, n1DeeSCEcna = 176 -> 207a for construction top/right
7534  if( SC_in_DS == 25 && n1DeeSCEcna == 176 && TypQuad == "TR" )
7535  {
7536  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7537  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7538  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7539  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7540  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7541  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7542  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7543  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7544  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7545  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7546  }
7547 
7548  //..... (D4,S2), (D2,S8) SC_in_DS = 25, n1DeeSCEcna = 176 -> 58a for construction top/left
7549  if( SC_in_DS == 25 && n1DeeSCEcna == 176 && TypQuad == "TL" )
7550  {
7551  if(n1SCEcha == 16){ModifiedSCEcha = 1;}
7552  if(n1SCEcha == 21){ModifiedSCEcha = 2;}
7553  if(n1SCEcha == 17){ModifiedSCEcha = 3;}
7554  if(n1SCEcha == 22){ModifiedSCEcha = 4;}
7555  if(n1SCEcha == 18){ModifiedSCEcha = 5;}
7556  if(n1SCEcha == 23){ModifiedSCEcha = 6;}
7557  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7558  if(n1SCEcha == 24){ModifiedSCEcha = 8;}
7559  if(n1SCEcha == 20){ModifiedSCEcha = 9;}
7560  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7561  }
7562 
7563  //..... (D1,S2), (D3,S8) SC_in_DS = 3, n1DeeSCEcna = 157 -> 178b for construction top/right
7564  //..... (D1,S2), (D3,S8) SC_in_DS = 25, n1DeeSCEcna = 193 -> 207b for construction top/right
7565  if( (SC_in_DS == 3 && n1DeeSCEcna == 157 && TypQuad == "TR") ||
7566  (SC_in_DS == 25 && n1DeeSCEcna == 193 && TypQuad == "TR") )
7567  {
7568  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7569  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7570  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7571  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7572  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7573  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7574  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7575  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7576  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7577  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7578  }
7579 
7580  //..... (D4,S2), (D2,S8) SC_in_DS = 3, n1DeeSCEcna = 157 -> 29b for construction top/left
7581  //..... (D4,S2), (D2,S8) SC_in_DS = 25, n1DeeSCEcna = 193 -> 58b for construction top/left
7582  if( (SC_in_DS == 3 && n1DeeSCEcna == 157 && TypQuad == "TL") ||
7583  (SC_in_DS == 25 && n1DeeSCEcna == 193 && TypQuad == "TL") )
7584  {
7585  if(n1SCEcha == 16){ModifiedSCEcha = 11;}
7586  if(n1SCEcha == 21){ModifiedSCEcha = 12;}
7587  if(n1SCEcha == 17){ModifiedSCEcha = 13;}
7588  if(n1SCEcha == 22){ModifiedSCEcha = 14;}
7589  if(n1SCEcha == 18){ModifiedSCEcha = 15;}
7590  if(n1SCEcha == 23){ModifiedSCEcha = 16;}
7591  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7592  if(n1SCEcha == 24){ModifiedSCEcha = 18;}
7593  if(n1SCEcha == 20){ModifiedSCEcha = 19;}
7594  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7595  }
7596 
7597  //..... (D1,S2), (D3,S8) SC_in_DS = 32, n1DeeSCEcna = 51 -> 216 for construction top/right
7598  if( SC_in_DS == 32 && n1DeeSCEcna == 51 && TypQuad == "TR" )
7599  {
7600  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7601  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7602  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7603  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7604  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7605  }
7606 
7607  //..... (D4,S2), (D2,S8) SC_in_DS = 32, n1DeeSCEcna = 51 -> 67 for construction top/left
7608  if( SC_in_DS == 32 && n1DeeSCEcna == 51 && TypQuad == "TL" )
7609  {
7610  ModifiedSCEcha = n1SCEcha;
7611  }
7612 
7613  // **************************** Special case: TWO SC's IN THE SAME SC-Ecna place *************************
7614  //========================================================================================== D1,D3 ======
7615  // (D1,S2), (D3,S8) SC_in_DS = 3, n1DeeSCEcna = 32 -> 178c for construction top/right
7616  // (D1,S2), (D3,S8) SC_in_DS = 25, n1DeeSCEcna = 32 -> 207c for construction top/right
7617  // For n1DeeSCEcna = 32: ONLY "25" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7618  // fT2d_DSSC[dee-1][32-1] = 25; // also 3; // ( (207c, 58c) also (178c, 29c) for construction)
7619  // is recovered from number for construction
7620  //=======================================================================================================
7621  if( n1DeeSCEcna == 32 && TypQuad == "TR" )
7622  {
7623  if( nSCCons == 207 )
7624  {
7625  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7626  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7627  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7628  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7629  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7630  }
7631  if( nSCCons == 178 )
7632  {
7633  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7634  }
7635  }
7636 
7637  //========================================================================================== D2,D4 ======
7638  // (D4,S2), (D2,S8) SC_in_DS = 3, n1DeeSCEcna = 32 -> 29c for construction top/left
7639  // (D4,S2), (D2,S8) SC_in_DS = 25, n1DeeSCEcna = 32 -> 58c for construction top/left
7640  // For n1DeeSCEcna = 32: ONLY "25" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7641  // fT2d_DSSC[dee-1][32-1] = 25; // also 3; // ( (207c, 58c) also (178c, 29c) for construction)
7642  // is recovered from number for construction
7643  //=======================================================================================================
7644  if( n1DeeSCEcna == 32 && TypQuad == "TL" )
7645  {
7646  if( nSCCons == 58 )
7647  {
7648  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7649  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7650  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7651  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7652  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7653  }
7654  if( nSCCons == 29 )
7655  {
7656  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7657  }
7658  }
7659  //****************************************************************************************************
7660 
7661  //------------------------------------------------------------------------------------------- bottom
7662 
7663  // **************************** Special case: TWO SC's IN THE SAME SC-Ecna place *************************
7664  //========================================================================================== D1,D3 ======
7665  // (D1,S4), (D3,S6) SC_in_DS = 14, n1DeeSCEcna = 29 -> 261a for construction bottom/right
7666  // (D1,S4), (D3,S6) SC_in_DS = 21, n1DeeSCEcna = 29 -> 268a for construction bottom/right
7667  // For n1DeeSCEcna = 29: ONLY "14" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7668  // fT2d_DSSC[dee-1][29-1] = 14; // also 21; // ( (261a, 112a) also (268a, 119a) for construction)
7669  // is recovered from number for construction
7670  //=======================================================================================================
7671  if( n1DeeSCEcna == 29 && TypQuad == "BR" )
7672  {
7673  if( nSCCons == 261 )
7674  {
7675  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7676  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7677  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7678  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7679  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7680  }
7681  if( nSCCons == 268 )
7682  {
7683  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7684  }
7685  }
7686 
7687  //========================================================================================== D2,D4 ======
7688  // (D4,S4), (D2,S6) SC_in_DS = 14, n1DeeSCEcna = 29 -> 112a for construction bottom/left
7689  // (D4,S4), (D2,S6) SC_in_DS = 21, n1DeeSCEcna = 29 -> 119a for construction bottom/left
7690  // For n1DeeSCEcna = 29: ONLY "14" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7691  // fT2d_DSSC[dee-1][29-1] = 14; // also 21; // ( (261a, 112a) also (268a, 119a) for construction)
7692  // is recovered from number for construction
7693  //=======================================================================================================
7694  if( n1DeeSCEcna == 29 && TypQuad == "BL" )
7695  {
7696  if( nSCCons == 119 )
7697  {
7698  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7699  }
7700  if( nSCCons == 112 )
7701  {
7702  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7703  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7704  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7705  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7706  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7707  }
7708  }
7709 
7710  // ****************************************************************************************************
7711 
7712  //..... (D1,S3), (D3,S7) SC_in_DS = 34, n1DeeSCEcna = 188 -> 298a for construction bottom/right
7713  //..... (D1,S4), (D3,S6) SC_in_DS = 14, n1DeeSCEcna = 165 -> 261b for construction bottom/right
7714  if( (SC_in_DS == 34 && n1DeeSCEcna == 188 && TypQuad == "BR") ||
7715  (SC_in_DS == 14 && n1DeeSCEcna == 165 && TypQuad == "BR") ){if(n1SCEcha > 15){ModifiedSCEcha = n1SCEcha - 15;}}
7716 
7717  //..... (D4,S3), (D2,S7) SC_in_DS = 34, n1DeeSCEcna = 188 -> 149a for construction bottom/left
7718  //..... (D4,S4), (D2,S6) SC_in_DS = 14, n1DeeSCEcna = 165 -> 112b for construction bottom/left
7719  if( (SC_in_DS == 34 && n1DeeSCEcna == 188 && TypQuad == "BL") ||
7720  (SC_in_DS == 14 && n1DeeSCEcna == 165 && TypQuad == "BL") )
7721  {
7722  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7723  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7724  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7725  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7726  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7727  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7728  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7729  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7730  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7731  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7732  }
7733 
7734  //..... (D1,S3), (D3,S7) SC_in_DS = 10, n1DeeSCEcna = 50 -> 224 for construction bottom/right
7735  if( SC_in_DS == 10 && n1DeeSCEcna == 50 && TypQuad == "BR" )
7736  {
7737  ModifiedSCEcha = n1SCEcha;
7738  }
7739 
7740  //..... (D4,S3), (D2,S7) SC_in_DS = 10, n1DeeSCEcna = 50 -> 75 for construction bottom/left
7741  if( SC_in_DS == 10 && n1DeeSCEcna == 50 && TypQuad == "BL")
7742  {
7743  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7744  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7745  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7746  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7747  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7748  }
7749 
7750  //..... (D1,S4), (D3,S6) SC_in_DS = 14, n1DeeSCEcna = 144 -> 261c for construction bottom/right
7751  if( SC_in_DS == 14 && n1DeeSCEcna == 144 && TypQuad == "BR" ){if(n1SCEcha > 5){ModifiedSCEcha = n1SCEcha - 5;}}
7752 
7753  //..... (D4,S4), (D2,S6) SC_in_DS = 14, n1DeeSCEcna = 144 -> 112c for construction bottom/left
7754  if( SC_in_DS == 14 && n1DeeSCEcna == 144 && TypQuad == "BL" )
7755  {
7756  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7757  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7758  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7759  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7760  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7761  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7762  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7763  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7764  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7765  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7766  }
7767 
7768  //..... (D1,S4), (D3,S6) SC_in_DS = 21, n1DeeSCEcna = 123 -> 268b for construction bottom/right
7769  //..... (D1,S5), (D3,S5) SC_in_DS = 20, n1DeeSCEcna = 21 -> 281a for construction bottom/right
7770  if( (SC_in_DS == 21 && n1DeeSCEcna == 123 && TypQuad == "BR") ||
7771  (SC_in_DS == 20 && n1DeeSCEcna == 41 && TypQuad == "BR") )
7772  {
7773  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7774  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7775  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7776  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7777  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7778  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7779  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7780  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7781  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7782  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7783  }
7784 
7785  //..... (D4,S4), (D2,S6) SC_in_DS = 21, n1DeeSCEcna = 123 -> 119b for construction bottom/left
7786  //..... (D4,S5), (D2,S5) SC_in_DS = 3, n1DeeSCEcna = 41 -> 132a for construction bottom/left
7787  if( (SC_in_DS == 21 && n1DeeSCEcna == 123 && TypQuad == "BL") ||
7788  (SC_in_DS == 3 && n1DeeSCEcna == 41 && TypQuad == "BL") ){if(n1SCEcha > 15){ModifiedSCEcha = n1SCEcha - 15;}}
7789 
7790 
7791  //..... (D1,S4), (D3,S6) SC_in_DS = 21, n1DeeSCEcna = 102 -> 268c for construction bottom/right
7792  if( SC_in_DS == 21 && n1DeeSCEcna == 102 && TypQuad == "BR" )
7793  {
7794  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7795  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7796  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7797  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7798  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7799  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7800  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7801  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7802  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7803  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7804  }
7805 
7806  //..... (D4,S4), (D2,S6) SC_in_DS = 21, n1DeeSCEcna = 102 -> 119c for construction bottom/left
7807  if( SC_in_DS == 21 && n1DeeSCEcna == 102 && TypQuad == "BL" )
7808  {
7809  if(n1SCEcha == 16){ModifiedSCEcha = 11;}
7810  if(n1SCEcha == 21){ModifiedSCEcha = 12;}
7811  if(n1SCEcha == 17){ModifiedSCEcha = 13;}
7812  if(n1SCEcha == 22){ModifiedSCEcha = 14;}
7813  if(n1SCEcha == 18){ModifiedSCEcha = 15;}
7814  if(n1SCEcha == 23){ModifiedSCEcha = 16;}
7815  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7816  if(n1SCEcha == 24){ModifiedSCEcha = 18;}
7817  if(n1SCEcha == 20){ModifiedSCEcha = 19;}
7818  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7819  }
7820 
7821  //..... (D1,S5), (D3,S5) SC_in_DS = 23, n1DeeSCEcna = 8 -> 286 for construction bottom/right
7822  if( SC_in_DS == 23 && n1DeeSCEcna == 8 && TypQuad == "BR" )
7823  {
7824  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7825  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7826  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7827  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7828  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7829  }
7830 
7831  //..... (D4,S5), (D2,S5) SC_in_DS = 6, n1DeeSCEcna = 8 -> 137 for construction bottom/left
7832  if( SC_in_DS == 6 && n1DeeSCEcna == 8 && TypQuad == "BL" )
7833  {
7834  ModifiedSCEcha = n1SCEcha;
7835  }
7836 
7837  //======================= ERROR message if ModifiedSCEcha is not correct
7838  if( ModifiedSCEcha < 1 || ModifiedSCEcha > fEcal->MaxCrysInSC() )
7839  {
7840  std::cout << "! *** ERROR *** > ModifiedSCEcha = " << ModifiedSCEcha
7841  << ", SC_in_DS = " << SC_in_DS
7842  << ", nSCCons = " << nSCCons
7843  << ", n1DeeSCEcna = " << n1DeeSCEcna
7844  << ", n1SCEcha = " << n1SCEcha
7845  << ", ModifiedSCEcha = " << ModifiedSCEcha
7846  << ", TypQuad = " << TypQuad
7847  << fTTBELL << std::endl;
7848  }
7849 
7850 
7851  return ModifiedSCEcha;
7852 }
7853 // end of ModifiedSCEchaForNotConnectedSCs(...)
7854 
7855 //======================================================================================
7856 //
7857 // ViewHistime: evolution in time
7858 //
7859 //======================================================================================
7860 
7861 //======================================================================================
7862 //
7863 // ViewHistime: time evolution
7864 //
7865 //======================================================================================
7866 void TEcnaHistos::ViewHistime(const TString& list_of_run_file_name,
7867  const Int_t& StexStin_A, const Int_t& i0StinEcha,
7868  const TString& HistoCode, const TString& opt_plot_arg)
7869 {
7870  //Histogram of the quantities as a function of time (several runs)
7871 
7872  TString opt_plot = opt_plot_arg;
7873  TString HistoType = fCnaParHistos->GetHistoType(HistoCode);
7874 
7875  if( opt_plot_arg == "ONLYONE" ){opt_plot = fOnlyOnePlot;}
7876  if( opt_plot_arg == "SEVERAL" ){opt_plot = fSeveralPlot;}
7877  if( opt_plot_arg == "SAMEONE" ){opt_plot = fSameOnePlot;}
7878 
7879  Int_t OKHisto = 0;
7880 
7881  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Canvas already closed in option SAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7882  Int_t xCanvasExists = 1; // a priori ==> SAME plot // (ViewHistime)
7883  if( opt_plot != fOnlyOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7884  {
7885  TVirtualPad* main_subpad = nullptr;
7886  //---------------- Call to ActivePad
7887  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
7888  if( main_subpad == nullptr )
7889  {
7890  std::cout << "*TEcnaHistos::ViewHistime(...)> WARNING ===> Canvas has been closed in option SAME or SAME n."
7891  << std::endl
7892  << " Please, restart with a new canvas."
7893  << fTTBELL << std::endl;
7894 
7895  ReInitCanvas(HistoCode, opt_plot);
7896  xCanvasExists = 0;
7897  }
7898  }
7899  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7900 
7901  //%%%%%%%%%%%%%%%%%%%%% Change of X variable in option SAME n with no proj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7902  Int_t SameXVarMemo = 1; // a priori ==> SAME n option: X variable OK (ViewHistime)
7903  if( !( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" || HistoType == "EvolProj" ) )
7904  {
7905  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
7906  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
7907 
7908  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
7909  {
7910  SetXVarMemo(HistoCode, opt_plot, XVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameXVarMemo = 1;
7911  }
7912  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7913  {
7914  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
7915  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
7916 
7917  if( XVarHisto != XVariableMemo )
7918  {
7919  std::cout << "!TEcnaHistos::ViewHistime(...)> *** ERROR *** ===> X coordinate changed in option SAME n." << std::endl
7920  << " Present X = " << XVarHisto << std::endl
7921  << " Present Y = " << YVarHisto << std::endl
7922  << " Previous X = " << XVariableMemo << std::endl
7923  << " Previous Y = " << YVariableMemo
7924  << fTTBELL << std::endl;
7925  SameXVarMemo = 0;
7926  }
7927  else
7928  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
7929  }
7930  }
7931  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7932 
7933  //%%%%%%%%%%%%%%%%%%%%%%% Change of Y variable in option SAME n with proj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7934  Int_t SameYVarMemo = 1; // a priori ==> SAME n option: Y variable OK (ViewHistime)
7935  if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" || HistoType == "EvolProj" )
7936  {
7937  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
7938  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
7939 
7940  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
7941  {
7942  SetYVarMemo(HistoCode, opt_plot, YVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameYVarMemo = 1;
7943  }
7944  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7945  {
7946  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
7947  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
7948 
7949  if( YVarHisto != YVariableMemo )
7950  {
7951  std::cout << "!TEcnaHistos::ViewHistime(...)> *** ERROR *** ===> Y coordinate changed in option SAME n." << std::endl
7952  << " Present X = " << XVarHisto << std::endl
7953  << " Present Y = " << YVarHisto << std::endl
7954  << " Previous X = " << XVariableMemo << std::endl
7955  << " Previous Y = " << YVariableMemo
7956  << fTTBELL << std::endl;
7957  SameYVarMemo = 0;
7958  }
7959  else
7960  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
7961  }
7962  }
7963  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7964  if( xCanvasExists == 1 && SameXVarMemo == 1 && SameYVarMemo == 1 ){OKHisto = 1;}
7965 
7966  //======================== Histime accepted
7967  if( OKHisto == 1 )
7968  {
7969  // fMyRootFile->PrintNoComment();
7970 
7972 
7973  //................................. Init YMin and YMax of histo // (ViewHistime)
7974  if((opt_plot == fOnlyOnePlot) ||
7975  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7976  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free"))
7978 
7979  //........ GetHistoryRunListParameters(...) : performs the allocation of the array fT1DRunNumber[]
7980  // at first call of the present method ViewHistime
7981  // increments the number of read file (fNbOfListFileEvolXXX) for option SAME
7982  // and read the values fT1DRunNumber[0 to max] from the file list_of_run_file_name
7983  // return the number of runs in the list of the file
7984  //............... Get the run parameters
7985 
7986  Int_t nb_of_runs_in_list = GetHistoryRunListParameters(list_of_run_file_name.Data(), HistoCode);
7987 
7988  if( nb_of_runs_in_list > 0 )
7989  {
7990  //.............................. prepa x axis: time in hours
7991  //Double_t sec_in_day = (Double_t)86400.; //===> (number of seconds in a day)
7992  Double_t margin_frame_xaxis = (Double_t)25.; //===> margin in x coordinates
7993 
7994  Double_t thstart_evol = (Double_t)0.;
7995  Double_t thstop_evol = (Double_t)0.;
7996 
7997  Int_t* exist_indic = new Int_t[nb_of_runs_in_list]; fCnew++;
7998 
7999  //===================================== FIRST LOOP BEGINNING ===================================
8000  //-------------------------------------------------------------------------------- (ViewHistime)
8001  //
8002  // FIRST LOOP: read the "HistoryRunList" file. Check the existence of the runs
8003  // and determine the number of existing runs.
8004  //
8005  //--------------------------------------------------------------------------------
8006 
8007  fNbOfExistingRuns = (Int_t)0;
8008 
8009  if( fFapStexNumber > 0 )
8010  {
8011  for(Int_t i_run = 0; i_run < nb_of_runs_in_list; i_run++)
8012  {
8013  exist_indic[i_run] = 0;
8014  // ==> set the attribute value relative to the run (fFapRunNumber)
8015  SetRunNumberFromList(i_run, nb_of_runs_in_list);
8016 
8022 
8023  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (ViewHistime, 1rst loop)
8024  {
8025  fStatusFileFound = kTRUE;
8026 
8027  //------ At first HistoryRunList file: set fStartEvol... and fStopEvol... quantities
8028  if( GetListFileNumber(HistoCode) == 1 )
8029  {
8030  if( fNbOfExistingRuns == 0 )
8031  {
8032  // start time of the first existing run of the list
8035  fStartEvolRun = fT1DRunNumber[i_run];
8036  // start time of the last existing run of the list
8037  // (in case of only one existing run in the list)
8040  fStopEvolRun = fT1DRunNumber[i_run];
8041  }
8042  else
8043  {
8044  // start time of the last existing run of the list
8047  fStopEvolRun = fT1DRunNumber[i_run];
8048  }
8049  }
8050  //---- set flag of run existence and increase number of existing runs
8051  // (for the first HistoryRunList file)
8052  exist_indic[i_run] = 1;
8054  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
8055  else
8056  {
8057  fStatusFileFound = kFALSE;
8058 
8059  std::cout << "!TEcnaHistos::ViewHistime(...)> *ERROR* =====> "
8060  << " ROOT file not found for run " << fT1DRunNumber[i_run]
8061  << fTTBELL << std::endl << std::endl;
8062  }
8063  } // end of for(Int_t i_run = 0; i_run < nb_of_runs_in_list; i_run++)
8064 
8065  //===================================== FIRST LOOP END =========================== (ViewHistime)
8066  if( fNbOfExistingRuns > 0 )
8067  {
8068  //-------------------- recover the array after removing non existing ROOT files
8069  Int_t i_existing_run = (Int_t)0;
8070 
8071  for( Int_t i_run = 0; i_run < nb_of_runs_in_list; i_run++)
8072  {
8073  if( exist_indic[i_run] == 1 )
8074  {
8075  fT1DRunNumber[i_existing_run] = fT1DRunNumber[i_run];
8076  i_existing_run++;
8077  }
8078  }
8079 
8080  //---------------------- Get start and stop time values to set the axis limits (ViewHistime)
8081 
8082  thstart_evol = (Double_t)fStartEvolTime;
8083  thstop_evol = (Double_t)fStopEvolTime;
8084 
8085  Double_t xinf_lim = thstart_evol-(thstop_evol-thstart_evol)/margin_frame_xaxis;
8086  Double_t xsup_lim = thstop_evol +(thstop_evol-thstart_evol)/margin_frame_xaxis;
8087 
8088  Axis_t xinf_his = (Axis_t)(xinf_lim);
8089  Axis_t xsup_his = (Axis_t)(xsup_lim);
8090 
8091  //............................. i0StexEcha, i0Sample
8092  Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha);
8093  Int_t i0Sample = 0;
8094 
8095  Double_t* time_coordx = new Double_t[fNbOfExistingRuns]; fCnew++;
8096  Double_t* hval_coordy = new Double_t[fNbOfExistingRuns]; fCnew++;
8097 
8098  //........... Set values to -1
8099 
8100  for( Int_t i_run = 0; i_run < fNbOfExistingRuns; i_run++)
8101  {
8102  time_coordx[i_run] = (Double_t)(-1);
8103  hval_coordy[i_run] = (Double_t)(-1);
8104  }
8105 
8106  //========================== SECOND LOOP BEGINNING =====================================
8107  //----------------------------------------------------------------------- (ViewHistime)
8108  //
8109  // SECOND LOOP OVER THE EXISTING RUNS : FILL THE GRAPH COORDINATES
8110  //
8111  //-----------------------------------------------------------------------
8112  for (Int_t i_run = 0; i_run < fNbOfExistingRuns; i_run++)
8113  {
8114  // => set the attribute value relative to the run (fFapRunNumber)
8115  SetRunNumberFromList(i_run, fNbOfExistingRuns);
8116 
8122 
8123  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (ViewHistime, 2nd loop)
8124  {
8125  fStatusFileFound = kTRUE;
8126 
8127  Bool_t ok_view_histo = GetOkViewHisto(fMyRootFile, StexStin_A, i0StinEcha, i0Sample, HistoCode);
8128 
8129  //............... F I L L G R A P H C O O R D I N A T E S (ViewHistime)
8130  if( ok_view_histo == kTRUE )
8131  {
8132  //................................................. x coordinate
8133  time_t xStartTime = fMyRootFile->GetStartTime();
8134  Double_t thstart = (Double_t)xStartTime;
8135  time_coordx[i_run] = (Double_t)(thstart - xinf_lim);
8136  //................................................. y coordinate
8137  TVectorD read_histo(fEcal->MaxCrysEcnaInStex());
8138  for(Int_t i=0; i<fEcal->MaxCrysEcnaInStex(); i++){read_histo(i)=(Double_t)0.;}
8139 
8140  if(HistoCode == "H_Ped_Date" || HistoCode == "H_Ped_RuDs")
8141  {read_histo = fMyRootFile->ReadPedestals(fEcal->MaxCrysEcnaInStex());}
8142  if(HistoCode == "H_TNo_Date" || HistoCode == "H_TNo_RuDs")
8143  {read_histo = fMyRootFile->ReadTotalNoise(fEcal->MaxCrysEcnaInStex());}
8144  if(HistoCode == "H_MCs_Date" || HistoCode == "H_MCs_RuDs")
8146 
8147  if(HistoCode == "H_LFN_Date" || HistoCode == "H_LFN_RuDs")
8149  if(HistoCode == "H_HFN_Date" || HistoCode == "H_HFN_RuDs")
8151  if(HistoCode == "H_SCs_Date" || HistoCode == "H_SCs_RuDs")
8153  hval_coordy[i_run] = (Double_t)read_histo(i0StexEcha);
8154  }
8155  else
8156  {
8157  std::cout << "!TEcnaHistos::ViewHistime(...)> Histo not available. "
8158  << fTTBELL << std::endl;
8159  }
8160  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
8161  else
8162  {
8163  fStatusFileFound = kFALSE;
8164  }
8165  }
8166  //========================== END OF SECOND LOOP ===========================================
8167 
8168  //.................................................................... SCALE x and y
8169  Int_t opt_scale_x = fOptScaleLinx;
8170  if (fFlagScaleX == "LIN" ){opt_scale_x = fOptScaleLinx;}
8171  if (fFlagScaleX == "LOG" ){opt_scale_x = fOptScaleLogx;}
8172 
8173  Int_t opt_scale_y = fOptScaleLiny;
8174  if (fFlagScaleY == "LIN" ){opt_scale_y = fOptScaleLiny;}
8175  if (fFlagScaleY == "LOG" ){opt_scale_y = fOptScaleLogy;}
8176 
8177  //------------------------------------------------- G R A P H (ViewHistime)
8178  TGraph* g_graph0 = new TGraph(fNbOfExistingRuns, time_coordx, hval_coordy); fCnewRoot++;
8179  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
8180  {g_graph0->SetTitle(fCnaParHistos->GetQuantityName(HistoCode));}
8181  if( opt_plot == fSameOnePlot )
8182  {g_graph0->SetTitle(";");}
8183 
8184  //... Ymin and ymax default values will be taken if fFlagUserHistoMin/Max = "OFF"
8185  // (and if "Free" for "SAME" and "SAME n" options)
8186  if((opt_plot == fOnlyOnePlot) ||
8187  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8188  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
8189  {
8190  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
8191  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
8192  }
8193 
8194  //................................ Put min max values (ViewHistime)
8195  //.......... default if flag not set to "ON"
8196  //SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
8197  //SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
8198 
8199  g_graph0->Set(fNbOfExistingRuns);
8200  Double_t graph_ymin =
8202  Double_t graph_ymax =
8204 
8205  //---------------------------------- G R A P H P L O T ---------------------------- (ViewHistime)
8206  if( HistoType == "Evol" )
8207  {
8208  //----------------- G R A P H Y M I N / Y M A X M A N A G E M E N T
8209  if((opt_plot == fOnlyOnePlot) ||
8210  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8211  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
8212  {
8213  if( opt_plot == fSameOnePlot ){fHistoCodeFirst = HistoCode;} // registration of first HistoCode
8214 
8215  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
8216  //.......... user's value if flag set to "ON"
8217  if( fFlagUserHistoMin == "ON" )
8218  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
8219  if( fFlagUserHistoMax == "ON" )
8220  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
8221  //................................. automatic min and/or max
8222  if( fFlagUserHistoMin == "AUTO" )
8223  {SetYminMemoFromValue(HistoCode.Data(), graph_ymin); fFlagUserHistoMin = "OFF";}
8224  if( fFlagUserHistoMax == "AUTO" )
8225  {SetYmaxMemoFromValue(HistoCode.Data(), graph_ymax); fFlagUserHistoMax = "OFF";}
8226 
8227  //................................. Init Ymin and Ymax for graph
8228  SetYminMemoFromPreviousMemo(HistoCode);
8229  SetYmaxMemoFromPreviousMemo(HistoCode);
8230  }
8231  //--- Set ymin and ymax to the first HistoCode values for option SAME n
8232  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8233  {
8234  Double_t ymin = GetYminValueFromMemo(fHistoCodeFirst.Data());
8235  SetYminMemoFromValue(HistoCode.Data(), ymin);
8236 
8237  Double_t ymax = GetYmaxValueFromMemo(fHistoCodeFirst.Data());
8238  SetYmaxMemoFromValue(HistoCode.Data(), ymax);
8239  }
8240 
8241  //..... graph set ymin and ymax and consequently margin at top of the plot
8242  Int_t xFlagAutoYsupMargin = SetGraphFrameYminYmaxFromMemo(g_graph0, HistoCode);
8243 
8244  HistimePlot(g_graph0, xinf_his, xsup_his,
8245  HistoCode.Data(), HistoType.Data(),
8246  StexStin_A, i0StinEcha, i0Sample,
8247  opt_scale_x, opt_scale_y, opt_plot, xFlagAutoYsupMargin);
8248  // g_graph0->Delete(); fCdeleteRoot++; // *===> NE PAS DELETER LE GRAPH SINON CA EFFACE TOUT!
8249 
8250  //--- Recover ymin and ymax from user's values in option SAME n
8251  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8252  {
8253  SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
8254  SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
8255  }
8256  }
8257 
8258  //---------- H I S T O Y P R O J E C T I O N P L O T ---------------------- (ViewHistime)
8259 
8260  //====== G R A P H P R O J X I N F / X S U P M A N A G E M E N T ======= (ViewHistime)
8261  //
8262  // must be done before booking because of the x <-> y permutation in case of "Proj"
8263  //
8264  //-----------------------------------------------------------------------------------------
8265  //
8266  // CASE: HistoType == "Proj" OR HistoType == "SampProj"
8267  //
8268  // Xinf and Xsup must be calculated from ymin and ymax
8269  // of the direct graph
8270  //
8271  //-----------------------------------------------------------------------------------------
8272 
8273  if( HistoType == "EvolProj" )
8274  {
8275  Int_t HisSizeEvolProj = fNbBinsProj;
8276  TVectorD histo_for_plot(HisSizeEvolProj);
8277  for(Int_t i=0; i<HisSizeEvolProj; i++){histo_for_plot[i]=(Double_t)0.;}
8278 
8279  //graph_ymin = GetYminValueFromMemo(HistoCode.Data());
8280  //graph_ymax = GetYmaxValueFromMemo(HistoCode.Data());
8281 
8282  TString HistoCodi = HistoCode; // HistoCodi = direct histo
8283 
8284  if( HistoCode == "H_Ped_RuDs" ){HistoCodi = "H_Ped_Date";}
8285  if( HistoCode == "H_TNo_RuDs" ){HistoCodi = "H_TNo_Date";}
8286  if( HistoCode == "H_LFN_RuDs" ){HistoCodi = "H_LFN_Date";}
8287  if( HistoCode == "H_HFN_RuDs" ){HistoCodi = "H_HFN_Date";}
8288  if( HistoCode == "H_MCs_RuDs" ){HistoCodi = "H_MCs_Date";}
8289  if( HistoCode == "H_SCs_RuDs" ){HistoCodi = "H_SCs_Date";}
8290 
8291  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
8292 
8293  //--------------------------------------------------------------------------- (ViewHistime)
8294  //
8295  // fOnlyOnePlot => compute Xinf and Xsup at each time
8296  // fSeveralPlot => compute Xinf and Xsup once when flag = "Free" for each HistoCode
8297  // fSameOnePlot => compute Xinf and Xsup once
8298  //
8299  //--------------------------------------------------------------------------------------
8300  if( (opt_plot == fOnlyOnePlot) ||
8301  ( (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, fSeveralPlot) == "Free" ) ||
8302  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, fSameOnePlot) == "Free" ) ) )
8303  {
8304  Double_t XinfProj =(Double_t)0;
8305  Double_t XsupProj =(Double_t)0;
8306 
8307  //...................................................................... (ViewHistime)
8308  if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
8309  {
8310  //... Get direct graph ymin and/or ymax and keep them as xinf and xsup
8311  // in memo for the plotted histo
8312  XinfProj = fUserHistoMin;
8313  XsupProj = fUserHistoMax;
8314  if( fFlagUserHistoMin == "AUTO" ){XinfProj = GetYminValueFromMemo(HistoCodi.Data());}
8315  if( fFlagUserHistoMax == "AUTO" ){XsupProj = GetYmaxValueFromMemo(HistoCodi.Data());}
8316  } // end of if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
8317  else
8318  {
8319  if( fFlagUserHistoMin == "OFF" )
8320  {
8321  SetYminMemoFromValue(HistoCode.Data(),
8322  fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
8323  XinfProj = GetYminValueFromMemo(HistoCode.Data());
8324  }
8325 
8326  if( fFlagUserHistoMax == "OFF" )
8327  {
8328  SetYmaxMemoFromValue(HistoCode.Data(),
8329  fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
8330  XsupProj = GetYmaxValueFromMemo(HistoCode.Data());
8331  }
8332  if( fFlagUserHistoMin == "ON" ){XinfProj = fUserHistoMin;}
8333  if( fFlagUserHistoMax == "ON" ){XsupProj = fUserHistoMax;}
8334  }
8335 
8336  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
8337  {
8338  SetXinfMemoFromValue(HistoCode.Data(), XinfProj);
8339  SetXsupMemoFromValue(HistoCode.Data(), XsupProj);
8340  }
8341  else
8342  {
8343  SetXinfMemoFromValue(XinfProj);
8344  SetXsupMemoFromValue(XsupProj);
8345  }
8346  } // end of if( (opt_plot == fOnlyOnePlot) ||
8347  // (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8348  // (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
8349 
8350  Double_t cXinf = (Double_t)0.;
8351  Double_t cXsup = (Double_t)0.;
8352 
8353  //.......... Set Xinf and Xsup at each time because of simultaneous SAME options (ViewHistime)
8354  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
8355  {
8356  cXinf = GetXinfValueFromMemo(HistoCode.Data());
8357  cXsup = GetXsupValueFromMemo(HistoCode.Data());
8358  }
8359  else
8360  {
8361  cXinf = GetXinfValueFromMemo();
8362  cXsup = GetXsupValueFromMemo();
8363  }
8364  //....... In case of only one run: in order to have cXinf < cXsup for "EvolProj" plot
8365  if( cXinf >= cXsup ){cXinf -= 1.; cXsup +=1.;}
8366 
8367  //.............................. histogram booking (ViewHisto)
8368  Axis_t xinf_his = cXinf; // ancillary variables since no const in arguments of TH1D
8369  Axis_t xsup_his = cXsup;
8370 
8371  TString TitleHisto = ";";
8372  if( opt_plot != fSameOnePlot )
8373  {TitleHisto = fCnaParHistos->GetQuantityName(HistoCode.Data());}
8374 
8375  //........ fill array histo_for_plot from hval_coordy (ViewHistime)
8376  for(Int_t i_run=0; i_run<fNbOfExistingRuns; i_run++)
8377  {
8378  Double_t XFromYGraph = hval_coordy[i_run];
8379  Double_t binXProjY = (Double_t)HisSizeEvolProj*(XFromYGraph - cXinf)/(cXsup - cXinf);
8380  Int_t ibinXProjY = (Int_t)binXProjY;
8381  if( ibinXProjY >= 0 && ibinXProjY<HisSizeEvolProj ){histo_for_plot[ibinXProjY]++;}
8382  }
8383 
8384  TH1D* h_his_evol_proj = new TH1D("histevolproj", TitleHisto.Data(),
8385  HisSizeEvolProj, xinf_his, xsup_his); fCnewRoot++;
8386 
8387  h_his_evol_proj->Reset();
8388 
8389  //.... direct histogram filling (ViewHistime)
8390  for(Int_t i=0; i<HisSizeEvolProj; i++)
8391  {
8392  Double_t yi = (Double_t)i/(Double_t)HisSizeEvolProj*(cXsup-cXinf) + cXinf;
8393  Double_t his_val = (Double_t)histo_for_plot[i];
8394  h_his_evol_proj->Fill(yi, his_val);
8395  }
8396 
8397  //------- H I S T O P R O J Y M I N / Y M A X M A N A G E M E N T
8398  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
8399  //.......... user's value if flag set to "ON"
8400  if( fFlagUserHistoMin == "ON" )
8401  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
8402  if( fFlagUserHistoMax == "ON" )
8403  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
8404  //................................. automatic min and/or max
8405  if( fFlagUserHistoMin == "AUTO" )
8406  {SetYminMemoFromValue(HistoCode.Data(), graph_ymin); fFlagUserHistoMin = "OFF";}
8407  if( fFlagUserHistoMax == "AUTO" )
8408  {SetYmaxMemoFromValue(HistoCode.Data(), graph_ymax); fFlagUserHistoMax = "OFF";}
8409 
8410  //................................. Init Ymin and Ymax for graph
8411  SetYminMemoFromPreviousMemo(HistoCode);
8412  SetYmaxMemoFromPreviousMemo(HistoCode);
8413 
8414  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8415  //.......... Find maximum in case of Proj (LIN scale only) // PS: EvolProj => in ViewHistime
8416  if( fFlagScaleY == "LIN" )
8417  {
8419  (HistoCode.Data(),
8421  }
8422 
8423  //--- Set ymin and ymax to the first HistoCode values for option SAME n
8424  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8425  {
8426  Double_t ymin = GetYminValueFromMemo(fHistoCodeFirst.Data());
8427  SetYminMemoFromValue(HistoCode.Data(), ymin);
8428 
8429  Double_t ymax = GetYmaxValueFromMemo(fHistoCodeFirst.Data());
8430  SetYmaxMemoFromValue(HistoCode.Data(), ymax);
8431  }
8432  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8433 
8434  //..... graph set ymin and ymax and consequently margin at top of the plot
8435  Int_t xFlagAutoYsupMargin = SetGraphFrameYminYmaxFromMemo(g_graph0, HistoCode);
8436  Int_t arg_AlreadyRead = 0;
8437 
8438  HistoPlot(h_his_evol_proj, HisSizeEvolProj,
8439  xinf_his, xsup_his,
8440  HistoCode.Data(), HistoType.Data(),
8441  StexStin_A, i0StinEcha, i0Sample,
8442  opt_scale_x, opt_scale_y, opt_plot, arg_AlreadyRead,
8443  xFlagAutoYsupMargin);
8444 
8445  h_his_evol_proj->Delete(); h_his_evol_proj = nullptr; fCdeleteRoot++;
8446  //*===> deleter l'histo sinon "Replacing existing histo (potential memory leak)" a l'execution
8447 
8448  } // end of if( HistoType == "EvolProj" )
8449  //---------------------------------------------------------------------------------- (ViewHistime)
8450 
8451  delete [] time_coordx; time_coordx = nullptr; fCdelete++;
8452  delete [] hval_coordy; hval_coordy = nullptr; fCdelete++;
8453  }
8454  else
8455  {
8456  std::cout << "!TEcnaHistos::ViewHistime(...)> The list of runs in file: " << list_of_run_file_name
8457  << " has " << nb_of_runs_in_list << " run numbers" << std::endl
8458  << " but none of them correspond to an existing ROOT file."
8459  << fTTBELL << std::endl;
8460  }
8461  } // end of if( fFapStexNumber > 0 )
8462  else
8463  {
8464  std::cout << "!TEcnaHistos::ViewHistime(...)> *ERROR* =====> "
8465  << fFapStexName << " number = " << fFapStexNumber << ". "
8466  << fFapStexName << " number must be in range [1," << fEcal->MaxStexInStas() << "] ";
8467  if( fFlagSubDet == "EB" ){std::cout << " (or [-18,+18])";}
8468  std::cout << fTTBELL << std::endl;
8469  }
8470  delete [] exist_indic; exist_indic = nullptr; fCdelete++;
8471  } // end of if( nb_of_runs_in_list > 0 )
8472  else
8473  {
8474  if( nb_of_runs_in_list == 0 )
8475  {
8476  std::cout << "!TEcnaHistos::ViewHistime(...)> The list of runs in file: " << list_of_run_file_name
8477  << " is empty !" << fTTBELL << std::endl;
8478  }
8479  if( nb_of_runs_in_list < 0 )
8480  {
8481  std::cout << "!TEcnaHistos::ViewHistime(...)> " << list_of_run_file_name
8482  << ": file not found in directory: " << fCfgHistoryRunListFilePath.Data() << fTTBELL << std::endl;
8483  }
8484  }
8485  } // end of if( OKHisto == 1 )
8486 } // end of ViewHistime
8487 
8488 //------------------------------------------------------------------------------------
8489 //
8490 // GetHistoryRunListParameters(...), AllocArraysForEvol(), GetListFileNumber(...)
8491 //
8492 //------------------------------------------------------------------------------------
8493 
8494 Int_t TEcnaHistos::GetHistoryRunListParameters(const TString& list_of_run_file_name, const TString& HistoCode)
8495 {
8496  // Build the array of run numbers from the list-of-runs .ascii file.
8497  // Return the list size
8498  // *=====> list_of_run_file_name is the name of the ASCII file containing the list of the runs
8499  //
8500  // SYNTAX OF THE FILE:
8501  //
8502  // HistoryRunList_EB_SM6_Analysis_1.ascii <- 1rst line: comment (file name for example)
8503  // 73677 <- 2nd line and others: run numbers (empty lines accepted)
8504  // 73688
8505  // 73689
8506  //
8507  // 73690
8508  // 73692
8509  //
8510  // In option SAME (of TEcnaHistos), several lists of runs can be called and these lists can have
8511  // DIFFERENT sizes (here the "size" is the number of runs of the list). In addition,
8512  // some runs in some lists may not exist in reality. So, we must adopt a convention which is
8513  // the following: the number of runs corresponds to the number of EXISTING runs
8514  // of the FIRST read list. Let be N1 this number.
8515  // If another list has more runs than N1 runs, we read only the first N1 runs.
8516  // If another list has less runs than N1 runs, we read all the runs of this list.
8517  //
8518  //--------------------------------------------------------------------------------------------------
8519 
8520  Int_t nb_of_runs_in_list = 0;
8521 
8522  //========= immediate return if file name is an empty string
8523  if( !strcmp(list_of_run_file_name.Data(), "\0") )
8524  {
8525  std::cout << "!TEcnaHistos::GetHistoryRunListParameters(...)> *** ERROR *** =====> "
8526  << " EMPTY STRING for list of run file name." << fTTBELL << std::endl;
8527  }
8528  else
8529  {
8530  // ===> increase the HistoryRunList file number
8531  if ( HistoCode == "H_Ped_Date" ){fNbOfListFileH_Ped_Date++;}
8532  if ( HistoCode == "H_TNo_Date" ){fNbOfListFileH_TNo_Date++;}
8533  if ( HistoCode == "H_MCs_Date" ){fNbOfListFileH_MCs_Date++;}
8534  if ( HistoCode == "H_LFN_Date" ){fNbOfListFileH_LFN_Date++;}
8535  if ( HistoCode == "H_HFN_Date" ){fNbOfListFileH_HFN_Date++;}
8536  if ( HistoCode == "H_SCs_Date" ){fNbOfListFileH_SCs_Date++;}
8537 
8538  if ( HistoCode == "H_Ped_RuDs" ){fNbOfListFileH_Ped_RuDs++;}
8539  if ( HistoCode == "H_TNo_RuDs" ){fNbOfListFileH_TNo_RuDs++;}
8540  if ( HistoCode == "H_MCs_RuDs" ){fNbOfListFileH_MCs_RuDs++;}
8541  if ( HistoCode == "H_LFN_RuDs" ){fNbOfListFileH_LFN_RuDs++;}
8542  if ( HistoCode == "H_HFN_RuDs" ){fNbOfListFileH_HFN_RuDs++;}
8543  if ( HistoCode == "H_SCs_RuDs" ){fNbOfListFileH_SCs_RuDs++;}
8544 
8545  fFapFileRuns = list_of_run_file_name.Data(); // (short name)
8546 
8547  //........... Add the path to the file name ( GetHistoryRunListParameters )
8548  TString xFileNameRunList = list_of_run_file_name.Data();
8549  const Text_t *t_file_name = (const Text_t *)xFileNameRunList.Data();
8550 
8551  //.............. replace the string "$HOME" by the true $HOME path
8552  if(fCfgHistoryRunListFilePath.BeginsWith("$HOME"))
8553  {
8554  fCfgHistoryRunListFilePath.Remove(0,5);
8555  const Text_t *t_file_nohome = (const Text_t *)fCfgHistoryRunListFilePath.Data(); // /scratch0/cna/...
8556 
8557  TString home_path = gSystem->Getenv("HOME");
8558  fCfgHistoryRunListFilePath = home_path; // /afs/cern.ch/u/USER
8559  fCfgHistoryRunListFilePath.Append(t_file_nohome); // /afs/cern.ch/u/USER/scratch0/cna/...
8560  }
8561 
8562  xFileNameRunList = fCfgHistoryRunListFilePath.Data();
8563 
8564  xFileNameRunList.Append('/');
8565  xFileNameRunList.Append(t_file_name);
8566 
8567  fFcin_f.open(xFileNameRunList.Data());
8568 
8569  //....................................... ( GetHistoryRunListParameters )
8570  if( fFcin_f.fail() == kFALSE )
8571  {
8572  //...................................... first reading to get the number of runs in the list
8573  fFcin_f.clear();
8574  std::string xHeadComment;
8575  fFcin_f >> xHeadComment;
8576  Int_t cRunNumber;
8577  Int_t list_size_read = 0;
8578 
8579  while( !fFcin_f.eof() ){fFcin_f >> cRunNumber; list_size_read++;}
8580  fFapNbOfRuns = list_size_read - 1;
8581 
8582  //...................................... second reading to get the run numbers
8583 
8584  //====== Return to the beginning of the file =====
8585  fFcin_f.clear();
8586  fFcin_f.seekg(0, std::ios::beg);
8587  //================================================
8588 
8589  std::string yHeadComment;
8590  fFcin_f >> yHeadComment;
8591 
8592  //....................... Set fFapMaxNbOfRuns to -1 at first call (first read file)
8593  //
8594  // fNbOfListFileEvolXXX is initialized to 0 in Init()
8595  // It is incremented once here above
8596  // So, at first call fNbOfListFileEvolXXX = 1
8597  // then fFapMaxNbOfRuns = -1
8598  //.......................................................................... (GetHistoryRunListParameters)
8599  if( (HistoCode == "H_Ped_Date" && fNbOfListFileH_Ped_Date == 1) ||
8600  (HistoCode == "H_TNo_Date" && fNbOfListFileH_TNo_Date == 1) ||
8601  (HistoCode == "H_MCs_Date" && fNbOfListFileH_MCs_Date == 1) ||
8602  (HistoCode == "H_LFN_Date" && fNbOfListFileH_LFN_Date == 1) ||
8603  (HistoCode == "H_HFN_Date" && fNbOfListFileH_HFN_Date == 1) ||
8604  (HistoCode == "H_SCs_Date" && fNbOfListFileH_SCs_Date == 1) ||
8605  (HistoCode == "H_Ped_RuDs" && fNbOfListFileH_Ped_RuDs == 1) ||
8606  (HistoCode == "H_TNo_RuDs" && fNbOfListFileH_TNo_RuDs == 1) ||
8607  (HistoCode == "H_MCs_RuDs" && fNbOfListFileH_MCs_RuDs == 1) ||
8608  (HistoCode == "H_LFN_RuDs" && fNbOfListFileH_LFN_RuDs == 1) ||
8609  (HistoCode == "H_HFN_RuDs" && fNbOfListFileH_HFN_RuDs == 1) ||
8610  (HistoCode == "H_SCs_RuDs" && fNbOfListFileH_SCs_RuDs == 1)){fFapMaxNbOfRuns = -1;}
8611 
8612  // first call: fFapMaxNbOfRuns = fFapNbOfRuns = nb of run from the first reading
8614  // next calls: fFapNbOfRuns must not be greater than fFapMaxNbOfRuns found at first time
8616 
8617  // Allocation and initialization of the array fT1DRunNumber[].
8618  //................. check maximum value for allocation
8620  {
8621  std::cout << "TEcnaHistos::GetHistoryRunListParameters(...)> Max number of runs in HistoryRunList = "
8622  << fFapMaxNbOfRuns
8623  << " too large, forced to parameter TEcnaParHistos->fMaxNbOfRunsInLists value (= "
8625  << "). Please, set this parameter to a larger value than " << fFapMaxNbOfRuns
8626  << fTTBELL << std::endl;
8628  }
8629  //................................. Alloc of the array and init
8630  if( fT1DRunNumber == nullptr )
8631  {
8632  if( fFapMaxNbOfRuns > 0 )
8633  {
8634  fT1DRunNumber = new Int_t[fFapMaxNbOfRuns]; fCnew++;
8635  }
8636  else
8637  {
8638  std::cout << "!TEcnaHistos::GetHistoryRunListParameters(...)> *** ERROR *** =====> fFapMaxNbOfRuns = "
8639  << fFapMaxNbOfRuns << ". Forced to 1." << fTTBELL << std::endl;
8640  fFapMaxNbOfRuns = 1;
8641  fT1DRunNumber = new Int_t[fFapMaxNbOfRuns]; fCnew++;
8642  }
8643  }
8644 
8645 
8646  //.................................... Init the list of runs
8647  for ( Int_t i_run = 0; i_run < fFapMaxNbOfRuns; i_run++ ){fT1DRunNumber[i_run] = -1;}
8648  //.................................... read the list of runs
8649  for (Int_t i_list = 0; i_list < fFapNbOfRuns; i_list++)
8650  {
8651  fFcin_f >> cRunNumber;
8652  fT1DRunNumber[i_list] = cRunNumber;
8653  }
8654  //........................................ ( GetHistoryRunListParameters )
8655  nb_of_runs_in_list = fFapNbOfRuns;
8656  fFcin_f.close();
8657  }
8658  else
8659  {
8660  fFcin_f.clear();
8661  std::cout << "!TEcnaHistos::GetHistoryRunListParameters(...)> *** ERROR *** =====> "
8662  << xFileNameRunList.Data() << " : file not found." << fTTBELL << std::endl;
8663  nb_of_runs_in_list = -1;
8664  }
8665  }
8666  return nb_of_runs_in_list;
8667 }
8668 // end of GetHistoryRunListParameters(...)
8669 
8670 //------------------------------------------------------------------------------------------------
8671 
8672 Int_t TEcnaHistos::GetListFileNumber(const TString& HistoCode)
8673 {
8674 // Get the number of the read list file
8675 
8676  Int_t number = 0;
8677 
8678  if ( HistoCode == "H_Ped_Date"){number = fNbOfListFileH_Ped_Date;}
8679  if ( HistoCode == "H_TNo_Date"){number = fNbOfListFileH_TNo_Date;}
8680  if ( HistoCode == "H_MCs_Date"){number = fNbOfListFileH_MCs_Date;}
8681  if ( HistoCode == "H_LFN_Date"){number = fNbOfListFileH_LFN_Date;}
8682  if ( HistoCode == "H_HFN_Date"){number = fNbOfListFileH_HFN_Date;}
8683  if ( HistoCode == "H_SCs_Date"){number = fNbOfListFileH_SCs_Date;}
8684  if ( HistoCode == "H_Ped_RuDs"){number = fNbOfListFileH_Ped_RuDs;}
8685  if ( HistoCode == "H_TNo_RuDs"){number = fNbOfListFileH_TNo_RuDs;}
8686  if ( HistoCode == "H_MCs_RuDs"){number = fNbOfListFileH_MCs_RuDs;}
8687  if ( HistoCode == "H_LFN_RuDs"){number = fNbOfListFileH_LFN_RuDs;}
8688  if ( HistoCode == "H_HFN_RuDs"){number = fNbOfListFileH_HFN_RuDs;}
8689  if ( HistoCode == "H_SCs_RuDs"){number = fNbOfListFileH_SCs_RuDs;}
8690  return number;
8691 }
8692 
8693 //--------------------------------------------------------------------------------------------------
8694 void TEcnaHistos::SetRunNumberFromList(const Int_t& xArgIndexRun, const Int_t& MaxNbOfRuns)
8695 {
8696  // Set run number for the xArgIndexRun_th run in the list of runs (evolution plots)
8697  // The array fT1DRunNumber[] have been obtained from a previous call
8698  // to GetHistoryRunListParameters(xFileNameRunList, HistoCode)
8699 
8700  if( xArgIndexRun >= 0 && xArgIndexRun < MaxNbOfRuns)
8701  {
8702  fFapRunNumber = fT1DRunNumber[xArgIndexRun];
8703  if( xArgIndexRun == 0 ){InitSpecParBeforeFileReading();} // SpecPar = Special Parameters (dates, times, run types)
8704  }
8705  else
8706  {
8707  std::cout << "!TEcnaHistos::SetRunNumberFromList(...)> **** ERROR **** Run index out of range in list of runs. xArgIndexRun = "
8708  << xArgIndexRun << " (MaxNbOfRuns = "<< MaxNbOfRuns << ")" << std::endl;
8709  }
8710 }
8711 
8712 //--------------------------------------------------------------------------------------------------
8714 {
8715  // Init parameters that will be set by reading the info which are in the results ROOT file
8716  // SpecPar = Special Parameters (dates, times, run types)
8717 
8718  fStartDate.Resize(charArrLen);
8719  fStartDate = "(date not found)";
8720 
8721  fStopDate.Resize(charArrLen);
8722  fStopDate = "(date not found)";
8723 
8724  fStartTime = (time_t)0;
8725  fStopTime = (time_t)0;
8726 
8727  fRunType = "(run type not found)";
8728 
8729 } // ------------- ( end of InitSpecParBeforeFileReading() ) -------------
8730 
8731 //======================================================================================
8732 //
8733 // C O M M E N T S / I N F O S P A V E S M E T H O D S
8734 //
8735 //======================================================================================
8736 
8738  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample,
8739  const TString& HistoCode)
8740 {
8741 // Check possibility to plot the histo
8742 
8743  Bool_t ok_view_histo = kFALSE;
8744 
8745  TString HistoType = fCnaParHistos->GetHistoType(HistoCode);
8746 
8747  TString root_file_name = aMyRootFile->GetRootFileNameShort();
8748 
8749  TVectorD vStin(fEcal->MaxStinEcnaInStex());
8750  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex() ; i++){vStin(i)=(Double_t)0.;}
8751  vStin = aMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
8752 
8753  if( aMyRootFile->DataExist() == kTRUE )
8754  {
8755  fStatusDataExist = kTRUE;
8756 
8757  Int_t Stin_ok = 0;
8758  for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++)
8759  {
8760  if ( vStin(index_Stin) == StexStin_A ){Stin_ok++;};
8761  }
8762 
8763  //.............................................. ok_view
8764  Int_t ok_view = 1;
8765 
8766  if( !( HistoType == "Global" || HistoType == "Proj" ) )
8767  {
8768  if( Stin_ok != 1)
8769  {
8770  Int_t StinNumber = StexStin_A;
8771  if( fFlagSubDet == "EE" )
8772  {StinNumber = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A);}
8773  std::cout << "!TEcnaHistos::GetOkViewHisto(...)> *ERROR* =====> " << "File: " << root_file_name
8774  << ", " << fFapStinName.Data() << " "
8775  << StinNumber
8776  << " not found. Available numbers = ";
8777  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
8778  {
8779  if( vStin(i) > 0 )
8780  {
8781  if( fFlagSubDet == "EB" ){std::cout << vStin(i) << ", ";}
8782  if( fFlagSubDet == "EE" )
8783  {std::cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";}
8784  }
8785  }
8786  std::cout << fTTBELL << std::endl;
8787  ok_view = -1;
8788  }
8789  else
8790  {
8791  ok_view = 1;
8792  }
8793  }
8794 
8795  //.............................................. ok_max_elt ( GetOkViewHisto(...) )
8796  Int_t ok_max_elt = 1;
8797 
8798  if( ( ( (HistoType == "H1Basic") || (HistoType == "Evol") || (HistoType == "EvolProj") )
8799  && (i0StinEcha >= 0) && (i0StinEcha<fEcal->MaxCrysInStin())
8800  && (i0Sample >= 0) && (i0Sample <fFapNbOfSamples ) ) ||
8801  !( (HistoType == "H1Basic") || (HistoType == "Evol") || (HistoType == "EvolProj") ))
8802  {ok_max_elt = 1;}
8803  else
8804  {
8805  Int_t Choffset = 0;
8806  if( fFlagSubDet == "EE" ){Choffset = 1;}
8807  if( ( (HistoType == "H1Basic") || (HistoType == "Evol") || (HistoType == "EvolProj") )
8808  && !( (i0StinEcha >= 0) && (i0StinEcha<fEcal->MaxCrysInStin()) ) )
8809  {std::cout << "!TEcnaHistos::GetOkViewHisto(...)> *ERROR* =====> " << "File: " << root_file_name
8810  << ". Wrong channel number. Value = " << i0StinEcha << " (required range: [" << Choffset << ", "
8811  << fEcal->MaxCrysInStin()-1+Choffset << "] )"
8812  << fTTBELL << std::endl;}
8813  if( (HistoCode == "D_Adc_EvDs" || HistoCode == "D_Adc_EvNb") &&
8814  !((i0Sample >= 0) && (i0Sample <fFapNbOfSamples)) )
8815  {std::cout << "!TEcnaHistos::GetOkViewHisto(...)> *ERROR* =====> " << "File: " << root_file_name
8816  << ". Wrong sample index. Value = " << i0Sample << " (required range: [0, "
8817  << fFapNbOfSamples-1 << "] )"
8818  << fTTBELL << std::endl;}
8819  ok_max_elt = -1;
8820  }
8821 
8822  if( (ok_view == 1) && (ok_max_elt == 1) )
8823  {
8824  ok_view_histo = kTRUE;
8825  }
8826  else
8827  {
8828  std::cout << "!TEcnaHistos::GetOkViewHisto(...)> At least one ERROR has been detected. ok_view = " << ok_view
8829  << ", ok_max_elt = " << ok_max_elt << fTTBELL << std::endl;
8830  }
8831  }
8832  else
8833  {
8834  fStatusDataExist = kFALSE;
8835 
8836  std::cout << "!TEcnaHistos::GetOkViewHisto(...)> No data in ROOT file "
8837  << ", aMyRootFile->DataExist() = " << aMyRootFile->DataExist() << fTTBELL << std::endl;
8838  }
8839  return ok_view_histo;
8840 }
8841 //..............................................................................................
8842 
8843 Int_t TEcnaHistos::SetHistoFrameYminYmaxFromMemo(TH1D* h_his0, const TString& HistoCode)
8844 {
8845 // Set min and max according to HistoCode
8846 
8847  // if Ymin = Ymax (or Ymin > Ymax): nothing done here
8848  // return xFlagAutoYsupMargin = 1
8849  //
8850  // if Ymin < Ymax: min and max calculated by h_his0->SetMinimum() and h_his0->SetMaximum()
8851  // return xFlagAutoYsupMargin = 0
8852 
8853  Int_t xFlagAutoYsupMargin = 1; // (SetHistoFrameYminYmaxFromMemo)
8854 
8855  if(HistoCode == "D_NOE_ChNb"){
8856  if(fD_NOE_ChNbYmin < fD_NOE_ChNbYmax){xFlagAutoYsupMargin = 0;
8857  h_his0->SetMinimum(fD_NOE_ChNbYmin); h_his0->SetMaximum(fD_NOE_ChNbYmax);}}
8858 
8859  if(HistoCode == "D_NOE_ChDs"){
8860  if(fD_NOE_ChDsYmin < fD_NOE_ChDsYmax){xFlagAutoYsupMargin = 0;
8861  h_his0->SetMinimum(fD_NOE_ChDsYmin); h_his0->SetMaximum(fD_NOE_ChDsYmax);}}
8862 
8863  if(HistoCode == "D_Ped_ChNb"){
8864  if(fD_Ped_ChNbYmin < fD_Ped_ChNbYmax){xFlagAutoYsupMargin = 0;
8865  h_his0->SetMinimum(fD_Ped_ChNbYmin); h_his0->SetMaximum(fD_Ped_ChNbYmax);}}
8866 
8867  if(HistoCode == "D_Ped_ChDs"){
8868  if(fD_Ped_ChDsYmin < fD_Ped_ChDsYmax){xFlagAutoYsupMargin = 0;
8869  h_his0->SetMinimum(fD_Ped_ChDsYmin); h_his0->SetMaximum(fD_Ped_ChDsYmax);}}
8870 
8871  if(HistoCode == "D_TNo_ChNb"){
8872  if(fD_TNo_ChNbYmin < fD_TNo_ChNbYmax){xFlagAutoYsupMargin = 0;
8873  h_his0->SetMinimum(fD_TNo_ChNbYmin); h_his0->SetMaximum(fD_TNo_ChNbYmax);}}
8874 
8875  if(HistoCode == "D_TNo_ChDs"){
8876  if(fD_TNo_ChDsYmin < fD_TNo_ChDsYmax){xFlagAutoYsupMargin = 0;
8877  h_his0->SetMinimum(fD_TNo_ChDsYmin); h_his0->SetMaximum(fD_TNo_ChDsYmax);}}
8878 
8879  if(HistoCode == "D_MCs_ChNb"){
8880  if(fD_MCs_ChNbYmin < fD_MCs_ChNbYmax){xFlagAutoYsupMargin = 0;
8881  h_his0->SetMinimum(fD_MCs_ChNbYmin); h_his0->SetMaximum(fD_MCs_ChNbYmax);}}
8882 
8883  if(HistoCode == "D_MCs_ChDs"){
8884  if(fD_MCs_ChDsYmin < fD_MCs_ChDsYmax){xFlagAutoYsupMargin = 0;
8885  h_his0->SetMinimum(fD_MCs_ChDsYmin); h_his0->SetMaximum(fD_MCs_ChDsYmax);}}
8886 
8887  if(HistoCode == "D_LFN_ChNb"){
8888  if(fD_LFN_ChNbYmin < fD_LFN_ChNbYmax){xFlagAutoYsupMargin = 0;
8889  h_his0->SetMinimum(fD_LFN_ChNbYmin); h_his0->SetMaximum(fD_LFN_ChNbYmax);}}
8890 
8891  if(HistoCode == "D_LFN_ChDs"){
8892  if(fD_LFN_ChDsYmin < fD_LFN_ChDsYmax){xFlagAutoYsupMargin = 0;
8893  h_his0->SetMinimum(fD_LFN_ChDsYmin); h_his0->SetMaximum(fD_LFN_ChDsYmax);}}
8894 
8895  if(HistoCode == "D_HFN_ChNb"){
8896  if(fD_HFN_ChNbYmin < fD_HFN_ChNbYmax){xFlagAutoYsupMargin = 0;
8897  h_his0->SetMinimum(fD_HFN_ChNbYmin); h_his0->SetMaximum(fD_HFN_ChNbYmax);}}
8898 
8899  if(HistoCode == "D_HFN_ChDs"){
8900  if(fD_HFN_ChDsYmin < fD_HFN_ChDsYmax){xFlagAutoYsupMargin = 0;
8901  h_his0->SetMinimum(fD_HFN_ChDsYmin); h_his0->SetMaximum(fD_HFN_ChDsYmax);}}
8902 
8903  if(HistoCode == "D_SCs_ChNb"){
8904  if(fD_SCs_ChNbYmin < fD_SCs_ChNbYmax){xFlagAutoYsupMargin = 0;
8905  h_his0->SetMinimum(fD_SCs_ChNbYmin); h_his0->SetMaximum(fD_SCs_ChNbYmax);}}
8906 
8907  if(HistoCode == "D_SCs_ChDs"){
8908  if(fD_SCs_ChDsYmin < fD_SCs_ChDsYmax){xFlagAutoYsupMargin = 0;
8909  h_his0->SetMinimum(fD_SCs_ChDsYmin); h_his0->SetMaximum(fD_SCs_ChDsYmax);}}
8910 
8911  if(HistoCode == "D_MSp_SpNb"){
8912  if(fD_MSp_SpNbYmin < fD_MSp_SpNbYmax){xFlagAutoYsupMargin = 0;
8913  h_his0->SetMinimum(fD_MSp_SpNbYmin); h_his0->SetMaximum(fD_MSp_SpNbYmax);}}
8914 
8915  if(HistoCode == "D_MSp_SpDs"){
8916  if(fD_MSp_SpDsYmin < fD_MSp_SpDsYmax){xFlagAutoYsupMargin = 0;
8917  h_his0->SetMinimum(fD_MSp_SpDsYmin); h_his0->SetMaximum(fD_MSp_SpDsYmax);}}
8918 
8919  if(HistoCode == "D_SSp_SpNb"){
8920  if(fD_SSp_SpNbYmin < fD_SSp_SpNbYmax){xFlagAutoYsupMargin = 0;
8921  h_his0->SetMinimum(fD_SSp_SpNbYmin); h_his0->SetMaximum(fD_SSp_SpNbYmax);}}
8922 
8923  if(HistoCode == "D_SSp_SpDs"){
8924  if(fD_SSp_SpDsYmin < fD_SSp_SpDsYmax){xFlagAutoYsupMargin = 0;
8925  h_his0->SetMinimum(fD_SSp_SpDsYmin); h_his0->SetMaximum(fD_SSp_SpDsYmax);}}
8926 
8927  if(HistoCode == "D_Adc_EvNb"){
8928  if(fD_Adc_EvNbYmin < fD_Adc_EvNbYmax){xFlagAutoYsupMargin = 0;
8929  h_his0->SetMinimum(fD_Adc_EvNbYmin); h_his0->SetMaximum(fD_Adc_EvNbYmax);}}
8930 
8931  if(HistoCode == "D_Adc_EvDs"){
8932  if(fD_Adc_EvDsYmin < fD_Adc_EvDsYmax){xFlagAutoYsupMargin = 0;
8933  h_his0->SetMinimum(fD_Adc_EvDsYmin); h_his0->SetMaximum(fD_Adc_EvDsYmax);}}
8934 
8935  if(HistoCode == "H2CorccInStins"){
8936  if(fH2CorccInStinsYmin < fH2CorccInStinsYmax){xFlagAutoYsupMargin = 0;
8937  h_his0->SetMinimum(fH2CorccInStinsYmin); h_his0->SetMaximum(fH2CorccInStinsYmax);}}
8938 
8939  if(HistoCode == "H2LFccMosMatrix"){
8940  if(fH2LFccMosMatrixYmin < fH2LFccMosMatrixYmax){xFlagAutoYsupMargin = 0;
8941  h_his0->SetMinimum(fH2LFccMosMatrixYmin); h_his0->SetMaximum(fH2LFccMosMatrixYmax);}}
8942 
8943  if(HistoCode == "H2HFccMosMatrix"){
8944  if(fH2HFccMosMatrixYmin < fH2HFccMosMatrixYmax){xFlagAutoYsupMargin = 0;
8945  h_his0->SetMinimum(fH2HFccMosMatrixYmin); h_his0->SetMaximum(fH2HFccMosMatrixYmax);}}
8946 
8947  if(HistoCode == "H_Ped_RuDs"){
8948  if(fH_Ped_RuDsYmin < fH_Ped_RuDsYmax){xFlagAutoYsupMargin = 0;
8949  h_his0->SetMinimum(fH_Ped_RuDsYmin); h_his0->SetMaximum(fH_Ped_RuDsYmax);}}
8950 
8951  if(HistoCode == "H_TNo_RuDs"){
8952  if(fH_TNo_RuDsYmin < fH_TNo_RuDsYmax){xFlagAutoYsupMargin = 0;
8953  h_his0->SetMinimum(fH_TNo_RuDsYmin); h_his0->SetMaximum(fH_TNo_RuDsYmax);}}
8954 
8955  if(HistoCode == "H_MCs_RuDs"){
8956  if(fH_MCs_RuDsYmin < fH_MCs_RuDsYmax){xFlagAutoYsupMargin = 0;
8957  h_his0->SetMinimum(fH_MCs_RuDsYmin); h_his0->SetMaximum(fH_MCs_RuDsYmax);}}
8958 
8959  if(HistoCode == "H_LFN_RuDs"){
8960  if(fH_LFN_RuDsYmin < fH_LFN_RuDsYmax){xFlagAutoYsupMargin = 0;
8961  h_his0->SetMinimum(fH_LFN_RuDsYmin); h_his0->SetMaximum(fH_LFN_RuDsYmax);}}
8962 
8963  if(HistoCode == "H_HFN_RuDs"){
8964  if(fH_HFN_RuDsYmin < fH_HFN_RuDsYmax){xFlagAutoYsupMargin = 0;
8965  h_his0->SetMinimum(fH_HFN_RuDsYmin); h_his0->SetMaximum(fH_HFN_RuDsYmax);}}
8966 
8967  if(HistoCode == "H_SCs_RuDs"){
8968  if(fH_SCs_RuDsYmin < fH_SCs_RuDsYmax){xFlagAutoYsupMargin = 0;
8969  h_his0->SetMinimum(fH_SCs_RuDsYmin); h_his0->SetMaximum(fH_SCs_RuDsYmax);}}
8970 
8971  return xFlagAutoYsupMargin;
8972 } // end of SetHistoFrameYminYmaxFromMemo
8973 
8974 Int_t TEcnaHistos::SetGraphFrameYminYmaxFromMemo(TGraph* g_graph0, const TString& HistoCode)
8975 {
8976 // Set min and max according to HistoCode
8977 
8978  Int_t xFlagAutoYsupMargin = 1; // DEFAULT: 1 = min and max calulated by ROOT, 0 = by this code
8979 
8980  if(HistoCode == "H_Ped_Date"){
8981  if(fH_Ped_DateYmin < fH_Ped_DateYmax){xFlagAutoYsupMargin = 0;
8982  g_graph0->SetMinimum(fH_Ped_DateYmin); g_graph0->SetMaximum(fH_Ped_DateYmax);}}
8983 
8984  if(HistoCode == "H_TNo_Date"){
8985  if(fH_TNo_DateYmin < fH_TNo_DateYmax){xFlagAutoYsupMargin = 0;
8986  g_graph0->SetMinimum(fH_TNo_DateYmin); g_graph0->SetMaximum(fH_TNo_DateYmax);}}
8987 
8988  if(HistoCode == "H_MCs_Date"){
8989  if(fH_MCs_DateYmin < fH_MCs_DateYmax){xFlagAutoYsupMargin = 0;
8990  g_graph0->SetMinimum(fH_MCs_DateYmin); g_graph0->SetMaximum(fH_MCs_DateYmax);}}
8991 
8992  if(HistoCode == "H_LFN_Date"){
8993  if(fH_LFN_DateYmin < fH_LFN_DateYmax){xFlagAutoYsupMargin = 0;
8994  g_graph0->SetMinimum(fH_LFN_DateYmin); g_graph0->SetMaximum(fH_LFN_DateYmax);}}
8995 
8996  if(HistoCode == "H_HFN_Date"){
8997  if(fH_HFN_DateYmin < fH_HFN_DateYmax){xFlagAutoYsupMargin = 0;
8998  g_graph0->SetMinimum(fH_HFN_DateYmin); g_graph0->SetMaximum(fH_HFN_DateYmax);}}
8999 
9000  if(HistoCode == "H_SCs_Date"){
9001  if(fH_SCs_DateYmin < fH_SCs_DateYmax){xFlagAutoYsupMargin = 0;
9002  g_graph0->SetMinimum(fH_SCs_DateYmin); g_graph0->SetMaximum(fH_SCs_DateYmax);}}
9003 
9004  return xFlagAutoYsupMargin;
9005 } // end of SetGraphFrameYminYmaxFromMemo
9006 
9007 //..............................................................................................
9008 Double_t TEcnaHistos::GetYminFromHistoFrameAndMarginValue(TH1D* h_his0, const Double_t margin_factor)
9009 {
9010 //Calculation for automatic minimum with margin
9011  Double_t minproj = h_his0->GetMinimum();
9012  Double_t maxproj = h_his0->GetMaximum();
9013  minproj = minproj - (maxproj-minproj)*margin_factor;
9014  return minproj;
9015 }
9016 
9017 Double_t TEcnaHistos::GetYmaxFromHistoFrameAndMarginValue(TH1D* h_his0, const Double_t margin_factor)
9018 {
9019 //Calculation for automatic maximum with margin
9020  Double_t minproj = h_his0->GetMinimum();
9021  Double_t maxproj = h_his0->GetMaximum();
9022  maxproj = maxproj + (maxproj-minproj)*margin_factor;
9023  return maxproj;
9024 }
9025 
9026 Double_t TEcnaHistos::GetYminFromGraphFrameAndMarginValue(TGraph* g_graph0, const Double_t margin_factor)
9027 {
9028 //Calculation for automatic minimum with margin
9029  Double_t graph_ymin = g_graph0->GetY()[0];
9030  for(Int_t i=1; i<g_graph0->GetN(); i++)
9031  {if( g_graph0->GetY()[i] < graph_ymin ){graph_ymin = g_graph0->GetY()[i];}}
9032 
9033  Double_t graph_ymax = g_graph0->GetY()[0];
9034  for(Int_t i=1; i<g_graph0->GetN(); i++)
9035  {if( g_graph0->GetY()[i] > graph_ymax ){graph_ymax = g_graph0->GetY()[i];}}
9036 
9037  graph_ymin = graph_ymin - (graph_ymax-graph_ymin)*margin_factor;
9038  return graph_ymin;
9039 }
9040 Double_t TEcnaHistos::GetYmaxFromGraphFrameAndMarginValue(TGraph* g_graph0, const Double_t margin_factor)
9041 {
9042 //Calculation for automatic maximum with margin
9043  Double_t graph_ymin = g_graph0->GetY()[0];
9044  for(Int_t i=1; i<g_graph0->GetN(); i++)
9045  {if( g_graph0->GetY()[i] < graph_ymin ){graph_ymin = g_graph0->GetY()[i];}}
9046 
9047  Double_t graph_ymax = g_graph0->GetY()[0];
9048  for(Int_t i=1; i<g_graph0->GetN(); i++)
9049  {if( g_graph0->GetY()[i] > graph_ymax ){graph_ymax = g_graph0->GetY()[i];}}
9050 
9051  graph_ymax = graph_ymax + (graph_ymax-graph_ymin)*margin_factor;
9052  return graph_ymax;
9053 }
9054 //----------------------------------------------- HistoPlot
9055 
9056 void TEcnaHistos::HistoPlot(TH1D* h_his0, const Int_t& HisSize,
9057  const Axis_t& xinf_his, const Axis_t& xsup_his,
9058  const TString& HistoCode, const TString& HistoType,
9059  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample,
9060  const Int_t& opt_scale_x, const Int_t& opt_scale_y,
9061  const TString& opt_plot, const Int_t& arg_AlreadyRead,
9062  const Int_t& xFlagAutoYsupMargin)
9063 {
9064  // Plot 1D histogram
9065 
9066  UInt_t canv_w = fCnaParHistos->SetCanvasWidth(HistoCode.Data(), opt_plot);
9067  UInt_t canv_h = fCnaParHistos->SetCanvasHeight(HistoCode.Data(), opt_plot);
9068 
9069  TString QuantityName = " ";
9070  QuantityName.Resize(charArrLen);
9071  QuantityName = fCnaParHistos->GetQuantityName(HistoCode.Data());
9072 
9073 
9074  if( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 )
9075  {
9076  SetHistoPresentation(h_his0, HistoType.Data(), opt_plot); // (gStyle parameters)
9077  //.................................................. prepa paves commentaires (HistoPlot)
9078  SetAllPavesViewHisto(HistoCode.Data(), StexStin_A, i0StinEcha, i0Sample, opt_plot.Data(), arg_AlreadyRead);
9079  }
9080 
9081  //..................................................... Canvas name (HistoPlot)
9082  TString canvas_name = SetCanvasName(HistoCode.Data(), opt_scale_x, opt_scale_y,
9083  opt_plot.Data(), arg_AlreadyRead,
9084  StexStin_A, i0StinEcha, i0Sample);
9085  //..................................................... Canvas allocations (HistoPlot)
9086  TCanvas* MainCanvas = nullptr;
9087 
9088  if(opt_plot == fOnlyOnePlot && (arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) )
9089  {
9090  MainCanvas = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w , canv_h); fCnewRoot++;
9091  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();
9092  }
9093 
9094  if( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
9095  {if(GetMemoFlag(HistoCode, opt_plot) == "Free")
9096  {MainCanvas = CreateCanvas(HistoCode, opt_plot, canvas_name, canv_w, canv_h);
9097  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();}}
9098 
9099  // std::cout << "*TEcnaHistos::HistoPlot(...)> Plot is displayed on canvas ----> " << canvas_name.Data() << std::endl;
9100 
9101  //--------------- EE => SC for construction, EB => Xtal in SM (default: Stin ECNA number, i0StinEcha)
9102  Int_t Stex_StinCons = StexStin_A; // Stex_StinCons = Tower for EB, SC for construction for EE
9103  Int_t n1StexCrys = i0StinEcha+1; // n1StexCrys = Crys in SM for EB, ECNA
9104 
9105  if( StexStin_A >= 1 && StexStin_A <= fEcal->MaxStinEcnaInStex() )
9106  {
9107  if( fFlagSubDet == "EB" )
9108  {n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);}
9109  if( fFlagSubDet == "EE" )
9110  {Stex_StinCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A);}
9111  }
9112 
9113  //------ String for StexNumber ( to display "EB" or "EE" if Stex = 0 )
9114  TString sFapStexNumber = StexNumberToString(fFapStexNumber);
9115 
9116  //============================================================================= (HistoPlot)
9117  //
9118  // 1st OPERATIONS: Pave texts preparation and first Draw.
9119  // SetParametersCanvas
9120  // Set Memo Flags.
9121  // Set main_subpad and main_pavtxt
9122  //
9123  //=============================================================================
9124  TVirtualPad* main_subpad = nullptr; // main_subpad: Pad for the histo
9125  TPaveText* main_pavtxt = nullptr; // Pave for the "Several Changing" parameters (options SAME and SAME n)
9126 
9127  Int_t xMemoPlotSame = 1; // a priori ==> SAME plot
9128 
9129  //========================================= Option ONLYONE (HistoPlot)
9130  if( opt_plot == fOnlyOnePlot )
9131  {
9132  if( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 )
9133  {
9134  //.................................... Draw titles and paves (pad = main canvas)
9135  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
9136  fPavComStex->Draw();
9137  if( !( HistoType == "Global" || HistoType == "Proj" ) ){fPavComStin->Draw(); fPavComXtal->Draw();}
9138 
9139  if( HistoType == "EvolProj" )
9140  {
9141  fPavComEvolRuns->Draw();
9142  fPavComEvolNbOfEvtsAna->Draw();
9143  }
9144  else
9145  {
9146  fPavComAnaRun->Draw();
9147  fPavComNbOfEvts->Draw();
9148  }
9149 
9150  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
9151  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
9152  Double_t y_low = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
9153  Double_t y_up = fCnaParHistos->BoxBottomY("top_right_box_EB") - 0.005;
9154  Color_t fond_pad = fCnaParHistos->ColorDefinition("blanc");
9155 
9156  Double_t x_margin = x_low;
9157  Double_t y_margin = y_low;
9158  MainCanvas->Divide( 1, 1, x_margin, y_margin, fond_pad);
9159  // Divide(nx, ny, x_margin, y_margin, color);
9160 
9161  gPad->cd(1);
9162  main_subpad = gPad;
9163  main_subpad->SetPad(x_low, y_low, x_up, y_up);
9164 
9165  xMemoPlotSame = 0;
9166  }
9167  if (arg_AlreadyRead > 1 )
9168  {main_subpad = fCurrentPad;}
9169 
9170  } // end of if(opt_plot == fOnlyOnePlot && (arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) )
9171 
9172  //========================================= Options SAME and SAME n (HistoPlot)
9173  if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9174  {
9175  //..................... First call in options SAME and SAME n
9176  if( GetMemoFlag(HistoCode, opt_plot) == "Free" )
9177  {
9178  //Call to SetParametersPavTxt
9179  //fPavTxt<HISTOCODE> = fPavComSeveralChanging; => come from SetAllPavesViewHisto
9180  SetParametersPavTxt(HistoCode, opt_plot);
9181 
9182  //---------------- Call to ActivePavTxt
9183  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
9184  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
9185 
9186  //---------------------------- Set texts for pave "several changing", options SAME and SAME n
9187  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
9188 
9189  main_pavtxt->SetTextAlign(fTextPaveAlign);
9190  main_pavtxt->SetTextFont(fTextPaveFont);
9191  main_pavtxt->SetBorderSize(fTextBorderSize);
9192  Float_t cTextPaveSize = 0.025;
9193  if( HistoType == "H1Basic" || HistoType == "SampProj" || HistoType == "H1BasicProj" ||
9194  HistoType == "Proj" || HistoType == "EvolProj" )
9195  {cTextPaveSize = 0.025;}
9196  main_pavtxt->SetTextSize(cTextPaveSize);
9197 
9198  char f_in[charArrLen];
9199 
9200  //------------------------------------------------------------ titles pave "several" (HistoPlot)
9201  TString DecalStexName = "";
9202  if( fFlagSubDet == "EB" ){DecalStexName = " ";}
9203  TString DecalStinName = "";
9204  if( fFlagSubDet == "EE" ){DecalStinName = " ";}
9205 
9206  TString sStexOrStasName = "";
9207  if( fFapStexNumber == 0 ){sStexOrStasName = " ";}
9208  if( fFapStexNumber != 0 ){sStexOrStasName = fFapStexName;}
9209 
9210  if( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot )
9211  {
9212  if( HistoType == "SampGlobal" )
9213  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s %s%s %s %s Sample",
9214  DecalStexName.Data(), sStexOrStasName.Data(),
9215  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9216  if( HistoType == "SampProj" )
9217  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s %s%s %s %s Sample",
9218  DecalStexName.Data(), sStexOrStasName.Data(),
9219  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9220  if( HistoType == "H1Basic" || HistoType == "H1BasicProj" )
9221  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s %s%s %s %s",
9222  DecalStexName.Data(), sStexOrStasName.Data(),
9223  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9224  if((HistoType == "Global") || (HistoType == "Proj") )
9225  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s",
9226  DecalStexName.Data(), sStexOrStasName.Data());}
9227 
9228  if( HistoType == "EvolProj" )
9229  {sprintf(f_in, "Analysis Samp Evts range Nb Evts %s%s %s%s %s %s",
9230  DecalStexName.Data(), sStexOrStasName.Data(),
9231  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9232  }
9233 
9234  TText* ttit = main_pavtxt->AddText(f_in);
9235  ttit->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
9236 
9237  //------------------------------------------------------------ values pave "several" (HistoPlot)
9238 
9239  //.................................... option SAME n only (HistoPlot)
9240  if( opt_plot == fSameOnePlot)
9241  {
9242  if( (HistoType == "Global") || (HistoType == "Proj") || (HistoType == "H1BasicProj") )
9243  {
9244  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s %-25s",
9247  sFapStexNumber.Data(), QuantityName.Data());
9248  }
9249 
9250  if( HistoType == "EvolProj" )
9251  {
9252  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%7d %-25s",
9254  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());
9255  }
9256 
9257  } // end of if for option SAME n only
9258 
9259  //..................................... option SAME (HistoPlot)
9260  if( opt_plot == fSeveralPlot )
9261  {
9262  Int_t kSample = i0Sample+1; // Sample number range = [1,n<=10]
9263 
9264  if( HistoType == "SampGlobal" )
9265  {
9266  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9269  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9270  }
9271  if( HistoType == "SampProj" )
9272  {
9273  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9276  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9277  }
9278  if( HistoType == "H1Basic" || HistoType == "H1BasicProj" )
9279  {
9280  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d",
9283  Stex_StinCons, n1StexCrys, i0StinEcha);
9284  }
9285  if( (HistoType == "Global") || (HistoType == "Proj") )
9286  {
9287  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s",
9290  }
9291 
9292  if( HistoType == "EvolProj" )
9293  {
9294  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %4s%7d%5d%5d",
9295  fFapAnaType.Data(), fFapNbOfSamples,
9297  Stex_StinCons, n1StexCrys, i0StinEcha);
9298  }
9299  }
9300 
9301  TText* tt = main_pavtxt->AddText(f_in);
9302  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
9303 
9304  //---------------- Draw the "several changing" pave with its text in the Canvas (AT FIRST TIME)
9305  main_pavtxt->Draw();
9306  //---------------- Draw evol run pave if "EvolProj" (AT FIRST TIME)
9307  if( HistoType == "EvolProj" ){fPavComEvolRuns->Draw();}
9308 
9309  //---------------- Call to SetParametersCanvas
9310  //fImp<HISTOCODE> = (TCanvasImp*)fCanv<HISTOCODE>->GetCanvasImp();
9311  //fCanv<HISTOCODE>->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
9312  //fPad<HISTOCODE> = gPad;
9313  //fMemoPlot<HISTOCODE> = 1; =======> set MemoFlag to "Buzy"
9314  //fMemoColor<HISTOCODE> = 0;
9315  SetParametersCanvas(HistoCode, opt_plot);
9316 
9317  //---------------- Set xMemoPlotSame to 0
9318  xMemoPlotSame = 0;
9319  } // end of if( GetMemoFlag(HistoCode, opt_plot) == "Free" ) (HistoPlot)
9320 
9321  //.......... First and further calls in options SAME and SAME n (fMemoPlot<HISTOCODE> = 1)
9322  if(GetMemoFlag(HistoCode, opt_plot) == "Busy")
9323  {
9324  //---------------- Call to ActivePavTxt
9325  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
9326  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
9327 
9328  //---------------- Call to ActivePad
9329  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
9330 
9331  //---------------- Recover pointer to the current canvas
9332  MainCanvas = GetCurrentCanvas(HistoCode.Data(), opt_plot.Data());
9333  }
9334  } // end of if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9335 
9336 
9337  //============================================================================= (HistoPlot)
9338  //
9339  // 2nd OPERATIONS: Write and Draw the parameter values in the
9340  // "several changing" pave (options SAME and SAME n)
9341  // and Draw Histo
9342  //=============================================================================
9343  if(main_subpad != nullptr)
9344  {
9345  if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9346  {
9347  //------------------------------------------------------------ values
9348  if(xMemoPlotSame != 0)
9349  {
9350  // main_pavtxt = fPavComSeveralChanging = fPavTxt<HISTOCODE>
9351  main_pavtxt->SetTextAlign(fTextPaveAlign);
9352  main_pavtxt->SetTextFont(fTextPaveFont);
9353  main_pavtxt->SetBorderSize(fTextBorderSize);
9354  Float_t cTextPaveSize = 0.025;
9355  if( HistoType == "H1Basic" || HistoType == "SampProj"
9356  || HistoType == "Proj" || HistoType == "EvolProj" || HistoType == "H1BasicProj" )
9357  {cTextPaveSize = 0.025;}
9358  main_pavtxt->SetTextSize(cTextPaveSize);
9359 
9360  char f_in[charArrLen];
9361 
9362  if( opt_plot == fSameOnePlot )
9363  {
9364  if( (HistoType == "Global") || (HistoType == "Proj") )
9365  {
9366  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s %-25s",
9369  sFapStexNumber.Data(), QuantityName.Data());
9370  }
9371 
9372  if( HistoType == "EvolProj" )
9373  {
9374  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%7d %-25s",
9375  fFapAnaType.Data(), fFapNbOfSamples,
9377  Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());
9378  }
9379  }
9380 
9381  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
9382  {
9383  Int_t kSample = i0Sample+1; // Sample number range = [1,n<=10] (HistoPlot)
9384 
9385  if(HistoType == "SampGlobal" )
9386  {
9387  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9390  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9391  }
9392  if( HistoType == "SampProj" )
9393  {
9394  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9397  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9398  }
9399  if( HistoType == "H1Basic" || HistoType == "H1BasicProj")
9400  {
9401  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d",
9404  Stex_StinCons, n1StexCrys, i0StinEcha);
9405  }
9406  if( (HistoType == "Global") || (HistoType == "Proj") )
9407  {
9408  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s",
9411  }
9412 
9413  if( HistoType == "EvolProj" )
9414  {
9415  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %4s%7d%5d%5d",
9416  fFapAnaType.Data(), fFapNbOfSamples,
9418  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha);
9419  }
9420  }
9421 
9422  TText *tt = main_pavtxt->AddText(f_in);
9423  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
9424  MainCanvas->cd(); gStyle->SetOptDate(0);
9425  main_pavtxt->Draw();
9426 
9427  }
9428 
9429  main_subpad->cd();
9430  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
9431  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
9432  Double_t y_low = fCnaParHistos->BoxTopY("several_plots_box") + 0.005;
9433  Double_t y_up = fCnaParHistos->BoxBottomY("general_comment") - 0.005;
9434  if( opt_plot == fSameOnePlot && HistoType == "EvolProj" )
9435  {y_up = fCnaParHistos->BoxBottomY("top_left_box_EB") - 0.005;}
9436  main_subpad->SetPad(x_low, y_low, x_up, y_up);
9437  } // end of if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9438 
9439  //............................................ Style (HistoPlot)
9440  SetViewHistoColors(h_his0, HistoCode.Data(), opt_plot, arg_AlreadyRead);
9441 
9442  //................................. Set axis titles
9443  TString axis_x_var_name = SetHistoXAxisTitle(HistoCode);
9444  TString axis_y_var_name = SetHistoYAxisTitle(HistoCode);
9445  h_his0->GetXaxis()->SetTitle(axis_x_var_name);
9446  h_his0->GetYaxis()->SetTitle(axis_y_var_name);
9447 
9448  Int_t lin_scale = 0;
9449  Int_t log_scale = 1;
9450 
9451  if(opt_scale_x == fOptScaleLinx){gPad->SetLogx(lin_scale);}
9452  if(opt_scale_x == fOptScaleLogx){gPad->SetLogx(log_scale);}
9453  if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(lin_scale);}
9454  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(log_scale);}
9455 
9456  //---------------------------------------------------------------- Draw histo (HistoPlot)
9457  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0 ){h_his0->DrawCopy();}
9458  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 1 ){h_his0->DrawCopy();}
9459  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead > 1 ){h_his0->DrawCopy("AHSAME");}
9460 
9461  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
9462  {
9463  if(xMemoPlotSame == 0){h_his0->DrawCopy();}
9464  if(xMemoPlotSame != 0){h_his0->DrawCopy("SAME");}
9465  }
9466  //----------------------------------------------------------------
9467 
9468  //.................... Horizontal line at y=0 (HistoPlot)
9469  if( !( HistoCode == "D_Adc_EvDs" || HistoCode == "D_Adc_EvNb" ||
9470  HistoType == "Proj" || HistoType == "SampProj" ||
9471  HistoType == "EvolProj" || HistoType == "H1BasicProj" ) &&
9472  !( HistoType == "H1Basic" && arg_AlreadyRead == 0 ) )
9473  {
9474  Double_t yinf = h_his0->GetMinimum();
9475  Double_t ysup = h_his0->GetMaximum();
9476  if( yinf <= (Double_t)0. && ysup >= (Double_t)0. )
9477  {TLine* lin = new TLine(0.,0.,(Double_t)HisSize, 0.); fCnewRoot++;
9478  lin->Draw();}
9479  }
9480 
9481  if( ( opt_plot == fOnlyOnePlot )
9482  || ( (opt_plot == fSeveralPlot || opt_plot == fSameOnePlot) && xMemoPlotSame == 0 ) )
9483  {
9484  Double_t yinf = (Double_t)h_his0->GetMinimum();
9485  Double_t ysup = (Double_t)h_his0->GetMaximum();
9486 
9487  if(xFlagAutoYsupMargin == 1)
9488  {
9489  if( yinf >= ysup ){yinf = (Double_t)0.; ysup += ysup;} // ROOT default if ymin >= ymax
9490  Double_t MaxMarginFactor = (Double_t)0.05; // frame top line = 5% above the maximum
9491  ysup += (ysup-yinf)*MaxMarginFactor; // ROOT default if ymin < ymax
9492  }
9493 
9494  char f_in[charArrLen];
9495 
9496  //.................... Vertical lines for Data sectors (EE Global plot only)
9497  if( fFlagSubDet == "EE" && fFapStexNumber == 0 )
9498  {
9499  //............................................................. Data Sectors (HistoPlot)
9500  Color_t coul_DS = fCnaParHistos->ColorDefinition("noir");
9501  Int_t DeeOffset = 0;
9502  for(Int_t n1Dee=1; n1Dee<=4; n1Dee++)
9503  {
9504  if( n1Dee == 4 ){DeeOffset = 0;}
9505  if( n1Dee == 3 ){DeeOffset = fEcal->MaxSCForConsInDee();} // 149
9506  if( n1Dee == 2 ){DeeOffset = 2*fEcal->MaxSCForConsInDee();} // 446
9507  if( n1Dee == 1 ){DeeOffset = 3*fEcal->MaxSCForConsInDee();} // 595
9508 
9509  Double_t ydee = ysup + (ysup-yinf)/(Double_t)15.;
9510  Double_t xBinDee = DeeOffset + fEcal->MaxSCForConsInDee()/(Double_t)2.;
9511  sprintf( f_in, "D%d", n1Dee );
9512  TText *text_Dee = new TText(xBinDee, ydee, f_in); fCnewRoot++;
9513  text_Dee->SetTextColor(coul_DS);
9514  text_Dee->SetTextSize((Double_t)0.04);
9515  text_Dee->Draw("SAME");
9516 
9517  Double_t DSLabelOffset = (Double_t)12;
9518 
9519  for(Int_t i=1; i<5; i++)
9520  {
9521  Int_t iDS = 0;
9522  if( n1Dee == 1 ){iDS = i;}
9523  if( n1Dee == 2 ){iDS = i+4;}
9524  if( n1Dee == 3 ){iDS = i+5;}
9525  if( n1Dee == 4 ){iDS = i+1;}
9526 
9527  Double_t xBinDS = DeeOffset + (Double_t)GetDSOffset(n1Dee, iDS)/fEcal->MaxCrysInSC();
9528  TLine* lin_DS = new TLine(xBinDS, yinf, xBinDS, ysup); fCnewRoot++;
9529  lin_DS->SetLineColor(coul_DS);
9530  lin_DS->SetLineWidth(1);
9531  lin_DS->SetLineStyle(2);
9532  lin_DS->Draw();
9533 
9534  if( n1Dee == 2 && i == 4 )
9535  {
9536  TLine* lin_DSp = new TLine(DeeOffset, yinf, DeeOffset, ysup); fCnewRoot++;
9537  lin_DSp->SetLineColor(coul_DS);
9538  lin_DSp->SetLineWidth(1);
9539  lin_DSp->SetLineStyle(2);
9540  lin_DSp->Draw();
9541  }
9542 
9543  Double_t yds = ysup + (ysup-yinf)/(Double_t)50.;
9544  Double_t xBinDSp = xBinDS + DSLabelOffset;
9545  Int_t nDS = iDS;
9546 
9547  sprintf( f_in, "S%d", nDS );
9548  TText *text_DS = new TText(xBinDSp, yds, f_in); fCnewRoot++;
9549  text_DS->SetTextColor(coul_DS);
9550  text_DS->SetTextSize((Double_t)0.03);
9551  text_DS->Draw("SAME");
9552  if( (n1Dee == 4 && i == 1) || (n1Dee == 2 && i == 4) )
9553  {
9554  if(n1Dee == 4){nDS = iDS-1;}
9555  if(n1Dee == 2){nDS = iDS+1;}
9556  sprintf( f_in, "S%d", nDS );
9557  TText *text_DS = new TText(xBinDS-1.75*DSLabelOffset, yds, f_in); fCnewRoot++;
9558  text_DS->SetTextColor(coul_DS);
9559  text_DS->SetTextSize((Double_t)0.03);
9560  text_DS->Draw("SAME");
9561  }
9562  }
9563  }
9564  }
9565 
9566  //........... Vertical lines for Data sectors and special SC's (EE only, Dee's Global plots) (HistoPlot)
9567  if( fFlagSubDet == "EE" && fFapStexNumber > 0 )
9568  {
9569  if( HistoType == "Global" )
9570  {
9571  Double_t ytext = yinf - (ysup-yinf)/8.5;
9572  //............................................................. Data Sectors
9573  Color_t coul_DS = fCnaParHistos->ColorDefinition("noir");
9574  for(Int_t i=1; i<5; i++)
9575  {
9576  Int_t iDS = 0;
9577  if( fFapStexNumber == 1 ){iDS = i;}
9578  if( fFapStexNumber == 2 ){iDS = i+4;}
9579  if( fFapStexNumber == 3 ){iDS = i+5;}
9580  if( fFapStexNumber == 4 ){iDS = i+1;}
9581 
9582  Double_t xBinDS = (Double_t)GetDSOffset(fFapStexNumber, iDS);
9583  TLine* lin_DS = new TLine(xBinDS, yinf, xBinDS, ysup); fCnewRoot++;
9584  lin_DS->SetLineColor(coul_DS);
9585  lin_DS->SetLineWidth(2);
9586  lin_DS->SetLineStyle(2);
9587  lin_DS->Draw();
9588  Double_t ytextds = ysup + (ysup-yinf)/30.;
9589  Double_t xBinDSNumber =
9590  xBinDS + fEcalNumbering->GetMaxSCInDS(iDS)*fEcal->MaxCrysInSC()/(Double_t)2.25;
9591  sprintf( f_in, "S%d", iDS );
9592  TText *text_DS = new TText(xBinDSNumber, ytextds, f_in); fCnewRoot++;
9593  text_DS->SetTextColor(coul_DS);
9594  text_DS->SetTextSize((Double_t)0.04);
9595  text_DS->Draw("SAME");
9596  if( ( (fFapStexNumber == 1 || fFapStexNumber == 2 ) && i == 4 ) ||
9597  ( (fFapStexNumber == 3 || fFapStexNumber == 4 ) && i == 1 ) )
9598  {
9599  Int_t iDSp = iDS;
9600  if( i == 4 ){iDSp = iDS+1;}
9601  if( i == 1 ){iDSp = iDS-1;}
9602  sprintf( f_in, "S%d", iDSp);
9603  Double_t xBinpDSNumber =
9604  xBinDSNumber - fEcalNumbering->GetMaxSCInDS(iDS)*fEcal->MaxCrysInSC();
9605  TText *text_DSp = new TText(xBinpDSNumber, ytextds, f_in); fCnewRoot++;
9606  text_DSp->SetTextColor(coul_DS);
9607  text_DSp->SetTextSize((Double_t)0.04);
9608  text_DSp->Draw("SAME");
9609  }
9610  }
9611  //.............................................................. Vertical lines for SC's
9612  // Trop serre. A garder en reserve.
9613  //for(Int_t i=0; i<fEcal->MaxSCForConsInDee(); i++)
9614  // {
9615  // Double_t xBinSC =(Double_t)(fEcal->MaxCrysInSC()*i);
9616  // TLine* lin_SC = new TLine(xBinSC, yinf, xBinSC, ysup); fCnewRoot++;
9617  // lin_SC->SetLineColor(coul_DS);
9618  // lin_SC->SetLineStyle(3);
9619  // lin_SC->Draw();
9620  // }
9621  //............................................................... Not connected SC's
9622  Color_t coul_notconnected = fCnaParHistos->ColorDefinition("bleu_fonce");
9623  for(Int_t i=1; i<=fEcal->NumberOfNotConnectedSCs(); i++)
9624  {
9625  Int_t index = 0;
9626  if( fFapStexNumber == 1 || fFapStexNumber == 3 ){index = 2*i - 1;}
9627  if( fFapStexNumber == 2 || fFapStexNumber == 4 ){index = 2*i;}
9628  //................. display of the not connected SC's numbers (+ vertical line)
9629  Double_t xBinNotConnectedSC = NotConnectedSCH1DBin(index);
9630  TLine* lin_notconnected =
9631  new TLine(xBinNotConnectedSC, yinf, xBinNotConnectedSC, ysup); fCnewRoot++;
9632  lin_notconnected->SetLineColor(coul_notconnected);
9633  lin_notconnected->SetLineStyle(3);
9634  lin_notconnected->Draw();
9635 
9636  Double_t xBinNotConnectedSCEnd = NotConnectedSCH1DBin(index)+fEcal->MaxCrysInSC();
9637  TLine* lin_notconnected_end =
9638  new TLine(xBinNotConnectedSCEnd, yinf, xBinNotConnectedSCEnd, ysup); fCnewRoot++;
9639  lin_notconnected_end->SetLineColor(coul_notconnected);
9640  lin_notconnected_end->SetLineStyle(3);
9641  lin_notconnected_end->Draw();
9642 
9643  //sprintf( f_in, "%d", GetNotConnectedSCForConsFromIndex(index) );
9644  sprintf( f_in, "%d", GetNotConnectedDSSCFromIndex(index) );
9645  TText *text_SC_NotConnected = new TText(xBinNotConnectedSC, ytext, f_in); fCnewRoot++;
9646  text_SC_NotConnected->SetTextAngle((Double_t)45.);
9647  text_SC_NotConnected->SetTextColor(coul_notconnected);
9648  text_SC_NotConnected->SetTextFont(42);
9649  text_SC_NotConnected->SetTextSize((Double_t)0.03);
9650  text_SC_NotConnected->Draw("SAME");
9651  }
9652  //Double_t xtext = xinf_his - (xsup_his-xinf_his)/8.;
9653  //Double_t ytextp = yinf - (ysup-yinf)/6.;
9654  //sprintf( f_in, "Special SC => ");
9655  //TText *text_legend_NotConnected = new TText(xtext, ytext, f_in); fCnewRoot++;
9656  //text_legend_NotConnected->SetTextColor(coul_notconnected);
9657  //text_legend_NotConnected->SetTextSize((Double_t)0.03);
9658  //text_legend_NotConnected->Draw("SAME");
9659 
9660  //............................................................... Not complete SC's
9661  Color_t coul_notcomplete = fCnaParHistos->ColorDefinition("rouge40");
9662  for(Int_t i=1; i<=fEcal->NumberOfNotCompleteSCs(); i++)
9663  {
9664  Int_t index = 0;
9665  if( fFapStexNumber == 1 || fFapStexNumber == 3 ){index = 2*i - 1;}
9666  if( fFapStexNumber == 2 || fFapStexNumber == 4 ){index = 2*i;}
9667  //................. display of the not complete SC's numbers (+ vertical line)
9668  Double_t xBinNotCompleteSC = NotCompleteSCH1DBin(index);
9669  TLine* lin_notcomplete =
9670  new TLine(xBinNotCompleteSC, yinf, xBinNotCompleteSC, ysup); fCnewRoot++;
9671  lin_notcomplete->SetLineColor(coul_notcomplete);
9672  lin_notcomplete->SetLineStyle(3);
9673  lin_notcomplete->Draw();
9674 
9675  Double_t xBinNotCompleteSCEnd = NotCompleteSCH1DBin(index)+fEcal->MaxCrysInSC();;
9676  TLine* lin_notcomplete_end =
9677  new TLine(xBinNotCompleteSCEnd, yinf, xBinNotCompleteSCEnd, ysup); fCnewRoot++;
9678  lin_notcomplete_end->SetLineColor(coul_notcomplete);
9679  lin_notcomplete_end->SetLineStyle(3);
9680  lin_notcomplete_end->Draw();
9681 
9682  sprintf( f_in, "%d", GetNotCompleteDSSCFromIndex(index) );
9683  // sprintf( f_in, "%d", GetNotCompleteSCForConsFromIndex(index) );
9684  TText *text_SC_NotComplete = new TText(xBinNotCompleteSC, ytext, f_in); fCnewRoot++;
9685  text_SC_NotComplete->SetTextAngle((Double_t)45.);
9686  text_SC_NotComplete->SetTextColor(coul_notcomplete);
9687  text_SC_NotComplete->SetTextFont(42);
9688  text_SC_NotComplete->SetTextSize((Double_t)0.03);
9689  text_SC_NotComplete->Draw("SAME");
9690  }
9691  //Double_t xtextp = xinf_his + (xsup_his-xinf_his)/15.;
9692  //sprintf( f_in, "Not complete SC");
9693  //TText *text_legend_NotComplete = new TText(xtextp, ytextp, f_in); fCnewRoot++;
9694  //text_legend_NotComplete->SetTextColor(coul_notcomplete);
9695  //text_legend_NotComplete->SetTextSize((Double_t)0.03);
9696  //text_legend_NotComplete->Draw("SAME");
9697  }
9698  }
9699  } // end of if( ( opt_plot == fOnlyOnePlot )
9700  // || ( (opt_plot == fSeveralPlot || opt_plot == fSameOnePlot) && xMemoPlotSame == 0 ) )
9701 
9702  //..............................................Top Axis (HistoPlot)
9703  Int_t min_value = 0;
9704  Int_t max_value = 0;
9705  if(HistoType == "Global")
9706  {
9707  if( fFapStexNumber > 0 )
9708  {
9709  //.......................... Axis for the Stin numbers and Data sectors (EE) numbers
9710  if( fFlagSubDet == "EB" )
9711  {
9712  min_value = 0;
9713  max_value = fEcal->MaxStinEcnaInStex() - 1;
9714  }
9715  if( fFlagSubDet == "EE" )
9716  {
9717  if( fFapStexNumber == 1 ){min_value = 1; max_value = 5;}
9718  if( fFapStexNumber == 2 ){min_value = 5; max_value = 9;}
9719  if( fFapStexNumber == 3 ){min_value = 5; max_value = 9;}
9720  if( fFapStexNumber == 4 ){min_value = 1; max_value = 5;}
9721  }
9722  }
9723  if( fFapStexNumber == 0 )
9724  {
9725  //.......................... Axis for the SM (EB) and Dee numbers (EE)
9726  if( fFlagSubDet == "EB" )
9727  {
9728  min_value = 0;
9729  max_value = fEcal->MaxStexInStas() - 1;
9730  }
9731  if( fFlagSubDet == "EE" )
9732  {
9733  min_value = 1;
9734  max_value = fEcal->MaxStexInStas();
9735  }
9736  }
9737  TopAxisForHistos(h_his0, opt_plot, xMemoPlotSame, min_value, max_value,
9738  xFlagAutoYsupMargin, HisSize);
9739  } // end of if (HistoType == "Global")
9740 
9741  if( !( (HistoType == "H1Basic" || HistoType == "H1BasicProj")
9742  && ( arg_AlreadyRead > 1 && arg_AlreadyRead < fEcal->MaxCrysInStin() ) ) )
9743  {
9744  gPad->Update();
9745  }
9746  }
9747  else // else du if(main_subpad !=0)
9748  {
9749  std::cout << "*TEcnaHistos::HistoPlot(...)> Canvas not found. Previously closed in option SAME."
9750  << fTTBELL << std::endl;
9751 
9752  ReInitCanvas(HistoCode, opt_plot);
9753  xMemoPlotSame = 0;
9754  }
9755 
9756  // delete MainCanvas; fCdeleteRoot++;
9757 
9758 } // end of HistoPlot
9759 
9760 
9761 TString TEcnaHistos::StexNumberToString(const Int_t& StexNumber)
9762 {
9763  // Convert Int_t StexNumber into TString: "StexNumber" if StexNumber in [-18,36]
9764  // or into TString: "EB" or "EE" if StexNumber = 0.
9765 
9766  TString sFapStexNumber = "?";
9767  if( StexNumber == -1 ){sFapStexNumber = " -1";}
9768  if( StexNumber == -2 ){sFapStexNumber = " -2";}
9769  if( StexNumber == -3 ){sFapStexNumber = " -3";}
9770  if( StexNumber == -4 ){sFapStexNumber = " -4";}
9771  if( StexNumber == -5 ){sFapStexNumber = " -5";}
9772  if( StexNumber == -6 ){sFapStexNumber = " -6";}
9773  if( StexNumber == -7 ){sFapStexNumber = " -7";}
9774  if( StexNumber == -8 ){sFapStexNumber = " -8";}
9775  if( StexNumber == -9 ){sFapStexNumber = " -9";}
9776  if( StexNumber == -10 ){sFapStexNumber = "-10";}
9777  if( StexNumber == -11 ){sFapStexNumber = "-11";}
9778  if( StexNumber == -12 ){sFapStexNumber = "-12";}
9779  if( StexNumber == -13 ){sFapStexNumber = "-13";}
9780  if( StexNumber == -14 ){sFapStexNumber = "-14";}
9781  if( StexNumber == -15 ){sFapStexNumber = "-15";}
9782  if( StexNumber == -16 ){sFapStexNumber = "-16";}
9783  if( StexNumber == -17 ){sFapStexNumber = "-17";}
9784  if( StexNumber == -18 ){sFapStexNumber = "-18";}
9785  if( StexNumber == 0 ){sFapStexNumber = fFlagSubDet;}
9786  if( StexNumber == 1 ){sFapStexNumber = " 1";}
9787  if( StexNumber == 2 ){sFapStexNumber = " 2";}
9788  if( StexNumber == 3 ){sFapStexNumber = " 3";}
9789  if( StexNumber == 4 ){sFapStexNumber = " 4";}
9790  if( StexNumber == 5 ){sFapStexNumber = " 5";}
9791  if( StexNumber == 6 ){sFapStexNumber = " 6";}
9792  if( StexNumber == 7 ){sFapStexNumber = " 7";}
9793  if( StexNumber == 8 ){sFapStexNumber = " 8";}
9794  if( StexNumber == 9 ){sFapStexNumber = " 9";}
9795  if( StexNumber == 10 ){sFapStexNumber = " 10";}
9796  if( StexNumber == 11 ){sFapStexNumber = " 11";}
9797  if( StexNumber == 12 ){sFapStexNumber = " 12";}
9798  if( StexNumber == 13 ){sFapStexNumber = " 13";}
9799  if( StexNumber == 14 ){sFapStexNumber = " 14";}
9800  if( StexNumber == 15 ){sFapStexNumber = " 15";}
9801  if( StexNumber == 16 ){sFapStexNumber = " 16";}
9802  if( StexNumber == 17 ){sFapStexNumber = " 17";}
9803  if( StexNumber == 18 ){sFapStexNumber = " 18";}
9804  if( StexNumber == 19 ){sFapStexNumber = " -1";}
9805  if( StexNumber == 20 ){sFapStexNumber = " -2";}
9806  if( StexNumber == 21 ){sFapStexNumber = " -3";}
9807  if( StexNumber == 22 ){sFapStexNumber = " -4";}
9808  if( StexNumber == 23 ){sFapStexNumber = " -5";}
9809  if( StexNumber == 24 ){sFapStexNumber = " -6";}
9810  if( StexNumber == 25 ){sFapStexNumber = " -7";}
9811  if( StexNumber == 26 ){sFapStexNumber = " -8";}
9812  if( StexNumber == 27 ){sFapStexNumber = " -9";}
9813  if( StexNumber == 28 ){sFapStexNumber = "-10";}
9814  if( StexNumber == 29 ){sFapStexNumber = "-11";}
9815  if( StexNumber == 30 ){sFapStexNumber = "-12";}
9816  if( StexNumber == 31 ){sFapStexNumber = "-13";}
9817  if( StexNumber == 32 ){sFapStexNumber = "-14";}
9818  if( StexNumber == 33 ){sFapStexNumber = "-15";}
9819  if( StexNumber == 34 ){sFapStexNumber = "-16";}
9820  if( StexNumber == 35 ){sFapStexNumber = "-17";}
9821  if( StexNumber == 36 ){sFapStexNumber = "-18";}
9822  return sFapStexNumber;
9823 }
9824 
9826 {
9827  // gives the x coordinate for the i_th NotConnected SC
9828  // GetDSOffset(DeeNumber, DataSector) , GetSCOffset(DeeNumber, DataSector, SC_in_DS)
9829 
9830  Double_t xbin = (Double_t)(-1);
9831 
9832  if( index == 1 ){xbin = GetDSOffset(1,1)+GetSCOffset(1,1, 30);} // nb_for_cons == 182 (D1,S1) (D3,S9)
9833  if( index == 2 ){xbin = GetDSOffset(2,9)+GetSCOffset(2,9, 30);} // nb_for_cons == 33 (D2,S9) (D4,S1)
9834 
9835  if( index == 3 ){xbin = GetDSOffset(1,2)+GetSCOffset(1,2, 3);} // nb_for_cons == 178 (D1,S2) (D3,S8)
9836  if( index == 4 ){xbin = GetDSOffset(2,8)+GetSCOffset(2,8, 3);} // nb_for_cons == 29 (D2,S8) (D4,S2)
9837 
9838  if( index == 5 ){xbin = GetDSOffset(1,2)+GetSCOffset(1,2, 25);} // nb_for_cons == 207 (D1,S2) (D3,S8)
9839  if( index == 6 ){xbin = GetDSOffset(2,8)+GetSCOffset(2,8, 25);} // nb_for_cons == 58 (D2,S8) (D4,S2)
9840 
9841  if( index == 7 ){xbin = GetDSOffset(1,3)+GetSCOffset(1,3, 34);} // nb_for_cons == 298 (D1,S3) (D3,S7)
9842  if( index == 8 ){xbin = GetDSOffset(2,7)+GetSCOffset(2,7, 34);} // nb_for_cons == 149 (D2,S7) (D4,S3)
9843 
9844  if( index == 9 ){xbin = GetDSOffset(1,4)+GetSCOffset(1,4, 14);} // nb_for_cons == 261 (D1,S4) (D3,S6)
9845  if( index == 10 ){xbin = GetDSOffset(2,6)+GetSCOffset(2,6, 14);} // nb_for_cons == 112 (D2,S6) (D4,S4)
9846  if( index == 11 ){xbin = GetDSOffset(1,4)+GetSCOffset(1,4, 21);} // nb_for_cons == 268 (D1,S4) (D3,S6)
9847  if( index == 12 ){xbin = GetDSOffset(2,6)+GetSCOffset(2,6, 21);} // nb_for_cons == 119 (D2,S6) (D4,S4)
9848 
9849  if( index == 13 ){xbin = GetDSOffset(1,5)+GetSCOffset(1,5, 20);} // nb_for_cons == 281 (D1,S5) (D3,S5)
9850  if( index == 14 ){xbin = GetDSOffset(2,5)+GetSCOffset(2,5, 3);} // nb_for_cons == 132 (D2,S5) (D4,S5)
9851 
9852  return xbin;
9853 }
9854 
9856 {
9857  // gives the x coordinate for the i_th NotConnected SC
9858 
9859  Double_t xbin = (Double_t)(-1);
9860 
9861  if( index == 1 ){xbin = GetDSOffset(1,1)+GetSCOffset(1,1, 12);} // nb_for_cons == 161 (D1,S1) (D3,S9)
9862  if( index == 2 ){xbin = GetDSOffset(2,9)+GetSCOffset(2,9, 12);} // nb_for_cons == 12 (D2,S9) (D4,S1)
9863 
9864  if( index == 3 ){xbin = GetDSOffset(1,2)+GetSCOffset(1,2, 32);} // nb_for_cons == 216 (D1,S2) (D3,S8)
9865  if( index == 4 ){xbin = GetDSOffset(2,8)+GetSCOffset(2,8, 32);} // nb_for_cons == 67 (D2,S8) (D4,S2)
9866 
9867  if( index == 5 ){xbin = GetDSOffset(1,3)+GetSCOffset(1,3, 10);} // nb_for_cons == 224 (D1,S3) (D3,S7)
9868  if( index == 6 ){xbin = GetDSOffset(2,7)+GetSCOffset(2,7, 10);} // nb_for_cons == 75 (D2,S7) (D4,S3)
9869 
9870  if( index == 7 ){xbin = GetDSOffset(1,5)+GetSCOffset(1,5, 23);} // nb_for_cons == 286 (D1,S5) (D3,S5)
9871  if( index == 8 ){xbin = GetDSOffset(2,5)+GetSCOffset(2,5, 6);} // nb_for_cons == 137 (D2,S5) (D4,S5)
9872 
9873  return xbin;
9874 }
9875 
9877 {
9878 
9879  Int_t SCForCons = 0;
9880  if( index == 1 ){SCForCons = 182;} // (D1,S1) (D3,S9)
9881  if( index == 2 ){SCForCons = 33;} // (D2,S9) (D4,S1)
9882 
9883  if( index == 3 ){SCForCons = 178;} // (D1,S2) (D3,S8)
9884  if( index == 4 ){SCForCons = 29;} // (D2,S8) (D4,S2)
9885  if( index == 5 ){SCForCons = 207;} // (D1,S2) (D3,S8)
9886  if( index == 6 ){SCForCons = 58;} // (D2,S8) (D4,S2)
9887 
9888  if( index == 7 ){SCForCons = 298;} // (D1,S3) (D3,S7)
9889  if( index == 8 ){SCForCons = 149;} // (D2,S7) (D4,S3)
9890 
9891  if( index == 9 ){SCForCons = 261;} // (D1,S4) (D3,S6)
9892  if( index == 10 ){SCForCons = 112;} // (D2,S6) (D4,S4)
9893  if( index == 11 ){SCForCons = 268;} // (D1,S4) (D3,S6)
9894  if( index == 12 ){SCForCons = 119;} // (D2,S6) (D4,S4)
9895 
9896  if( index == 13 ){SCForCons = 281;} // (D1,S5) (D3,S5)
9897  if( index == 14 ){SCForCons = 132;} // (D2,S5) (D4,S5)
9898  return SCForCons;
9899 }
9900 
9902 {
9903 
9904  Int_t DSSC = 0;
9905  if( index == 1 ){DSSC = 30;} // (D1,S1) (D3,S9)
9906  if( index == 2 ){DSSC = 30;} // (D2,S9) (D4,S1)
9907 
9908  if( index == 3 ){DSSC = 3;} // (D1,S2) (D3,S8)
9909  if( index == 4 ){DSSC = 3;} // (D2,S8) (D4,S2)
9910  if( index == 5 ){DSSC = 25;} // (D1,S2) (D3,S8)
9911  if( index == 6 ){DSSC = 25;} // (D2,S8) (D4,S2)
9912 
9913  if( index == 7 ){DSSC = 34;} // (D1,S3) (D3,S7)
9914  if( index == 8 ){DSSC = 34;} // (D2,S7) (D4,S3)
9915 
9916  if( index == 9 ){DSSC = 14;} // (D1,S4) (D3,S6)
9917  if( index == 10 ){DSSC = 14;} // (D2,S6) (D4,S4)
9918  if( index == 11 ){DSSC = 21;} // (D1,S4) (D3,S6)
9919  if( index == 12 ){DSSC = 21;} // (D2,S6) (D4,S4)
9920 
9921  if( index == 13 ){DSSC = 20;} // (D1,S5) (D3,S5)
9922  if( index == 14 ){DSSC = 3;} // (D2,S5) (D4,S5)
9923  return DSSC;
9924 }
9925 
9926 
9928 {
9929 
9930  Int_t DSSC = 0;
9931  if( index == 1 ){DSSC = 161;} // (D1,S1) (D3,S9)
9932  if( index == 2 ){DSSC = 12;} // (D2,S9) (D4,S1)
9933 
9934  if( index == 3 ){DSSC = 216;} // (D1,S2) (D3,S8)
9935  if( index == 4 ){DSSC = 67;} // (D2,S8) (D4,S2)
9936 
9937  if( index == 5 ){DSSC = 224;} // (D1,S3) (D3,S7)
9938  if( index == 6 ){DSSC = 75;} // (D2,S7) (D4,S3)
9939 
9940  if( index == 7 ){DSSC = 286;} // (D1,S5) (D3,S5)
9941  if( index == 8 ){DSSC = 137;} // (D2,S5) (D4,S5)
9942  return DSSC;
9943 }
9944 
9946 {
9947 
9948  Int_t DSSC = 0;
9949  if( index == 1 ){DSSC = 12;} // (D1,S1) (D3,S9)
9950  if( index == 2 ){DSSC = 12;} // (D2,S9) (D4,S1)
9951 
9952  if( index == 3 ){DSSC = 32;} // (D1,S2) (D3,S8)
9953  if( index == 4 ){DSSC = 32;} // (D2,S8) (D4,S2)
9954 
9955  if( index == 5 ){DSSC = 10;} // (D1,S3) (D3,S7)
9956  if( index == 6 ){DSSC = 10;} // (D2,S7) (D4,S3)
9957 
9958  if( index == 7 ){DSSC = 23;} // (D1,S5) (D3,S5)
9959  if( index == 8 ){DSSC = 6;} // (D2,S5) (D4,S5)
9960  return DSSC;
9961 }
9962 //----------------------------------------------- HistimePlot
9963 void TEcnaHistos::HistimePlot(TGraph* g_graph0,
9964  Axis_t xinf, Axis_t xsup,
9965  const TString& HistoCode, const TString& HistoType,
9966  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample,
9967  const Int_t& opt_scale_x, const Int_t& opt_scale_y,
9968  const TString& opt_plot, const Int_t& xFlagAutoYsupMargin)
9969 {
9970  // Plot 1D histogram for evolution in time
9971 
9972  UInt_t canv_w = fCnaParHistos->SetCanvasWidth(HistoCode, opt_plot);
9973  UInt_t canv_h = fCnaParHistos->SetCanvasHeight(HistoCode, opt_plot);
9974 
9975  SetGraphPresentation(g_graph0, HistoType.Data(), opt_plot.Data()); // (gStyle parameters)}
9976 
9977  //...................................................... paves commentaires (HistimePlot)
9978  SetAllPavesViewHisto(HistoCode, StexStin_A, i0StinEcha, i0Sample, opt_plot);
9979 
9980  //..................................................... Canvas name (HistimePlot)
9981  Int_t arg_AlreadyRead = 0;
9982  TString canvas_name = SetCanvasName(HistoCode.Data(), opt_scale_x, opt_scale_y, opt_plot, arg_AlreadyRead,
9983  StexStin_A, i0StinEcha, i0Sample);
9984 
9985  //------------------------------------------------ Canvas allocation (HistimePlot)
9986  //......................................... declarations canvas et pad
9987  TCanvas* MainCanvas = nullptr;
9988 
9989  if( opt_plot == fOnlyOnePlot )
9990  {MainCanvas = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w , canv_h); fCnewRoot++;
9991  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();}
9992 
9993  if( opt_plot == fSeveralPlot )
9994  {
9995  if(GetMemoFlag(HistoCode, opt_plot) == "Free")
9996  {
9997  MainCanvas = CreateCanvas(HistoCode, opt_plot, canvas_name, canv_w, canv_h);
9998  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();
9999  }
10000  }
10001 
10002  if( opt_plot == fSameOnePlot )
10003  {
10004  if(GetMemoFlag(HistoCode, opt_plot) == "Free")
10005  {
10006  MainCanvas = CreateCanvas(HistoCode, opt_plot, canvas_name, canv_w, canv_h);
10007  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();
10008  }
10009  }
10010 
10011  // std::cout << "*TEcnaHistos::HistimePlot(...)> Plot is displayed on canvas ----> " << canvas_name.Data() << std::endl;
10012 
10013  //--------------- EE => SC for construction, EB => Xtal in SM (default: Stin ECNA number, i0StinEcha)
10014  Int_t Stex_StinCons = StexStin_A; // Stex_StinCons = Tower for EB, SC for construction for EE
10015  Int_t n1StexCrys = i0StinEcha+1; // n1StexCrys = Crys in SM for EB
10016 
10017  if( StexStin_A >= 1 && StexStin_A <= fEcal->MaxStinEcnaInStex() )
10018  {
10019  if( fFlagSubDet == "EB" )
10020  {n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);}
10021  if( fFlagSubDet == "EE" )
10022  {Stex_StinCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A);}
10023  }
10024 
10025  //------ String for StexNumber ( to display "EB" or "EE" if Stex = 0 )
10026  TString sFapStexNumber = StexNumberToString(fFapStexNumber);
10027 
10028  //============================================================================= (HistimePlot)
10029  //
10030  // 1st OPERATIONS: Pave texts preparation and first Draw.
10031  // SetParametersCanvas
10032  // Set Memo Flags.
10033  // Set main_subpad and main_pavtxt
10034  //
10035  //=============================================================================
10036  TVirtualPad* main_subpad = nullptr; // main_subpad: Pad for the histo
10037  TPaveText* main_pavtxt = nullptr; // main_pavtxt: pave for changing parameters
10038 
10039  Int_t xMemoPlotSame = 1; // a priori ==> SAME plot
10040 
10041  TString QuantityName = fCnaParHistos->GetQuantityName(HistoCode.Data());
10042 
10043  //========================================= Option ONLYONE (HistimePlot)
10044  if( opt_plot == fOnlyOnePlot )
10045  {
10046  //................................. Draw titles and paves (pad = main canvas)
10047  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
10048  fPavComStex->Draw();
10049 
10050  if( !( HistoType == "Global" || HistoType == "Proj" ) )
10051  {
10052  fPavComStin->Draw();
10053  fPavComXtal->Draw();
10054  }
10055  fPavComEvolNbOfEvtsAna->Draw();
10056  fPavComEvolRuns->Draw();
10057 
10058  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
10059  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
10060  Double_t y_low = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
10061  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_EB") - 0.005;
10062 
10063  Double_t x_margin = x_low;
10064  Double_t y_margin = y_low;
10065 
10066  Color_t fond_pad = fCnaParHistos->ColorDefinition("gris18");
10067 
10068  MainCanvas->Divide( 1, 1, x_margin, y_margin, fond_pad);
10069  // Divide(nx, ny, x_margin, y_margin, color);
10070 
10071  gPad->cd(1);
10072  main_subpad = gPad;
10073  main_subpad->SetPad(x_low, y_low, x_up, y_up);
10074 
10075  xMemoPlotSame = 0;
10076  }
10077  //========================================= Options SAME and SAME n (HistimePlot)
10078  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
10079  {
10080  if(GetMemoFlag(HistoCode, opt_plot) == "Free")
10081  {
10082  if( fPavComGeneralTitle != nullptr ){fPavComGeneralTitle->Draw();}
10083  fPavComSeveralChanging->Draw();
10084 
10085  fPavComEvolRuns->Draw();
10086 
10087  if( !( HistoType == "Global" || HistoType == "Proj" ||
10088  HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10089  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date") )
10090  {
10091  fPavComStin->Draw();
10092  fPavComXtal->Draw();
10093  }
10094 
10095  if( !( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10096  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ) )
10097  {
10098  fPavComXtal->Draw();
10099  }
10100  //Call to SetParametersPavTxt
10101  //fPavTxt<HISTOCODE> = fPavComSeveralChanging; => come from SetAllPavesViewHisto
10102  SetParametersPavTxt(HistoCode, opt_plot);
10103 
10104  //---------------- Call to ActivePavTxt
10105  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
10106  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
10107 
10108  //-------------------- Set texts for pave "several changing", options SAME and SAME n (HistimePlot)
10109  main_pavtxt->SetTextAlign(fTextPaveAlign);
10110  main_pavtxt->SetTextFont(fTextPaveFont);
10111  main_pavtxt->SetTextSize(fTextPaveSize);
10112  main_pavtxt->SetBorderSize(fTextBorderSize);
10113 
10114  char f_in[charArrLen];
10115 
10116  TString DecalStexName = "";
10117  if( fFlagSubDet == "EB" ){DecalStexName = " ";}
10118  TString DecalStinName = "";
10119  if( fFlagSubDet == "EE" ){DecalStinName = " ";}
10120 
10121  TString sStexOrStasName = "";
10122  if( fFapStexNumber == 0 ){sStexOrStasName = " ";}
10123  if( fFapStexNumber != 0 ){sStexOrStasName = fFapStexName;}
10124 
10125 
10126  //-----------------------------> HistoType = "EvolProj" => treated in HistoPlot, not here.
10127  if(opt_plot == fSeveralPlot)
10128  {
10129  sprintf(f_in, "Analysis Samp Evts range Nb Evts %s%s %s%s %s %s",
10130  DecalStexName.Data(), sStexOrStasName.Data(),
10131  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());
10132  }
10133  if(opt_plot == fSameOnePlot)
10134  {
10135  sprintf(f_in, "Analysis Samp Evts range Nb Evts %s%s %s%s %s %s",
10136  DecalStexName.Data(), sStexOrStasName.Data(),
10137  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());
10138  }
10139 
10140  //................................................................... (HistimePlot)
10141  TText* ttit = main_pavtxt->AddText(f_in);
10142  ttit->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10143 
10144  if(opt_plot == fSeveralPlot)
10145  {
10146  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d",
10147  fFapAnaType.Data(), fFapNbOfSamples,
10149  Stex_StinCons, n1StexCrys, i0StinEcha);
10150  }
10151  if(opt_plot == fSameOnePlot)
10152  {
10153  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d %-25s",
10154  fFapAnaType.Data(), fFapNbOfSamples,
10156  Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());
10157  }
10158 
10159  TText* tt = main_pavtxt->AddText(f_in);
10160  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
10161 
10162  //---------- Draw the "several changing" pave with its text in the Canvas (FIRST TIME) (HistimePlot)
10163  main_pavtxt->Draw();
10164 
10165  //---------------- Call to SetParametersCanvas
10166  //fImp<HISTOCODE> = (TCanvasImp*)fCanv<HISTOCODE>->GetCanvasImp();
10167  //fCanv<HISTOCODE>->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
10168  //fPad<HISTOCODE> = gPad;
10169  //fMemoPlot<HISTOCODE> = 1; =======> set MemoFlag to "Buzy"
10170  //fMemoColor<HISTOCODE> = 0;
10171  SetParametersCanvas(HistoCode, opt_plot);
10172 
10173  //---------------- Set xMemoPlotSame to 0
10174  xMemoPlotSame = 0;
10175  }
10176 
10177  //............................ cases fMemoPlotxxx = 1 (HistimePlot)
10178  if(GetMemoFlag(HistoCode, opt_plot) == "Busy")
10179  {
10180  //---------------- Call to ActivePavTxt
10181  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
10182  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
10183 
10184  //---------------- Call to ActivePad
10185  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
10186 
10187  //---------------- Recover pointer to the current canvas
10188  MainCanvas = GetCurrentCanvas(HistoCode.Data(), opt_plot.Data());
10189  }
10190  }
10191 
10192  //============================================================================= (HistimePlot)
10193  //
10194  // 2nd OPERATIONS: Write and Draw the parameter values in the
10195  // "several changing" pave (options SAME and SAME n)
10196  // Draw Histo
10197  //=============================================================================
10198  if(main_subpad != nullptr)
10199  {
10200  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
10201  {
10202  if(xMemoPlotSame != 0)
10203  {
10204  main_pavtxt->SetTextAlign(fTextPaveAlign);
10205  main_pavtxt->SetTextFont(fTextPaveFont);
10206  main_pavtxt->SetTextSize(fTextPaveSize);
10207  main_pavtxt->SetBorderSize(fTextBorderSize);
10208 
10209  char f_in[charArrLen];
10210 
10211  if(opt_plot == fSeveralPlot )
10212  {sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d",
10214  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha);}
10215  if(opt_plot == fSameOnePlot )
10216  {sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d %-25s",
10218  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());}
10219 
10220  TText *tt = main_pavtxt->AddText(f_in);
10221  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
10222  MainCanvas->cd(); gStyle->SetOptDate(0);
10223  main_pavtxt->Draw();
10224  }
10225  main_subpad->cd();
10226  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
10227  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
10228  Double_t y_low = fCnaParHistos->BoxTopY("several_evol_box") + 0.005;
10229  Double_t y_up = fCnaParHistos->BoxBottomY("general_comment") - 0.005;
10230  if( opt_plot == fSameOnePlot ){y_up = fCnaParHistos->BoxBottomY("top_left_box_EB") - 0.005;}
10231  main_subpad->SetPad(x_low, y_low, x_up, y_up);
10232  }
10233 
10234  //............................................ Style (HistimePlot)
10235  SetViewGraphColors(g_graph0, HistoCode, opt_plot);
10236 
10237  //................................. Set axis titles
10238  TString axis_x_var_name = SetHistoXAxisTitle(HistoCode);
10239  TString axis_y_var_name = SetHistoYAxisTitle(HistoCode);
10240  g_graph0->GetXaxis()->SetTitle(axis_x_var_name);
10241  g_graph0->GetYaxis()->SetTitle(axis_y_var_name);
10242 
10243  //................................. Xaxis is a time axis
10244  g_graph0->GetXaxis()->SetTimeDisplay(1);
10245  g_graph0->GetXaxis()->SetTimeFormat("%d %b-%Hh");
10246 
10247  g_graph0->GetXaxis()->SetTimeOffset(xinf);
10248 
10249  Int_t nb_displayed = fCnaParHistos->GetNbOfRunsDisplayed(); // max nb of run numbers displayed
10250 
10251  //........................................................................... (HistimePlot)
10252  Int_t liny = 0;
10253  Int_t logy = 1;
10254 
10255  if(opt_plot == fOnlyOnePlot)
10256  {
10257  fXinf = (Double_t)xinf;
10258  fXsup = (Double_t)xsup;
10259  fYinf = (Double_t)GetYminValueFromMemo(HistoCode);
10260  fYsup = (Double_t)GetYmaxValueFromMemo(HistoCode);
10261 
10262  gPad->RangeAxis(fXinf, fYinf, fXsup, fYsup);
10263 
10264  //if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(liny);}
10265  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(logy); g_graph0->Draw("ALP");}
10266 
10267  if(opt_scale_y == fOptScaleLiny)
10268  {
10269  gPad->SetLogy(liny);
10270  g_graph0->Draw("ALP");
10271  Int_t nb_pts = g_graph0->GetN();
10272  Double_t* coord_x = g_graph0->GetX();
10273  Double_t* coord_y = g_graph0->GetY();
10274 
10275  char f_in[charArrLen];
10276 
10277  //................. display of the run numbers (HistimePlot)
10278  Double_t interv_displayed = (coord_x[nb_pts-1] - coord_x[0])/(Double_t)nb_displayed;
10279  Double_t last_drawn_coordx = coord_x[0] - 1.5*interv_displayed;
10280 
10281  for(Int_t i_run=0; i_run<nb_pts; i_run++)
10282  {
10283  if ( (coord_x[i_run] - last_drawn_coordx) > interv_displayed )
10284  {
10285  Double_t joinYinf = fYinf;
10286  Double_t joinYsup = fYsup;
10287  if( joinYsup <= joinYinf )
10288  {
10289  joinYinf =
10291  joinYsup =
10293  joinYsup = joinYsup + (joinYsup-joinYinf)/20.;
10294  }
10295 
10296  sprintf( f_in, "R%d", fT1DRunNumber[i_run]);
10297  TText *text_run_num = new TText(coord_x[i_run], joinYsup, f_in); fCnewRoot++;
10298  text_run_num->SetTextAngle((Double_t)45.);
10299  text_run_num->SetTextSize((Double_t)0.035);
10300  text_run_num->Draw("SAME");
10301  // delete text_StexStin_num; fCdeleteRoot++;
10302 
10303  TLine *jointlign;
10304  jointlign = new TLine(coord_x[i_run], joinYsup, coord_x[i_run], coord_y[i_run]); fCnewRoot++;
10305  jointlign->SetLineWidth(1);
10306  jointlign->SetLineStyle(2);
10307  jointlign->Draw("SAME");
10308  // delete jointlign; fCdeleteRoot++;
10309 
10310  last_drawn_coordx = coord_x[i_run]; // (HistimePlot)
10311  }
10312  }
10313 
10314  }
10315  if(opt_scale_y == fOptScaleLogy)
10316  {
10317  gPad->SetLogy(logy);
10318  g_graph0->Draw("ALP");
10319  }
10320  }
10321 
10322  //...................................................................... (HistimePlot)
10323  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
10324  {
10325  if(xMemoPlotSame == 0)
10326  {
10327  if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(liny);}
10328  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(logy);
10329 }
10330  g_graph0->Draw("ALP");
10331 
10332  fXinf = (Double_t)xinf;
10333  fXsup = (Double_t)xsup;
10334  fYinf = (Double_t)GetYminValueFromMemo(HistoCode);
10335  fYsup = (Double_t)GetYmaxValueFromMemo(HistoCode);
10336 
10337  gPad->RangeAxis(fXinf, fYinf, fXsup, fYsup);
10338  }
10339 
10340  if(xMemoPlotSame != 0) // (HistimePlot)
10341  {
10342  if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(liny);}
10343  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(logy);}
10344 
10345  g_graph0->Draw("LP");
10346  }
10347  }
10348  gPad->Update();
10349  }
10350  else // else du if(main_subpad !=0)
10351  {
10352  std::cout << "*TEcnaHistos::HistimePlot(...)> Canvas not found. Previously closed in option SAME."
10353  << fTTBELL << std::endl;
10354 
10355  ReInitCanvas(HistoCode, opt_plot);
10356  xMemoPlotSame = 0;
10357  }
10358 
10359  // delete MainCanvas; fCdeleteRoot++;
10360 
10361 } // end of HistimePlot
10362 
10363 //------------------------------------------------------------------------------------------------------
10364 void TEcnaHistos::TopAxisForHistos(TH1D* h_his0, const TString& opt_plot,
10365  const Int_t& xMemoPlotSame, const Int_t& min_value, const Int_t& max_value,
10366  const Int_t& xFlagAutoYsupMargin, const Int_t& HisSize)
10367 {
10368 // Axis on top of the plot to indicate the Stin numbers
10369 
10370  if( opt_plot == fOnlyOnePlot ||
10371  ( (opt_plot == fSeveralPlot) && (xMemoPlotSame == 0) ) ||
10372  ( (opt_plot == fSameOnePlot) && (xMemoPlotSame == 0) ) )
10373  {
10374  Double_t Maxih = (Double_t)h_his0->GetMaximum();
10375  Double_t Minih = (Double_t)h_his0->GetMinimum();
10376 
10377  if(xFlagAutoYsupMargin == 1)
10378  {
10379  if( Minih >= Maxih ){Minih = (Double_t)0.; Maxih += Maxih;} // ROOT default if ymin >= ymax
10380  Double_t MaxMarginFactor = (Double_t)0.05; // frame top line = 5% above the maximum
10381  Maxih += (Maxih-Minih)*MaxMarginFactor; // ROOT default if ymin < ymax
10382  }
10383 
10384  Double_t v_min = min_value;
10385  Double_t v_max = max_value+(Double_t)1.;
10386  Double_t v_min_p = v_min+(Double_t)1.;
10387  Double_t v_max_p = v_max+(Double_t)1.;
10388 
10389  Int_t ndiv = 50207;
10390  TString opt = "B-";
10391  Double_t Xbegin = 0.;
10392  Double_t Xend = (Double_t)HisSize;
10393  Double_t ticks = 0.05;
10394 
10395  if( fFapStexNumber == 0 && fFlagSubDet == "EE" )
10396  {
10397  v_min = 0;
10398  v_max = max_value;
10399  ndiv = 4;
10400  opt = "CSU"; // first draw axis with ticksize and no label
10401  Xbegin = (Double_t)HisSize;
10402  Xend = 0.;
10403  }
10404 
10405  if( fFapStexNumber > 0 && fFlagSubDet == "EE" )
10406  {
10407  ticks = 0;
10408  if( fFapStexNumber == 1 )
10409  {
10410  v_min = min_value;
10411  v_max = max_value+0.5;
10412  Xbegin = (Double_t)HisSize;
10413  Xend = 0.;
10414  opt = "CSU"; // first draw axis with no ticksize and no label
10415  }
10416  if( fFapStexNumber == 2 )
10417  {
10418  v_min = min_value+0.5;
10419  v_max = max_value+1.;
10420  Xbegin = (Double_t)HisSize;
10421  Xend = 0.;
10422  opt = "CSU"; // first draw axis with no ticksize and no label
10423  }
10424  if( fFapStexNumber == 3 )
10425  {
10426  v_min = min_value+0.5;
10427  v_max = max_value+1.;
10428  Xbegin = 0.;
10429  Xend = (Double_t)HisSize;
10430  opt = "-CSU"; // first draw axis with no ticksize and no label
10431  }
10432  if( fFapStexNumber == 4 )
10433  {
10434  v_min = min_value;
10435  v_max = max_value+0.5;
10436  Xbegin = 0.;
10437  Xend = (Double_t)HisSize;
10438  opt = "-CSU"; // first draw axis with no ticksize and no label
10439  }
10440  v_min -= 1;
10441  v_max -= 1;
10442  ndiv = 5;
10443  }
10444 
10445  TGaxis* top_axis_x = nullptr;
10446 
10447  top_axis_x = new TGaxis(Xbegin, Maxih, Xend, Maxih,
10448  v_min, v_max, ndiv, opt, 0.); fCnewRoot++;
10449 
10450  top_axis_x->SetTickSize(ticks);
10451  top_axis_x->SetTitleOffset((Float_t)(1.2));
10452  top_axis_x->SetLabelOffset((Float_t)(0.005));
10453 
10454  TString x_var_name = "?";
10455  x_var_name.Resize(charArrLen);
10456  if( fFapStexNumber > 0 )
10457  {
10458  if( fFlagSubDet == "EB"){x_var_name = "Tower number";}
10459  if( fFlagSubDet == "EE")
10460  {
10461  x_var_name = " ";
10462  // x_var_name = " Data sector"; // don't remove the space characters !
10463  }
10464  }
10465  if( fFapStexNumber == 0 )
10466  {
10467  if( fFlagSubDet == "EB"){x_var_name = "SM number";}
10468  if( fFlagSubDet == "EE"){x_var_name = " ";}
10469  }
10470  top_axis_x->SetTitle(x_var_name);
10471  top_axis_x->Draw("SAME");
10472 
10473  if( fFlagSubDet == "EE" )
10474  {
10475  // redraw axis with ticksize = 0, with labelOffset<0 or >0 and div centered in middle division
10476  opt = "-MS";
10477  if(fFapStexNumber == 1 || fFapStexNumber == 2 ){opt = "-MS";}
10478  if(fFapStexNumber == 3 || fFapStexNumber == 4 ){opt = "MS";}
10479  ndiv = 4;
10480  if( fFapStexNumber > 0 ){ndiv = 5;}
10481  TGaxis* top_axis_x_bis = nullptr;
10482  top_axis_x_bis = new TGaxis(Xbegin, Maxih, Xend, Maxih,
10483  v_min_p, v_max_p, ndiv, opt, 0.); fCnewRoot++;
10484  top_axis_x_bis->SetTickSize(0.);
10485  Float_t lab_siz_x = top_axis_x->GetLabelSize();
10486  top_axis_x_bis->SetLabelSize(lab_siz_x);
10487  top_axis_x_bis->SetLabelOffset(-0.1);
10488 
10489  top_axis_x_bis->SetLabelOffset((Float_t)(9999.));
10490  // if(fFapStexNumber == 1 || fFapStexNumber == 2 ){top_axis_x_bis->SetLabelOffset(-0.07);}
10491  // if(fFapStexNumber == 3 || fFapStexNumber == 4 ){top_axis_x_bis->SetLabelOffset(-0.05);}
10492  // if(fFapStexNumber == 0 )
10493  // {top_axis_x_bis->SetLabelOffset((Float_t)(9999.));} // keep the tick and remove the value
10494  top_axis_x_bis->Draw("SAME");
10495  }
10496  }
10497 } // end of TopAxisForHistos
10498 
10499 //............................................................................................
10500 void TEcnaHistos::SetAllPavesViewMatrix(const TString& BetweenWhat,
10501  const Int_t& StexStin_A, const Int_t& StexStin_B,
10502  const Int_t& i0StinEcha)
10503 {
10504 // Put all the paves of a matrix view
10505 
10507 
10509 
10510  if(BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels)
10511  {fPavComStin = fCnaParHistos->SetPaveStinsXY(StexStin_A, StexStin_B);}
10512  if(BetweenWhat == fBetweenSamples)
10513  {
10515 
10516  if( fFlagSubDet == "EB" )
10517  {Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);
10518  fPavComXtal = fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha);}
10519  if( fFlagSubDet == "EE" )
10521  Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);
10522  fPavComXtal = fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha);}
10523  }
10524 
10528 }
10529 
10530 void TEcnaHistos::SetAllPavesViewStin(const Int_t& StexStin_A)
10531 {
10532 // Put all the paves of a Stin view
10533 
10536 
10538 
10542 }
10543 
10544 void TEcnaHistos::SetAllPavesViewStinCrysNb(const Int_t& StexNumber, const Int_t& StexStin_A)
10545 {
10546 // Put all the paves of a crystal numbering Stin view
10547 
10548  fPavComStex = fCnaParHistos->SetPaveStex("standard", StexNumber);
10549  fPavComStin = fCnaParHistos->SetPaveStin(StexStin_A, StexNumber);
10550 
10551  if( fFlagSubDet == "EB")
10552  {fPavComLVRB = fCnaParHistos->SetPaveLVRB(StexNumber, StexStin_A);}
10553  if( fFlagSubDet == "EE")
10554  {fPavComCxyz = fCnaParHistos->SetPaveCxyz(StexNumber);}
10555 }
10556 
10557 void TEcnaHistos::SetAllPavesViewStex(const TString& chopt, const Int_t& StexNumber)
10558 {
10559  if( chopt == "Numbering" )
10560  {
10561  fCnaParHistos->SetViewHistoStyle("Stex2DEENb");
10562  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10563  fPavComStex = fCnaParHistos->SetPaveStex("standStex", StexNumber);
10564  if( fFlagSubDet == "EE" ){fPavComCxyz = fCnaParHistos->SetPaveCxyz(StexNumber);}
10565  }
10566  else
10567  {
10568  SetAllPavesViewStex(StexNumber);
10569  }
10570 }
10571 // end of SetAllPavesViewStex(...,...)
10572 
10573 void TEcnaHistos::SetAllPavesViewStex(const Int_t& StexNumber)
10574 {
10575  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10577  fPavComStex = fCnaParHistos->SetPaveStex("standStex", StexNumber);
10578 
10579  TString opt_pave_nbcol = "OneCol";
10580  if( fFapStexName == "SM"){opt_pave_nbcol = "TwoCol";}
10581 
10585 }
10586 // end of SetAllPavesViewStex(...)
10587 
10589 {
10590  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10593 
10597 }
10598 // end of SetAllPavesViewStas
10599 
10600 void TEcnaHistos::SetAllPavesViewHisto(const TString& HistoCode, const Int_t& StexStin_A,
10601  const Int_t& i0StinEcha, const Int_t& i0Sample,
10602  const TString& opt_plot)
10603 {
10604  Int_t arg_AlreadyRead = 0;
10605  SetAllPavesViewHisto(HistoCode, StexStin_A, i0StinEcha, i0Sample, opt_plot, arg_AlreadyRead);
10606 }
10607 
10608 void TEcnaHistos::SetAllPavesViewHisto(const TString& HistoCode, const Int_t& StexStin_A,
10609  const Int_t& i0StinEcha, const Int_t& i0Sample,
10610  const TString& opt_plot, const Int_t& arg_AlreadyRead)
10611 {
10612 // Put all the paves of a histo view according to HistoCode
10613 
10614  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10615 
10616  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
10617 
10619 
10620  if(opt_plot == fOnlyOnePlot)
10621  {
10622  if( !( HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" ||
10623  HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" ||
10624  HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" ||
10625  HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs" ||
10626  HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" ||
10627  HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" ||
10628  HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" ) )
10629  {
10632  }
10633  else
10634  {
10635  if( HistoCode == "D_NOE_ChNb" ||
10636  HistoCode == "D_Ped_ChNb" || HistoCode == "D_TNo_ChNb" ||
10637  HistoCode == "D_MCs_ChNb" || HistoCode == "D_LFN_ChNb" ||
10638  HistoCode == "D_HFN_ChNb" || HistoCode == "D_SCs_ChNb" )
10640  else
10642  }
10643  //.................................................... (SetAllPavesViewHisto)
10644 
10645  if( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10646  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10647  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10648  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
10649  {
10650  Int_t n1StexCrys =
10652  fPavComXtal = fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha);
10653  }
10654 
10655  if( HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" ||
10656  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" )
10657  {
10658  Int_t n1StexCrys =
10660  fPavComXtal =
10661  fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha, arg_AlreadyRead, fPlotAllXtalsInStin);
10662  }
10663 
10664  if( HistoCode == "D_Adc_EvDs" || HistoCode == "D_Adc_EvNb")
10665  {
10666  Int_t n1StexCrys =
10668  fPavComXtal = fCnaParHistos->SetPaveCrystalSample(n1StexCrys, StexStin_A, i0StinEcha, i0Sample);
10669  }
10670 
10671  if( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10672  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10673  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10674  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
10675  {
10680  fStopEvolRun, fStopEvolDate, opt_plot, HistoType);
10681  }
10682  else
10683  {
10687  }
10688  }
10689 
10690  //.................................................... (SetAllPavesViewHisto)
10691 
10692  if( opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free" )
10693  {
10694  if( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10695  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10696  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10697  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
10698  {
10701  fStopEvolRun, fStopEvolDate, opt_plot, HistoType);
10702  }
10703  else
10704  {
10706  }
10707  }
10708 
10709  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free" )
10710  {
10713  fStopEvolRun, fStopEvolDate, opt_plot, HistoType);
10714  }
10715 
10716 }
10717 // end of SetAllPavesViewHisto
10718 
10719 TString TEcnaHistos::SetCanvasName(const TString& HistoCode,
10720  const Int_t& opt_scale_x, const Int_t& opt_scale_y,
10721  const TString& opt_plot, const Int_t& arg_AlreadyRead,
10722  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample)
10723 {
10724  //......... Set Canvas name *===> FOR 1D HISTO ONLY
10725  // (for 2D histos, see inside ViewMatrix, ViewStex,...)
10726 
10727  TString canvas_name;
10728  canvas_name.Resize(charArrLen);
10729  canvas_name = "?";
10730 
10731  char f_in[charArrLen];
10732 
10733  //......................... name_ opt_plot (Set Canvas name)
10734  TString name_opt_plot;
10735  name_opt_plot.Resize(charArrLen);
10736  name_opt_plot = "?";
10737 
10738  //if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0){name_opt_plot = "P0";} // Only one plot
10739  //if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 1){name_opt_plot = "P1";} // SAME in Stin plot
10740  //if(opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1){name_opt_plot = "Pn";} // SAME in Stin plot
10741 
10742  if( opt_plot == fOnlyOnePlot ){sprintf(f_in,"P%d", arg_AlreadyRead); name_opt_plot = f_in;}
10743 
10744  if(opt_plot == fSeveralPlot)
10745  {
10746  name_opt_plot = "SAME_N";
10747  //...................................... name_same (opt_plot = fSeveralPlot)
10748  Int_t name_same = -1;
10749 
10750  if(HistoCode == "D_NOE_ChNb"){name_same = fCanvSameD_NOE_ChNb;}
10751  if(HistoCode == "D_NOE_ChDs"){name_same = fCanvSameD_NOE_ChDs;}
10752  if(HistoCode == "D_Ped_ChNb"){name_same = fCanvSameD_Ped_ChNb;}
10753  if(HistoCode == "D_Ped_ChDs"){name_same = fCanvSameD_Ped_ChDs;}
10754  if(HistoCode == "D_TNo_ChNb"){name_same = fCanvSameD_TNo_ChNb;}
10755  if(HistoCode == "D_TNo_ChDs"){name_same = fCanvSameD_TNo_ChDs;}
10756  if(HistoCode == "D_MCs_ChNb"){name_same = fCanvSameD_MCs_ChNb;}
10757  if(HistoCode == "D_MCs_ChDs"){name_same = fCanvSameD_MCs_ChDs;}
10758  if(HistoCode == "D_LFN_ChNb"){name_same = fCanvSameD_LFN_ChNb;}
10759  if(HistoCode == "D_LFN_ChDs"){name_same = fCanvSameD_LFN_ChDs;}
10760  if(HistoCode == "D_HFN_ChNb"){name_same = fCanvSameD_HFN_ChNb;}
10761  if(HistoCode == "D_HFN_ChDs"){name_same = fCanvSameD_HFN_ChDs;}
10762  if(HistoCode == "D_SCs_ChNb"){name_same = fCanvSameD_SCs_ChNb;}
10763  if(HistoCode == "D_SCs_ChDs"){name_same = fCanvSameD_SCs_ChDs;}
10764  if(HistoCode == "D_MSp_SpNb"){name_same = fCanvSameD_MSp_SpNb;}
10765  if(HistoCode == "D_MSp_SpDs"){name_same = fCanvSameD_MSp_SpDs;}
10766  if(HistoCode == "D_SSp_SpNb"){name_same = fCanvSameD_SSp_SpNb;}
10767  if(HistoCode == "D_SSp_SpDs"){name_same = fCanvSameD_SSp_SpDs;}
10768  if(HistoCode == "D_Adc_EvDs"){name_same = fCanvSameD_Adc_EvDs;}
10769  if(HistoCode == "D_Adc_EvNb"){name_same = fCanvSameD_Adc_EvNb;}
10770  if(HistoCode == "H_Ped_Date"){name_same = fCanvSameH_Ped_Date;}
10771  if(HistoCode == "H_TNo_Date"){name_same = fCanvSameH_TNo_Date;}
10772  if(HistoCode == "H_MCs_Date"){name_same = fCanvSameH_MCs_Date;}
10773  if(HistoCode == "H_LFN_Date"){name_same = fCanvSameH_LFN_Date;}
10774  if(HistoCode == "H_HFN_Date"){name_same = fCanvSameH_HFN_Date;}
10775  if(HistoCode == "H_SCs_Date"){name_same = fCanvSameH_SCs_Date;}
10776  if(HistoCode == "H_Ped_RuDs"){name_same = fCanvSameH_Ped_RuDs;}
10777  if(HistoCode == "H_TNo_RuDs"){name_same = fCanvSameH_TNo_RuDs;}
10778  if(HistoCode == "H_MCs_RuDs"){name_same = fCanvSameH_MCs_RuDs;}
10779  if(HistoCode == "H_LFN_RuDs"){name_same = fCanvSameH_LFN_RuDs;}
10780  if(HistoCode == "H_HFN_RuDs"){name_same = fCanvSameH_HFN_RuDs;}
10781  if(HistoCode == "H_SCs_RuDs"){name_same = fCanvSameH_SCs_RuDs;}
10782 
10783  sprintf(f_in,"%d", name_same);
10784  TString s_name_same = f_in;
10785  const Text_t *t_name_same = (const Text_t *)s_name_same.Data();
10786  name_opt_plot.Append(t_name_same);
10787  }
10788  if(opt_plot == fSameOnePlot)
10789  {
10790  name_opt_plot = "SAME_Plus_N";
10791  //...................................... name_same (opt_plot = fSeveralPlot)
10792  Int_t name_same = fCanvSameH1SamePlus;
10793  sprintf(f_in,"%d", name_same);
10794  TString s_name_same = f_in;
10795  const Text_t *t_name_same = (const Text_t *)s_name_same.Data();
10796  name_opt_plot.Append(t_name_same);
10797  }
10798 
10799  //......................... name_visu (Set Canvas name)
10800  TString name_visu;
10801  name_visu.Resize(charArrLen);
10802  name_visu = "";
10803 
10804  TString name_line;
10805  name_line.Resize(charArrLen);
10806  name_line = "Line_";
10807  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
10808  if( HistoType == "Global" && (opt_plot == fSeveralPlot || opt_plot == fSameOnePlot) ){name_line = "Polm_";}
10809 
10810  // if(opt_visu == fOptVisLine){name_line = "Line_";}
10811  // if(opt_visu == fOptVisPolm){name_line = "Poly_";}
10812 
10813  const Text_t *t_line = (const Text_t *)name_line.Data();
10814  name_visu.Append(t_line);
10815 
10816  TString name_scale_x;
10817  name_scale_x.Resize(charArrLen);
10818  name_scale_x = "?";
10819  if(opt_scale_x == fOptScaleLinx){name_scale_x = "LinX_";}
10820  if(opt_scale_x == fOptScaleLogx){name_scale_x = "LogX_";}
10821  const Text_t *t_scale_x = (const Text_t *)name_scale_x.Data();
10822  name_visu.Append(t_scale_x);
10823 
10824  TString name_scale_y;
10825  name_scale_y.Resize(charArrLen);
10826  name_scale_y = "?";
10827  if(opt_scale_y == fOptScaleLiny){name_scale_y = "LinY";}
10828  if(opt_scale_y == fOptScaleLogy){name_scale_y = "LogY";}
10829  const Text_t *t_scale_y = (const Text_t *)name_scale_y.Data();
10830  name_visu.Append(t_scale_y);
10831 
10832  //...................................... name quantity (Set Canvas name)
10833  TString name_quantity;
10834  name_quantity.Resize(charArrLen);
10835  name_quantity = "?";
10836 
10837  if(HistoCode == "D_NOE_ChNb"){name_quantity = "Nb_of_evts_as_func_of_Xtal";}
10838  if(HistoCode == "D_NOE_ChDs"){name_quantity = "Nb_of_evts_Xtal_distrib";}
10839  if(HistoCode == "D_Ped_ChNb"){name_quantity = "Pedestals_as_func_of_Xtal";}
10840  if(HistoCode == "D_Ped_ChDs"){name_quantity = "Pedestals_Xtal_distrib";}
10841  if(HistoCode == "D_TNo_ChNb"){name_quantity = "Total_Noise_as_func_of_Xtal";}
10842  if(HistoCode == "D_TNo_ChDs"){name_quantity = "Total_Noise_Xtal_distrib";}
10843  if(HistoCode == "D_MCs_ChNb"){name_quantity = "Mean_Corss_as_func_of_Xtal";}
10844  if(HistoCode == "D_MCs_ChDs"){name_quantity = "Mean_Corss_Xtal_distrib";}
10845  if(HistoCode == "D_LFN_ChNb"){name_quantity = "Low_Fq_Noise_as_func_of_Xtal";}
10846  if(HistoCode == "D_LFN_ChDs"){name_quantity = "Low_Fq_Noise_Xtal_distrib";}
10847  if(HistoCode == "D_HFN_ChNb"){name_quantity = "High_Fq_Noise_as_func_of_Xtal";}
10848  if(HistoCode == "D_HFN_ChDs"){name_quantity = "High_Fq_Noise_Xtal_distrib";}
10849  if(HistoCode == "D_SCs_ChNb"){name_quantity = "Sigma_Corss_as_func_of_Xtal";}
10850  if(HistoCode == "D_SCs_ChDs"){name_quantity = "Sigma_Corss_Xtal_distrib";}
10851  if(HistoCode == "D_MSp_SpNb"){name_quantity = "ExpValue_of_samples";}
10852  if(HistoCode == "D_MSp_SpDs"){name_quantity = "ExpValue_of_samples_distrib";}
10853  if(HistoCode == "D_SSp_SpNb"){name_quantity = "Sigma_of_samples";}
10854  if(HistoCode == "D_SSp_SpDs"){name_quantity = "Sigma_of_samples_distrib";}
10855  if(HistoCode == "D_Adc_EvDs"){name_quantity = "hevt";}
10856  if(HistoCode == "D_Adc_EvNb"){name_quantity = "ADC_as_func_of_Event";}
10857  if(HistoCode == "H_Ped_Date"){name_quantity = "Pedestal_history";}
10858  if(HistoCode == "H_TNo_Date"){name_quantity = "Total_Noise_history";}
10859  if(HistoCode == "H_MCs_Date"){name_quantity = "Mean_Corss_history";}
10860  if(HistoCode == "H_LFN_Date"){name_quantity = "Low_Fq_Noise_history";}
10861  if(HistoCode == "H_HFN_Date"){name_quantity = "High_Fq_Noise_history";}
10862  if(HistoCode == "H_SCs_Date"){name_quantity = "Sigma_Corss_history";}
10863  if(HistoCode == "H_Ped_RuDs"){name_quantity = "Pedestal_run_distribution";}
10864  if(HistoCode == "H_TNo_RuDs"){name_quantity = "Total_Noise_run_distribution";}
10865  if(HistoCode == "H_MCs_RuDs"){name_quantity = "Mean_Corss_run_distribution";}
10866  if(HistoCode == "H_LFN_RuDs"){name_quantity = "Low_Fq_Noise_run_distribution";}
10867  if(HistoCode == "H_HFN_RuDs"){name_quantity = "High_Fq_Noise_run_distribution";}
10868  if(HistoCode == "H_SCs_RuDs"){name_quantity = "Sigma_Corss_run_distribution";}
10869 
10870  Int_t num_crys = -1;
10871  if(HistoCode == "D_MSp_SpNb"){num_crys = i0StinEcha;}
10872  if(HistoCode == "D_MSp_SpDs"){num_crys = i0StinEcha;}
10873  if(HistoCode == "D_SSp_SpNb"){num_crys = i0StinEcha;}
10874  if(HistoCode == "D_SSp_SpDs"){num_crys = i0StinEcha;}
10875  if(HistoCode == "D_Adc_EvDs"){num_crys = i0StinEcha;}
10876  if(HistoCode == "D_Adc_EvNb"){num_crys = i0StinEcha;}
10877  if(HistoCode == "H_Ped_Date"){num_crys = i0StinEcha;}
10878  if(HistoCode == "H_TNo_Date"){num_crys = i0StinEcha;}
10879  if(HistoCode == "H_MCs_Date"){num_crys = i0StinEcha;}
10880  if(HistoCode == "H_LFN_Date"){num_crys = i0StinEcha;}
10881  if(HistoCode == "H_HFN_Date"){num_crys = i0StinEcha;}
10882  if(HistoCode == "H_SCs_Date"){num_crys = i0StinEcha;}
10883  if(HistoCode == "H_Ped_RuDs"){num_crys = i0StinEcha;}
10884  if(HistoCode == "H_TNo_RuDs"){num_crys = i0StinEcha;}
10885  if(HistoCode == "H_MCs_RuDs"){num_crys = i0StinEcha;}
10886  if(HistoCode == "H_LFN_RuDs"){num_crys = i0StinEcha;}
10887  if(HistoCode == "H_HFN_RuDs"){num_crys = i0StinEcha;}
10888  if(HistoCode == "H_SCs_RuDs"){num_crys = i0StinEcha;}
10889 
10890  Int_t num_samp = -1;
10891  if(HistoCode == "D_Adc_EvDs"){num_samp = i0Sample;}
10892  if(HistoCode == "D_Adc_EvNb"){num_samp = i0Sample;}
10893 
10894  //........................................................... (Set Canvas name)
10895 
10896  if (HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" ||
10897  HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" ||
10898  HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs" ||
10899  HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" ||
10900  HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" ||
10901  HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" ||
10902  HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" )
10903  {
10904  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%d_%s%d_%s_%s",
10905  name_quantity.Data(), fFapAnaType.Data(),
10907  fFapStexName.Data(), fFapStexNumber,
10908  name_opt_plot.Data(), name_visu.Data());
10909  }
10910 
10911  if (HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" ||
10912  HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10913  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10914  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" ||
10915  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10916  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs")
10917  {
10918  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%d_%s%d_%s%d_Xtal%d_%s_%s",
10919  name_quantity.Data(), fFapAnaType.Data(),
10921  fFapStexName.Data(), fFapStexNumber, fFapStinName.Data(), StexStin_A, num_crys,
10922  name_opt_plot.Data(), name_visu.Data());
10923  }
10924 
10925  if (HistoCode == "D_Adc_EvNb" || HistoCode == "D_Adc_EvDs")
10926  {
10927  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%d_%s%d_%s%d_Xtal%d_Samp%d_%s_%s",
10928  name_quantity.Data(), fFapAnaType.Data(),
10930  fFapStexName.Data(), fFapStexNumber, fFapStinName.Data(), StexStin_A, num_crys, num_samp,
10931  name_opt_plot.Data(), name_visu.Data());
10932  }
10933 
10934  canvas_name = f_in;
10935  return canvas_name.Data();
10936 
10937 } // end of CanvasName()
10938 
10939 //-----------------------------------------------------------------------------
10940 //
10941 // M I S C E L L A N E O U S P A R A M E T E R S
10942 //
10943 // C O N C E R N I N G T H E D I S P L A Y
10944 //
10945 //-----------------------------------------------------------------------------
10946 
10947 //===========================================================================
10948 //
10949 // GetHistoSize, GetHistoValues, SetHistoXAxisTitle, SetHistoYAxisTitle,
10950 // GetHistoXinf, GetHistoXsup, GetHistoNumberOfBins, FillHisto
10951 //
10952 //===========================================================================
10953 Int_t TEcnaHistos::GetHistoSize(const TString& chqcode, const TString& opt_plot_read)
10954 {
10955 // Histo size as a function of the quantity code
10956 
10957 // VERY IMPORTANT: in some cases the number of bins must be strictly related to the parameters values
10958 // (number of crystals, number of samples, etc...). See below comments "===> ONE BIN BY..."
10959 
10960  Int_t HisSize = fNbBinsProj; // default value
10961 
10962  //............ histo with sample number as x coordinate => HisSize depends on option "plot" or "read"
10963  // because of nb of samples in file: size for plot = 10 even if nb of samples in file < 10
10964  if( chqcode == "D_MSp_SpNb" || chqcode == "D_SSp_SpNb" ||
10965  chqcode == "D_MSp_SpDs" || chqcode == "D_SSp_SpDs" )
10966  {
10967  if( opt_plot_read == "read" ){HisSize = fFapNbOfSamples;}
10968  if( opt_plot_read == "plot" ){HisSize = fEcal->MaxSampADC();}
10969  } // ===> ONE BIN BY SAMPLE
10970 
10971  //............ histo with event number as x coordinate. (==> "D_Adc_EvDs" option: obsolete, to be confirmed)
10972  if(chqcode == "D_Adc_EvNb" || chqcode == "D_Adc_EvDs"){HisSize = fFapReqNbOfEvts;} // ===> ONE BIN BY EVENT
10973 
10974  //............
10975  if(chqcode == "D_NOE_ChNb" ||
10976  chqcode == "D_Ped_ChNb" || chqcode == "D_TNo_ChNb" || chqcode == "D_MCs_ChNb" ||
10977  chqcode == "D_LFN_ChNb" || chqcode == "D_HFN_ChNb" || chqcode == "D_SCs_ChNb" ||
10978  chqcode == "D_NOE_ChDs" ||
10979  chqcode == "D_Ped_ChDs" || chqcode == "D_TNo_ChDs" || chqcode == "D_MCs_ChDs" ||
10980  chqcode == "D_LFN_ChDs" || chqcode == "D_HFN_ChDs" || chqcode == "D_SCs_ChDs" )
10981  {
10982  if( fFlagSubDet == "EB" )
10983  {
10984  if( fFapStexNumber > 0 ){HisSize = fEcal->MaxCrysEcnaInStex();} // ===> ONE BIN BY Xtal
10985  if( fFapStexNumber == 0 ){HisSize = fEcal->MaxSMInEB()*fEcal->MaxTowInSM();} // ===> ONE BIN BY Tower
10986  }
10987  if( fFlagSubDet == "EE" )
10988  {
10989  if( fFapStexNumber > 0 )
10990  {
10991  if( opt_plot_read == "read" ){HisSize = fEcal->MaxCrysEcnaInDee();}
10992  if( opt_plot_read == "plot" ){HisSize = fEcal->MaxCrysForConsInDee();}
10993  } // ===> ONE BIN BY Xtal
10994  if( fFapStexNumber == 0 )
10995  {HisSize = fEcal->MaxDeeInEE()*fEcal->MaxSCForConsInDee();} // ===> ONE BIN BY SC
10996  }
10997  }
10998 
10999  if( chqcode == "H_Ped_RuDs" || chqcode == "H_TNo_RuDs" || chqcode == "H_MCs_RuDs" ||
11000  chqcode == "H_LFN_RuDs" || chqcode == "H_HFN_RuDs" || chqcode == "H_SCs_RuDs" )
11001  {
11002  HisSize = fNbBinsProj;
11003  }
11004 
11005  return HisSize;
11006 }
11007 
11008 TVectorD TEcnaHistos::GetHistoValues(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
11009  TEcnaRead* aMyRootFile, const TString& HistoCode,
11010  const Int_t& HisSizePlot, const Int_t& HisSizeRead,
11011  const Int_t& StexStin_A, const Int_t& i0StinEcha,
11012  const Int_t& i0Sample, Int_t& i_data_exist)
11013 {
11014  // Histo values in a TVectorD. i_data_exist entry value = 0. Incremented in this method.
11015 
11016  TVectorD plot_histo(HisSizePlot); for(Int_t i=0; i<HisSizePlot; i++){plot_histo(i)=(Double_t)0.;}
11017 
11018  fStatusDataExist = kFALSE;
11019 
11020  if( arg_AlreadyRead >= 1 )
11021  {
11022  //std::cout << "*TEcnaHistos::GetHistoValues(...)> arg_AlreadyRead = " << arg_AlreadyRead << std::endl;
11023  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=arg_read_histo(i);}
11024  fStatusDataExist = kTRUE; i_data_exist++;
11025  }
11026 
11027  if( arg_AlreadyRead == 0 )
11028  {
11029  //std::cout << "*TEcnaHistos::GetHistoValues(...)> arg_AlreadyRead = " << arg_AlreadyRead << std::endl;
11030  TVectorD read_histo(HisSizeRead); for(Int_t i=0; i<HisSizeRead; i++){read_histo(i)=(Double_t)0.;}
11031 
11032  if( HistoCode == "D_MSp_SpNb" || HistoCode == "D_MSp_SpDs" ||
11033  HistoCode == "D_SSp_SpNb" || HistoCode == "D_SSp_SpDs" )
11034  {
11035  //====> For plots as a function of Sample# (read10->plot10, read3->plot10)
11036  if( HisSizeRead <= HisSizePlot )
11037  {
11038  if (HistoCode == "D_MSp_SpNb" || HistoCode == "D_MSp_SpDs" )
11039  {
11040  read_histo = aMyRootFile->ReadSampleMeans(StexStin_A, i0StinEcha, HisSizeRead);
11041  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11042  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=read_histo(i);}
11043  }
11044 
11045  if (HistoCode == "D_SSp_SpNb" || HistoCode == "D_SSp_SpDs" )
11046  {
11047  read_histo = aMyRootFile->ReadSampleSigmas(StexStin_A, i0StinEcha, HisSizeRead);
11048  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11049  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=read_histo(i);}
11050  }
11051  }
11052  else
11053  {
11054  std::cout << "!TEcnaHistos::GetHistoValues(...)> *** ERROR *** > HisSizeRead greater than HisSizePlot"
11055  << " for plot as a function of sample#. HisSizeRead = " << HisSizeRead
11056  << ", HisSizePlot = " << HisSizePlot << fTTBELL << std::endl;
11057  }
11058  } // end of if( HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" " ||
11059  // HistoCode == "D_SSp_SpNb" || HistoCode == "D_SSp_SpDs" )
11060 
11061  if( !(HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" ||
11062  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" ) ) // = else of previous if
11063  {
11064  //====> For other plots
11065  if( HisSizeRead == HisSizePlot )
11066  {
11067  //========> for EE, HisSizeRead > HisSizePlot but readEcna#->plotForCons# will be build in the calling method
11068  // HisSizeRead = fEcal->MaxCrysEcnaInStex() (GetHistoValues)
11069 
11070  if( HistoCode == "D_Adc_EvNb" || HistoCode == "D_Adc_EvDs" )
11071  {
11072  read_histo = aMyRootFile->ReadSampleAdcValues(StexStin_A, i0StinEcha, i0Sample, HisSizeRead);
11073  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11074  }
11075 
11076  if( HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" )
11077  {
11078  read_histo = aMyRootFile->ReadNumberOfEvents(HisSizeRead);
11079  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11080  }
11081 
11082  if( HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" )
11083  {
11084  read_histo = aMyRootFile->ReadPedestals(HisSizeRead);
11085  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11086  }
11087 
11088  //...................................................... (GetHistoValues)
11089  if( HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs")
11090  {
11091  read_histo = aMyRootFile->ReadTotalNoise(HisSizeRead);
11092  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11093  }
11094 
11095  if( HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" )
11096  {
11097  read_histo = aMyRootFile->ReadLowFrequencyNoise(HisSizeRead);
11098  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11099 
11100  }
11101 
11102  if( HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" )
11103  {
11104  read_histo = aMyRootFile->ReadHighFrequencyNoise(HisSizeRead);
11105  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11106 
11107  }
11108 
11109  if( HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" )
11110  {
11111  read_histo = aMyRootFile->ReadMeanCorrelationsBetweenSamples(HisSizeRead);
11112  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11113  }
11114 
11115  if( HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" )
11116  {
11117  read_histo = aMyRootFile->ReadSigmaOfCorrelationsBetweenSamples(HisSizeRead);
11118  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11119  }
11120 
11121  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=read_histo(i);}
11122 
11123  }
11124  else
11125  {
11126  std::cout << "!TEcnaHistos::GetHistoValues(...)> *** ERROR *** > HisSizeRead not equal to HisSizePlot."
11127  << " HisSizeRead = " << HisSizeRead
11128  << ", HisSizePlot = " << HisSizePlot << fTTBELL << std::endl;
11129  }
11130  } // end of if( !(HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb") )
11131  } // end of if( arg_AlreadyRead == 0 )
11132 
11133  if( i_data_exist == 0 )
11134  {
11135  std::cout << "!TEcnaHistos::GetHistoValues(...)> Histo not found." << fTTBELL << std::endl;
11136  }
11137 
11138  return plot_histo;
11139 }
11140 //------- (end of GetHistoValues) -------------
11141 
11142 TString TEcnaHistos::SetHistoXAxisTitle(const TString& HistoCode)
11143 {
11144  // Set histo X axis title
11145 
11146  TString axis_x_var_name;
11147 
11148  if(HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" ||
11149  HistoCode == "D_TNo_ChNb" || HistoCode == "D_MCs_ChNb" ||
11150  HistoCode == "D_LFN_ChNb" || HistoCode == "D_HFN_ChNb" ||
11151  HistoCode == "D_SCs_ChNb" )
11152  {
11153  if( fFapStexNumber > 0 )
11154  {
11155  if( fFlagSubDet == "EB" ){axis_x_var_name = "Xtal (electronic channel number)";}
11156  if( fFlagSubDet == "EE" ){axis_x_var_name = "Xtal";}
11157  }
11158  if( fFapStexNumber == 0 )
11159  {
11160  if( fFlagSubDet == "EB" ){axis_x_var_name = "Tower number";}
11161  if( fFlagSubDet == "EE" ){axis_x_var_name = "SC number";}
11162  }
11163  }
11164 
11165  if(HistoCode == "D_NOE_ChDs"){axis_x_var_name = "Number of events";}
11166  if(HistoCode == "D_Ped_ChDs"){axis_x_var_name = "Pedestal";}
11167  if(HistoCode == "D_TNo_ChDs"){axis_x_var_name = "Total noise";}
11168  if(HistoCode == "D_MCs_ChDs"){axis_x_var_name = "Mean cor(s,s')";}
11169  if(HistoCode == "D_LFN_ChDs"){axis_x_var_name = "Low frequency noise";}
11170  if(HistoCode == "D_HFN_ChDs"){axis_x_var_name = "High frequency noise";}
11171  if(HistoCode == "D_SCs_ChDs"){axis_x_var_name = "Sigmas cor(s,s')";}
11172  if(HistoCode == "D_MSp_SpNb"){axis_x_var_name = "Sample";}
11173  if(HistoCode == "D_MSp_SpDs"){axis_x_var_name = "Pedestal";}
11174  if(HistoCode == "D_SSp_SpNb"){axis_x_var_name = "Sample";}
11175  if(HistoCode == "D_SSp_SpDs"){axis_x_var_name = "Total noise";}
11176  if(HistoCode == "D_Adc_EvDs"){axis_x_var_name = "ADC";}
11177  if(HistoCode == "D_Adc_EvNb"){axis_x_var_name = "Event number";}
11178  if(HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
11179  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date")
11180  {axis_x_var_name = "Time";}
11181  if(HistoCode == "H_Ped_RuDs"){axis_x_var_name = "Pedestal";}
11182  if(HistoCode == "H_TNo_RuDs"){axis_x_var_name = "Total noise";}
11183  if(HistoCode == "H_MCs_RuDs"){axis_x_var_name = "Mean cor(s,s')";}
11184  if(HistoCode == "H_LFN_RuDs"){axis_x_var_name = "Low frequency noise";}
11185  if(HistoCode == "H_HFN_RuDs"){axis_x_var_name = "High frequency noise";}
11186  if(HistoCode == "H_SCs_RuDs"){axis_x_var_name = "Sigmas cor(s,s')";}
11187 
11188  return axis_x_var_name;
11189 }
11190 
11191 TString TEcnaHistos::SetHistoYAxisTitle(const TString& HistoCode)
11192 {
11193 // Set histo Y axis title
11194 
11195  TString axis_y_var_name;
11196 
11197  if(HistoCode == "D_NOE_ChNb"){axis_y_var_name = "Number of events";}
11198  if(HistoCode == "D_Ped_ChNb"){axis_y_var_name = "Pedestal";}
11199  if(HistoCode == "D_TNo_ChNb"){axis_y_var_name = "Total noise";}
11200  if(HistoCode == "D_MCs_ChNb"){axis_y_var_name = "Mean cor(s,s')";}
11201  if(HistoCode == "D_LFN_ChNb"){axis_y_var_name = "Low frequency noise";}
11202  if(HistoCode == "D_HFN_ChNb"){axis_y_var_name = "High frequency noise";}
11203  if(HistoCode == "D_SCs_ChNb"){axis_y_var_name = "Sigma of cor(s,s')";}
11204 
11205  if(HistoCode == "D_NOE_ChDs" ||
11206  HistoCode == "D_Ped_ChDs" || HistoCode == "D_TNo_ChDs" || HistoCode == "D_MCs_ChDs" ||
11207  HistoCode == "D_LFN_ChDs" || HistoCode == "D_HFN_ChDs" || HistoCode == "D_SCs_ChDs" )
11208  {
11209  if( fFapStexNumber > 0 ){axis_y_var_name = "number of crystals";}
11210  if( fFapStexNumber == 0 )
11211  {
11212  if( fFlagSubDet == "EB" ){axis_y_var_name = "number of towers";}
11213  if( fFlagSubDet == "EE" ){axis_y_var_name = "number of SC's";}
11214  }
11215  }
11216 
11217  if(HistoCode == "D_MSp_SpNb"){axis_y_var_name = "Sample mean";}
11218  if(HistoCode == "D_MSp_SpDs"){axis_y_var_name = "Number of samples";}
11219  if(HistoCode == "D_SSp_SpNb"){axis_y_var_name = "Sample sigma";}
11220  if(HistoCode == "D_SSp_SpDs"){axis_y_var_name = "Number of samples";}
11221  if(HistoCode == "D_Adc_EvNb"){axis_y_var_name = "Sample ADC value";}
11222  if(HistoCode == "D_Adc_EvDs"){axis_y_var_name = "Number of events";}
11223  if(HistoCode == "H_Ped_Date"){axis_y_var_name = "Pedestal";}
11224  if(HistoCode == "H_TNo_Date"){axis_y_var_name = "Total noise";}
11225  if(HistoCode == "H_MCs_Date"){axis_y_var_name = "Mean cor(s,s')";}
11226  if(HistoCode == "H_LFN_Date"){axis_y_var_name = "Low frequency noise";}
11227  if(HistoCode == "H_HFN_Date"){axis_y_var_name = "High frequency noise";}
11228  if(HistoCode == "H_SCs_Date"){axis_y_var_name = "Sigma cor(s,s')";}
11229 
11230  if(HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
11231  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
11232  {axis_y_var_name = "number of runs";}
11233 
11234  return axis_y_var_name;
11235 }
11236 //-------------------------------------------------------------------------------
11237 Axis_t TEcnaHistos::GetHistoXinf(const TString& HistoCode, const Int_t& HisSize, const TString& opt_plot)
11238 {
11239 // Set histo Xinf
11240 
11241  Axis_t xinf_his = (Axis_t)0;
11242 
11243  if(HistoCode == "D_NOE_ChNb"){xinf_his = (Axis_t)0.;}
11244  if(HistoCode == "D_Ped_ChNb"){xinf_his = (Axis_t)0.;}
11245  if(HistoCode == "D_TNo_ChNb"){xinf_his = (Axis_t)0.;}
11246  if(HistoCode == "D_MCs_ChNb"){xinf_his = (Axis_t)0.;}
11247  if(HistoCode == "D_LFN_ChNb"){xinf_his = (Axis_t)0.;}
11248  if(HistoCode == "D_HFN_ChNb"){xinf_his = (Axis_t)0.;}
11249  if(HistoCode == "D_SCs_ChNb"){xinf_his = (Axis_t)0.;}
11250  if(HistoCode == "D_MSp_SpNb"){xinf_his = (Axis_t)0.;}
11251  if(HistoCode == "D_SSp_SpNb"){xinf_his = (Axis_t)0.;}
11252  if(HistoCode == "D_Adc_EvNb"){xinf_his = (Axis_t)0.;}
11253 
11254  if(HistoCode == "D_NOE_ChDs"){xinf_his = (Axis_t)fD_NOE_ChNbYmin;} // D_XXX_YYDs = projection of D_XXX_YYNb
11255  if(HistoCode == "D_Ped_ChDs"){xinf_his = (Axis_t)fD_Ped_ChNbYmin;}
11256  if(HistoCode == "D_TNo_ChDs"){xinf_his = (Axis_t)fD_TNo_ChNbYmin;}
11257  if(HistoCode == "D_MCs_ChDs"){xinf_his = (Axis_t)fD_MCs_ChNbYmin;}
11258  if(HistoCode == "D_LFN_ChDs"){xinf_his = (Axis_t)fD_LFN_ChNbYmin;}
11259  if(HistoCode == "D_HFN_ChDs"){xinf_his = (Axis_t)fD_HFN_ChNbYmin;}
11260  if(HistoCode == "D_SCs_ChDs"){xinf_his = (Axis_t)fD_SCs_ChNbYmin;}
11261  if(HistoCode == "D_MSp_SpDs"){xinf_his = (Axis_t)fD_MSp_SpNbYmin;}
11262  if(HistoCode == "D_SSp_SpDs"){xinf_his = (Axis_t)fD_SSp_SpNbYmin;}
11263  if(HistoCode == "D_Adc_EvDs"){xinf_his = (Axis_t)fD_Adc_EvNbYmin;}
11264 
11265  if(HistoCode == "H_Ped_Date"){xinf_his = (Axis_t)0.;}
11266  if(HistoCode == "H_TNo_Date"){xinf_his = (Axis_t)0.;}
11267  if(HistoCode == "H_MCs_Date"){xinf_his = (Axis_t)0.;}
11268  if(HistoCode == "H_LFN_Date"){xinf_his = (Axis_t)0.;}
11269  if(HistoCode == "H_HFN_Date"){xinf_his = (Axis_t)0.;}
11270  if(HistoCode == "H_SCs_Date"){xinf_his = (Axis_t)0.;}
11271 
11272  if(HistoCode == "H_Ped_RuDs"){xinf_his = (Axis_t)fH_Ped_RuDsYmin;}
11273  if(HistoCode == "H_TNo_RuDs"){xinf_his = (Axis_t)fH_TNo_RuDsYmin;}
11274  if(HistoCode == "H_MCs_RuDs"){xinf_his = (Axis_t)fH_MCs_RuDsYmin;}
11275  if(HistoCode == "H_LFN_RuDs"){xinf_his = (Axis_t)fH_LFN_RuDsYmin;}
11276  if(HistoCode == "H_HFN_RuDs"){xinf_his = (Axis_t)fH_HFN_RuDsYmin;}
11277  if(HistoCode == "H_SCs_RuDs"){xinf_his = (Axis_t)fH_SCs_RuDsYmin;}
11278 
11279  return xinf_his;
11280 }
11281 
11282 Axis_t TEcnaHistos::GetHistoXsup(const TString& HistoCode, const Int_t& HisSize, const TString& opt_plot)
11283 {
11284 // Set histo Xsup
11285 
11286  Axis_t xsup_his = (Axis_t)0;
11287 
11288  if(HistoCode == "D_NOE_ChNb"){xsup_his = (Axis_t)HisSize;}
11289  if(HistoCode == "D_Ped_ChNb"){xsup_his = (Axis_t)HisSize;}
11290  if(HistoCode == "D_TNo_ChNb"){xsup_his = (Axis_t)HisSize;}
11291  if(HistoCode == "D_MCs_ChNb"){xsup_his = (Axis_t)HisSize;}
11292  if(HistoCode == "D_LFN_ChNb"){xsup_his = (Axis_t)HisSize;}
11293  if(HistoCode == "D_HFN_ChNb"){xsup_his = (Axis_t)HisSize;}
11294  if(HistoCode == "D_SCs_ChNb"){xsup_his = (Axis_t)HisSize;}
11295  if(HistoCode == "D_MSp_SpNb"){xsup_his = (Axis_t)HisSize;}
11296  if(HistoCode == "D_SSp_SpNb"){xsup_his = (Axis_t)HisSize;}
11297  if(HistoCode == "D_Adc_EvNb"){xsup_his = (Axis_t)(fFapReqNbOfEvts);}
11298 
11299  if(HistoCode == "D_NOE_ChDs"){xsup_his = (Axis_t)fD_NOE_ChNbYmax;}
11300  if(HistoCode == "D_Ped_ChDs"){xsup_his = (Axis_t)fD_Ped_ChNbYmax;}
11301  if(HistoCode == "D_TNo_ChDs"){xsup_his = (Axis_t)fD_TNo_ChNbYmax;}
11302  if(HistoCode == "D_MCs_ChDs"){xsup_his = (Axis_t)fD_MCs_ChNbYmax;}
11303  if(HistoCode == "D_LFN_ChDs"){xsup_his = (Axis_t)fD_LFN_ChNbYmax;}
11304  if(HistoCode == "D_HFN_ChDs"){xsup_his = (Axis_t)fD_HFN_ChNbYmax;}
11305  if(HistoCode == "D_SCs_ChDs"){xsup_his = (Axis_t)fD_SCs_ChNbYmax;}
11306  if(HistoCode == "D_MSp_SpDs"){xsup_his = (Axis_t)fD_MSp_SpNbYmax;}
11307  if(HistoCode == "D_SSp_SpDs"){xsup_his = (Axis_t)fD_SSp_SpNbYmax;}
11308  if(HistoCode == "D_Adc_EvDs"){xsup_his = (Axis_t)fD_Adc_EvNbYmax;}
11309 
11310  if(HistoCode == "H_Ped_Date"){xsup_his = (Axis_t)0.;}
11311  if(HistoCode == "H_TNo_Date"){xsup_his = (Axis_t)0.;}
11312  if(HistoCode == "H_MCs_Date"){xsup_his = (Axis_t)0.;}
11313  if(HistoCode == "H_LFN_Date"){xsup_his = (Axis_t)0.;}
11314  if(HistoCode == "H_HFN_Date"){xsup_his = (Axis_t)0.;}
11315  if(HistoCode == "H_SCs_Date"){xsup_his = (Axis_t)0.;}
11316 
11317  if(HistoCode == "H_Ped_RuDs"){xsup_his = (Axis_t)fH_Ped_RuDsYmax;}
11318  if(HistoCode == "H_TNo_RuDs"){xsup_his = (Axis_t)fH_TNo_RuDsYmax;}
11319  if(HistoCode == "H_MCs_RuDs"){xsup_his = (Axis_t)fH_MCs_RuDsYmax;}
11320  if(HistoCode == "H_LFN_RuDs"){xsup_his = (Axis_t)fH_LFN_RuDsYmax;}
11321  if(HistoCode == "H_HFN_RuDs"){xsup_his = (Axis_t)fH_HFN_RuDsYmax;}
11322  if(HistoCode == "H_SCs_RuDs"){xsup_his = (Axis_t)fH_SCs_RuDsYmax;}
11323 
11324  return xsup_his;
11325 }
11326 //-----------------------------------------------------------------------------------
11327 Int_t TEcnaHistos::GetHistoNumberOfBins(const TString& HistoCode, const Int_t& HisSize)
11328 {
11329 // Set histo number of bins
11330 
11331  Int_t nb_binx = HisSize;
11332  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
11333  if ( HistoType == "Proj" || HistoType == "SampProj" ||
11334  HistoType == "EvolProj" || HistoType == "H1BasicProj" )
11335  {nb_binx = fNbBinsProj;}
11336 
11337  return nb_binx;
11338 }
11339 //-----------------------------------------------------------------------------------
11340 void TEcnaHistos::FillHisto(TH1D* h_his0, const TVectorD& read_histo, const TString& HistoCode,
11341  const Int_t& HisSize)
11342 {
11343 // Fill histo
11344 
11345  h_his0->Reset();
11346 
11347  for(Int_t i=0; i<HisSize; i++)
11348  {
11349  Double_t his_val = (Double_t)0;
11350  Double_t xi = (Double_t)0;
11351  //................................................... Basic + Global
11352  if (HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" ||
11353  HistoCode == "D_LFN_ChNb" || HistoCode == "D_TNo_ChNb" ||
11354  HistoCode == "D_HFN_ChNb" || HistoCode == "D_MCs_ChNb" ||
11355  HistoCode == "D_SCs_ChNb" || HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" )
11356  {
11357  xi = (Double_t)i;
11358  his_val = (Double_t)read_histo[i];
11359  h_his0->Fill(xi, his_val);
11360  }
11361 
11362  //................................................... D_Adc_EvNb option
11363  if (HistoCode == "D_Adc_EvNb" )
11364  {
11365  xi = (Double_t)i;
11366  his_val = (Double_t)read_histo[i];
11367  h_his0->Fill(xi, his_val);
11368  }
11369  //................................................... Proj
11370  if (HistoCode == "D_NOE_ChDs" ||
11371  HistoCode == "D_Ped_ChDs" || HistoCode == "D_LFN_ChDs" ||
11372  HistoCode == "D_TNo_ChDs" || HistoCode == "D_HFN_ChDs" ||
11373  HistoCode == "D_MCs_ChDs" || HistoCode == "D_SCs_ChDs" ||
11374  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" ||
11375  HistoCode == "D_Adc_EvDs" )
11376  {
11377  his_val = (Double_t)read_histo[i];
11378  Double_t increment = (Double_t)1;
11379  h_his0->Fill(his_val, increment);
11380  }
11381 
11382  //................................................... EvolProj
11383  //
11384  // *=======> direct Fill in ViewHistime(...)
11385  //
11386  }
11387 }
11388 
11389 //===========================================================================
11390 //
11391 // SetXinfMemoFromValue(...), SetXsupMemoFromValue(...)
11392 // GetXsupValueFromMemo(...), GetXsupValueFromMemo(...)
11393 //
11394 //===========================================================================
11395 void TEcnaHistos::SetXinfMemoFromValue(const TString& HistoCode, const Double_t& value)
11396 {
11397  if( HistoCode == "D_NOE_ChNb"){fD_NOE_ChNbXinf = value;}
11398  if( HistoCode == "D_NOE_ChDs"){fD_NOE_ChDsXinf = value;}
11399  if( HistoCode == "D_Ped_ChNb"){fD_Ped_ChNbXinf = value;}
11400  if( HistoCode == "D_Ped_ChDs"){fD_Ped_ChDsXinf = value;}
11401  if( HistoCode == "D_TNo_ChNb"){fD_TNo_ChNbXinf = value;}
11402  if( HistoCode == "D_TNo_ChDs"){fD_TNo_ChDsXinf = value;}
11403  if( HistoCode == "D_MCs_ChNb"){fD_MCs_ChNbXinf = value;}
11404  if( HistoCode == "D_MCs_ChDs"){fD_MCs_ChDsXinf = value;}
11405  if( HistoCode == "D_LFN_ChNb"){fD_LFN_ChNbXinf = value;}
11406  if( HistoCode == "D_LFN_ChDs"){fD_LFN_ChDsXinf = value;}
11407  if( HistoCode == "D_HFN_ChNb"){fD_HFN_ChNbXinf = value;}
11408  if( HistoCode == "D_HFN_ChDs"){fD_HFN_ChDsXinf = value;}
11409  if( HistoCode == "D_SCs_ChNb"){fD_SCs_ChNbXinf = value;}
11410  if( HistoCode == "D_SCs_ChDs"){fD_SCs_ChDsXinf = value;}
11411  if( HistoCode == "D_MSp_SpNb"){fD_Ped_ChNbXinf = value;}
11412  if( HistoCode == "D_MSp_SpDs"){fD_Ped_ChDsXinf = value;}
11413  if( HistoCode == "D_SSp_SpNb"){fD_TNo_ChNbXinf = value;}
11414  if( HistoCode == "D_SSp_SpDs"){fD_TNo_ChDsXinf = value;}
11415  if( HistoCode == "D_Adc_EvNb"){fD_Ped_ChNbXinf = value;}
11416  if( HistoCode == "D_Adc_EvDs"){fD_Adc_EvDsXinf = value;}
11417  if( HistoCode == "H_Ped_Date"){fH_Ped_DateXinf = value;}
11418  if( HistoCode == "H_TNo_Date"){fH_TNo_DateXinf = value;}
11419  if( HistoCode == "H_MCs_Date"){fH_MCs_DateXinf = value;}
11420  if( HistoCode == "H_LFN_Date"){fH_LFN_DateXinf = value;}
11421  if( HistoCode == "H_HFN_Date"){fH_HFN_DateXinf = value;}
11422  if( HistoCode == "H_SCs_Date"){fH_SCs_DateXinf = value;}
11423  if( HistoCode == "H_Ped_RuDs"){fH_Ped_RuDsXinf = value;}
11424  if( HistoCode == "H_TNo_RuDs"){fH_TNo_RuDsXinf = value;}
11425  if( HistoCode == "H_MCs_RuDs"){fH_MCs_RuDsXinf = value;}
11426  if( HistoCode == "H_LFN_RuDs"){fH_LFN_RuDsXinf = value;}
11427  if( HistoCode == "H_HFN_RuDs"){fH_HFN_RuDsXinf = value;}
11428  if( HistoCode == "H_SCs_RuDs"){fH_SCs_RuDsXinf = value;}
11429 }// end of SetXinfMemoFromValue(...)
11430 
11433 
11434 void TEcnaHistos::SetXsupMemoFromValue(const TString& HistoCode, const Double_t& value)
11435 {
11436  if( HistoCode == "D_NOE_ChNb"){fD_NOE_ChNbXsup = value;}
11437  if( HistoCode == "D_NOE_ChDs"){fD_NOE_ChDsXsup = value;}
11438  if( HistoCode == "D_Ped_ChNb"){fD_Ped_ChNbXsup = value;}
11439  if( HistoCode == "D_Ped_ChDs"){fD_Ped_ChDsXsup = value;}
11440  if( HistoCode == "D_TNo_ChNb"){fD_TNo_ChNbXsup = value;}
11441  if( HistoCode == "D_TNo_ChDs"){fD_TNo_ChDsXsup = value;}
11442  if( HistoCode == "D_MCs_ChNb"){fD_MCs_ChNbXsup = value;}
11443  if( HistoCode == "D_MCs_ChDs"){fD_MCs_ChDsXsup = value;}
11444  if( HistoCode == "D_LFN_ChNb"){fD_LFN_ChNbXsup = value;}
11445  if( HistoCode == "D_LFN_ChDs"){fD_LFN_ChDsXsup = value;}
11446  if( HistoCode == "D_HFN_ChNb"){fD_HFN_ChNbXsup = value;}
11447  if( HistoCode == "D_HFN_ChDs"){fD_HFN_ChDsXsup = value;}
11448  if( HistoCode == "D_SCs_ChNb"){fD_SCs_ChNbXsup = value;}
11449  if( HistoCode == "D_SCs_ChDs"){fD_SCs_ChDsXsup = value;}
11450  if( HistoCode == "D_MSp_SpNb"){fD_Ped_ChNbXsup = value;}
11451  if( HistoCode == "D_MSp_SpDs"){fD_Ped_ChDsXsup = value;}
11452  if( HistoCode == "D_SSp_SpNb"){fD_TNo_ChNbXsup = value;}
11453  if( HistoCode == "D_SSp_SpDs"){fD_TNo_ChDsXsup = value;}
11454  if( HistoCode == "D_Adc_EvNb"){fD_Ped_ChNbXsup = value;}
11455  if( HistoCode == "D_Adc_EvDs"){fD_Adc_EvDsXsup = value;}
11456  if( HistoCode == "H_Ped_Date"){fH_Ped_DateXsup = value;}
11457  if( HistoCode == "H_TNo_Date"){fH_TNo_DateXsup = value;}
11458  if( HistoCode == "H_MCs_Date"){fH_MCs_DateXsup = value;}
11459  if( HistoCode == "H_LFN_Date"){fH_LFN_DateXsup = value;}
11460  if( HistoCode == "H_HFN_Date"){fH_HFN_DateXsup = value;}
11461  if( HistoCode == "H_SCs_Date"){fH_SCs_DateXsup = value;}
11462  if( HistoCode == "H_Ped_RuDs"){fH_Ped_RuDsXsup = value;}
11463  if( HistoCode == "H_TNo_RuDs"){fH_TNo_RuDsXsup = value;}
11464  if( HistoCode == "H_MCs_RuDs"){fH_MCs_RuDsXsup = value;}
11465  if( HistoCode == "H_LFN_RuDs"){fH_LFN_RuDsXsup = value;}
11466  if( HistoCode == "H_HFN_RuDs"){fH_HFN_RuDsXsup = value;}
11467  if( HistoCode == "H_SCs_RuDs"){fH_SCs_RuDsXsup = value;}
11468 }// end of SetXsupMemoFromValue(...)
11469 
11472 
11473 Double_t TEcnaHistos::GetXinfValueFromMemo(const TString& HistoCode)
11474 {
11475  Double_t val_inf = (Double_t)0.;
11476 
11477  if( HistoCode == "D_NOE_ChNb"){val_inf = fD_NOE_ChNbXinf;}
11478  if( HistoCode == "D_NOE_ChDs"){val_inf = fD_NOE_ChDsXinf;}
11479  if( HistoCode == "D_Ped_ChNb"){val_inf = fD_Ped_ChNbXinf;}
11480  if( HistoCode == "D_Ped_ChDs"){val_inf = fD_Ped_ChDsXinf;}
11481  if( HistoCode == "D_TNo_ChNb"){val_inf = fD_TNo_ChNbXinf;}
11482  if( HistoCode == "D_TNo_ChDs"){val_inf = fD_TNo_ChDsXinf;}
11483  if( HistoCode == "D_MCs_ChNb"){val_inf = fD_MCs_ChNbXinf;}
11484  if( HistoCode == "D_MCs_ChDs"){val_inf = fD_MCs_ChDsXinf;}
11485  if( HistoCode == "D_LFN_ChNb"){val_inf = fD_LFN_ChNbXinf;}
11486  if( HistoCode == "D_LFN_ChDs"){val_inf = fD_LFN_ChDsXinf;}
11487  if( HistoCode == "D_HFN_ChNb"){val_inf = fD_HFN_ChNbXinf;}
11488  if( HistoCode == "D_HFN_ChDs"){val_inf = fD_HFN_ChDsXinf;}
11489  if( HistoCode == "D_SCs_ChNb"){val_inf = fD_SCs_ChNbXinf;}
11490  if( HistoCode == "D_SCs_ChDs"){val_inf = fD_SCs_ChDsXinf;}
11491  if( HistoCode == "D_MSp_SpNb"){val_inf = fD_Ped_ChNbXinf;}
11492  if( HistoCode == "D_MSp_SpDs"){val_inf = fD_Ped_ChDsXinf;}
11493  if( HistoCode == "D_SSp_SpNb"){val_inf = fD_TNo_ChNbXinf;}
11494  if( HistoCode == "D_SSp_SpDs"){val_inf = fD_TNo_ChDsXinf;}
11495  if( HistoCode == "D_Adc_EvNb"){val_inf = fD_Adc_EvNbXinf;}
11496  if( HistoCode == "D_Adc_EvDs"){val_inf = fD_Adc_EvDsXinf;}
11497  if( HistoCode == "H_Ped_Date"){val_inf = fH_Ped_DateXinf;}
11498  if( HistoCode == "H_TNo_Date"){val_inf = fH_TNo_DateXinf;}
11499  if( HistoCode == "H_MCs_Date"){val_inf = fH_MCs_DateXinf;}
11500  if( HistoCode == "H_LFN_Date"){val_inf = fH_LFN_DateXinf;}
11501  if( HistoCode == "H_HFN_Date"){val_inf = fH_HFN_DateXinf;}
11502  if( HistoCode == "H_SCs_Date"){val_inf = fH_SCs_DateXinf;}
11503  if( HistoCode == "H_Ped_RuDs"){val_inf = fH_Ped_RuDsXinf;}
11504  if( HistoCode == "H_TNo_RuDs"){val_inf = fH_TNo_RuDsXinf;}
11505  if( HistoCode == "H_MCs_RuDs"){val_inf = fH_MCs_RuDsXinf;}
11506  if( HistoCode == "H_LFN_RuDs"){val_inf = fH_LFN_RuDsXinf;}
11507  if( HistoCode == "H_HFN_RuDs"){val_inf = fH_HFN_RuDsXinf;}
11508  if( HistoCode == "H_SCs_RuDs"){val_inf = fH_SCs_RuDsXinf;}
11509  return val_inf;
11510 }// end of GetXinfValueFromMemo(...)
11511 
11513 {return fH1SameOnePlotXinf;}
11514 
11515 Double_t TEcnaHistos::GetXsupValueFromMemo(const TString& HistoCode)
11516 {
11517  Double_t val_sup = (Double_t)0.;
11518 
11519  if( HistoCode == "D_NOE_ChNb"){val_sup = fD_NOE_ChNbXsup;}
11520  if( HistoCode == "D_NOE_ChDs"){val_sup = fD_NOE_ChDsXsup;}
11521  if( HistoCode == "D_Ped_ChNb"){val_sup = fD_Ped_ChNbXsup;}
11522  if( HistoCode == "D_Ped_ChDs"){val_sup = fD_Ped_ChDsXsup;}
11523  if( HistoCode == "D_TNo_ChNb"){val_sup = fD_TNo_ChNbXsup;}
11524  if( HistoCode == "D_TNo_ChDs"){val_sup = fD_TNo_ChDsXsup;}
11525  if( HistoCode == "D_MCs_ChNb"){val_sup = fD_MCs_ChNbXsup;}
11526  if( HistoCode == "D_MCs_ChDs"){val_sup = fD_MCs_ChDsXsup;}
11527  if( HistoCode == "D_LFN_ChNb"){val_sup = fD_LFN_ChNbXsup;}
11528  if( HistoCode == "D_LFN_ChDs"){val_sup = fD_LFN_ChDsXsup;}
11529  if( HistoCode == "D_HFN_ChNb"){val_sup = fD_HFN_ChNbXsup;}
11530  if( HistoCode == "D_HFN_ChDs"){val_sup = fD_HFN_ChDsXsup;}
11531  if( HistoCode == "D_SCs_ChNb"){val_sup = fD_SCs_ChNbXsup;}
11532  if( HistoCode == "D_SCs_ChDs"){val_sup = fD_SCs_ChDsXsup;}
11533  if( HistoCode == "D_MSp_SpNb"){val_sup = fD_Ped_ChNbXsup;}
11534  if( HistoCode == "D_MSp_SpDs"){val_sup = fD_Ped_ChDsXsup;}
11535  if( HistoCode == "D_SSp_SpNb"){val_sup = fD_TNo_ChNbXsup;}
11536  if( HistoCode == "D_SSp_SpDs"){val_sup = fD_TNo_ChDsXsup;}
11537  if( HistoCode == "D_Adc_EvNb"){val_sup = fD_Adc_EvNbXsup;}
11538  if( HistoCode == "D_Adc_EvDs"){val_sup = fD_Adc_EvDsXsup;}
11539  if( HistoCode == "H_Ped_Date"){val_sup = fH_Ped_DateXsup;}
11540  if( HistoCode == "H_TNo_Date"){val_sup = fH_TNo_DateXsup;}
11541  if( HistoCode == "H_MCs_Date"){val_sup = fH_MCs_DateXsup;}
11542  if( HistoCode == "H_LFN_Date"){val_sup = fH_LFN_DateXsup;}
11543  if( HistoCode == "H_HFN_Date"){val_sup = fH_HFN_DateXsup;}
11544  if( HistoCode == "H_SCs_Date"){val_sup = fH_SCs_DateXsup;}
11545  if( HistoCode == "H_Ped_RuDs"){val_sup = fH_Ped_RuDsXsup;}
11546  if( HistoCode == "H_TNo_RuDs"){val_sup = fH_TNo_RuDsXsup;}
11547  if( HistoCode == "H_MCs_RuDs"){val_sup = fH_MCs_RuDsXsup;}
11548  if( HistoCode == "H_LFN_RuDs"){val_sup = fH_LFN_RuDsXsup;}
11549  if( HistoCode == "H_HFN_RuDs"){val_sup = fH_HFN_RuDsXsup;}
11550  if( HistoCode == "H_SCs_RuDs"){val_sup = fH_SCs_RuDsXsup;}
11551  return val_sup;
11552 }// end of GetXsupValueFromMemo(...)
11553 
11555 {return fH1SameOnePlotXsup;}
11556 
11557 //-------------------------------------------------------------------------------------------
11558 //
11559 // SetHistoMin, SetHistoMax, SetAllYminYmaxMemoFromDefaultValues
11560 //
11561 //-------------------------------------------------------------------------------------------
11564 
11567 
11569 {
11570 //.......... Default values for histo min and max
11571 
11572  SetYminMemoFromValue("D_NOE_ChNb", fCnaParHistos->GetYminDefaultValue("D_NOE_ChNb"));
11573  SetYmaxMemoFromValue("D_NOE_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_NOE_ChNb"));
11574 
11575  SetYminMemoFromValue("D_NOE_ChDs", fCnaParHistos->GetYminDefaultValue("D_NOE_ChDs"));
11576  SetYmaxMemoFromValue("D_NOE_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_NOE_ChDs"));
11577 
11578  SetYminMemoFromValue("D_Ped_ChNb", fCnaParHistos->GetYminDefaultValue("D_Ped_ChNb"));
11579  SetYmaxMemoFromValue("D_Ped_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_Ped_ChNb"));
11580 
11581  SetYminMemoFromValue("D_Ped_ChDs", fCnaParHistos->GetYminDefaultValue("D_Ped_ChDs"));
11582  SetYmaxMemoFromValue("D_Ped_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_Ped_ChDs"));
11583 
11584  SetYminMemoFromValue("D_TNo_ChNb", fCnaParHistos->GetYminDefaultValue("D_TNo_ChNb"));
11585  SetYmaxMemoFromValue("D_TNo_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_TNo_ChNb"));
11586 
11587  SetYminMemoFromValue("D_TNo_ChDs", fCnaParHistos->GetYminDefaultValue("D_TNo_ChDs"));
11588  SetYmaxMemoFromValue("D_TNo_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_TNo_ChDs"));
11589 
11590  SetYminMemoFromValue("D_MCs_ChNb", fCnaParHistos->GetYminDefaultValue("D_MCs_ChNb"));
11591  SetYmaxMemoFromValue("D_MCs_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_MCs_ChNb"));
11592 
11593  SetYminMemoFromValue("D_MCs_ChDs", fCnaParHistos->GetYminDefaultValue("D_MCs_ChDs"));
11594  SetYmaxMemoFromValue("D_MCs_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_MCs_ChDs"));
11595 
11596  SetYminMemoFromValue("D_LFN_ChNb", fCnaParHistos->GetYminDefaultValue("D_LFN_ChNb"));
11597  SetYmaxMemoFromValue("D_LFN_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_LFN_ChNb"));
11598 
11599  SetYminMemoFromValue("D_LFN_ChDs", fCnaParHistos->GetYminDefaultValue("D_LFN_ChDs"));
11600  SetYmaxMemoFromValue("D_LFN_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_LFN_ChDs"));
11601 
11602  SetYminMemoFromValue("D_HFN_ChNb", fCnaParHistos->GetYminDefaultValue("D_HFN_ChNb"));
11603  SetYmaxMemoFromValue("D_HFN_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_HFN_ChNb"));
11604 
11605  SetYminMemoFromValue("D_HFN_ChDs", fCnaParHistos->GetYminDefaultValue("D_HFN_ChDs"));
11606  SetYmaxMemoFromValue("D_HFN_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_HFN_ChDs"));
11607 
11608  SetYminMemoFromValue("D_SCs_ChNb", fCnaParHistos->GetYminDefaultValue("D_SCs_ChNb"));
11609  SetYmaxMemoFromValue("D_SCs_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_SCs_ChNb"));
11610 
11611  SetYminMemoFromValue("D_SCs_ChDs", fCnaParHistos->GetYminDefaultValue("D_SCs_ChDs"));
11612  SetYmaxMemoFromValue("D_SCs_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_SCs_ChDs"));
11613 
11614  SetYminMemoFromValue("D_MSp_SpNb", fCnaParHistos->GetYminDefaultValue("D_MSp_SpNb"));
11615  SetYmaxMemoFromValue("D_MSp_SpNb", fCnaParHistos->GetYmaxDefaultValue("D_MSp_SpNb"));
11616 
11617  SetYminMemoFromValue("D_MSp_SpDs", fCnaParHistos->GetYminDefaultValue("D_MSp_SpDs"));
11618  SetYmaxMemoFromValue("D_MSp_SpDs", fCnaParHistos->GetYmaxDefaultValue("D_MSp_SpDs"));
11619 
11620  SetYminMemoFromValue("D_SSp_SpNb", fCnaParHistos->GetYminDefaultValue("D_SSp_SpNb"));
11621  SetYmaxMemoFromValue("D_SSp_SpNb", fCnaParHistos->GetYmaxDefaultValue("D_SSp_SpNb"));
11622 
11623  SetYminMemoFromValue("D_SSp_SpDs", fCnaParHistos->GetYminDefaultValue("D_SSp_SpDs"));
11624  SetYmaxMemoFromValue("D_SSp_SpDs", fCnaParHistos->GetYmaxDefaultValue("D_SSp_SpDs"));
11625 
11626  SetYminMemoFromValue("D_Adc_EvDs", fCnaParHistos->GetYminDefaultValue("D_Adc_EvDs"));
11627  SetYmaxMemoFromValue("D_Adc_EvDs", fCnaParHistos->GetYmaxDefaultValue("D_Adc_EvDs"));
11628 
11629  SetYminMemoFromValue("D_Adc_EvNb", fCnaParHistos->GetYminDefaultValue("D_Adc_EvNb"));
11630  SetYmaxMemoFromValue("D_Adc_EvNb", fCnaParHistos->GetYmaxDefaultValue("D_Adc_EvNb"));
11631 
11632  SetYminMemoFromValue("H_Ped_Date", fCnaParHistos->GetYminDefaultValue("H_Ped_Date"));
11633  SetYmaxMemoFromValue("H_Ped_Date", fCnaParHistos->GetYmaxDefaultValue("H_Ped_Date"));
11634 
11635  SetYminMemoFromValue("H_TNo_Date", fCnaParHistos->GetYminDefaultValue("H_TNo_Date"));
11636  SetYmaxMemoFromValue("H_TNo_Date", fCnaParHistos->GetYmaxDefaultValue("H_TNo_Date"));
11637 
11638  SetYminMemoFromValue("H_LFN_Date", fCnaParHistos->GetYminDefaultValue("H_LFN_Date"));
11639  SetYmaxMemoFromValue("H_LFN_Date", fCnaParHistos->GetYmaxDefaultValue("H_LFN_Date"));
11640 
11641  SetYminMemoFromValue("H_HFN_Date", fCnaParHistos->GetYminDefaultValue("H_HFN_Date"));
11642  SetYmaxMemoFromValue("H_HFN_Date", fCnaParHistos->GetYmaxDefaultValue("H_HFN_Date"));
11643 
11644  SetYminMemoFromValue("H_MCs_Date", fCnaParHistos->GetYminDefaultValue("H_MCs_Date"));
11645  SetYmaxMemoFromValue("H_MCs_Date", fCnaParHistos->GetYmaxDefaultValue("H_MCs_Date"));
11646 
11647  SetYminMemoFromValue("H_SCs_Date", fCnaParHistos->GetYminDefaultValue("H_SCs_Date"));
11648  SetYmaxMemoFromValue("H_SCs_Date", fCnaParHistos->GetYmaxDefaultValue("H_SCs_Date"));
11649 
11650  SetYminMemoFromValue("H_Ped_RuDs", fCnaParHistos->GetYminDefaultValue("H_Ped_RuDs"));
11651  SetYmaxMemoFromValue("H_Ped_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_Ped_RuDs"));
11652 
11653  SetYminMemoFromValue("H_TNo_RuDs", fCnaParHistos->GetYminDefaultValue("H_TNo_RuDs"));
11654  SetYmaxMemoFromValue("H_TNo_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_TNo_RuDs"));
11655 
11656  SetYminMemoFromValue("H_LFN_RuDs", fCnaParHistos->GetYminDefaultValue("H_LFN_RuDs"));
11657  SetYmaxMemoFromValue("H_LFN_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_LFN_RuDs"));
11658 
11659  SetYminMemoFromValue("H_HFN_RuDs", fCnaParHistos->GetYminDefaultValue("H_HFN_RuDs"));
11660  SetYmaxMemoFromValue("H_HFN_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_HFN_RuDs"));
11661 
11662  SetYminMemoFromValue("H_MCs_RuDs", fCnaParHistos->GetYminDefaultValue("H_MCs_RuDs"));
11663  SetYmaxMemoFromValue("H_MCs_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_MCs_RuDs"));
11664 
11665  SetYminMemoFromValue("H_SCs_RuDs", fCnaParHistos->GetYminDefaultValue("H_SCs_RuDs"));
11666  SetYmaxMemoFromValue("H_SCs_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_SCs_RuDs"));
11667 
11668  SetYminMemoFromValue("H2LFccMosMatrix", fCnaParHistos->GetYminDefaultValue("H2LFccMosMatrix"));
11669  SetYmaxMemoFromValue("H2LFccMosMatrix", fCnaParHistos->GetYmaxDefaultValue("H2LFccMosMatrix"));
11670 
11671  SetYminMemoFromValue("H2HFccMosMatrix", fCnaParHistos->GetYminDefaultValue("H2HFccMosMatrix"));
11672  SetYmaxMemoFromValue("H2HFccMosMatrix", fCnaParHistos->GetYmaxDefaultValue("H2HFccMosMatrix"));
11673 
11674  SetYminMemoFromValue("H2CorccInStins", fCnaParHistos->GetYminDefaultValue("H2CorccInStins"));
11675  SetYmaxMemoFromValue("H2CorccInStins", fCnaParHistos->GetYmaxDefaultValue("H2CorccInStins"));
11676 
11677  //........... set user's min and max flags to "OFF" and values to -1 and +1 (just to have fUserHistoMin < fUserHistoMax)
11678  fUserHistoMin = -1.; fFlagUserHistoMin = "OFF";
11679  fUserHistoMax = 1.; fFlagUserHistoMax = "OFF";
11680 } // end of SetAllYminYmaxMemoFromDefaultValues()
11681 
11682 //===========================================================================
11683 //
11684 // SetYminMemoFromValue(...), SetYmaxMemoFromValue(...)
11685 // GetYminValueFromMemo(...), GetYmaxValueFromMemo(...)
11686 //
11687 //===========================================================================
11688 void TEcnaHistos::SetYminMemoFromValue(const TString& HistoCode, const Double_t& value)
11689 {
11690  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmin = value;}
11691  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmin = value;}
11692  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmin = value;}
11693  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmin = value;}
11694  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmin = value;}
11695  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmin = value;}
11696  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmin = value;}
11697  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmin = value;}
11698  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmin = value;}
11699  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmin = value;}
11700  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmin = value;}
11701  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmin = value;}
11702  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmin = value;}
11703  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmin = value;}
11704  if( HistoCode == "D_MSp_SpNb" ){fD_Ped_ChNbYmin = value;}
11705  if( HistoCode == "D_MSp_SpDs" ){fD_Ped_ChDsYmin = value;}
11706  if( HistoCode == "D_SSp_SpNb" ){fD_TNo_ChNbYmin = value;}
11707  if( HistoCode == "D_SSp_SpDs" ){fD_TNo_ChDsYmin = value;}
11708  if( HistoCode == "D_Adc_EvNb" ){fD_Ped_ChNbYmin = value;}
11709  if( HistoCode == "D_Adc_EvDs" ){fD_Adc_EvDsYmin = value;}
11710  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmin = value;}
11711  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmin = value;}
11712  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmin = value;}
11713  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmin = value;}
11714  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmin = value;}
11715  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmin = value;}
11716  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmin = value;}
11717  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmin = value;}
11718  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmin = value;}
11719  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmin = value;}
11720  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmin = value;}
11721  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmin = value;}
11722  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmin = value;}
11723  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmin = value;}
11724  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmin = value;}
11725 }// end of SetYminMemoFromValue(...)
11726 
11727 void TEcnaHistos::SetYmaxMemoFromValue(const TString& HistoCode, const Double_t& value)
11728 {
11729  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmax = value;}
11730  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmax = value;}
11731  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmax = value;}
11732  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmax = value;}
11733  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmax = value;}
11734  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmax = value;}
11735  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmax = value;}
11736  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmax = value;}
11737  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmax = value;}
11738  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmax = value;}
11739  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmax = value;}
11740  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmax = value;}
11741  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmax = value;}
11742  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmax = value;}
11743  if( HistoCode == "D_MSp_SpNb" ){fD_Ped_ChNbYmax = value;}
11744  if( HistoCode == "D_MSp_SpDs" ){fD_Ped_ChDsYmax = value;}
11745  if( HistoCode == "D_SSp_SpNb" ){fD_TNo_ChNbYmax = value;}
11746  if( HistoCode == "D_SSp_SpDs" ){fD_TNo_ChDsYmax = value;}
11747  if( HistoCode == "D_Adc_EvNb" ){fD_Ped_ChNbYmax = value;}
11748  if( HistoCode == "D_Adc_EvDs" ){fD_Ped_ChDsYmax = value;}
11749  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmax = value;}
11750  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmax = value;}
11751  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmax = value;}
11752  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmax = value;}
11753  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmax = value;}
11754  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmax = value;}
11755  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmax = value;}
11756  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmax = value;}
11757  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmax = value;}
11758  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmax = value;}
11759  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmax = value;}
11760  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmax = value;}
11761  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmax = value;}
11762  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmax = value;}
11763  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmax = value;}
11764 }// end of SetYmaxMemoFromValue(...)
11765 
11766 Double_t TEcnaHistos::GetYminValueFromMemo(const TString& HistoCode)
11767 {
11768  Double_t val_min = (Double_t)0.;
11769  Double_t val_min_proj = (Double_t)0.1;
11770 
11771  if( HistoCode == "D_NOE_ChNb" ){val_min = fD_NOE_ChNbYmin;}
11772  if( HistoCode == "D_NOE_ChDs" ){val_min = val_min_proj;}
11773  if( HistoCode == "D_Ped_ChNb" ){val_min = fD_Ped_ChNbYmin;}
11774  if( HistoCode == "D_Ped_ChDs" ){val_min = val_min_proj;}
11775  if( HistoCode == "D_TNo_ChNb" ){val_min = fD_TNo_ChNbYmin;}
11776  if( HistoCode == "D_TNo_ChDs" ){val_min = val_min_proj;}
11777  if( HistoCode == "D_MCs_ChNb" ){val_min = fD_MCs_ChNbYmin;}
11778  if( HistoCode == "D_MCs_ChDs" ){val_min = val_min_proj;}
11779  if( HistoCode == "D_LFN_ChNb" ){val_min = fD_LFN_ChNbYmin;}
11780  if( HistoCode == "D_LFN_ChDs" ){val_min = val_min_proj;}
11781  if( HistoCode == "D_HFN_ChNb" ){val_min = fD_HFN_ChNbYmin;}
11782  if( HistoCode == "D_HFN_ChDs" ){val_min = val_min_proj;}
11783  if( HistoCode == "D_SCs_ChNb" ){val_min = fD_SCs_ChNbYmin;}
11784  if( HistoCode == "D_SCs_ChDs" ){val_min = val_min_proj;}
11785  if( HistoCode == "D_MSp_SpNb" ){val_min = fD_Ped_ChNbYmin;}
11786  if( HistoCode == "D_MSp_SpDs" ){val_min = val_min_proj;}
11787  if( HistoCode == "D_SSp_SpNb" ){val_min = fD_TNo_ChNbYmin;}
11788  if( HistoCode == "D_SSp_SpDs" ){val_min = val_min_proj;}
11789  if( HistoCode == "D_Adc_EvNb" ){val_min = fD_Ped_ChNbYmin;}
11790  if( HistoCode == "D_Adc_EvDs" ){val_min = val_min_proj;}
11791  if( HistoCode == "H_Ped_Date" ){val_min = fH_Ped_DateYmin;}
11792  if( HistoCode == "H_TNo_Date" ){val_min = fH_TNo_DateYmin;}
11793  if( HistoCode == "H_MCs_Date" ){val_min = fH_MCs_DateYmin;}
11794  if( HistoCode == "H_LFN_Date" ){val_min = fH_LFN_DateYmin;}
11795  if( HistoCode == "H_HFN_Date" ){val_min = fH_HFN_DateYmin;}
11796  if( HistoCode == "H_SCs_Date" ){val_min = fH_SCs_DateYmin;}
11797  if( HistoCode == "H_Ped_RuDs" ){val_min = fH_Ped_RuDsYmin;}
11798  if( HistoCode == "H_TNo_RuDs" ){val_min = fH_TNo_RuDsYmin;}
11799  if( HistoCode == "H_MCs_RuDs" ){val_min = fH_MCs_RuDsYmin;}
11800  if( HistoCode == "H_LFN_RuDs" ){val_min = fH_LFN_RuDsYmin;}
11801  if( HistoCode == "H_HFN_RuDs" ){val_min = fH_HFN_RuDsYmin;}
11802  if( HistoCode == "H_SCs_RuDs" ){val_min = fH_SCs_RuDsYmin;}
11803  if( HistoCode == "H2LFccMosMatrix" ){val_min = fH2LFccMosMatrixYmin;}
11804  if( HistoCode == "H2HFccMosMatrix" ){val_min = fH2HFccMosMatrixYmin;}
11805  if( HistoCode == "H2CorccInStins" ){val_min = fH2CorccInStinsYmin;}
11806  return val_min;
11807 }// end of GetYminValueFromMemo(...)
11808 
11809 Double_t TEcnaHistos::GetYmaxValueFromMemo(const TString& HistoCode)
11810 {
11811  Double_t val_max = (Double_t)0.;
11812  Double_t val_max_proj = (Double_t)2000.;
11813 
11814  if( HistoCode == "D_NOE_ChNb" ){val_max = fD_NOE_ChNbYmax;}
11815  if( HistoCode == "D_NOE_ChDs" ){val_max = val_max_proj;}
11816  if( HistoCode == "D_Ped_ChNb" ){val_max = fD_Ped_ChNbYmax;}
11817  if( HistoCode == "D_Ped_ChDs" ){val_max = val_max_proj;}
11818  if( HistoCode == "D_TNo_ChNb" ){val_max = fD_TNo_ChNbYmax;}
11819  if( HistoCode == "D_TNo_ChDs" ){val_max = val_max_proj;}
11820  if( HistoCode == "D_MCs_ChNb" ){val_max = fD_MCs_ChNbYmax;}
11821  if( HistoCode == "D_MCs_ChDs" ){val_max = val_max_proj;}
11822  if( HistoCode == "D_LFN_ChNb" ){val_max = fD_LFN_ChNbYmax;}
11823  if( HistoCode == "D_LFN_ChDs" ){val_max = val_max_proj;}
11824  if( HistoCode == "D_HFN_ChNb" ){val_max = fD_HFN_ChNbYmax;}
11825  if( HistoCode == "D_HFN_ChDs" ){val_max = val_max_proj;}
11826  if( HistoCode == "D_SCs_ChNb" ){val_max = fD_SCs_ChNbYmax;}
11827  if( HistoCode == "D_SCs_ChDs" ){val_max = val_max_proj;}
11828  if( HistoCode == "D_MSp_SpNb" ){val_max = fD_Ped_ChNbYmax;}
11829  if( HistoCode == "D_MSp_SpDs" ){val_max = val_max_proj;}
11830  if( HistoCode == "D_SSp_SpNb" ){val_max = fD_TNo_ChNbYmax;}
11831  if( HistoCode == "D_SSp_SpDs" ){val_max = val_max_proj;}
11832  if( HistoCode == "D_Adc_EvNb" ){val_max = fD_Ped_ChNbYmax;}
11833  if( HistoCode == "D_Adc_EvDs" ){val_max = val_max_proj;}
11834  if( HistoCode == "H_Ped_Date" ){val_max = fH_Ped_DateYmax;}
11835  if( HistoCode == "H_TNo_Date" ){val_max = fH_TNo_DateYmax;}
11836  if( HistoCode == "H_MCs_Date" ){val_max = fH_MCs_DateYmax;}
11837  if( HistoCode == "H_LFN_Date" ){val_max = fH_LFN_DateYmax;}
11838  if( HistoCode == "H_HFN_Date" ){val_max = fH_HFN_DateYmax;}
11839  if( HistoCode == "H_SCs_Date" ){val_max = fH_SCs_DateYmax;}
11840  if( HistoCode == "H_Ped_RuDs" ){val_max = fH_Ped_RuDsYmax;}
11841  if( HistoCode == "H_TNo_RuDs" ){val_max = fH_TNo_RuDsYmax;}
11842  if( HistoCode == "H_MCs_RuDs" ){val_max = fH_MCs_RuDsYmax;}
11843  if( HistoCode == "H_LFN_RuDs" ){val_max = fH_LFN_RuDsYmax;}
11844  if( HistoCode == "H_HFN_RuDs" ){val_max = fH_HFN_RuDsYmax;}
11845  if( HistoCode == "H_SCs_RuDs" ){val_max = fH_SCs_RuDsYmax;}
11846  if( HistoCode == "H2LFccMosMatrix" ){val_max = fH2LFccMosMatrixYmax;}
11847  if( HistoCode == "H2HFccMosMatrix" ){val_max = fH2HFccMosMatrixYmax;}
11848  if( HistoCode == "H2CorccInStins" ){val_max = fH2CorccInStinsYmax;}
11849  return val_max;
11850 }// end of GetYmaxValueFromMemo(...)
11851 
11852 void TEcnaHistos::SetYminMemoFromPreviousMemo(const TString& HistoCode)
11853 {
11854 // InitQuantity Ymin
11855 
11856  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmin = GetYminValueFromMemo("D_NOE_ChNb");}
11857  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmin = GetYminValueFromMemo("D_NOE_ChDs");}
11858  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmin = GetYminValueFromMemo("D_Ped_ChNb");}
11859  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmin = GetYminValueFromMemo("D_Ped_ChDs");}
11860  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmin = GetYminValueFromMemo("D_TNo_ChNb");}
11861  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmin = GetYminValueFromMemo("D_TNo_ChDs");}
11862  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmin = GetYminValueFromMemo("D_MCs_ChNb");}
11863  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmin = GetYminValueFromMemo("D_MCs_ChDs");}
11864  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmin = GetYminValueFromMemo("D_LFN_ChNb");}
11865  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmin = GetYminValueFromMemo("D_LFN_ChDs");}
11866  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmin = GetYminValueFromMemo("D_HFN_ChNb");}
11867  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmin = GetYminValueFromMemo("D_HFN_ChDs");}
11868  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmin = GetYminValueFromMemo("D_SCs_ChNb");}
11869  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmin = GetYminValueFromMemo("D_SCs_ChDs");}
11870  if( HistoCode == "D_MSp_SpNb" ){fD_MSp_SpNbYmin = GetYminValueFromMemo("D_MSp_SpNb");}
11871  if( HistoCode == "D_MSp_SpDs" ){fD_MSp_SpDsYmin = GetYminValueFromMemo("D_MSp_SpDs");}
11872  if( HistoCode == "D_SSp_SpNb" ){fD_SSp_SpNbYmin = GetYminValueFromMemo("D_SSp_SpNb");}
11873  if( HistoCode == "D_SSp_SpDs" ){fD_SSp_SpDsYmin = GetYminValueFromMemo("D_SSp_SpDs");}
11874  if( HistoCode == "D_Adc_EvNb" ){fD_Adc_EvNbYmin = GetYminValueFromMemo("D_Adc_EvNb");}
11875  if( HistoCode == "D_Adc_EvDs" ){fD_Adc_EvDsYmin = GetYminValueFromMemo("D_Adc_EvDs");}
11876  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmin = GetYminValueFromMemo("H_Ped_Date");}
11877  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmin = GetYminValueFromMemo("H_TNo_Date");}
11878  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmin = GetYminValueFromMemo("H_MCs_Date");}
11879  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmin = GetYminValueFromMemo("H_LFN_Date");}
11880  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmin = GetYminValueFromMemo("H_HFN_Date");}
11881  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmin = GetYminValueFromMemo("H_SCs_Date");}
11882  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmin = GetYminValueFromMemo("H_Ped_RuDs");}
11883  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmin = GetYminValueFromMemo("H_TNo_RuDs");}
11884  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmin = GetYminValueFromMemo("H_MCs_RuDs");}
11885  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmin = GetYminValueFromMemo("H_LFN_RuDs");}
11886  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmin = GetYminValueFromMemo("H_HFN_RuDs");}
11887  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmin = GetYminValueFromMemo("H_SCs_RuDs");}
11888  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmin = GetYminValueFromMemo("H2LFccMosMatrix");}
11889  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmin = GetYminValueFromMemo("H2HFccMosMatrix");}
11890  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmin = GetYminValueFromMemo("H2CorccInStins");}
11891 }// end of SetYminMemoFromPreviousMemo(...)
11892 
11893 void TEcnaHistos::SetYmaxMemoFromPreviousMemo(const TString& HistoCode)
11894 {
11895 // InitQuantity Ymax
11896 
11897  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmax = GetYmaxValueFromMemo("D_NOE_ChNb");}
11898  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmax = GetYmaxValueFromMemo("D_NOE_ChDs");}
11899  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmax = GetYmaxValueFromMemo("D_Ped_ChNb");}
11900  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmax = GetYmaxValueFromMemo("D_Ped_ChDs");}
11901  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmax = GetYmaxValueFromMemo("D_TNo_ChNb");}
11902  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmax = GetYmaxValueFromMemo("D_TNo_ChDs");}
11903  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmax = GetYmaxValueFromMemo("D_MCs_ChNb");}
11904  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmax = GetYmaxValueFromMemo("D_MCs_ChDs");}
11905  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmax = GetYmaxValueFromMemo("D_LFN_ChNb");}
11906  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmax = GetYmaxValueFromMemo("D_LFN_ChDs");}
11907  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmax = GetYmaxValueFromMemo("D_HFN_ChNb");}
11908  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmax = GetYmaxValueFromMemo("D_HFN_ChDs");}
11909  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmax = GetYmaxValueFromMemo("D_SCs_ChNb");}
11910  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmax = GetYmaxValueFromMemo("D_SCs_ChDs");}
11911  if( HistoCode == "D_MSp_SpNb" ){fD_MSp_SpNbYmax = GetYmaxValueFromMemo("D_MSp_SpNb");}
11912  if( HistoCode == "D_MSp_SpDs" ){fD_MSp_SpDsYmax = GetYmaxValueFromMemo("D_MSp_SpDs");}
11913  if( HistoCode == "D_SSp_SpNb" ){fD_SSp_SpNbYmax = GetYmaxValueFromMemo("D_SSp_SpNb");}
11914  if( HistoCode == "D_SSp_SpDs" ){fD_SSp_SpDsYmax = GetYmaxValueFromMemo("D_SSp_SpDs");}
11915  if( HistoCode == "D_Adc_EvNb" ){fD_Adc_EvNbYmax = GetYmaxValueFromMemo("D_Adc_EvNb");}
11916  if( HistoCode == "D_Adc_EvDs" ){fD_Adc_EvDsYmax = GetYmaxValueFromMemo("D_Adc_EvDs");}
11917  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmax = GetYmaxValueFromMemo("H_Ped_Date");}
11918  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmax = GetYmaxValueFromMemo("H_TNo_Date");}
11919  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmax = GetYmaxValueFromMemo("H_MCs_Date");}
11920  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmax = GetYmaxValueFromMemo("H_LFN_Date");}
11921  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmax = GetYmaxValueFromMemo("H_HFN_Date");}
11922  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmax = GetYmaxValueFromMemo("H_SCs_Date");}
11923  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmax = GetYmaxValueFromMemo("H_Ped_RuDs");}
11924  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmax = GetYmaxValueFromMemo("H_TNo_RuDs");}
11925  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmax = GetYmaxValueFromMemo("H_MCs_RuDs");}
11926  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmax = GetYmaxValueFromMemo("H_LFN_RuDs");}
11927  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmax = GetYmaxValueFromMemo("H_HFN_RuDs");}
11928  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmax = GetYmaxValueFromMemo("H_SCs_RuDs");}
11929  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmax = GetYmaxValueFromMemo("H2LFccMosMatrix");}
11930  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmax = GetYmaxValueFromMemo("H2HFccMosMatrix");}
11931  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmax = GetYmaxValueFromMemo("H2CorccInStins");}
11932 }// end of SetYmaxMemoFromPreviousMemo(...)
11933 
11934 //------------------------------------------------------------------------------------------------------
11935 void TEcnaHistos::SetXVarMemo(const TString& HistoCode, const TString& opt_plot, const TString& xvar)
11936 {
11937 
11938  if( opt_plot == fSameOnePlot ){fXMemoH1SamePlus = xvar;}
11939 
11940  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
11941  {
11942  if( HistoCode == "D_NOE_ChNb"){fXMemoD_NOE_ChNb = xvar;}
11943  if( HistoCode == "D_NOE_ChDs"){fXMemoD_NOE_ChDs = xvar;}
11944  if( HistoCode == "D_Ped_ChNb"){fXMemoD_Ped_ChNb = xvar;}
11945  if( HistoCode == "D_Ped_ChDs"){fXMemoD_Ped_ChDs = xvar;}
11946  if( HistoCode == "D_TNo_ChNb"){fXMemoD_TNo_ChNb = xvar;}
11947  if( HistoCode == "D_TNo_ChDs"){fXMemoD_TNo_ChDs = xvar;}
11948  if( HistoCode == "D_MCs_ChNb"){fXMemoD_MCs_ChNb = xvar;}
11949  if( HistoCode == "D_MCs_ChDs"){fXMemoD_MCs_ChDs = xvar;}
11950  if( HistoCode == "D_LFN_ChNb"){fXMemoD_LFN_ChNb = xvar;}
11951  if( HistoCode == "D_LFN_ChDs"){fXMemoD_LFN_ChDs = xvar;}
11952  if( HistoCode == "D_HFN_ChNb"){fXMemoD_HFN_ChNb = xvar;}
11953  if( HistoCode == "D_HFN_ChDs"){fXMemoD_HFN_ChDs = xvar;}
11954  if( HistoCode == "D_SCs_ChNb"){fXMemoD_SCs_ChNb = xvar;}
11955  if( HistoCode == "D_SCs_ChDs"){fXMemoD_SCs_ChDs = xvar;}
11956  if( HistoCode == "D_MSp_SpNb"){fXMemoD_MSp_SpNb = xvar;}
11957  if( HistoCode == "D_MSp_SpDs"){fXMemoD_MSp_SpDs = xvar;}
11958  if( HistoCode == "D_SSp_SpNb"){fXMemoD_SSp_SpNb = xvar;}
11959  if( HistoCode == "D_SSp_SpDs"){fXMemoD_SSp_SpDs = xvar;}
11960  if( HistoCode == "D_Adc_EvNb"){fXMemoD_Adc_EvNb = xvar;}
11961  if( HistoCode == "D_Adc_EvDs"){fXMemoD_Adc_EvDs = xvar;}
11962  if( HistoCode == "H_Ped_Date"){fXMemoH_Ped_Date = xvar;}
11963  if( HistoCode == "H_TNo_Date"){fXMemoH_TNo_Date = xvar;}
11964  if( HistoCode == "H_MCs_Date"){fXMemoH_MCs_Date = xvar;}
11965  if( HistoCode == "H_LFN_Date"){fXMemoH_LFN_Date = xvar;}
11966  if( HistoCode == "H_HFN_Date"){fXMemoH_HFN_Date = xvar;}
11967  if( HistoCode == "H_SCs_Date"){fXMemoH_SCs_Date = xvar;}
11968  if( HistoCode == "H_Ped_RuDs"){fXMemoH_Ped_RuDs = xvar;}
11969  if( HistoCode == "H_TNo_RuDs"){fXMemoH_TNo_RuDs = xvar;}
11970  if( HistoCode == "H_MCs_RuDs"){fXMemoH_MCs_RuDs = xvar;}
11971  if( HistoCode == "H_LFN_RuDs"){fXMemoH_LFN_RuDs = xvar;}
11972  if( HistoCode == "H_HFN_RuDs"){fXMemoH_HFN_RuDs = xvar;}
11973  if( HistoCode == "H_SCs_RuDs"){fXMemoH_SCs_RuDs = xvar;}
11974  }
11975 }// end of SetXVarMemo(...)
11976 
11977 TString TEcnaHistos::GetXVarFromMemo(const TString& HistoCode, const TString& opt_plot)
11978 {
11979  TString xvar = "(xvar not found)";
11980 
11981  if( opt_plot == fSameOnePlot ){xvar = fXMemoH1SamePlus;}
11982 
11983  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
11984  {
11985  if( HistoCode == "D_NOE_ChNb"){xvar = fXMemoD_NOE_ChNb;}
11986  if( HistoCode == "D_NOE_ChDs"){xvar = fXMemoD_NOE_ChDs;}
11987  if( HistoCode == "D_Ped_ChNb"){xvar = fXMemoD_Ped_ChNb;}
11988  if( HistoCode == "D_Ped_ChDs"){xvar = fXMemoD_Ped_ChDs;}
11989  if( HistoCode == "D_TNo_ChNb"){xvar = fXMemoD_TNo_ChNb;}
11990  if( HistoCode == "D_TNo_ChDs"){xvar = fXMemoD_TNo_ChDs;}
11991  if( HistoCode == "D_MCs_ChNb"){xvar = fXMemoD_MCs_ChNb;}
11992  if( HistoCode == "D_MCs_ChDs"){xvar = fXMemoD_MCs_ChDs;}
11993  if( HistoCode == "D_LFN_ChNb"){xvar = fXMemoD_LFN_ChNb;}
11994  if( HistoCode == "D_LFN_ChDs"){xvar = fXMemoD_LFN_ChDs;}
11995  if( HistoCode == "D_HFN_ChNb"){xvar = fXMemoD_HFN_ChNb;}
11996  if( HistoCode == "D_HFN_ChDs"){xvar = fXMemoD_HFN_ChDs;}
11997  if( HistoCode == "D_SCs_ChNb"){xvar = fXMemoD_SCs_ChNb;}
11998  if( HistoCode == "D_SCs_ChDs"){xvar = fXMemoD_SCs_ChDs;}
11999  if( HistoCode == "D_MSp_SpNb"){xvar = fXMemoD_MSp_SpNb;}
12000  if( HistoCode == "D_MSp_SpDs"){xvar = fXMemoD_MSp_SpDs;}
12001  if( HistoCode == "D_SSp_SpNb"){xvar = fXMemoD_SSp_SpNb;}
12002  if( HistoCode == "D_SSp_SpDs"){xvar = fXMemoD_SSp_SpDs;}
12003  if( HistoCode == "D_Adc_EvNb"){xvar = fXMemoD_Adc_EvNb;}
12004  if( HistoCode == "D_Adc_EvDs"){xvar = fXMemoD_Adc_EvDs;}
12005  if( HistoCode == "H_Ped_Date"){xvar = fXMemoH_Ped_Date;}
12006  if( HistoCode == "H_TNo_Date"){xvar = fXMemoH_TNo_Date;}
12007  if( HistoCode == "H_MCs_Date"){xvar = fXMemoH_MCs_Date;}
12008  if( HistoCode == "H_LFN_Date"){xvar = fXMemoH_LFN_Date;}
12009  if( HistoCode == "H_HFN_Date"){xvar = fXMemoH_HFN_Date;}
12010  if( HistoCode == "H_SCs_Date"){xvar = fXMemoH_SCs_Date;}
12011  if( HistoCode == "H_Ped_RuDs"){xvar = fXMemoH_Ped_RuDs;}
12012  if( HistoCode == "H_TNo_RuDs"){xvar = fXMemoH_TNo_RuDs;}
12013  if( HistoCode == "H_MCs_RuDs"){xvar = fXMemoH_MCs_RuDs;}
12014  if( HistoCode == "H_LFN_RuDs"){xvar = fXMemoH_LFN_RuDs;}
12015  if( HistoCode == "H_HFN_RuDs"){xvar = fXMemoH_HFN_RuDs;}
12016  if( HistoCode == "H_SCs_RuDs"){xvar = fXMemoH_SCs_RuDs;}
12017  }
12018  return xvar;
12019 }// end of GetXVarFromMemo(...)
12020 
12021 
12022 void TEcnaHistos::SetYVarMemo(const TString& HistoCode, const TString& opt_plot, const TString& yvar)
12023 {
12024  if( opt_plot == fSameOnePlot ){fYMemoH1SamePlus = yvar;}
12025 
12026  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12027  {
12028  if( HistoCode == "D_NOE_ChNb"){fYMemoD_NOE_ChNb = yvar;}
12029  if( HistoCode == "D_NOE_ChDs"){fYMemoD_NOE_ChDs = yvar;}
12030  if( HistoCode == "D_Ped_ChNb"){fYMemoD_Ped_ChNb = yvar;}
12031  if( HistoCode == "D_Ped_ChDs"){fYMemoD_Ped_ChDs = yvar;}
12032  if( HistoCode == "D_TNo_ChNb"){fYMemoD_TNo_ChNb = yvar;}
12033  if( HistoCode == "D_TNo_ChDs"){fYMemoD_TNo_ChDs = yvar;}
12034  if( HistoCode == "D_MCs_ChNb"){fYMemoD_MCs_ChNb = yvar;}
12035  if( HistoCode == "D_MCs_ChDs"){fYMemoD_MCs_ChDs = yvar;}
12036  if( HistoCode == "D_LFN_ChNb"){fYMemoD_LFN_ChNb = yvar;}
12037  if( HistoCode == "D_LFN_ChDs"){fYMemoD_LFN_ChDs = yvar;}
12038  if( HistoCode == "D_HFN_ChNb"){fYMemoD_HFN_ChNb = yvar;}
12039  if( HistoCode == "D_HFN_ChDs"){fYMemoD_HFN_ChDs = yvar;}
12040  if( HistoCode == "D_SCs_ChNb"){fYMemoD_SCs_ChNb = yvar;}
12041  if( HistoCode == "D_SCs_ChDs"){fYMemoD_SCs_ChDs = yvar;}
12042  if( HistoCode == "D_MSp_SpNb"){fYMemoD_MSp_SpNb = yvar;}
12043  if( HistoCode == "D_MSp_SpDs"){fYMemoD_MSp_SpDs = yvar;}
12044  if( HistoCode == "D_SSp_SpNb"){fYMemoD_SSp_SpNb = yvar;}
12045  if( HistoCode == "D_Adc_EvDs"){fYMemoD_Adc_EvDs = yvar;}
12046  if( HistoCode == "D_SSp_SpDs"){fYMemoD_SSp_SpDs = yvar;}
12047  if( HistoCode == "D_Adc_EvNb"){fYMemoD_Adc_EvNb = yvar;}
12048  if( HistoCode == "H_Ped_Date"){fYMemoH_Ped_Date = yvar;}
12049  if( HistoCode == "H_TNo_Date"){fYMemoH_TNo_Date = yvar;}
12050  if( HistoCode == "H_MCs_Date"){fYMemoH_MCs_Date = yvar;}
12051  if( HistoCode == "H_LFN_Date"){fYMemoH_LFN_Date = yvar;}
12052  if( HistoCode == "H_HFN_Date"){fYMemoH_HFN_Date = yvar;}
12053  if( HistoCode == "H_SCs_Date"){fYMemoH_SCs_Date = yvar;}
12054  if( HistoCode == "H_Ped_RuDs"){fYMemoH_Ped_RuDs = yvar;}
12055  if( HistoCode == "H_TNo_RuDs"){fYMemoH_TNo_RuDs = yvar;}
12056  if( HistoCode == "H_MCs_RuDs"){fYMemoH_MCs_RuDs = yvar;}
12057  if( HistoCode == "H_LFN_RuDs"){fYMemoH_LFN_RuDs = yvar;}
12058  if( HistoCode == "H_HFN_RuDs"){fYMemoH_HFN_RuDs = yvar;}
12059  if( HistoCode == "H_SCs_RuDs"){fYMemoH_SCs_RuDs = yvar;}
12060  }
12061 }// end of SetYVarMemo(...)
12062 
12063 TString TEcnaHistos::GetYVarFromMemo(const TString& HistoCode, const TString& opt_plot)
12064 {
12065  TString yvar = "(yvar not found)";
12066 
12067  if( opt_plot == fSameOnePlot ){yvar = fYMemoH1SamePlus;}
12068 
12069  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12070  {
12071  if( HistoCode == "D_NOE_ChNb"){yvar = fYMemoD_NOE_ChNb;}
12072  if( HistoCode == "D_NOE_ChDs"){yvar = fYMemoD_NOE_ChDs;}
12073  if( HistoCode == "D_Ped_ChNb"){yvar = fYMemoD_Ped_ChNb;}
12074  if( HistoCode == "D_Ped_ChDs"){yvar = fYMemoD_Ped_ChDs;}
12075  if( HistoCode == "D_TNo_ChNb"){yvar = fYMemoD_TNo_ChNb;}
12076  if( HistoCode == "D_TNo_ChDs"){yvar = fYMemoD_TNo_ChDs;}
12077  if( HistoCode == "D_MCs_ChNb"){yvar = fYMemoD_MCs_ChNb;}
12078  if( HistoCode == "D_MCs_ChDs"){yvar = fYMemoD_MCs_ChDs;}
12079  if( HistoCode == "D_LFN_ChNb"){yvar = fYMemoD_LFN_ChNb;}
12080  if( HistoCode == "D_LFN_ChDs"){yvar = fYMemoD_LFN_ChDs;}
12081  if( HistoCode == "D_HFN_ChNb"){yvar = fYMemoD_HFN_ChNb;}
12082  if( HistoCode == "D_HFN_ChDs"){yvar = fYMemoD_HFN_ChDs;}
12083  if( HistoCode == "D_SCs_ChNb"){yvar = fYMemoD_SCs_ChNb;}
12084  if( HistoCode == "D_SCs_ChDs"){yvar = fYMemoD_SCs_ChDs;}
12085  if( HistoCode == "D_MSp_SpNb"){yvar = fYMemoD_MSp_SpNb;}
12086  if( HistoCode == "D_MSp_SpDs"){yvar = fYMemoD_MSp_SpDs;}
12087  if( HistoCode == "D_SSp_SpNb"){yvar = fYMemoD_SSp_SpNb;}
12088  if( HistoCode == "D_SSp_SpDs"){yvar = fYMemoD_SSp_SpDs;}
12089  if( HistoCode == "D_Adc_EvNb"){yvar = fYMemoD_Adc_EvNb;}
12090  if( HistoCode == "D_Adc_EvDs"){yvar = fYMemoD_Adc_EvDs;}
12091  if( HistoCode == "H_Ped_Date"){yvar = fYMemoH_Ped_Date;}
12092  if( HistoCode == "H_TNo_Date"){yvar = fYMemoH_TNo_Date;}
12093  if( HistoCode == "H_MCs_Date"){yvar = fYMemoH_MCs_Date;}
12094  if( HistoCode == "H_LFN_Date"){yvar = fYMemoH_LFN_Date;}
12095  if( HistoCode == "H_HFN_Date"){yvar = fYMemoH_HFN_Date;}
12096  if( HistoCode == "H_SCs_Date"){yvar = fYMemoH_SCs_Date;}
12097  if( HistoCode == "H_Ped_RuDs"){yvar = fYMemoH_Ped_RuDs;}
12098  if( HistoCode == "H_TNo_RuDs"){yvar = fYMemoH_TNo_RuDs;}
12099  if( HistoCode == "H_MCs_RuDs"){yvar = fYMemoH_MCs_RuDs;}
12100  if( HistoCode == "H_LFN_RuDs"){yvar = fYMemoH_LFN_RuDs;}
12101  if( HistoCode == "H_HFN_RuDs"){yvar = fYMemoH_HFN_RuDs;}
12102  if( HistoCode == "H_SCs_RuDs"){yvar = fYMemoH_SCs_RuDs;}
12103  }
12104  return yvar;
12105 }// end of GetYVarFromMemo(...)
12106 
12107 void TEcnaHistos::SetNbBinsMemo(const TString& HistoCode, const TString& opt_plot, const Int_t& nb_bins)
12108 {
12109 
12110  if( opt_plot == fSameOnePlot ){fNbBinsMemoH1SamePlus = nb_bins;}
12111 
12112  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12113  {
12114  if( HistoCode == "D_NOE_ChNb"){fNbBinsMemoD_NOE_ChNb = nb_bins;}
12115  if( HistoCode == "D_NOE_ChDs"){fNbBinsMemoD_NOE_ChDs = nb_bins;}
12116  if( HistoCode == "D_Ped_ChNb"){fNbBinsMemoD_Ped_ChNb = nb_bins;}
12117  if( HistoCode == "D_Ped_ChDs"){fNbBinsMemoD_Ped_ChDs = nb_bins;}
12118  if( HistoCode == "D_TNo_ChNb"){fNbBinsMemoD_TNo_ChNb = nb_bins;}
12119  if( HistoCode == "D_TNo_ChDs"){fNbBinsMemoD_TNo_ChDs = nb_bins;}
12120  if( HistoCode == "D_MCs_ChNb"){fNbBinsMemoD_MCs_ChNb = nb_bins;}
12121  if( HistoCode == "D_MCs_ChDs"){fNbBinsMemoD_MCs_ChDs = nb_bins;}
12122  if( HistoCode == "D_LFN_ChNb"){fNbBinsMemoD_LFN_ChNb = nb_bins;}
12123  if( HistoCode == "D_LFN_ChDs"){fNbBinsMemoD_LFN_ChDs = nb_bins;}
12124  if( HistoCode == "D_HFN_ChNb"){fNbBinsMemoD_HFN_ChNb = nb_bins;}
12125  if( HistoCode == "D_HFN_ChDs"){fNbBinsMemoD_HFN_ChDs = nb_bins;}
12126  if( HistoCode == "D_SCs_ChNb"){fNbBinsMemoD_SCs_ChNb = nb_bins;}
12127  if( HistoCode == "D_SCs_ChDs"){fNbBinsMemoD_SCs_ChDs = nb_bins;}
12128  if( HistoCode == "D_MSp_SpNb"){fNbBinsMemoD_MSp_SpNb = nb_bins;}
12129  if( HistoCode == "D_MSp_SpDs"){fNbBinsMemoD_MSp_SpDs = nb_bins;}
12130  if( HistoCode == "D_SSp_SpNb"){fNbBinsMemoD_SSp_SpNb = nb_bins;}
12131  if( HistoCode == "D_SSp_SpDs"){fNbBinsMemoD_SSp_SpDs = nb_bins;}
12132  if( HistoCode == "D_Adc_EvNb"){fNbBinsMemoD_Adc_EvNb = nb_bins;}
12133  if( HistoCode == "D_Adc_EvDs"){fNbBinsMemoD_Adc_EvDs = nb_bins;}
12134  if( HistoCode == "H_Ped_Date"){fNbBinsMemoH_Ped_Date = nb_bins;}
12135  if( HistoCode == "H_TNo_Date"){fNbBinsMemoH_TNo_Date = nb_bins;}
12136  if( HistoCode == "H_MCs_Date"){fNbBinsMemoH_MCs_Date = nb_bins;}
12137  if( HistoCode == "H_LFN_Date"){fNbBinsMemoH_LFN_Date = nb_bins;}
12138  if( HistoCode == "H_HFN_Date"){fNbBinsMemoH_HFN_Date = nb_bins;}
12139  if( HistoCode == "H_SCs_Date"){fNbBinsMemoH_SCs_Date = nb_bins;}
12140  if( HistoCode == "H_Ped_RuDs"){fNbBinsMemoH_Ped_RuDs = nb_bins;}
12141  if( HistoCode == "H_TNo_RuDs"){fNbBinsMemoH_TNo_RuDs = nb_bins;}
12142  if( HistoCode == "H_MCs_RuDs"){fNbBinsMemoH_MCs_RuDs = nb_bins;}
12143  if( HistoCode == "H_LFN_RuDs"){fNbBinsMemoH_LFN_RuDs = nb_bins;}
12144  if( HistoCode == "H_HFN_RuDs"){fNbBinsMemoH_HFN_RuDs = nb_bins;}
12145  if( HistoCode == "H_SCs_RuDs"){fNbBinsMemoH_SCs_RuDs = nb_bins;}
12146  }
12147 }// end of SetNbBinsMemo(...)
12148 
12149 Int_t TEcnaHistos::GetNbBinsFromMemo(const TString& HistoCode, const TString& opt_plot)
12150 {
12151  Int_t nb_bins = 0;
12152 
12153  if( opt_plot == fSameOnePlot ){nb_bins = fNbBinsMemoH1SamePlus;}
12154 
12155  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12156  {
12157  if( HistoCode == "D_NOE_ChNb"){nb_bins = fNbBinsMemoD_NOE_ChNb;}
12158  if( HistoCode == "D_NOE_ChDs"){nb_bins = fNbBinsMemoD_NOE_ChDs;}
12159  if( HistoCode == "D_Ped_ChNb"){nb_bins = fNbBinsMemoD_Ped_ChNb;}
12160  if( HistoCode == "D_Ped_ChDs"){nb_bins = fNbBinsMemoD_Ped_ChDs;}
12161  if( HistoCode == "D_TNo_ChNb"){nb_bins = fNbBinsMemoD_TNo_ChNb;}
12162  if( HistoCode == "D_TNo_ChDs"){nb_bins = fNbBinsMemoD_TNo_ChDs;}
12163  if( HistoCode == "D_MCs_ChNb"){nb_bins = fNbBinsMemoD_MCs_ChNb;}
12164  if( HistoCode == "D_MCs_ChDs"){nb_bins = fNbBinsMemoD_MCs_ChDs;}
12165  if( HistoCode == "D_LFN_ChNb"){nb_bins = fNbBinsMemoD_LFN_ChNb;}
12166  if( HistoCode == "D_LFN_ChDs"){nb_bins = fNbBinsMemoD_LFN_ChDs;}
12167  if( HistoCode == "D_HFN_ChNb"){nb_bins = fNbBinsMemoD_HFN_ChNb;}
12168  if( HistoCode == "D_HFN_ChDs"){nb_bins = fNbBinsMemoD_HFN_ChDs;}
12169  if( HistoCode == "D_SCs_ChNb"){nb_bins = fNbBinsMemoD_SCs_ChNb;}
12170  if( HistoCode == "D_SCs_ChDs"){nb_bins = fNbBinsMemoD_SCs_ChDs;}
12171  if( HistoCode == "D_MSp_SpNb"){nb_bins = fNbBinsMemoD_MSp_SpNb;}
12172  if( HistoCode == "D_MSp_SpDs"){nb_bins = fNbBinsMemoD_MSp_SpDs;}
12173  if( HistoCode == "D_SSp_SpNb"){nb_bins = fNbBinsMemoD_SSp_SpNb;}
12174  if( HistoCode == "D_SSp_SpDs"){nb_bins = fNbBinsMemoD_SSp_SpDs;}
12175  if( HistoCode == "D_Adc_EvNb"){nb_bins = fNbBinsMemoD_Adc_EvNb;}
12176  if( HistoCode == "D_Adc_EvDs"){nb_bins = fNbBinsMemoD_Adc_EvDs;}
12177  if( HistoCode == "H_Ped_Date"){nb_bins = fNbBinsMemoH_Ped_Date;}
12178  if( HistoCode == "H_TNo_Date"){nb_bins = fNbBinsMemoH_TNo_Date;}
12179  if( HistoCode == "H_MCs_Date"){nb_bins = fNbBinsMemoH_MCs_Date;}
12180  if( HistoCode == "H_LFN_Date"){nb_bins = fNbBinsMemoH_LFN_Date;}
12181  if( HistoCode == "H_HFN_Date"){nb_bins = fNbBinsMemoH_HFN_Date;}
12182  if( HistoCode == "H_SCs_Date"){nb_bins = fNbBinsMemoH_SCs_Date;}
12183  if( HistoCode == "H_Ped_RuDs"){nb_bins = fNbBinsMemoH_Ped_RuDs;}
12184  if( HistoCode == "H_TNo_RuDs"){nb_bins = fNbBinsMemoH_TNo_RuDs;}
12185  if( HistoCode == "H_MCs_RuDs"){nb_bins = fNbBinsMemoH_MCs_RuDs;}
12186  if( HistoCode == "H_LFN_RuDs"){nb_bins = fNbBinsMemoH_LFN_RuDs;}
12187  if( HistoCode == "H_HFN_RuDs"){nb_bins = fNbBinsMemoH_HFN_RuDs;}
12188  if( HistoCode == "H_SCs_RuDs"){nb_bins = fNbBinsMemoH_SCs_RuDs;}
12189  }
12190  return nb_bins;
12191 }// end of GetNbBinsFromMemo(...)
12192 
12193 TString TEcnaHistos::GetMemoFlag(const TString& opt_plot)
12194 {
12195  TString memo_flag;
12196  memo_flag.Resize(charArrLen);
12197  memo_flag = "(no memo_flag info)";
12198 
12199  Int_t memo_flag_number = -1;
12200 
12201  if( opt_plot == fSameOnePlot ){memo_flag_number = fMemoPlotH1SamePlus;}
12202 
12203  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12204  {
12205  memo_flag_number = fMemoPlotD_TNo_ChDs+fMemoPlotD_MCs_ChDs
12207  }
12208 
12209  if(memo_flag_number == 0){memo_flag = "Free";}
12210  if(memo_flag_number >= 1){memo_flag = "Busy";}
12211 
12212  return memo_flag;
12213 }
12214 
12215 TString TEcnaHistos::GetMemoFlag(const TString& HistoCode, const TString& opt_plot)
12216 {
12217 // Get Memo Flag
12218 
12219  TString memo_flag;
12220  memo_flag.Resize(charArrLen);
12221  memo_flag = "(no memo_flag info)";
12222 
12223  Int_t memo_flag_number = -1;
12224 
12225  if( opt_plot == fSameOnePlot ){memo_flag_number = fMemoPlotH1SamePlus;}
12226 
12227  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12228  {
12229  if(HistoCode == "D_NOE_ChNb"){memo_flag_number = fMemoPlotD_NOE_ChNb;}
12230  if(HistoCode == "D_NOE_ChDs"){memo_flag_number = fMemoPlotD_NOE_ChDs;}
12231  if(HistoCode == "D_Ped_ChNb"){memo_flag_number = fMemoPlotD_Ped_ChNb;}
12232  if(HistoCode == "D_Ped_ChDs"){memo_flag_number = fMemoPlotD_Ped_ChDs;}
12233  if(HistoCode == "D_TNo_ChNb"){memo_flag_number = fMemoPlotD_TNo_ChNb;}
12234  if(HistoCode == "D_TNo_ChDs"){memo_flag_number = fMemoPlotD_TNo_ChDs;}
12235  if(HistoCode == "D_MCs_ChNb"){memo_flag_number = fMemoPlotD_MCs_ChNb;}
12236  if(HistoCode == "D_MCs_ChDs"){memo_flag_number = fMemoPlotD_MCs_ChDs;}
12237  if(HistoCode == "D_LFN_ChNb"){memo_flag_number = fMemoPlotD_LFN_ChNb;}
12238  if(HistoCode == "D_LFN_ChDs"){memo_flag_number = fMemoPlotD_LFN_ChDs;}
12239  if(HistoCode == "D_HFN_ChNb"){memo_flag_number = fMemoPlotD_HFN_ChNb;}
12240  if(HistoCode == "D_HFN_ChDs"){memo_flag_number = fMemoPlotD_HFN_ChDs;}
12241  if(HistoCode == "D_SCs_ChNb"){memo_flag_number = fMemoPlotD_SCs_ChNb;}
12242  if(HistoCode == "D_SCs_ChDs"){memo_flag_number = fMemoPlotD_SCs_ChDs;}
12243  if(HistoCode == "D_MSp_SpNb"){memo_flag_number = fMemoPlotD_MSp_SpNb;}
12244  if(HistoCode == "D_MSp_SpDs"){memo_flag_number = fMemoPlotD_MSp_SpDs;}
12245  if(HistoCode == "D_SSp_SpNb"){memo_flag_number = fMemoPlotD_SSp_SpNb;}
12246  if(HistoCode == "D_SSp_SpDs"){memo_flag_number = fMemoPlotD_SSp_SpDs;}
12247  if(HistoCode == "D_Adc_EvNb"){memo_flag_number = fMemoPlotD_Adc_EvNb;}
12248  if(HistoCode == "D_Adc_EvDs"){memo_flag_number = fMemoPlotD_Adc_EvDs;}
12249  if(HistoCode == "H_Ped_Date"){memo_flag_number = fMemoPlotH_Ped_Date;}
12250  if(HistoCode == "H_TNo_Date"){memo_flag_number = fMemoPlotH_TNo_Date;}
12251  if(HistoCode == "H_MCs_Date"){memo_flag_number = fMemoPlotH_MCs_Date;}
12252  if(HistoCode == "H_LFN_Date"){memo_flag_number = fMemoPlotH_LFN_Date;}
12253  if(HistoCode == "H_HFN_Date"){memo_flag_number = fMemoPlotH_HFN_Date;}
12254  if(HistoCode == "H_SCs_Date"){memo_flag_number = fMemoPlotH_SCs_Date;}
12255  if(HistoCode == "H_Ped_RuDs"){memo_flag_number = fMemoPlotH_Ped_RuDs;}
12256  if(HistoCode == "H_TNo_RuDs"){memo_flag_number = fMemoPlotH_TNo_RuDs;}
12257  if(HistoCode == "H_MCs_RuDs"){memo_flag_number = fMemoPlotH_MCs_RuDs;}
12258  if(HistoCode == "H_LFN_RuDs"){memo_flag_number = fMemoPlotH_LFN_RuDs;}
12259  if(HistoCode == "H_HFN_RuDs"){memo_flag_number = fMemoPlotH_HFN_RuDs;}
12260  if(HistoCode == "H_SCs_RuDs"){memo_flag_number = fMemoPlotH_SCs_RuDs;}
12261  }
12262 
12263  if(memo_flag_number == 0){memo_flag = "Free";}
12264  if(memo_flag_number == 1){memo_flag = "Busy";}
12265 
12266  return memo_flag;
12267 }
12268 
12269 TCanvas* TEcnaHistos::CreateCanvas(const TString& HistoCode, const TString& opt_plot, const TString& canvas_name,
12270  UInt_t canv_w, UInt_t canv_h)
12271 {
12272 // Create canvas according to HistoCode
12273 
12274  TCanvas* main_canvas = nullptr;
12275 
12276  if( opt_plot == fSameOnePlot )
12277  {
12278  fCanvH1SamePlus = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12279  main_canvas = fCanvH1SamePlus;
12280  }
12281  if( opt_plot == fSeveralPlot || opt_plot == fOnlyOnePlot )
12282  {
12283  if(HistoCode == "D_NOE_ChNb"){
12284  fCanvD_NOE_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12285  main_canvas = fCanvD_NOE_ChNb;}
12286  if(HistoCode == "D_NOE_ChDs"){
12287  fCanvD_NOE_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12288  main_canvas = fCanvD_NOE_ChDs;}
12289  if(HistoCode == "D_Ped_ChNb"){
12290  fCanvD_Ped_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12291  main_canvas = fCanvD_Ped_ChNb;}
12292  if(HistoCode == "D_Ped_ChDs"){
12293  fCanvD_Ped_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12294  main_canvas = fCanvD_Ped_ChDs;}
12295  if(HistoCode == "D_TNo_ChNb"){
12296  fCanvD_TNo_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12297  main_canvas = fCanvD_TNo_ChNb;}
12298  if(HistoCode == "D_TNo_ChDs"){
12299  fCanvD_TNo_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12300  main_canvas = fCanvD_TNo_ChDs;}
12301  if(HistoCode == "D_MCs_ChNb"){
12302  fCanvD_MCs_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12303  main_canvas = fCanvD_MCs_ChNb;}
12304  if(HistoCode == "D_MCs_ChDs"){
12305  fCanvD_MCs_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12306  main_canvas = fCanvD_MCs_ChDs;}
12307  if(HistoCode == "D_LFN_ChNb"){
12308  fCanvD_LFN_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12309  main_canvas = fCanvD_LFN_ChNb;}
12310  if(HistoCode == "D_LFN_ChDs"){
12311  fCanvD_LFN_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12312  main_canvas = fCanvD_LFN_ChDs;}
12313  if(HistoCode == "D_HFN_ChNb"){
12314  fCanvD_HFN_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12315  main_canvas = fCanvD_HFN_ChNb;}
12316  if(HistoCode == "D_HFN_ChDs"){
12317  fCanvD_HFN_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12318  main_canvas = fCanvD_HFN_ChDs;}
12319  if(HistoCode == "D_SCs_ChNb"){
12320  fCanvD_SCs_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12321  main_canvas = fCanvD_SCs_ChNb;}
12322  if(HistoCode == "D_SCs_ChDs"){
12323  fCanvD_SCs_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12324  main_canvas = fCanvD_SCs_ChDs;}
12325 
12326  if(HistoCode == "D_MSp_SpNb" ){
12327  fCanvD_MSp_SpNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12328  main_canvas = fCanvD_MSp_SpNb;}
12329  if(HistoCode == "D_MSp_SpDs" ){
12330  fCanvD_MSp_SpDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12331  main_canvas = fCanvD_MSp_SpDs;}
12332  if(HistoCode =="D_SSp_SpNb" ){
12333  fCanvD_SSp_SpNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12334  main_canvas = fCanvD_SSp_SpNb;}
12335  if(HistoCode =="D_SSp_SpDs" ){
12336  fCanvD_SSp_SpDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12337  main_canvas = fCanvD_SSp_SpDs;}
12338 
12339  if(HistoCode == "D_Adc_EvNb"){
12340  fCanvD_Adc_EvNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12341  main_canvas = fCanvD_Adc_EvNb;}
12342  if(HistoCode == "D_Adc_EvDs"){
12343  fCanvD_Adc_EvDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12344  main_canvas = fCanvD_Adc_EvDs;}
12345 
12346  if(HistoCode == "H_Ped_Date"){
12347  fCanvH_Ped_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12348  main_canvas = fCanvH_Ped_Date;}
12349  if(HistoCode == "H_TNo_Date"){
12350  fCanvH_TNo_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12351  main_canvas = fCanvH_TNo_Date;}
12352  if(HistoCode == "H_MCs_Date"){
12353  fCanvH_MCs_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12354  main_canvas = fCanvH_MCs_Date;}
12355  if(HistoCode == "H_LFN_Date"){
12356  fCanvH_LFN_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12357  main_canvas = fCanvH_LFN_Date;}
12358  if(HistoCode == "H_HFN_Date"){
12359  fCanvH_HFN_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12360  main_canvas = fCanvH_HFN_Date;}
12361  if(HistoCode == "H_SCs_Date"){
12362  fCanvH_SCs_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12363  main_canvas = fCanvH_SCs_Date;}
12364 
12365  if(HistoCode == "H_Ped_RuDs"){
12366  fCanvH_Ped_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12367  main_canvas = fCanvH_Ped_RuDs;}
12368  if(HistoCode == "H_TNo_RuDs"){
12369  fCanvH_TNo_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12370  main_canvas = fCanvH_TNo_RuDs;}
12371  if(HistoCode == "H_MCs_RuDs"){
12372  fCanvH_MCs_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12373  main_canvas = fCanvH_MCs_RuDs;}
12374  if(HistoCode == "H_LFN_RuDs"){
12375  fCanvH_LFN_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12376  main_canvas = fCanvH_LFN_RuDs;}
12377  if(HistoCode == "H_HFN_RuDs"){
12378  fCanvH_HFN_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12379  main_canvas = fCanvH_HFN_RuDs;}
12380  if(HistoCode == "H_SCs_RuDs"){
12381  fCanvH_SCs_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12382  main_canvas = fCanvH_SCs_RuDs;}
12383 
12384  }
12385  return main_canvas;
12386 }
12387 // end of CreateCanvas
12388 
12389 void TEcnaHistos::SetParametersCanvas(const TString& HistoCode, const TString& opt_plot)
12390 {
12391 // Set parameters canvas according to HistoCode
12392 
12393  Double_t x_margin_factor = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
12394  Double_t y_margin_factor = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
12395 
12396  if( opt_plot == fSameOnePlot )
12397  {
12398  fImpH1SamePlus = (TCanvasImp*)fCanvH1SamePlus->GetCanvasImp();
12399  fCanvH1SamePlus->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12400  fPadH1SamePlus = gPad; fClosedH1SamePlus = kFALSE;
12402  }
12403 
12404  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
12405  {
12406  if(HistoCode == "D_NOE_ChNb")
12407  {
12408  fImpD_NOE_ChNb = (TCanvasImp*)fCanvD_NOE_ChNb->GetCanvasImp();
12409  fCanvD_NOE_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12410  fPadD_NOE_ChNb = gPad; fClosedD_NOE_ChNb = kFALSE;
12412  }
12413 
12414  if(HistoCode == "D_NOE_ChDs") // (SetParametersCanvas)
12415  {
12416  fImpD_NOE_ChDs = (TCanvasImp*)fCanvD_NOE_ChDs->GetCanvasImp();
12417  fCanvD_NOE_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12418  fPadD_NOE_ChDs = gPad; fClosedD_NOE_ChDs = kFALSE;
12420  }
12421 
12422  if(HistoCode == "D_Ped_ChNb")
12423  {
12424  fImpD_Ped_ChNb = (TCanvasImp*)fCanvD_Ped_ChNb->GetCanvasImp();
12425  fCanvD_Ped_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12426  fPadD_Ped_ChNb = gPad; fClosedD_Ped_ChNb = kFALSE;
12428  }
12429 
12430  if(HistoCode == "D_Ped_ChDs")
12431  {
12432  fImpD_Ped_ChDs = (TCanvasImp*)fCanvD_Ped_ChDs->GetCanvasImp();
12433  fCanvD_Ped_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12434  fPadD_Ped_ChDs = gPad; fClosedD_Ped_ChDs = kFALSE;
12436  }
12437 
12438  if(HistoCode == "D_TNo_ChNb")
12439  {
12440  fImpD_TNo_ChNb = (TCanvasImp*)fCanvD_TNo_ChNb->GetCanvasImp();
12441  fCanvD_TNo_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12442  fPadD_TNo_ChNb = gPad; fClosedD_TNo_ChNb = kFALSE;
12444  }
12445 
12446  if(HistoCode == "D_TNo_ChDs") // (SetParametersCanvas)
12447  {
12448  fImpD_TNo_ChDs = (TCanvasImp*)fCanvD_TNo_ChDs->GetCanvasImp();
12449  fCanvD_TNo_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12450  fPadD_TNo_ChDs = gPad; fClosedD_TNo_ChDs = kFALSE;
12452  }
12453 
12454  if(HistoCode == "D_MCs_ChNb")
12455  {
12456  fImpD_MCs_ChNb = (TCanvasImp*)fCanvD_MCs_ChNb->GetCanvasImp();
12457  fCanvD_MCs_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12458  fPadD_MCs_ChNb = gPad; fClosedD_MCs_ChNb = kFALSE;
12460  }
12461 
12462  if(HistoCode == "D_MCs_ChDs")
12463  {
12464  fImpD_MCs_ChDs = (TCanvasImp*)fCanvD_MCs_ChDs->GetCanvasImp();
12465  fCanvD_MCs_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12466  fPadD_MCs_ChDs = gPad; fClosedD_MCs_ChDs = kFALSE;
12468  }
12469 
12470  if(HistoCode == "D_LFN_ChNb") // (SetParametersCanvas)
12471  {
12472  fImpD_LFN_ChNb = (TCanvasImp*)fCanvD_LFN_ChNb->GetCanvasImp();
12473  fCanvD_LFN_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12474  fPadD_LFN_ChNb = gPad; fClosedD_LFN_ChNb = kFALSE;
12476  }
12477 
12478  if(HistoCode == "D_LFN_ChDs")
12479  {
12480  fImpD_LFN_ChDs = (TCanvasImp*)fCanvD_LFN_ChDs->GetCanvasImp();
12481  fCanvD_LFN_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12482  fPadD_LFN_ChDs = gPad; fClosedD_LFN_ChDs = kFALSE;
12484  }
12485 
12486  if(HistoCode == "D_HFN_ChNb")
12487  {
12488  fImpD_HFN_ChNb = (TCanvasImp*)fCanvD_HFN_ChNb->GetCanvasImp();
12489  fCanvD_HFN_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12490  fPadD_HFN_ChNb = gPad; fClosedD_HFN_ChNb = kFALSE;
12492  }
12493 
12494  if(HistoCode == "D_HFN_ChDs")
12495  {
12496  fImpD_HFN_ChDs = (TCanvasImp*)fCanvD_HFN_ChDs->GetCanvasImp();
12497  fCanvD_HFN_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12498  fPadD_HFN_ChDs = gPad; fClosedD_HFN_ChDs = kFALSE;
12500  }
12501 
12502  if(HistoCode == "D_SCs_ChNb") // (SetParametersCanvas)
12503  {
12504  fImpD_SCs_ChNb = (TCanvasImp*)fCanvD_SCs_ChNb->GetCanvasImp();
12505  fCanvD_SCs_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12506  fPadD_SCs_ChNb = gPad; fClosedD_SCs_ChNb = kFALSE;
12508  }
12509 
12510  if(HistoCode == "D_SCs_ChDs")
12511  {
12512  fImpD_SCs_ChDs = (TCanvasImp*)fCanvD_SCs_ChDs->GetCanvasImp();
12513  fCanvD_SCs_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12514  fPadD_SCs_ChDs = gPad; fClosedD_SCs_ChDs = kFALSE;
12516  }
12517 
12518  if(HistoCode == "D_MSp_SpNb")
12519  {
12520  fImpD_MSp_SpNb = (TCanvasImp*)fCanvD_MSp_SpNb->GetCanvasImp();
12521  fCanvD_MSp_SpNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12522  fPadD_MSp_SpNb = gPad; fClosedD_MSp_SpNb = kFALSE;
12524  }
12525 
12526  if(HistoCode == "D_MSp_SpDs")
12527  {
12528  fImpD_MSp_SpDs = (TCanvasImp*)fCanvD_MSp_SpDs->GetCanvasImp();
12529  fCanvD_MSp_SpDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12530  fPadD_MSp_SpDs = gPad; fClosedD_MSp_SpDs = kFALSE;
12532  }
12533 
12534  if(HistoCode == "D_SSp_SpNb") // (SetParametersCanvas)
12535  {
12536  fImpD_SSp_SpNb = (TCanvasImp*)fCanvD_SSp_SpNb->GetCanvasImp();
12537  fCanvD_SSp_SpNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12538  fPadD_SSp_SpNb = gPad; fClosedD_SSp_SpNb = kFALSE;
12540  }
12541 
12542  if(HistoCode == "D_SSp_SpDs") // (SetParametersCanvas)
12543  {
12544  fImpD_SSp_SpDs = (TCanvasImp*)fCanvD_SSp_SpDs->GetCanvasImp();
12545  fCanvD_SSp_SpDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12546  fPadD_SSp_SpDs = gPad; fClosedD_SSp_SpDs = kFALSE;
12548  }
12549 
12550  if(HistoCode == "D_Adc_EvDs")
12551  {
12552  fImpD_Adc_EvDs = (TCanvasImp*)fCanvD_Adc_EvDs->GetCanvasImp();
12553  fCanvD_Adc_EvDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12554  fPadD_Adc_EvDs = gPad; fClosedD_Adc_EvDs = kFALSE;
12556  }
12557 
12558  if(HistoCode == "D_Adc_EvNb")
12559  {
12560  fImpD_Adc_EvNb = (TCanvasImp*)fCanvD_Adc_EvNb->GetCanvasImp();
12561  fCanvD_Adc_EvNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12562  fPadD_Adc_EvNb = gPad; fClosedD_Adc_EvNb = kFALSE;
12564  }
12565 
12566  if(HistoCode == "H_Ped_Date") // (SetParametersCanvas)
12567  {
12568  fImpH_Ped_Date = (TCanvasImp*)fCanvH_Ped_Date->GetCanvasImp();
12569  fCanvH_Ped_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12570  fPadH_Ped_Date = gPad; fClosedH_Ped_Date = kFALSE;
12572  }
12573  if(HistoCode == "H_TNo_Date")
12574  {
12575  fImpH_TNo_Date = (TCanvasImp*)fCanvH_TNo_Date->GetCanvasImp();
12576  fCanvH_TNo_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12577  fPadH_TNo_Date = gPad; fClosedH_TNo_Date = kFALSE;
12579  }
12580  if(HistoCode == "H_MCs_Date")
12581  {
12582  fImpH_MCs_Date = (TCanvasImp*)fCanvH_MCs_Date->GetCanvasImp();
12583  fCanvH_MCs_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12584  fPadH_MCs_Date = gPad; fClosedH_MCs_Date = kFALSE;
12586  }
12587 
12588  if(HistoCode == "H_LFN_Date") // (SetParametersCanvas)
12589  {
12590  fImpH_LFN_Date = (TCanvasImp*)fCanvH_LFN_Date->GetCanvasImp();
12591  fCanvH_LFN_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12592  fPadH_LFN_Date = gPad; fClosedH_LFN_Date = kFALSE;
12594  }
12595  if(HistoCode == "H_HFN_Date")
12596  {
12597  fImpH_HFN_Date = (TCanvasImp*)fCanvH_HFN_Date->GetCanvasImp();
12598  fCanvH_HFN_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12599  fPadH_HFN_Date = gPad; fClosedH_HFN_Date = kFALSE;
12601  }
12602  if(HistoCode == "H_SCs_Date")
12603  {
12604  fImpH_SCs_Date = (TCanvasImp*)fCanvH_SCs_Date->GetCanvasImp();
12605  fCanvH_SCs_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12606  fPadH_SCs_Date = gPad; fClosedH_SCs_Date = kFALSE;
12608  }
12609 
12610  if(HistoCode == "H_Ped_RuDs") // (SetParametersCanvas)
12611  {
12612  fImpH_Ped_RuDs = (TCanvasImp*)fCanvH_Ped_RuDs->GetCanvasImp();
12613  fCanvH_Ped_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12614  fPadH_Ped_RuDs = gPad; fClosedH_Ped_RuDs = kFALSE;
12616  }
12617  if(HistoCode == "H_TNo_RuDs")
12618  {
12619  fImpH_TNo_RuDs = (TCanvasImp*)fCanvH_TNo_RuDs->GetCanvasImp();
12620  fCanvH_TNo_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12621  fPadH_TNo_RuDs = gPad; fClosedH_TNo_RuDs = kFALSE;
12623  }
12624  if(HistoCode == "H_MCs_RuDs")
12625  {
12626  fImpH_MCs_RuDs = (TCanvasImp*)fCanvH_MCs_RuDs->GetCanvasImp();
12627  fCanvH_MCs_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12628  fPadH_MCs_RuDs = gPad; fClosedH_MCs_RuDs = kFALSE;
12630  }
12631 
12632  if(HistoCode == "H_LFN_RuDs") // (SetParametersCanvas)
12633  {
12634  fImpH_LFN_RuDs = (TCanvasImp*)fCanvH_LFN_RuDs->GetCanvasImp();
12635  fCanvH_LFN_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12636  fPadH_LFN_RuDs = gPad; fClosedH_LFN_RuDs = kFALSE;
12638  }
12639  if(HistoCode == "H_HFN_RuDs")
12640  {
12641  fImpH_HFN_RuDs = (TCanvasImp*)fCanvH_HFN_RuDs->GetCanvasImp();
12642  fCanvH_HFN_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12643  fPadH_HFN_RuDs = gPad; fClosedH_HFN_RuDs = kFALSE;
12645  }
12646  if(HistoCode == "H_SCs_RuDs")
12647  {
12648  fImpH_SCs_RuDs = (TCanvasImp*)fCanvH_SCs_RuDs->GetCanvasImp();
12649  fCanvH_SCs_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12650  fPadH_SCs_RuDs = gPad; fClosedH_SCs_RuDs = kFALSE;
12652  }
12653  }
12654 }
12655 // end of SetParametersCanvas
12656 
12657 TCanvas* TEcnaHistos::GetCurrentCanvas(const TString& HistoCode, const TString& opt_plot)
12658 {
12659  TCanvas* main_canvas = nullptr;
12660 
12661  if( opt_plot == fSameOnePlot ){main_canvas = fCanvH1SamePlus;}
12662 
12663  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
12664  {
12665  if(HistoCode == "D_NOE_ChNb"){main_canvas = fCanvD_NOE_ChNb;}
12666  if(HistoCode == "D_NOE_ChDs"){main_canvas = fCanvD_NOE_ChDs;}
12667  if(HistoCode == "D_Ped_ChNb"){main_canvas = fCanvD_Ped_ChNb;}
12668  if(HistoCode == "D_Ped_ChDs"){main_canvas = fCanvD_Ped_ChDs;}
12669  if(HistoCode == "D_TNo_ChNb"){main_canvas = fCanvD_TNo_ChNb;}
12670  if(HistoCode == "D_TNo_ChDs"){main_canvas = fCanvD_TNo_ChDs;}
12671  if(HistoCode == "D_MCs_ChNb"){main_canvas = fCanvD_MCs_ChNb;}
12672  if(HistoCode == "D_MCs_ChDs"){main_canvas = fCanvD_MCs_ChDs;}
12673  if(HistoCode == "D_LFN_ChNb"){main_canvas = fCanvD_LFN_ChNb;}
12674  if(HistoCode == "D_LFN_ChDs"){main_canvas = fCanvD_LFN_ChDs;}
12675  if(HistoCode == "D_HFN_ChNb"){main_canvas = fCanvD_HFN_ChNb;}
12676  if(HistoCode == "D_HFN_ChDs"){main_canvas = fCanvD_HFN_ChDs;}
12677  if(HistoCode == "D_SCs_ChNb"){main_canvas = fCanvD_SCs_ChNb;}
12678  if(HistoCode == "D_SCs_ChDs"){main_canvas = fCanvD_SCs_ChDs;}
12679  if(HistoCode == "D_MSp_SpNb"){main_canvas = fCanvD_MSp_SpNb;}
12680  if(HistoCode == "D_MSp_SpDs"){main_canvas = fCanvD_MSp_SpDs;}
12681  if(HistoCode == "D_SSp_SpNb"){main_canvas = fCanvD_SSp_SpNb;}
12682  if(HistoCode == "D_SSp_SpDs"){main_canvas = fCanvD_SSp_SpDs;}
12683  if(HistoCode == "D_Adc_EvNb"){main_canvas = fCanvD_Adc_EvNb;}
12684  if(HistoCode == "D_Adc_EvDs"){main_canvas = fCanvD_Adc_EvDs;}
12685  if(HistoCode == "H_Ped_Date"){main_canvas = fCanvH_Ped_Date;}
12686  if(HistoCode == "H_TNo_Date"){main_canvas = fCanvH_TNo_Date;}
12687  if(HistoCode == "H_MCs_Date"){main_canvas = fCanvH_MCs_Date;}
12688  if(HistoCode == "H_LFN_Date"){main_canvas = fCanvH_LFN_Date;}
12689  if(HistoCode == "H_HFN_Date"){main_canvas = fCanvH_HFN_Date;}
12690  if(HistoCode == "H_SCs_Date"){main_canvas = fCanvH_SCs_Date;}
12691  if(HistoCode == "H_Ped_RuDs"){main_canvas = fCanvH_Ped_RuDs;}
12692  if(HistoCode == "H_TNo_RuDs"){main_canvas = fCanvH_TNo_RuDs;}
12693  if(HistoCode == "H_MCs_RuDs"){main_canvas = fCanvH_MCs_RuDs;}
12694  if(HistoCode == "H_LFN_RuDs"){main_canvas = fCanvH_LFN_RuDs;}
12695  if(HistoCode == "H_HFN_RuDs"){main_canvas = fCanvH_HFN_RuDs;}
12696  if(HistoCode == "H_SCs_RuDs"){main_canvas = fCanvH_SCs_RuDs;}
12697  }
12698  return main_canvas;
12699 }
12700 // end of GetCurrentCanvas(...)
12701 
12704 
12706 {
12707  if( fCurrentCanvas != nullptr)
12708  {
12709  if( (TCanvasImp*)fCurrentCanvas->GetCanvasImp() != nullptr )
12710  {
12711  static_cast<TCanvas*>(fCurrentCanvas)->DrawClone();
12712  }
12713  else
12714  {
12715  std::cout << "TEcnaHistos::PlotCloneOfCurrentCanvas()> Last canvas has been removed. No clone can be done."
12716  << std::endl << " Please, display the canvas again."
12717  << fTTBELL << std::endl;
12718  }
12719  }
12720  else
12721  {
12722  std::cout << "TEcnaHistos::PlotCloneOfCurrentCanvas()> No canvas has been created. No clone can be done."
12723  << fTTBELL << std::endl;
12724  }
12725 }
12726 
12727 //--------------------------------------------------------------------------------------------
12728 TVirtualPad* TEcnaHistos::ActivePad(const TString& HistoCode, const TString& opt_plot)
12729 {
12730 // Active Pad for Same plot option
12731 
12732  TVirtualPad* main_subpad = nullptr;
12733 
12734  fCurrentHistoCode = HistoCode;
12735  fCurrentOptPlot = opt_plot;
12736 
12737  if( opt_plot == fSameOnePlot )
12738  {
12739  fCanvH1SamePlus->
12740  Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12741  if( fClosedH1SamePlus == kFALSE ){main_subpad = fPadH1SamePlus;}
12742  }
12743 
12744  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12745  {
12746  if(HistoCode == "D_NOE_ChNb"){
12747  fCanvD_NOE_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12748  if( fClosedD_NOE_ChNb == kFALSE ){main_subpad = fPadD_NOE_ChNb;}}
12749 
12750  if(HistoCode == "D_NOE_ChDs"){
12751  fCanvD_NOE_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12752  if( fClosedD_NOE_ChDs == kFALSE ){main_subpad = fPadD_NOE_ChDs;}}
12753 
12754  if(HistoCode == "D_Ped_ChNb"){
12755  fCanvD_Ped_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12756  if( fClosedD_Ped_ChNb == kFALSE ){main_subpad = fPadD_Ped_ChNb;}}
12757 
12758  if(HistoCode == "D_Ped_ChDs"){
12759  fCanvD_Ped_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12760  if( fClosedD_Ped_ChDs == kFALSE ){main_subpad = fPadD_Ped_ChDs;}}
12761 
12762  if(HistoCode == "D_TNo_ChNb"){
12763  fCanvD_TNo_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12764  if( fClosedD_TNo_ChNb == kFALSE ){main_subpad = fPadD_TNo_ChNb;}}
12765 
12766  if(HistoCode == "D_TNo_ChDs"){
12767  fCanvD_TNo_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12768  if( fClosedD_TNo_ChDs == kFALSE ){main_subpad = fPadD_TNo_ChDs;}}
12769 
12770  if(HistoCode == "D_MCs_ChNb"){
12771  fCanvD_MCs_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12772  if( fClosedD_MCs_ChNb == kFALSE ){main_subpad = fPadD_MCs_ChNb;}}
12773 
12774  if(HistoCode == "D_MCs_ChDs"){
12775  fCanvD_MCs_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12776  if( fClosedD_MCs_ChDs == kFALSE ){main_subpad = fPadD_MCs_ChDs;}}
12777 
12778  if(HistoCode == "D_LFN_ChNb"){
12779  fCanvD_LFN_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12780  if( fClosedD_LFN_ChNb == kFALSE ){main_subpad = fPadD_LFN_ChNb;}}
12781 
12782  if(HistoCode == "D_LFN_ChDs"){
12783  fCanvD_LFN_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12784  if( fClosedD_LFN_ChDs == kFALSE ){main_subpad = fPadD_LFN_ChDs;}}
12785 
12786  if(HistoCode == "D_HFN_ChNb"){
12787  fCanvD_HFN_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12788  if( fClosedD_HFN_ChNb == kFALSE ){main_subpad = fPadD_HFN_ChNb;}}
12789 
12790  if(HistoCode == "D_HFN_ChDs"){
12791  fCanvD_HFN_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12792  if( fClosedD_HFN_ChDs == kFALSE ){main_subpad = fPadD_HFN_ChDs;}}
12793 
12794  if(HistoCode == "D_SCs_ChNb"){
12795  fCanvD_SCs_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12796  if( fClosedD_SCs_ChNb == kFALSE ){main_subpad = fPadD_SCs_ChNb;}}
12797 
12798  if(HistoCode == "D_SCs_ChDs"){
12799  fCanvD_SCs_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12800  if( fClosedD_SCs_ChDs == kFALSE ){main_subpad = fPadD_SCs_ChDs;}}
12801 
12802  if(HistoCode == "D_MSp_SpNb"){
12803  fCanvD_MSp_SpNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12804  if( fClosedD_MSp_SpNb == kFALSE ){main_subpad = fPadD_MSp_SpNb;}}
12805 
12806  if(HistoCode == "D_MSp_SpDs"){
12807  fCanvD_MSp_SpDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12808  if( fClosedD_MSp_SpDs == kFALSE ){main_subpad = fPadD_MSp_SpDs;}}
12809 
12810  if(HistoCode == "D_SSp_SpNb"){
12811  fCanvD_SSp_SpNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12812  if( fClosedD_SSp_SpNb == kFALSE ){main_subpad = fPadD_SSp_SpNb;}}
12813 
12814  if(HistoCode == "D_SSp_SpDs"){
12815  fCanvD_SSp_SpDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12816  if( fClosedD_SSp_SpDs == kFALSE ){main_subpad = fPadD_SSp_SpDs;}}
12817 
12818  if(HistoCode == "D_Adc_EvNb"){
12819  fCanvD_Adc_EvNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12820  if( fClosedD_Adc_EvNb == kFALSE ){main_subpad = fPadD_Adc_EvNb;}}
12821 
12822  if(HistoCode == "D_Adc_EvDs"){
12823  fCanvD_Adc_EvDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12824  if( fClosedD_Adc_EvDs == kFALSE ){main_subpad = fPadD_Adc_EvDs;}}
12825 
12826  if(HistoCode == "H_Ped_Date"){
12827  fCanvH_Ped_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12828  if( fClosedH_Ped_Date == kFALSE ){main_subpad = fPadH_Ped_Date;}}
12829 
12830  if(HistoCode == "H_TNo_Date"){
12831  fCanvH_TNo_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12832  if( fClosedH_TNo_Date == kFALSE ){main_subpad = fPadH_TNo_Date;}}
12833 
12834  if(HistoCode == "H_MCs_Date"){
12835  fCanvH_MCs_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12836  if( fClosedH_MCs_Date == kFALSE ){main_subpad = fPadH_MCs_Date;}}
12837 
12838  if(HistoCode == "H_LFN_Date"){
12839  fCanvH_LFN_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12840  if( fClosedH_LFN_Date == kFALSE ){main_subpad = fPadH_LFN_Date;}}
12841 
12842  if(HistoCode == "H_HFN_Date"){
12843  fCanvH_HFN_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12844  if( fClosedH_HFN_Date == kFALSE ){main_subpad = fPadH_HFN_Date;}}
12845 
12846  if(HistoCode == "H_SCs_Date"){
12847  fCanvH_SCs_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12848  if( fClosedH_SCs_Date == kFALSE ){main_subpad = fPadH_SCs_Date;}}
12849 
12850  if(HistoCode == "H_Ped_RuDs"){
12851  fCanvH_Ped_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12852  if( fClosedH_Ped_RuDs == kFALSE ){main_subpad = fPadH_Ped_RuDs;}}
12853 
12854  if(HistoCode == "H_TNo_RuDs"){
12855  fCanvH_TNo_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12856  if( fClosedH_TNo_RuDs == kFALSE ){main_subpad = fPadH_TNo_RuDs;}}
12857 
12858  if(HistoCode == "H_MCs_RuDs"){
12859  fCanvH_MCs_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12860  if( fClosedH_MCs_RuDs == kFALSE ){main_subpad = fPadH_MCs_RuDs;}}
12861 
12862  if(HistoCode == "H_LFN_RuDs"){
12863  fCanvH_LFN_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12864  if( fClosedH_LFN_RuDs == kFALSE ){main_subpad = fPadH_LFN_RuDs;}}
12865 
12866  if(HistoCode == "H_HFN_RuDs"){
12867  fCanvH_HFN_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12868  if( fClosedH_HFN_RuDs == kFALSE ){main_subpad = fPadH_HFN_RuDs;}}
12869 
12870  if(HistoCode == "H_SCs_RuDs"){
12871  fCanvH_SCs_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12872  if( fClosedH_SCs_RuDs == kFALSE ){main_subpad = fPadH_SCs_RuDs;}}
12873  }
12874 
12875  if( main_subpad == nullptr )
12876  {std::cout << "*TEcnaHistos::ActivePad(...)> main_subpad = "
12877  << main_subpad << ". This canvas has been closed." << std::endl;}
12878 
12879  return main_subpad;
12880 }
12881 // end of ActivePad
12882 
12884 {
12887  {
12888  if(fCurrentHistoCode == "D_NOE_ChNb"){fClosedD_NOE_ChNb = kTRUE;}
12889  if(fCurrentHistoCode == "D_NOE_ChDs"){fClosedD_NOE_ChDs = kTRUE;}
12890  if(fCurrentHistoCode == "D_Ped_ChNb"){fClosedD_Ped_ChNb = kTRUE;}
12891  if(fCurrentHistoCode == "D_Ped_ChDs"){fClosedD_Ped_ChDs = kTRUE;}
12892  if(fCurrentHistoCode == "D_TNo_ChNb"){fClosedD_TNo_ChNb = kTRUE;}
12893  if(fCurrentHistoCode == "D_TNo_ChDs"){fClosedD_TNo_ChDs = kTRUE;}
12894  if(fCurrentHistoCode == "D_MCs_ChNb"){fClosedD_MCs_ChNb = kTRUE;}
12895  if(fCurrentHistoCode == "D_MCs_ChDs"){fClosedD_MCs_ChDs = kTRUE;}
12896  if(fCurrentHistoCode == "D_LFN_ChNb"){fClosedD_LFN_ChNb = kTRUE;}
12897  if(fCurrentHistoCode == "D_LFN_ChDs"){fClosedD_LFN_ChDs = kTRUE;}
12898  if(fCurrentHistoCode == "D_HFN_ChNb"){fClosedD_HFN_ChNb = kTRUE;}
12899  if(fCurrentHistoCode == "D_HFN_ChDs"){fClosedD_HFN_ChDs = kTRUE;}
12900  if(fCurrentHistoCode == "D_SCs_ChNb"){fClosedD_SCs_ChNb = kTRUE;}
12901  if(fCurrentHistoCode == "D_SCs_ChDs"){fClosedD_SCs_ChDs = kTRUE;}
12902  if(fCurrentHistoCode == "D_MSp_SpNb"){fClosedD_MSp_SpNb = kTRUE;}
12903  if(fCurrentHistoCode == "D_MSp_SpDs"){fClosedD_MSp_SpDs = kTRUE;}
12904  if(fCurrentHistoCode == "D_SSp_SpNb"){fClosedD_SSp_SpNb = kTRUE;}
12905  if(fCurrentHistoCode == "D_SSp_SpDs"){fClosedD_SSp_SpDs = kTRUE;}
12906  if(fCurrentHistoCode == "D_Adc_EvNb"){fClosedD_Adc_EvNb = kTRUE;}
12907  if(fCurrentHistoCode == "D_Adc_EvDs"){fClosedD_Adc_EvDs = kTRUE;}
12908  if(fCurrentHistoCode == "H_Ped_Date"){fClosedH_Ped_Date = kTRUE;}
12909  if(fCurrentHistoCode == "H_TNo_Date"){fClosedH_TNo_Date = kTRUE;}
12910  if(fCurrentHistoCode == "H_MCs_Date"){fClosedH_MCs_Date = kTRUE;}
12911  if(fCurrentHistoCode == "H_LFN_Date"){fClosedH_LFN_Date = kTRUE;}
12912  if(fCurrentHistoCode == "H_HFN_Date"){fClosedH_HFN_Date = kTRUE;}
12913  if(fCurrentHistoCode == "H_SCs_Date"){fClosedH_SCs_Date = kTRUE;}
12914  if(fCurrentHistoCode == "H_Ped_RuDs"){fClosedH_Ped_RuDs = kTRUE;}
12915  if(fCurrentHistoCode == "H_TNo_RuDs"){fClosedH_TNo_RuDs = kTRUE;}
12916  if(fCurrentHistoCode == "H_MCs_RuDs"){fClosedH_MCs_RuDs = kTRUE;}
12917  if(fCurrentHistoCode == "H_LFN_RuDs"){fClosedH_LFN_RuDs = kTRUE;}
12918  if(fCurrentHistoCode == "H_HFN_RuDs"){fClosedH_HFN_RuDs = kTRUE;}
12919  if(fCurrentHistoCode == "H_SCs_RuDs"){fClosedH_SCs_RuDs = kTRUE;}
12920  }
12921 
12922  fCurrentOptPlot = "NADA"; // to avoid fClosed... = kTRUE if other canvas than those above Closed (i.e. 2D plots)
12923  fCurrentHistoCode = "NADA";
12924 
12925  std::cout << "!TEcnaHistos::DoCanvasClosed(...)> WARNING: canvas has been closed." << std::endl;
12926 }
12927 
12928 void TEcnaHistos::SetParametersPavTxt(const TString& HistoCode, const TString& opt_plot)
12929 {
12930 // Set parameters pave "sevearl changing" according to HistoCode
12931 
12933 
12934  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
12935  {
12936  if(HistoCode == "D_NOE_ChNb"){fPavTxtD_NOE_ChNb = fPavComSeveralChanging;}
12937  if(HistoCode == "D_NOE_ChDs"){fPavTxtD_NOE_ChDs = fPavComSeveralChanging;}
12938  if(HistoCode == "D_Ped_ChNb"){fPavTxtD_Ped_ChNb = fPavComSeveralChanging;}
12939  if(HistoCode == "D_Ped_ChDs"){fPavTxtD_Ped_ChDs = fPavComSeveralChanging;}
12940  if(HistoCode == "D_TNo_ChNb"){fPavTxtD_TNo_ChNb = fPavComSeveralChanging;}
12941  if(HistoCode == "D_TNo_ChDs"){fPavTxtD_TNo_ChDs = fPavComSeveralChanging;}
12942  if(HistoCode == "D_MCs_ChNb"){fPavTxtD_MCs_ChNb = fPavComSeveralChanging;}
12943  if(HistoCode == "D_MCs_ChDs"){fPavTxtD_MCs_ChDs = fPavComSeveralChanging;}
12944  if(HistoCode == "D_LFN_ChNb"){fPavTxtD_LFN_ChNb = fPavComSeveralChanging;}
12945  if(HistoCode == "D_LFN_ChDs"){fPavTxtD_LFN_ChDs = fPavComSeveralChanging;}
12946  if(HistoCode == "D_HFN_ChNb"){fPavTxtD_HFN_ChNb = fPavComSeveralChanging;}
12947  if(HistoCode == "D_HFN_ChDs"){fPavTxtD_HFN_ChDs = fPavComSeveralChanging;}
12948  if(HistoCode == "D_SCs_ChNb"){fPavTxtD_SCs_ChNb = fPavComSeveralChanging;}
12949  if(HistoCode == "D_SCs_ChDs"){fPavTxtD_SCs_ChDs = fPavComSeveralChanging;}
12950  if(HistoCode == "D_MSp_SpNb"){fPavTxtD_MSp_SpNb = fPavComSeveralChanging;}
12951  if(HistoCode == "D_MSp_SpDs"){fPavTxtD_MSp_SpDs = fPavComSeveralChanging;}
12952  if(HistoCode == "D_SSp_SpNb"){fPavTxtD_SSp_SpNb = fPavComSeveralChanging;}
12953  if(HistoCode == "D_SSp_SpDs"){fPavTxtD_SSp_SpDs = fPavComSeveralChanging;}
12954  if(HistoCode == "D_Adc_EvNb"){fPavTxtD_Adc_EvNb = fPavComSeveralChanging;}
12955  if(HistoCode == "D_Adc_EvDs"){fPavTxtD_Adc_EvDs = fPavComSeveralChanging;}
12956  if(HistoCode == "H_Ped_Date"){fPavTxtH_Ped_Date = fPavComSeveralChanging;}
12957  if(HistoCode == "H_TNo_Date"){fPavTxtH_TNo_Date = fPavComSeveralChanging;}
12958  if(HistoCode == "H_MCs_Date"){fPavTxtH_MCs_Date = fPavComSeveralChanging;}
12959  if(HistoCode == "H_LFN_Date"){fPavTxtH_LFN_Date = fPavComSeveralChanging;}
12960  if(HistoCode == "H_HFN_Date"){fPavTxtH_HFN_Date = fPavComSeveralChanging;}
12961  if(HistoCode == "H_SCs_Date"){fPavTxtH_SCs_Date = fPavComSeveralChanging;}
12962  if(HistoCode == "H_Ped_RuDs"){fPavTxtH_Ped_RuDs = fPavComSeveralChanging;}
12963  if(HistoCode == "H_TNo_RuDs"){fPavTxtH_TNo_RuDs = fPavComSeveralChanging;}
12964  if(HistoCode == "H_MCs_RuDs"){fPavTxtH_MCs_RuDs = fPavComSeveralChanging;}
12965  if(HistoCode == "H_LFN_RuDs"){fPavTxtH_LFN_RuDs = fPavComSeveralChanging;}
12966  if(HistoCode == "H_HFN_RuDs"){fPavTxtH_HFN_RuDs = fPavComSeveralChanging;}
12967  if(HistoCode == "H_SCs_RuDs"){fPavTxtH_SCs_RuDs = fPavComSeveralChanging;}
12968  }
12969 }
12970 // end of SetParametersPavTxt
12971 
12972 
12973 TPaveText* TEcnaHistos::ActivePavTxt(const TString& HistoCode, const TString& opt_plot)
12974 {
12975  // Active Pad for Same plot option
12976 
12977  TPaveText* main_pavtxt = nullptr;
12978 
12979  if( opt_plot == fSameOnePlot ){main_pavtxt = fPavTxtH1SamePlus;}
12980 
12981  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
12982  {
12983  if(HistoCode == "D_NOE_ChNb"){main_pavtxt = fPavTxtD_NOE_ChNb;}
12984  if(HistoCode == "D_NOE_ChDs"){main_pavtxt = fPavTxtD_NOE_ChDs;}
12985  if(HistoCode == "D_Ped_ChNb"){main_pavtxt = fPavTxtD_Ped_ChNb;}
12986  if(HistoCode == "D_Ped_ChDs"){main_pavtxt = fPavTxtD_Ped_ChDs;}
12987  if(HistoCode == "D_TNo_ChNb"){main_pavtxt = fPavTxtD_TNo_ChNb;}
12988  if(HistoCode == "D_TNo_ChDs"){main_pavtxt = fPavTxtD_TNo_ChDs;}
12989  if(HistoCode == "D_MCs_ChNb"){main_pavtxt = fPavTxtD_MCs_ChNb;}
12990  if(HistoCode == "D_MCs_ChDs"){main_pavtxt = fPavTxtD_MCs_ChDs;}
12991  if(HistoCode == "D_LFN_ChNb"){main_pavtxt = fPavTxtD_LFN_ChNb;}
12992  if(HistoCode == "D_LFN_ChDs"){main_pavtxt = fPavTxtD_LFN_ChDs;}
12993  if(HistoCode == "D_HFN_ChNb"){main_pavtxt = fPavTxtD_HFN_ChNb;}
12994  if(HistoCode == "D_HFN_ChDs"){main_pavtxt = fPavTxtD_HFN_ChDs;}
12995  if(HistoCode == "D_SCs_ChNb"){main_pavtxt = fPavTxtD_SCs_ChNb;}
12996  if(HistoCode == "D_SCs_ChDs"){main_pavtxt = fPavTxtD_SCs_ChDs;}
12997  if(HistoCode == "D_MSp_SpNb"){main_pavtxt = fPavTxtD_MSp_SpNb;}
12998  if(HistoCode == "D_MSp_SpDs"){main_pavtxt = fPavTxtD_MSp_SpDs;}
12999  if(HistoCode == "D_SSp_SpNb"){main_pavtxt = fPavTxtD_SSp_SpNb;}
13000  if(HistoCode == "D_SSp_SpDs"){main_pavtxt = fPavTxtD_SSp_SpDs;}
13001  if(HistoCode == "D_Adc_EvNb"){main_pavtxt = fPavTxtD_Adc_EvNb;}
13002  if(HistoCode == "D_Adc_EvDs"){main_pavtxt = fPavTxtD_Adc_EvDs;}
13003  if(HistoCode == "H_Ped_Date"){main_pavtxt = fPavTxtH_Ped_Date;}
13004  if(HistoCode == "H_TNo_Date"){main_pavtxt = fPavTxtH_TNo_Date;}
13005  if(HistoCode == "H_MCs_Date"){main_pavtxt = fPavTxtH_MCs_Date;}
13006  if(HistoCode == "H_LFN_Date"){main_pavtxt = fPavTxtH_LFN_Date;}
13007  if(HistoCode == "H_HFN_Date"){main_pavtxt = fPavTxtH_HFN_Date;}
13008  if(HistoCode == "H_SCs_Date"){main_pavtxt = fPavTxtH_SCs_Date;}
13009  if(HistoCode == "H_Ped_RuDs"){main_pavtxt = fPavTxtH_Ped_RuDs;}
13010  if(HistoCode == "H_TNo_RuDs"){main_pavtxt = fPavTxtH_TNo_RuDs;}
13011  if(HistoCode == "H_MCs_RuDs"){main_pavtxt = fPavTxtH_MCs_RuDs;}
13012  if(HistoCode == "H_LFN_RuDs"){main_pavtxt = fPavTxtH_LFN_RuDs;}
13013  if(HistoCode == "H_HFN_RuDs"){main_pavtxt = fPavTxtH_HFN_RuDs;}
13014  if(HistoCode == "H_SCs_RuDs"){main_pavtxt = fPavTxtH_SCs_RuDs;}
13015  }
13016 
13017  if( main_pavtxt == nullptr )
13018  {std::cout << "*TEcnaHistos::ActivePavTxt(...)> ERROR: main_pavtxt = " << main_pavtxt << std::endl;}
13019 
13020  return main_pavtxt;
13021 }
13022 // end of ActivePavTxt
13023 
13024 //void TEcnaHistos::SetViewHistoMarkerAndLine(TH1D* h_his0, const TString& HistoCode, const TString& opt_plot)
13025 //{
13027 //
13028 // TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
13029 //
13030 // //............................... Marker
13031 // h_his0->SetMarkerStyle(1); // default
13032 //
13033 // if( HistoType == "Global" && ( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot ) )
13034 // {h_his0->SetMarkerStyle(7); }
13035 //
13036 // //............................... Line
13037 // h_his0->SetLineWidth(1); // default
13038 //
13039 // if( HistoType == "Global" && ( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot ) )
13040 // {h_his0->SetLineWidth(0);}
13041 //
13042 //}
13043 
13044 void TEcnaHistos::SetViewHistoColors(TH1D* h_his0, const TString& HistoCode,
13045  const TString& opt_plot, const Int_t& arg_AlreadyRead)
13046 {
13047 // Set colors, fill, marker, line style for histo view
13048 
13049  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
13050  if( HistoType == "Global" ){h_his0->SetMarkerStyle(1);}
13051 
13052  Int_t MaxNbOfColors = fCnaParHistos->GetMaxNbOfColors();
13053 
13054  if( opt_plot == fSameOnePlot )
13055  {
13056  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13057  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13059  if(fMemoColorH1SamePlus>MaxNbOfColors){fMemoColorH1SamePlus = 0;}
13060  }
13061 
13062  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13063  {
13064  if(HistoCode == "D_NOE_ChNb")
13065  {
13066  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rose"));}
13067  if(opt_plot == fSeveralPlot )
13068  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChNb));
13069  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChNb));
13071  if(fMemoColorD_NOE_ChNb>MaxNbOfColors){fMemoColorD_NOE_ChNb = 0;}}
13072  }
13073  if(HistoCode == "D_NOE_ChDs")
13074  {
13075  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rose"));}
13076  if(opt_plot == fSeveralPlot )
13077  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChDs));
13078  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChDs));
13080  if(fMemoColorD_NOE_ChDs>MaxNbOfColors){fMemoColorD_NOE_ChDs = 0;}}
13081  }
13082  if(HistoCode == "D_Ped_ChNb")
13083  {
13084  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13085  if(opt_plot == fSeveralPlot )
13086  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChNb));
13087  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChNb));
13089  if(fMemoColorD_Ped_ChNb>MaxNbOfColors){fMemoColorD_Ped_ChNb = 0;}}
13090  }
13091  if(HistoCode == "D_Ped_ChDs")
13092  {
13093  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13094  if(opt_plot == fSeveralPlot )
13095  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChDs));
13096  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChDs));
13098  if(fMemoColorD_Ped_ChDs>MaxNbOfColors){fMemoColorD_Ped_ChDs = 0;}}
13099  }
13100  if(HistoCode == "D_TNo_ChNb")
13101  {
13102  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge48"));}
13103  if(opt_plot == fSeveralPlot )
13104  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChNb));
13105  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChNb));
13107  if(fMemoColorD_TNo_ChNb>MaxNbOfColors){fMemoColorD_TNo_ChNb = 0;}}
13108  }
13109  if(HistoCode == "D_TNo_ChDs")
13110  {
13111  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge48"));}
13112  if(opt_plot == fSeveralPlot )
13113  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChDs));
13114  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChDs));
13116  if(fMemoColorD_TNo_ChDs>MaxNbOfColors){fMemoColorD_TNo_ChDs = 0;}}
13117  }
13118 
13119  if(HistoCode == "D_MCs_ChNb")
13120  {
13121  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("vert31"));}
13122  if(opt_plot == fSeveralPlot )
13123  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChNb));
13124  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChNb));
13126  if(fMemoColorD_MCs_ChNb>MaxNbOfColors){fMemoColorD_MCs_ChNb = 0;}}
13127  }
13128  if(HistoCode == "D_MCs_ChDs")
13129  {
13130  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("vert31"));}
13131  if(opt_plot == fSeveralPlot )
13132  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChDs));
13133  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChDs));
13135  if(fMemoColorD_MCs_ChDs>MaxNbOfColors){fMemoColorD_MCs_ChDs = 0;}}
13136  }
13137  if(HistoCode == "D_LFN_ChNb")
13138  {
13139  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge44"));}
13140  if(opt_plot == fSeveralPlot )
13141  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChNb));
13142  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChNb));
13144  if(fMemoColorD_LFN_ChNb>MaxNbOfColors){fMemoColorD_LFN_ChNb = 0;}}
13145  }
13146  if(HistoCode == "D_LFN_ChDs")
13147  {
13148  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge44"));}
13149  if(opt_plot == fSeveralPlot )
13150  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChDs));
13151  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChDs));
13153  if(fMemoColorD_LFN_ChDs>MaxNbOfColors){fMemoColorD_LFN_ChDs = 0;}}
13154  }
13155  if(HistoCode == "D_HFN_ChNb")
13156  {
13157  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13158  if(opt_plot == fSeveralPlot )
13159  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChNb));
13160  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChNb));
13162  if(fMemoColorD_HFN_ChNb>MaxNbOfColors){fMemoColorD_HFN_ChNb = 0;}}
13163  }
13164  if(HistoCode == "D_HFN_ChDs")
13165  {
13166  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13167  if(opt_plot == fSeveralPlot )
13168  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChDs));
13169  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChDs));
13171  if(fMemoColorD_HFN_ChDs>MaxNbOfColors){fMemoColorD_HFN_ChDs = 0;}}
13172  }
13173 
13174  if(HistoCode == "D_SCs_ChNb")
13175  {
13176  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("marron23"));}
13177  if(opt_plot == fSeveralPlot )
13178  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChNb));
13179  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChNb));
13181  if(fMemoColorD_SCs_ChNb>MaxNbOfColors){fMemoColorD_SCs_ChNb = 0;}}
13182  }
13183  if(HistoCode == "D_SCs_ChDs")
13184  {
13185  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("marron23"));}
13186  if(opt_plot == fSeveralPlot )
13187  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChDs));
13188  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChDs));
13190  if(fMemoColorD_SCs_ChDs>MaxNbOfColors){fMemoColorD_SCs_ChDs = 0;}}
13191  }
13192 
13193  if(HistoCode == "D_MSp_SpNb")
13194  {
13195  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13196  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13197  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13198 
13199  if( opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13200  {h_his0->SetFillColor((Color_t)0);}
13201 
13202  if(opt_plot == fSeveralPlot )
13203  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpNb));
13204  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpNb));
13206  if(fMemoColorD_MSp_SpNb>MaxNbOfColors){fMemoColorD_MSp_SpNb = 0;}}
13207  }
13208 
13209  if(HistoCode == "D_MSp_SpDs")
13210  {
13211  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13212  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13213  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13214 
13215  if( opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13216  {h_his0->SetFillColor((Color_t)0);}
13217 
13218  if(opt_plot == fSeveralPlot )
13219  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpDs));
13220  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpDs));
13222  if(fMemoColorD_MSp_SpDs>MaxNbOfColors){fMemoColorD_MSp_SpDs = 0;}}
13223  }
13224 
13225  if(HistoCode == "D_SSp_SpNb")
13226  {
13227  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13228  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13229  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13230 
13231  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13232  {h_his0->SetFillColor((Color_t)0);}
13233 
13234  if(opt_plot == fSeveralPlot )
13235  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpNb));
13236  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpNb));
13238  if(fMemoColorD_SSp_SpNb>MaxNbOfColors){fMemoColorD_SSp_SpNb = 0;}}
13239  }
13240 
13241  if(HistoCode == "D_SSp_SpDs")
13242  {
13243  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13244  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13245  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13246 
13247  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13248  {h_his0->SetFillColor((Color_t)0);}
13249 
13250  if(opt_plot == fSeveralPlot )
13251  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpDs));
13252  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpDs));
13254  if(fMemoColorD_SSp_SpDs>MaxNbOfColors){fMemoColorD_SSp_SpDs = 0;}}
13255  }
13256 
13257  if(HistoCode == "D_Adc_EvNb")
13258  {
13259  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("orange42"));}
13260  if(opt_plot == fSeveralPlot )
13261  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvNb));
13262  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvNb));
13264  if(fMemoColorD_Adc_EvNb>MaxNbOfColors){fMemoColorD_Adc_EvNb = 0;}}
13265  gPad->SetGrid(1,0);
13266  }
13267 
13268  if(HistoCode == "D_Adc_EvDs")
13269  {
13270  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("orange42"));}
13271  if(opt_plot == fSeveralPlot )
13272  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvDs));
13273  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvDs));
13275  if(fMemoColorD_Adc_EvDs>MaxNbOfColors){fMemoColorD_Adc_EvDs = 0;}}
13276  }
13277 
13278  if(HistoCode == "H_Ped_RuDs")
13279  {
13280  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13281  if(opt_plot == fSeveralPlot )
13282  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_RuDs));
13283  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_RuDs));
13285  if(fMemoColorH_Ped_RuDs>MaxNbOfColors){fMemoColorH_Ped_RuDs = 0;}}
13286  gPad->SetGrid(1,1);
13287  }
13288 
13289  if(HistoCode == "H_TNo_RuDs")
13290  {
13291  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge48"));}
13292  if(opt_plot == fSeveralPlot )
13293  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_RuDs));
13294  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_RuDs));
13296  if(fMemoColorH_TNo_RuDs>MaxNbOfColors){fMemoColorH_TNo_RuDs = 0;}}
13297  gPad->SetGrid(1,1);
13298  }
13299 
13300  if(HistoCode == "H_MCs_RuDs")
13301  {
13302  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("vert31"));}
13303  if(opt_plot == fSeveralPlot )
13304  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_RuDs));
13305  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_RuDs));
13307  if(fMemoColorH_MCs_RuDs>MaxNbOfColors){fMemoColorH_MCs_RuDs = 0;}}
13308  gPad->SetGrid(1,1);
13309  }
13310 
13311  if(HistoCode == "H_LFN_RuDs")
13312  {
13313  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge44"));}
13314  if(opt_plot == fSeveralPlot )
13315  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_RuDs));
13316  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_RuDs));
13318  if(fMemoColorH_LFN_RuDs>MaxNbOfColors){fMemoColorH_LFN_RuDs = 0;}}
13319  gPad->SetGrid(1,1);
13320  }
13321 
13322  if(HistoCode == "H_HFN_RuDs")
13323  {
13324  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13325  if(opt_plot == fSeveralPlot )
13326  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_RuDs));
13327  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_RuDs));
13329  if(fMemoColorH_HFN_RuDs>MaxNbOfColors){fMemoColorH_HFN_RuDs = 0;}}
13330  gPad->SetGrid(1,1);
13331  }
13332 
13333  if(HistoCode == "H_SCs_RuDs")
13334  {
13335  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("marron23"));}
13336  if(opt_plot == fSeveralPlot )
13337  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_RuDs));
13338  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_RuDs));
13340  if(fMemoColorH_SCs_RuDs>MaxNbOfColors){fMemoColorH_SCs_RuDs = 0;}}
13341  gPad->SetGrid(1,1);
13342  }
13343  }
13344 
13345  // if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot){h_his0->SetLineWidth(2);}
13346 }
13347 // end of SetViewHistoColors
13348 
13349 void TEcnaHistos::SetViewGraphColors(TGraph* g_graph0, const TString& HistoCode, const TString& opt_plot)
13350 {
13351 // Set colors for histo view
13352 
13353  Int_t MaxNbOfColors = fCnaParHistos->GetMaxNbOfColors();
13354 
13355  if( opt_plot == fSameOnePlot )
13356  {
13357  g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13358  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13360  if(fMemoColorH1SamePlus>MaxNbOfColors){fMemoColorH1SamePlus = 0;}
13361  gPad->SetGrid(1,1);
13362  }
13363 
13364  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13365  {
13366  if(HistoCode == "H_Ped_Date")
13367  {
13368  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("bleu38"));}
13369  if(opt_plot == fSeveralPlot )
13370  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_Date));
13371  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_Date));
13373  if(fMemoColorH_Ped_Date>MaxNbOfColors){fMemoColorH_Ped_Date = 0;}}
13374  gPad->SetGrid(1,1);
13375  }
13376 
13377  if(HistoCode == "H_TNo_Date")
13378  {
13379  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("rouge48"));}
13380  if(opt_plot == fSeveralPlot)
13381  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_Date));
13382  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_Date));
13384  if(fMemoColorH_TNo_Date>MaxNbOfColors){fMemoColorH_TNo_Date = 0;}}
13385  gPad->SetGrid(1,1);
13386  }
13387 
13388  if(HistoCode == "H_MCs_Date")
13389  {
13390  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("vert31"));}
13391  if(opt_plot == fSeveralPlot)
13392  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_Date));
13393  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_Date));
13395  if(fMemoColorH_MCs_Date>MaxNbOfColors){fMemoColorH_MCs_Date = 0;}}
13396  gPad->SetGrid(1,1);
13397  }
13398 
13399  if(HistoCode == "H_LFN_Date")
13400  {
13401  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("bleu38"));}
13402  if(opt_plot == fSeveralPlot )
13403  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_Date));
13404  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_Date));
13406  if(fMemoColorH_LFN_Date>MaxNbOfColors){fMemoColorH_LFN_Date = 0;}}
13407  gPad->SetGrid(1,1);
13408  }
13409 
13410  if(HistoCode == "H_HFN_Date")
13411  {
13412  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("rouge48"));}
13413  if(opt_plot == fSeveralPlot)
13414  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_Date));
13415  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_Date));
13417  if(fMemoColorH_HFN_Date>MaxNbOfColors){fMemoColorH_HFN_Date = 0;}}
13418  gPad->SetGrid(1,1);
13419  }
13420 
13421  if(HistoCode == "H_SCs_Date")
13422  {
13423  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("vert31"));}
13424  if(opt_plot == fSeveralPlot)
13425  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_Date));
13426  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_Date));
13428  if(fMemoColorH_SCs_Date>MaxNbOfColors){fMemoColorH_SCs_Date = 0;}}
13429  gPad->SetGrid(1,1);
13430  }
13431  }
13432  //if(opt_plot == fSeveralPlot){g_graph0->SetLineWidth(2);}
13433 }
13434 // end of SetViewGraphColors
13435 
13436 Color_t TEcnaHistos::GetViewHistoColor(const TString& HistoCode, const TString& opt_plot)
13437 {
13438  Color_t couleur = fCnaParHistos->ColorDefinition("noir"); // a priori = "noir"
13439 
13440  if( opt_plot == fSameOnePlot ){couleur = fCnaParHistos->ColorTab(fMemoColorH1SamePlus);}
13441 
13442  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
13443  {
13444  if(HistoCode == "D_NOE_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_NOE_ChNb);}
13445  if(HistoCode == "D_NOE_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_NOE_ChDs);}
13446  if(HistoCode == "D_Ped_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Ped_ChNb);}
13447  if(HistoCode == "D_Ped_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Ped_ChDs);}
13448  if(HistoCode == "D_TNo_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_TNo_ChNb);}
13449  if(HistoCode == "D_TNo_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_TNo_ChDs);}
13450  if(HistoCode == "D_MCs_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MCs_ChNb);}
13451  if(HistoCode == "D_MCs_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MCs_ChDs);}
13452  if(HistoCode == "D_LFN_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_LFN_ChNb);}
13453  if(HistoCode == "D_LFN_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_LFN_ChDs);}
13454  if(HistoCode == "D_HFN_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_HFN_ChNb);}
13455  if(HistoCode == "D_HFN_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_HFN_ChDs);}
13456  if(HistoCode == "D_SCs_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SCs_ChNb);}
13457  if(HistoCode == "D_SCs_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SCs_ChDs);}
13458  if(HistoCode == "D_MSp_SpNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MSp_SpNb);}
13459  if(HistoCode == "D_MSp_SpDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MSp_SpDs);}
13460  if(HistoCode == "D_SSp_SpNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SSp_SpNb);}
13461  if(HistoCode == "D_SSp_SpDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SSp_SpDs);}
13462  if(HistoCode == "D_Adc_EvNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Adc_EvNb);}
13463  if(HistoCode == "D_Adc_EvDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Adc_EvDs);}
13464  if(HistoCode == "H_Ped_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_Ped_Date);}
13465  if(HistoCode == "H_TNo_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_TNo_Date);}
13466  if(HistoCode == "H_MCs_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_MCs_Date);}
13467  if(HistoCode == "H_LFN_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_LFN_Date);}
13468  if(HistoCode == "H_HFN_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_HFN_Date);}
13469  if(HistoCode == "H_SCs_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_SCs_Date);}
13470  if(HistoCode == "H_Ped_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_Ped_RuDs);}
13471  if(HistoCode == "H_TNo_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_TNo_RuDs);}
13472  if(HistoCode == "H_MCs_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_MCs_RuDs);}
13473  if(HistoCode == "H_LFN_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_LFN_RuDs);}
13474  if(HistoCode == "H_HFN_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_HFN_RuDs);}
13475  if(HistoCode == "H_SCs_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_SCs_RuDs);}
13476  }
13477  return couleur;
13478 }
13479 // end of GetViewHistoColor
13480 
13481 Color_t TEcnaHistos::GetSCColor(const TString& DeeEndcap, const TString& DeeDir, const TString& QuadType)
13482 {
13483  //gives the SC color for the numbering plots
13484  TColor* my_color = new TColor();
13485  Color_t couleur = fCnaParHistos->ColorDefinition("noir"); // default = "noir"
13486 
13487  if( DeeEndcap == "EE+" )
13488  {
13489  if ( DeeDir == "right" && QuadType == "top" ){couleur=fCnaParHistos->ColorDefinition("rouge");}
13490  if ( DeeDir == "right" && QuadType == "bottom" ){couleur=fCnaParHistos->ColorDefinition("bleu_fonce");}
13491  if ( DeeDir == "left" && QuadType == "top" ){couleur=(Color_t)my_color->GetColor("#006600");}
13492  if ( DeeDir == "left" && QuadType == "bottom" ){couleur=(Color_t)my_color->GetColor("#CC3300");}
13493  }
13494  if( DeeEndcap == "EE-" )
13495  {
13496  if ( DeeDir == "right" && QuadType == "top" ){couleur=(Color_t)my_color->GetColor("#008800");}
13497  if ( DeeDir == "right" && QuadType == "bottom" ){couleur=(Color_t)my_color->GetColor("#EE5500");}
13498  if ( DeeDir == "left" && QuadType == "top" ){couleur=fCnaParHistos->ColorDefinition("rouge");}
13499  if ( DeeDir == "left" && QuadType == "bottom" ){couleur=fCnaParHistos->ColorDefinition("bleu_fonce");}
13500  }
13501 
13502  return couleur;
13503 }
13505 {
13506  // Set presentation (axis title offsets, title size, label size, etc...
13507 
13508  fCnaParHistos->SetViewHistoStyle(HistoType.Data());
13509  fCnaParHistos->SetViewHistoPadMargins(HistoType.Data(), " ");
13510  fCnaParHistos->SetViewHistoOffsets(histo, HistoType.Data(), " ");
13511  fCnaParHistos->SetViewHistoStats(histo, HistoType.Data());
13512 }
13513 void TEcnaHistos::SetHistoPresentation(TH1D* histo, const TString& HistoType, const TString& opt_plot)
13514 {
13515 // Set presentation (axis title offsets, title size, label size, etc...
13516 
13517  fCnaParHistos->SetViewHistoStyle(HistoType.Data());
13518  fCnaParHistos->SetViewHistoPadMargins(HistoType.Data(), opt_plot.Data());
13519  fCnaParHistos->SetViewHistoOffsets(histo, HistoType.Data(), opt_plot.Data());
13520  fCnaParHistos->SetViewHistoStats(histo, HistoType.Data());
13521 }
13522 
13523 void TEcnaHistos::SetGraphPresentation(TGraph* graph, const TString& HistoType, const TString& opt_plot)
13524 {
13525 // Set presentation (axis title offsets, title size, label size, etc...
13526 
13527  fCnaParHistos->SetViewHistoStyle(HistoType.Data());
13528  fCnaParHistos->SetViewHistoPadMargins(HistoType.Data(), opt_plot);
13529  fCnaParHistos->SetViewGraphOffsets(graph, HistoType.Data());
13530 
13531  //............................... Graph marker
13532  graph->SetMarkerStyle(1);
13533  if( HistoType == "Evol" ){graph->SetMarkerStyle(20);}
13534 }
13535 
13536 //=====================================================================
13537 //
13538 // NewCanvas, ReInitCanvas
13539 //
13540 //=====================================================================
13541 void TEcnaHistos::NewCanvas(const TString& opt_plot)
13542 {
13543 // ReInit canvas in option SAME n in order to restart a new SAME n plot
13544 // (called by user only for option Same n)
13545 
13546  if( opt_plot == fSameOnePlot )
13547  {
13548  fImpH1SamePlus = nullptr; fCanvH1SamePlus = nullptr;
13549  fPadH1SamePlus = nullptr; fMemoPlotH1SamePlus = 0;
13551  fPavTxtH1SamePlus = nullptr; fClosedH1SamePlus = kFALSE;
13552  }
13553  else
13554  {
13555  std::cout << "TEcnaHistos::NewCanvas(...)> *** ERROR *** " << opt_plot.Data() << ": "
13556  << "unknown option for NewCanvas. Only " << fSameOnePlot << " option is accepted."
13557  << fTTBELL << std::endl;
13558  }
13559 }
13560 
13561 void TEcnaHistos::ReInitCanvas(const TString& HistoCode, const TString& opt_plot)
13562 {
13563 // ReInit canvas in option SAME and SAME n
13564 
13565  if( opt_plot == fSameOnePlot )
13566  {
13567  fImpH1SamePlus = nullptr; fCanvH1SamePlus = nullptr;
13568  fPadH1SamePlus = nullptr; fMemoPlotH1SamePlus = 0;
13570  fPavTxtH1SamePlus = nullptr; fClosedH1SamePlus = kFALSE;
13571  }
13572 
13573  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13574  {
13575  if(HistoCode == "D_NOE_ChNb")
13576  {
13577  fImpD_NOE_ChNb = nullptr; fCanvD_NOE_ChNb = nullptr;
13578  fPadD_NOE_ChNb = nullptr; fMemoPlotD_NOE_ChNb = 0;
13580  fPavTxtD_NOE_ChNb = nullptr; fClosedD_NOE_ChNb = kFALSE;
13581  }
13582 
13583  if(HistoCode == "D_NOE_ChDs")
13584  {
13585  fImpD_NOE_ChDs = nullptr; fCanvD_NOE_ChDs = nullptr;
13586  fPadD_NOE_ChDs = nullptr; fMemoPlotD_NOE_ChDs = 0;
13588  fPavTxtD_NOE_ChDs = nullptr; fClosedD_NOE_ChDs = kFALSE;
13589  }
13590 
13591  if(HistoCode == "D_Ped_ChNb") // (ReInitCanvas)
13592  {
13593  fImpD_Ped_ChNb = nullptr; fCanvD_Ped_ChNb = nullptr;
13594  fPadD_Ped_ChNb = nullptr; fMemoPlotD_Ped_ChNb = 0;
13596  fPavTxtD_Ped_ChNb = nullptr; fClosedD_Ped_ChNb = kFALSE;
13597  }
13598 
13599  if(HistoCode == "D_Ped_ChDs")
13600  {
13601  fImpD_Ped_ChDs = nullptr; fCanvD_Ped_ChDs = nullptr;
13602  fPadD_Ped_ChDs = nullptr; fMemoPlotD_Ped_ChDs = 0;
13604  fPavTxtD_Ped_ChDs = nullptr; fClosedD_Ped_ChDs = kFALSE;
13605  }
13606 
13607  if(HistoCode == "D_TNo_ChNb")
13608  {
13609  fImpD_TNo_ChNb = nullptr; fCanvD_TNo_ChNb = nullptr;
13610  fPadD_TNo_ChNb = nullptr; fMemoPlotD_TNo_ChNb = 0;
13612  fPavTxtD_TNo_ChNb = nullptr; fClosedD_TNo_ChNb = kFALSE;
13613  }
13614 
13615  if(HistoCode == "D_TNo_ChDs")
13616  {
13617  fImpD_TNo_ChDs = nullptr; fCanvD_TNo_ChDs = nullptr;
13618  fPadD_TNo_ChDs = nullptr; fMemoPlotD_TNo_ChDs = 0;
13620  fPavTxtD_TNo_ChDs = nullptr; fClosedD_TNo_ChDs = kFALSE;
13621  }
13622 
13623  if(HistoCode == "D_MCs_ChNb") // (ReInitCanvas)
13624  {
13625  fImpD_MCs_ChNb = nullptr; fCanvD_MCs_ChNb = nullptr;
13626  fPadD_MCs_ChNb = nullptr; fMemoPlotD_MCs_ChNb = 0;
13628  fPavTxtD_MCs_ChNb = nullptr; fClosedD_MCs_ChNb = kFALSE;
13629  }
13630 
13631  if(HistoCode == "D_MCs_ChDs")
13632  {
13633  fImpD_MCs_ChDs = nullptr; fCanvD_MCs_ChDs = nullptr;
13634  fPadD_MCs_ChDs = nullptr; fMemoPlotD_MCs_ChDs = 0;
13636  fPavTxtD_MCs_ChDs = nullptr; fClosedD_MCs_ChDs = kFALSE;
13637  }
13638 
13639  if(HistoCode == "D_LFN_ChNb")
13640  {
13641  fImpD_LFN_ChNb = nullptr; fCanvD_LFN_ChNb = nullptr;
13642  fPadD_LFN_ChNb = nullptr; fMemoPlotD_LFN_ChNb = 0;
13644  fPavTxtD_LFN_ChNb = nullptr; fClosedD_LFN_ChNb = kFALSE;
13645  }
13646 
13647  if(HistoCode == "D_LFN_ChDs") // (ReInitCanvas)
13648  {
13649  fImpD_LFN_ChDs = nullptr; fCanvD_LFN_ChDs = nullptr;
13650  fPadD_LFN_ChDs= nullptr; fMemoPlotD_LFN_ChDs = 0;
13652  fPavTxtD_LFN_ChDs= nullptr; fClosedD_LFN_ChDs = kFALSE;
13653  }
13654 
13655  if(HistoCode == "D_HFN_ChNb")
13656  {
13657  fImpD_HFN_ChNb = nullptr; fCanvD_HFN_ChNb = nullptr;
13658  fPadD_HFN_ChNb = nullptr; fMemoPlotD_HFN_ChNb = 0;
13660  fPavTxtD_HFN_ChNb = nullptr; fClosedD_HFN_ChNb = kFALSE;
13661  }
13662 
13663  if(HistoCode == "D_HFN_ChDs")
13664  {
13665  fImpD_HFN_ChDs = nullptr; fCanvD_HFN_ChDs = nullptr;
13666  fPadD_HFN_ChDs = nullptr; fMemoPlotD_HFN_ChDs = 0;
13668  fPavTxtD_HFN_ChDs = nullptr; fClosedD_HFN_ChDs = kFALSE;
13669  }
13670 
13671  if(HistoCode == "D_SCs_ChNb")
13672  {
13673  fImpD_SCs_ChNb = nullptr; fCanvD_SCs_ChNb = nullptr;
13674  fPadD_SCs_ChNb = nullptr; fMemoPlotD_SCs_ChNb = 0;
13676  fPavTxtD_SCs_ChNb = nullptr; fClosedD_SCs_ChNb = kFALSE;
13677  }
13678 
13679  if(HistoCode == "D_SCs_ChDs") // (ReInitCanvas)
13680  {
13681  fImpD_SCs_ChDs = nullptr; fCanvD_SCs_ChDs = nullptr;
13682  fPadD_SCs_ChDs = nullptr; fMemoPlotD_SCs_ChDs = 0;
13684  fPavTxtD_SCs_ChDs = nullptr; fClosedD_SCs_ChDs = kFALSE;
13685  }
13686 
13687  if(HistoCode == "D_MSp_SpNb")
13688  {
13689  fImpD_MSp_SpNb = nullptr; fCanvD_MSp_SpNb = nullptr;
13690  fPadD_MSp_SpNb = nullptr; fMemoPlotD_MSp_SpNb = 0;
13692  fPavTxtD_MSp_SpNb = nullptr; fClosedD_MSp_SpNb = kFALSE;
13693  }
13694 
13695  if(HistoCode == "D_MSp_SpDs")
13696  {
13697  fImpD_MSp_SpDs = nullptr; fCanvD_MSp_SpDs = nullptr;
13698  fPadD_MSp_SpDs = nullptr; fMemoPlotD_MSp_SpDs = 0;
13700  fPavTxtD_MSp_SpDs = nullptr; fClosedD_MSp_SpDs = kFALSE;
13701  }
13702 
13703  if(HistoCode == "D_SSp_SpNb")
13704  {
13705  fImpD_SSp_SpNb = nullptr; fCanvD_SSp_SpNb = nullptr;
13706  fPadD_SSp_SpNb = nullptr; fMemoPlotD_SSp_SpNb= 0;
13708  fPavTxtD_SSp_SpNb = nullptr; fClosedD_SSp_SpNb = kFALSE;
13709  }
13710 
13711  if(HistoCode == "D_SSp_SpDs")
13712  {
13713  fImpD_SSp_SpDs = nullptr; fCanvD_SSp_SpDs = nullptr;
13714  fPadD_SSp_SpDs = nullptr; fMemoPlotD_SSp_SpDs= 0;
13716  fPavTxtD_SSp_SpDs = nullptr; fClosedD_SSp_SpDs = kFALSE;
13717  }
13718 
13719  if(HistoCode == "D_Adc_EvNb") // (ReInitCanvas)
13720  {
13721  fImpD_Adc_EvNb = nullptr; fCanvD_Adc_EvNb = nullptr;
13722  fPadD_Adc_EvNb = nullptr; fMemoPlotD_Adc_EvNb = 0;
13724  fPavTxtD_Adc_EvNb = nullptr; fClosedD_Adc_EvNb = kFALSE;
13725  }
13726 
13727  if(HistoCode == "D_Adc_EvDs")
13728  {
13729  fImpD_Adc_EvDs = nullptr; fCanvD_Adc_EvDs = nullptr;
13730  fPadD_Adc_EvDs = nullptr; fMemoPlotD_Adc_EvDs = 0;
13732  fPavTxtD_Adc_EvDs = nullptr; fClosedD_Adc_EvDs = kFALSE;
13733  }
13734 
13735 
13736  if(HistoCode == "H_Ped_Date")
13737  {
13738  fImpH_Ped_Date = nullptr; fCanvH_Ped_Date = nullptr;
13739  fPadH_Ped_Date = nullptr; fMemoPlotH_Ped_Date = 0;
13742  }
13743 
13744  if(HistoCode == "H_TNo_Date")
13745  {
13746  fImpH_TNo_Date = nullptr; fCanvH_TNo_Date = nullptr;
13747  fPadH_TNo_Date = nullptr; fMemoPlotH_TNo_Date = 0;
13750  }
13751 
13752  if(HistoCode == "H_MCs_Date") // (ReInitCanvas)
13753  {
13754  fImpH_MCs_Date = nullptr; fCanvH_MCs_Date = nullptr;
13755  fPadH_MCs_Date = nullptr; fMemoPlotH_MCs_Date = 0;
13758  }
13759 
13760 
13761  if(HistoCode == "H_LFN_Date")
13762  {
13763  fImpH_LFN_Date = nullptr; fCanvH_LFN_Date = nullptr;
13764  fPadH_LFN_Date = nullptr; fMemoPlotH_LFN_Date = 0;
13767  }
13768 
13769  if(HistoCode == "H_HFN_Date")
13770  {
13771  fImpH_HFN_Date = nullptr; fCanvH_HFN_Date = nullptr;
13772  fPadH_HFN_Date = nullptr; fMemoPlotH_HFN_Date = 0;
13775  }
13776 
13777  if(HistoCode == "H_SCs_Date")
13778  {
13779  fImpH_SCs_Date = nullptr; fCanvH_SCs_Date = nullptr;
13780  fPadH_SCs_Date = nullptr; fMemoPlotH_SCs_Date = 0;
13783  }
13784 
13785  if(HistoCode == "H_Ped_RuDs")
13786  {
13787  fImpH_Ped_RuDs = nullptr; fCanvH_Ped_RuDs = nullptr;
13788  fPadH_Ped_RuDs = nullptr; fMemoPlotH_Ped_RuDs = 0;
13791  }
13792 
13793  if(HistoCode == "H_TNo_RuDs")
13794  {
13795  fImpH_TNo_RuDs = nullptr; fCanvH_TNo_RuDs = nullptr;
13796  fPadH_TNo_RuDs = nullptr; fMemoPlotH_TNo_RuDs = 0;
13799  }
13800 
13801  if(HistoCode == "H_MCs_RuDs") // (ReInitCanvas)
13802  {
13803  fImpH_MCs_RuDs = nullptr; fCanvH_MCs_RuDs = nullptr;
13804  fPadH_MCs_RuDs = nullptr; fMemoPlotH_MCs_RuDs = 0;
13807  }
13808 
13809 
13810  if(HistoCode == "H_LFN_RuDs")
13811  {
13812  fImpH_LFN_RuDs = nullptr; fCanvH_LFN_RuDs = nullptr;
13813  fPadH_LFN_RuDs = nullptr; fMemoPlotH_LFN_RuDs = 0;
13816  }
13817 
13818  if(HistoCode == "H_HFN_RuDs")
13819  {
13820  fImpH_HFN_RuDs = nullptr; fCanvH_HFN_RuDs = nullptr;
13821  fPadH_HFN_RuDs = nullptr; fMemoPlotH_HFN_RuDs = 0;
13824  }
13825 
13826  if(HistoCode == "H_SCs_RuDs")
13827  {
13828  fImpH_SCs_RuDs = nullptr; fCanvH_SCs_RuDs = nullptr;
13829  fPadH_SCs_RuDs = nullptr; fMemoPlotH_SCs_RuDs = 0;
13832  }
13833  }
13834 }
13835 // ------- end of ReInitCanvas(...) ------------
13836 
13837 //==========================================================================================
13838 void TEcnaHistos::WriteMatrixAscii(const TString& BetweenWhat, const TString& CorOrCov,
13839  const Int_t& StexStinEcna, const Int_t& MatrixBinIndex,
13840  const Int_t& MatSize, const TMatrixD& read_matrix)
13841 {
13842 // write matrix in ascii file
13843 
13844  Int_t ChanNumber = MatrixBinIndex;
13845 
13849 
13850  if( BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix )
13851  {
13852  fCnaWrite->WriteAsciiCorrelationsBetweenSamples(StexStinEcna, ChanNumber, MatSize, read_matrix);
13854  }
13855 
13856  if( BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix )
13857  {
13858  fCnaWrite->WriteAsciiCovariancesBetweenSamples(StexStinEcna, ChanNumber, MatSize, read_matrix);
13860  }
13861 }
13862 //...............................................................................................
13863 void TEcnaHistos::WriteHistoAscii(const TString& HistoCode, const Int_t& HisSize,
13864  const TVectorD& read_histo)
13865 {
13866 // write matrix in ascii file
13867 
13872 
13873  fCnaWrite->WriteAsciiHisto(HistoCode, HisSize, read_histo);
13875 }
13876 
13878 
13879 //---------------> messages de rappel pour l'auteur:
13880 //
13881 //======= A T T E N T I O N ========= A T T E N T I O N ========= A T T E N T I O N ==============!!!!
13882 // A EVITER ABSOLUMENT quand on est sous TEcnaGui CAR LE cin >> BLOQUE X11
13883 // puisqu'on n'a pas la main dans la fenetre de compte-rendu de la CNA
13884 // {Int_t cintoto; std::cout << "taper 0 pour continuer" << std::endl; cin >> cintoto;}
13885 // *=================================================*
13886 // | |
13887 //++++++++++++++++++++++++| A T T E N T I O N: PAS DE TEST "cintoto" ici! |+++++++++++++++++++++!!!!
13888 // | |
13889 // *=================================================*
13890 //
13891 // INFO: When "new" fails to allocate the memory for an object, or "new[]" fails to allocate the memory
13892 // for an object array, a std::bad_alloc object is thrown.
13893 // "In GCC, the RTTI mangled name of std::bad_alloc is, I'm guessing, St9bad_alloc."
TCanvasImp * fImpH_TNo_Date
Definition: TEcnaHistos.h:939
Double_t fD_TNo_ChDsYmin
Definition: TEcnaHistos.h:549
Bool_t fClosedH_LFN_RuDs
Definition: TEcnaHistos.h:840
Int_t fMemoPlotD_HFN_ChDs
Definition: TEcnaHistos.h:639
Axis_t fD_TNo_ChDsXinf
Definition: TEcnaHistos.h:479
TVirtualPad * fPadD_NOE_ChDs
Definition: TEcnaHistos.h:851
TPaveText * fPavTxtD_MSp_SpNb
Definition: TEcnaHistos.h:898
Bool_t fClosedH1SamePlus
Definition: TEcnaHistos.h:810
TString fFapStexType
Definition: TEcnaHistos.h:406
Int_t MaxCrysPhiInTow()
Int_t fNbOfListFileH_MCs_Date
Definition: TEcnaHistos.h:969
Double_t fH_LFN_RuDsYmin
Definition: TEcnaHistos.h:599
Bool_t fClosedD_SSp_SpNb
Definition: TEcnaHistos.h:827
Int_t MaxCrysHocoInStex()
void HistimePlot(TGraph *, Axis_t, Axis_t, const TString &, const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &, const Int_t &)
Int_t fMemoPlotH_HFN_Date
Definition: TEcnaHistos.h:647
TString fXMemoH_TNo_RuDs
Definition: TEcnaHistos.h:699
Bool_t fClosedD_Ped_ChNb
Definition: TEcnaHistos.h:813
TCanvas * CreateCanvas(const TString &, const TString &, const TString &, UInt_t, UInt_t)
Axis_t fH_Ped_RuDsXinf
Definition: TEcnaHistos.h:523
Int_t fAlreadyRead
Definition: TEcnaHistos.h:377
TPaveText * fPavTxtH_TNo_RuDs
Definition: TEcnaHistos.h:911
static constexpr int charArrLen
Definition: TEcnaHistos.h:351
Double_t fD_SCs_ChNbYmin
Definition: TEcnaHistos.h:563
TEcnaNumbering * fEcalNumbering
Definition: TEcnaHistos.h:373
Int_t fMemoColorH_LFN_RuDs
Definition: TEcnaHistos.h:664
Axis_t fD_Adc_EvDsXsup
Definition: TEcnaHistos.h:507
Int_t MaxCrysIYInDee()
Int_t MaxSCIYInDee()
TString fSameOnePlot
Definition: TEcnaHistos.h:629
TPaveText * fPavTxtD_Ped_ChNb
Definition: TEcnaHistos.h:886
TString fStartDate
Definition: TEcnaHistos.h:426
TString SetHistoXAxisTitle(const TString &)
Int_t fCanvSameD_MCs_ChNb
Definition: TEcnaHistos.h:955
void PlotDetector(const TVectorD &, const TString &, const TString &)
void SCCrystalNumbering(const Int_t &, const Int_t &)
TCanvas * fCanvH_SCs_RuDs
Definition: TEcnaHistos.h:808
Axis_t fH_TNo_RuDsXinf
Definition: TEcnaHistos.h:525
Double_t fH_TNo_DateYmax
Definition: TEcnaHistos.h:583
Int_t fCdeleteRoot
Definition: TEcnaHistos.h:358
void XtalSamplesSigma(const TVectorD &, const Int_t &, const Int_t &, const Int_t &, const TString &)
TPaveText * fPavTxtH_HFN_RuDs
Definition: TEcnaHistos.h:914
TVectorD ReadLowFrequencyNoise(const Int_t &)
Definition: TEcnaRead.cc:2049
Int_t MaxCrysEtaInTow()
Int_t fNbBinsMemoH_LFN_Date
Definition: TEcnaHistos.h:763
void SetViewHistoStats(TH1D *, const TString &)
TCanvasImp * fImpD_Ped_ChDs
Definition: TEcnaHistos.h:921
Double_t fH_Ped_RuDsYmax
Definition: TEcnaHistos.h:594
Int_t fNbBinsMemoH_MCs_Date
Definition: TEcnaHistos.h:762
Axis_t fD_Ped_ChDsXsup
Definition: TEcnaHistos.h:476
TString fFapStexDir
Definition: TEcnaHistos.h:407
Int_t GetRunNumber()
Definition: TEcnaRead.cc:744
TVirtualPad * fPadD_LFN_ChNb
Definition: TEcnaHistos.h:858
TString fYMemoH_LFN_RuDs
Definition: TEcnaHistos.h:735
Double_t fH_LFN_DateYmin
Definition: TEcnaHistos.h:586
TString fXMemoD_MCs_ChNb
Definition: TEcnaHistos.h:678
Int_t fMemoColorD_TNo_ChNb
Definition: TEcnaHistos.h:654
Int_t fNbBinsMemoD_HFN_ChNb
Definition: TEcnaHistos.h:750
Int_t * fT1DRunNumber
Definition: TEcnaHistos.h:430
Color_t SetColorsForNumbers(const TString &)
Int_t fMemoColorH_TNo_Date
Definition: TEcnaHistos.h:663
TVectorD ReadAverageHighFrequencyNoise(const Int_t &)
Definition: TEcnaRead.cc:2610
Int_t fMemoColorD_SCs_ChNb
Definition: TEcnaHistos.h:658
Double_t fD_LFN_ChNbYmax
Definition: TEcnaHistos.h:556
TString BuildStandard1DHistoCodeX(const TString &, const TString &)
Int_t fMemoColorH_SCs_Date
Definition: TEcnaHistos.h:667
TPaveText * SetPaveStinsXY(const Int_t &, const Int_t &)
TString GetSCQuadFrom1DeeSCEcna(const Int_t &)
TPaveText * fPavComAnaRun
Definition: TEcnaHistos.h:619
Int_t GetNotConnectedDSSCFromIndex(const Int_t &)
TPaveText * fPavComStex
Definition: TEcnaHistos.h:616
Int_t GetLastReqEvtNumber()
Definition: TEcnaRead.cc:746
Int_t MaxCrysEcnaInDee()
Int_t GetHistoNumberOfBins(const TString &, const Int_t &)
Int_t fOptVisPolm
Definition: TEcnaHistos.h:446
Axis_t fD_Adc_EvNbXsup
Definition: TEcnaHistos.h:509
TString fCorrelationMatrix
Definition: TEcnaHistos.h:450
Int_t fNbBinsMemoD_SSp_SpNb
Definition: TEcnaHistos.h:756
Int_t fFapMaxNbOfRuns
Definition: TEcnaHistos.h:395
TString fFlagScaleX
Definition: TEcnaHistos.h:437
TString fStartEvolDate
Definition: TEcnaHistos.h:403
void InitSpecParBeforeFileReading()
TString fXMemoD_MCs_ChDs
Definition: TEcnaHistos.h:679
TCanvasImp * fImpH_MCs_Date
Definition: TEcnaHistos.h:940
Int_t fMemoColorH_HFN_RuDs
Definition: TEcnaHistos.h:665
TPaveText * fPavComStas
Definition: TEcnaHistos.h:615
void ViewStex(const TVectorD &, const Int_t &, const TString &)
TString fYMemoD_HFN_ChDs
Definition: TEcnaHistos.h:717
Int_t GetHistoryRunListParameters(const TString &, const TString &)
TPaveText * fPavTxtH_MCs_Date
Definition: TEcnaHistos.h:906
Int_t Get0SMEchaFrom1SMTowAnd0TowEcha(const Int_t &, const Int_t &)
TString GetMemoFlag(const TString &)
TString fRunType
Definition: TEcnaHistos.h:427
Int_t Get1DeeSCEcnaFromDeeSCCons(const Int_t &, const Int_t &)
TString BuildStandardPlotOption(const TString &, const TString &)
Int_t fMemoColorH_MCs_RuDs
Definition: TEcnaHistos.h:666
TString fYMemoD_Ped_ChNb
Definition: TEcnaHistos.h:708
TString fYMemoH_MCs_Date
Definition: TEcnaHistos.h:728
TPaveText * fPavTxtH_SCs_RuDs
Definition: TEcnaHistos.h:915
void SetNbBinsMemo(const TString &, const TString &, const Int_t &)
Float_t AxisTitleOffset()
Int_t fMemoPlotD_Adc_EvNb
Definition: TEcnaHistos.h:643
TString GetXVarFromMemo(const TString &, const TString &)
Int_t fMemoPlotD_NOE_ChDs
Definition: TEcnaHistos.h:634
void SetXsupMemoFromValue(const TString &, const Double_t &)
Int_t GetCodePlotAllXtalsInStin()
TCanvasImp * fImpD_MSp_SpDs
Definition: TEcnaHistos.h:933
void SetViewHistoPadMargins(const TString &, const TString &)
void ViewStinGrid(const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &)
TString GetCodeSameOnePlot()
Bool_t fStatusDataExist
Definition: TEcnaHistos.h:423
void WriteAsciiCovariancesBetweenSamples(const Int_t &, const Int_t &, const Int_t &, const TMatrixD &)
Definition: TEcnaWrite.cc:1405
Double_t GetPhiMin(const Int_t &, const Int_t &)
TCanvas * fCanvD_NOE_ChNb
Definition: TEcnaHistos.h:777
Int_t fNbBinsMemoD_TNo_ChNb
Definition: TEcnaHistos.h:744
TCanvas * fCanvH_HFN_Date
Definition: TEcnaHistos.h:801
Double_t GetXinfValueFromMemo()
TVirtualPad * fPadD_HFN_ChDs
Definition: TEcnaHistos.h:861
TVirtualPad * fPadH_Ped_Date
Definition: TEcnaHistos.h:870
Int_t fTextPaveAlign
Definition: TEcnaHistos.h:456
TCanvas * fCanvD_SCs_ChDs
Definition: TEcnaHistos.h:790
Axis_t fH_TNo_DateXinf
Definition: TEcnaHistos.h:512
Int_t GetNotCompleteDSSCFromIndex(const Int_t &)
Int_t fNbBinsMemoH_TNo_RuDs
Definition: TEcnaHistos.h:767
Int_t MaxCrysVecoInStin()
Axis_t fH_LFN_DateXinf
Definition: TEcnaHistos.h:516
TString GetYVarFromMemo(const TString &, const TString &)
Int_t fCanvSameD_SSp_SpDs
Definition: TEcnaHistos.h:960
TString BuildStandard1DHistoCodeY(const TString &, const TString &)
Int_t GetYStinInStas(const Int_t &, const Int_t &)
Int_t fMemoPlotD_MSp_SpNb
Definition: TEcnaHistos.h:641
TMatrixD ReadCovariancesBetweenSamples(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:2867
TCanvas * fCanvD_Adc_EvDs
Definition: TEcnaHistos.h:795
Float_t DeeNameOffsetX(const Int_t &)
void CorrelationsBetweenSamples(const Int_t &)
void PlotMatrix(const TMatrixD &, const TString &, const TString &)
Definition: TEcnaHistos.cc:866
Double_t fH_MCs_DateYmax
Definition: TEcnaHistos.h:585
void RegisterFileParameters(const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &, const TString &, const time_t, const time_t)
Definition: TEcnaWrite.cc:610
TString fXMemoD_NOE_ChNb
Definition: TEcnaHistos.h:672
Int_t fCanvSameD_SCs_ChNb
Definition: TEcnaHistos.h:958
Int_t fNbBinsMemoH_Ped_RuDs
Definition: TEcnaHistos.h:766
Double_t fD_MSp_SpNbYmax
Definition: TEcnaHistos.h:569
TString fStopEvolDate
Definition: TEcnaHistos.h:403
Int_t fOptVisLine
Definition: TEcnaHistos.h:446
TString GetYDirectionEB(const Int_t &)
TString GetSMHalfBarrel(const Int_t &)
Int_t MaxStinVecoInStex()
Bool_t GetOkViewHisto(TEcnaRead *, const Int_t &, const Int_t &, const Int_t &, const TString &)
Int_t fCanvSameH_MCs_Date
Definition: TEcnaHistos.h:966
Axis_t fD_Ped_ChDsXinf
Definition: TEcnaHistos.h:475
TVirtualPad * ActivePad(const TString &, const TString &)
TString fFapStinName
Definition: TEcnaHistos.h:411
Int_t fNbBinsMemoD_LFN_ChDs
Definition: TEcnaHistos.h:749
void ViewSMGrid(const Int_t &, const TString &)
Int_t fMemoColorD_MCs_ChDs
Definition: TEcnaHistos.h:655
void ViewStin(const Int_t &, const TString &)
Double_t fD_TNo_ChDsYmax
Definition: TEcnaHistos.h:550
Double_t GetYmaxFromHistoFrameAndMarginValue(TH1D *, const Double_t)
TPaveText * fPavTxtH_TNo_Date
Definition: TEcnaHistos.h:905
TString fXMemoD_SCs_ChNb
Definition: TEcnaHistos.h:684
TVectorD ReadSampleAdcValues(const Int_t &, const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:1248
Double_t fYsup
Definition: TEcnaHistos.h:461
TString fYMemoH_TNo_Date
Definition: TEcnaHistos.h:727
void PlotHistory(const TString &, const TString &, const TString &, const Int_t &, const Int_t &)
TVirtualPad * fPadD_TNo_ChDs
Definition: TEcnaHistos.h:855
TVirtualPad * fPadD_HFN_ChNb
Definition: TEcnaHistos.h:860
TEcnaWrite * fCnaWrite
Definition: TEcnaHistos.h:371
Axis_t fH_SCs_RuDsXinf
Definition: TEcnaHistos.h:533
TPaveText * fPavTxtH_Ped_RuDs
Definition: TEcnaHistos.h:910
TVirtualPad * fPadD_MSp_SpDs
Definition: TEcnaHistos.h:865
TCanvas * fCurrentCanvas
Definition: TEcnaHistos.h:774
TString fYMemoD_MCs_ChDs
Definition: TEcnaHistos.h:713
Double_t GetYmaxFromGraphFrameAndMarginValue(TGraph *, const Double_t)
TString fYMemoD_Adc_EvDs
Definition: TEcnaHistos.h:724
Int_t fCanvSameH_TNo_RuDs
Definition: TEcnaHistos.h:963
Int_t GetNumberOfEvents(const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:4275
TString fHistoCodeFirst
Definition: TEcnaHistos.h:538
Double_t fD_TNo_ChNbYmax
Definition: TEcnaHistos.h:548
Double_t GetXsupValueFromMemo()
TVirtualPad * fPadD_SSp_SpNb
Definition: TEcnaHistos.h:866
TCanvasImp * fImpD_LFN_ChDs
Definition: TEcnaHistos.h:927
Int_t fNbBinsMemoH_SCs_RuDs
Definition: TEcnaHistos.h:771
TString GetStartDate()
Definition: TEcnaRead.cc:756
Int_t fNbBinsMemoH_HFN_RuDs
Definition: TEcnaHistos.h:770
TVirtualPad * fPadD_NOE_ChNb
Definition: TEcnaHistos.h:850
Bool_t fClosedH_TNo_RuDs
Definition: TEcnaHistos.h:838
TString GetDeeDirViewedFromIP(const Int_t &)
Int_t fFapNbOfRuns
Definition: TEcnaHistos.h:396
Double_t fH_TNo_DateYmin
Definition: TEcnaHistos.h:582
TString GetJYDirectionEB(const Int_t &)
Int_t fFapLastReqEvtNumber
Definition: TEcnaHistos.h:389
Int_t fCanvSameH_HFN_RuDs
Definition: TEcnaHistos.h:965
Int_t fMemoColorH_Ped_RuDs
Definition: TEcnaHistos.h:662
Double_t fH_Ped_DateYmax
Definition: TEcnaHistos.h:581
Double_t fXsup
Definition: TEcnaHistos.h:461
Double_t GetJPhiMax(const Int_t &, const Int_t &)
TCanvas * fCanvH_MCs_RuDs
Definition: TEcnaHistos.h:805
TString GetEEDeeType(const Int_t &)
TMatrixD ReadLowFrequencyCorrelationsBetweenChannels(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:3221
Double_t fD_Ped_ChNbYmin
Definition: TEcnaHistos.h:543
Int_t fStopEvolRun
Definition: TEcnaHistos.h:399
TString fYMemoH_HFN_RuDs
Definition: TEcnaHistos.h:736
#define nullptr
TString GetStinLvrbType(const Int_t &)
Int_t fMemoColorD_MCs_ChNb
Definition: TEcnaHistos.h:655
void SetAllPavesViewStex(const TString &, const Int_t &)
Int_t fCnewRoot
Definition: TEcnaHistos.h:358
Double_t GetPhiMax(const Int_t &, const Int_t &)
Int_t MaxStinInStex()
TPaveText * fPavTxtH_LFN_Date
Definition: TEcnaHistos.h:907
Double_t fD_HFN_ChDsYmin
Definition: TEcnaHistos.h:561
void ReInitCanvas(const TString &, const TString &)
UInt_t CanvasFormatH(const TString &)
TVectorD ReadSigmaOfCorrelationsBetweenSamples(const Int_t &)
Definition: TEcnaRead.cc:2211
Int_t MaxStinHocoInStas()
Int_t fOptScaleLogx
Definition: TEcnaHistos.h:448
Axis_t fH_HFN_DateXinf
Definition: TEcnaHistos.h:518
void SetViewHistoColors(TH1D *, const TString &, const TString &, const Int_t &)
TPaveText * SetPaveEvolRuns(const Int_t &, const TString &, const Int_t &, const TString &, const TString &, const TString &)
TCanvasImp * fImpH1SamePlus
Definition: TEcnaHistos.h:917
Int_t fCanvSameD_LFN_ChNb
Definition: TEcnaHistos.h:956
Axis_t fH_HFN_RuDsXsup
Definition: TEcnaHistos.h:532
Int_t Get1SCEchaFrom0DeeEcha(const Int_t &)
TPaveText * fPavComGeneralTitle
Definition: TEcnaHistos.h:614
TCanvasImp * fImpD_LFN_ChNb
Definition: TEcnaHistos.h:926
Double_t GetYminDefaultValue(const TString &)
Axis_t fD_SCs_ChNbXsup
Definition: TEcnaHistos.h:494
TString fYMemoD_SCs_ChDs
Definition: TEcnaHistos.h:719
TString HistoryRunListFilePath()
Int_t fCanvSameD_NOE_ChDs
Definition: TEcnaHistos.h:952
void XtalSamplesEv(const TVectorD &, const Int_t &, const Int_t &, const Int_t &, const TString &)
TVirtualPad * fPadH_MCs_RuDs
Definition: TEcnaHistos.h:878
TString GetRootFileNameShort()
Definition: TEcnaRead.cc:4357
Int_t fCanvSameH_LFN_Date
Definition: TEcnaHistos.h:964
Double_t fD_TNo_ChNbYmin
Definition: TEcnaHistos.h:547
Double_t BoxLeftX(const TString &)
TVectorD ReadAverageNumberOfEvents(const Int_t &)
Definition: TEcnaRead.cc:2296
time_t GetStopTime()
Definition: TEcnaRead.cc:755
TCanvasImp * fImpH_Ped_RuDs
Definition: TEcnaHistos.h:944
TEcnaParCout * fCnaParCout
Definition: TEcnaHistos.h:370
void SetRunNumberFromList(const Int_t &, const Int_t &)
Int_t fCanvSameH_MCs_RuDs
Definition: TEcnaHistos.h:966
TString fXMemoH_SCs_Date
Definition: TEcnaHistos.h:697
TCanvas * fCanvH1SamePlus
Definition: TEcnaHistos.h:776
Bool_t fClosedH_LFN_Date
Definition: TEcnaHistos.h:834
Int_t fFapStexNumber
Definition: TEcnaHistos.h:391
Int_t fFapNbOfSamples
Definition: TEcnaHistos.h:386
TString fCovarianceMatrix
Definition: TEcnaHistos.h:450
TString fXMemoD_NOE_ChDs
Definition: TEcnaHistos.h:673
Int_t fCanvSameD_LFN_ChDs
Definition: TEcnaHistos.h:956
void SetYmaxMemoFromPreviousMemo(const TString &)
Int_t fNbBinsMemoD_TNo_ChDs
Definition: TEcnaHistos.h:745
TPaveText * fPavTxtH1SamePlus
Definition: TEcnaHistos.h:883
Int_t fTextBorderSize
Definition: TEcnaHistos.h:459
TCanvasImp * fImpD_Adc_EvDs
Definition: TEcnaHistos.h:936
TCanvasImp * fImpH_SCs_RuDs
Definition: TEcnaHistos.h:949
Int_t fMemoPlotD_MSp_SpDs
Definition: TEcnaHistos.h:642
Int_t MaxTowPhiInSM()
time_t fStopEvolTime
Definition: TEcnaHistos.h:402
TVirtualPad * fPadH_MCs_Date
Definition: TEcnaHistos.h:872
TCanvasImp * fImpD_NOE_ChDs
Definition: TEcnaHistos.h:919
UInt_t SetCanvasWidth(const TString &, const TString &)
void SetViewHistoOffsets(TH1D *, const TString &, const TString &)
TString fYMemoH_HFN_Date
Definition: TEcnaHistos.h:730
Bool_t fClosedH_TNo_Date
Definition: TEcnaHistos.h:832
TString fYMemoD_SSp_SpNb
Definition: TEcnaHistos.h:722
Double_t fH2HFccMosMatrixYmax
Definition: TEcnaHistos.h:609
TPaveText * fPavTxtD_NOE_ChDs
Definition: TEcnaHistos.h:885
TString fBetweenSamples
Definition: TEcnaHistos.h:452
Int_t fMemoColorH_LFN_Date
Definition: TEcnaHistos.h:664
void SetParametersPavTxt(const TString &, const TString &)
TCanvas * fCanvH_HFN_RuDs
Definition: TEcnaHistos.h:807
TString fXMemoD_Ped_ChDs
Definition: TEcnaHistos.h:675
Double_t fD_HFN_ChDsYmax
Definition: TEcnaHistos.h:562
TPaveText * SetPaveLVRB(const Int_t &, const Int_t &)
Int_t SetGraphFrameYminYmaxFromMemo(TGraph *, const TString &)
TString StexNumberToString(const Int_t &)
void CovariancesBetweenSamples(const Int_t &)
Int_t fMemoPlotD_TNo_ChNb
Definition: TEcnaHistos.h:636
TString fXMemoH_SCs_RuDs
Definition: TEcnaHistos.h:703
void SetHistoScaleY(const TString &)
Definition: TEcnaHistos.cc:781
void SetViewHistoStyle(const TString &)
TString GetXVarHisto(const TString &, const TString &, const Int_t &)
Bool_t fClosedD_MSp_SpNb
Definition: TEcnaHistos.h:825
TMatrixD fReadMatrixDummy
Definition: TEcnaHistos.h:381
Bool_t fClosedD_HFN_ChDs
Definition: TEcnaHistos.h:822
TString fFapAnaType
Definition: TEcnaHistos.h:385
Double_t fD_LFN_ChDsYmin
Definition: TEcnaHistos.h:557
TMatrixD ReadHighFrequencyMeanCorrelationsBetweenStins(const Int_t &)
Definition: TEcnaRead.cc:4053
Double_t GetYmaxDefaultValue(const TString &)
TVirtualPad * fPadH_Ped_RuDs
Definition: TEcnaHistos.h:876
Double_t fD_SCs_ChNbYmax
Definition: TEcnaHistos.h:564
Int_t fMemoColorH_SCs_RuDs
Definition: TEcnaHistos.h:667
TString fYMemoH_Ped_Date
Definition: TEcnaHistos.h:726
Double_t fD_MSp_SpDsYmax
Definition: TEcnaHistos.h:571
Double_t fUserHistoMin
Definition: TEcnaHistos.h:442
Axis_t fD_LFN_ChNbXsup
Definition: TEcnaHistos.h:486
Int_t fMemoColorD_Adc_EvNb
Definition: TEcnaHistos.h:661
TPaveText * fPavTxtD_HFN_ChNb
Definition: TEcnaHistos.h:894
Int_t MaxSCIXInDee()
const std::map< ValueQuantityType, double > min_value
Int_t fNbBinsMemoD_Adc_EvDs
Definition: TEcnaHistos.h:758
void DeeSCNumbering(const Int_t &)
TCanvasImp * fImpD_Adc_EvNb
Definition: TEcnaHistos.h:937
void SetHistoMin()
TString fAllXtalsInStinPlot
Definition: TEcnaHistos.h:630
void SetAllPavesViewStinCrysNb(const Int_t &, const Int_t &)
TPaveText * fPavTxtH_LFN_RuDs
Definition: TEcnaHistos.h:913
Int_t fMemoPlotH_MCs_Date
Definition: TEcnaHistos.h:648
void ViewStexStinNumberingPad(const Int_t &)
Float_t DeeNumberOffsetX(const TString &, const Int_t &)
TCanvasImp * fImpD_SSp_SpNb
Definition: TEcnaHistos.h:934
Bool_t fClosedD_Adc_EvNb
Definition: TEcnaHistos.h:829
Axis_t fD_HFN_ChNbXsup
Definition: TEcnaHistos.h:490
Int_t GetHashedNumberFromIEtaAndIPhi(const Int_t &, const Int_t &)
TString BuildStandardBetweenWhatCode(const TString &, const TString &)
TCanvas * fCanvH_Ped_Date
Definition: TEcnaHistos.h:797
Float_t AxisTitleSize()
Int_t fCnaCommand
Definition: TEcnaHistos.h:356
Double_t GetIIXMin(const Int_t &)
Axis_t fD_TNo_ChNbXinf
Definition: TEcnaHistos.h:477
Int_t fMemoPlotH_TNo_Date
Definition: TEcnaHistos.h:645
void FillHisto(TH1D *, const TVectorD &, const TString &, const Int_t &)
void TowerCrystalNumbering(const Int_t &, const Int_t &)
Axis_t fH_TNo_RuDsXsup
Definition: TEcnaHistos.h:526
void StexHocoVecoLHFCorcc(const TString &)
Int_t fCanvSameD_NOE_ChNb
Definition: TEcnaHistos.h:952
void WriteHistoAscii(const TString &, const Int_t &, const TVectorD &)
TPaveText * SetPaveNbOfEvts(const Int_t &, const TString &, const TString &, const TString &)
Bool_t RegisterPointer(const TString &, const Long_t &)
Definition: TEcnaObject.cc:105
TString fXMemoH_TNo_Date
Definition: TEcnaHistos.h:693
Double_t fH2LFccMosMatrixYmax
Definition: TEcnaHistos.h:607
void ViewStas(const TVectorD &, const Int_t &, const TString &)
TMatrixD ReadLowFrequencyMeanCorrelationsBetweenStins(const Int_t &)
Definition: TEcnaRead.cc:3951
TVectorD ReadAverageTotalNoise(const Int_t &)
Definition: TEcnaRead.cc:2444
Int_t fMemoPlotH_TNo_RuDs
Definition: TEcnaHistos.h:645
Bool_t fClosedD_Adc_EvDs
Definition: TEcnaHistos.h:830
Bool_t fClosedD_NOE_ChNb
Definition: TEcnaHistos.h:811
Bool_t fClosedH_Ped_RuDs
Definition: TEcnaHistos.h:837
TCanvas * fCanvD_SSp_SpDs
Definition: TEcnaHistos.h:794
Bool_t fClosedH_HFN_Date
Definition: TEcnaHistos.h:835
void ViewEBGrid()
Double_t fD_HFN_ChNbYmax
Definition: TEcnaHistos.h:560
Int_t fNbOfListFileH_SCs_RuDs
Definition: TEcnaHistos.h:972
Int_t fMemoColorD_LFN_ChDs
Definition: TEcnaHistos.h:656
TString GetEtaPhiAxisTitle(const TString &)
TString fFlagColPal
Definition: TEcnaHistos.h:439
TString GetXDirectionEE(const Int_t &)
Int_t SetHistoFrameYminYmaxFromMemo(TH1D *, const TString &)
Axis_t fH1SameOnePlotXsup
Definition: TEcnaHistos.h:467
Axis_t fH_MCs_DateXsup
Definition: TEcnaHistos.h:515
TString fYMemoD_MSp_SpDs
Definition: TEcnaHistos.h:721
Double_t GetYmaxValueFromMemo(const TString &)
Int_t fCanvSameD_HFN_ChNb
Definition: TEcnaHistos.h:957
Int_t GetFirstReqEvtNumber()
Definition: TEcnaRead.cc:745
TString fXMemoH_Ped_Date
Definition: TEcnaHistos.h:692
Int_t fOptScaleLinx
Definition: TEcnaHistos.h:448
Axis_t fH_SCs_RuDsXsup
Definition: TEcnaHistos.h:534
Double_t GetYminValueFromMemo(const TString &)
TPaveText * fPavTxtD_Ped_ChDs
Definition: TEcnaHistos.h:887
Color_t GetViewHistoColor(const TString &, const TString &)
Int_t MaxCrysIXInDee()
Int_t fFapRunNumber
Definition: TEcnaHistos.h:387
Int_t MaxSMPhiInEB()
Double_t fD_HFN_ChNbYmin
Definition: TEcnaHistos.h:559
void ViewStexGrid(const Int_t &, const TString &)
TString fYMemoD_TNo_ChDs
Definition: TEcnaHistos.h:711
TString GetTowerLvrbType(const Int_t &)
void StexStinNumbering(const Int_t &)
TPaveText * ActivePavTxt(const TString &, const TString &)
TPaveText * SetPaveEvolNbOfEvtsAna(const TString &, const Int_t &, const Int_t &, const Int_t &, const TString &)
TString fXMemoD_Adc_EvNb
Definition: TEcnaHistos.h:691
Int_t fMemoPlotD_MCs_ChDs
Definition: TEcnaHistos.h:637
TPaveText * fPavTxtH_SCs_Date
Definition: TEcnaHistos.h:909
Int_t fFapFirstReqEvtNumber
Definition: TEcnaHistos.h:388
Double_t fD_SSp_SpNbYmax
Definition: TEcnaHistos.h:573
TPaveText * SetPaveStex(const TString &, const Int_t &)
Int_t fNbBinsMemoD_Adc_EvNb
Definition: TEcnaHistos.h:759
Int_t fCanvSameH_TNo_Date
Definition: TEcnaHistos.h:963
Int_t fNbOfListFileH_TNo_Date
Definition: TEcnaHistos.h:969
TString fXMemoH_MCs_Date
Definition: TEcnaHistos.h:694
TString BuildStandardDetectorCode(const TString &)
Double_t fH2CorccInStinsYmax
Definition: TEcnaHistos.h:611
Double_t fD_Adc_EvNbYmin
Definition: TEcnaHistos.h:578
Double_t fD_MSp_SpNbYmin
Definition: TEcnaHistos.h:568
Double_t fUserHistoMax
Definition: TEcnaHistos.h:442
TPaveText * fPavTxtD_Adc_EvNb
Definition: TEcnaHistos.h:903
TCanvas * fCanvD_Ped_ChDs
Definition: TEcnaHistos.h:780
Float_t AxisLabelOffset()
Int_t fMemoColorH_Ped_Date
Definition: TEcnaHistos.h:662
TString fFapFileRuns
Definition: TEcnaHistos.h:397
TString GetAsciiFileName()
Definition: TEcnaWrite.cc:384
TVirtualPad * fPadD_Ped_ChNb
Definition: TEcnaHistos.h:852
Axis_t fH_MCs_RuDsXinf
Definition: TEcnaHistos.h:527
TCanvasImp * fImpH_HFN_RuDs
Definition: TEcnaHistos.h:948
Bool_t fClosedD_MCs_ChNb
Definition: TEcnaHistos.h:817
Int_t fMemoColorD_NOE_ChNb
Definition: TEcnaHistos.h:652
Axis_t fD_NOE_ChDsXsup
Definition: TEcnaHistos.h:472
Int_t fNbBinsMemoH1SamePlus
Definition: TEcnaHistos.h:739
Int_t MaxCrysIXInSC()
Int_t fCanvSameD_Adc_EvNb
Definition: TEcnaHistos.h:961
TVirtualPad * fPadH_HFN_RuDs
Definition: TEcnaHistos.h:880
Float_t fTextPaveSize
Definition: TEcnaHistos.h:458
Int_t fMemoColorD_Ped_ChDs
Definition: TEcnaHistos.h:653
time_t fStopTime
Definition: TEcnaHistos.h:425
void RunType(const TString &)
Definition: TEcnaHistos.cc:797
Int_t fMemoPlotH_LFN_Date
Definition: TEcnaHistos.h:646
UInt_t CanvasFormatW(const TString &)
Double_t fD_SSp_SpDsYmax
Definition: TEcnaHistos.h:575
TString fTTBELL
Definition: TEcnaHistos.h:360
Axis_t fD_SCs_ChDsXinf
Definition: TEcnaHistos.h:495
void HistoPlot(TH1D *, const Int_t &, const Axis_t &, const Axis_t &, const TString &, const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &, const Int_t &, const Int_t &)
Int_t fNbBinsMemoD_SSp_SpDs
Definition: TEcnaHistos.h:757
Int_t fMemoPlotD_LFN_ChNb
Definition: TEcnaHistos.h:638
TString fSeveralPlot
Definition: TEcnaHistos.h:628
TVectorD GetHistoValues(const TVectorD &, const Int_t &, TEcnaRead *, const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, Int_t &)
Double_t fH_HFN_DateYmin
Definition: TEcnaHistos.h:588
TPaveText * fPavComLVRB
Definition: TEcnaHistos.h:622
Int_t fMemoColorD_TNo_ChDs
Definition: TEcnaHistos.h:654
Int_t fFapNbOfEvts
Definition: TEcnaHistos.h:393
Int_t fMemoColorH_HFN_Date
Definition: TEcnaHistos.h:665
Double_t GetJIYMax(const Int_t &, const Int_t &)
Int_t GetXSampInStin(const Int_t &, const Int_t &, const Int_t &, const Int_t &)
Axis_t fD_Adc_EvDsXinf
Definition: TEcnaHistos.h:506
Bool_t fClosedD_SCs_ChDs
Definition: TEcnaHistos.h:824
Int_t GetJYCrysInDee(const Int_t &, const Int_t &, const Int_t &)
void SetHistoMax()
TVirtualPad * fPadD_MCs_ChDs
Definition: TEcnaHistos.h:857
Double_t fH_HFN_RuDsYmax
Definition: TEcnaHistos.h:602
Double_t fH_TNo_RuDsYmin
Definition: TEcnaHistos.h:595
TString fYMemoH1SamePlus
Definition: TEcnaHistos.h:705
Int_t fNbBinsMemoD_MSp_SpDs
Definition: TEcnaHistos.h:755
TString GetCodeSeveralPlot()
Bool_t fClosedH_MCs_RuDs
Definition: TEcnaHistos.h:839
Int_t fCanvSameD_TNo_ChDs
Definition: TEcnaHistos.h:954
Int_t MaxNbOfRunsInLists()
Double_t GetIIXMax(const Int_t &)
TString GetCodeAllXtalsInStinPlot()
TPaveText * fPavComXtal
Definition: TEcnaHistos.h:618
TVectorD ReadStinNumbers(const Int_t &)
Definition: TEcnaRead.cc:1129
Color_t ColorTab(const Int_t &)
Int_t fMemoPlotH_LFN_RuDs
Definition: TEcnaHistos.h:646
ClassImp(TEcnaHistos)
TString fXMemoH_HFN_RuDs
Definition: TEcnaHistos.h:702
Int_t fMemoPlotD_SCs_ChNb
Definition: TEcnaHistos.h:640
Double_t fD_Ped_ChNbYmax
Definition: TEcnaHistos.h:544
Int_t MaxStinVecoInStas()
Int_t fNbOfListFileH_SCs_Date
Definition: TEcnaHistos.h:970
TCanvas * fCanvD_HFN_ChNb
Definition: TEcnaHistos.h:787
TPaveText * fPavTxtH_Ped_Date
Definition: TEcnaHistos.h:904
Double_t fH2CorccInStinsYmin
Definition: TEcnaHistos.h:610
TVectorD ReadSampleSigmas(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:1507
TCanvas * fCanvD_Adc_EvNb
Definition: TEcnaHistos.h:796
TString fYMemoD_MCs_ChNb
Definition: TEcnaHistos.h:712
Int_t fNbBinsMemoD_SCs_ChNb
Definition: TEcnaHistos.h:752
Axis_t fH_MCs_RuDsXsup
Definition: TEcnaHistos.h:528
TPaveText * fPavComNbOfEvts
Definition: TEcnaHistos.h:620
Int_t fCanvSameH_HFN_Date
Definition: TEcnaHistos.h:965
TCanvas * fCanvD_MSp_SpNb
Definition: TEcnaHistos.h:791
TCanvas * fCanvD_HFN_ChDs
Definition: TEcnaHistos.h:788
TCanvas * fCanvH_Ped_RuDs
Definition: TEcnaHistos.h:803
TCanvasImp * fImpD_SCs_ChNb
Definition: TEcnaHistos.h:930
Int_t fNbBinsMemoD_MSp_SpNb
Definition: TEcnaHistos.h:754
TString fXMemoH_Ped_RuDs
Definition: TEcnaHistos.h:698
Double_t fD_SCs_ChDsYmin
Definition: TEcnaHistos.h:565
Int_t fNbBinsMemoH_SCs_Date
Definition: TEcnaHistos.h:765
Double_t fH_SCs_DateYmax
Definition: TEcnaHistos.h:591
Double_t fD_MCs_ChDsYmax
Definition: TEcnaHistos.h:554
Int_t fNbBinsMemoD_MCs_ChDs
Definition: TEcnaHistos.h:747
TPaveText * SetPaveCxyz(const Int_t &)
TVirtualPad * fPadD_MSp_SpNb
Definition: TEcnaHistos.h:864
void SetYminMemoFromValue(const TString &, const Double_t &)
void ViewTowerGrid(const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &)
Double_t fD_NOE_ChDsYmin
Definition: TEcnaHistos.h:541
Int_t GetStexStinFromIndex(const Int_t &)
Definition: TEcnaRead.cc:4365
Double_t GetJPhiMin(const Int_t &, const Int_t &)
Double_t fXinf
Definition: TEcnaHistos.h:461
TString fHFBetweenStins
Definition: TEcnaHistos.h:454
TString GetHocoVecoAxisTitle(const TString &)
void SetYminMemoFromPreviousMemo(const TString &)
Axis_t fH_SCs_DateXinf
Definition: TEcnaHistos.h:520
TVirtualPad * fPadD_SCs_ChNb
Definition: TEcnaHistos.h:862
void SetAllYminYmaxMemoFromDefaultValues()
TString fYMemoD_LFN_ChDs
Definition: TEcnaHistos.h:715
Int_t fNbBinsMemoH_TNo_Date
Definition: TEcnaHistos.h:761
Int_t fMemoPlotD_NOE_ChNb
Definition: TEcnaHistos.h:634
Bool_t fClosedH_Ped_Date
Definition: TEcnaHistos.h:831
TString fYMemoD_Ped_ChDs
Definition: TEcnaHistos.h:709
Axis_t fD_NOE_ChNbXsup
Definition: TEcnaHistos.h:470
Int_t fCnaError
Definition: TEcnaHistos.h:356
TEcnaRead * fMyRootFile
Definition: TEcnaHistos.h:376
Bool_t fClosedD_TNo_ChDs
Definition: TEcnaHistos.h:816
Int_t fMemoPlotH_SCs_Date
Definition: TEcnaHistos.h:649
Double_t GetYminFromHistoFrameAndMarginValue(TH1D *, const Double_t)
UInt_t SetCanvasHeight(const TString &, const TString &)
TString GetQuantityName(const TString &)
Int_t fNbBinsMemoH_LFN_RuDs
Definition: TEcnaHistos.h:769
Int_t fCanvSameD_SCs_ChDs
Definition: TEcnaHistos.h:958
Int_t fOptScaleLiny
Definition: TEcnaHistos.h:448
Double_t fD_Adc_EvDsYmin
Definition: TEcnaHistos.h:576
Int_t fMemoColorD_SSp_SpDs
Definition: TEcnaHistos.h:660
TCanvasImp * fImpD_NOE_ChNb
Definition: TEcnaHistos.h:918
TPaveText * fPavTxtD_TNo_ChDs
Definition: TEcnaHistos.h:889
TString fCfgResultsRootFilePath
Definition: TEcnaHistos.h:417
Double_t fD_MCs_ChDsYmin
Definition: TEcnaHistos.h:553
void ViewHistime(const TString &, const Int_t &, const Int_t &, const TString &, const TString &)
TVectorD ReadTotalNoise(const Int_t &)
Definition: TEcnaRead.cc:1889
TString fYMemoH_Ped_RuDs
Definition: TEcnaHistos.h:732
void SetXinfMemoFromValue(const TString &, const Double_t &)
Bool_t fClosedD_SSp_SpDs
Definition: TEcnaHistos.h:828
Float_t DeeOffsetX(const TString &, const Int_t &)
TCanvasImp * fImpD_SSp_SpDs
Definition: TEcnaHistos.h:935
Int_t fNbBinsMemoD_HFN_ChDs
Definition: TEcnaHistos.h:751
TPaveText * fPavComStin
Definition: TEcnaHistos.h:617
Bool_t fClosedD_SCs_ChNb
Definition: TEcnaHistos.h:823
void SetHistoColorPalette(const TString &)
Definition: TEcnaHistos.cc:786
Double_t fD_Adc_EvDsYmax
Definition: TEcnaHistos.h:577
Bool_t StatusFileFound()
Definition: TEcnaHistos.cc:806
TString fYMemoH_LFN_Date
Definition: TEcnaHistos.h:729
Bool_t fClosedH_HFN_RuDs
Definition: TEcnaHistos.h:841
TString fFlagSubDet
Definition: TEcnaHistos.h:363
Double_t fH_HFN_DateYmax
Definition: TEcnaHistos.h:589
Int_t fNbBinsMemoH_HFN_Date
Definition: TEcnaHistos.h:764
TString fYMemoH_MCs_RuDs
Definition: TEcnaHistos.h:734
Axis_t fH_HFN_DateXsup
Definition: TEcnaHistos.h:519
TString fCurrentHistoCode
Definition: TEcnaHistos.h:844
Int_t GetDSSCFrom1DeeSCEcna(const Int_t &, const Int_t &, const Int_t &)
TString fXMemoD_SSp_SpNb
Definition: TEcnaHistos.h:688
TCanvas * fCanvD_LFN_ChDs
Definition: TEcnaHistos.h:786
Bool_t fClosedH_SCs_Date
Definition: TEcnaHistos.h:836
TString fFapStexName
Definition: TEcnaHistos.h:410
TPaveText * SetPaveGeneralComment(const TString &)
Int_t fMemoColorH1SamePlus
Definition: TEcnaHistos.h:651
Double_t fH_MCs_DateYmin
Definition: TEcnaHistos.h:584
TVirtualPad * fPadH_LFN_RuDs
Definition: TEcnaHistos.h:879
Int_t fNbOfExistingRuns
Definition: TEcnaHistos.h:400
TString fYMemoD_SSp_SpDs
Definition: TEcnaHistos.h:723
TString fCfgHistoryRunListFilePath
Definition: TEcnaHistos.h:418
void ViewSMTowerNumberingPad(const Int_t &)
Axis_t fD_Ped_ChNbXinf
Definition: TEcnaHistos.h:473
TVectorD ReadAveragePedestals(const Int_t &)
Definition: TEcnaRead.cc:2361
TString GetStopDate()
Definition: TEcnaRead.cc:757
Float_t AxisTickSize()
Double_t fD_SSp_SpDsYmin
Definition: TEcnaHistos.h:574
Int_t GetNotCompleteSCForConsFromIndex(const Int_t &)
Int_t fNbOfListFileH_LFN_Date
Definition: TEcnaHistos.h:970
Definition: value.py:1
void SetAllPavesViewStas()
TPaveText * fPavTxtD_HFN_ChDs
Definition: TEcnaHistos.h:895
Int_t fMemoColorD_HFN_ChDs
Definition: TEcnaHistos.h:657
TString GetHistoType(const TString &)
Axis_t fD_Ped_ChNbXsup
Definition: TEcnaHistos.h:474
TCanvasImp * fImpH_Ped_Date
Definition: TEcnaHistos.h:938
void SetAllPavesViewHisto(const TString &, const Int_t &, const Int_t &, const Int_t &, const TString &)
Bool_t fStatusFileFound
Definition: TEcnaHistos.h:422
TString fYMemoH_SCs_Date
Definition: TEcnaHistos.h:731
TCanvasImp * fImpD_Ped_ChNb
Definition: TEcnaHistos.h:920
Int_t fMemoPlotD_SSp_SpNb
Definition: TEcnaHistos.h:641
void ViewHisto(const TVectorD &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &, const TString &)
Int_t GetListFileNumber(const TString &)
TString fXMemoD_TNo_ChDs
Definition: TEcnaHistos.h:677
Axis_t fD_SCs_ChNbXinf
Definition: TEcnaHistos.h:493
Axis_t fH_Ped_DateXsup
Definition: TEcnaHistos.h:511
TVirtualPad * fPadH_SCs_Date
Definition: TEcnaHistos.h:875
void DoCanvasClosed()
Int_t fMemoPlotD_SCs_ChDs
Definition: TEcnaHistos.h:640
Int_t fMemoPlotH_MCs_RuDs
Definition: TEcnaHistos.h:648
TString fXMemoD_SSp_SpDs
Definition: TEcnaHistos.h:689
void ViewDeeSCNumberingPad(const Int_t &)
Int_t fCanvSameH_Ped_Date
Definition: TEcnaHistos.h:962
TString fXMemoD_HFN_ChDs
Definition: TEcnaHistos.h:683
Double_t fD_LFN_ChDsYmax
Definition: TEcnaHistos.h:558
TPaveText * fPavComEvolNbOfEvtsAna
Definition: TEcnaHistos.h:625
void PrintNoComment()
Definition: TEcnaRead.cc:4462
Axis_t fD_HFN_ChNbXinf
Definition: TEcnaHistos.h:489
TString fXMemoD_TNo_ChNb
Definition: TEcnaHistos.h:676
Int_t MaxCrysInStin()
TVectorD ReadPedestals(const Int_t &)
Definition: TEcnaRead.cc:1807
TMatrixD ReadLowFrequencyCovariancesBetweenChannels(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:3125
TString GetCurrentCanvasName()
void SetParametersCanvas(const TString &, const TString &)
Axis_t fD_Adc_EvNbXinf
Definition: TEcnaHistos.h:508
TString fStopDate
Definition: TEcnaHistos.h:426
Double_t fH_SCs_DateYmin
Definition: TEcnaHistos.h:590
Axis_t fH_Ped_RuDsXsup
Definition: TEcnaHistos.h:524
Int_t fNbBinsMemoH_Ped_Date
Definition: TEcnaHistos.h:760
TString fYMemoD_SCs_ChNb
Definition: TEcnaHistos.h:718
TPaveText * fPavTxtD_LFN_ChNb
Definition: TEcnaHistos.h:892
void EEGridAxis(const Int_t &, const TString &, const TString &)
Int_t MaxTowEtaInSM()
Double_t fD_MSp_SpDsYmin
Definition: TEcnaHistos.h:570
Int_t fNbBinsMemoD_MCs_ChNb
Definition: TEcnaHistos.h:746
TPaveText * fPavTxtD_MCs_ChNb
Definition: TEcnaHistos.h:890
Int_t fCanvSameD_MCs_ChDs
Definition: TEcnaHistos.h:955
Double_t GetJIYMin(const Int_t &, const Int_t &)
TString fFlagGeneralTitle
Definition: TEcnaHistos.h:440
Int_t MaxSCEcnaInDee()
Bool_t DataExist()
Definition: TEcnaRead.cc:976
Int_t GetDSFrom1DeeSCEcna(const Int_t &, const Int_t &)
TCanvas * fCanvD_Ped_ChNb
Definition: TEcnaHistos.h:779
Axis_t GetHistoXsup(const TString &, const Int_t &, const TString &)
TString fFlagScaleY
Definition: TEcnaHistos.h:438
Bool_t fClosedD_NOE_ChDs
Definition: TEcnaHistos.h:812
Int_t MaxSMEtaInEB()
TCanvasImp * fImpH_MCs_RuDs
Definition: TEcnaHistos.h:946
TPaveText * fPavComEvolRuns
Definition: TEcnaHistos.h:624
TCanvas * fCanvH_SCs_Date
Definition: TEcnaHistos.h:802
Int_t GetNbOfSamples()
Definition: TEcnaRead.cc:743
void ViewEEGrid(const Int_t &)
Int_t fNbOfListFileH_HFN_RuDs
Definition: TEcnaHistos.h:972
Int_t fCanvSameD_MSp_SpDs
Definition: TEcnaHistos.h:960
Int_t GetDeeSCConsFrom1DeeSCEcna(const Int_t &, const Int_t &)
~TEcnaHistos() override
Definition: TEcnaHistos.cc:47
Int_t fNbOfListFileH_Ped_Date
Definition: TEcnaHistos.h:969
Int_t fMemoPlotH_Ped_Date
Definition: TEcnaHistos.h:644
Int_t fNbOfListFileH_Ped_RuDs
Definition: TEcnaHistos.h:971
TString fXMemoH_HFN_Date
Definition: TEcnaHistos.h:696
void Plot1DHisto(const TVectorD &, const TString &, const TString &, const TString &)
Int_t fNbBinsMemoD_SCs_ChDs
Definition: TEcnaHistos.h:753
void WriteAsciiHisto(const TString &, const Int_t &, const TVectorD &)
Definition: TEcnaWrite.cc:1188
TCanvas * fCanvH_TNo_Date
Definition: TEcnaHistos.h:798
TPaveText * SetPaveCrystal(const Int_t &, const Int_t &, const Int_t &)
void SetEcalSubDetector(const TString &)
Definition: TEcnaHistos.cc:662
TCanvasImp * fImpD_MSp_SpNb
Definition: TEcnaHistos.h:932
TCanvas * fCanvD_NOE_ChDs
Definition: TEcnaHistos.h:778
TString GetAnalysisName()
Definition: TEcnaRead.cc:742
Int_t GetXCrysInStex(const Int_t &, const Int_t &, const Int_t &)
TString GetYVarHisto(const TString &, const TString &, const Int_t &)
Int_t fMemoColorD_SCs_ChDs
Definition: TEcnaHistos.h:658
void SetAllPavesViewMatrix(const TString &, const Int_t &, const Int_t &, const Int_t &)
Bool_t fClosedD_MCs_ChDs
Definition: TEcnaHistos.h:818
Int_t fMemoPlotD_MCs_ChNb
Definition: TEcnaHistos.h:637
TVirtualPad * fPadH_SCs_RuDs
Definition: TEcnaHistos.h:881
TString fXMemoH_LFN_Date
Definition: TEcnaHistos.h:695
Axis_t fH_LFN_RuDsXinf
Definition: TEcnaHistos.h:529
Double_t fH2LFccMosMatrixYmin
Definition: TEcnaHistos.h:606
Int_t MaxCrysIYInSC()
TCanvasImp * fImpD_HFN_ChNb
Definition: TEcnaHistos.h:928
Double_t fD_Ped_ChDsYmin
Definition: TEcnaHistos.h:545
TVirtualPad * fPadD_SCs_ChDs
Definition: TEcnaHistos.h:863
TVirtualPad * fPadH_LFN_Date
Definition: TEcnaHistos.h:873
Axis_t fD_HFN_ChDsXsup
Definition: TEcnaHistos.h:492
Axis_t fH_LFN_RuDsXsup
Definition: TEcnaHistos.h:530
Bool_t fClosedH_MCs_Date
Definition: TEcnaHistos.h:833
Double_t GetEta(const Int_t &, const Int_t &, const Int_t &)
Int_t Get1SMCrysFrom1SMTowAnd0TowEcha(const Int_t &, const Int_t &)
TString fFapXtalName
Definition: TEcnaHistos.h:412
Axis_t fH_SCs_DateXsup
Definition: TEcnaHistos.h:521
Double_t fD_MCs_ChNbYmin
Definition: TEcnaHistos.h:551
Color_t ColorDefinition(const TString &)
TPaveText * fPavTxtD_SCs_ChNb
Definition: TEcnaHistos.h:896
TMatrixD ReadHighFrequencyCorrelationsBetweenChannels(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:3413
Int_t fMemoPlotD_Ped_ChDs
Definition: TEcnaHistos.h:635
Int_t fCanvSameH1SamePlus
Definition: TEcnaHistos.h:951
Int_t fMemoPlotD_TNo_ChDs
Definition: TEcnaHistos.h:636
TString fXMemoD_MSp_SpNb
Definition: TEcnaHistos.h:686
Bool_t fClosedD_LFN_ChDs
Definition: TEcnaHistos.h:820
Int_t fMemoColorH_MCs_Date
Definition: TEcnaHistos.h:666
Axis_t fD_MCs_ChDsXsup
Definition: TEcnaHistos.h:484
TPaveText * fPavTxtH_MCs_RuDs
Definition: TEcnaHistos.h:912
Double_t fH_LFN_DateYmax
Definition: TEcnaHistos.h:587
void SetViewGraphColors(TGraph *, const TString &, const TString &)
Int_t MaxCrysInTow()
TCanvasImp * fImpD_TNo_ChNb
Definition: TEcnaHistos.h:922
TPaveText * SetPaveStin(const Int_t &, const Int_t &)
Int_t NumberOfNotConnectedSCs()
TVirtualPad * fPadH_TNo_RuDs
Definition: TEcnaHistos.h:877
Int_t fMemoColorD_MSp_SpNb
Definition: TEcnaHistos.h:659
TVectorD ReadHighFrequencyNoise(const Int_t &)
Definition: TEcnaRead.cc:2130
TPaveText * SetPaveAnalysisRun(const TString &, const Int_t &, const Int_t &, const TString &, const Int_t &, const Int_t &, const TString &)
TString fYMemoD_MSp_SpNb
Definition: TEcnaHistos.h:720
Double_t GetIEtaMin(const Int_t &, const Int_t &)
Int_t GetIXCrysInSC(const Int_t &, const Int_t &, const Int_t &)
TString fXMemoD_LFN_ChNb
Definition: TEcnaHistos.h:680
Double_t fH_MCs_RuDsYmax
Definition: TEcnaHistos.h:598
void StinCrystalNumbering(const Int_t &, const Int_t &)
TCanvas * fCanvD_MCs_ChNb
Definition: TEcnaHistos.h:783
Int_t GetYCrysInStex(const Int_t &, const Int_t &, const Int_t &)
TCanvasImp * fImpD_TNo_ChDs
Definition: TEcnaHistos.h:923
Int_t GetMaxSCInDS(const Int_t &)
TString GetTechHistoCode(const TString &)
Double_t BoxTopY(const TString &)
void SetAllPavesViewStin(const Int_t &)
Color_t GetSCColor(const TString &, const TString &, const TString &)
Double_t fD_NOE_ChNbYmax
Definition: TEcnaHistos.h:540
TString fYMemoD_NOE_ChNb
Definition: TEcnaHistos.h:706
TString BuildStandardCovOrCorCode(const TString &, const TString &)
Int_t MaxStexInStasMinus()
Axis_t fH1SameOnePlotXinf
Definition: TEcnaHistos.h:466
Axis_t fD_TNo_ChNbXsup
Definition: TEcnaHistos.h:478
void SetXVarMemo(const TString &, const TString &, const TString &)
TString fXMemoH1SamePlus
Definition: TEcnaHistos.h:671
TString fCurrentOptPlot
Definition: TEcnaHistos.h:845
Int_t MaxStexInStas()
TEcnaParPaths * fCnaParPaths
Definition: TEcnaHistos.h:369
Int_t GetSCOffset(const Int_t &, const Int_t &, const Int_t &)
TVirtualPad * fPadH_HFN_Date
Definition: TEcnaHistos.h:874
TPaveText * fPavComSeveralChanging
Definition: TEcnaHistos.h:621
TCanvasImp * fImpH_TNo_RuDs
Definition: TEcnaHistos.h:945
TVirtualPad * fPadD_LFN_ChDs
Definition: TEcnaHistos.h:859
void SMTowerNumbering(const Int_t &)
void EvSamplesXtals(const TVectorD &, const Int_t &, const Int_t &, const Int_t &, const TString &)
Axis_t fD_MCs_ChNbXinf
Definition: TEcnaHistos.h:481
Double_t fH_Ped_RuDsYmin
Definition: TEcnaHistos.h:593
Double_t fH_HFN_RuDsYmin
Definition: TEcnaHistos.h:601
TCanvas * fCanvD_TNo_ChNb
Definition: TEcnaHistos.h:781
TPaveText * fPavComCxyz
Definition: TEcnaHistos.h:623
TPaveText * fPavTxtD_MSp_SpDs
Definition: TEcnaHistos.h:899
Double_t fD_LFN_ChNbYmin
Definition: TEcnaHistos.h:555
TString fXMemoH_MCs_RuDs
Definition: TEcnaHistos.h:700
Int_t ModifiedSCEchaForNotConnectedSCs(const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &)
void SetColorPalette(const TString &)
Int_t fNbOfListFileH_TNo_RuDs
Definition: TEcnaHistos.h:971
TPaveText * fPavTxtD_SSp_SpDs
Definition: TEcnaHistos.h:901
TEcnaParEcal * fEcal
Definition: TEcnaHistos.h:372
TString fLFBetweenChannels
Definition: TEcnaHistos.h:453
time_t fStartEvolTime
Definition: TEcnaHistos.h:402
Int_t fCanvSameD_TNo_ChNb
Definition: TEcnaHistos.h:954
TVectorD ReadAverageLowFrequencyNoise(const Int_t &)
Definition: TEcnaRead.cc:2527
Double_t fD_NOE_ChDsYmax
Definition: TEcnaHistos.h:542
Int_t MaxCrysVecoInStex()
TCanvasImp * fImpD_HFN_ChDs
Definition: TEcnaHistos.h:929
TPaveText * fPavTxtD_SSp_SpNb
Definition: TEcnaHistos.h:900
void FileParameters(const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &)
Definition: TEcnaRead.cc:649
Int_t fMemoColorD_HFN_ChNb
Definition: TEcnaHistos.h:657
void SetHistoScaleX(const TString &)
Definition: TEcnaHistos.cc:776
Int_t fCanvSameH_SCs_Date
Definition: TEcnaHistos.h:967
Int_t fNbBinsMemoD_Ped_ChDs
Definition: TEcnaHistos.h:743
TString fYMemoD_Adc_EvNb
Definition: TEcnaHistos.h:725
TString fFlagUserHistoMin
Definition: TEcnaHistos.h:443
Int_t fCanvSameD_HFN_ChDs
Definition: TEcnaHistos.h:957
Double_t fH_TNo_RuDsYmax
Definition: TEcnaHistos.h:596
Int_t MaxSCForConsInDee()
void NumberOfEvents(const Int_t &)
Definition: TEcnaHistos.cc:801
Int_t fOptScaleLogy
Definition: TEcnaHistos.h:448
void TopAxisForHistos(TH1D *, const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &)
Int_t GetJYCrysInSC(const Int_t &, const Int_t &, const Int_t &)
void SqrtContourLevels(const Int_t &, Double_t *)
TCanvasImp * fImpH_SCs_Date
Definition: TEcnaHistos.h:943
Int_t fMemoPlotD_LFN_ChDs
Definition: TEcnaHistos.h:638
Int_t GetReqNbOfEvts()
Definition: TEcnaRead.cc:747
TString ResultsRootFilePath()
Int_t fCanvSameH_Ped_RuDs
Definition: TEcnaHistos.h:962
Int_t GetNbOfRunsDisplayed()
Int_t GetYSampInStin(const Int_t &, const Int_t &, const Int_t &, const Int_t &)
Bool_t fClosedD_TNo_ChNb
Definition: TEcnaHistos.h:815
void SetGraphPresentation(TGraph *, const TString &, const TString &)
TPaveText * fPavTxtD_NOE_ChNb
Definition: TEcnaHistos.h:884
Double_t GetPhi(const Int_t &, const Int_t &, const Int_t &)
Int_t fNbBinsMemoD_Ped_ChNb
Definition: TEcnaHistos.h:742
Int_t fCanvSameD_Adc_EvDs
Definition: TEcnaHistos.h:961
TString fCurrentCanvasName
Definition: TEcnaHistos.h:773
TString fXMemoD_MSp_SpDs
Definition: TEcnaHistos.h:687
TCanvas * fCanvD_TNo_ChDs
Definition: TEcnaHistos.h:782
TString fYMemoD_LFN_ChNb
Definition: TEcnaHistos.h:714
Bool_t fClosedD_LFN_ChNb
Definition: TEcnaHistos.h:819
TCanvas * fCanvH_LFN_Date
Definition: TEcnaHistos.h:800
Int_t MaxCrysEcnaInStex()
Bool_t fClosedH_SCs_RuDs
Definition: TEcnaHistos.h:842
Int_t fCanvSameD_MSp_SpNb
Definition: TEcnaHistos.h:959
TString fFapEchaName
Definition: TEcnaHistos.h:413
Double_t fH_MCs_RuDsYmin
Definition: TEcnaHistos.h:597
Int_t fCdelete
Definition: TEcnaHistos.h:357
TCanvasImp * fImpD_MCs_ChDs
Definition: TEcnaHistos.h:925
TPaveText * fPavTxtD_MCs_ChDs
Definition: TEcnaHistos.h:891
Int_t GetDSOffset(const Int_t &, const Int_t &)
TString GetSCType(const Int_t &)
TVirtualPad * fPadH1SamePlus
Definition: TEcnaHistos.h:849
TString GetRunType()
Definition: TEcnaRead.cc:758
Int_t fMemoPlotH_Ped_RuDs
Definition: TEcnaHistos.h:644
TPaveText * SetPaveCrystalSample(const Int_t &, const Int_t &, const Int_t &, const Int_t &)
Axis_t fD_LFN_ChDsXinf
Definition: TEcnaHistos.h:487
Int_t fMemoColorD_NOE_ChDs
Definition: TEcnaHistos.h:652
TCanvas * GetCurrentCanvas()
Int_t GetNbBinsFromMemo(const TString &, const TString &)
Int_t MaxCrysHocoInStin()
Int_t fMemoPlotH_SCs_RuDs
Definition: TEcnaHistos.h:649
TVirtualPad * fCurrentPad
Definition: TEcnaHistos.h:847
TCanvas * fCanvD_MCs_ChDs
Definition: TEcnaHistos.h:784
Int_t fMemoColorD_Adc_EvDs
Definition: TEcnaHistos.h:661
Int_t fCanvSameD_Ped_ChNb
Definition: TEcnaHistos.h:953
TVirtualPad * fPadD_Adc_EvDs
Definition: TEcnaHistos.h:868
TString AsciiFileName()
Axis_t fD_LFN_ChNbXinf
Definition: TEcnaHistos.h:485
Double_t fH_LFN_RuDsYmax
Definition: TEcnaHistos.h:600
Int_t MaxCrysInSC()
Int_t MaxSampADC()
TString fHFBetweenChannels
Definition: TEcnaHistos.h:453
Int_t GetNotConnectedSCForConsFromIndex(const Int_t &)
Axis_t fD_MCs_ChDsXinf
Definition: TEcnaHistos.h:483
TCanvas * fCanvD_LFN_ChNb
Definition: TEcnaHistos.h:785
Int_t fStartEvolRun
Definition: TEcnaHistos.h:399
Int_t fTextPaveFont
Definition: TEcnaHistos.h:457
TString fXMemoH_LFN_RuDs
Definition: TEcnaHistos.h:701
TString fLFBetweenStins
Definition: TEcnaHistos.h:454
TString fYMemoD_HFN_ChNb
Definition: TEcnaHistos.h:716
TPaveText * SetOptionSamePaveBorder(const TString &, const TString &)
Int_t fMemoAlreadyRead
Definition: TEcnaHistos.h:378
Int_t MaxDeeInEE()
void SetHistoPresentation(TH1D *, const TString &)
Int_t fCanvSameH_LFN_RuDs
Definition: TEcnaHistos.h:964
Axis_t fH_TNo_DateXsup
Definition: TEcnaHistos.h:513
void ViewDeeGrid(const Int_t &, const TString &)
TMatrixD ReadCorrelationsBetweenSamples(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:2956
TPaveText * fPavTxtD_SCs_ChDs
Definition: TEcnaHistos.h:897
TCanvas * fCanvD_SSp_SpNb
Definition: TEcnaHistos.h:793
Int_t fMemoColorD_MSp_SpDs
Definition: TEcnaHistos.h:660
TString fAsciiFileName
Definition: TEcnaHistos.h:420
Int_t fMemoPlotD_Ped_ChNb
Definition: TEcnaHistos.h:635
Int_t GetIXCrysInDee(const Int_t &, const Int_t &, const Int_t &)
const std::map< ValueQuantityType, double > max_value
Int_t MaxSMInEB()
Int_t fMemoPlotH1SamePlus
Definition: TEcnaHistos.h:633
TString fYMemoH_SCs_RuDs
Definition: TEcnaHistos.h:737
TPaveText * fPavTxtD_TNo_ChNb
Definition: TEcnaHistos.h:888
TCanvas * fCanvH_MCs_Date
Definition: TEcnaHistos.h:799
Int_t fMemoColorH_TNo_RuDs
Definition: TEcnaHistos.h:663
void WriteAsciiCorrelationsBetweenSamples(const Int_t &, const Int_t &, const Int_t &, const TMatrixD &)
Definition: TEcnaWrite.cc:1435
TPaveText * fPavTxtH_HFN_Date
Definition: TEcnaHistos.h:908
TString fXMemoD_HFN_ChNb
Definition: TEcnaHistos.h:682
TString fMyRootFileName
Definition: TEcnaHistos.h:415
Int_t Get0StexEchaFrom1StexStinAnd0StinEcha(const Int_t &, const Int_t &)
TString GetCodeOnlyOnePlot()
Double_t GetMarginAutoMinMax()
Int_t fNbBinsMemoD_NOE_ChDs
Definition: TEcnaHistos.h:741
TPaveText * fPavTxtD_Adc_EvDs
Definition: TEcnaHistos.h:902
TVectorD ReadMeanCorrelationsBetweenSamples(const Int_t &)
Definition: TEcnaRead.cc:1968
Int_t GetXStinInStas(const Int_t &, const Int_t &, const Int_t &)
Bool_t LookAtRootFile()
Definition: TEcnaRead.cc:922
Double_t GetIEtaMax(const Int_t &, const Int_t &)
TString GetStexHalfStas(const Int_t &)
TCanvas * fCanvD_MSp_SpDs
Definition: TEcnaHistos.h:792
Double_t NotConnectedSCH1DBin(const Int_t &)
TVirtualPad * fPadD_TNo_ChNb
Definition: TEcnaHistos.h:854
TString fOnlyOnePlot
Definition: TEcnaHistos.h:627
Int_t fCanvSameH_SCs_RuDs
Definition: TEcnaHistos.h:967
Double_t fD_SCs_ChDsYmax
Definition: TEcnaHistos.h:566
TString GetEEDeeEndcap(const Int_t &)
Int_t MaxStinEcnaInStex()
TString fFapStexBarrel
Definition: TEcnaHistos.h:405
Int_t fNbBinsMemoD_LFN_ChNb
Definition: TEcnaHistos.h:748
void NewCanvas(const TString &)
Axis_t fD_NOE_ChNbXinf
Definition: TEcnaHistos.h:469
TCanvasImp * fImpH_HFN_Date
Definition: TEcnaHistos.h:942
TMatrixD ReadHighFrequencyCovariancesBetweenChannels(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:3317
TString SetHistoYAxisTitle(const TString &)
Bool_t fClosedD_Ped_ChDs
Definition: TEcnaHistos.h:814
Int_t fTobeRead
Definition: TEcnaHistos.h:379
TString fFapStinQuadType
Definition: TEcnaHistos.h:408
Axis_t fD_HFN_ChDsXinf
Definition: TEcnaHistos.h:491
Double_t fYinf
Definition: TEcnaHistos.h:461
Double_t GetYminFromGraphFrameAndMarginValue(TGraph *, const Double_t)
Double_t BoxRightX(const TString &)
TString GetEcalSubDetector()
Axis_t fH_HFN_RuDsXinf
Definition: TEcnaHistos.h:531
Int_t fNbBinsMemoH_MCs_RuDs
Definition: TEcnaHistos.h:768
TCanvas * fCanvD_SCs_ChNb
Definition: TEcnaHistos.h:789
Double_t fD_SSp_SpNbYmin
Definition: TEcnaHistos.h:572
TVirtualPad * fPadH_TNo_Date
Definition: TEcnaHistos.h:871
Axis_t fH_MCs_DateXinf
Definition: TEcnaHistos.h:514
Int_t GetStexNumber()
Definition: TEcnaRead.cc:748
Int_t GetMaxNbOfColors()
TString fYMemoD_TNo_ChNb
Definition: TEcnaHistos.h:710
Axis_t fD_TNo_ChDsXsup
Definition: TEcnaHistos.h:480
Int_t fNbOfListFileH_MCs_RuDs
Definition: TEcnaHistos.h:971
TString GetIXIYAxisTitle(const TString &)
Double_t fD_Adc_EvNbYmax
Definition: TEcnaHistos.h:579
Double_t fH2HFccMosMatrixYmin
Definition: TEcnaHistos.h:608
void SetYVarMemo(const TString &, const TString &, const TString &)
Int_t MaxStinHocoInStex()
TCanvasImp * fImpH_LFN_RuDs
Definition: TEcnaHistos.h:947
TVirtualPad * fPadD_MCs_ChNb
Definition: TEcnaHistos.h:856
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:56
TString GetJYDirectionEE(const Int_t &)
Axis_t GetHistoXinf(const TString &, const Int_t &, const TString &)
TCanvasImp * fImpD_SCs_ChDs
Definition: TEcnaHistos.h:931
TPaveText * fPavTxtD_LFN_ChDs
Definition: TEcnaHistos.h:893
Int_t NumberOfNotCompleteSCs()
Axis_t fD_LFN_ChDsXsup
Definition: TEcnaHistos.h:488
Double_t BoxBottomY(const TString &)
Bool_t fClosedD_MSp_SpDs
Definition: TEcnaHistos.h:826
void ViewStasGrid(const Int_t &)
TCanvasImp * fImpH_LFN_Date
Definition: TEcnaHistos.h:941
Int_t fNbOfListFileH_LFN_RuDs
Definition: TEcnaHistos.h:972
Int_t Get1StexCrysFrom1StexStinAnd0StinEcha(const Int_t &, const Int_t &, const Int_t &)
Int_t fNbOfListFileH_HFN_Date
Definition: TEcnaHistos.h:970
void SetViewGraphOffsets(TGraph *, const TString &)
TVectorD fReadHistoDummy
Definition: TEcnaHistos.h:380
TCanvasImp * fImpD_MCs_ChNb
Definition: TEcnaHistos.h:924
TString GetXDirectionEB(const Int_t &)
TString fXMemoD_Ped_ChNb
Definition: TEcnaHistos.h:674
Long_t GetPointerValue(const TString &)
Definition: TEcnaObject.cc:232
Double_t fD_Ped_ChDsYmax
Definition: TEcnaHistos.h:546
void EEDataSectors(const Float_t &, const Float_t &, const Int_t &, const TString &)
Double_t NotCompleteSCH1DBin(const Int_t &)
TVectorD ReadSampleMeans(const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaRead.cc:1335
TEcnaParHistos * fCnaParHistos
Definition: TEcnaHistos.h:368
TVectorD ReadAverageMeanCorrelationsBetweenSamples(const Int_t &)
Definition: TEcnaRead.cc:2693
Int_t fNbBinsProj
Definition: TEcnaHistos.h:669
TString fXMemoD_LFN_ChDs
Definition: TEcnaHistos.h:681
TVirtualPad * fPadD_SSp_SpDs
Definition: TEcnaHistos.h:867
Axis_t fH_Ped_DateXinf
Definition: TEcnaHistos.h:510
Float_t AxisLabelSize()
TString fFlagUserHistoMax
Definition: TEcnaHistos.h:443
Axis_t fH_LFN_DateXsup
Definition: TEcnaHistos.h:517
void SetYmaxMemoFromValue(const TString &, const Double_t &)
Int_t fMemoPlotD_SSp_SpDs
Definition: TEcnaHistos.h:642
Axis_t fD_SCs_ChDsXsup
Definition: TEcnaHistos.h:496
TPaveText * SetPaveStas()
Int_t MaxCrysForConsInDee()
TString fXMemoD_SCs_ChDs
Definition: TEcnaHistos.h:685
Int_t GetHistoSize(const TString &, const TString &)
Int_t fPlotAllXtalsInStin
Definition: TEcnaHistos.h:631
TVectorD ReadAverageSigmaOfCorrelationsBetweenSamples(const Int_t &)
Definition: TEcnaRead.cc:2777
void FileParameters(const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &)
Definition: TEcnaHistos.cc:723
Double_t fH_SCs_RuDsYmax
Definition: TEcnaHistos.h:604
Int_t fNbBinsMemoD_NOE_ChNb
Definition: TEcnaHistos.h:740
Bool_t fClosedD_HFN_ChNb
Definition: TEcnaHistos.h:821
TString SetCanvasName(const TString &, const Int_t &, const Int_t &, const TString &, const Int_t &, const Int_t &, const Int_t &, const Int_t &)
void ViewMatrix(const TMatrixD &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &, const TString &, const TString &)
void StartStopDate(const TString &, const TString &)
Definition: TEcnaHistos.cc:792
void SigmaSamplesXtals(const TVectorD &, const Int_t &, const Int_t &, const Int_t &, const TString &)
std::ifstream fFcin_f
Definition: TEcnaHistos.h:383
void ViewSCGrid(const Int_t &, const Int_t &, const Int_t &, const Int_t &, const Int_t &, const TString &)
Double_t fH_Ped_DateYmin
Definition: TEcnaHistos.h:580
Int_t fMemoPlotD_Adc_EvDs
Definition: TEcnaHistos.h:643
Int_t MaxTowInSM()
Bool_t StatusDataExist()
Definition: TEcnaHistos.cc:807
Int_t fMemoColorD_SSp_SpNb
Definition: TEcnaHistos.h:659
Int_t fMemoColorD_Ped_ChNb
Definition: TEcnaHistos.h:653
TString fXMemoD_Adc_EvDs
Definition: TEcnaHistos.h:690
time_t GetStartTime()
Definition: TEcnaRead.cc:754
TVectorD ReadNumberOfEvents(const Int_t &)
Definition: TEcnaRead.cc:1662
Double_t fD_NOE_ChNbYmin
Definition: TEcnaHistos.h:539
void GeneralTitle(const TString &)
Definition: TEcnaHistos.cc:772
Axis_t fD_NOE_ChDsXinf
Definition: TEcnaHistos.h:471
void PlotCloneOfCurrentCanvas()
Int_t fMemoColorD_LFN_ChNb
Definition: TEcnaHistos.h:656
TVirtualPad * fPadD_Adc_EvNb
Definition: TEcnaHistos.h:869
void WriteMatrixAscii(const TString &, const TString &, const Int_t &, const Int_t &, const Int_t &, const TMatrixD &)
Axis_t fD_MCs_ChNbXsup
Definition: TEcnaHistos.h:482
TCanvas * fCanvH_LFN_RuDs
Definition: TEcnaHistos.h:806
time_t fStartTime
Definition: TEcnaHistos.h:425
Int_t fMemoPlotD_HFN_ChNb
Definition: TEcnaHistos.h:639
Int_t fMemoPlotH_HFN_RuDs
Definition: TEcnaHistos.h:647
Double_t fH_SCs_RuDsYmin
Definition: TEcnaHistos.h:603
TString fYMemoD_NOE_ChDs
Definition: TEcnaHistos.h:707
TVirtualPad * fPadD_Ped_ChDs
Definition: TEcnaHistos.h:853
Int_t fFapReqNbOfEvts
Definition: TEcnaHistos.h:390
Int_t fCanvSameD_SSp_SpNb
Definition: TEcnaHistos.h:959
TCanvas * fCanvH_TNo_RuDs
Definition: TEcnaHistos.h:804
Double_t fD_MCs_ChNbYmax
Definition: TEcnaHistos.h:552
TString fYMemoH_TNo_RuDs
Definition: TEcnaHistos.h:733
Int_t fCanvSameD_Ped_ChDs
Definition: TEcnaHistos.h:953